From a62ab1a44d3ca4d54abb607692df35c1d6b78ac1 Mon Sep 17 00:00:00 2001 From: Alexandre Leites <1256013+alexandre-leites@users.noreply.github.com> Date: Sat, 18 Mar 2023 17:55:35 +0100 Subject: [PATCH 001/205] Adding type WD to support --- custom_components/hon/binary_sensor.py | 14 +++++ custom_components/hon/button.py | 12 ++++ custom_components/hon/number.py | 22 +++++++ custom_components/hon/select.py | 22 +++++++ custom_components/hon/sensor.py | 79 +++++++++++++++++++++++++- custom_components/hon/switch.py | 28 +++++++++ 6 files changed, 176 insertions(+), 1 deletion(-) diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index f047945..f69876d 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -37,6 +37,20 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { device_class=BinarySensorDeviceClass.DOOR, on_value="0", ), + ), + "WD": ( + HonBinarySensorEntityDescription( + key="attributes.lastConnEvent.category", + name="Connection", + device_class=BinarySensorDeviceClass.CONNECTIVITY, + on_value="CONNECTED", + ), + HonBinarySensorEntityDescription( + key="doorLockStatus", + name="Door", + device_class=BinarySensorDeviceClass.DOOR, + on_value="0", + ), ) } diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index 5178257..2503328 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -20,6 +20,18 @@ BUTTONS: dict[str, tuple[ButtonEntityDescription, ...]] = { # icon="mdi:play-pause", # ), ), + "WD": ( + # ButtonEntityDescription( + # key="pauseProgram", + # name="Pause Program", + # icon="mdi:pause", + # ), + # ButtonEntityDescription( + # key="resumeProgram", + # name="Resume Program", + # icon="mdi:play-pause", + # ), + ), } diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index cca1468..a3311f9 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -38,6 +38,28 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { native_unit_of_measurement=UnitOfTime.MINUTES ), ), + "WD": ( + NumberEntityDescription( + key="startProgram.delayTime", + name="Delay Time", + icon="mdi:timer-plus", + entity_category=EntityCategory.CONFIG, + native_unit_of_measurement=UnitOfTime.MINUTES + ), + NumberEntityDescription( + key="startProgram.rinseIterations", + name="Rinse Iterations", + icon="mdi:rotate-right", + entity_category=EntityCategory.CONFIG + ), + NumberEntityDescription( + key="startProgram.mainWashTime", + name="Main Wash Time", + icon="mdi:clock-start", + entity_category=EntityCategory.CONFIG, + native_unit_of_measurement=UnitOfTime.MINUTES + ), + ), } diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index bf7d10e..60a588a 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -35,6 +35,28 @@ SELECTS = { entity_category=EntityCategory.CONFIG, translation_key="programs" ), + ), + "WD": ( + SelectEntityDescription( + key="startProgram.spinSpeed", + name="Spin speed", + entity_category=EntityCategory.CONFIG, + icon="mdi:numeric", + unit_of_measurement=REVOLUTIONS_PER_MINUTE + ), + SelectEntityDescription( + key="startProgram.temp", + name="Temperature", + entity_category=EntityCategory.CONFIG, + icon="mdi:thermometer", + unit_of_measurement=UnitOfTemperature.CELSIUS + ), + SelectEntityDescription( + key="startProgram.program", + name="Program", + entity_category=EntityCategory.CONFIG, + translation_key="programs" + ), ) } diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index a605c9a..7cbd603 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -9,7 +9,14 @@ from homeassistant.components.sensor import ( SensorEntityDescription, ) from homeassistant.config_entries import ConfigEntry -from homeassistant.const import UnitOfEnergy, UnitOfVolume, UnitOfMass, UnitOfPower, UnitOfTime +from homeassistant.const import ( + REVOLUTIONS_PER_MINUTE, + UnitOfEnergy, + UnitOfVolume, + UnitOfMass, + UnitOfPower, + UnitOfTime +) from homeassistant.core import callback from homeassistant.helpers.entity import EntityCategory from homeassistant.helpers.typing import StateType @@ -85,10 +92,80 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { SensorEntityDescription( key="spinSpeed", name="Spin Speed", + icon="mdi:fast-forward-outline", + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=REVOLUTIONS_PER_MINUTE, + ), + ), + "WD": ( + SensorEntityDescription( + key="totalElectricityUsed", + name="Total Power", + device_class=SensorDeviceClass.ENERGY, + state_class=SensorStateClass.TOTAL_INCREASING, + native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR + ), + SensorEntityDescription( + key="totalWaterUsed", + name="Total Water", + device_class=SensorDeviceClass.WATER, + state_class=SensorStateClass.TOTAL_INCREASING, + native_unit_of_measurement=UnitOfVolume.LITERS + ), + SensorEntityDescription( + key="totalWashCycle", + name="Total Wash Cycle", + state_class=SensorStateClass.TOTAL_INCREASING, + icon="mdi:counter" + ), + SensorEntityDescription( + key="currentElectricityUsed", + name="Current Electricity Used", + state_class=SensorStateClass.MEASUREMENT, + device_class=SensorDeviceClass.POWER, + native_unit_of_measurement=UnitOfPower.KILO_WATT, + icon="mdi:lightning-bolt" + ), + SensorEntityDescription( + key="currentWaterUsed", + name="Current Water Used", + state_class=SensorStateClass.MEASUREMENT, + icon="mdi:water" + ), + SensorEntityDescription( + key="startProgram.weight", + name="Suggested weight", + state_class=SensorStateClass.MEASUREMENT, + entity_category=EntityCategory.CONFIG, + native_unit_of_measurement=UnitOfMass.KILOGRAMS, + icon="mdi:weight-kilogram" + ), + SensorEntityDescription( + key="machMode", + name="Machine Status", + icon="mdi:information", + translation_key="mode" + ), + SensorEntityDescription( + key="errors", + name="Error", + icon="mdi:math-log", + translation_key="errors" + ), + SensorEntityDescription( + key="remainingTimeMM", + name="Remaining Time", icon="mdi:timer", state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=UnitOfTime.MINUTES, ), + SensorEntityDescription( + key="spinSpeed", + name="Spin Speed", + icon="mdi:fast-forward-outline", + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=REVOLUTIONS_PER_MINUTE, + ), ) } diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 695d812..a233f69 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -53,6 +53,34 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { entity_category=EntityCategory.CONFIG ), ), + "WD": ( + HonSwitchEntityDescription( + key="active", + name="Washing Machine", + icon="mdi:washing-machine", + turn_on_key="startProgram", + turn_off_key="stopProgram", + ), + HonSwitchEntityDescription( + key="pause", + name="Pause Washing Machine", + icon="mdi:pause", + turn_on_key="pauseProgram", + turn_off_key="resumeProgram", + ), + HonSwitchEntityDescription( + key="startProgram.delayStatus", + name="Delay Status", + icon="mdi:timer-check", + entity_category=EntityCategory.CONFIG + ), + HonSwitchEntityDescription( + key="startProgram.haier_SoakPrewashSelection", + name="Soak Prewash Selection", + icon="mdi:tshirt-crew", + entity_category=EntityCategory.CONFIG + ), + ), } -- 2.39.5 From 2a3bcfe03300aaca2114529574814820d07d7c0a Mon Sep 17 00:00:00 2001 From: drudgebg Date: Tue, 21 Mar 2023 13:54:57 +0200 Subject: [PATCH 002/205] Update en.json Add Tumble Dryer haier HD80-A3959 Programs --- custom_components/hon/translations/en.json | 87 ++++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 4c1d3b8..96150d2 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -29,6 +29,49 @@ "100000000000": "E2: Check if the door is closed", "8000000000000": "E4: Check the water supply" } + }, + "tumbledryerprogram": { + "state": { + "0": "Default", + "62": "Cotton", + "63": "Synthetics", + "64": "Mix", + "66": "Bed Sheets", + "71": "Curtains", + "72": "Sports", + "74": "i-time", + "75": "Duvet", + "76": "Wool", + "78": "i-Refresh", + "83": "Towel", + "85": "Quick Dry", + "92": "Delicate", + "103": "Remote" + } + }, + "tumbledryerprogramphase": { + "state": { + "0": "Waiting", + "2": "Drying", + "3": "Cooldown", + "11": "11" + } + }, + "tumbledryertemplevel": { + "state": { + "1": "Cool", + "2": "Low temperature L-1", + "3": "Middle temperature L-2", + "4": "High temperature L-3" + } + }, + "tumbledryerdrylevel": { + "state": { + "3": "Cupboard dry", + "12": "Ready to Iron H-1", + "13": "Ready to Store H-2", + "14": "Extra Dry H-3" + } } }, "select": { @@ -76,28 +119,64 @@ "hqd_allergy": "Allergy Care", "hqd_autoclean": "Drum Cleaning", "hqd_babycare": "Baby Care", + "hqd_baby_care": "Baby care", + "hqd_bath_towel": "Bath towel", + "hqd_bed_sheets": "Bed sheets", + "hqd_bulky": "Bulky", + "hqd_casual": "Casual", "hqd_checkup": "Check-Up", + "hqd_cold_wind_30": "Cold wind 30'", + "hqd_cold_wind_timing": "Cold wind timing", + "hqd_cotton": "Cotton", "hqd_cottons": "Cotton", + "hqd_curtain": "Curtain", "hqd_delicate": "Delicate", "hqd_delicate_cradle": "Delicate", + "hqd_diaper": "Diaper", "hqd_dry": "Cotton Dry", "hqd_dry_synthetics": "Low Heat Dry", "hqd_duvet": "Duvet", "hqd_eco_40_60_degrees": "Eco 40-60", + "hqd_feather": "Feather", "hqd_handwash_wool": "Wool", + "hqd_hot_wind_timing": "Hot wind timing", + "hqd_hygienic": "Hygienic", "hqd_i_refresh": "i-Refresh", + "hqd_i_refresh_pro": "i-Refresh Pro", + "hqd_jacket": "Jacket", + "hqd_jeans": "Jeans", + "hqd_luxury": "Luxury", "hqd_mix": "Mix", + "hqd_night_dry": "Night dry", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", "hqd_quick_15": "Quick 15'", + "hqd_quick_20": "Quick 20'", + "hqd_quick_30": "Quick 30'", + "hqd_quick_dry": "Quick dry", "hqd_quick_wash_57": "Quick Wash 57'", + "hqd_quilt": "Quilt", "hqd_rapid_wash_and_dry": "Wash and dry", "hqd_refresh": "Refresh", "hqd_rinse": "Rinses", + "hqd_school_uniform": "School uniform", + "hqd_shirt": "Shirt", "hqd_shirts": "Shirts", + "hqd_shoes": "Shoes", + "hqd_silk": "Silk", "hqd_smart": "Smart A.I.", "hqd_spin": "Spin", "hqd_sport": "Sport", + "hqd_sports": "Sports", "hqd_super_fast": "Super Fast 39'", "hqd_synthetic_and_coloured": "Synthetics", + "hqd_synthetics": "Synthetics", + "hqd_timer": "Timer", + "hqd_towel": "Towel", + "hqd_underwear": "Underwear", + "hqd_warm_up": "Warm up", + "hqd_wool": "Wool", + "hqd_working_suit": "Working suit", "hygiene_59": "Hygiene Plus 59'", "hygiene_60": "Hygiene 60°C", "hygiene_plus_59": "Hygiene Plus 59'", @@ -115,17 +194,24 @@ "iot_dry_bathrobe": "Bathrobes", "iot_dry_bed_linen": "Bed Linen", "iot_dry_cotton_dry": "Cotton Dry", + "iot_dry_cotton": "Cotton", "iot_dry_cuddly_toys": "Cuddly Toys", "iot_dry_curtains": "Curtains", "iot_dry_dehumidifier": "Humidity Remover", + "iot_dry_delicates": "Delicates", "iot_dry_delicates_antiallergy": "Delicates Anti-allergy", "iot_dry_delicate_tablecloths": "Delicate Tablecloths", "iot_dry_denim_jeans": "Denim - Jeans", + "iot_dry_down_jacket": "Down jacket", + "iot_dry_duvet": "Duvet", "iot_dry_easy_iron_cotton": "Easy Iron - Cotton", "iot_dry_easy_iron_synthetics": "Easy Iron - Synthetics", "iot_dry_gym_fit": "Gym fit - Fitness", "iot_dry_lingerie": "Lingerie", + "iot_dry_mixed": "Mixed", "iot_dry_mixed_dry": "Mixed Dry", + "iot_dry_rapid_30": "Rapid 30'", + "iot_dry_rapid_59": "Rapid 59'", "iot_dry_rapid_60_min_delicates": "Rapid 60' - Delicates", "iot_dry_shirts": "Shirts", "iot_dry_swimsuits_and_bikinis": "Swimsuits and Bikinis", @@ -134,6 +220,7 @@ "iot_dry_tablecloths": "Tablecloths", "iot_dry_technical_fabrics": "Technical Fabrics", "iot_dry_warm_embrace": "Warm Embrace", + "iot_dry_wool": "Wool", "iot_dry_wool_dry": "Wool Dry", "iot_wash_and_dry": "Wash and dry", "iot_wash_anti_mites": "Anti-mites", -- 2.39.5 From 7ec3ca4681ba98f9bd6ce5dc7e8e745ea488abc3 Mon Sep 17 00:00:00 2001 From: drudgebg Date: Tue, 21 Mar 2023 13:56:14 +0200 Subject: [PATCH 003/205] Add Bulgarian translation --- custom_components/hon/translations/bg.json | 409 +++++++++++++++++++++ 1 file changed, 409 insertions(+) create mode 100644 custom_components/hon/translations/bg.json diff --git a/custom_components/hon/translations/bg.json b/custom_components/hon/translations/bg.json new file mode 100644 index 0000000..e164058 --- /dev/null +++ b/custom_components/hon/translations/bg.json @@ -0,0 +1,409 @@ +{ + "config": { + "step": { + "user": { + "description": "Моля, въведете вашите данни за достъп до hOn", + "data": { + "email": "Email Адрес", + "password": "Парола" + } + } + } + }, + "entity": { + "sensor": { + "mode": { + "state": { + "0": "Изключен", + "1": "Готов", + "2": "Работи", + "3": "На пауза", + "5": "Scheduled", + "6": "Грешка", + "7": "Завършен" + } + }, + "errors": { + "state": { + "00": "Няма грешки", + "100000000000": "E2: Провери дали вратата е затворена", + "8000000000000": "E4: Провери подаването на вода" + } + }, + "tumbledryerprogram": { + "state": { + "0": "Стандартна", + "62": "Памук", + "63": "Синтетика", + "64": "Смесен тип", + "66": "Чаршафи", + "71": "Пердета", + "72": "Спорт", + "74": "i-time", + "75": "Олекотени завивки", + "76": "Вълна", + "78": "i-Refresh", + "83": "Хавлиена кърпа", + "85": "Бързо Сушене", + "92": "Деликатно пране", + "103": "Отдалечен" + } + }, + "tumbledryerprogramphase": { + "state": { + "0": "Изчаване", + "2": "Сушене", + "3": "Охлажане", + "11": "11" + } + }, + "tumbledryertemplevel": { + "state": { + "1": "Хладен въздух", + "2": "Ниска температура L-1", + "3": "Средна температура L-2", + "4": "Висока температура L-3" + } + }, + "tumbledryerdrylevel": { + "state": { + "3": "Готови за съхранение", + "12": "Готови за гладене H-1", + "13": "Готови за съхранение H-2", + "14": "Екстра сухо H-3" + } + } + }, + "select": { + "programs": { + "state": { + "20_degrees_coloured_cottons": "20° Colored and Cottons", + "20_degrees_new_energy_label": "20°C", + "active_steam": "Steam", + "active_wash": "Active Wash", + "active_wash_steam": "Active Wash + Steam", + "allergy_care": "Allergy Care", + "allergy_care_pro": "Allergy Care Pro", + "all_in_one_49": "All in One 49'", + "all_in_one_59": "All in One 59'", + "all_in_one_59_steam": "Active Wash + Steam", + "autocare": "Autocare", + "autoclean": "Drum Cleaning", + "baby_60": "All Baby 60°C", + "care_14": "Rapid Care 14'", + "care_30": "Rapid Care 30'", + "care_44": "Rapid Care 44'", + "checkup": "Check-Up", + "colour_59": "Colored 59'", + "colour_59_steam": "Colored 59' + Steam", + "cottons": "Cotton", + "cottons_prewash": "Cottons + Prewash", + "cottons_steam": "Cotton + Steam", + "cotton_care_59": "Cotton Care 59'", + "delicate_59": "Delicate 59'", + "delicate_silk": "Delicate and Silk", + "delicate_silk_steam": "Delicate and Silk + Steam", + "delicati_59": "Delicate 59'", + "delicati_59_steam": "Delicate 59' + Steam", + "drain_spin": "Drain + Spin", + "easy_iron": "Easy Iron", + "eco_40_60_new_energy_label": "Eco 40-60", + "extra_care": "Extra Care", + "fitness": "Fitness Care", + "fitness_care": "Fitness Care", + "fresh_care": "Fresh Care", + "fresh_care_steam": "Fresh Care + Steam", + "handwash_wool": "Hand Wash + Wool", + "high_dry": "High Heat Dry", + "hqd_20_degrees": "Cotton 20℃", + "hqd_allergy": "Allergy Care", + "hqd_autoclean": "Автоматично почистване", + "hqd_babycare": "Бебе", + "hqd_baby_care": "Бебе", + "hqd_bath_towel": "Хавлиени кърпи", + "hqd_bed_sheets": "Чаршафи", + "hqd_checkup": "Check-Up", + "hqd_bulky": "Обемисти", + "hqd_casual": "Ежедневни", + "hqd_cold_wind_30": "Студен бриз 30 мин", + "hqd_cold_wind_timing": "Студен бриз за време", + "hqd_cotton": "Памук", + "hqd_cottons": "Памук", + "hqd_curtain": "Пердета", + "hqd_delicate": "Деликатни", + "hqd_delicate_cradle": "Деликатни", + "hqd_diaper": "Бебешки пелени", + "hqd_dry": "Cotton Dry", + "hqd_dry_synthetics": "Low Heat Dry", + "hqd_duvet": "Олекотени завивки", + "hqd_eco_40_60_degrees": "Eco 40-60", + "hqd_feather": "Пълнеж от пера(пух)", + "hqd_handwash_wool": "Wool", + "hqd_hot_wind_timing": "Горещ въздух за време", + "hqd_hygienic": "Здравословна", + "hqd_i_refresh": "i-Refresh", + "hqd_i_refresh_pro": "i-Refresh Pro", + "hqd_jacket": "Якета", + "hqd_jeans": "Дънки", + "hqd_luxury": "Луксозно", + "hqd_mix": "Смесен тип", + "hqd_night_dry": "Сушене през ноща", + "hqd_outdoor": "Дрехи за открито", + "hqd_precious_cure": "Precious cure", + "hqd_quick_15": "Бързо 15 мин", + "hqd_quick_20": "Бързо 20 мин", + "hqd_quick_30": "Бързо 30 мин", + "hqd_quick_dry": "Бързо", + "hqd_quick_wash_57": "Quick Wash 57'", + "hqd_quilt": "Юргани", + "hqd_rapid_wash_and_dry": "Wash and dry", + "hqd_refresh": "Освежаване", + "hqd_rinse": "Rinses", + "hqd_school_uniform": "Ученически униформи", + "hqd_shirt": "Ризи", + "hqd_shirts": "Ризи", + "hqd_shoes": "Обувки", + "hqd_silk": "Коприна", + "hqd_smart": "Smart A.I.", + "hqd_spin": "Spin", + "hqd_sport": "Спорт", + "hqd_sports": "Спорт", + "hqd_synthetics": "Синтетика", + "hqd_super_fast": "Супер бързо 39 мин", + "hqd_synthetic_and_coloured": "Synthetics", + "hqd_timer": "Таймер", + "hqd_towel": "Хавлиени кърпи", + "hqd_underwear": "Бельо", + "hqd_warm_up": "Затопляне", + "hqd_wool": "Вълна", + "hqd_working_suit": "Работно облекло", + "hygiene_59": "Hygiene Plus 59'", + "hygiene_60": "Hygiene 60°C", + "hygiene_plus_59": "Hygiene Plus 59'", + "hygiene_plus_59_min": "Hygiene Plus 59'", + "hygiene_pro_4_min": "Hygiene Pro 49'", + "hygiene_pro_49_min": "Hygiene Pro 49'", + "hygiene_pro_steam": "Hygiene Pro + Steam", + "intensive_40": "Intensive 40°C", + "intensive_40_steam": "Intensive 40°C + Steam", + "iot_checkup": "Check-Up", + "iot_dry_air_refresh": "Air Refresh", + "iot_dry_anti_mites": "Anti-mite", + "iot_dry_baby": "Бебе", + "iot_dry_backpacks": "Раници", + "iot_dry_bathrobe": "Халати за баня", + "iot_dry_bed_linen": "Спално бельо", + "iot_dry_cotton": "Памук", + "iot_dry_cotton_dry": "Памук", + "iot_dry_cuddly_toys": "Плюшени играчки", + "iot_dry_curtains": "Пердета", + "iot_dry_dehumidifier": "Humidity Remover", + "iot_dry_delicates": "Деликатни", + "iot_dry_delicates_antiallergy": "Delicates Anti-allergy", + "iot_dry_delicate_tablecloths": "Delicate Tablecloths", + "iot_dry_denim_jeans": "Дънки", + "iot_dry_down_jacket": "Пухени якета", + "iot_dry_duvet": "Олекотени завивки", + "iot_dry_easy_iron_cotton": "Easy Iron - Cotton", + "iot_dry_easy_iron_synthetics": "Easy Iron - Synthetics", + "iot_dry_gym_fit": "Фитнес", + "iot_dry_lingerie": "Деликано бельо", + "iot_dry_mixed": "Смесен тип", + "iot_dry_mixed_dry": "Смесен тип", + "iot_dry_rapid_30": "Бързо 30 мин", + "iot_dry_rapid_59": "Бързо 59 мин", + "iot_dry_rapid_60_min_delicates": "Rapid 60' - Delicates", + "iot_dry_shirts": "Ризи", + "iot_dry_swimsuits_and_bikinis": "Бански", + "iot_dry_synthetics": "Синтетика", + "iot_dry_synthetic_dry": "Synthetic Dry", + "iot_dry_tablecloths": "Покривки", + "iot_dry_technical_fabrics": "Технически тъкани", + "iot_dry_warm_embrace": "Warm Embrace", + "iot_dry_wool": "Вълна", + "iot_dry_wool_dry": "Вълна", + "iot_wash_and_dry": "Wash and dry", + "iot_wash_anti_mites": "Anti-mites", + "iot_wash_anti_odor": "Anti-odour", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "Sanitizer", + "iot_wash_baby_sanitizer_steam": "Sanitiser + Steam", + "iot_wash_backpacks": "Backpacks", + "iot_wash_backpacks_zelig": "Backpacks", + "iot_wash_bathrobe": "Bathrobes and Towels", + "iot_wash_bathrobe_steam": "Bathrobe and Towels + Steam", + "iot_wash_bed_linen": "Bed Linen", + "iot_wash_bed_linen_steam": "Bed Linen + Steam", + "iot_wash_bed_linen_zelig": "Bed Linens", + "iot_wash_big_single_load": "Big single load", + "iot_wash_bleaching": "Bleaching", + "iot_wash_blood_stains": "Bloodstains", + "iot_wash_cashmere": "Cashmere", + "iot_wash_chocolate_stains": "Chocolate stains", + "iot_wash_cold_wash": "Cold Wash", + "iot_wash_colored": "Colored", + "iot_wash_colored_anti_stain": "Colored Anti-stain", + "iot_wash_colored_delicate": "Colored Delicate", + "iot_wash_coloured": "Colored", + "iot_wash_coloured_bed_linen": "Colored Bed Linen", + "iot_wash_coloured_bed_linen_steam": "Coloured Bed Linen + Steam", + "iot_wash_coloured_curtains": "Colored Curtains", + "iot_wash_coloured_shirts": "Colored Shirts", + "iot_wash_coloured_shirts_steam": "Colored Shirts + Steam", + "iot_wash_coloured_steam": "Colored + Steam", + "iot_wash_coloured_tableclothes": "Colored Tableclothes", + "iot_wash_coloured_tableclothes_steam": "Coloured Tablecloths + Steam", + "iot_wash_cotton": "Cotton", + "iot_wash_cotton_steam": "Cotton + Steam", + "iot_wash_cuddly_toys": "Cuddly Toys", + "iot_wash_curtains": "Curtains", + "iot_wash_curtains_steam": "Curtains + Steam", + "iot_wash_curtains_zelig": "Curtains", + "iot_wash_dark": "Darks", + "iot_wash_darks_and_coloured_44": "Darks and Colored 44'", + "iot_wash_darks_and_coloured_59": "Darks and Colored 59'", + "iot_wash_darks_and_coloured_xl": "Darks and Colored XL", + "iot_wash_dark_steam": "Darks + Steam", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "Delicates", + "iot_wash_delicate_antiallergy": "Delicate Anti-Allergy", + "iot_wash_delicate_antiallergy_steam": "Delicate Anti-Allergy + Steam", + "iot_wash_delicate_antiallergy_zelig": "Delicate Anti-Allergy", + "iot_wash_delicate_colors": "Delicate Colors", + "iot_wash_delicate_colors_steam": "Delicate Colors + Steam", + "iot_wash_delicate_dark": "Delicate Darks", + "iot_wash_delicate_steam": "Delicates + Steam", + "iot_wash_delicate_tablecloths": "Delicate Tablecloths", + "iot_wash_delicate_tablecloths_steam": "Delicate Tablecloths + Steam", + "iot_wash_delicate_whites": "Delicate Whites", + "iot_wash_denim_jeans": "Denim - Jeans", + "iot_wash_diving_suits": "Diving Suits", + "iot_wash_diving_suits_zelig": "Diving Suits", + "iot_wash_down_jackets": "Down Jackets", + "iot_wash_down_jackets_zelig": "Down Jackets", + "iot_wash_duvet": "Duvet", + "iot_wash_fruit_stains": "Fruit stains", + "iot_wash_gym_fit": "Gym Fit - Fitness", + "iot_wash_handwash": "Handwash", + "iot_wash_handwash_colored": "Handwash Colored", + "iot_wash_handwash_dark": "Handwash Darks", + "iot_wash_lingerie": "Lingerie", + "iot_wash_masks_refresh": "Masks Refresh", + "iot_wash_masks_sanification": "Masks Sanitization", + "iot_wash_masks_sanification_steam": "Mask Sanitisation + Steam", + "iot_wash_mats": "Mats", + "iot_wash_men_s_trousers": "Trousers", + "iot_wash_mixed": "Mixed", + "iot_wash_mixed_steam": "Mixed + Steam", + "iot_wash_mix_and_coloured_44": "Mix and Colored 44'", + "iot_wash_mix_and_coloured_59": "Mix and Colored 59'", + "iot_wash_mix_and_coloured_xl": "Mix and colored XL", + "iot_wash_new_clothes": "New Clothes", + "iot_wash_perfect_white": "Perfect White", + "iot_wash_perfect_white_steam": "Perfect White + Steam", + "iot_wash_pets": "Pet Accessories", + "iot_wash_pets_hair_removal": "Pets Hair Removal", + "iot_wash_pets_odours_stains_removal": "Pets Odours and Stains Removal", + "iot_wash_pets_steam": "Pet Accessories + Steam", + "iot_wash_playsuits": "Playsuits", + "iot_wash_playsuits_steam": "Playsuits + Steam", + "iot_wash_quick_drum_cleaner": "Quick drum cleaner", + "iot_wash_rapid_14": "Rapid 14’", + "iot_wash_rapid_30": "Rapid 30’", + "iot_wash_rapid_44": "Rapid 44'", + "iot_wash_rapid_59": "Rapid 59'", + "iot_wash_rapid_59_steam": "Rapid 59' + Steam", + "iot_wash_refresh_14_min": "Refresh 14'", + "iot_wash_resistant_colored": "Resistant Colored", + "iot_wash_resistant_dark": "Resistant Darks", + "iot_wash_resistant_whites": "Resistant Whites", + "iot_wash_rinse": "Rinses", + "iot_wash_shirts": "Shirts", + "iot_wash_shirts_steam": "Shirts + Steam", + "iot_wash_silk": "Silk", + "iot_wash_ski_suit": "Ski Suit", + "iot_wash_ski_suit_zelig": "Ski Suit", + "iot_wash_spin": "Spin", + "iot_wash_sport": "Sport", + "iot_wash_sport_anti_odor": "Anti-odour Sportswear", + "iot_wash_sport_anti_odor_zelig": "Anti-odour Sportswear", + "iot_wash_stains_remover": "Stain Remover", + "iot_wash_swimsuits_and_bikinis": "Swimsuits and Bikinis", + "iot_wash_synthetic": "Synthetics", + "iot_wash_synthetic_steam": "Synthetics + Steam", + "iot_wash_tablecloths": "Tablecloths", + "iot_wash_tablecloths_steam": "Tablecloths + Steam", + "iot_wash_technical_fabrics": "Technical Fabrics", + "iot_wash_technical_fabrics_zelig": "Technical Fabrics", + "iot_wash_technical_jackets": "Technical Jackets", + "iot_wash_technical_jackets_zelig": "Technical Jackets", + "iot_wash_trainers": "Trainers", + "iot_wash_whites": "Whites", + "iot_wash_whites_44": "Whites 44'", + "iot_wash_whites_59": "Whites 59'", + "iot_wash_whites_xl": "Whites XL", + "iot_wash_wine_stains": "Wine Stains", + "iot_wash_wool": "Wool", + "jeans": "Jeans", + "jeans_60": "Jeans", + "low_dry": "Low Heat Dry", + "mixed": "Mixed", + "mixed_and_colored_59": "Mixed and Colored 59'", + "mixed_steam": "Mixed + Steam", + "mix_and_colour_59": "Mixed and Colored 59'", + "mix_and_colour_59_steam": "Mixed and Coloured 59' + Steam", + "night_and_day": "Night and Day", + "night_wash": "Night Wash", + "perfect_59": "Perfect 59'", + "perfect_cotton_59": "Perfect Cotton 59'", + "perfect_cotton_59_steam": "Perfect Cotton 59' + Steam", + "perfect_whites_59": "Perfect White 59'", + "rapid_14_min": "Rapid 14'", + "rapid_30_min": "Rapid 30'", + "rapid_44_min": "Rapid 44'", + "rapid_a_class_60": "Rapid 59' A Class", + "rapid_a_class_60_steam": "Rapid 59' A Class + Steam", + "rapid_wash_and_dry_59_min": "Wash and Dry 59'", + "resistant_cotton": "Resistant Cotton", + "resistant_cotton_steam": "Resistant Cotton + Steam", + "rinse": "Rinse", + "shirts_steam": "Shirts + Steam", + "silent_night": "Silent Night", + "single_item": "Single Item", + "single_item_steam": "Single Item + Steam", + "smart_wash": "Smart Wash", + "soft_care": "Soft Care", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "Special 39'", + "special_39_full_load": "Special 39'", + "special_39_full_load_steam": "Special 39' + Steam", + "special_49": "Special 49'", + "sport_39": "Sport 39'", + "sport_plus_29": "Sport Plus 29'", + "sport_plus_39": "Sport Plus 39'", + "steam_39": "Steam 39'", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro - Cottons", + "steam_care_pro_delicates": "Steam Care Pro - Delicates", + "steam_care_pro_synthetic": "Steam Care Pro - Synthetics", + "steam_hygiene_plus": "Hygiene Plus + Steam", + "synthetics": "Synthetics", + "synthetic_and_coloured": "Synthetic and Colored", + "synthetic_and_coloured_steam": "Synthetic and Coloured + Steam", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "Total Care", + "tumbling": "Tumbling", + "wool": "Wool", + "wool_and_delicates_49": "Wool and Delicates 49'", + "wool_dry": "Wool Dry", + "wool_soft_care": "Wool and Soft Car" + } + } + } + } +} -- 2.39.5 From fb8306a4d9d57ea6f0da234f1f9ed244fda8160d Mon Sep 17 00:00:00 2001 From: drudgebg Date: Tue, 21 Mar 2023 13:59:39 +0200 Subject: [PATCH 004/205] Update sensor.py Add Tumble Dryer --- custom_components/hon/sensor.py | 52 +++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index a605c9a..fed894b 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -89,6 +89,58 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=UnitOfTime.MINUTES, ), + ), + "TD": ( + SensorEntityDescription( + key="machMode", + name="Machine Status", + icon="mdi:information", + translation_key="mode" + ), + SensorEntityDescription( + key="errors", + name="Error", + icon="mdi:math-log", + translation_key="errors" + ), + SensorEntityDescription( + key="remainingTimeMM", + name="Remaining Time", + icon="mdi:timer", + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=UnitOfTime.MINUTES, + ), + SensorEntityDescription( + key="delayTime", + name="Start Time", + icon="mdi:clock-start", + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=UnitOfTime.MINUTES, + ), + SensorEntityDescription( + key="prCode", + name="Program", + icon="mdi:tumble-dryer", + translation_key="tumbledryerprogram" + ), + SensorEntityDescription( + key="prPhase", + name="Program Phase", + icon="mdi:tumble-dryer", + translation_key="tumbledryerprogramphase" + ), + SensorEntityDescription( + key="dryLevel", + name="Dry level", + icon="mdi:hair-dryer", + translation_key="tumbledryerdrylevel" + ), + SensorEntityDescription( + key="tempLevel", + name="Temperature level", + icon="mdi:thermometer", + translation_key="tumbledryertemplevel" + ), ) } -- 2.39.5 From fbee75108d756dcead8686399d9234b9d3db0d26 Mon Sep 17 00:00:00 2001 From: drudgebg Date: Tue, 21 Mar 2023 14:00:50 +0200 Subject: [PATCH 005/205] Update select.py Add Tumble Dryer --- custom_components/hon/select.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index bf7d10e..ef74c29 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -35,6 +35,14 @@ SELECTS = { entity_category=EntityCategory.CONFIG, translation_key="programs" ), + ), + "TD": ( + SelectEntityDescription( + key="startProgram.program", + name="Program", + entity_category=EntityCategory.CONFIG, + translation_key="programs" + ), ) } -- 2.39.5 From 1a53ee7e5ef74fad3410a4ac265451e70a7ff1e6 Mon Sep 17 00:00:00 2001 From: drudgebg Date: Tue, 21 Mar 2023 14:01:41 +0200 Subject: [PATCH 006/205] Update switch.py Add Tumble Dryer --- custom_components/hon/switch.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 695d812..5b2243a 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -53,6 +53,22 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { entity_category=EntityCategory.CONFIG ), ), + "TD": ( + HonSwitchEntityDescription( + key="active", + name="Tumble Dryer", + icon="mdi:tumble-dryer", + turn_on_key="startProgram", + turn_off_key="stopProgram", + ), + HonSwitchEntityDescription( + key="pause", + name="Pause Tumble Dryer", + icon="mdi:pause", + turn_on_key="pauseProgram", + turn_off_key="resumeProgram", + ), + ), } -- 2.39.5 From ae6d28f52031302ca6977ab0c3e7e0cdefac7b83 Mon Sep 17 00:00:00 2001 From: drudgebg Date: Tue, 21 Mar 2023 14:03:39 +0200 Subject: [PATCH 007/205] Update number.py --- custom_components/hon/number.py | 36 +++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index cca1468..a9a90fe 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -38,6 +38,42 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { native_unit_of_measurement=UnitOfTime.MINUTES ), ), + "TD": ( + NumberEntityDescription( + key="startProgram.delayTime", + name="Delay time", + icon="mdi:timer-plus", + entity_category=EntityCategory.CONFIG, + native_unit_of_measurement=UnitOfTime.MINUTES + ), + NumberEntityDescription( + key="startProgram.dryLevel", + name="Dry level", + entity_category=EntityCategory.CONFIG, + icon="mdi:hair-dryer", + translation_key="tumbledryerdrylevel" + ), + NumberEntityDescription( + key="startProgram.tempLevel", + name="Temperature level", + entity_category=EntityCategory.CONFIG, + icon="mdi:thermometer", + translation_key="tumbledryertemplevel" + ), + NumberEntityDescription( + key="startProgram.antiCreaseTime", + name="Anti-Crease time", + entity_category=EntityCategory.CONFIG, + icon="mdi:timer", + native_unit_of_measurement=UnitOfTime.MINUTES + ), + NumberEntityDescription( + key="startProgram.sterilizationStatus", + name="Sterilization status", + icon="mdi:clock-start", + entity_category=EntityCategory.CONFIG + ), + ), } -- 2.39.5 From 196309ef5ffb83f83c8844e50294f1e16aa2066b Mon Sep 17 00:00:00 2001 From: drudgebg Date: Tue, 21 Mar 2023 14:05:03 +0200 Subject: [PATCH 008/205] Update binary_sensor.py --- custom_components/hon/binary_sensor.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index f047945..dcbf52d 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -37,6 +37,20 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { device_class=BinarySensorDeviceClass.DOOR, on_value="0", ), + ), + "TD": ( + HonBinarySensorEntityDescription( + key="attributes.lastConnEvent.category", + name="Connection", + device_class=BinarySensorDeviceClass.CONNECTIVITY, + on_value="CONNECTED", + ), + HonBinarySensorEntityDescription( + key="doorStatus", + name="Door", + device_class=BinarySensorDeviceClass.DOOR, + on_value="1", + ), ) } -- 2.39.5 From 50328119635701c664439dfa81391afefc163f61 Mon Sep 17 00:00:00 2001 From: drudgebg Date: Tue, 21 Mar 2023 14:09:19 +0200 Subject: [PATCH 009/205] Update en.json --- custom_components/hon/translations/en.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 96150d2..c920857 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -194,11 +194,11 @@ "iot_dry_bathrobe": "Bathrobes", "iot_dry_bed_linen": "Bed Linen", "iot_dry_cotton_dry": "Cotton Dry", - "iot_dry_cotton": "Cotton", + "iot_dry_cotton": "Cotton", "iot_dry_cuddly_toys": "Cuddly Toys", "iot_dry_curtains": "Curtains", "iot_dry_dehumidifier": "Humidity Remover", - "iot_dry_delicates": "Delicates", + "iot_dry_delicates": "Delicates", "iot_dry_delicates_antiallergy": "Delicates Anti-allergy", "iot_dry_delicate_tablecloths": "Delicate Tablecloths", "iot_dry_denim_jeans": "Denim - Jeans", -- 2.39.5 From 34e99230dac7d95f3c1dae69220815d591b7705f Mon Sep 17 00:00:00 2001 From: drudgebg Date: Tue, 21 Mar 2023 14:10:06 +0200 Subject: [PATCH 010/205] Update bg.json --- custom_components/hon/translations/bg.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/hon/translations/bg.json b/custom_components/hon/translations/bg.json index e164058..81e67a3 100644 --- a/custom_components/hon/translations/bg.json +++ b/custom_components/hon/translations/bg.json @@ -198,7 +198,7 @@ "iot_dry_cuddly_toys": "Плюшени играчки", "iot_dry_curtains": "Пердета", "iot_dry_dehumidifier": "Humidity Remover", - "iot_dry_delicates": "Деликатни", + "iot_dry_delicates": "Деликатни", "iot_dry_delicates_antiallergy": "Delicates Anti-allergy", "iot_dry_delicate_tablecloths": "Delicate Tablecloths", "iot_dry_denim_jeans": "Дънки", -- 2.39.5 From 28a0ae53e06d99608ee6a6c7f64c44a2c253f8b9 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Tue, 21 Mar 2023 22:12:59 +0100 Subject: [PATCH 011/205] Update custom_components/hon/number.py --- custom_components/hon/number.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index a9a90fe..060b2a7 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -65,7 +65,7 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { name="Anti-Crease time", entity_category=EntityCategory.CONFIG, icon="mdi:timer", - native_unit_of_measurement=UnitOfTime.MINUTES + native_unit_of_measurement=UnitOfTime.MINUTES ), NumberEntityDescription( key="startProgram.sterilizationStatus", -- 2.39.5 From 26db07acdcfab33e6711ba8f9b92e391f828574f Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Tue, 21 Mar 2023 22:28:08 +0100 Subject: [PATCH 012/205] Bump version to v0.3.0 --- README.md | 11 ++++++----- custom_components/hon/manifest.json | 4 ++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 8b9b3da..3c147ed 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,10 @@ Home Assistant component supporting devices of Haier's mobile app **hOn**. +## Supported Appliances +- Washing Machine +- Tumble Dryer + ## Installation #### Installing via HACS 1. You need to have installed [HACS](https://hacs.xyz/) @@ -61,14 +65,11 @@ Any kind of contribution is welcome! - If you want to have some states humanreadable, have a look at the `translation_key` parameter of the `EntityDescription` - If you need to implement some more logic, create a pull request to the underlying library. There we collect special requirements in the `appliances` directory. -## Supported Appliances -- Washing Machine - ## Tested Devices -- Haier WD90 +- Haier WD90-B14TEAM5 +- Haier HD80-A3959 ## About this Repo The existing integrations missed some features from the app I liked to have in HomeAssistant. I tried to create a pull request, but in the structures of these existing repos, I find it hard to fit in my needs, so I basically rewrote everything. I moved the api related stuff into the package [pyhOn](https://github.com/Andre0512/pyhOn). - diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 3d4714d..07e6f30 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -6,7 +6,7 @@ "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn==0.3.8"], - "version": "0.2.5" + "requirements": ["pyhOn==0.4.1"], + "version": "0.3.0" } -- 2.39.5 From 34e888f6d63c697b3dfd4a9d9cc7b7a5ee640e03 Mon Sep 17 00:00:00 2001 From: drudgebg Date: Wed, 22 Mar 2023 09:25:30 +0200 Subject: [PATCH 013/205] Adding time selection for some of the TD programs --- custom_components/hon/select.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index ef74c29..494f2bb 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -6,7 +6,7 @@ from pyhon.parameter import HonParameterFixed from homeassistant.components.select import SelectEntity, SelectEntityDescription from homeassistant.config_entries import ConfigEntry -from homeassistant.const import UnitOfTemperature, REVOLUTIONS_PER_MINUTE +from homeassistant.const import UnitOfTemperature, UnitOfTime, REVOLUTIONS_PER_MINUTE from homeassistant.core import callback from homeassistant.helpers.entity import EntityCategory @@ -43,6 +43,13 @@ SELECTS = { entity_category=EntityCategory.CONFIG, translation_key="programs" ), + SelectEntityDescription( + key="startProgram.dryTimeMM", + name="Time", + entity_category=EntityCategory.CONFIG, + icon="mdi:timer", + unit_of_measurement=UnitOfTime.MINUTES + ), ) } -- 2.39.5 From 077bded6dd46cda5f63a21e6cf1dd543c9ceb05d Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Wed, 22 Mar 2023 22:57:14 +0100 Subject: [PATCH 014/205] Improve washing machine sensors --- custom_components/hon/binary_sensor.py | 11 +++++++++-- custom_components/hon/sensor.py | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index dcbf52d..5efd147 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -27,15 +27,22 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { "WM": ( HonBinarySensorEntityDescription( key="attributes.lastConnEvent.category", - name="Connection", + name="Remote Control", device_class=BinarySensorDeviceClass.CONNECTIVITY, on_value="CONNECTED", + icon="mdi:remote" ), HonBinarySensorEntityDescription( key="doorLockStatus", + name="Door Lock", + device_class=BinarySensorDeviceClass.LOCK, + on_value="0", + ), + HonBinarySensorEntityDescription( + key="doorStatus", name="Door", device_class=BinarySensorDeviceClass.DOOR, - on_value="0", + on_value="1", ), ), "TD": ( diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index fed894b..f948d09 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -85,7 +85,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { SensorEntityDescription( key="spinSpeed", name="Spin Speed", - icon="mdi:timer", + icon="mdi:speedometer", state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=UnitOfTime.MINUTES, ), -- 2.39.5 From 135d6cafed32c49530fd3401f9866e4229ea4b8b Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sun, 2 Apr 2023 02:43:20 +0200 Subject: [PATCH 015/205] Update to for hacs default integration --- README.md | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 3c147ed..de2243b 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,26 @@ # Haier hOn -[![hacs_badge](https://img.shields.io/badge/HACS-Custom-41BDF5.svg)](https://github.com/hacs/integration) - -Home Assistant component supporting devices of Haier's mobile app **hOn**. +[![hacs_badge](https://img.shields.io/badge/HACS-Default-41BDF5.svg)](https://github.com/hacs/integration) +Home Assistant integration for Haier hOn: support for Haier/Candy/Hoover home appliances like washing machines. ## Supported Appliances - Washing Machine - Tumble Dryer + ## Installation -#### Installing via HACS -1. You need to have installed [HACS](https://hacs.xyz/) -2. Go to HACS->Integrations -3. Add this repo (`https://github.com/Andre0512/hon.git`) into your HACS custom repositories -4. Search for Haier hOn and Download it -5. Restart your HomeAssistant -6. Go to Settings->Devices & Services -7. Shift reload your browser -8. Click Add Integration -9. Search for Haier hOn -10. Type your username used in the hOn App and hit submit +[![Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?owner=Andre0512&repository=hon&category=integration) + +**Method 1:** [HACS](https://hacs.xyz/) > Integrations > Add Integration > **Haier hOn** > Install + +**Method 2.** Manually copy `hon` folder from [latest release](https://github.com/Andre0512/hon/releases/latest) to `/config/custom_components` folder. + +## Configuration + +[![Open your Home Assistant instance and start setting up a new integration.](https://my.home-assistant.io/badges/config_flow_start.svg)](https://my.home-assistant.io/redirect/config_flow_start/?domain=hon) + +Settings > Devices & Services > Add Integration > **Haier hOn** + +If the integration is not in the list, you need to clear the browser cache. ## Contribute Any kind of contribution is welcome! -- 2.39.5 From 05e9d835b18113d8d29cf108c868f008048290cd Mon Sep 17 00:00:00 2001 From: Alexandre Leites <1256013+alexandre-leites@users.noreply.github.com> Date: Wed, 5 Apr 2023 23:11:19 +0200 Subject: [PATCH 016/205] Added WD device type sensors. --- custom_components/hon/binary_sensor.py | 41 +++++++++++- custom_components/hon/number.py | 9 +++ custom_components/hon/select.py | 15 ++++- custom_components/hon/sensor.py | 74 +++++++++++++++++++++- custom_components/hon/switch.py | 21 ++++++ custom_components/hon/translations/bg.json | 1 + custom_components/hon/translations/en.json | 1 + 7 files changed, 157 insertions(+), 5 deletions(-) diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index 5efd147..abc0fbe 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -58,7 +58,44 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { device_class=BinarySensorDeviceClass.DOOR, on_value="1", ), - ) + ), + "WD": ( + HonBinarySensorEntityDescription( + key="attributes.lastConnEvent.category", + name="Remote Control", + device_class=BinarySensorDeviceClass.CONNECTIVITY, + on_value="CONNECTED", + icon="mdi:remote" + ), + HonBinarySensorEntityDescription( + key="startProgram.prewash", + name="Pre Wash", + ), + HonBinarySensorEntityDescription( + key="extraRinse1", + name="Extra Rinse 1", + ), + HonBinarySensorEntityDescription( + key="extraRinse2", + name="Extra Rinse 2", + ), + HonBinarySensorEntityDescription( + key="extraRinse3", + name="Extra Rinse 3", + ), + HonBinarySensorEntityDescription( + key="goodNight", + name="Good Night Mode", + ), + HonBinarySensorEntityDescription( + key="acquaplus", + name="Acqua Plus", + ), + HonBinarySensorEntityDescription( + key="anticrease", + name="Anti-Crease", + ), + ), } @@ -77,7 +114,7 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non if descriptions := BINARY_SENSORS.get(device.appliance_type): for description in descriptions: if not device.get(description.key): - _LOGGER.info("Can't setup %s", description.key) + _LOGGER.warning("[%s] Can't setup %s", device.appliance_type, description.key) continue appliances.extend([ HonBinarySensorEntity(hass, coordinator, entry, device, description)] diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index 060b2a7..7beba16 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -74,6 +74,15 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { entity_category=EntityCategory.CONFIG ), ), + "WD": ( + NumberEntityDescription( + key="startProgram.delayTime", + name="Delay Time", + icon="mdi:timer-plus", + entity_category=EntityCategory.CONFIG, + native_unit_of_measurement=UnitOfTime.MINUTES + ), + ), } diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index 494f2bb..6974cf3 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -1,5 +1,7 @@ from __future__ import annotations +import logging + from pyhon import HonConnection from pyhon.device import HonDevice from pyhon.parameter import HonParameterFixed @@ -13,6 +15,8 @@ from homeassistant.helpers.entity import EntityCategory from .const import DOMAIN from .hon import HonEntity, HonCoordinator +_LOGGER = logging.getLogger(__name__) + SELECTS = { "WM": ( SelectEntityDescription( @@ -50,7 +54,15 @@ SELECTS = { icon="mdi:timer", unit_of_measurement=UnitOfTime.MINUTES ), - ) + ), + "WD": ( + SelectEntityDescription( + key="startProgram.program", + name="Program", + entity_category=EntityCategory.CONFIG, + translation_key="programs" + ), + ), } @@ -69,6 +81,7 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non if descriptions := SELECTS.get(device.appliance_type): for description in descriptions: if not device.get(description.key): + _LOGGER.warning("[%s] Can't setup %s", device.appliance_type, description.key) continue appliances.extend([ HonSelectEntity(hass, coordinator, entry, device, description)] diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index f948d09..b316000 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -9,7 +9,15 @@ from homeassistant.components.sensor import ( SensorEntityDescription, ) from homeassistant.config_entries import ConfigEntry -from homeassistant.const import UnitOfEnergy, UnitOfVolume, UnitOfMass, UnitOfPower, UnitOfTime +from homeassistant.const import ( + REVOLUTIONS_PER_MINUTE, + UnitOfEnergy, + UnitOfVolume, + UnitOfMass, + UnitOfPower, + UnitOfTime, + UnitOfTemperature +) from homeassistant.core import callback from homeassistant.helpers.entity import EntityCategory from homeassistant.helpers.typing import StateType @@ -141,7 +149,68 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:thermometer", translation_key="tumbledryertemplevel" ), - ) + ), + "WD": ( + SensorEntityDescription( + key="machMode", + name="Machine Status", + icon="mdi:information", + translation_key="mode" + ), + SensorEntityDescription( + key="spinSpeed", + name="Spin Speed", + icon="mdi:fast-forward-outline", + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=REVOLUTIONS_PER_MINUTE, + ), + SensorEntityDescription( + key="remainingTimeMM", + name="Remaining Time", + icon="mdi:timer", + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=UnitOfTime.MINUTES, + ), + SensorEntityDescription( + key="delayTime", + name="Start Time", + icon="mdi:clock-start", + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=UnitOfTime.MINUTES, + ), + SensorEntityDescription( + key="prCode", + name="Current Program", + icon="mdi:tumble-dryer", + ), + SensorEntityDescription( + key="prPhase", + name="Program Phase", + icon="mdi:tumble-dryer", + ), + SensorEntityDescription( + key="dryLevel", + name="Dry level", + icon="mdi:hair-dryer", + ), + SensorEntityDescription( + key="dirtyLevel", + name="Dirt level", + icon="mdi:liquid-spot", + ), + SensorEntityDescription( + key="steamLevel", + name="Steam level", + icon="mdi:smoke", + ), + SensorEntityDescription( + key="temp", + name="Current Temperature", + icon="mdi:thermometer", + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + ), + ), } @@ -160,6 +229,7 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non if descriptions := SENSORS.get(device.appliance_type): for description in descriptions: if not device.get(description.key): + _LOGGER.warning("[%s] Can't setup %s", device.appliance_type, description.key) continue appliances.extend([ HonSensorEntity(hass, coordinator, entry, device, description)] diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 5b2243a..7dbf3a4 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -1,3 +1,5 @@ +import logging + from dataclasses import dataclass from typing import Any @@ -10,6 +12,7 @@ from pyhon.device import HonDevice from .const import DOMAIN from .hon import HonCoordinator, HonEntity +_LOGGER = logging.getLogger(__name__) @dataclass class HonSwitchEntityDescriptionMixin: @@ -69,6 +72,22 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { turn_off_key="resumeProgram", ), ), + "WD": ( + HonSwitchEntityDescription( + key="active", + name="Washing Machine", + icon="mdi:washing-machine", + turn_on_key="startProgram", + turn_off_key="stopProgram", + ), + HonSwitchEntityDescription( + key="pause", + name="Pause Washing Machine", + icon="mdi:pause", + turn_on_key="pauseProgram", + turn_off_key="resumeProgram", + ), + ), } @@ -90,6 +109,8 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non appliances.extend([ HonSwitchEntity(hass, coordinator, entry, device, description)] ) + else: + _LOGGER.warning("[%s] Can't setup %s", device.appliance_type, description.key) async_add_entities(appliances) diff --git a/custom_components/hon/translations/bg.json b/custom_components/hon/translations/bg.json index 81e67a3..ef4c662 100644 --- a/custom_components/hon/translations/bg.json +++ b/custom_components/hon/translations/bg.json @@ -377,6 +377,7 @@ "single_item_steam": "Single Item + Steam", "smart_wash": "Smart Wash", "soft_care": "Soft Care", + "soft_care_steam": "Soft Care + Steam", "soft_care_steam_title": "Soft Care + Steam", "special_39": "Special 39'", "special_39_full_load": "Special 39'", diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index c920857..f0a21a0 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -377,6 +377,7 @@ "single_item_steam": "Single Item + Steam", "smart_wash": "Smart Wash", "soft_care": "Soft Care", + "soft_care_steam": "Soft Care + Steam", "soft_care_steam_title": "Soft Care + Steam", "special_39": "Special 39'", "special_39_full_load": "Special 39'", -- 2.39.5 From 116f9d5470638e2158d81abc2e3b0909d3640c16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20=C3=81ngel?= Date: Fri, 7 Apr 2023 13:52:55 +0200 Subject: [PATCH 017/205] Add oven support --- custom_components/hon/binary_sensor.py | 26 ++++++++++++++++++++++++ custom_components/hon/button.py | 13 ++++++++++++ custom_components/hon/number.py | 27 ++++++++++++++++++++++++- custom_components/hon/select.py | 14 +++++++++++++ custom_components/hon/sensor.py | 28 ++++++++++++++++++++++++++ 5 files changed, 107 insertions(+), 1 deletion(-) diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index 5efd147..178fc91 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -58,6 +58,32 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { device_class=BinarySensorDeviceClass.DOOR, on_value="1", ), + ), + + "OV": ( + HonBinarySensorEntityDescription( + key="attributes.lastConnEvent.category", + name="Online", + device_class=BinarySensorDeviceClass.CONNECTIVITY, + on_value="CONNECTED", + icon="mdi:wifi" + ), + + HonBinarySensorEntityDescription( + key="attributes.parameters.remoteCtrValid", + name="On", + device_class=BinarySensorDeviceClass.CONNECTIVITY, + on_value="1", + icon="mdi:remote" + ), + HonBinarySensorEntityDescription( + key="attributes.parameters.onOffStatus", + name="On", + device_class=BinarySensorDeviceClass.RUNNING, + on_value="1", + icon="mdi:power-cycle" + ), + ) } diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index 5178257..940791d 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -20,6 +20,19 @@ BUTTONS: dict[str, tuple[ButtonEntityDescription, ...]] = { # icon="mdi:play-pause", # ), ), + + "OV":( + ButtonEntityDescription( + key="startProgram", + name="Start Program", + icon="mdi:power-cycle", + ), + ButtonEntityDescription( + key="stopProgram", + name="Stop Program", + icon="mdi:power-off", + ), + ) } diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index 060b2a7..e486655 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -8,7 +8,7 @@ from homeassistant.components.number import ( NumberEntityDescription, ) from homeassistant.config_entries import ConfigEntry -from homeassistant.const import UnitOfTime +from homeassistant.const import UnitOfTime, UnitOfTemperature from homeassistant.core import callback from homeassistant.helpers.entity import EntityCategory @@ -74,6 +74,31 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { entity_category=EntityCategory.CONFIG ), ), + + "OV": ( + NumberEntityDescription( + key="startProgram.delayTime", + name="Delay time", + icon="mdi:timer-plus", + entity_category=EntityCategory.CONFIG, + native_unit_of_measurement=UnitOfTime.MINUTES + ), + NumberEntityDescription( + key="startProgram.tempSel", + name="Target Temperature", + entity_category=EntityCategory.CONFIG, + icon="mdi:thermometer", + native_unit_of_measurement=UnitOfTemperature.CELSIUS + ), + + NumberEntityDescription( + key="startProgram.prTime", + name="Program Duration", + entity_category=EntityCategory.CONFIG, + icon="mdi:timelapse", + native_unit_of_measurement=UnitOfTime.MINUTES + ), + ) } diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index 494f2bb..a602d8c 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -50,6 +50,20 @@ SELECTS = { icon="mdi:timer", unit_of_measurement=UnitOfTime.MINUTES ), + ), + "OV": ( + SelectEntityDescription( + key="startProgram.program", + name="Program", + entity_category=EntityCategory.CONFIG, + ), + + SelectEntityDescription( + key="startProgram.preheatStatus", + name="Preheat", + entity_category=EntityCategory.CONFIG + ), + ) } diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index f948d09..65e26d6 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -141,7 +141,35 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:thermometer", translation_key="tumbledryertemplevel" ), + ), + + "OV": ( + SensorEntityDescription( + key="remainingTimeMM", + name="Remaining Time", + icon="mdi:timer", + native_unit_of_measurement=UnitOfTime.MINUTES, + ), + SensorEntityDescription( + key="delayTime", + name="Start Time", + icon="mdi:clock-start", + native_unit_of_measurement=UnitOfTime.MINUTES, + ), + + SensorEntityDescription( + key="temp", + name="Temperature", + icon="mdi:thermometer", + ), + + SensorEntityDescription( + key="tempSel", + name="Temperature Selected", + icon="mdi:thermometer", + ), ) + } -- 2.39.5 From 6093b57f761750ec376a21f2486c00f284f6d1b5 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sat, 8 Apr 2023 04:44:47 +0200 Subject: [PATCH 018/205] Merge branch 'main' into oven --- custom_components/hon/binary_sensor.py | 44 +++++++++++-- custom_components/hon/number.py | 12 +++- custom_components/hon/select.py | 17 ++++- custom_components/hon/sensor.py | 72 +++++++++++++++++++--- custom_components/hon/switch.py | 21 +++++++ custom_components/hon/translations/bg.json | 1 + custom_components/hon/translations/en.json | 1 + 7 files changed, 151 insertions(+), 17 deletions(-) diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index 178fc91..a2f75c0 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -59,7 +59,43 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { on_value="1", ), ), - + "WD": ( + HonBinarySensorEntityDescription( + key="attributes.lastConnEvent.category", + name="Remote Control", + device_class=BinarySensorDeviceClass.CONNECTIVITY, + on_value="CONNECTED", + icon="mdi:remote" + ), + HonBinarySensorEntityDescription( + key="startProgram.prewash", + name="Pre Wash", + ), + HonBinarySensorEntityDescription( + key="extraRinse1", + name="Extra Rinse 1", + ), + HonBinarySensorEntityDescription( + key="extraRinse2", + name="Extra Rinse 2", + ), + HonBinarySensorEntityDescription( + key="extraRinse3", + name="Extra Rinse 3", + ), + HonBinarySensorEntityDescription( + key="goodNight", + name="Good Night Mode", + ), + HonBinarySensorEntityDescription( + key="acquaplus", + name="Acqua Plus", + ), + HonBinarySensorEntityDescription( + key="anticrease", + name="Anti-Crease", + ), + ), "OV": ( HonBinarySensorEntityDescription( key="attributes.lastConnEvent.category", @@ -68,7 +104,6 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { on_value="CONNECTED", icon="mdi:wifi" ), - HonBinarySensorEntityDescription( key="attributes.parameters.remoteCtrValid", name="On", @@ -83,8 +118,7 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { on_value="1", icon="mdi:power-cycle" ), - - ) + ), } @@ -103,7 +137,7 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non if descriptions := BINARY_SENSORS.get(device.appliance_type): for description in descriptions: if not device.get(description.key): - _LOGGER.info("Can't setup %s", description.key) + _LOGGER.warning("[%s] Can't setup %s", device.appliance_type, description.key) continue appliances.extend([ HonBinarySensorEntity(hass, coordinator, entry, device, description)] diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index e486655..6335961 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -74,7 +74,15 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { entity_category=EntityCategory.CONFIG ), ), - + "WD": ( + NumberEntityDescription( + key="startProgram.delayTime", + name="Delay Time", + icon="mdi:timer-plus", + entity_category=EntityCategory.CONFIG, + native_unit_of_measurement=UnitOfTime.MINUTES + ), + ), "OV": ( NumberEntityDescription( key="startProgram.delayTime", @@ -98,7 +106,7 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { icon="mdi:timelapse", native_unit_of_measurement=UnitOfTime.MINUTES ), - ) + ), } diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index a602d8c..c492661 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -1,5 +1,7 @@ from __future__ import annotations +import logging + from pyhon import HonConnection from pyhon.device import HonDevice from pyhon.parameter import HonParameterFixed @@ -13,6 +15,8 @@ from homeassistant.helpers.entity import EntityCategory from .const import DOMAIN from .hon import HonEntity, HonCoordinator +_LOGGER = logging.getLogger(__name__) + SELECTS = { "WM": ( SelectEntityDescription( @@ -51,20 +55,26 @@ SELECTS = { unit_of_measurement=UnitOfTime.MINUTES ), ), + "WD": ( + SelectEntityDescription( + key="startProgram.program", + name="Program", + entity_category=EntityCategory.CONFIG, + translation_key="programs" + ), + ), "OV": ( SelectEntityDescription( key="startProgram.program", name="Program", entity_category=EntityCategory.CONFIG, ), - SelectEntityDescription( key="startProgram.preheatStatus", name="Preheat", entity_category=EntityCategory.CONFIG ), - - ) + ), } @@ -83,6 +93,7 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non if descriptions := SELECTS.get(device.appliance_type): for description in descriptions: if not device.get(description.key): + _LOGGER.warning("[%s] Can't setup %s", device.appliance_type, description.key) continue appliances.extend([ HonSelectEntity(hass, coordinator, entry, device, description)] diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 65e26d6..aad957b 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -9,7 +9,15 @@ from homeassistant.components.sensor import ( SensorEntityDescription, ) from homeassistant.config_entries import ConfigEntry -from homeassistant.const import UnitOfEnergy, UnitOfVolume, UnitOfMass, UnitOfPower, UnitOfTime +from homeassistant.const import ( + REVOLUTIONS_PER_MINUTE, + UnitOfEnergy, + UnitOfVolume, + UnitOfMass, + UnitOfPower, + UnitOfTime, + UnitOfTemperature +) from homeassistant.core import callback from homeassistant.helpers.entity import EntityCategory from homeassistant.helpers.typing import StateType @@ -142,7 +150,60 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { translation_key="tumbledryertemplevel" ), ), - + "WD": ( + SensorEntityDescription( + key="machMode", + name="Machine Status", + icon="mdi:information", + translation_key="mode" + ), + SensorEntityDescription( + key="spinSpeed", + name="Spin Speed", + icon="mdi:fast-forward-outline", + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=REVOLUTIONS_PER_MINUTE, + ), + SensorEntityDescription( + key="remainingTimeMM", + name="Remaining Time", + icon="mdi:timer", + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=UnitOfTime.MINUTES, + ), + SensorEntityDescription( + key="prCode", + name="Current Program", + icon="mdi:tumble-dryer", + ), + SensorEntityDescription( + key="prPhase", + name="Program Phase", + icon="mdi:tumble-dryer", + ), + SensorEntityDescription( + key="dryLevel", + name="Dry level", + icon="mdi:hair-dryer", + ), + SensorEntityDescription( + key="dirtyLevel", + name="Dirt level", + icon="mdi:liquid-spot", + ), + SensorEntityDescription( + key="steamLevel", + name="Steam level", + icon="mdi:smoke", + ), + SensorEntityDescription( + key="temp", + name="Current Temperature", + icon="mdi:thermometer", + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + ), + ), "OV": ( SensorEntityDescription( key="remainingTimeMM", @@ -154,22 +215,18 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { key="delayTime", name="Start Time", icon="mdi:clock-start", - native_unit_of_measurement=UnitOfTime.MINUTES, ), - SensorEntityDescription( key="temp", name="Temperature", icon="mdi:thermometer", ), - SensorEntityDescription( key="tempSel", name="Temperature Selected", icon="mdi:thermometer", ), - ) - + ), } @@ -188,6 +245,7 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non if descriptions := SENSORS.get(device.appliance_type): for description in descriptions: if not device.get(description.key): + _LOGGER.warning("[%s] Can't setup %s", device.appliance_type, description.key) continue appliances.extend([ HonSensorEntity(hass, coordinator, entry, device, description)] diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 5b2243a..7dbf3a4 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -1,3 +1,5 @@ +import logging + from dataclasses import dataclass from typing import Any @@ -10,6 +12,7 @@ from pyhon.device import HonDevice from .const import DOMAIN from .hon import HonCoordinator, HonEntity +_LOGGER = logging.getLogger(__name__) @dataclass class HonSwitchEntityDescriptionMixin: @@ -69,6 +72,22 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { turn_off_key="resumeProgram", ), ), + "WD": ( + HonSwitchEntityDescription( + key="active", + name="Washing Machine", + icon="mdi:washing-machine", + turn_on_key="startProgram", + turn_off_key="stopProgram", + ), + HonSwitchEntityDescription( + key="pause", + name="Pause Washing Machine", + icon="mdi:pause", + turn_on_key="pauseProgram", + turn_off_key="resumeProgram", + ), + ), } @@ -90,6 +109,8 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non appliances.extend([ HonSwitchEntity(hass, coordinator, entry, device, description)] ) + else: + _LOGGER.warning("[%s] Can't setup %s", device.appliance_type, description.key) async_add_entities(appliances) diff --git a/custom_components/hon/translations/bg.json b/custom_components/hon/translations/bg.json index 81e67a3..ef4c662 100644 --- a/custom_components/hon/translations/bg.json +++ b/custom_components/hon/translations/bg.json @@ -377,6 +377,7 @@ "single_item_steam": "Single Item + Steam", "smart_wash": "Smart Wash", "soft_care": "Soft Care", + "soft_care_steam": "Soft Care + Steam", "soft_care_steam_title": "Soft Care + Steam", "special_39": "Special 39'", "special_39_full_load": "Special 39'", diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index c920857..f0a21a0 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -377,6 +377,7 @@ "single_item_steam": "Single Item + Steam", "smart_wash": "Smart Wash", "soft_care": "Soft Care", + "soft_care_steam": "Soft Care + Steam", "soft_care_steam_title": "Soft Care + Steam", "special_39": "Special 39'", "special_39_full_load": "Special 39'", -- 2.39.5 From e1a2af70e91a034fc1a8c589b70799cf629715b4 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sat, 8 Apr 2023 06:15:33 +0200 Subject: [PATCH 019/205] Bump to v0.4.0 --- README.md | 23 +++++++++++++---------- custom_components/hon/button.py | 20 +++----------------- custom_components/hon/manifest.json | 2 +- custom_components/hon/number.py | 2 ++ custom_components/hon/select.py | 3 +-- custom_components/hon/switch.py | 7 +++---- 6 files changed, 23 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index de2243b..72f0051 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,27 @@ # Haier hOn [![hacs_badge](https://img.shields.io/badge/HACS-Default-41BDF5.svg)](https://github.com/hacs/integration) - +[![GitHub manifest version (path)](https://img.shields.io/github/manifest-json/v/andre0512/hon?color=g&filename=custom_components%2Fhon%2Fmanifest.json)](https://github.com/Andre0512/hon/releases/latest) +[![Home Assistant installs](https://img.shields.io/badge/dynamic/json?color=41BDF5&label=usage&suffix=%20installs&cacheSeconds=15600&url=https://analytics.home-assistant.io/custom_integrations.json&query=$.hon.total)](https://analytics.home-assistant.io/) Home Assistant integration for Haier hOn: support for Haier/Candy/Hoover home appliances like washing machines. ## Supported Appliances -- Washing Machine - Tumble Dryer - +- Washer Dryer +- Washing Machine +- Oven ## Installation -[![Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?owner=Andre0512&repository=hon&category=integration) +**Method 1:** [![Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?owner=Andre0512&repository=hon&category=integration) -**Method 1:** [HACS](https://hacs.xyz/) > Integrations > Add Integration > **Haier hOn** > Install +**Method 2:** [HACS](https://hacs.xyz/) > Integrations > Add Integration > **Haier hOn** > Install -**Method 2.** Manually copy `hon` folder from [latest release](https://github.com/Andre0512/hon/releases/latest) to `/config/custom_components` folder. +**Method 3:** Manually copy `hon` folder from [latest release](https://github.com/Andre0512/hon/releases/latest) to `config/custom_components` folder. ## Configuration -[![Open your Home Assistant instance and start setting up a new integration.](https://my.home-assistant.io/badges/config_flow_start.svg)](https://my.home-assistant.io/redirect/config_flow_start/?domain=hon) +**Method 1**: [![Open your Home Assistant instance and start setting up a new integration.](https://my.home-assistant.io/badges/config_flow_start.svg)](https://my.home-assistant.io/redirect/config_flow_start/?domain=hon) -Settings > Devices & Services > Add Integration > **Haier hOn** - -If the integration is not in the list, you need to clear the browser cache. +**Method 2**: Settings > Devices & Services > Add Integration > **Haier hOn** +_If the integration is not in the list, you need to clear the browser cache._ ## Contribute Any kind of contribution is welcome! @@ -70,6 +71,8 @@ Any kind of contribution is welcome! ## Tested Devices - Haier WD90-B14TEAM5 - Haier HD80-A3959 +- Haier HWO60SM2F3XH +- Hoover H-WASH 500 ## About this Repo The existing integrations missed some features from the app I liked to have in HomeAssistant. diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index 940791d..4e24709 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -1,27 +1,13 @@ -from pyhon import HonConnection -from pyhon.device import HonDevice - from homeassistant.components.button import ButtonEntityDescription, ButtonEntity from homeassistant.config_entries import ConfigEntry +from pyhon import HonConnection +from pyhon.device import HonDevice from .const import DOMAIN from .hon import HonCoordinator, HonEntity BUTTONS: dict[str, tuple[ButtonEntityDescription, ...]] = { - "WM": ( - # ButtonEntityDescription( - # key="pauseProgram", - # name="Pause Program", - # icon="mdi:pause", - # ), - # ButtonEntityDescription( - # key="resumeProgram", - # name="Resume Program", - # icon="mdi:play-pause", - # ), - ), - - "OV":( + "OV": ( ButtonEntityDescription( key="startProgram", name="Start Program", diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 07e6f30..ea42851 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -7,6 +7,6 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": ["pyhOn==0.4.1"], - "version": "0.3.0" + "version": "0.4.0" } diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index 6335961..9ec2a0a 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -124,6 +124,8 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non if descriptions := NUMBERS.get(device.appliance_type): for description in descriptions: + if not device.settings.get(description.key): + continue appliances.extend([ HonNumberEntity(hass, coordinator, entry, device, description)] ) diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index c492661..70c3468 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -92,8 +92,7 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non if descriptions := SELECTS.get(device.appliance_type): for description in descriptions: - if not device.get(description.key): - _LOGGER.warning("[%s] Can't setup %s", device.appliance_type, description.key) + if not device.settings.get(description.key): continue appliances.extend([ HonSelectEntity(hass, coordinator, entry, device, description)] diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 7dbf3a4..a4d3bf7 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -14,6 +14,7 @@ from .hon import HonCoordinator, HonEntity _LOGGER = logging.getLogger(__name__) + @dataclass class HonSwitchEntityDescriptionMixin: turn_on_key: str = "" @@ -22,8 +23,8 @@ class HonSwitchEntityDescriptionMixin: @dataclass class HonSwitchEntityDescription(HonSwitchEntityDescriptionMixin, - SwitchEntityDescription -): + SwitchEntityDescription + ): pass @@ -153,5 +154,3 @@ class HonSwitchEntity(HonEntity, SwitchEntity): self.async_write_ha_state() else: await self._device.commands[self.entity_description.turn_off_key].send() - - -- 2.39.5 From 7e9202ef38736b36bd096ba3872bb3a810ca6b8f Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 10 Apr 2023 07:09:54 +0200 Subject: [PATCH 020/205] New pyhOn version --- custom_components/hon/__init__.py | 5 ++--- custom_components/hon/binary_sensor.py | 6 +++--- custom_components/hon/button.py | 10 +++++----- custom_components/hon/hon.py | 6 +++--- custom_components/hon/manifest.json | 4 ++-- custom_components/hon/number.py | 6 +++--- custom_components/hon/select.py | 10 +++++----- custom_components/hon/sensor.py | 6 +++--- custom_components/hon/switch.py | 10 +++++----- 9 files changed, 31 insertions(+), 32 deletions(-) diff --git a/custom_components/hon/__init__.py b/custom_components/hon/__init__.py index 8c3917b..c404243 100644 --- a/custom_components/hon/__init__.py +++ b/custom_components/hon/__init__.py @@ -1,7 +1,7 @@ import logging import voluptuous as vol -from pyhon import HonConnection +from pyhon import Hon from homeassistant.config_entries import ConfigEntry from homeassistant.const import CONF_EMAIL, CONF_PASSWORD @@ -28,8 +28,7 @@ CONFIG_SCHEMA = vol.Schema( async def async_setup_entry(hass: HomeAssistantType, entry: ConfigEntry): session = aiohttp_client.async_get_clientsession(hass) - hon = HonConnection(entry.data["email"], entry.data["password"], session) - await hon.setup() + hon = await Hon(entry.data["email"], entry.data["password"], session=session).create() hass.data.setdefault(DOMAIN, {}) hass.data[DOMAIN][entry.unique_id] = hon hass.data[DOMAIN]["coordinators"] = {} diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index a2f75c0..e6bccf8 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -1,7 +1,7 @@ import logging from dataclasses import dataclass -from pyhon import HonConnection +from pyhon import Hon from homeassistant.components.binary_sensor import BinarySensorEntityDescription, BinarySensorDeviceClass, \ BinarySensorEntity @@ -123,10 +123,10 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: - hon: HonConnection = hass.data[DOMAIN][entry.unique_id] + hon: Hon = hass.data[DOMAIN][entry.unique_id] coordinators = hass.data[DOMAIN]["coordinators"] appliances = [] - for device in hon.devices: + for device in hon.appliances: if device.mac_address in coordinators: coordinator = hass.data[DOMAIN]["coordinators"][device.mac_address] else: diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index 4e24709..a2386b4 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -1,7 +1,7 @@ from homeassistant.components.button import ButtonEntityDescription, ButtonEntity from homeassistant.config_entries import ConfigEntry -from pyhon import HonConnection -from pyhon.device import HonDevice +from pyhon import Hon +from pyhon.appliance import HonAppliance from .const import DOMAIN from .hon import HonCoordinator, HonEntity @@ -23,10 +23,10 @@ BUTTONS: dict[str, tuple[ButtonEntityDescription, ...]] = { async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: - hon: HonConnection = hass.data[DOMAIN][entry.unique_id] + hon: Hon = hass.data[DOMAIN][entry.unique_id] coordinators = hass.data[DOMAIN]["coordinators"] appliances = [] - for device in hon.devices: + for device in hon.appliances: if device.mac_address in coordinators: coordinator = hass.data[DOMAIN]["coordinators"][device.mac_address] else: @@ -46,7 +46,7 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non class HonButtonEntity(HonEntity, ButtonEntity): - def __init__(self, hass, coordinator, entry, device: HonDevice, description) -> None: + def __init__(self, hass, coordinator, entry, device: HonAppliance, description) -> None: super().__init__(hass, entry, coordinator, device) self._coordinator = coordinator diff --git a/custom_components/hon/hon.py b/custom_components/hon/hon.py index 0b1578d..f68cf2b 100644 --- a/custom_components/hon/hon.py +++ b/custom_components/hon/hon.py @@ -1,7 +1,7 @@ import logging from datetime import timedelta -from pyhon.device import HonDevice +from pyhon.appliance import HonAppliance from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.update_coordinator import CoordinatorEntity @@ -15,7 +15,7 @@ _LOGGER = logging.getLogger(__name__) class HonEntity(CoordinatorEntity): _attr_has_entity_name = True - def __init__(self, hass, entry, coordinator, device: HonDevice) -> None: + def __init__(self, hass, entry, coordinator, device: HonAppliance) -> None: super().__init__(coordinator) self._hon = hass.data[DOMAIN][entry.unique_id] @@ -36,7 +36,7 @@ class HonEntity(CoordinatorEntity): class HonCoordinator(DataUpdateCoordinator): - def __init__(self, hass, device: HonDevice): + def __init__(self, hass, device: HonAppliance): """Initialize my coordinator.""" super().__init__(hass, _LOGGER, name=device.mac_address, update_interval=timedelta(seconds=30)) self._device = device diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index ea42851..25950a3 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -6,7 +6,7 @@ "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn==0.4.1"], - "version": "0.4.0" + "requirements": ["pyhOn==0.6.0"], + "version": "0.5.0-beta.1" } diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index 9ec2a0a..c2f588c 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -1,6 +1,6 @@ from __future__ import annotations -from pyhon import HonConnection +from pyhon import Hon from pyhon.parameter import HonParameterRange from homeassistant.components.number import ( @@ -111,10 +111,10 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: - hon: HonConnection = hass.data[DOMAIN][entry.unique_id] + hon: Hon = hass.data[DOMAIN][entry.unique_id] coordinators = hass.data[DOMAIN]["coordinators"] appliances = [] - for device in hon.devices: + for device in hon.appliances: if device.mac_address in coordinators: coordinator = hass.data[DOMAIN]["coordinators"][device.mac_address] else: diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index 70c3468..ef8b010 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -2,8 +2,8 @@ from __future__ import annotations import logging -from pyhon import HonConnection -from pyhon.device import HonDevice +from pyhon import Hon +from pyhon.appliance import HonAppliance from pyhon.parameter import HonParameterFixed from homeassistant.components.select import SelectEntity, SelectEntityDescription @@ -79,10 +79,10 @@ SELECTS = { async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: - hon: HonConnection = hass.data[DOMAIN][entry.unique_id] + hon: Hon = hass.data[DOMAIN][entry.unique_id] coordinators = hass.data[DOMAIN]["coordinators"] appliances = [] - for device in hon.devices: + for device in hon.appliances: if device.mac_address in coordinators: coordinator = hass.data[DOMAIN]["coordinators"][device.mac_address] else: @@ -101,7 +101,7 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non class HonSelectEntity(HonEntity, SelectEntity): - def __init__(self, hass, coordinator, entry, device: HonDevice, description) -> None: + def __init__(self, hass, coordinator, entry, device: HonAppliance, description) -> None: super().__init__(hass, entry, coordinator, device) self._coordinator = coordinator diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index aad957b..1bff6ff 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -1,6 +1,6 @@ import logging -from pyhon import HonConnection +from pyhon import Hon from homeassistant.components.sensor import ( SensorEntity, @@ -231,10 +231,10 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: - hon: HonConnection = hass.data[DOMAIN][entry.unique_id] + hon: Hon = hass.data[DOMAIN][entry.unique_id] coordinators = hass.data[DOMAIN]["coordinators"] appliances = [] - for device in hon.devices: + for device in hon.appliances: if device.mac_address in coordinators: coordinator = hass.data[DOMAIN]["coordinators"][device.mac_address] else: diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index a4d3bf7..d37ceea 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -6,8 +6,8 @@ from typing import Any from homeassistant.components.switch import SwitchEntityDescription, SwitchEntity from homeassistant.config_entries import ConfigEntry from homeassistant.const import EntityCategory -from pyhon import HonConnection -from pyhon.device import HonDevice +from pyhon import Hon +from pyhon.appliance import HonAppliance from .const import DOMAIN from .hon import HonCoordinator, HonEntity @@ -93,10 +93,10 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: - hon: HonConnection = hass.data[DOMAIN][entry.unique_id] + hon: Hon = hass.data[DOMAIN][entry.unique_id] coordinators = hass.data[DOMAIN]["coordinators"] appliances = [] - for device in hon.devices: + for device in hon.appliances: if device.mac_address in coordinators: coordinator = hass.data[DOMAIN]["coordinators"][device.mac_address] else: @@ -119,7 +119,7 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non class HonSwitchEntity(HonEntity, SwitchEntity): entity_description: HonSwitchEntityDescription - def __init__(self, hass, coordinator, entry, device: HonDevice, description: HonSwitchEntityDescription) -> None: + def __init__(self, hass, coordinator, entry, device: HonAppliance, description: HonSwitchEntityDescription) -> None: super().__init__(hass, entry, coordinator, device) self._coordinator = coordinator self._device = device -- 2.39.5 From 799ac67d9418c728957f7a3dfca10e3757bbc14d Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 10 Apr 2023 08:17:27 +0200 Subject: [PATCH 021/205] Use info.md for hacs --- README.md | 5 ++++- hacs.json | 1 - info.md | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 info.md diff --git a/README.md b/README.md index 72f0051..b806486 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,8 @@ Home Assistant integration for Haier hOn: support for Haier/Candy/Hoover home ap **Method 3:** Manually copy `hon` folder from [latest release](https://github.com/Andre0512/hon/releases/latest) to `config/custom_components` folder. +_Restart Home Assistant_ + ## Configuration **Method 1**: [![Open your Home Assistant instance and start setting up a new integration.](https://my.home-assistant.io/badges/config_flow_start.svg)](https://my.home-assistant.io/redirect/config_flow_start/?domain=hon) @@ -65,8 +67,9 @@ Any kind of contribution is welcome! 5. Create a [pull request](https://github.com/Andre0512/hon/pulls) #### Tips and Tricks -- If you want to have some states humanreadable, have a look at the `translation_key` parameter of the `EntityDescription` +- If you want to have some states humanreadable, have a look at the `translation_key` parameter of the `EntityDescription`. - If you need to implement some more logic, create a pull request to the underlying library. There we collect special requirements in the `appliances` directory. +- Use [pyhOn](https://github.com/Andre0512/pyhOn)s translate command to read out the official translations ## Tested Devices - Haier WD90-B14TEAM5 diff --git a/hacs.json b/hacs.json index af7dd29..85b5cbe 100644 --- a/hacs.json +++ b/hacs.json @@ -1,5 +1,4 @@ { "name": "Haier hOn", - "render_readme": true, "homeassistant": "2023.2.0" } diff --git a/info.md b/info.md new file mode 100644 index 0000000..6eb24b5 --- /dev/null +++ b/info.md @@ -0,0 +1,35 @@ +# Haier hOn +[![GitHub manifest version (path)](https://img.shields.io/github/manifest-json/v/andre0512/hon?color=g&filename=custom_components%2Fhon%2Fmanifest.json)](https://github.com/Andre0512/hon/releases/latest) +[![Home Assistant installs](https://img.shields.io/badge/dynamic/json?color=41BDF5&label=usage&suffix=%20installs&cacheSeconds=15600&url=https://analytics.home-assistant.io/custom_integrations.json&query=$.hon.total)](https://analytics.home-assistant.io/) +Support for home appliances of Haier's mobile app hOn. + +## Supported Appliances +- Tumble Dryer +- Washer Dryer +- Washing Machine +- Oven + +## Tested Appliances +- Haier WD90-B14TEAM5 +- Haier HD80-A3959 +- Haier HWO60SM2F3XH +- Hoover H-WASH 500 + + +## Configuration + +**Method 1**: [![Open your Home Assistant instance and start setting up a new integration.](https://my.home-assistant.io/badges/config_flow_start.svg)](https://my.home-assistant.io/redirect/config_flow_start/?domain=hon) + +**Method 2**: Settings > Devices & Services > Add Integration > **Haier hOn** +_If the integration is not in the list, you need to clear the browser cache._ + + +## Contribute +Want to help us to support more appliances? +Or add more sensors? +Or help with translating? +Or beautify some icons or captions? +Check out the [project on GitHub](https://github.com/Andre0512/hon), every contribution is welcome! + + + -- 2.39.5 From c8189414b8f89cb1418bdc86befdb395309e67fb Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 10 Apr 2023 17:02:16 +0200 Subject: [PATCH 022/205] Use pyhon v0.6.1 --- custom_components/hon/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 25950a3..7547617 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -6,7 +6,7 @@ "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn==0.6.0"], - "version": "0.5.0-beta.1" + "requirements": ["pyhOn==0.6.1"], + "version": "0.5.0-beta.2" } -- 2.39.5 From 4901be40505b19472b448a320336b40c7ebd06c2 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 10 Apr 2023 18:50:51 +0200 Subject: [PATCH 023/205] Update badges, bump version --- README.md | 7 ++++--- custom_components/hon/manifest.json | 4 ++-- info.md | 5 +++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index b806486..c95b542 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ # Haier hOn -[![hacs_badge](https://img.shields.io/badge/HACS-Default-41BDF5.svg)](https://github.com/hacs/integration) -[![GitHub manifest version (path)](https://img.shields.io/github/manifest-json/v/andre0512/hon?color=g&filename=custom_components%2Fhon%2Fmanifest.json)](https://github.com/Andre0512/hon/releases/latest) -[![Home Assistant installs](https://img.shields.io/badge/dynamic/json?color=41BDF5&label=usage&suffix=%20installs&cacheSeconds=15600&url=https://analytics.home-assistant.io/custom_integrations.json&query=$.hon.total)](https://analytics.home-assistant.io/) +[![hacs_badge](https://img.shields.io/badge/HACS-Default-41BDF5.svg)](https://hacs.xyz) +[![GitHub release (latest by date)](https://img.shields.io/github/v/release/Andre0512/hon?color=green)](https://github.com/Andre0512/hon/releases/latest) +![GitHub](https://img.shields.io/github/license/Andre0512/hon?color=red) +[![Home Assistant installs](https://img.shields.io/badge/dynamic/json?color=blue&label=usage&suffix=%20installs&cacheSeconds=15600&url=https://analytics.home-assistant.io/custom_integrations.json&query=$.hon.total)](https://analytics.home-assistant.io/) Home Assistant integration for Haier hOn: support for Haier/Candy/Hoover home appliances like washing machines. ## Supported Appliances - Tumble Dryer diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 7547617..608e685 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -6,7 +6,7 @@ "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn==0.6.1"], - "version": "0.5.0-beta.2" + "requirements": ["pyhOn==0.6.2"], + "version": "0.5.0-beta.3" } diff --git a/info.md b/info.md index 6eb24b5..1e75d39 100644 --- a/info.md +++ b/info.md @@ -1,6 +1,7 @@ # Haier hOn -[![GitHub manifest version (path)](https://img.shields.io/github/manifest-json/v/andre0512/hon?color=g&filename=custom_components%2Fhon%2Fmanifest.json)](https://github.com/Andre0512/hon/releases/latest) -[![Home Assistant installs](https://img.shields.io/badge/dynamic/json?color=41BDF5&label=usage&suffix=%20installs&cacheSeconds=15600&url=https://analytics.home-assistant.io/custom_integrations.json&query=$.hon.total)](https://analytics.home-assistant.io/) +[![GitHub release (latest by date)](https://img.shields.io/github/v/release/Andre0512/hon?color=green)](https://github.com/Andre0512/hon/releases/latest) +![GitHub](https://img.shields.io/github/license/Andre0512/hon?color=red) +[![Home Assistant installs](https://img.shields.io/badge/dynamic/json?color=blue&label=usage&suffix=%20installs&cacheSeconds=15600&url=https://analytics.home-assistant.io/custom_integrations.json&query=$.hon.total)](https://analytics.home-assistant.io/) Support for home appliances of Haier's mobile app hOn. ## Supported Appliances -- 2.39.5 From 907bc445336891de4ad816cb00bab6afad2106b2 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 10 Apr 2023 19:51:16 +0200 Subject: [PATCH 024/205] Reformat with black --- custom_components/hon/__init__.py | 4 ++- custom_components/hon/binary_sensor.py | 43 ++++++++++++++++-------- custom_components/hon/button.py | 8 +++-- custom_components/hon/config_flow.py | 8 +++-- custom_components/hon/hon.py | 11 ++++-- custom_components/hon/manifest.json | 1 - custom_components/hon/number.py | 29 ++++++++-------- custom_components/hon/select.py | 26 +++++++++------ custom_components/hon/sensor.py | 46 ++++++++++++-------------- custom_components/hon/switch.py | 42 ++++++++++++++++------- 10 files changed, 133 insertions(+), 85 deletions(-) diff --git a/custom_components/hon/__init__.py b/custom_components/hon/__init__.py index c404243..37010b3 100644 --- a/custom_components/hon/__init__.py +++ b/custom_components/hon/__init__.py @@ -28,7 +28,9 @@ CONFIG_SCHEMA = vol.Schema( async def async_setup_entry(hass: HomeAssistantType, entry: ConfigEntry): session = aiohttp_client.async_get_clientsession(hass) - hon = await Hon(entry.data["email"], entry.data["password"], session=session).create() + hon = await Hon( + entry.data["email"], entry.data["password"], session=session + ).create() hass.data.setdefault(DOMAIN, {}) hass.data[DOMAIN][entry.unique_id] = hon hass.data[DOMAIN]["coordinators"] = {} diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index e6bccf8..18f0f8b 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -3,8 +3,11 @@ from dataclasses import dataclass from pyhon import Hon -from homeassistant.components.binary_sensor import BinarySensorEntityDescription, BinarySensorDeviceClass, \ - BinarySensorEntity +from homeassistant.components.binary_sensor import ( + BinarySensorEntityDescription, + BinarySensorDeviceClass, + BinarySensorEntity, +) from homeassistant.config_entries import ConfigEntry from homeassistant.core import callback from .const import DOMAIN @@ -19,7 +22,9 @@ class HonBinarySensorEntityDescriptionMixin: @dataclass -class HonBinarySensorEntityDescription(HonBinarySensorEntityDescriptionMixin, BinarySensorEntityDescription): +class HonBinarySensorEntityDescription( + HonBinarySensorEntityDescriptionMixin, BinarySensorEntityDescription +): pass @@ -30,7 +35,7 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { name="Remote Control", device_class=BinarySensorDeviceClass.CONNECTIVITY, on_value="CONNECTED", - icon="mdi:remote" + icon="mdi:remote", ), HonBinarySensorEntityDescription( key="doorLockStatus", @@ -65,7 +70,7 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { name="Remote Control", device_class=BinarySensorDeviceClass.CONNECTIVITY, on_value="CONNECTED", - icon="mdi:remote" + icon="mdi:remote", ), HonBinarySensorEntityDescription( key="startProgram.prewash", @@ -102,21 +107,21 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { name="Online", device_class=BinarySensorDeviceClass.CONNECTIVITY, on_value="CONNECTED", - icon="mdi:wifi" + icon="mdi:wifi", ), HonBinarySensorEntityDescription( key="attributes.parameters.remoteCtrValid", name="On", device_class=BinarySensorDeviceClass.CONNECTIVITY, on_value="1", - icon="mdi:remote" + icon="mdi:remote", ), HonBinarySensorEntityDescription( key="attributes.parameters.onOffStatus", name="On", device_class=BinarySensorDeviceClass.RUNNING, on_value="1", - icon="mdi:power-cycle" + icon="mdi:power-cycle", ), ), } @@ -137,10 +142,16 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non if descriptions := BINARY_SENSORS.get(device.appliance_type): for description in descriptions: if not device.get(description.key): - _LOGGER.warning("[%s] Can't setup %s", device.appliance_type, description.key) + _LOGGER.warning( + "[%s] Can't setup %s", device.appliance_type, description.key + ) continue - appliances.extend([ - HonBinarySensorEntity(hass, coordinator, entry, device, description)] + appliances.extend( + [ + HonBinarySensorEntity( + hass, coordinator, entry, device, description + ) + ] ) async_add_entities(appliances) @@ -159,9 +170,15 @@ class HonBinarySensorEntity(HonEntity, BinarySensorEntity): @property def is_on(self) -> bool: - return self._device.get(self.entity_description.key, "") == self.entity_description.on_value + return ( + self._device.get(self.entity_description.key, "") + == self.entity_description.on_value + ) @callback def _handle_coordinator_update(self): - self._attr_native_value = self._device.get(self.entity_description.key, "") == self.entity_description.on_value + self._attr_native_value = ( + self._device.get(self.entity_description.key, "") + == self.entity_description.on_value + ) self.async_write_ha_state() diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index a2386b4..949747f 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -38,15 +38,17 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non for description in descriptions: if not device.commands.get(description.key): continue - appliances.extend([ - HonButtonEntity(hass, coordinator, entry, device, description)] + appliances.extend( + [HonButtonEntity(hass, coordinator, entry, device, description)] ) async_add_entities(appliances) class HonButtonEntity(HonEntity, ButtonEntity): - def __init__(self, hass, coordinator, entry, device: HonAppliance, description) -> None: + def __init__( + self, hass, coordinator, entry, device: HonAppliance, description + ) -> None: super().__init__(hass, entry, coordinator, device) self._coordinator = coordinator diff --git a/custom_components/hon/config_flow.py b/custom_components/hon/config_flow.py index e4ec404..442d109 100644 --- a/custom_components/hon/config_flow.py +++ b/custom_components/hon/config_flow.py @@ -20,8 +20,12 @@ class HonFlowHandler(config_entries.ConfigFlow, domain=DOMAIN): async def async_step_user(self, user_input=None): if user_input is None: - return self.async_show_form(step_id="user", data_schema=vol.Schema( - {vol.Required(CONF_EMAIL): str, vol.Required(CONF_PASSWORD): str})) + return self.async_show_form( + step_id="user", + data_schema=vol.Schema( + {vol.Required(CONF_EMAIL): str, vol.Required(CONF_PASSWORD): str} + ), + ) self._email = user_input[CONF_EMAIL] self._password = user_input[CONF_PASSWORD] diff --git a/custom_components/hon/hon.py b/custom_components/hon/hon.py index f68cf2b..6b197f9 100644 --- a/custom_components/hon/hon.py +++ b/custom_components/hon/hon.py @@ -29,7 +29,9 @@ class HonEntity(CoordinatorEntity): return DeviceInfo( identifiers={(DOMAIN, self._device.mac_address)}, manufacturer=self._device.get("brand", ""), - name=self._device.nick_name if self._device.nick_name else self._device.model_name, + name=self._device.nick_name + if self._device.nick_name + else self._device.model_name, model=self._device.model_name, sw_version=self._device.get("fwVersion", ""), ) @@ -38,7 +40,12 @@ class HonEntity(CoordinatorEntity): class HonCoordinator(DataUpdateCoordinator): def __init__(self, hass, device: HonAppliance): """Initialize my coordinator.""" - super().__init__(hass, _LOGGER, name=device.mac_address, update_interval=timedelta(seconds=30)) + super().__init__( + hass, + _LOGGER, + name=device.mac_address, + update_interval=timedelta(seconds=30), + ) self._device = device async def _async_update_data(self): diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 608e685..75966fb 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -9,4 +9,3 @@ "requirements": ["pyhOn==0.6.2"], "version": "0.5.0-beta.3" } - diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index c2f588c..ed69dbd 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -22,20 +22,20 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { name="Delay Time", icon="mdi:timer-plus", entity_category=EntityCategory.CONFIG, - native_unit_of_measurement=UnitOfTime.MINUTES + native_unit_of_measurement=UnitOfTime.MINUTES, ), NumberEntityDescription( key="startProgram.rinseIterations", name="Rinse Iterations", icon="mdi:rotate-right", - entity_category=EntityCategory.CONFIG + entity_category=EntityCategory.CONFIG, ), NumberEntityDescription( key="startProgram.mainWashTime", name="Main Wash Time", icon="mdi:clock-start", entity_category=EntityCategory.CONFIG, - native_unit_of_measurement=UnitOfTime.MINUTES + native_unit_of_measurement=UnitOfTime.MINUTES, ), ), "TD": ( @@ -44,34 +44,34 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { name="Delay time", icon="mdi:timer-plus", entity_category=EntityCategory.CONFIG, - native_unit_of_measurement=UnitOfTime.MINUTES + native_unit_of_measurement=UnitOfTime.MINUTES, ), NumberEntityDescription( key="startProgram.dryLevel", name="Dry level", entity_category=EntityCategory.CONFIG, icon="mdi:hair-dryer", - translation_key="tumbledryerdrylevel" + translation_key="tumbledryerdrylevel", ), NumberEntityDescription( key="startProgram.tempLevel", name="Temperature level", entity_category=EntityCategory.CONFIG, icon="mdi:thermometer", - translation_key="tumbledryertemplevel" + translation_key="tumbledryertemplevel", ), NumberEntityDescription( key="startProgram.antiCreaseTime", name="Anti-Crease time", entity_category=EntityCategory.CONFIG, icon="mdi:timer", - native_unit_of_measurement=UnitOfTime.MINUTES + native_unit_of_measurement=UnitOfTime.MINUTES, ), NumberEntityDescription( key="startProgram.sterilizationStatus", name="Sterilization status", icon="mdi:clock-start", - entity_category=EntityCategory.CONFIG + entity_category=EntityCategory.CONFIG, ), ), "WD": ( @@ -80,7 +80,7 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { name="Delay Time", icon="mdi:timer-plus", entity_category=EntityCategory.CONFIG, - native_unit_of_measurement=UnitOfTime.MINUTES + native_unit_of_measurement=UnitOfTime.MINUTES, ), ), "OV": ( @@ -89,22 +89,21 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { name="Delay time", icon="mdi:timer-plus", entity_category=EntityCategory.CONFIG, - native_unit_of_measurement=UnitOfTime.MINUTES + native_unit_of_measurement=UnitOfTime.MINUTES, ), NumberEntityDescription( key="startProgram.tempSel", name="Target Temperature", entity_category=EntityCategory.CONFIG, icon="mdi:thermometer", - native_unit_of_measurement=UnitOfTemperature.CELSIUS + native_unit_of_measurement=UnitOfTemperature.CELSIUS, ), - NumberEntityDescription( key="startProgram.prTime", name="Program Duration", entity_category=EntityCategory.CONFIG, icon="mdi:timelapse", - native_unit_of_measurement=UnitOfTime.MINUTES + native_unit_of_measurement=UnitOfTime.MINUTES, ), ), } @@ -126,8 +125,8 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non for description in descriptions: if not device.settings.get(description.key): continue - appliances.extend([ - HonNumberEntity(hass, coordinator, entry, device, description)] + appliances.extend( + [HonNumberEntity(hass, coordinator, entry, device, description)] ) async_add_entities(appliances) diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index ef8b010..fee762b 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -24,20 +24,20 @@ SELECTS = { name="Spin speed", entity_category=EntityCategory.CONFIG, icon="mdi:numeric", - unit_of_measurement=REVOLUTIONS_PER_MINUTE + unit_of_measurement=REVOLUTIONS_PER_MINUTE, ), SelectEntityDescription( key="startProgram.temp", name="Temperature", entity_category=EntityCategory.CONFIG, icon="mdi:thermometer", - unit_of_measurement=UnitOfTemperature.CELSIUS + unit_of_measurement=UnitOfTemperature.CELSIUS, ), SelectEntityDescription( key="startProgram.program", name="Program", entity_category=EntityCategory.CONFIG, - translation_key="programs" + translation_key="programs", ), ), "TD": ( @@ -45,14 +45,14 @@ SELECTS = { key="startProgram.program", name="Program", entity_category=EntityCategory.CONFIG, - translation_key="programs" + translation_key="programs", ), SelectEntityDescription( key="startProgram.dryTimeMM", name="Time", entity_category=EntityCategory.CONFIG, icon="mdi:timer", - unit_of_measurement=UnitOfTime.MINUTES + unit_of_measurement=UnitOfTime.MINUTES, ), ), "WD": ( @@ -60,7 +60,7 @@ SELECTS = { key="startProgram.program", name="Program", entity_category=EntityCategory.CONFIG, - translation_key="programs" + translation_key="programs", ), ), "OV": ( @@ -72,7 +72,7 @@ SELECTS = { SelectEntityDescription( key="startProgram.preheatStatus", name="Preheat", - entity_category=EntityCategory.CONFIG + entity_category=EntityCategory.CONFIG, ), ), } @@ -94,14 +94,16 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non for description in descriptions: if not device.settings.get(description.key): continue - appliances.extend([ - HonSelectEntity(hass, coordinator, entry, device, description)] + appliances.extend( + [HonSelectEntity(hass, coordinator, entry, device, description)] ) async_add_entities(appliances) class HonSelectEntity(HonEntity, SelectEntity): - def __init__(self, hass, coordinator, entry, device: HonAppliance, description) -> None: + def __init__( + self, hass, coordinator, entry, device: HonAppliance, description + ) -> None: super().__init__(hass, entry, coordinator, device) self._coordinator = coordinator @@ -128,7 +130,9 @@ class HonSelectEntity(HonEntity, SelectEntity): @callback def _handle_coordinator_update(self): setting = self._device.settings[self.entity_description.key] - if not isinstance(self._device.settings[self.entity_description.key], HonParameterFixed): + if not isinstance( + self._device.settings[self.entity_description.key], HonParameterFixed + ): self._attr_options: list[str] = setting.values else: self._attr_options = [setting.value] diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 1bff6ff..dfae684 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -16,7 +16,7 @@ from homeassistant.const import ( UnitOfMass, UnitOfPower, UnitOfTime, - UnitOfTemperature + UnitOfTemperature, ) from homeassistant.core import callback from homeassistant.helpers.entity import EntityCategory @@ -34,20 +34,20 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { name="Total Power", device_class=SensorDeviceClass.ENERGY, state_class=SensorStateClass.TOTAL_INCREASING, - native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR + native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, ), SensorEntityDescription( key="totalWaterUsed", name="Total Water", device_class=SensorDeviceClass.WATER, state_class=SensorStateClass.TOTAL_INCREASING, - native_unit_of_measurement=UnitOfVolume.LITERS + native_unit_of_measurement=UnitOfVolume.LITERS, ), SensorEntityDescription( key="totalWashCycle", name="Total Wash Cycle", state_class=SensorStateClass.TOTAL_INCREASING, - icon="mdi:counter" + icon="mdi:counter", ), SensorEntityDescription( key="currentElectricityUsed", @@ -55,13 +55,13 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { state_class=SensorStateClass.MEASUREMENT, device_class=SensorDeviceClass.POWER, native_unit_of_measurement=UnitOfPower.KILO_WATT, - icon="mdi:lightning-bolt" + icon="mdi:lightning-bolt", ), SensorEntityDescription( key="currentWaterUsed", name="Current Water Used", state_class=SensorStateClass.MEASUREMENT, - icon="mdi:water" + icon="mdi:water", ), SensorEntityDescription( key="startProgram.weight", @@ -69,19 +69,16 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { state_class=SensorStateClass.MEASUREMENT, entity_category=EntityCategory.CONFIG, native_unit_of_measurement=UnitOfMass.KILOGRAMS, - icon="mdi:weight-kilogram" + icon="mdi:weight-kilogram", ), SensorEntityDescription( key="machMode", name="Machine Status", icon="mdi:information", - translation_key="mode" + translation_key="mode", ), SensorEntityDescription( - key="errors", - name="Error", - icon="mdi:math-log", - translation_key="errors" + key="errors", name="Error", icon="mdi:math-log", translation_key="errors" ), SensorEntityDescription( key="remainingTimeMM", @@ -103,13 +100,10 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { key="machMode", name="Machine Status", icon="mdi:information", - translation_key="mode" + translation_key="mode", ), SensorEntityDescription( - key="errors", - name="Error", - icon="mdi:math-log", - translation_key="errors" + key="errors", name="Error", icon="mdi:math-log", translation_key="errors" ), SensorEntityDescription( key="remainingTimeMM", @@ -129,25 +123,25 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { key="prCode", name="Program", icon="mdi:tumble-dryer", - translation_key="tumbledryerprogram" + translation_key="tumbledryerprogram", ), SensorEntityDescription( key="prPhase", name="Program Phase", icon="mdi:tumble-dryer", - translation_key="tumbledryerprogramphase" + translation_key="tumbledryerprogramphase", ), SensorEntityDescription( key="dryLevel", name="Dry level", icon="mdi:hair-dryer", - translation_key="tumbledryerdrylevel" + translation_key="tumbledryerdrylevel", ), SensorEntityDescription( key="tempLevel", name="Temperature level", icon="mdi:thermometer", - translation_key="tumbledryertemplevel" + translation_key="tumbledryertemplevel", ), ), "WD": ( @@ -155,7 +149,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { key="machMode", name="Machine Status", icon="mdi:information", - translation_key="mode" + translation_key="mode", ), SensorEntityDescription( key="spinSpeed", @@ -245,10 +239,12 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non if descriptions := SENSORS.get(device.appliance_type): for description in descriptions: if not device.get(description.key): - _LOGGER.warning("[%s] Can't setup %s", device.appliance_type, description.key) + _LOGGER.warning( + "[%s] Can't setup %s", device.appliance_type, description.key + ) continue - appliances.extend([ - HonSensorEntity(hass, coordinator, entry, device, description)] + appliances.extend( + [HonSensorEntity(hass, coordinator, entry, device, description)] ) async_add_entities(appliances) diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index d37ceea..e30b662 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -22,9 +22,9 @@ class HonSwitchEntityDescriptionMixin: @dataclass -class HonSwitchEntityDescription(HonSwitchEntityDescriptionMixin, - SwitchEntityDescription - ): +class HonSwitchEntityDescription( + HonSwitchEntityDescriptionMixin, SwitchEntityDescription +): pass @@ -48,13 +48,13 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { key="startProgram.delayStatus", name="Delay Status", icon="mdi:timer-check", - entity_category=EntityCategory.CONFIG + entity_category=EntityCategory.CONFIG, ), HonSwitchEntityDescription( key="startProgram.haier_SoakPrewashSelection", name="Soak Prewash Selection", icon="mdi:tshirt-crew", - entity_category=EntityCategory.CONFIG + entity_category=EntityCategory.CONFIG, ), ), "TD": ( @@ -106,12 +106,17 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non if descriptions := SWITCHES.get(device.appliance_type): for description in descriptions: - if device.get(description.key) is not None or device.commands.get(description.key) is not None: - appliances.extend([ - HonSwitchEntity(hass, coordinator, entry, device, description)] + if ( + device.get(description.key) is not None + or device.commands.get(description.key) is not None + ): + appliances.extend( + [HonSwitchEntity(hass, coordinator, entry, device, description)] ) else: - _LOGGER.warning("[%s] Can't setup %s", device.appliance_type, description.key) + _LOGGER.warning( + "[%s] Can't setup %s", device.appliance_type, description.key + ) async_add_entities(appliances) @@ -119,7 +124,14 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non class HonSwitchEntity(HonEntity, SwitchEntity): entity_description: HonSwitchEntityDescription - def __init__(self, hass, coordinator, entry, device: HonAppliance, description: HonSwitchEntityDescription) -> None: + def __init__( + self, + hass, + coordinator, + entry, + device: HonAppliance, + description: HonSwitchEntityDescription, + ) -> None: super().__init__(hass, entry, coordinator, device) self._coordinator = coordinator self._device = device @@ -128,7 +140,9 @@ class HonSwitchEntity(HonEntity, SwitchEntity): def available(self) -> bool: if self.entity_category == EntityCategory.CONFIG: - return self._device.settings[self.entity_description.key].typology != "fixed" + return ( + self._device.settings[self.entity_description.key].typology != "fixed" + ) return True @property @@ -136,7 +150,11 @@ class HonSwitchEntity(HonEntity, SwitchEntity): """Return True if entity is on.""" if self.entity_category == EntityCategory.CONFIG: setting = self._device.settings[self.entity_description.key] - return setting.value == "1" or hasattr(setting, "min") and setting.value != setting.min + return ( + setting.value == "1" + or hasattr(setting, "min") + and setting.value != setting.min + ) return self._device.get(self.entity_description.key, False) async def async_turn_on(self, **kwargs: Any) -> None: -- 2.39.5 From 6303843116b43e85689ac2ec7a2fed959359f268 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 10 Apr 2023 19:55:25 +0200 Subject: [PATCH 025/205] Add python check action --- .github/workflows/python_check.yml | 38 ++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 .github/workflows/python_check.yml diff --git a/.github/workflows/python_check.yml b/.github/workflows/python_check.yml new file mode 100644 index 0000000..ca30c17 --- /dev/null +++ b/.github/workflows/python_check.yml @@ -0,0 +1,38 @@ +name: Python check + +on: + push: + branches: [ "main", "refactor" ] + pull_request: + branches: [ "main" ] + +jobs: + build: + + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: ["3.10", "3.11"] + + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v3 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install flake8 pylint black + - name: Lint with flake8 + run: | + # stop the build if there are Python syntax errors or undefined names + flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics + flake8 . --count --exit-zero --max-complexity=10 --max-line-length=88 --statistics + # - name: Analysing the code with pylint + # run: | + # pylint --max-line-length 88 $(git ls-files '*.py') + - name: Check black style + run: | + black . --check -- 2.39.5 From 4a685e67e08b1720510611c2c7d2d9efd7c92cd9 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 10 Apr 2023 20:35:22 +0200 Subject: [PATCH 026/205] Try to fix login issues #11 --- .github/workflows/python_check.yml | 2 +- custom_components/hon/manifest.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/python_check.yml b/.github/workflows/python_check.yml index ca30c17..c4b9fe5 100644 --- a/.github/workflows/python_check.yml +++ b/.github/workflows/python_check.yml @@ -2,7 +2,7 @@ name: Python check on: push: - branches: [ "main", "refactor" ] + branches: [ "main" ] pull_request: branches: [ "main" ] diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 75966fb..8bf4a76 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -6,6 +6,6 @@ "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn==0.6.2"], - "version": "0.5.0-beta.3" + "requirements": ["pyhOn==0.6.3"], + "version": "0.5.0-beta.4" } -- 2.39.5 From 92add01a59bab8f7266383beb1c211e0a831de0e Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Tue, 11 Apr 2023 01:03:54 +0200 Subject: [PATCH 027/205] Bump pyhon version --- README.md | 2 +- custom_components/hon/manifest.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c95b542..fcd4e5b 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ Any kind of contribution is welcome! #### Tips and Tricks - If you want to have some states humanreadable, have a look at the `translation_key` parameter of the `EntityDescription`. - If you need to implement some more logic, create a pull request to the underlying library. There we collect special requirements in the `appliances` directory. -- Use [pyhOn](https://github.com/Andre0512/pyhOn)s translate command to read out the official translations +- Use [pyhOn's translate command](https://github.com/Andre0512/pyhOn#translation) to read out the official translations ## Tested Devices - Haier WD90-B14TEAM5 diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 8bf4a76..79ee718 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -6,6 +6,6 @@ "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn==0.6.3"], - "version": "0.5.0-beta.4" + "requirements": ["pyhOn==0.6.4"], + "version": "0.5.0-beta.5" } -- 2.39.5 From 89d2fd4af17cf1add470ba2af1b6730791ac0220 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Tue, 11 Apr 2023 22:08:47 +0200 Subject: [PATCH 028/205] Read out device data via ui --- README.md | 25 +++++++++++++++++++++++-- custom_components/hon/button.py | 23 +++++++++++++++++++++++ info.md | 5 +---- 3 files changed, 47 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index fcd4e5b..6e310f8 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,7 @@ Home Assistant integration for Haier hOn: support for Haier/Candy/Hoover home ap - Washing Machine - Oven + ## Installation **Method 1:** [![Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?owner=Andre0512&repository=hon&category=integration) @@ -26,14 +27,34 @@ _Restart Home Assistant_ **Method 2**: Settings > Devices & Services > Add Integration > **Haier hOn** _If the integration is not in the list, you need to clear the browser cache._ + + ## Contribute Any kind of contribution is welcome! -#### Add appliances or additional attributes +### Read out device data +If you want to make a request for adding new appliances or additional attributes and don't want to use the command line, here is how you can read out your device data. +For every device exists a hidden button which can be used to log all info of your appliance. +1. Enable the "Log Device Info" button + _This button can be found in the diagnostic section of your device or in the entity overview if "show disabled entities" is enabled._ +2. Press the button +3. Go to Settings > System > Logs, click _load full logs_ and scroll down + _The formatting is messy if you not load full logs_ +4. Here you can find all data which can be read out via the api + ```yaml + data: + appliance: + applianceId: 12-34-56-78-90-ab#2022-10-25T19:47:11Z + applianceModelId: 1569 + ... + ``` +5. Copy this data and create a [new issue](https://github.com/Andre0512/hon/issues/new) with your request + +### Add appliances or additional attributes 1. Install [pyhOn](https://github.com/Andre0512/pyhOn) ```commandline $ pip install pyhOn ``` -2. Use the commandline tool to read out all appliance data from your account +2. Use the command line tool to read out all appliance data from your account ```commandline $ pyhOn User for hOn account: user.name@example.com diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index 949747f..15b32fc 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -1,11 +1,18 @@ +import logging +import urllib +from urllib.parse import quote + from homeassistant.components.button import ButtonEntityDescription, ButtonEntity from homeassistant.config_entries import ConfigEntry from pyhon import Hon from pyhon.appliance import HonAppliance +from homeassistant.const import EntityCategory from .const import DOMAIN from .hon import HonCoordinator, HonEntity +_LOGGER = logging.getLogger(__name__) + BUTTONS: dict[str, tuple[ButtonEntityDescription, ...]] = { "OV": ( ButtonEntityDescription( @@ -41,6 +48,7 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non appliances.extend( [HonButtonEntity(hass, coordinator, entry, device, description)] ) + appliances.extend([HonFeatureRequestButton(hass, coordinator, entry, device)]) async_add_entities(appliances) @@ -58,3 +66,18 @@ class HonButtonEntity(HonEntity, ButtonEntity): async def async_press(self) -> None: await self._device.commands[self.entity_description.key].send() + + +class HonFeatureRequestButton(HonEntity, ButtonEntity): + def __init__(self, hass, coordinator, entry, device: HonAppliance) -> None: + super().__init__(hass, entry, coordinator, device) + + self._device = device + self._attr_unique_id = f"{super().unique_id}_log_device_info" + self._attr_icon = "mdi:information" + self._attr_name = "Log Device Info" + self._attr_entity_category = EntityCategory.DIAGNOSTIC + self._attr_entity_registry_enabled_default = False + + async def async_press(self) -> None: + _LOGGER.error("Device Info:\n" + self._device.diagnose) diff --git a/info.md b/info.md index 1e75d39..bcd2a5a 100644 --- a/info.md +++ b/info.md @@ -26,10 +26,7 @@ _If the integration is not in the list, you need to clear the browser cache._ ## Contribute -Want to help us to support more appliances? -Or add more sensors? -Or help with translating? -Or beautify some icons or captions? +Want to help us to support more appliances? Or add more sensors? Or help with translating? Or beautify some icons or captions? Check out the [project on GitHub](https://github.com/Andre0512/hon), every contribution is welcome! -- 2.39.5 From 6de6ff375cddd19c6fa18bbc242d47a25d340324 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Wed, 12 Apr 2023 01:13:34 +0200 Subject: [PATCH 029/205] Bump version to v0.5.0 --- custom_components/hon/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 79ee718..be91c82 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -6,6 +6,6 @@ "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn==0.6.4"], - "version": "0.5.0-beta.5" + "requirements": ["pyhOn==0.7.2"], + "version": "0.5.0" } -- 2.39.5 From 365a3af171f45ec3dfde48b5e44feec1a36f1c6e Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Wed, 12 Apr 2023 19:28:04 +0200 Subject: [PATCH 030/205] Clean up sessions correct, fixes #19 --- custom_components/hon/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index be91c82..b9ad12b 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -6,6 +6,6 @@ "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn==0.7.2"], - "version": "0.5.0" + "requirements": ["pyhOn==0.7.3"], + "version": "0.5.1-beta.1" } -- 2.39.5 From 9a6e1155f95548b03d1d065edb2c38e5f12cd04e Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Wed, 12 Apr 2023 23:58:10 +0200 Subject: [PATCH 031/205] Add useful links --- info.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/info.md b/info.md index bcd2a5a..82b7256 100644 --- a/info.md +++ b/info.md @@ -29,5 +29,11 @@ _If the integration is not in the list, you need to clear the browser cache._ Want to help us to support more appliances? Or add more sensors? Or help with translating? Or beautify some icons or captions? Check out the [project on GitHub](https://github.com/Andre0512/hon), every contribution is welcome! +## Useful Links +* [GitHub repository](https://github.com/Andre0512/hon) (please add a star if you like this integration!) +* [pyhOn library](https://github.com/Andre0512/pyhOn) +* [Release notes](https://github.com/Andre0512/hon/releases) +* [Discussion and help](https://github.com/Andre0512/hon/discussions) +* [Issues](https://github.com/Andre0512/hon/issues) -- 2.39.5 From 593842144a437d08f7bb0a0224a0f749570900cc Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Wed, 12 Apr 2023 23:59:09 +0200 Subject: [PATCH 032/205] Add zip release for download count --- .github/workflows/release.yml | 25 +++++++++++++++++++++++++ hacs.json | 4 +++- 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..584696c --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,25 @@ +name: Release + +on: + release: + types: [published] + +jobs: + release-zip: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: ZIP Component Dir + run: | + cd ${{ github.workspace }}/custom_components/hon + zip -r haier_hon.zip ./ + + - name: Upload zip to release + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: ${{ github.workspace }}/custom_components/hon/haier_hon.zip + asset_name: haier_hon.zip + tag: ${{ github.ref }} + overwrite: true \ No newline at end of file diff --git a/hacs.json b/hacs.json index 85b5cbe..c9f8fc1 100644 --- a/hacs.json +++ b/hacs.json @@ -1,4 +1,6 @@ { "name": "Haier hOn", - "homeassistant": "2023.2.0" + "homeassistant": "2023.2.0", + "zip_release": true, + "filename": "haier_hon.zip" } -- 2.39.5 From b0cd02094105ec3312da3f256d3c28cff9180001 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sat, 15 Apr 2023 00:32:47 +0200 Subject: [PATCH 033/205] Bump versions --- custom_components/hon/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index b9ad12b..c4dcaaa 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -6,6 +6,6 @@ "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn==0.7.3"], - "version": "0.5.1-beta.1" + "requirements": ["pyhOn==0.7.4"], + "version": "0.5.1" } -- 2.39.5 From 83c5e3479e6ae632d02d4252382d72d18a564c69 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sat, 15 Apr 2023 04:27:40 +0200 Subject: [PATCH 034/205] Add hob support #22 --- README.md | 2 +- custom_components/hon/binary_sensor.py | 39 +++++++++++++- custom_components/hon/button.py | 9 +++- custom_components/hon/manifest.json | 4 +- custom_components/hon/number.py | 14 +++++ custom_components/hon/select.py | 9 ++++ custom_components/hon/sensor.py | 16 ++++++ custom_components/hon/translations/en.json | 59 +++++++++++++++++++++- info.md | 1 + 9 files changed, 146 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 6e310f8..858567f 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Home Assistant integration for Haier hOn: support for Haier/Candy/Hoover home ap - Washer Dryer - Washing Machine - Oven - +- Hob ## Installation **Method 1:** [![Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?owner=Andre0512&repository=hon&category=integration) diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index 18f0f8b..4579c3d 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -104,14 +104,14 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { "OV": ( HonBinarySensorEntityDescription( key="attributes.lastConnEvent.category", - name="Online", + name="Connection", device_class=BinarySensorDeviceClass.CONNECTIVITY, on_value="CONNECTED", icon="mdi:wifi", ), HonBinarySensorEntityDescription( key="attributes.parameters.remoteCtrValid", - name="On", + name="Remote Control", device_class=BinarySensorDeviceClass.CONNECTIVITY, on_value="1", icon="mdi:remote", @@ -124,6 +124,41 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { icon="mdi:power-cycle", ), ), + "IV": ( + HonBinarySensorEntityDescription( + key="attributes.lastConnEvent.category", + name="Connection", + device_class=BinarySensorDeviceClass.CONNECTIVITY, + on_value="CONNECTED", + icon="mdi:wifi", + ), + HonBinarySensorEntityDescription( + key="attributes.parameters.remoteCtrValid", + name="Remote Control", + device_class=BinarySensorDeviceClass.CONNECTIVITY, + on_value="1", + icon="mdi:remote", + ), + HonBinarySensorEntityDescription( + key="attributes.parameters.onOffStatus", + name="On", + device_class=BinarySensorDeviceClass.RUNNING, + on_value="1", + icon="mdi:power-cycle", + ), + HonBinarySensorEntityDescription( + key="hotStatus", + name="Hot Status", + device_class=BinarySensorDeviceClass.HEAT, + on_value="1", + ), + HonBinarySensorEntityDescription( + key="hobLockStatus", + name="Hob Lock", + device_class=BinarySensorDeviceClass.LOCK, + on_value="0", + ), + ), } diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index 15b32fc..f4cf6a1 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -25,7 +25,14 @@ BUTTONS: dict[str, tuple[ButtonEntityDescription, ...]] = { name="Stop Program", icon="mdi:power-off", ), - ) + ), + "IV": ( + ButtonEntityDescription( + key="startProgram", + name="Start Program", + icon="mdi:pot-steam", + ), + ), } diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index c4dcaaa..4ffbf4d 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -6,6 +6,6 @@ "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn==0.7.4"], - "version": "0.5.1" + "requirements": ["pyhOn==0.8.0b2"], + "version": "0.6.0-beta.1" } diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index ed69dbd..f95bedf 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -106,6 +106,20 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { native_unit_of_measurement=UnitOfTime.MINUTES, ), ), + "IV": ( + NumberEntityDescription( + key="startProgram.temp", + name="Temperature", + entity_category=EntityCategory.CONFIG, + icon="mdi:thermometer", + ), + NumberEntityDescription( + key="startProgram.powerManagement", + name="Power Management", + entity_category=EntityCategory.CONFIG, + icon="mdi:timelapse", + ), + ), } diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index fee762b..08a4200 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -68,6 +68,7 @@ SELECTS = { key="startProgram.program", name="Program", entity_category=EntityCategory.CONFIG, + translation_key="programs", ), SelectEntityDescription( key="startProgram.preheatStatus", @@ -75,6 +76,14 @@ SELECTS = { entity_category=EntityCategory.CONFIG, ), ), + "IV": ( + SelectEntityDescription( + key="startProgram.program", + name="Program", + entity_category=EntityCategory.CONFIG, + translation_key="programs", + ), + ), } diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index dfae684..4511e0d 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -221,6 +221,22 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:thermometer", ), ), + "IV": ( + SensorEntityDescription( + key="remainingTimeMM", + name="Remaining Time", + icon="mdi:timer", + native_unit_of_measurement=UnitOfTime.MINUTES, + ), + SensorEntityDescription( + key="temp", + name="Temperature", + icon="mdi:thermometer", + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + ), + SensorEntityDescription(key="errors", name="Error", icon="mdi:math-log"), + ), } diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index f0a21a0..cafd100 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -402,7 +402,64 @@ "wool": "Wool", "wool_and_delicates_49": "Wool and Delicates 49'", "wool_dry": "Wool Dry", - "wool_soft_care": "Wool and Soft Car" + "wool_soft_care": "Wool and Soft Car", + "bakery": "Pasta and Pastries", + "bakery_steam": "Steam-baked bread", + "bottom_heating": "Bottom Heating", + "bottom_heating_fan": "Bottom Heating + Fan", + "bread": "Bread", + "bread_steam": "Steam-baked pastries", + "combi": "Combi", + "convection_fan": "Convection + Fan", + "convection_fan_turnspit": "Convection + Fan + Turnspit", + "conventional": "Conventional", + "conventional_turnspit": "Convection + Turnspit", + "defrost": "Defrost", + "descaling": "Descaling", + "fish": "Fish", + "fish_steam": "Steam-cooked fish", + "grill_cata": "Grill", + "grill_fan_cata": "Grill fan", + "grill_fan_pyro": "Grill + Fan", + "grill_pyro": "Grill", + "h20_clean": "H2O-Clean", + "iot_bread": "Bread", + "iot_h20_clean": "h2O clean", + "leavening": "Leavening", + "light_fan": "Light Fan", + "low_temp_cooking": "Low Temperature Cooking", + "low_temp_cooking_fish": "Low Temperature Cooking - Fish", + "low_temp_cooking_fish_steam": "Low Temperature Steam Cooking - Fish", + "low_temp_cooking_meat": "Low Temperature Cooking - Meat", + "low_temp_cooking_meat_steam": "Low Temperature Steam Cooking - Meat", + "low_temp_cooking_steam": "Low Temperature Steam Cooking", + "meat": "Meat", + "meat_steam": "Steam-cooked meat", + "multi_level": "Multi-Level", + "paella": "Paella", + "pasta_and_bakery": "Pasta and Bakery", + "pizza": "Pizza", + "pyrolysis": "Pyrolysis", + "pyrolysis_plus": "Pyrolysis +", + "red_meat": "Red Meat", + "red_meat_steam": "Steam-cooked red meat", + "regenerate": "Regeneration", + "soft_plus": "Soft+", + "super_grill": "Super Grill", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Vegetables", + "vegetables_cata": "Vegetables", + "vegetables_pyro": "Vegetables", + "water_discharge": "Water Drain", + "white_meat": "White Meat", + "white_meat_steam": "Steam-cooked white meat", + "iot_standard_boiling": "Boiling", + "iot_standard_frying": "Frying", + "iot_standard_keep_warm": "Keep Warm", + "iot_standard_melting": "Melting", + "iot_standard_simmering": "Simmering" } } } diff --git a/info.md b/info.md index 82b7256..a35b040 100644 --- a/info.md +++ b/info.md @@ -9,6 +9,7 @@ Support for home appliances of Haier's mobile app hOn. - Washer Dryer - Washing Machine - Oven +- Hob ## Tested Appliances - Haier WD90-B14TEAM5 -- 2.39.5 From d91b3edb40cf7615b1769cfe0ea7ae852fa6ebdb Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sat, 15 Apr 2023 22:03:50 +0200 Subject: [PATCH 035/205] Use unique_id instead of mac address for #22 --- custom_components/hon/binary_sensor.py | 6 +++--- custom_components/hon/button.py | 6 +++--- custom_components/hon/hon.py | 6 +++--- custom_components/hon/manifest.json | 4 ++-- custom_components/hon/number.py | 6 +++--- custom_components/hon/select.py | 6 +++--- custom_components/hon/sensor.py | 6 +++--- custom_components/hon/switch.py | 6 +++--- 8 files changed, 23 insertions(+), 23 deletions(-) diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index 4579c3d..6e3e030 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -167,11 +167,11 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non coordinators = hass.data[DOMAIN]["coordinators"] appliances = [] for device in hon.appliances: - if device.mac_address in coordinators: - coordinator = hass.data[DOMAIN]["coordinators"][device.mac_address] + if device.unique_id in coordinators: + coordinator = hass.data[DOMAIN]["coordinators"][device.unique_id] else: coordinator = HonCoordinator(hass, device) - hass.data[DOMAIN]["coordinators"][device.mac_address] = coordinator + hass.data[DOMAIN]["coordinators"][device.unique_id] = coordinator await coordinator.async_config_entry_first_refresh() if descriptions := BINARY_SENSORS.get(device.appliance_type): diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index f4cf6a1..d932bc8 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -41,11 +41,11 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non coordinators = hass.data[DOMAIN]["coordinators"] appliances = [] for device in hon.appliances: - if device.mac_address in coordinators: - coordinator = hass.data[DOMAIN]["coordinators"][device.mac_address] + if device.unique_id in coordinators: + coordinator = hass.data[DOMAIN]["coordinators"][device.unique_id] else: coordinator = HonCoordinator(hass, device) - hass.data[DOMAIN]["coordinators"][device.mac_address] = coordinator + hass.data[DOMAIN]["coordinators"][device.unique_id] = coordinator await coordinator.async_config_entry_first_refresh() if descriptions := BUTTONS.get(device.appliance_type): diff --git a/custom_components/hon/hon.py b/custom_components/hon/hon.py index 6b197f9..f55f761 100644 --- a/custom_components/hon/hon.py +++ b/custom_components/hon/hon.py @@ -22,12 +22,12 @@ class HonEntity(CoordinatorEntity): self._hass = hass self._device = device - self._attr_unique_id = self._device.mac_address + self._attr_unique_id = self._device.unique_id @property def device_info(self): return DeviceInfo( - identifiers={(DOMAIN, self._device.mac_address)}, + identifiers={(DOMAIN, self._device.unique_id)}, manufacturer=self._device.get("brand", ""), name=self._device.nick_name if self._device.nick_name @@ -43,7 +43,7 @@ class HonCoordinator(DataUpdateCoordinator): super().__init__( hass, _LOGGER, - name=device.mac_address, + name=device.unique_id, update_interval=timedelta(seconds=30), ) self._device = device diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 4ffbf4d..2ca4fe7 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -6,6 +6,6 @@ "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn==0.8.0b2"], - "version": "0.6.0-beta.1" + "requirements": ["pyhOn==0.8.0b3"], + "version": "0.6.0-beta.2" } diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index f95bedf..468d5dd 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -128,11 +128,11 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non coordinators = hass.data[DOMAIN]["coordinators"] appliances = [] for device in hon.appliances: - if device.mac_address in coordinators: - coordinator = hass.data[DOMAIN]["coordinators"][device.mac_address] + if device.unique_id in coordinators: + coordinator = hass.data[DOMAIN]["coordinators"][device.unique_id] else: coordinator = HonCoordinator(hass, device) - hass.data[DOMAIN]["coordinators"][device.mac_address] = coordinator + hass.data[DOMAIN]["coordinators"][device.unique_id] = coordinator await coordinator.async_config_entry_first_refresh() if descriptions := NUMBERS.get(device.appliance_type): diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index 08a4200..257240a 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -92,11 +92,11 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non coordinators = hass.data[DOMAIN]["coordinators"] appliances = [] for device in hon.appliances: - if device.mac_address in coordinators: - coordinator = hass.data[DOMAIN]["coordinators"][device.mac_address] + if device.unique_id in coordinators: + coordinator = hass.data[DOMAIN]["coordinators"][device.unique_id] else: coordinator = HonCoordinator(hass, device) - hass.data[DOMAIN]["coordinators"][device.mac_address] = coordinator + hass.data[DOMAIN]["coordinators"][device.unique_id] = coordinator await coordinator.async_config_entry_first_refresh() if descriptions := SELECTS.get(device.appliance_type): diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 4511e0d..afa25ff 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -245,11 +245,11 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non coordinators = hass.data[DOMAIN]["coordinators"] appliances = [] for device in hon.appliances: - if device.mac_address in coordinators: - coordinator = hass.data[DOMAIN]["coordinators"][device.mac_address] + if device.unique_id in coordinators: + coordinator = hass.data[DOMAIN]["coordinators"][device.unique_id] else: coordinator = HonCoordinator(hass, device) - hass.data[DOMAIN]["coordinators"][device.mac_address] = coordinator + hass.data[DOMAIN]["coordinators"][device.unique_id] = coordinator await coordinator.async_config_entry_first_refresh() if descriptions := SENSORS.get(device.appliance_type): diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index e30b662..1d30b9d 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -97,11 +97,11 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non coordinators = hass.data[DOMAIN]["coordinators"] appliances = [] for device in hon.appliances: - if device.mac_address in coordinators: - coordinator = hass.data[DOMAIN]["coordinators"][device.mac_address] + if device.unique_id in coordinators: + coordinator = hass.data[DOMAIN]["coordinators"][device.unique_id] else: coordinator = HonCoordinator(hass, device) - hass.data[DOMAIN]["coordinators"][device.mac_address] = coordinator + hass.data[DOMAIN]["coordinators"][device.unique_id] = coordinator await coordinator.async_config_entry_first_refresh() if descriptions := SWITCHES.get(device.appliance_type): -- 2.39.5 From e2f7f15a5f8c9ce6f15afc9a16cdf5bd529b2847 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sat, 15 Apr 2023 22:28:01 +0200 Subject: [PATCH 036/205] Bump pyhon for #22 --- custom_components/hon/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 2ca4fe7..ab245fc 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -6,6 +6,6 @@ "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn==0.8.0b3"], - "version": "0.6.0-beta.2" + "requirements": ["pyhOn==0.8.0b4"], + "version": "0.6.0-beta.3" } -- 2.39.5 From 2aa1d3df01968cf2498a9daf6d36157207daddb7 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sun, 16 Apr 2023 13:55:08 +0200 Subject: [PATCH 037/205] Correct name for IH #22 --- custom_components/hon/binary_sensor.py | 2 +- custom_components/hon/button.py | 2 +- custom_components/hon/manifest.json | 4 ++-- custom_components/hon/number.py | 4 ++-- custom_components/hon/select.py | 4 ++-- custom_components/hon/sensor.py | 2 +- custom_components/hon/switch.py | 1 + 7 files changed, 10 insertions(+), 9 deletions(-) diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index 6e3e030..b119722 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -124,7 +124,7 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { icon="mdi:power-cycle", ), ), - "IV": ( + "IH": ( HonBinarySensorEntityDescription( key="attributes.lastConnEvent.category", name="Connection", diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index d932bc8..eb5def2 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -26,7 +26,7 @@ BUTTONS: dict[str, tuple[ButtonEntityDescription, ...]] = { icon="mdi:power-off", ), ), - "IV": ( + "IH": ( ButtonEntityDescription( key="startProgram", name="Start Program", diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index ab245fc..1d1aba5 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -6,6 +6,6 @@ "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn==0.8.0b4"], - "version": "0.6.0-beta.3" + "requirements": ["pyhOn==0.8.0b5"], + "version": "0.6.0-beta.4" } diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index 468d5dd..67f8045 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -1,7 +1,7 @@ from __future__ import annotations from pyhon import Hon -from pyhon.parameter import HonParameterRange +from pyhon.parameter.range import HonParameterRange from homeassistant.components.number import ( NumberEntity, @@ -106,7 +106,7 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { native_unit_of_measurement=UnitOfTime.MINUTES, ), ), - "IV": ( + "IH": ( NumberEntityDescription( key="startProgram.temp", name="Temperature", diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index 257240a..cb3e640 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -4,7 +4,7 @@ import logging from pyhon import Hon from pyhon.appliance import HonAppliance -from pyhon.parameter import HonParameterFixed +from pyhon.parameter.fixed import HonParameterFixed from homeassistant.components.select import SelectEntity, SelectEntityDescription from homeassistant.config_entries import ConfigEntry @@ -76,7 +76,7 @@ SELECTS = { entity_category=EntityCategory.CONFIG, ), ), - "IV": ( + "IH": ( SelectEntityDescription( key="startProgram.program", name="Program", diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index afa25ff..729ba93 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -221,7 +221,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:thermometer", ), ), - "IV": ( + "IH": ( SensorEntityDescription( key="remainingTimeMM", name="Remaining Time", diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 1d30b9d..b2dcc0b 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -8,6 +8,7 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.const import EntityCategory from pyhon import Hon from pyhon.appliance import HonAppliance +from pyhon.parameter.range import HonParameterRange from .const import DOMAIN from .hon import HonCoordinator, HonEntity -- 2.39.5 From 7d3813b8fdf686e3d1a804988833ffad66953bd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20=C3=81ngel?= Date: Sun, 16 Apr 2023 16:59:37 +0200 Subject: [PATCH 038/205] Update oven --- custom_components/hon/button.py | 12 ------------ custom_components/hon/manifest.json | 2 +- custom_components/hon/number.py | 2 +- custom_components/hon/select.py | 7 +------ custom_components/hon/switch.py | 11 +++++++++++ 5 files changed, 14 insertions(+), 20 deletions(-) diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index d932bc8..49f2a01 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -14,18 +14,6 @@ from .hon import HonCoordinator, HonEntity _LOGGER = logging.getLogger(__name__) BUTTONS: dict[str, tuple[ButtonEntityDescription, ...]] = { - "OV": ( - ButtonEntityDescription( - key="startProgram", - name="Start Program", - icon="mdi:power-cycle", - ), - ButtonEntityDescription( - key="stopProgram", - name="Stop Program", - icon="mdi:power-off", - ), - ), "IV": ( ButtonEntityDescription( key="startProgram", diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index ab245fc..775dbf3 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -6,6 +6,6 @@ "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn==0.8.0b4"], + "requirements": ["pyhOn"], "version": "0.6.0-beta.3" } diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index 468d5dd..9efa280 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -1,7 +1,7 @@ from __future__ import annotations from pyhon import Hon -from pyhon.parameter import HonParameterRange +from pyhon.parameter.range import HonParameterRange from homeassistant.components.number import ( NumberEntity, diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index 257240a..19d2142 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -4,7 +4,7 @@ import logging from pyhon import Hon from pyhon.appliance import HonAppliance -from pyhon.parameter import HonParameterFixed +from pyhon.parameter.fixed import HonParameterFixed from homeassistant.components.select import SelectEntity, SelectEntityDescription from homeassistant.config_entries import ConfigEntry @@ -70,11 +70,6 @@ SELECTS = { entity_category=EntityCategory.CONFIG, translation_key="programs", ), - SelectEntityDescription( - key="startProgram.preheatStatus", - name="Preheat", - entity_category=EntityCategory.CONFIG, - ), ), "IV": ( SelectEntityDescription( diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 1d30b9d..c66298f 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -73,6 +73,17 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { turn_off_key="resumeProgram", ), ), + + "OV": ( + HonSwitchEntityDescription( + key="active", + name="Oven", + icon="mdi:toaster-oven", + turn_on_key="startProgram", + turn_off_key="stopProgram", + ), + ), + "WD": ( HonSwitchEntityDescription( key="active", -- 2.39.5 From 5f9dbef4fc74e99fe04a733bbd6a07e8ba200fd1 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sun, 16 Apr 2023 21:46:17 +0200 Subject: [PATCH 039/205] Add dishwasher #21 --- README.md | 3 +- custom_components/hon/binary_sensor.py | 28 +++++ custom_components/hon/manifest.json | 2 +- custom_components/hon/number.py | 15 +++ custom_components/hon/select.py | 8 ++ custom_components/hon/sensor.py | 64 ++++++++++++ custom_components/hon/switch.py | 61 +++++++++-- custom_components/hon/translations/en.json | 116 +++++++++++++++++++++ 8 files changed, 285 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 858567f..5b19aee 100644 --- a/README.md +++ b/README.md @@ -5,11 +5,12 @@ [![Home Assistant installs](https://img.shields.io/badge/dynamic/json?color=blue&label=usage&suffix=%20installs&cacheSeconds=15600&url=https://analytics.home-assistant.io/custom_integrations.json&query=$.hon.total)](https://analytics.home-assistant.io/) Home Assistant integration for Haier hOn: support for Haier/Candy/Hoover home appliances like washing machines. ## Supported Appliances +- Washing Machine - Tumble Dryer - Washer Dryer -- Washing Machine - Oven - Hob +- Dish Washer ## Installation **Method 1:** [![Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?owner=Andre0512&repository=hon&category=integration) diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index b119722..9b3202c 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -159,6 +159,34 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { on_value="0", ), ), + "DW": ( + HonBinarySensorEntityDescription( + key="saltStatus", + name="Salt", + device_class=BinarySensorDeviceClass.PROBLEM, + on_value="1", + icon="mdi:shaker-outline", + ), + HonBinarySensorEntityDescription( + key="rinseAidStatus", + name="Rinse Aid", + device_class=BinarySensorDeviceClass.PROBLEM, + on_value="1", + icon="mdi:spray-bottle", + ), + HonBinarySensorEntityDescription( + key="attributes.lastConnEvent.category", + name="Connection", + device_class=BinarySensorDeviceClass.CONNECTIVITY, + on_value="CONNECTED", + ), + HonBinarySensorEntityDescription( + key="doorStatus", + name="Door", + device_class=BinarySensorDeviceClass.DOOR, + on_value="1", + ), + ), } diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 1d1aba5..8ad79ae 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -7,5 +7,5 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": ["pyhOn==0.8.0b5"], - "version": "0.6.0-beta.4" + "version": "0.6.0-beta.5" } diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index 67f8045..1e5e4fc 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -120,6 +120,21 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { icon="mdi:timelapse", ), ), + "DW": ( + NumberEntityDescription( + key="startProgram.delayTime", + name="Delay time", + icon="mdi:timer-plus", + entity_category=EntityCategory.CONFIG, + native_unit_of_measurement=UnitOfTime.MINUTES, + ), + NumberEntityDescription( + key="startProgram.waterHard", + name="Water hard", + icon="mdi:water", + entity_category=EntityCategory.CONFIG, + ), + ), } diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index cb3e640..cd9849d 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -84,6 +84,14 @@ SELECTS = { translation_key="programs", ), ), + "DW": ( + SelectEntityDescription( + key="startProgram.program", + name="Program", + entity_category=EntityCategory.CONFIG, + translation_key="programs_dw", + ), + ), } diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 729ba93..d90b24d 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -21,6 +21,7 @@ from homeassistant.const import ( from homeassistant.core import callback from homeassistant.helpers.entity import EntityCategory from homeassistant.helpers.typing import StateType +from homeassistant.const import PERCENTAGE from .const import DOMAIN from .hon import HonCoordinator, HonEntity @@ -237,6 +238,69 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { ), SensorEntityDescription(key="errors", name="Error", icon="mdi:math-log"), ), + "DW": ( + SensorEntityDescription( + key="startProgram.ecoIndex", + name="Eco Index", + icon="mdi:sprout", + state_class=SensorStateClass.MEASUREMENT, + entity_category=EntityCategory.CONFIG, + ), + SensorEntityDescription( + key="startProgram.waterEfficiency", + name="Water Efficiency", + icon="mdi:water", + state_class=SensorStateClass.MEASUREMENT, + entity_category=EntityCategory.CONFIG, + ), + SensorEntityDescription( + key="startProgram.waterSaving", + name="Water Saving", + icon="mdi:water-percent", + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=PERCENTAGE, + entity_category=EntityCategory.CONFIG, + ), + SensorEntityDescription( + key="startProgram.temp", + name="Temperature", + icon="mdi:thermometer", + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + entity_category=EntityCategory.CONFIG, + ), + SensorEntityDescription( + key="startProgram.energyLabel", + name="Energy Label", + icon="mdi:lightning-bolt-circle", + state_class=SensorStateClass.MEASUREMENT, + entity_category=EntityCategory.CONFIG, + ), + SensorEntityDescription( + key="startProgram.remainingTime", + name="Time", + icon="mdi:timer", + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=UnitOfTime.MINUTES, + entity_category=EntityCategory.CONFIG, + ), + SensorEntityDescription( + key="machMode", + name="Machine Status", + icon="mdi:information", + translation_key="mode_dw", + ), + SensorEntityDescription( + key="errors", name="Error", icon="mdi:math-log", translation_key="errors" + ), + SensorEntityDescription( + key="remainingTimeMM", + name="Remaining Time", + icon="mdi:timer", + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=UnitOfTime.MINUTES, + ), + ), } diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index b2dcc0b..08ab8ea 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -1,5 +1,4 @@ import logging - from dataclasses import dataclass from typing import Any @@ -90,6 +89,51 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { turn_off_key="resumeProgram", ), ), + "DW": ( + HonSwitchEntityDescription( + key="active", + name="Dish Washer", + icon="mdi:dishwasher", + turn_on_key="startProgram", + turn_off_key="stopProgram", + ), + HonSwitchEntityDescription( + key="startProgram.extraDry", + name="Extra Dry", + icon="mdi:hair-dryer", + entity_category=EntityCategory.CONFIG, + ), + HonSwitchEntityDescription( + key="startProgram.halfLoad", + name="Half Load", + icon="mdi:fraction-one-half", + entity_category=EntityCategory.CONFIG, + ), + HonSwitchEntityDescription( + key="startProgram.openDoor", + name="Open Door", + icon="mdi:door-open", + entity_category=EntityCategory.CONFIG, + ), + HonSwitchEntityDescription( + key="startProgram.threeInOne", + name="Three in One", + icon="mdi:numeric-3-box-outline", + entity_category=EntityCategory.CONFIG, + ), + HonSwitchEntityDescription( + key="startProgram.ecoExpress", + name="Eco Express", + icon="mdi:sprout", + entity_category=EntityCategory.CONFIG, + ), + HonSwitchEntityDescription( + key="startProgram.addDish", + name="Add Dish", + icon="mdi:silverware-fork-knife", + entity_category=EntityCategory.CONFIG, + ), + ), } @@ -139,13 +183,6 @@ class HonSwitchEntity(HonEntity, SwitchEntity): self.entity_description = description self._attr_unique_id = f"{super().unique_id}{description.key}" - def available(self) -> bool: - if self.entity_category == EntityCategory.CONFIG: - return ( - self._device.settings[self.entity_description.key].typology != "fixed" - ) - return True - @property def is_on(self) -> bool | None: """Return True if entity is on.""" @@ -161,7 +198,9 @@ class HonSwitchEntity(HonEntity, SwitchEntity): async def async_turn_on(self, **kwargs: Any) -> None: if self.entity_category == EntityCategory.CONFIG: setting = self._device.settings[self.entity_description.key] - setting.value = setting.max + setting.value = ( + setting.max if isinstance(setting, HonParameterRange) else "1" + ) self.async_write_ha_state() else: await self._device.commands[self.entity_description.turn_on_key].send() @@ -169,7 +208,9 @@ class HonSwitchEntity(HonEntity, SwitchEntity): async def async_turn_off(self, **kwargs: Any) -> None: if self.entity_category == EntityCategory.CONFIG: setting = self._device.settings[self.entity_description.key] - setting.value = setting.min + setting.value = ( + setting.min if isinstance(setting, HonParameterRange) else "0" + ) self.async_write_ha_state() else: await self._device.commands[self.entity_description.turn_off_key].send() diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index cafd100..6225013 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -72,6 +72,16 @@ "13": "Ready to Store H-2", "14": "Extra Dry H-3" } + }, + "mode_dw": { + "state": { + "0": "Disconnected", + "1": "Ready", + "2": "Running", + "3": "Delayed start", + "5": "Delayed start cancelled", + "7": "Finished" + } } }, "select": { @@ -461,6 +471,112 @@ "iot_standard_melting": "Melting", "iot_standard_simmering": "Simmering" } + }, + "programs_dw": { + "state": { + "59_min": "Rapid 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_hygiene": "Auto Hygiene", + "auto_plus": "AutoPlus", + "auto_rapid": "Auto Rapid", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "Auto Universal 50 - 60°C", + "auto_universal_plus": "Auto Universal+ 65 - 75°C", + "auto_universal_plus_soil": "Auto Universal+ 65 - 75°C", + "auto_universal_soil": "Auto Universal 50 - 60°C", + "auto_wash": "Auto Wash", + "auto_wash_soil": "Auto Wash", + "classe_a_59": "A Wash 59' 65°C", + "delicate": "Delicate 45°C", + "dishwasher_care": "Limescale cleaning", + "eco": "Eco", + "eco_asynch": "Eco 45°C", + "eco_bldc": "Eco 45°C", + "eco_synch": "Eco 45°C", + "gentle_wash": "Gentle wash", + "glass": "Glass", + "glassware": "Glassware 45°C", + "glass_care": "Glass Care", + "hygiene": "Hygiene", + "hygiene_plus": "Hygiene+ 75°C", + "intensive": "Intensive", + "intensive_rapid": "Intensive Rapid", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "Auto Universal 50 - 60°C", + "iot_auto_wash_soil": "Auto Wash", + "iot_baby_care": "Baby Care", + "iot_breakfast": "Breakfast", + "iot_checkup": "Check-Up", + "iot_china_crystals": "China Crystals", + "iot_classe_a_59": "Rapid 59'", + "iot_cocktail_glasses": "Coktail Glasses", + "iot_cocktail_glasses_soil": "Coktail Glasses", + "iot_daily_care": "Daily Care", + "iot_daily_care_soil": "Daily Care", + "iot_delicate": "Delicate 45°C", + "iot_dinner_for_two": "Dinner for 2", + "iot_dinner_for_two_soil": "Dinner for 2", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "Eco 45°C", + "iot_eco_bldc": "Eco 45°C", + "iot_eco_synch": "Eco 45°C", + "iot_extra_hygiene": "Extra Hygiene", + "iot_fairy_quick_cycle": "Fairy Short", + "iot_happy_hour": "Happy Hour", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "Party", + "iot_party_soil": "Party", + "iot_pizza_menu": "Pizza Menu", + "iot_pizza_menu_soil": "Pizza Menu", + "iot_plastic_tupperware": "Plastic & Tupperware", + "iot_porcelain": "Porcelain", + "iot_pot_and_pans": "Pot & Pans", + "iot_pot_and_pans_soil": "Pot & Pans", + "iot_power_mix_wash": "Power Mix Wash", + "iot_power_mix_wash_soil": "Power Mix Wash", + "iot_prewash": "Pre-wash", + "iot_pyrex_and_glassware": "Pyrex & Glassware", + "iot_rapid_29": "Rapid 29'", + "iot_rapid_39": "Rapid 39' 60°C", + "iot_single": "Single", + "iot_steam": "Steam 75°C", + "iot_super_flash": "Super Flash", + "iot_super_wash": "Super Wash", + "iot_turbopower": "TurboPower", + "iot_universal": "Universal 60°C", + "iot_wok_grids_maxi_pans": "Special Pans (Wok, Grids & Maxi Pans)", + "iot_wok_grids_maxi_pans_soil": "Special Pans (Wok, Grids & Maxi Pans)", + "iot_yes_quick_cycle": "Yes Quick", + "night": "Night 55°C", + "prewash": "Pre-wash", + "rapid_20": "Rapid 20'", + "rapid_24": "Rapid 24'", + "rapid_29": "Rapid 29' 50°C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "Rapid 39' 60°C", + "rapid_49": "Rapid 49'", + "rapid_59": "Rapid 59'", + "sanitising": "Sanitising", + "silence": "Silence", + "silent": "Silent", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "special": "Special", + "special_pw_prz": "Special", + "steam": "Steam 75°C", + "steam_plus": "Steam Plus 75°C", + "total_care": "Total Care 50°C", + "ultra_silence": "Ultra Silence 55°C", + "ultra_silent": "Ultra Silent 55°C", + "universal": "Universal 60°C", + "universal_plus": "Universal Plus 70°C", + "zone_wash": "Flex Zone Wash", + "zoom_39": "Zoom 39 min" + } } } } -- 2.39.5 From 380cde5a71a0f2917b371c55d0c512fa2cde4b17 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sun, 16 Apr 2023 23:35:43 +0200 Subject: [PATCH 040/205] List Appliance Features --- .gitignore | 2 +- README.md | 189 +++++++++++++++++++++++++++++++++++++++-- info.md | 14 ++- scripts/sensor_docs.py | 56 ++++++++++++ 4 files changed, 244 insertions(+), 17 deletions(-) create mode 100644 scripts/sensor_docs.py diff --git a/.gitignore b/.gitignore index 6024b17..1dcccdc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ __pycache__/ -test.py +scripts/test.py .idea/ diff --git a/README.md b/README.md index 5b19aee..c95b0b5 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,14 @@ ![GitHub](https://img.shields.io/github/license/Andre0512/hon?color=red) [![Home Assistant installs](https://img.shields.io/badge/dynamic/json?color=blue&label=usage&suffix=%20installs&cacheSeconds=15600&url=https://analytics.home-assistant.io/custom_integrations.json&query=$.hon.total)](https://analytics.home-assistant.io/) Home Assistant integration for Haier hOn: support for Haier/Candy/Hoover home appliances like washing machines. + ## Supported Appliances -- Washing Machine -- Tumble Dryer -- Washer Dryer -- Oven -- Hob -- Dish Washer +- [Washing Machine](https://github.com/Andre0512/hon#washing-machine) +- [Tumble Dryer](https://github.com/Andre0512/hon#tumble-dryer) +- [Washer Dryer](https://github.com/Andre0512/hon#washer-dryer) +- [Oven](https://github.com/Andre0512/hon#oven) +- [Hob](https://github.com/Andre0512/hon#hob) +- [Dish Washer](https://github.com/Andre0512/hon#dish-washer) ## Installation **Method 1:** [![Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?owner=Andre0512&repository=hon&category=integration) @@ -28,8 +29,6 @@ _Restart Home Assistant_ **Method 2**: Settings > Devices & Services > Add Integration > **Haier hOn** _If the integration is not in the list, you need to clear the browser cache._ - - ## Contribute Any kind of contribution is welcome! ### Read out device data @@ -104,3 +103,177 @@ For every device exists a hidden button which can be used to log all info of you The existing integrations missed some features from the app I liked to have in HomeAssistant. I tried to create a pull request, but in the structures of these existing repos, I find it hard to fit in my needs, so I basically rewrote everything. I moved the api related stuff into the package [pyhOn](https://github.com/Andre0512/pyhOn). + +## Appliance Features +### Dish washer +#### Controls +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Dish Washer | `mdi:dishwasher` | `switch` | `active` | +#### Configs +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Add Dish | `mdi:silverware-fork-knife` | `switch` | `startProgram.addDish` | +| Delay time | `mdi:timer-plus` | `number` | `startProgram.delayTime` | +| Eco Express | `mdi:sprout` | `switch` | `startProgram.ecoExpress` | +| Eco Index | `mdi:sprout` | `sensor` | `startProgram.ecoIndex` | +| Energy Label | `mdi:lightning-bolt-circle` | `sensor` | `startProgram.energyLabel` | +| Extra Dry | `mdi:hair-dryer` | `switch` | `startProgram.extraDry` | +| Half Load | `mdi:fraction-one-half` | `switch` | `startProgram.halfLoad` | +| Open Door | `mdi:door-open` | `switch` | `startProgram.openDoor` | +| Program | | `select` | `startProgram.program` | +| Temperature | `mdi:thermometer` | `sensor` | `startProgram.temp` | +| Three in One | `mdi:numeric-3-box-outline` | `switch` | `startProgram.threeInOne` | +| Time | `mdi:timer` | `sensor` | `startProgram.remainingTime` | +| Water Efficiency | `mdi:water` | `sensor` | `startProgram.waterEfficiency` | +| Water Saving | `mdi:water-percent` | `sensor` | `startProgram.waterSaving` | +| Water hard | `mdi:water` | `number` | `startProgram.waterHard` | +#### Sensors +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Connection | | `binary_sensor` | `attributes.lastConnEvent.category` | +| Door | | `binary_sensor` | `doorStatus` | +| Error | `mdi:math-log` | `sensor` | `errors` | +| Machine Status | `mdi:information` | `sensor` | `machMode` | +| Remaining Time | `mdi:timer` | `sensor` | `remainingTimeMM` | +| Rinse Aid | `mdi:spray-bottle` | `binary_sensor` | `rinseAidStatus` | +| Salt | `mdi:shaker-outline` | `binary_sensor` | `saltStatus` | +### Hob +#### Controls +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Start Program | `mdi:pot-steam` | `button` | `startProgram` | +#### Configs +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Power Management | `mdi:timelapse` | `number` | `startProgram.powerManagement` | +| Program | | `select` | `startProgram.program` | +| Temperature | `mdi:thermometer` | `number` | `startProgram.temp` | +#### Sensors +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Connection | `mdi:wifi` | `binary_sensor` | `attributes.lastConnEvent.category` | +| Error | `mdi:math-log` | `sensor` | `errors` | +| Hob Lock | | `binary_sensor` | `hobLockStatus` | +| Hot Status | | `binary_sensor` | `hotStatus` | +| On | `mdi:power-cycle` | `binary_sensor` | `attributes.parameters.onOffStatus` | +| Remaining Time | `mdi:timer` | `sensor` | `remainingTimeMM` | +| Remote Control | `mdi:remote` | `binary_sensor` | `attributes.parameters.remoteCtrValid` | +| Temperature | `mdi:thermometer` | `sensor` | `temp` | +### Oven +#### Controls +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Start Program | `mdi:power-cycle` | `button` | `startProgram` | +| Stop Program | `mdi:power-off` | `button` | `stopProgram` | +#### Configs +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Delay time | `mdi:timer-plus` | `number` | `startProgram.delayTime` | +| Preheat | | `select` | `startProgram.preheatStatus` | +| Program | | `select` | `startProgram.program` | +| Program Duration | `mdi:timelapse` | `number` | `startProgram.prTime` | +| Target Temperature | `mdi:thermometer` | `number` | `startProgram.tempSel` | +#### Sensors +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Connection | `mdi:wifi` | `binary_sensor` | `attributes.lastConnEvent.category` | +| On | `mdi:power-cycle` | `binary_sensor` | `attributes.parameters.onOffStatus` | +| Remaining Time | `mdi:timer` | `sensor` | `remainingTimeMM` | +| Remote Control | `mdi:remote` | `binary_sensor` | `attributes.parameters.remoteCtrValid` | +| Start Time | `mdi:clock-start` | `sensor` | `delayTime` | +| Temperature | `mdi:thermometer` | `sensor` | `temp` | +| Temperature Selected | `mdi:thermometer` | `sensor` | `tempSel` | +### Tumble dryer +#### Controls +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Pause Tumble Dryer | `mdi:pause` | `switch` | `pause` | +| Tumble Dryer | `mdi:tumble-dryer` | `switch` | `active` | +#### Configs +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Anti-Crease time | `mdi:timer` | `number` | `startProgram.antiCreaseTime` | +| Delay time | `mdi:timer-plus` | `number` | `startProgram.delayTime` | +| Dry level | `mdi:hair-dryer` | `number` | `startProgram.dryLevel` | +| Program | | `select` | `startProgram.program` | +| Sterilization status | `mdi:clock-start` | `number` | `startProgram.sterilizationStatus` | +| Temperature level | `mdi:thermometer` | `number` | `startProgram.tempLevel` | +| Time | `mdi:timer` | `select` | `startProgram.dryTimeMM` | +#### Sensors +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Connection | | `binary_sensor` | `attributes.lastConnEvent.category` | +| Door | | `binary_sensor` | `doorStatus` | +| Dry level | `mdi:hair-dryer` | `sensor` | `dryLevel` | +| Error | `mdi:math-log` | `sensor` | `errors` | +| Machine Status | `mdi:information` | `sensor` | `machMode` | +| Program | `mdi:tumble-dryer` | `sensor` | `prCode` | +| Program Phase | `mdi:tumble-dryer` | `sensor` | `prPhase` | +| Remaining Time | `mdi:timer` | `sensor` | `remainingTimeMM` | +| Start Time | `mdi:clock-start` | `sensor` | `delayTime` | +| Temperature level | `mdi:thermometer` | `sensor` | `tempLevel` | +### Washer dryer +#### Controls +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Pause Washing Machine | `mdi:pause` | `switch` | `pause` | +| Washing Machine | `mdi:washing-machine` | `switch` | `active` | +#### Configs +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Delay Time | `mdi:timer-plus` | `number` | `startProgram.delayTime` | +| Program | | `select` | `startProgram.program` | +#### Sensors +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Acqua Plus | | `binary_sensor` | `acquaplus` | +| Anti-Crease | | `binary_sensor` | `anticrease` | +| Current Program | `mdi:tumble-dryer` | `sensor` | `prCode` | +| Current Temperature | `mdi:thermometer` | `sensor` | `temp` | +| Dirt level | `mdi:liquid-spot` | `sensor` | `dirtyLevel` | +| Dry level | `mdi:hair-dryer` | `sensor` | `dryLevel` | +| Extra Rinse 1 | | `binary_sensor` | `extraRinse1` | +| Extra Rinse 2 | | `binary_sensor` | `extraRinse2` | +| Extra Rinse 3 | | `binary_sensor` | `extraRinse3` | +| Good Night Mode | | `binary_sensor` | `goodNight` | +| Machine Status | `mdi:information` | `sensor` | `machMode` | +| Pre Wash | | `binary_sensor` | `startProgram.prewash` | +| Program Phase | `mdi:tumble-dryer` | `sensor` | `prPhase` | +| Remaining Time | `mdi:timer` | `sensor` | `remainingTimeMM` | +| Remote Control | `mdi:remote` | `binary_sensor` | `attributes.lastConnEvent.category` | +| Spin Speed | `mdi:fast-forward-outline` | `sensor` | `spinSpeed` | +| Steam level | `mdi:smoke` | `sensor` | `steamLevel` | +### Washing machine +#### Controls +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Pause Washing Machine | `mdi:pause` | `switch` | `pause` | +| Washing Machine | `mdi:washing-machine` | `switch` | `active` | +#### Configs +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Delay Status | `mdi:timer-check` | `switch` | `startProgram.delayStatus` | +| Delay Time | `mdi:timer-plus` | `number` | `startProgram.delayTime` | +| Main Wash Time | `mdi:clock-start` | `number` | `startProgram.mainWashTime` | +| Program | | `select` | `startProgram.program` | +| Rinse Iterations | `mdi:rotate-right` | `number` | `startProgram.rinseIterations` | +| Soak Prewash Selection | `mdi:tshirt-crew` | `switch` | `startProgram.haier_SoakPrewashSelection` | +| Spin speed | `mdi:numeric` | `select` | `startProgram.spinSpeed` | +| Suggested weight | `mdi:weight-kilogram` | `sensor` | `startProgram.weight` | +| Temperature | `mdi:thermometer` | `select` | `startProgram.temp` | +#### Sensors +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Current Electricity Used | `mdi:lightning-bolt` | `sensor` | `currentElectricityUsed` | +| Current Water Used | `mdi:water` | `sensor` | `currentWaterUsed` | +| Door | | `binary_sensor` | `doorStatus` | +| Door Lock | | `binary_sensor` | `doorLockStatus` | +| Error | `mdi:math-log` | `sensor` | `errors` | +| Machine Status | `mdi:information` | `sensor` | `machMode` | +| Remaining Time | `mdi:timer` | `sensor` | `remainingTimeMM` | +| Remote Control | `mdi:remote` | `binary_sensor` | `attributes.lastConnEvent.category` | +| Spin Speed | `mdi:speedometer` | `sensor` | `spinSpeed` | +| Total Power | | `sensor` | `totalElectricityUsed` | +| Total Wash Cycle | `mdi:counter` | `sensor` | `totalWashCycle` | +| Total Water | | `sensor` | `totalWaterUsed` | diff --git a/info.md b/info.md index a35b040..d6073f1 100644 --- a/info.md +++ b/info.md @@ -5,11 +5,12 @@ Support for home appliances of Haier's mobile app hOn. ## Supported Appliances -- Tumble Dryer -- Washer Dryer -- Washing Machine -- Oven -- Hob +- [Washing Machine](https://github.com/Andre0512/hon#washing-machine) +- [Tumble Dryer](https://github.com/Andre0512/hon#tumble-dryer) +- [Washer Dryer](https://github.com/Andre0512/hon#washer-dryer) +- [Oven](https://github.com/Andre0512/hon#oven) +- [Hob](https://github.com/Andre0512/hon#hob) +- [Dish Washer](https://github.com/Andre0512/hon#dish-washer) ## Tested Appliances - Haier WD90-B14TEAM5 @@ -17,7 +18,6 @@ Support for home appliances of Haier's mobile app hOn. - Haier HWO60SM2F3XH - Hoover H-WASH 500 - ## Configuration **Method 1**: [![Open your Home Assistant instance and start setting up a new integration.](https://my.home-assistant.io/badges/config_flow_start.svg)](https://my.home-assistant.io/redirect/config_flow_start/?domain=hon) @@ -25,13 +25,11 @@ Support for home appliances of Haier's mobile app hOn. **Method 2**: Settings > Devices & Services > Add Integration > **Haier hOn** _If the integration is not in the list, you need to clear the browser cache._ - ## Contribute Want to help us to support more appliances? Or add more sensors? Or help with translating? Or beautify some icons or captions? Check out the [project on GitHub](https://github.com/Andre0512/hon), every contribution is welcome! ## Useful Links - * [GitHub repository](https://github.com/Andre0512/hon) (please add a star if you like this integration!) * [pyhOn library](https://github.com/Andre0512/pyhOn) * [Release notes](https://github.com/Andre0512/hon/releases) diff --git a/scripts/sensor_docs.py b/scripts/sensor_docs.py new file mode 100644 index 0000000..ab54f2d --- /dev/null +++ b/scripts/sensor_docs.py @@ -0,0 +1,56 @@ +from custom_components.hon.binary_sensor import BINARY_SENSORS +from custom_components.hon.button import BUTTONS +from custom_components.hon.number import NUMBERS +from custom_components.hon.select import SELECTS +from custom_components.hon.sensor import SENSORS +from custom_components.hon.switch import SWITCHES + +APPLIANCES = { + "AC": "Air conditioner", + "AP": "Air purifier", + "AS": "Air scanner", + "DW": "Dish washer", + "HO": "Hood", + "IH": "Hob", + "MW": "Microwave", + "OV": "Oven", + "REF": "Fridge", + "RVC": "Robot vacuum cleaner", + "TD": "Tumble dryer", + "WC": "Wine Cellar", + "WD": "Washer dryer", + "WH": "Water Heater", + "WM": "Washing machine", +} + +ENTITY_CATEGORY_SORT = ["control", "config", "sensor"] + +entities = { + "binary_sensor": BINARY_SENSORS, + "button": BUTTONS, + "number": NUMBERS, + "select": SELECTS, + "sensor": SENSORS, + "switch": SWITCHES, +} + +result = {} +for entity_type, appliances in entities.items(): + for appliance, data in appliances.items(): + for entity in data: + attributes = (entity.key, entity.name, entity.icon, entity_type) + category = "control" if entity_type in ["switch", "button"] else "sensor" + result.setdefault(appliance, {}).setdefault( + entity.entity_category or category, [] + ).append(attributes) + +for appliance, categories in sorted(result.items()): + print(f"### {APPLIANCES[appliance]}") + categories = {k: categories[k] for k in ENTITY_CATEGORY_SORT if k in categories} + for category, data in categories.items(): + print(f"#### {str(category).capitalize()}s") + print("| Name | Icon | Entity | Key |") + print("| --- | --- | --- | --- |") + for key, name, icon, entity_type in sorted(data, key=lambda d: d[1]): + icon = f"`{icon}`" if icon else "" + print(f"| {name} | {icon} | `{entity_type}` | `{key}` |") -- 2.39.5 From 102a05ffcd5e2b9c5c5a8bb3eb090b543a703f25 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 17 Apr 2023 00:15:18 +0200 Subject: [PATCH 041/205] Bump pyhon version, fixes starting error --- custom_components/hon/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 8ad79ae..49365f9 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -6,6 +6,6 @@ "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn==0.8.0b5"], - "version": "0.6.0-beta.5" + "requirements": ["pyhOn==0.8.0b6"], + "version": "0.6.0-beta.6" } -- 2.39.5 From 891ae5183248be616594e9b1c3b7566596c6bef6 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 17 Apr 2023 00:42:50 +0200 Subject: [PATCH 042/205] Bump pyhon version, fixes disapearing programs --- custom_components/hon/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 49365f9..1a53b65 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -6,6 +6,6 @@ "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn==0.8.0b6"], - "version": "0.6.0-beta.6" + "requirements": ["pyhOn==0.8.0b7"], + "version": "0.6.0-beta.7" } -- 2.39.5 From 75859543aa0904d022dbdd393f2fd24680a09a03 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 17 Apr 2023 23:18:27 +0200 Subject: [PATCH 043/205] Improve entity documentation --- README.md | 20 +++++++++++++------- scripts/sensor_docs.py | 37 +++++++++++++++++++++++++++++-------- 2 files changed, 42 insertions(+), 15 deletions(-) mode change 100644 => 100755 scripts/sensor_docs.py diff --git a/README.md b/README.md index c95b0b5..2109fb4 100644 --- a/README.md +++ b/README.md @@ -105,11 +105,12 @@ I tried to create a pull request, but in the structures of these existing repos, I moved the api related stuff into the package [pyhOn](https://github.com/Andre0512/pyhOn). ## Appliance Features + ### Dish washer #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | -| Dish Washer | `mdi:dishwasher` | `switch` | `active` | +| Dish Washer | `mdi:dishwasher` | `switch` | `startProgram` / `stopProgram` | #### Configs | Name | Icon | Entity | Key | | --- | --- | --- | --- | @@ -138,6 +139,7 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 | Remaining Time | `mdi:timer` | `sensor` | `remainingTimeMM` | | Rinse Aid | `mdi:spray-bottle` | `binary_sensor` | `rinseAidStatus` | | Salt | `mdi:shaker-outline` | `binary_sensor` | `saltStatus` | + ### Hob #### Controls | Name | Icon | Entity | Key | @@ -160,6 +162,7 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 | Remaining Time | `mdi:timer` | `sensor` | `remainingTimeMM` | | Remote Control | `mdi:remote` | `binary_sensor` | `attributes.parameters.remoteCtrValid` | | Temperature | `mdi:thermometer` | `sensor` | `temp` | + ### Oven #### Controls | Name | Icon | Entity | Key | @@ -184,12 +187,13 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 | Start Time | `mdi:clock-start` | `sensor` | `delayTime` | | Temperature | `mdi:thermometer` | `sensor` | `temp` | | Temperature Selected | `mdi:thermometer` | `sensor` | `tempSel` | + ### Tumble dryer #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | -| Pause Tumble Dryer | `mdi:pause` | `switch` | `pause` | -| Tumble Dryer | `mdi:tumble-dryer` | `switch` | `active` | +| Pause Tumble Dryer | `mdi:pause` | `switch` | `pauseProgram` / `resumeProgram` | +| Tumble Dryer | `mdi:tumble-dryer` | `switch` | `startProgram` / `stopProgram` | #### Configs | Name | Icon | Entity | Key | | --- | --- | --- | --- | @@ -213,12 +217,13 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 | Remaining Time | `mdi:timer` | `sensor` | `remainingTimeMM` | | Start Time | `mdi:clock-start` | `sensor` | `delayTime` | | Temperature level | `mdi:thermometer` | `sensor` | `tempLevel` | + ### Washer dryer #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | -| Pause Washing Machine | `mdi:pause` | `switch` | `pause` | -| Washing Machine | `mdi:washing-machine` | `switch` | `active` | +| Pause Washing Machine | `mdi:pause` | `switch` | `pauseProgram` / `resumeProgram` | +| Washing Machine | `mdi:washing-machine` | `switch` | `startProgram` / `stopProgram` | #### Configs | Name | Icon | Entity | Key | | --- | --- | --- | --- | @@ -244,12 +249,13 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 | Remote Control | `mdi:remote` | `binary_sensor` | `attributes.lastConnEvent.category` | | Spin Speed | `mdi:fast-forward-outline` | `sensor` | `spinSpeed` | | Steam level | `mdi:smoke` | `sensor` | `steamLevel` | + ### Washing machine #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | -| Pause Washing Machine | `mdi:pause` | `switch` | `pause` | -| Washing Machine | `mdi:washing-machine` | `switch` | `active` | +| Pause Washing Machine | `mdi:pause` | `switch` | `pauseProgram` / `resumeProgram` | +| Washing Machine | `mdi:washing-machine` | `switch` | `startProgram` / `stopProgram` | #### Configs | Name | Icon | Entity | Key | | --- | --- | --- | --- | diff --git a/scripts/sensor_docs.py b/scripts/sensor_docs.py old mode 100644 new mode 100755 index ab54f2d..f7dbafd --- a/scripts/sensor_docs.py +++ b/scripts/sensor_docs.py @@ -1,9 +1,12 @@ +import re +from pathlib import Path + from custom_components.hon.binary_sensor import BINARY_SENSORS from custom_components.hon.button import BUTTONS from custom_components.hon.number import NUMBERS from custom_components.hon.select import SELECTS from custom_components.hon.sensor import SENSORS -from custom_components.hon.switch import SWITCHES +from custom_components.hon.switch import SWITCHES, HonSwitchEntityDescription APPLIANCES = { "AC": "Air conditioner", @@ -38,19 +41,37 @@ result = {} for entity_type, appliances in entities.items(): for appliance, data in appliances.items(): for entity in data: - attributes = (entity.key, entity.name, entity.icon, entity_type) + if ( + isinstance(entity, HonSwitchEntityDescription) + and entity.entity_category != "config" + ): + key = f"{entity.turn_on_key}` / `{entity.turn_off_key}" + else: + key = entity.key + attributes = (key, entity.name, entity.icon, entity_type) category = "control" if entity_type in ["switch", "button"] else "sensor" result.setdefault(appliance, {}).setdefault( entity.entity_category or category, [] ).append(attributes) - +text = "" for appliance, categories in sorted(result.items()): - print(f"### {APPLIANCES[appliance]}") + text += f"\n### {APPLIANCES[appliance]}\n" categories = {k: categories[k] for k in ENTITY_CATEGORY_SORT if k in categories} for category, data in categories.items(): - print(f"#### {str(category).capitalize()}s") - print("| Name | Icon | Entity | Key |") - print("| --- | --- | --- | --- |") + text += f"#### {str(category).capitalize()}s\n" + text += "| Name | Icon | Entity | Key |\n" + text += "| --- | --- | --- | --- |\n" for key, name, icon, entity_type in sorted(data, key=lambda d: d[1]): icon = f"`{icon}`" if icon else "" - print(f"| {name} | {icon} | `{entity_type}` | `{key}` |") + text += f"| {name} | {icon} | `{entity_type}` | `{key}` |\n" + +with open(Path(__file__).parent.parent / "README.md", "r") as file: + readme = file.read() +readme = re.sub( + "(## Appliance Features\n)(?:.|\\s)+?([^#]## |\\Z)", + f"\\1{text}\\2", + readme, + re.DOTALL, +) +with open(Path(__file__).parent.parent / "README.md", "w") as file: + file.write(readme) -- 2.39.5 From b33b6a40b238ce21f7d57349d0ad32d9e527921d Mon Sep 17 00:00:00 2001 From: Andy Breuhan Date: Tue, 18 Apr 2023 12:43:40 +0200 Subject: [PATCH 044/205] Added WashingMachine sonsors to WashDryer as well In addition to that the currentElectricityUsed is measured in kWh because it just counts the kWh for the current cycle --- custom_components/hon/sensor.py | 44 ++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index d90b24d..ad2dcad 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -55,7 +55,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { name="Current Electricity Used", state_class=SensorStateClass.MEASUREMENT, device_class=SensorDeviceClass.POWER, - native_unit_of_measurement=UnitOfPower.KILO_WATT, + native_unit_of_measurement=UnitOfPower.KILO_WATT_HOUR, icon="mdi:lightning-bolt", ), SensorEntityDescription( @@ -146,6 +146,48 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { ), ), "WD": ( + SensorEntityDescription( + key="totalElectricityUsed", + name="Total Power", + device_class=SensorDeviceClass.ENERGY, + state_class=SensorStateClass.TOTAL_INCREASING, + native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, + ), + SensorEntityDescription( + key="totalWaterUsed", + name="Total Water", + device_class=SensorDeviceClass.WATER, + state_class=SensorStateClass.TOTAL_INCREASING, + native_unit_of_measurement=UnitOfVolume.LITERS, + ), + SensorEntityDescription( + key="totalWashCycle", + name="Total Wash Cycle", + state_class=SensorStateClass.TOTAL_INCREASING, + icon="mdi:counter", + ), + SensorEntityDescription( + key="currentElectricityUsed", + name="Current Electricity Used", + state_class=SensorStateClass.MEASUREMENT, + device_class=SensorDeviceClass.POWER, + native_unit_of_measurement=UnitOfPower.KILO_WATT_HOUR, + icon="mdi:lightning-bolt", + ), + SensorEntityDescription( + key="currentWaterUsed", + name="Current Water Used", + state_class=SensorStateClass.MEASUREMENT, + icon="mdi:water", + ), + SensorEntityDescription( + key="startProgram.weight", + name="Suggested weight", + state_class=SensorStateClass.MEASUREMENT, + entity_category=EntityCategory.CONFIG, + native_unit_of_measurement=UnitOfMass.KILOGRAMS, + icon="mdi:weight-kilogram", + ), SensorEntityDescription( key="machMode", name="Machine Status", -- 2.39.5 From a2d02574103f03e0a48d8b02b993690a587d6cd4 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Tue, 18 Apr 2023 23:44:23 +0200 Subject: [PATCH 045/205] Add more sensors for #22 --- custom_components/hon/binary_sensor.py | 3 +++ custom_components/hon/sensor.py | 10 ++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index 9b3202c..725259c 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -152,6 +152,9 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { device_class=BinarySensorDeviceClass.HEAT, on_value="1", ), + HonBinarySensorEntityDescription( + key="panStatus", name="Pan Status", on_value="1", icon="mdi:pot-mix" + ), HonBinarySensorEntityDescription( key="hobLockStatus", name="Hob Lock", diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index ad2dcad..32d7aee 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -55,7 +55,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { name="Current Electricity Used", state_class=SensorStateClass.MEASUREMENT, device_class=SensorDeviceClass.POWER, - native_unit_of_measurement=UnitOfPower.KILO_WATT_HOUR, + native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, icon="mdi:lightning-bolt", ), SensorEntityDescription( @@ -171,7 +171,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { name="Current Electricity Used", state_class=SensorStateClass.MEASUREMENT, device_class=SensorDeviceClass.POWER, - native_unit_of_measurement=UnitOfPower.KILO_WATT_HOUR, + native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, icon="mdi:lightning-bolt", ), SensorEntityDescription( @@ -279,6 +279,12 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { native_unit_of_measurement=UnitOfTemperature.CELSIUS, ), SensorEntityDescription(key="errors", name="Error", icon="mdi:math-log"), + SensorEntityDescription( + key="power", + name="Power", + icon="mdi:lightning-bolt", + state_class=SensorStateClass.MEASUREMENT, + ), ), "DW": ( SensorEntityDescription( -- 2.39.5 From 75622e18a2699cebcefe1762cacc29b0666c614f Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Tue, 18 Apr 2023 23:50:27 +0200 Subject: [PATCH 046/205] Bump version, update readme --- README.md | 12 ++++++++++-- custom_components/hon/manifest.json | 2 +- info.md | 4 ++-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 2109fb4..ec12000 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # Haier hOn [![hacs_badge](https://img.shields.io/badge/HACS-Default-41BDF5.svg)](https://hacs.xyz) [![GitHub release (latest by date)](https://img.shields.io/github/v/release/Andre0512/hon?color=green)](https://github.com/Andre0512/hon/releases/latest) -![GitHub](https://img.shields.io/github/license/Andre0512/hon?color=red) -[![Home Assistant installs](https://img.shields.io/badge/dynamic/json?color=blue&label=usage&suffix=%20installs&cacheSeconds=15600&url=https://analytics.home-assistant.io/custom_integrations.json&query=$.hon.total)](https://analytics.home-assistant.io/) +[![GitHub](https://img.shields.io/github/license/Andre0512/hon?color=red)](https://github.com/Andre0512/hon/blob/main/LICENSE) +[![GitHub all releases](https://img.shields.io/github/downloads/Andre0512/hon/total?color=blue)](https://tooomm.github.io/github-release-stats/?username=Andre0512&repository=hon) Home Assistant integration for Haier hOn: support for Haier/Candy/Hoover home appliances like washing machines. ## Supported Appliances @@ -159,6 +159,8 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 | Hob Lock | | `binary_sensor` | `hobLockStatus` | | Hot Status | | `binary_sensor` | `hotStatus` | | On | `mdi:power-cycle` | `binary_sensor` | `attributes.parameters.onOffStatus` | +| Pan Status | `mdi:pot-mix` | `binary_sensor` | `panStatus` | +| Power | `mdi:lightning-bolt` | `sensor` | `power` | | Remaining Time | `mdi:timer` | `sensor` | `remainingTimeMM` | | Remote Control | `mdi:remote` | `binary_sensor` | `attributes.parameters.remoteCtrValid` | | Temperature | `mdi:thermometer` | `sensor` | `temp` | @@ -229,13 +231,16 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 | --- | --- | --- | --- | | Delay Time | `mdi:timer-plus` | `number` | `startProgram.delayTime` | | Program | | `select` | `startProgram.program` | +| Suggested weight | `mdi:weight-kilogram` | `sensor` | `startProgram.weight` | #### Sensors | Name | Icon | Entity | Key | | --- | --- | --- | --- | | Acqua Plus | | `binary_sensor` | `acquaplus` | | Anti-Crease | | `binary_sensor` | `anticrease` | +| Current Electricity Used | `mdi:lightning-bolt` | `sensor` | `currentElectricityUsed` | | Current Program | `mdi:tumble-dryer` | `sensor` | `prCode` | | Current Temperature | `mdi:thermometer` | `sensor` | `temp` | +| Current Water Used | `mdi:water` | `sensor` | `currentWaterUsed` | | Dirt level | `mdi:liquid-spot` | `sensor` | `dirtyLevel` | | Dry level | `mdi:hair-dryer` | `sensor` | `dryLevel` | | Extra Rinse 1 | | `binary_sensor` | `extraRinse1` | @@ -249,6 +254,9 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 | Remote Control | `mdi:remote` | `binary_sensor` | `attributes.lastConnEvent.category` | | Spin Speed | `mdi:fast-forward-outline` | `sensor` | `spinSpeed` | | Steam level | `mdi:smoke` | `sensor` | `steamLevel` | +| Total Power | | `sensor` | `totalElectricityUsed` | +| Total Wash Cycle | `mdi:counter` | `sensor` | `totalWashCycle` | +| Total Water | | `sensor` | `totalWaterUsed` | ### Washing machine #### Controls diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 1a53b65..7f14c35 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -7,5 +7,5 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": ["pyhOn==0.8.0b7"], - "version": "0.6.0-beta.7" + "version": "0.6.0-beta.8" } diff --git a/info.md b/info.md index d6073f1..c72d790 100644 --- a/info.md +++ b/info.md @@ -1,7 +1,7 @@ # Haier hOn [![GitHub release (latest by date)](https://img.shields.io/github/v/release/Andre0512/hon?color=green)](https://github.com/Andre0512/hon/releases/latest) -![GitHub](https://img.shields.io/github/license/Andre0512/hon?color=red) -[![Home Assistant installs](https://img.shields.io/badge/dynamic/json?color=blue&label=usage&suffix=%20installs&cacheSeconds=15600&url=https://analytics.home-assistant.io/custom_integrations.json&query=$.hon.total)](https://analytics.home-assistant.io/) +[![GitHub](https://img.shields.io/github/license/Andre0512/hon?color=red)](https://github.com/Andre0512/hon/blob/main/LICENSE) +[![GitHub all releases](https://img.shields.io/github/downloads/Andre0512/hon/total?color=blue)](https://tooomm.github.io/github-release-stats/?username=Andre0512&repository=hon) Support for home appliances of Haier's mobile app hOn. ## Supported Appliances -- 2.39.5 From 72c83527d5eb15f316b317e8dc0f10b9d0c1ac26 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Wed, 19 Apr 2023 17:47:05 +0200 Subject: [PATCH 047/205] Bump version to v0.6.0 --- README.md | 3 +++ custom_components/hon/manifest.json | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ec12000..725f565 100644 --- a/README.md +++ b/README.md @@ -98,6 +98,9 @@ For every device exists a hidden button which can be used to log all info of you - Haier HD80-A3959 - Haier HWO60SM2F3XH - Hoover H-WASH 500 +- Candy CIS633SCTTWIFI +- Haier XIB 3B2SFS-80 +- Haier XIB 6B2D3FB ## About this Repo The existing integrations missed some features from the app I liked to have in HomeAssistant. diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 7f14c35..bd9f52f 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -6,6 +6,6 @@ "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn==0.8.0b7"], - "version": "0.6.0-beta.8" + "requirements": ["pyhOn==0.8.0"], + "version": "0.6.0" } -- 2.39.5 From 256c691213c4e38c39040511c62eae0d81dede02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20=C3=81ngel?= Date: Wed, 19 Apr 2023 19:31:45 +0200 Subject: [PATCH 048/205] Oven --- custom_components/hon/switch.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 57a0a36..28b3863 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -82,6 +82,13 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { turn_on_key="startProgram", turn_off_key="stopProgram", ), + + HonSwitchEntityDescription( + key="startProgram.preheatStatus", + name="Preheat", + icon="mdi:thermometer-chevron-up", + entity_category=EntityCategory.CONFIG, + ), ), "WD": ( -- 2.39.5 From 554ce1d7ffb12e27d966a0153a54e59adc6a4002 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20=C3=81ngel?= Date: Wed, 19 Apr 2023 19:33:35 +0200 Subject: [PATCH 049/205] Update manifiest --- custom_components/hon/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index b2b3e32..61b939a 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -6,7 +6,7 @@ "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn"], - "version": "0.6.0-beta.3" + "requirements": ["pyhOn==0.8.1"], + "version": "0.6.1" } -- 2.39.5 From e0081bf75e9b9736edceacdbad241db77dfbc72d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20=C3=81ngel?= Date: Wed, 19 Apr 2023 20:18:40 +0200 Subject: [PATCH 050/205] Black style --- custom_components/hon/switch.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 28b3863..82afab4 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -73,7 +73,6 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { turn_off_key="resumeProgram", ), ), - "OV": ( HonSwitchEntityDescription( key="active", @@ -82,7 +81,6 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { turn_on_key="startProgram", turn_off_key="stopProgram", ), - HonSwitchEntityDescription( key="startProgram.preheatStatus", name="Preheat", @@ -90,7 +88,6 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { entity_category=EntityCategory.CONFIG, ), ), - "WD": ( HonSwitchEntityDescription( key="active", -- 2.39.5 From 2c6def8f5737c089f606f3834ccc0fda4a894675 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Wed, 19 Apr 2023 20:40:31 +0200 Subject: [PATCH 051/205] update readme --- README.md | 5 ++--- custom_components/hon/manifest.json | 1 - 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 725f565..92d4e2c 100644 --- a/README.md +++ b/README.md @@ -172,13 +172,12 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | -| Start Program | `mdi:power-cycle` | `button` | `startProgram` | -| Stop Program | `mdi:power-off` | `button` | `stopProgram` | +| Oven | `mdi:toaster-oven` | `switch` | `startProgram` / `stopProgram` | #### Configs | Name | Icon | Entity | Key | | --- | --- | --- | --- | | Delay time | `mdi:timer-plus` | `number` | `startProgram.delayTime` | -| Preheat | | `select` | `startProgram.preheatStatus` | +| Preheat | `mdi:thermometer-chevron-up` | `switch` | `startProgram.preheatStatus` | | Program | | `select` | `startProgram.program` | | Program Duration | `mdi:timelapse` | `number` | `startProgram.prTime` | | Target Temperature | `mdi:thermometer` | `number` | `startProgram.tempSel` | diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 61b939a..7375099 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -8,5 +8,4 @@ "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": ["pyhOn==0.8.1"], "version": "0.6.1" - } -- 2.39.5 From 43b967cd417825a40eff92b45d0a01f4d7afaee8 Mon Sep 17 00:00:00 2001 From: KiraPC Date: Thu, 20 Apr 2023 11:11:36 +0200 Subject: [PATCH 052/205] Start it translation --- custom_components/hon/translations/it.json | 426 +++++++++++++++++++++ 1 file changed, 426 insertions(+) create mode 100644 custom_components/hon/translations/it.json diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json new file mode 100644 index 0000000..ac98e76 --- /dev/null +++ b/custom_components/hon/translations/it.json @@ -0,0 +1,426 @@ +{ + "config": { + "step": { + "user": { + "description": "Inserisci le credenziali dell'app hOn", + "data": { + "email": "Indirizzo Email", + "password": "Password" + } + } + } + }, + "entity": { + "sensor": { + "mode": { + "state": { + "0": "Disconnesso", + "1": "Pronto", + "2": "In Funzione", + "3": "In Pausa", + "5": "Programmato", + "6": "Errore", + "7": "Terminato" + } + }, + "errors": { + "state": { + "00": "Nessun Errore", + "100000000000": "E2: Controllare se la porta è chiusa correttamente", + "8000000000000": "E4: Controllare l'approvvigionamento idrico" + } + }, + "tumbledryerprogram": { + "state": { + "0": "Default", + "62": "Cotone", + "63": "Sintentici", + "64": "Misti", + "66": "Lenzuola", + "71": "Tende", + "72": "Sports", + "74": "i-time", + "75": "Piumino", + "76": "Lana", + "78": "i-Refresh", + "83": "Asciugamani", + "85": "Asciugatura Rapida", + "92": "Delicati", + "103": "Controllo Remoto" + } + }, + "tumbledryerprogramphase": { + "state": { + "0": "In Attesa", + "2": "Asciugatura", + "3": "Raffreddamento", + "11": "11" + } + }, + "tumbledryertemplevel": { + "state": { + "1": "Freddo", + "2": "Bassa temperatura L-1", + "3": "Media temperature L-2", + "4": "Alta temperature L-3" + } + }, + "tumbledryerdrylevel": { + "state": { + "3": "Armadio", + "12": "Pronto Stiro", + "13": "Pronto Armadio", + "14": "Extra Dry H-3" + } + } + }, + "select": { + "programs": { + "state": { + "20_degrees_coloured_cottons": "20° Colorati e Cotone", + "20_degrees_new_energy_label": "20°C", + "active_steam": "Vapore", + "active_wash": "Lavaggio attivo", + "active_wash_steam": "Lavaggio attivo + Vapore", + "allergy_care": "Anti allergenici", + "allergy_care_pro": "Anti allergenici Pro", + "all_in_one_49": "Tutto in uno 49'", + "all_in_one_59": "Tutto in uno 59'", + "all_in_one_59_steam": "Lavaggio attivo + Vapore", + "autocare": "Autocare", + "autoclean": "Pulizia del tamburo", + "baby_60": "Bambino 60°C", + "care_14": "Rapido 14'", + "care_30": "Rapido 30'", + "care_44": "Rapido 44'", + "checkup": "Check-Up", + "colour_59": "Colorati 59'", + "colour_59_steam": "Colorati 59' + Vapore", + "cottons": "Cotone", + "cottons_prewash": "Cotone + Prelavaggio", + "cottons_steam": "Cotone + Vapore", + "cotton_care_59": "Cura Cotone 59'", + "delicate_59": "Delicati 59'", + "delicate_silk": "Delicati e Seta", + "delicate_silk_steam": "Delicati e Seta + Vapore", + "delicati_59": "Delicati 59'", + "delicati_59_steam": "Delicati 59' + Vapore", + "drain_spin": "Scarico e Centrifuga", + "easy_iron": "Pronto Stiro", + "eco_40_60_new_energy_label": "Eco 40-60", + "extra_care": "Extra Care", + "fitness": "Fitness Care", + "fitness_care": "Fitness Care", + "fresh_care": "Fresh Care", + "fresh_care_steam": "Fresh Care + Vapore", + "handwash_wool": "Lavaggio A Mano + Lana", + "high_dry": "Asciugatura Alta", + "hqd_20_degrees": "Cotone 20℃", + "hqd_allergy": "Anti allergenici", + "hqd_autoclean": "Pulizia del tamburo", + "hqd_babycare": "Bambino", + "hqd_baby_care": "Bambino", + "hqd_bath_towel": "Asciugamani", + "hqd_bed_sheets": "Lenzuola", + "hqd_bulky": "Vestiti voluminosi", + "hqd_casual": "Casual", + "hqd_checkup": "Check-Up", + "hqd_cold_wind_30": "Brezza rinfrescante 30'", + "hqd_cold_wind_timing": "Brezza rinfrescante", + "hqd_cotton": "Cotone", + "hqd_cottons": "Cotone", + "hqd_curtain": "Tende", + "hqd_delicate": "Delicati", + "hqd_delicate_cradle": "Delicati", + "hqd_diaper": "Pannolini", + "hqd_dry": "Asciugatura Cotone", + "hqd_dry_synthetics": "Asciugatura bassa", + "hqd_duvet": "Piumino", + "hqd_eco_40_60_degrees": "Eco 40-60", + "hqd_feather": "Piuma", + "hqd_handwash_wool": "Lana", + "hqd_hot_wind_timing": "Aria calda", + "hqd_hygienic": "Igienizzante", + "hqd_i_refresh": "i-Refresh", + "hqd_i_refresh_pro": "i-Refresh Pro", + "hqd_jacket": "Giacche", + "hqd_jeans": "Jeans", + "hqd_luxury": "Vestiti preziosi", + "hqd_mix": "Misti", + "hqd_night_dry": "Asciugatura notturna", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_15": "Rapido 15'", + "hqd_quick_20": "Rapido 20'", + "hqd_quick_30": "Rapido 30'", + "hqd_quick_dry": "Asciugatura Rapida", + "hqd_quick_wash_57": "Lavaggio Rapido 57'", + "hqd_quilt": "Trapunta", + "hqd_rapid_wash_and_dry": "Lavaggio e Asciugatura", + "hqd_refresh": "Refresh", + "hqd_rinse": "Risciacqui", + "hqd_school_uniform": "Uniforme scolastica", + "hqd_shirt": "Camicie", + "hqd_shirts": "Camicie", + "hqd_shoes": "Scarpe", + "hqd_silk": "Seta", + "hqd_smart": "Smart A.I.", + "hqd_spin": "Centrifuga", + "hqd_sport": "Sport", + "hqd_sports": "Sports", + "hqd_super_fast": "Rapido 39'", + "hqd_synthetic_and_coloured": "Sintetici", + "hqd_synthetics": "Sintetici", + "hqd_timer": "Timer", + "hqd_towel": "Asciugamani", + "hqd_underwear": "Intimo", + "hqd_warm_up": "Riscaldamento", + "hqd_wool": "Lana", + "hqd_working_suit": "Completo da lavoro", + "hygiene_59": "Igiene Plus 59'", + "hygiene_60": "Igiene 60°C", + "hygiene_plus_59": "Igiene Plus 59'", + "hygiene_plus_59_min": "Igiene Plus 59'", + "hygiene_pro _49_MIN": "Igiene Pro 49'", + "hygiene_pro_49_min": "Igiene Pro 49'", + "hygiene_pro_steam": "Hygiene Pro + Vapore", + "intensive_40": "Intensivo 40°C", + "intensive_40_steam": "Intensivo 40°C + Vapore", + "iot_active_steam": "Vapore", + "iot_active_wash_steam": "Active Wash + Vapore", + "iot_allergy_care_pro": "Allergy Care Pro", + "iot_all_in_one_59_steam": "Active Wash + Vapore", + "iot_checkup": "Check-Up", + "iot_colour_59_steam": "Colorati 59' + Vapore", + "iot_cottons_steam": "Cotone + Vapore", + "iot_delicate_silk_steam": "Delicati e Seta + Vapore", + "iot_delicati_59_steam": "Delicati 59' + Vapore", + "iot_dry_air_refresh": "Air Refresh", + "iot_dry_anti_mites": "Anti-Acari", + "iot_dry_baby": "Baby", + "iot_dry_backpacks": "Zaini", + "iot_dry_bathrobe": "Accappatoi e Spugne", + "iot_dry_bed_linen": "Lenzuola", + "iot_dry_cotton_dry": "Asciugatura cotone", + "iot_dry_cuddly_toys": "Peluches", + "iot_dry_curtains": "Tende", + "iot_dry_dehumidifier": "Rimuovi umidità", + "iot_dry_delicates_antiallergy": "Antiallergia Delicati", + "iot_dry_delicate_tablecloths": "Tovaglie delicate", + "iot_dry_denim_jeans": "Denim - Jeans", + "iot_dry_easy_iron_cotton": "Stiro Facile - Cotone", + "iot_dry_easy_iron_synthetics": "Stiro Facile - Sintetici", + "iot_dry_gym_fit": "Gym fit - Fitness", + "iot_dry_lingerie": "Lingerie", + "iot_dry_mixed_dry": "Asciugatura Misti", + "iot_dry_rapid_60_min_delicates": "Rapido 60' - Tessuti Delicati", + "iot_dry_shirts": "Camicie", + "iot_dry_swimsuits_and_bikinis": "Costumi e Bikini", + "iot_dry_synthetics": "Asciugatura Sintetici", + "iot_dry_synthetic_dry": "Asciugatura Sintetici", + "iot_dry_tablecloths": "Tovaglie", + "iot_dry_technical_fabrics": "Tessuti tecnici", + "iot_dry_warm_embrace": "Caldo abbraccio", + "iot_dry_wool_dry": "Asciugatura lana", + "iot_easy_iron": "Stiro Facile", + "iot_fresh_care_steam": "Fresh Care + Vapore", + "iot_hygiene_pro_steam": "Hygiene Pro + Vapore", + "iot_intensive_40_steam": "Intensivo 40°C + Vapore", + "iot_mixed_steam": "Misti + Vapore", + "iot_mix_and_colour_59_steam": "Misti e Colorati 59' + Vapore", + "iot_perfect_cotton_59_steam": "Cotone Perfetto 59' + Vapore", + "iot_rapid_a_class_60_steam": "Rapido 59' Classe A + Vapore", + "iot_resistant_cotton_steam": "Cotone Resistente + Vapore", + "iot_shirts_steam": "Camicie + Vapore", + "iot_single_item_steam": "Capo Singolo + Vapore", + "iot_smart_wash": "Smart Wash", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "Special 39' + Vapore", + "iot_steam_hygiene_plus": "Hygiene Plus + Vapore", + "iot_synthetic_and_coloured_steam": "Sintetici e Colorati + Vapore", + "iot_wash_and_dry": "Lava & Asciuga", + "iot_wash_anti_mites": "Anti-acari", + "iot_wash_anti_odor": "Anti-odore", + "iot_wash_ariel_clean_cycle": "Ariel Antimacchia", + "iot_wash_ariel_cold_cycle": "Ariel Freddo", + "iot_wash_ariel_fresh_cycle": "Ariel Delicato", + "iot_wash_baby_sanitizer": "Igienizzante", + "iot_wash_baby_sanitizer_steam": "Igienizzante + Vapore", + "iot_wash_backpacks": "Zaini", + "iot_wash_backpacks_zelig": "Zaini", + "iot_wash_bathrobe": "Accappatoi e Spugne", + "iot_wash_bathrobe_steam": "Accappatoi e Spugne + Vapore", + "iot_wash_bed_linen": "Lenzuola", + "iot_wash_bed_linen_steam": "Lenzuola + Vapore", + "iot_wash_bed_linen_zelig": "Lenzuola", + "iot_wash_big_single_load": "Carico singolo grande", + "iot_wash_bleaching": "Candeggio", + "iot_wash_blood_stains": "Macchie di sangue", + "iot_wash_cashmere": "Cashmere", + "iot_wash_chocolate_stains": "Macchie cioccolato", + "iot_wash_cold_wash": "Lavaggio a freddo", + "iot_wash_colored": "Colorati", + "iot_wash_colored_anti_stain": "Antimacchia colorati", + "iot_wash_colored_delicate": "Colorati delicati", + "iot_wash_coloured": "Colorati", + "iot_wash_coloured_bed_linen": "Lenzuola Colorate", + "iot_wash_coloured_bed_linen_steam": "Lenzuola Colorate + Vapore", + "iot_wash_coloured_curtains": "Tende Colorate", + "iot_wash_coloured_shirts": "Camicie Colorate", + "iot_wash_coloured_shirts_steam": "Camicie Colorate + Vapore", + "iot_wash_coloured_steam": "Colorati + Vapore", + "iot_wash_coloured_tableclothes": "Tovaglie Colorate", + "iot_wash_coloured_tableclothes_steam": "Tovaglie Colorate + Vapore", + "iot_wash_cotton": "Cotone", + "iot_wash_cotton_steam": "Cotone + Vapore", + "iot_wash_cuddly_toys": "Peluches", + "iot_wash_curtains": "Tende", + "iot_wash_curtains_steam": "Tende + Vapore", + "iot_wash_curtains_zelig": "Tende", + "iot_wash_dark": "Scuri", + "iot_wash_darks_and_coloured_44": "Scuri e colorati 44'", + "iot_wash_darks_and_coloured_59": "Scuri e colorati 59'", + "iot_wash_darks_and_coloured_xl": "Scuri e colorati XL", + "iot_wash_dark_steam": "Scuri + Vapore", + "iot_wash_dash_clean_cycle": "Dash Antimacchia", + "iot_wash_dash_cold_cycle": "Dash Freddo", + "iot_wash_dash_fresh_cycle": "Dash Delicato", + "iot_wash_delicate": "Delicati", + "iot_wash_delicate_antiallergy": "Anti-Allergy Delicati", + "iot_wash_delicate_antiallergy_steam": "Anti-Allergy Delicati + Vapore", + "iot_wash_delicate_antiallergy_zelig": "Anti-Allergy Delicati", + "iot_wash_delicate_colors": "Colorati Delicati", + "iot_wash_delicate_colors_steam": "Colorati Delicati + Vapore", + "iot_wash_delicate_dark": "Scuri Delicati", + "iot_wash_delicate_steam": "Delicati + Vapore", + "iot_wash_delicate_tablecloths": "Tovaglie Delicate", + "iot_wash_delicate_tablecloths_steam": "Tovaglie Delicate + Vapore", + "iot_wash_delicate_whites": "Bianchi Delicati", + "iot_wash_denim_jeans": "Denim - jeans", + "iot_wash_diving_suits": "Mute da sub", + "iot_wash_diving_suits_zelig": "Mute da sub", + "iot_wash_down_jackets": "Piumini", + "iot_wash_down_jackets_zelig": "Piumini", + "iot_wash_duvet": "Piumone", + "iot_wash_fruit_stains": "Macchie di frutta", + "iot_wash_gym_fit": "Gym fit - Fitness", + "iot_wash_handwash": "Lavaggio a mano", + "iot_wash_handwash_colored": "Lavaggio a mano Colorati", + "iot_wash_handwash_dark": "Lavaggio a mano Scuri", + "iot_wash_lingerie": "Lingerie", + "iot_wash_masks_refresh": "Pulizia Mascherine", + "iot_wash_masks_sanification": "Sanificazione Mascherine", + "iot_wash_masks_sanification_steam": "Sanificazione Mascherine + Vapore", + "iot_wash_mats": "Tappetini", + "iot_wash_men_s_trousers": "Pantaloni", + "iot_wash_mixed": "Misti", + "iot_wash_mixed_steam": "Misti + Vapore", + "iot_wash_mix_and_coloured_44": "Misti e colorati 44'", + "iot_wash_mix_and_coloured_59": "Misti e colorati 59'", + "iot_wash_mix_and_coloured_xl": "Misti e colorati XL", + "iot_wash_new_clothes": "Capi nuovi", + "iot_wash_perfect_white": "Bianco Perfetto", + "iot_wash_perfect_white_steam": "Bianco Perfetto + Vapore", + "iot_wash_pets": "Accessori Animali Domestici", + "iot_wash_pets_hair_removal": "Rimozione Peli Animali", + "iot_wash_pets_odours_stains_removal": "Rimozione Odori e Macchie Animali", + "iot_wash_pets_steam": "Accessori Animali Domestici + Vapore", + "iot_wash_playsuits": "Tutine", + "iot_wash_playsuits_steam": "Tutine + Vapore", + "iot_wash_quick_drum_cleaner": "Pulizia Rapida Cesto", + "iot_wash_rapid_14": "Rapido 14'", + "iot_wash_rapid_30": "Rapido 30'", + "iot_wash_rapid_44": "Rapido 44'", + "iot_wash_rapid_59": "Rapido 59'", + "iot_wash_rapid_59_steam": "Rapido 59' + Vapore", + "iot_wash_refresh_14_min": "Refresh 14'", + "iot_wash_resistant_colored": "Colorati Resistenti", + "iot_wash_resistant_dark": "Scuri Resistenti", + "iot_wash_resistant_whites": "Bianchi Resistenti", + "iot_wash_rinse": "Risciacqui", + "iot_wash_shirts": "Camicie", + "iot_wash_shirts_steam": "Camicie + Vapore", + "iot_wash_silk": "Seta", + "iot_wash_ski_suit": "Tuta da sci", + "iot_wash_ski_suit_zelig": "Tuta da sci", + "iot_wash_spin": "Centrifuga", + "iot_wash_sport": "Sport", + "iot_wash_sport_anti_odor": "Sport Antiodori", + "iot_wash_sport_anti_odor_zelig": "Sport Antiodori", + "iot_wash_stains_remover": "Smacchia tutto", + "iot_wash_swimsuits_and_bikinis": "Costumi e Bikini", + "iot_wash_synthetic": "Sintetici", + "iot_wash_synthetic_steam": "Sintetici + Vapore", + "iot_wash_tablecloths": "Tovaglie", + "iot_wash_tablecloths_steam": "Tovaglie + Vapore", + "iot_wash_technical_fabrics": "Tessuti Tecnici", + "iot_wash_technical_fabrics_zelig": "Tessuti Tecnici", + "iot_wash_technical_jackets": "Giacconi Tecnici", + "iot_wash_technical_jackets_zelig": "Giacconi Tecnici", + "iot_wash_trainers": "Scarpe da ginnastica", + "iot_wash_whites": "Bianchi", + "iot_wash_whites_44": "Bianchi 44'", + "iot_wash_whites_59": "Bianchi 59'", + "iot_wash_whites_xl": "Bianchi XL", + "iot_wash_wine_stains": "Macchie di Vino", + "iot_wash_wool": "Lana", + "jeans": "Jeans", + "jeans_60": "Jeans", + "low_dry": "Asciugatura Misti", + "mixed": "Misti", + "mixed_and_colored_59": "Misti e Colorati 59'", + "mixed_steam": "Misti + Vapore", + "mix_and_colour_59": "Misti e Colorati 59'", + "mix_and_colour_59_steam": "Misti e Colorati 59' + Vapore", + "night_and_day": "Night and Day", + "night_wash": "Ciclo Notturno", + "perfect_59": "Perfetto 59'", + "perfect_cotton_59": "Cotone Perfetto 59'", + "perfect_cotton_59_steam": "Cotone Perfetto 59' + Vapore", + "perfect_whites_59": "Bianco Perfetto 59'", + "rapid_14_min": "Rapido 14'", + "rapid_30_min": "Rapido 30'", + "rapid_44_min": "Rapido 44'", + "rapid_a_class_60": "Rapido 59' Classe A", + "rapid_a_class_60_steam": "Rapido 59' Classe A + Vapore", + "rapid_wash_and_dry_59_min": "Lavasciuga 59'", + "resistant_cotton": "Cotone Resistente", + "resistant_cotton_steam": "Cotone Resistente + Vapore", + "rinse": "Risciacqui", + "shirts_steam": "Camicie + Vapore", + "silent_night": "Ciclo Notturno", + "single_item": "Capo Singolo", + "single_item_steam": "Capo Singolo + Vapore", + "smart_wash": "Smart Wash", + "soft_care": "Soft Care", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "Special 39'", + "special_39_full_load": "Special 39'", + "special_39_full_load_steam": "Special 39' + Vapore", + "special_49": "Special 49'", + "sport_39": "Sport 39'", + "sport_plus_29": "Sport Plus 29\"", + "sport_plus_39": "Sport Plus 39'", + "steam_39": "Vapore 39'", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro - Cotone", + "steam_care_pro_delicates": "Steam Care Pro - Delicati", + "steam_care_pro_synthetic": "Steam Care Pro - Sintetici", + "steam_hygiene_plus": "Hygiene Plus + Vapore", + "synthetics": "Sintetici", + "synthetic_and_coloured": "Sintetici e Colorati", + "synthetic_and_coloured_steam": "Sintetici e Colorati + Vapore", + "tailored_resistant_cotton": "Cotone resistente su misura", + "tailored_synthetic_and_coloured": "Sartoriale Sintetico Colorato", + "total_care": "Total Care", + "tumbling": "Tumbling", + "wool": "Lana", + "wool_and_delicates_49": "Lana e Delicati 49'", + "wool_dry": "Asciugatura Lana", + "wool_soft_care": "Lana e Soft Care" + } + } + } + } +} \ No newline at end of file -- 2.39.5 From e0cba7379aff796f05ca65322eacb82541633c3b Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Thu, 20 Apr 2023 22:07:14 +0200 Subject: [PATCH 053/205] Fix wrong unit of current energy usage #30 --- custom_components/hon/sensor.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 32d7aee..af93799 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -55,7 +55,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { name="Current Electricity Used", state_class=SensorStateClass.MEASUREMENT, device_class=SensorDeviceClass.POWER, - native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, + native_unit_of_measurement=UnitOfPower.KILO_WATT, icon="mdi:lightning-bolt", ), SensorEntityDescription( @@ -171,7 +171,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { name="Current Electricity Used", state_class=SensorStateClass.MEASUREMENT, device_class=SensorDeviceClass.POWER, - native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, + native_unit_of_measurement=UnitOfPower.KILO_WATT, icon="mdi:lightning-bolt", ), SensorEntityDescription( -- 2.39.5 From aa7b40a45485865756b60f8e60060a6ea0dca505 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sat, 22 Apr 2023 02:47:55 +0200 Subject: [PATCH 054/205] Auto translate pr phase and mach mode --- .gitignore | 3 +- custom_components/hon/sensor.py | 27 +- custom_components/hon/translations/cs.json | 71 ++ custom_components/hon/translations/de.json | 71 ++ custom_components/hon/translations/el.json | 71 ++ custom_components/hon/translations/en.json | 1221 +++++++++++--------- custom_components/hon/translations/es.json | 71 ++ custom_components/hon/translations/fr.json | 71 ++ custom_components/hon/translations/he.json | 71 ++ custom_components/hon/translations/hr.json | 71 ++ custom_components/hon/translations/it.json | 85 +- custom_components/hon/translations/nl.json | 71 ++ custom_components/hon/translations/pl.json | 71 ++ custom_components/hon/translations/pt.json | 71 ++ custom_components/hon/translations/ro.json | 71 ++ custom_components/hon/translations/ru.json | 71 ++ custom_components/hon/translations/sk.json | 71 ++ custom_components/hon/translations/sl.json | 71 ++ custom_components/hon/translations/sr.json | 71 ++ custom_components/hon/translations/tr.json | 71 ++ custom_components/hon/translations/zh.json | 71 ++ scripts/generate_translation.py | 157 +++ 22 files changed, 2104 insertions(+), 596 deletions(-) create mode 100644 custom_components/hon/translations/cs.json create mode 100644 custom_components/hon/translations/de.json create mode 100644 custom_components/hon/translations/el.json create mode 100644 custom_components/hon/translations/es.json create mode 100644 custom_components/hon/translations/fr.json create mode 100644 custom_components/hon/translations/he.json create mode 100644 custom_components/hon/translations/hr.json create mode 100644 custom_components/hon/translations/nl.json create mode 100644 custom_components/hon/translations/pl.json create mode 100644 custom_components/hon/translations/pt.json create mode 100644 custom_components/hon/translations/ro.json create mode 100644 custom_components/hon/translations/ru.json create mode 100644 custom_components/hon/translations/sk.json create mode 100644 custom_components/hon/translations/sl.json create mode 100644 custom_components/hon/translations/sr.json create mode 100644 custom_components/hon/translations/tr.json create mode 100644 custom_components/hon/translations/zh.json create mode 100644 scripts/generate_translation.py diff --git a/.gitignore b/.gitignore index 1dcccdc..8a0f8ea 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ __pycache__/ -scripts/test.py .idea/ +scripts/translations/ +scripts/test* diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index af93799..20ec3b8 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -30,6 +30,12 @@ _LOGGER = logging.getLogger(__name__) SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { "WM": ( + SensorEntityDescription( + key="prPhase", + name="Program Phase", + icon="mdi:washing-machine", + translation_key="program_phases_wm", + ), SensorEntityDescription( key="totalElectricityUsed", name="Total Power", @@ -76,7 +82,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { key="machMode", name="Machine Status", icon="mdi:information", - translation_key="mode", + translation_key="washing_modes", ), SensorEntityDescription( key="errors", name="Error", icon="mdi:math-log", translation_key="errors" @@ -101,7 +107,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { key="machMode", name="Machine Status", icon="mdi:information", - translation_key="mode", + translation_key="washing_modes", ), SensorEntityDescription( key="errors", name="Error", icon="mdi:math-log", translation_key="errors" @@ -129,8 +135,8 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { SensorEntityDescription( key="prPhase", name="Program Phase", - icon="mdi:tumble-dryer", - translation_key="tumbledryerprogramphase", + icon="mdi:washing-machine", + translation_key="program_phases_td", ), SensorEntityDescription( key="dryLevel", @@ -192,7 +198,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { key="machMode", name="Machine Status", icon="mdi:information", - translation_key="mode", + translation_key="washing_modes", ), SensorEntityDescription( key="spinSpeed", @@ -216,7 +222,8 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { SensorEntityDescription( key="prPhase", name="Program Phase", - icon="mdi:tumble-dryer", + icon="mdi:washing-machine", + translation_key="program_phases_wm", ), SensorEntityDescription( key="dryLevel", @@ -336,7 +343,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { key="machMode", name="Machine Status", icon="mdi:information", - translation_key="mode_dw", + translation_key="washing_modes", ), SensorEntityDescription( key="errors", name="Error", icon="mdi:math-log", translation_key="errors" @@ -348,6 +355,12 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=UnitOfTime.MINUTES, ), + SensorEntityDescription( + key="prPhase", + name="Program Phase", + icon="mdi:washing-machine", + translation_key="program_phases_dw", + ), ), } diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json new file mode 100644 index 0000000..afd3b9b --- /dev/null +++ b/custom_components/hon/translations/cs.json @@ -0,0 +1,71 @@ +{ + "entity": { + "sensor": { + "washing_modes": { + "state": { + "0": "P\u0159ipraveno", + "1": "P\u0159ipraveno", + "3": "Pozastavit", + "4": "Napl\u00e1nov\u00e1no", + "5": "Napl\u00e1nov\u00e1no", + "6": "Chyba", + "7": "P\u0159ipraveno" + } + }, + "program_phases_wm": { + "state": { + "0": "P\u0159ipraveno", + "1": "Pran\u00ed", + "2": "Pran\u00ed", + "3": "Odst\u0159e\u010fov\u00e1n\u00ed", + "4": "M\u00e1ch\u00e1n\u00ed", + "5": "M\u00e1ch\u00e1n\u00ed", + "6": "M\u00e1ch\u00e1n\u00ed", + "7": "Su\u0161en\u00ed", + "9": "P\u00e1ra", + "10": "P\u0159ipraveno", + "11": "Odst\u0159e\u010fov\u00e1n\u00ed", + "12": "V\u00e1\u017een\u00ed ", + "13": "V\u00e1\u017een\u00ed ", + "14": "Pran\u00ed", + "15": "Pran\u00ed", + "16": "Pran\u00ed", + "17": "M\u00e1ch\u00e1n\u00ed", + "18": "M\u00e1ch\u00e1n\u00ed", + "19": "Napl\u00e1nov\u00e1no", + "20": "Keep Fresh", + "24": "Osv\u011b\u017een\u00ed", + "25": "Pran\u00ed", + "26": "Oh\u0159ev", + "27": "Pran\u00ed" + } + }, + "program_phases_td": { + "state": { + "0": "P\u0159ipraveno", + "1": "Su\u0161en\u00ed", + "2": "Su\u0161en\u00ed", + "3": "Vychladnut\u00ed", + "13": "Vychladnut\u00ed", + "14": "Su\u0161en\u00ed", + "15": "Su\u0161en\u00ed", + "16": "Vychladnut\u00ed", + "18": "Keep Fresh", + "19": "Su\u0161en\u00ed", + "20": "Su\u0161en\u00ed" + } + }, + "program_phases_dw": { + "state": { + "0": "P\u0159ipraveno", + "1": "P\u0159edp\u00edrka", + "2": "Pran\u00ed", + "3": "M\u00e1ch\u00e1n\u00ed", + "4": "Su\u0161en\u00ed", + "5": "P\u0159ipraveno", + "6": "Hot rinse" + } + } + } + } +} \ No newline at end of file diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json new file mode 100644 index 0000000..41bb4fb --- /dev/null +++ b/custom_components/hon/translations/de.json @@ -0,0 +1,71 @@ +{ + "entity": { + "sensor": { + "washing_modes": { + "state": { + "0": "Bereit", + "1": "Bereit", + "3": "Anhalten", + "4": "Geplant", + "5": "Geplant", + "6": "Fehler", + "7": "Bereit" + } + }, + "program_phases_wm": { + "state": { + "0": "Bereit", + "1": "Waschen", + "2": "Waschen", + "3": "Schleudern", + "4": "Sp\u00fclen", + "5": "Sp\u00fclen", + "6": "Sp\u00fclen", + "7": "Trocknen", + "9": "Dampf", + "10": "Bereit", + "11": "Schleudern", + "12": "Wiegen ", + "13": "Wiegen ", + "14": "Waschen", + "15": "Waschen", + "16": "Waschen", + "17": "Sp\u00fclen", + "18": "Sp\u00fclen", + "19": "Geplant", + "20": "Auffrischen", + "24": "Auffrischen", + "25": "Waschen", + "26": "Heizung", + "27": "Waschen" + } + }, + "program_phases_td": { + "state": { + "0": "Bereit", + "1": "Trocknen", + "2": "Trocknen", + "3": "Abk\u00fchlen", + "13": "Abk\u00fchlen", + "14": "Trocknen", + "15": "Trocknen", + "16": "Abk\u00fchlen", + "18": "Auffrischen", + "19": "Trocknen", + "20": "Trocknen" + } + }, + "program_phases_dw": { + "state": { + "0": "Bereit", + "1": "Vorwaschen", + "2": "Waschen", + "3": "Sp\u00fclen", + "4": "Trocknen", + "5": "Bereit", + "6": "Hot rinse" + } + } + } + } +} \ No newline at end of file diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json new file mode 100644 index 0000000..3fdf9d6 --- /dev/null +++ b/custom_components/hon/translations/el.json @@ -0,0 +1,71 @@ +{ + "entity": { + "sensor": { + "washing_modes": { + "state": { + "0": "\u0395\u03c4\u03bf\u03b9\u03bc\u03bf\u03c2", + "1": "\u0395\u03c4\u03bf\u03b9\u03bc\u03bf\u03c2", + "3": "\u03a0\u03b1\u03cd\u03c3\u03b7", + "4": "\u03a0\u03c1\u03bf\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf\u03c2", + "5": "\u03a0\u03c1\u03bf\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf\u03c2", + "6": "\u039b\u03ac\u03b8\u03bf\u03c2", + "7": "\u0395\u03c4\u03bf\u03b9\u03bc\u03bf\u03c2" + } + }, + "program_phases_wm": { + "state": { + "0": "\u0395\u03c4\u03bf\u03b9\u03bc\u03bf\u03c2", + "1": "\u03a0\u03bb\u03cd\u03c3\u03b7", + "2": "\u03a0\u03bb\u03cd\u03c3\u03b7", + "3": "\u03a3\u03c4\u03cd\u03c8\u03b9\u03bc\u03bf", + "4": "\u039e\u03ad\u03b2\u03b3\u03b1\u03bb\u03bc\u03b1", + "5": "\u039e\u03ad\u03b2\u03b3\u03b1\u03bb\u03bc\u03b1", + "6": "\u039e\u03ad\u03b2\u03b3\u03b1\u03bb\u03bc\u03b1", + "7": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", + "9": "\u0391\u03c4\u03bc\u03cc\u03c2", + "10": "\u0395\u03c4\u03bf\u03b9\u03bc\u03bf\u03c2", + "11": "\u03a3\u03c4\u03cd\u03c8\u03b9\u03bc\u03bf", + "12": "\u0396\u03cd\u03b3\u03b9\u03c3\u03bc\u03b1 ", + "13": "\u0396\u03cd\u03b3\u03b9\u03c3\u03bc\u03b1 ", + "14": "\u03a0\u03bb\u03cd\u03c3\u03b7", + "15": "\u03a0\u03bb\u03cd\u03c3\u03b7", + "16": "\u03a0\u03bb\u03cd\u03c3\u03b7", + "17": "\u039e\u03ad\u03b2\u03b3\u03b1\u03bb\u03bc\u03b1", + "18": "\u039e\u03ad\u03b2\u03b3\u03b1\u03bb\u03bc\u03b1", + "19": "\u03a0\u03c1\u03bf\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf\u03c2", + "20": "\u039a\u03c1\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 \u03c4\u03b7 \u03c6\u03c1\u03b5\u03c3\u03ba\u03ac\u03b4\u03b1", + "24": "\u03a6\u03c1\u03b5\u03c3\u03ba\u03ac\u03c1\u03b9\u03c3\u03bc\u03b1", + "25": "\u03a0\u03bb\u03cd\u03c3\u03b7", + "26": "\u0398\u03ad\u03c1\u03bc\u03b1\u03bd\u03c3\u03b7", + "27": "\u03a0\u03bb\u03cd\u03c3\u03b7" + } + }, + "program_phases_td": { + "state": { + "0": "\u0395\u03c4\u03bf\u03b9\u03bc\u03bf\u03c2", + "1": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", + "2": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", + "3": "\u03a0\u03b5\u03c1\u03af\u03bf\u03b4\u03bf\u03c2 \u03b1\u03bd\u03b1\u03bc\u03bf\u03bd\u03ae\u03c2", + "13": "\u03a0\u03b5\u03c1\u03af\u03bf\u03b4\u03bf\u03c2 \u03b1\u03bd\u03b1\u03bc\u03bf\u03bd\u03ae\u03c2", + "14": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", + "15": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", + "16": "\u03a0\u03b5\u03c1\u03af\u03bf\u03b4\u03bf\u03c2 \u03b1\u03bd\u03b1\u03bc\u03bf\u03bd\u03ae\u03c2", + "18": "\u039a\u03c1\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 \u03c4\u03b7 \u03c6\u03c1\u03b5\u03c3\u03ba\u03ac\u03b4\u03b1", + "19": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", + "20": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1" + } + }, + "program_phases_dw": { + "state": { + "0": "\u0395\u03c4\u03bf\u03b9\u03bc\u03bf\u03c2", + "1": "\u03a0\u03c1\u03cc\u03c0\u03bb\u03c5\u03c3\u03b7", + "2": "\u03a0\u03bb\u03cd\u03c3\u03b7", + "3": "\u039e\u03ad\u03b2\u03b3\u03b1\u03bb\u03bc\u03b1", + "4": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", + "5": "\u0395\u03c4\u03bf\u03b9\u03bc\u03bf\u03c2", + "6": "Hot rinse" + } + } + } + } +} \ No newline at end of file diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 6225013..affd77c 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -1,583 +1,648 @@ { - "config": { - "step": { - "user": { - "description": "Please enters your hOn credentials", - "data": { - "email": "Email Address", - "password": "Password" + "config": { + "step": { + "user": { + "description": "Please enters your hOn credentials", + "data": { + "email": "Email Address", + "password": "Password" + } + } } - } - } - }, - "entity": { - "sensor": { - "mode": { - "state": { - "0": "Disconnected", - "1": "Ready", - "2": "Running", - "3": "Paused", - "5": "Scheduled", - "6": "Error", - "7": "Finished" - } - }, - "errors": { - "state": { - "00": "No error", - "100000000000": "E2: Check if the door is closed", - "8000000000000": "E4: Check the water supply" - } - }, - "tumbledryerprogram": { - "state": { - "0": "Default", - "62": "Cotton", - "63": "Synthetics", - "64": "Mix", - "66": "Bed Sheets", - "71": "Curtains", - "72": "Sports", - "74": "i-time", - "75": "Duvet", - "76": "Wool", - "78": "i-Refresh", - "83": "Towel", - "85": "Quick Dry", - "92": "Delicate", - "103": "Remote" - } - }, - "tumbledryerprogramphase": { - "state": { - "0": "Waiting", - "2": "Drying", - "3": "Cooldown", - "11": "11" - } - }, - "tumbledryertemplevel": { - "state": { - "1": "Cool", - "2": "Low temperature L-1", - "3": "Middle temperature L-2", - "4": "High temperature L-3" - } - }, - "tumbledryerdrylevel": { - "state": { - "3": "Cupboard dry", - "12": "Ready to Iron H-1", - "13": "Ready to Store H-2", - "14": "Extra Dry H-3" - } - }, - "mode_dw": { - "state": { - "0": "Disconnected", - "1": "Ready", - "2": "Running", - "3": "Delayed start", - "5": "Delayed start cancelled", - "7": "Finished" - } - } }, - "select": { - "programs": { - "state": { - "20_degrees_coloured_cottons": "20° Colored and Cottons", - "20_degrees_new_energy_label": "20°C", - "active_steam": "Steam", - "active_wash": "Active Wash", - "active_wash_steam": "Active Wash + Steam", - "allergy_care": "Allergy Care", - "allergy_care_pro": "Allergy Care Pro", - "all_in_one_49": "All in One 49'", - "all_in_one_59": "All in One 59'", - "all_in_one_59_steam": "Active Wash + Steam", - "autocare": "Autocare", - "autoclean": "Drum Cleaning", - "baby_60": "All Baby 60°C", - "care_14": "Rapid Care 14'", - "care_30": "Rapid Care 30'", - "care_44": "Rapid Care 44'", - "checkup": "Check-Up", - "colour_59": "Colored 59'", - "colour_59_steam": "Colored 59' + Steam", - "cottons": "Cotton", - "cottons_prewash": "Cottons + Prewash", - "cottons_steam": "Cotton + Steam", - "cotton_care_59": "Cotton Care 59'", - "delicate_59": "Delicate 59'", - "delicate_silk": "Delicate and Silk", - "delicate_silk_steam": "Delicate and Silk + Steam", - "delicati_59": "Delicate 59'", - "delicati_59_steam": "Delicate 59' + Steam", - "drain_spin": "Drain + Spin", - "easy_iron": "Easy Iron", - "eco_40_60_new_energy_label": "Eco 40-60", - "extra_care": "Extra Care", - "fitness": "Fitness Care", - "fitness_care": "Fitness Care", - "fresh_care": "Fresh Care", - "fresh_care_steam": "Fresh Care + Steam", - "handwash_wool": "Hand Wash + Wool", - "high_dry": "High Heat Dry", - "hqd_20_degrees": "Cotton 20℃", - "hqd_allergy": "Allergy Care", - "hqd_autoclean": "Drum Cleaning", - "hqd_babycare": "Baby Care", - "hqd_baby_care": "Baby care", - "hqd_bath_towel": "Bath towel", - "hqd_bed_sheets": "Bed sheets", - "hqd_bulky": "Bulky", - "hqd_casual": "Casual", - "hqd_checkup": "Check-Up", - "hqd_cold_wind_30": "Cold wind 30'", - "hqd_cold_wind_timing": "Cold wind timing", - "hqd_cotton": "Cotton", - "hqd_cottons": "Cotton", - "hqd_curtain": "Curtain", - "hqd_delicate": "Delicate", - "hqd_delicate_cradle": "Delicate", - "hqd_diaper": "Diaper", - "hqd_dry": "Cotton Dry", - "hqd_dry_synthetics": "Low Heat Dry", - "hqd_duvet": "Duvet", - "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_feather": "Feather", - "hqd_handwash_wool": "Wool", - "hqd_hot_wind_timing": "Hot wind timing", - "hqd_hygienic": "Hygienic", - "hqd_i_refresh": "i-Refresh", - "hqd_i_refresh_pro": "i-Refresh Pro", - "hqd_jacket": "Jacket", - "hqd_jeans": "Jeans", - "hqd_luxury": "Luxury", - "hqd_mix": "Mix", - "hqd_night_dry": "Night dry", - "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", - "hqd_quick_15": "Quick 15'", - "hqd_quick_20": "Quick 20'", - "hqd_quick_30": "Quick 30'", - "hqd_quick_dry": "Quick dry", - "hqd_quick_wash_57": "Quick Wash 57'", - "hqd_quilt": "Quilt", - "hqd_rapid_wash_and_dry": "Wash and dry", - "hqd_refresh": "Refresh", - "hqd_rinse": "Rinses", - "hqd_school_uniform": "School uniform", - "hqd_shirt": "Shirt", - "hqd_shirts": "Shirts", - "hqd_shoes": "Shoes", - "hqd_silk": "Silk", - "hqd_smart": "Smart A.I.", - "hqd_spin": "Spin", - "hqd_sport": "Sport", - "hqd_sports": "Sports", - "hqd_super_fast": "Super Fast 39'", - "hqd_synthetic_and_coloured": "Synthetics", - "hqd_synthetics": "Synthetics", - "hqd_timer": "Timer", - "hqd_towel": "Towel", - "hqd_underwear": "Underwear", - "hqd_warm_up": "Warm up", - "hqd_wool": "Wool", - "hqd_working_suit": "Working suit", - "hygiene_59": "Hygiene Plus 59'", - "hygiene_60": "Hygiene 60°C", - "hygiene_plus_59": "Hygiene Plus 59'", - "hygiene_plus_59_min": "Hygiene Plus 59'", - "hygiene_pro_4_min": "Hygiene Pro 49'", - "hygiene_pro_49_min": "Hygiene Pro 49'", - "hygiene_pro_steam": "Hygiene Pro + Steam", - "intensive_40": "Intensive 40°C", - "intensive_40_steam": "Intensive 40°C + Steam", - "iot_checkup": "Check-Up", - "iot_dry_air_refresh": "Air Refresh", - "iot_dry_anti_mites": "Anti-mite", - "iot_dry_baby": "Baby", - "iot_dry_backpacks": "Backpacks", - "iot_dry_bathrobe": "Bathrobes", - "iot_dry_bed_linen": "Bed Linen", - "iot_dry_cotton_dry": "Cotton Dry", - "iot_dry_cotton": "Cotton", - "iot_dry_cuddly_toys": "Cuddly Toys", - "iot_dry_curtains": "Curtains", - "iot_dry_dehumidifier": "Humidity Remover", - "iot_dry_delicates": "Delicates", - "iot_dry_delicates_antiallergy": "Delicates Anti-allergy", - "iot_dry_delicate_tablecloths": "Delicate Tablecloths", - "iot_dry_denim_jeans": "Denim - Jeans", - "iot_dry_down_jacket": "Down jacket", - "iot_dry_duvet": "Duvet", - "iot_dry_easy_iron_cotton": "Easy Iron - Cotton", - "iot_dry_easy_iron_synthetics": "Easy Iron - Synthetics", - "iot_dry_gym_fit": "Gym fit - Fitness", - "iot_dry_lingerie": "Lingerie", - "iot_dry_mixed": "Mixed", - "iot_dry_mixed_dry": "Mixed Dry", - "iot_dry_rapid_30": "Rapid 30'", - "iot_dry_rapid_59": "Rapid 59'", - "iot_dry_rapid_60_min_delicates": "Rapid 60' - Delicates", - "iot_dry_shirts": "Shirts", - "iot_dry_swimsuits_and_bikinis": "Swimsuits and Bikinis", - "iot_dry_synthetics": "Synthetic Dry", - "iot_dry_synthetic_dry": "Synthetic Dry", - "iot_dry_tablecloths": "Tablecloths", - "iot_dry_technical_fabrics": "Technical Fabrics", - "iot_dry_warm_embrace": "Warm Embrace", - "iot_dry_wool": "Wool", - "iot_dry_wool_dry": "Wool Dry", - "iot_wash_and_dry": "Wash and dry", - "iot_wash_anti_mites": "Anti-mites", - "iot_wash_anti_odor": "Anti-odour", - "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", - "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", - "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", - "iot_wash_baby_sanitizer": "Sanitizer", - "iot_wash_baby_sanitizer_steam": "Sanitiser + Steam", - "iot_wash_backpacks": "Backpacks", - "iot_wash_backpacks_zelig": "Backpacks", - "iot_wash_bathrobe": "Bathrobes and Towels", - "iot_wash_bathrobe_steam": "Bathrobe and Towels + Steam", - "iot_wash_bed_linen": "Bed Linen", - "iot_wash_bed_linen_steam": "Bed Linen + Steam", - "iot_wash_bed_linen_zelig": "Bed Linens", - "iot_wash_big_single_load": "Big single load", - "iot_wash_bleaching": "Bleaching", - "iot_wash_blood_stains": "Bloodstains", - "iot_wash_cashmere": "Cashmere", - "iot_wash_chocolate_stains": "Chocolate stains", - "iot_wash_cold_wash": "Cold Wash", - "iot_wash_colored": "Colored", - "iot_wash_colored_anti_stain": "Colored Anti-stain", - "iot_wash_colored_delicate": "Colored Delicate", - "iot_wash_coloured": "Colored", - "iot_wash_coloured_bed_linen": "Colored Bed Linen", - "iot_wash_coloured_bed_linen_steam": "Coloured Bed Linen + Steam", - "iot_wash_coloured_curtains": "Colored Curtains", - "iot_wash_coloured_shirts": "Colored Shirts", - "iot_wash_coloured_shirts_steam": "Colored Shirts + Steam", - "iot_wash_coloured_steam": "Colored + Steam", - "iot_wash_coloured_tableclothes": "Colored Tableclothes", - "iot_wash_coloured_tableclothes_steam": "Coloured Tablecloths + Steam", - "iot_wash_cotton": "Cotton", - "iot_wash_cotton_steam": "Cotton + Steam", - "iot_wash_cuddly_toys": "Cuddly Toys", - "iot_wash_curtains": "Curtains", - "iot_wash_curtains_steam": "Curtains + Steam", - "iot_wash_curtains_zelig": "Curtains", - "iot_wash_dark": "Darks", - "iot_wash_darks_and_coloured_44": "Darks and Colored 44'", - "iot_wash_darks_and_coloured_59": "Darks and Colored 59'", - "iot_wash_darks_and_coloured_xl": "Darks and Colored XL", - "iot_wash_dark_steam": "Darks + Steam", - "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", - "iot_wash_dash_cold_cycle": "Dash Cold Clean", - "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", - "iot_wash_delicate": "Delicates", - "iot_wash_delicate_antiallergy": "Delicate Anti-Allergy", - "iot_wash_delicate_antiallergy_steam": "Delicate Anti-Allergy + Steam", - "iot_wash_delicate_antiallergy_zelig": "Delicate Anti-Allergy", - "iot_wash_delicate_colors": "Delicate Colors", - "iot_wash_delicate_colors_steam": "Delicate Colors + Steam", - "iot_wash_delicate_dark": "Delicate Darks", - "iot_wash_delicate_steam": "Delicates + Steam", - "iot_wash_delicate_tablecloths": "Delicate Tablecloths", - "iot_wash_delicate_tablecloths_steam": "Delicate Tablecloths + Steam", - "iot_wash_delicate_whites": "Delicate Whites", - "iot_wash_denim_jeans": "Denim - Jeans", - "iot_wash_diving_suits": "Diving Suits", - "iot_wash_diving_suits_zelig": "Diving Suits", - "iot_wash_down_jackets": "Down Jackets", - "iot_wash_down_jackets_zelig": "Down Jackets", - "iot_wash_duvet": "Duvet", - "iot_wash_fruit_stains": "Fruit stains", - "iot_wash_gym_fit": "Gym Fit - Fitness", - "iot_wash_handwash": "Handwash", - "iot_wash_handwash_colored": "Handwash Colored", - "iot_wash_handwash_dark": "Handwash Darks", - "iot_wash_lingerie": "Lingerie", - "iot_wash_masks_refresh": "Masks Refresh", - "iot_wash_masks_sanification": "Masks Sanitization", - "iot_wash_masks_sanification_steam": "Mask Sanitisation + Steam", - "iot_wash_mats": "Mats", - "iot_wash_men_s_trousers": "Trousers", - "iot_wash_mixed": "Mixed", - "iot_wash_mixed_steam": "Mixed + Steam", - "iot_wash_mix_and_coloured_44": "Mix and Colored 44'", - "iot_wash_mix_and_coloured_59": "Mix and Colored 59'", - "iot_wash_mix_and_coloured_xl": "Mix and colored XL", - "iot_wash_new_clothes": "New Clothes", - "iot_wash_perfect_white": "Perfect White", - "iot_wash_perfect_white_steam": "Perfect White + Steam", - "iot_wash_pets": "Pet Accessories", - "iot_wash_pets_hair_removal": "Pets Hair Removal", - "iot_wash_pets_odours_stains_removal": "Pets Odours and Stains Removal", - "iot_wash_pets_steam": "Pet Accessories + Steam", - "iot_wash_playsuits": "Playsuits", - "iot_wash_playsuits_steam": "Playsuits + Steam", - "iot_wash_quick_drum_cleaner": "Quick drum cleaner", - "iot_wash_rapid_14": "Rapid 14’", - "iot_wash_rapid_30": "Rapid 30’", - "iot_wash_rapid_44": "Rapid 44'", - "iot_wash_rapid_59": "Rapid 59'", - "iot_wash_rapid_59_steam": "Rapid 59' + Steam", - "iot_wash_refresh_14_min": "Refresh 14'", - "iot_wash_resistant_colored": "Resistant Colored", - "iot_wash_resistant_dark": "Resistant Darks", - "iot_wash_resistant_whites": "Resistant Whites", - "iot_wash_rinse": "Rinses", - "iot_wash_shirts": "Shirts", - "iot_wash_shirts_steam": "Shirts + Steam", - "iot_wash_silk": "Silk", - "iot_wash_ski_suit": "Ski Suit", - "iot_wash_ski_suit_zelig": "Ski Suit", - "iot_wash_spin": "Spin", - "iot_wash_sport": "Sport", - "iot_wash_sport_anti_odor": "Anti-odour Sportswear", - "iot_wash_sport_anti_odor_zelig": "Anti-odour Sportswear", - "iot_wash_stains_remover": "Stain Remover", - "iot_wash_swimsuits_and_bikinis": "Swimsuits and Bikinis", - "iot_wash_synthetic": "Synthetics", - "iot_wash_synthetic_steam": "Synthetics + Steam", - "iot_wash_tablecloths": "Tablecloths", - "iot_wash_tablecloths_steam": "Tablecloths + Steam", - "iot_wash_technical_fabrics": "Technical Fabrics", - "iot_wash_technical_fabrics_zelig": "Technical Fabrics", - "iot_wash_technical_jackets": "Technical Jackets", - "iot_wash_technical_jackets_zelig": "Technical Jackets", - "iot_wash_trainers": "Trainers", - "iot_wash_whites": "Whites", - "iot_wash_whites_44": "Whites 44'", - "iot_wash_whites_59": "Whites 59'", - "iot_wash_whites_xl": "Whites XL", - "iot_wash_wine_stains": "Wine Stains", - "iot_wash_wool": "Wool", - "jeans": "Jeans", - "jeans_60": "Jeans", - "low_dry": "Low Heat Dry", - "mixed": "Mixed", - "mixed_and_colored_59": "Mixed and Colored 59'", - "mixed_steam": "Mixed + Steam", - "mix_and_colour_59": "Mixed and Colored 59'", - "mix_and_colour_59_steam": "Mixed and Coloured 59' + Steam", - "night_and_day": "Night and Day", - "night_wash": "Night Wash", - "perfect_59": "Perfect 59'", - "perfect_cotton_59": "Perfect Cotton 59'", - "perfect_cotton_59_steam": "Perfect Cotton 59' + Steam", - "perfect_whites_59": "Perfect White 59'", - "rapid_14_min": "Rapid 14'", - "rapid_30_min": "Rapid 30'", - "rapid_44_min": "Rapid 44'", - "rapid_a_class_60": "Rapid 59' A Class", - "rapid_a_class_60_steam": "Rapid 59' A Class + Steam", - "rapid_wash_and_dry_59_min": "Wash and Dry 59'", - "resistant_cotton": "Resistant Cotton", - "resistant_cotton_steam": "Resistant Cotton + Steam", - "rinse": "Rinse", - "shirts_steam": "Shirts + Steam", - "silent_night": "Silent Night", - "single_item": "Single Item", - "single_item_steam": "Single Item + Steam", - "smart_wash": "Smart Wash", - "soft_care": "Soft Care", - "soft_care_steam": "Soft Care + Steam", - "soft_care_steam_title": "Soft Care + Steam", - "special_39": "Special 39'", - "special_39_full_load": "Special 39'", - "special_39_full_load_steam": "Special 39' + Steam", - "special_49": "Special 49'", - "sport_39": "Sport 39'", - "sport_plus_29": "Sport Plus 29'", - "sport_plus_39": "Sport Plus 39'", - "steam_39": "Steam 39'", - "steam_care_pro": "Steam Care Pro", - "steam_care_pro_cotton": "Steam Care Pro - Cottons", - "steam_care_pro_delicates": "Steam Care Pro - Delicates", - "steam_care_pro_synthetic": "Steam Care Pro - Synthetics", - "steam_hygiene_plus": "Hygiene Plus + Steam", - "synthetics": "Synthetics", - "synthetic_and_coloured": "Synthetic and Colored", - "synthetic_and_coloured_steam": "Synthetic and Coloured + Steam", - "tailored_resistant_cotton": "Tailored Resistant Cotton", - "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", - "total_care": "Total Care", - "tumbling": "Tumbling", - "wool": "Wool", - "wool_and_delicates_49": "Wool and Delicates 49'", - "wool_dry": "Wool Dry", - "wool_soft_care": "Wool and Soft Car", - "bakery": "Pasta and Pastries", - "bakery_steam": "Steam-baked bread", - "bottom_heating": "Bottom Heating", - "bottom_heating_fan": "Bottom Heating + Fan", - "bread": "Bread", - "bread_steam": "Steam-baked pastries", - "combi": "Combi", - "convection_fan": "Convection + Fan", - "convection_fan_turnspit": "Convection + Fan + Turnspit", - "conventional": "Conventional", - "conventional_turnspit": "Convection + Turnspit", - "defrost": "Defrost", - "descaling": "Descaling", - "fish": "Fish", - "fish_steam": "Steam-cooked fish", - "grill_cata": "Grill", - "grill_fan_cata": "Grill fan", - "grill_fan_pyro": "Grill + Fan", - "grill_pyro": "Grill", - "h20_clean": "H2O-Clean", - "iot_bread": "Bread", - "iot_h20_clean": "h2O clean", - "leavening": "Leavening", - "light_fan": "Light Fan", - "low_temp_cooking": "Low Temperature Cooking", - "low_temp_cooking_fish": "Low Temperature Cooking - Fish", - "low_temp_cooking_fish_steam": "Low Temperature Steam Cooking - Fish", - "low_temp_cooking_meat": "Low Temperature Cooking - Meat", - "low_temp_cooking_meat_steam": "Low Temperature Steam Cooking - Meat", - "low_temp_cooking_steam": "Low Temperature Steam Cooking", - "meat": "Meat", - "meat_steam": "Steam-cooked meat", - "multi_level": "Multi-Level", - "paella": "Paella", - "pasta_and_bakery": "Pasta and Bakery", - "pizza": "Pizza", - "pyrolysis": "Pyrolysis", - "pyrolysis_plus": "Pyrolysis +", - "red_meat": "Red Meat", - "red_meat_steam": "Steam-cooked red meat", - "regenerate": "Regeneration", - "soft_plus": "Soft+", - "super_grill": "Super Grill", - "tailor_bake": "Tailor bake", - "tailor_bake_cata": "Tailor Bake", - "tailor_bake_pyro": "Tailor Bake", - "vegetables": "Vegetables", - "vegetables_cata": "Vegetables", - "vegetables_pyro": "Vegetables", - "water_discharge": "Water Drain", - "white_meat": "White Meat", - "white_meat_steam": "Steam-cooked white meat", - "iot_standard_boiling": "Boiling", - "iot_standard_frying": "Frying", - "iot_standard_keep_warm": "Keep Warm", - "iot_standard_melting": "Melting", - "iot_standard_simmering": "Simmering" + "entity": { + "sensor": { + "mode": { + "state": { + "0": "Disconnected", + "1": "Ready", + "2": "Running", + "3": "Paused", + "5": "Scheduled", + "6": "Error", + "7": "Finished" + } + }, + "errors": { + "state": { + "00": "No error", + "100000000000": "E2: Check if the door is closed", + "8000000000000": "E4: Check the water supply" + } + }, + "tumbledryerprogram": { + "state": { + "0": "Default", + "62": "Cotton", + "63": "Synthetics", + "64": "Mix", + "66": "Bed Sheets", + "71": "Curtains", + "72": "Sports", + "74": "i-time", + "75": "Duvet", + "76": "Wool", + "78": "i-Refresh", + "83": "Towel", + "85": "Quick Dry", + "92": "Delicate", + "103": "Remote" + } + }, + "tumbledryerprogramphase": { + "state": { + "0": "Waiting", + "2": "Drying", + "3": "Cooldown", + "11": "11" + } + }, + "tumbledryertemplevel": { + "state": { + "1": "Cool", + "2": "Low temperature L-1", + "3": "Middle temperature L-2", + "4": "High temperature L-3" + } + }, + "tumbledryerdrylevel": { + "state": { + "3": "Cupboard dry", + "12": "Ready to Iron H-1", + "13": "Ready to Store H-2", + "14": "Extra Dry H-3" + } + }, + "mode_dw": { + "state": { + "0": "Disconnected", + "1": "Ready", + "2": "Running", + "3": "Delayed start", + "5": "Delayed start cancelled", + "7": "Finished" + } + }, + "washing_modes": { + "state": { + "0": "Ready", + "1": "Ready", + "3": "Pause", + "4": "Scheduled", + "5": "Scheduled", + "6": "Error", + "7": "Ready" + } + }, + "program_phases_wm": { + "state": { + "0": "Ready", + "1": "Wash", + "2": "Wash", + "3": "Spin", + "4": "Rinse", + "5": "Rinse", + "6": "Rinse", + "7": "Drying", + "9": "Steam", + "10": "Ready", + "11": "Spin", + "12": "Weighing ", + "13": "Weighing ", + "14": "Wash", + "15": "Wash", + "16": "Wash", + "17": "Rinse", + "18": "Rinse", + "19": "Scheduled", + "20": "Keep Fresh", + "24": "Refresh", + "25": "Wash", + "26": "Heating", + "27": "Wash" + } + }, + "program_phases_td": { + "state": { + "0": "Ready", + "1": "Drying", + "2": "Drying", + "3": "Cooldown", + "13": "Cooldown", + "14": "Drying", + "15": "Drying", + "16": "Cooldown", + "18": "Keep Fresh", + "19": "Drying", + "20": "Drying" + } + }, + "program_phases_dw": { + "state": { + "0": "Ready", + "1": "Prewash", + "2": "Wash", + "3": "Rinse", + "4": "Drying", + "5": "Ready", + "6": "Hot rinse" + } + } + }, + "select": { + "programs": { + "state": { + "20_degrees_coloured_cottons": "20\u00b0 Colored and Cottons", + "20_degrees_new_energy_label": "20\u00b0C", + "active_steam": "Steam", + "active_wash": "Active Wash", + "active_wash_steam": "Active Wash + Steam", + "allergy_care": "Allergy Care", + "allergy_care_pro": "Allergy Care Pro", + "all_in_one_49": "All in One 49'", + "all_in_one_59": "All in One 59'", + "all_in_one_59_steam": "Active Wash + Steam", + "autocare": "Autocare", + "autoclean": "Drum Cleaning", + "baby_60": "All Baby 60\u00b0C", + "care_14": "Rapid Care 14'", + "care_30": "Rapid Care 30'", + "care_44": "Rapid Care 44'", + "checkup": "Check-Up", + "colour_59": "Colored 59'", + "colour_59_steam": "Colored 59' + Steam", + "cottons": "Cotton", + "cottons_prewash": "Cottons + Prewash", + "cottons_steam": "Cotton + Steam", + "cotton_care_59": "Cotton Care 59'", + "delicate_59": "Delicate 59'", + "delicate_silk": "Delicate and Silk", + "delicate_silk_steam": "Delicate and Silk + Steam", + "delicati_59": "Delicate 59'", + "delicati_59_steam": "Delicate 59' + Steam", + "drain_spin": "Drain + Spin", + "easy_iron": "Easy Iron", + "eco_40_60_new_energy_label": "Eco 40-60", + "extra_care": "Extra Care", + "fitness": "Fitness Care", + "fitness_care": "Fitness Care", + "fresh_care": "Fresh Care", + "fresh_care_steam": "Fresh Care + Steam", + "handwash_wool": "Hand Wash + Wool", + "high_dry": "High Heat Dry", + "hqd_20_degrees": "Cotton 20\u2103", + "hqd_allergy": "Allergy Care", + "hqd_autoclean": "Drum Cleaning", + "hqd_babycare": "Baby Care", + "hqd_baby_care": "Baby care", + "hqd_bath_towel": "Bath towel", + "hqd_bed_sheets": "Bed sheets", + "hqd_bulky": "Bulky", + "hqd_casual": "Casual", + "hqd_checkup": "Check-Up", + "hqd_cold_wind_30": "Cold wind 30'", + "hqd_cold_wind_timing": "Cold wind timing", + "hqd_cotton": "Cotton", + "hqd_cottons": "Cotton", + "hqd_curtain": "Curtain", + "hqd_delicate": "Delicate", + "hqd_delicate_cradle": "Delicate", + "hqd_diaper": "Diaper", + "hqd_dry": "Cotton Dry", + "hqd_dry_synthetics": "Low Heat Dry", + "hqd_duvet": "Duvet", + "hqd_eco_40_60_degrees": "Eco 40-60", + "hqd_feather": "Feather", + "hqd_handwash_wool": "Wool", + "hqd_hot_wind_timing": "Hot wind timing", + "hqd_hygienic": "Hygienic", + "hqd_i_refresh": "i-Refresh", + "hqd_i_refresh_pro": "i-Refresh Pro", + "hqd_jacket": "Jacket", + "hqd_jeans": "Jeans", + "hqd_luxury": "Luxury", + "hqd_mix": "Mix", + "hqd_night_dry": "Night dry", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_15": "Quick 15'", + "hqd_quick_20": "Quick 20'", + "hqd_quick_30": "Quick 30'", + "hqd_quick_dry": "Quick dry", + "hqd_quick_wash_57": "Quick Wash 57'", + "hqd_quilt": "Quilt", + "hqd_rapid_wash_and_dry": "Wash and dry", + "hqd_refresh": "Refresh", + "hqd_rinse": "Rinses", + "hqd_school_uniform": "School uniform", + "hqd_shirt": "Shirt", + "hqd_shirts": "Shirts", + "hqd_shoes": "Shoes", + "hqd_silk": "Silk", + "hqd_smart": "Smart A.I.", + "hqd_spin": "Spin", + "hqd_sport": "Sport", + "hqd_sports": "Sports", + "hqd_super_fast": "Super Fast 39'", + "hqd_synthetic_and_coloured": "Synthetics", + "hqd_synthetics": "Synthetics", + "hqd_timer": "Timer", + "hqd_towel": "Towel", + "hqd_underwear": "Underwear", + "hqd_warm_up": "Warm up", + "hqd_wool": "Wool", + "hqd_working_suit": "Working suit", + "hygiene_59": "Hygiene Plus 59'", + "hygiene_60": "Hygiene 60\u00b0C", + "hygiene_plus_59": "Hygiene Plus 59'", + "hygiene_plus_59_min": "Hygiene Plus 59'", + "hygiene_pro_4_min": "Hygiene Pro 49'", + "hygiene_pro_49_min": "Hygiene Pro 49'", + "hygiene_pro_steam": "Hygiene Pro + Steam", + "intensive_40": "Intensive 40\u00b0C", + "intensive_40_steam": "Intensive 40\u00b0C + Steam", + "iot_checkup": "Check-Up", + "iot_dry_air_refresh": "Air Refresh", + "iot_dry_anti_mites": "Anti-mite", + "iot_dry_baby": "Baby", + "iot_dry_backpacks": "Backpacks", + "iot_dry_bathrobe": "Bathrobes", + "iot_dry_bed_linen": "Bed Linen", + "iot_dry_cotton_dry": "Cotton Dry", + "iot_dry_cotton": "Cotton", + "iot_dry_cuddly_toys": "Cuddly Toys", + "iot_dry_curtains": "Curtains", + "iot_dry_dehumidifier": "Humidity Remover", + "iot_dry_delicates": "Delicates", + "iot_dry_delicates_antiallergy": "Delicates Anti-allergy", + "iot_dry_delicate_tablecloths": "Delicate Tablecloths", + "iot_dry_denim_jeans": "Denim - Jeans", + "iot_dry_down_jacket": "Down jacket", + "iot_dry_duvet": "Duvet", + "iot_dry_easy_iron_cotton": "Easy Iron - Cotton", + "iot_dry_easy_iron_synthetics": "Easy Iron - Synthetics", + "iot_dry_gym_fit": "Gym fit - Fitness", + "iot_dry_lingerie": "Lingerie", + "iot_dry_mixed": "Mixed", + "iot_dry_mixed_dry": "Mixed Dry", + "iot_dry_rapid_30": "Rapid 30'", + "iot_dry_rapid_59": "Rapid 59'", + "iot_dry_rapid_60_min_delicates": "Rapid 60' - Delicates", + "iot_dry_shirts": "Shirts", + "iot_dry_swimsuits_and_bikinis": "Swimsuits and Bikinis", + "iot_dry_synthetics": "Synthetic Dry", + "iot_dry_synthetic_dry": "Synthetic Dry", + "iot_dry_tablecloths": "Tablecloths", + "iot_dry_technical_fabrics": "Technical Fabrics", + "iot_dry_warm_embrace": "Warm Embrace", + "iot_dry_wool": "Wool", + "iot_dry_wool_dry": "Wool Dry", + "iot_wash_and_dry": "Wash and dry", + "iot_wash_anti_mites": "Anti-mites", + "iot_wash_anti_odor": "Anti-odour", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "Sanitizer", + "iot_wash_baby_sanitizer_steam": "Sanitiser + Steam", + "iot_wash_backpacks": "Backpacks", + "iot_wash_backpacks_zelig": "Backpacks", + "iot_wash_bathrobe": "Bathrobes and Towels", + "iot_wash_bathrobe_steam": "Bathrobe and Towels + Steam", + "iot_wash_bed_linen": "Bed Linen", + "iot_wash_bed_linen_steam": "Bed Linen + Steam", + "iot_wash_bed_linen_zelig": "Bed Linens", + "iot_wash_big_single_load": "Big single load", + "iot_wash_bleaching": "Bleaching", + "iot_wash_blood_stains": "Bloodstains", + "iot_wash_cashmere": "Cashmere", + "iot_wash_chocolate_stains": "Chocolate stains", + "iot_wash_cold_wash": "Cold Wash", + "iot_wash_colored": "Colored", + "iot_wash_colored_anti_stain": "Colored Anti-stain", + "iot_wash_colored_delicate": "Colored Delicate", + "iot_wash_coloured": "Colored", + "iot_wash_coloured_bed_linen": "Colored Bed Linen", + "iot_wash_coloured_bed_linen_steam": "Coloured Bed Linen + Steam", + "iot_wash_coloured_curtains": "Colored Curtains", + "iot_wash_coloured_shirts": "Colored Shirts", + "iot_wash_coloured_shirts_steam": "Colored Shirts + Steam", + "iot_wash_coloured_steam": "Colored + Steam", + "iot_wash_coloured_tableclothes": "Colored Tableclothes", + "iot_wash_coloured_tableclothes_steam": "Coloured Tablecloths + Steam", + "iot_wash_cotton": "Cotton", + "iot_wash_cotton_steam": "Cotton + Steam", + "iot_wash_cuddly_toys": "Cuddly Toys", + "iot_wash_curtains": "Curtains", + "iot_wash_curtains_steam": "Curtains + Steam", + "iot_wash_curtains_zelig": "Curtains", + "iot_wash_dark": "Darks", + "iot_wash_darks_and_coloured_44": "Darks and Colored 44'", + "iot_wash_darks_and_coloured_59": "Darks and Colored 59'", + "iot_wash_darks_and_coloured_xl": "Darks and Colored XL", + "iot_wash_dark_steam": "Darks + Steam", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "Delicates", + "iot_wash_delicate_antiallergy": "Delicate Anti-Allergy", + "iot_wash_delicate_antiallergy_steam": "Delicate Anti-Allergy + Steam", + "iot_wash_delicate_antiallergy_zelig": "Delicate Anti-Allergy", + "iot_wash_delicate_colors": "Delicate Colors", + "iot_wash_delicate_colors_steam": "Delicate Colors + Steam", + "iot_wash_delicate_dark": "Delicate Darks", + "iot_wash_delicate_steam": "Delicates + Steam", + "iot_wash_delicate_tablecloths": "Delicate Tablecloths", + "iot_wash_delicate_tablecloths_steam": "Delicate Tablecloths + Steam", + "iot_wash_delicate_whites": "Delicate Whites", + "iot_wash_denim_jeans": "Denim - Jeans", + "iot_wash_diving_suits": "Diving Suits", + "iot_wash_diving_suits_zelig": "Diving Suits", + "iot_wash_down_jackets": "Down Jackets", + "iot_wash_down_jackets_zelig": "Down Jackets", + "iot_wash_duvet": "Duvet", + "iot_wash_fruit_stains": "Fruit stains", + "iot_wash_gym_fit": "Gym Fit - Fitness", + "iot_wash_handwash": "Handwash", + "iot_wash_handwash_colored": "Handwash Colored", + "iot_wash_handwash_dark": "Handwash Darks", + "iot_wash_lingerie": "Lingerie", + "iot_wash_masks_refresh": "Masks Refresh", + "iot_wash_masks_sanification": "Masks Sanitization", + "iot_wash_masks_sanification_steam": "Mask Sanitisation + Steam", + "iot_wash_mats": "Mats", + "iot_wash_men_s_trousers": "Trousers", + "iot_wash_mixed": "Mixed", + "iot_wash_mixed_steam": "Mixed + Steam", + "iot_wash_mix_and_coloured_44": "Mix and Colored 44'", + "iot_wash_mix_and_coloured_59": "Mix and Colored 59'", + "iot_wash_mix_and_coloured_xl": "Mix and colored XL", + "iot_wash_new_clothes": "New Clothes", + "iot_wash_perfect_white": "Perfect White", + "iot_wash_perfect_white_steam": "Perfect White + Steam", + "iot_wash_pets": "Pet Accessories", + "iot_wash_pets_hair_removal": "Pets Hair Removal", + "iot_wash_pets_odours_stains_removal": "Pets Odours and Stains Removal", + "iot_wash_pets_steam": "Pet Accessories + Steam", + "iot_wash_playsuits": "Playsuits", + "iot_wash_playsuits_steam": "Playsuits + Steam", + "iot_wash_quick_drum_cleaner": "Quick drum cleaner", + "iot_wash_rapid_14": "Rapid 14\u2019", + "iot_wash_rapid_30": "Rapid 30\u2019", + "iot_wash_rapid_44": "Rapid 44'", + "iot_wash_rapid_59": "Rapid 59'", + "iot_wash_rapid_59_steam": "Rapid 59' + Steam", + "iot_wash_refresh_14_min": "Refresh 14'", + "iot_wash_resistant_colored": "Resistant Colored", + "iot_wash_resistant_dark": "Resistant Darks", + "iot_wash_resistant_whites": "Resistant Whites", + "iot_wash_rinse": "Rinses", + "iot_wash_shirts": "Shirts", + "iot_wash_shirts_steam": "Shirts + Steam", + "iot_wash_silk": "Silk", + "iot_wash_ski_suit": "Ski Suit", + "iot_wash_ski_suit_zelig": "Ski Suit", + "iot_wash_spin": "Spin", + "iot_wash_sport": "Sport", + "iot_wash_sport_anti_odor": "Anti-odour Sportswear", + "iot_wash_sport_anti_odor_zelig": "Anti-odour Sportswear", + "iot_wash_stains_remover": "Stain Remover", + "iot_wash_swimsuits_and_bikinis": "Swimsuits and Bikinis", + "iot_wash_synthetic": "Synthetics", + "iot_wash_synthetic_steam": "Synthetics + Steam", + "iot_wash_tablecloths": "Tablecloths", + "iot_wash_tablecloths_steam": "Tablecloths + Steam", + "iot_wash_technical_fabrics": "Technical Fabrics", + "iot_wash_technical_fabrics_zelig": "Technical Fabrics", + "iot_wash_technical_jackets": "Technical Jackets", + "iot_wash_technical_jackets_zelig": "Technical Jackets", + "iot_wash_trainers": "Trainers", + "iot_wash_whites": "Whites", + "iot_wash_whites_44": "Whites 44'", + "iot_wash_whites_59": "Whites 59'", + "iot_wash_whites_xl": "Whites XL", + "iot_wash_wine_stains": "Wine Stains", + "iot_wash_wool": "Wool", + "jeans": "Jeans", + "jeans_60": "Jeans", + "low_dry": "Low Heat Dry", + "mixed": "Mixed", + "mixed_and_colored_59": "Mixed and Colored 59'", + "mixed_steam": "Mixed + Steam", + "mix_and_colour_59": "Mixed and Colored 59'", + "mix_and_colour_59_steam": "Mixed and Coloured 59' + Steam", + "night_and_day": "Night and Day", + "night_wash": "Night Wash", + "perfect_59": "Perfect 59'", + "perfect_cotton_59": "Perfect Cotton 59'", + "perfect_cotton_59_steam": "Perfect Cotton 59' + Steam", + "perfect_whites_59": "Perfect White 59'", + "rapid_14_min": "Rapid 14'", + "rapid_30_min": "Rapid 30'", + "rapid_44_min": "Rapid 44'", + "rapid_a_class_60": "Rapid 59' A Class", + "rapid_a_class_60_steam": "Rapid 59' A Class + Steam", + "rapid_wash_and_dry_59_min": "Wash and Dry 59'", + "resistant_cotton": "Resistant Cotton", + "resistant_cotton_steam": "Resistant Cotton + Steam", + "rinse": "Rinse", + "shirts_steam": "Shirts + Steam", + "silent_night": "Silent Night", + "single_item": "Single Item", + "single_item_steam": "Single Item + Steam", + "smart_wash": "Smart Wash", + "soft_care": "Soft Care", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "Special 39'", + "special_39_full_load": "Special 39'", + "special_39_full_load_steam": "Special 39' + Steam", + "special_49": "Special 49'", + "sport_39": "Sport 39'", + "sport_plus_29": "Sport Plus 29'", + "sport_plus_39": "Sport Plus 39'", + "steam_39": "Steam 39'", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro - Cottons", + "steam_care_pro_delicates": "Steam Care Pro - Delicates", + "steam_care_pro_synthetic": "Steam Care Pro - Synthetics", + "steam_hygiene_plus": "Hygiene Plus + Steam", + "synthetics": "Synthetics", + "synthetic_and_coloured": "Synthetic and Colored", + "synthetic_and_coloured_steam": "Synthetic and Coloured + Steam", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "Total Care", + "tumbling": "Tumbling", + "wool": "Wool", + "wool_and_delicates_49": "Wool and Delicates 49'", + "wool_dry": "Wool Dry", + "wool_soft_care": "Wool and Soft Car", + "bakery": "Pasta and Pastries", + "bakery_steam": "Steam-baked bread", + "bottom_heating": "Bottom Heating", + "bottom_heating_fan": "Bottom Heating + Fan", + "bread": "Bread", + "bread_steam": "Steam-baked pastries", + "combi": "Combi", + "convection_fan": "Convection + Fan", + "convection_fan_turnspit": "Convection + Fan + Turnspit", + "conventional": "Conventional", + "conventional_turnspit": "Convection + Turnspit", + "defrost": "Defrost", + "descaling": "Descaling", + "fish": "Fish", + "fish_steam": "Steam-cooked fish", + "grill_cata": "Grill", + "grill_fan_cata": "Grill fan", + "grill_fan_pyro": "Grill + Fan", + "grill_pyro": "Grill", + "h20_clean": "H2O-Clean", + "iot_bread": "Bread", + "iot_h20_clean": "h2O clean", + "leavening": "Leavening", + "light_fan": "Light Fan", + "low_temp_cooking": "Low Temperature Cooking", + "low_temp_cooking_fish": "Low Temperature Cooking - Fish", + "low_temp_cooking_fish_steam": "Low Temperature Steam Cooking - Fish", + "low_temp_cooking_meat": "Low Temperature Cooking - Meat", + "low_temp_cooking_meat_steam": "Low Temperature Steam Cooking - Meat", + "low_temp_cooking_steam": "Low Temperature Steam Cooking", + "meat": "Meat", + "meat_steam": "Steam-cooked meat", + "multi_level": "Multi-Level", + "paella": "Paella", + "pasta_and_bakery": "Pasta and Bakery", + "pizza": "Pizza", + "pyrolysis": "Pyrolysis", + "pyrolysis_plus": "Pyrolysis +", + "red_meat": "Red Meat", + "red_meat_steam": "Steam-cooked red meat", + "regenerate": "Regeneration", + "soft_plus": "Soft+", + "super_grill": "Super Grill", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Vegetables", + "vegetables_cata": "Vegetables", + "vegetables_pyro": "Vegetables", + "water_discharge": "Water Drain", + "white_meat": "White Meat", + "white_meat_steam": "Steam-cooked white meat", + "iot_standard_boiling": "Boiling", + "iot_standard_frying": "Frying", + "iot_standard_keep_warm": "Keep Warm", + "iot_standard_melting": "Melting", + "iot_standard_simmering": "Simmering" + } + }, + "programs_dw": { + "state": { + "59_min": "Rapid 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_hygiene": "Auto Hygiene", + "auto_plus": "AutoPlus", + "auto_rapid": "Auto Rapid", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "Auto Universal 50 - 60\u00b0C", + "auto_universal_plus": "Auto Universal+ 65 - 75\u00b0C", + "auto_universal_plus_soil": "Auto Universal+ 65 - 75\u00b0C", + "auto_universal_soil": "Auto Universal 50 - 60\u00b0C", + "auto_wash": "Auto Wash", + "auto_wash_soil": "Auto Wash", + "classe_a_59": "A Wash 59' 65\u00b0C", + "delicate": "Delicate 45\u00b0C", + "dishwasher_care": "Limescale cleaning", + "eco": "Eco", + "eco_asynch": "Eco 45\u00b0C", + "eco_bldc": "Eco 45\u00b0C", + "eco_synch": "Eco 45\u00b0C", + "gentle_wash": "Gentle wash", + "glass": "Glass", + "glassware": "Glassware 45\u00b0C", + "glass_care": "Glass Care", + "hygiene": "Hygiene", + "hygiene_plus": "Hygiene+ 75\u00b0C", + "intensive": "Intensive", + "intensive_rapid": "Intensive Rapid", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "Auto Universal 50 - 60\u00b0C", + "iot_auto_wash_soil": "Auto Wash", + "iot_baby_care": "Baby Care", + "iot_breakfast": "Breakfast", + "iot_checkup": "Check-Up", + "iot_china_crystals": "China Crystals", + "iot_classe_a_59": "Rapid 59'", + "iot_cocktail_glasses": "Coktail Glasses", + "iot_cocktail_glasses_soil": "Coktail Glasses", + "iot_daily_care": "Daily Care", + "iot_daily_care_soil": "Daily Care", + "iot_delicate": "Delicate 45\u00b0C", + "iot_dinner_for_two": "Dinner for 2", + "iot_dinner_for_two_soil": "Dinner for 2", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "Eco 45\u00b0C", + "iot_eco_bldc": "Eco 45\u00b0C", + "iot_eco_synch": "Eco 45\u00b0C", + "iot_extra_hygiene": "Extra Hygiene", + "iot_fairy_quick_cycle": "Fairy Short", + "iot_happy_hour": "Happy Hour", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "Party", + "iot_party_soil": "Party", + "iot_pizza_menu": "Pizza Menu", + "iot_pizza_menu_soil": "Pizza Menu", + "iot_plastic_tupperware": "Plastic & Tupperware", + "iot_porcelain": "Porcelain", + "iot_pot_and_pans": "Pot & Pans", + "iot_pot_and_pans_soil": "Pot & Pans", + "iot_power_mix_wash": "Power Mix Wash", + "iot_power_mix_wash_soil": "Power Mix Wash", + "iot_prewash": "Pre-wash", + "iot_pyrex_and_glassware": "Pyrex & Glassware", + "iot_rapid_29": "Rapid 29'", + "iot_rapid_39": "Rapid 39' 60\u00b0C", + "iot_single": "Single", + "iot_steam": "Steam 75\u00b0C", + "iot_super_flash": "Super Flash", + "iot_super_wash": "Super Wash", + "iot_turbopower": "TurboPower", + "iot_universal": "Universal 60\u00b0C", + "iot_wok_grids_maxi_pans": "Special Pans (Wok, Grids & Maxi Pans)", + "iot_wok_grids_maxi_pans_soil": "Special Pans (Wok, Grids & Maxi Pans)", + "iot_yes_quick_cycle": "Yes Quick", + "night": "Night 55\u00b0C", + "prewash": "Pre-wash", + "rapid_20": "Rapid 20'", + "rapid_24": "Rapid 24'", + "rapid_29": "Rapid 29' 50\u00b0C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "Rapid 39' 60\u00b0C", + "rapid_49": "Rapid 49'", + "rapid_59": "Rapid 59'", + "sanitising": "Sanitising", + "silence": "Silence", + "silent": "Silent", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "special": "Special", + "special_pw_prz": "Special", + "steam": "Steam 75\u00b0C", + "steam_plus": "Steam Plus 75\u00b0C", + "total_care": "Total Care 50\u00b0C", + "ultra_silence": "Ultra Silence 55\u00b0C", + "ultra_silent": "Ultra Silent 55\u00b0C", + "universal": "Universal 60\u00b0C", + "universal_plus": "Universal Plus 70\u00b0C", + "zone_wash": "Flex Zone Wash", + "zoom_39": "Zoom 39 min" + } + } } - }, - "programs_dw": { - "state": { - "59_min": "Rapid 59'", - "auto_care": "Auto Care", - "auto_care_soil": "Auto Care", - "auto_hygiene": "Auto Hygiene", - "auto_plus": "AutoPlus", - "auto_rapid": "Auto Rapid", - "auto_sensor": "Auto Sensor", - "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Auto Universal 50 - 60°C", - "auto_universal_plus": "Auto Universal+ 65 - 75°C", - "auto_universal_plus_soil": "Auto Universal+ 65 - 75°C", - "auto_universal_soil": "Auto Universal 50 - 60°C", - "auto_wash": "Auto Wash", - "auto_wash_soil": "Auto Wash", - "classe_a_59": "A Wash 59' 65°C", - "delicate": "Delicate 45°C", - "dishwasher_care": "Limescale cleaning", - "eco": "Eco", - "eco_asynch": "Eco 45°C", - "eco_bldc": "Eco 45°C", - "eco_synch": "Eco 45°C", - "gentle_wash": "Gentle wash", - "glass": "Glass", - "glassware": "Glassware 45°C", - "glass_care": "Glass Care", - "hygiene": "Hygiene", - "hygiene_plus": "Hygiene+ 75°C", - "intensive": "Intensive", - "intensive_rapid": "Intensive Rapid", - "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Auto Universal 50 - 60°C", - "iot_auto_wash_soil": "Auto Wash", - "iot_baby_care": "Baby Care", - "iot_breakfast": "Breakfast", - "iot_checkup": "Check-Up", - "iot_china_crystals": "China Crystals", - "iot_classe_a_59": "Rapid 59'", - "iot_cocktail_glasses": "Coktail Glasses", - "iot_cocktail_glasses_soil": "Coktail Glasses", - "iot_daily_care": "Daily Care", - "iot_daily_care_soil": "Daily Care", - "iot_delicate": "Delicate 45°C", - "iot_dinner_for_two": "Dinner for 2", - "iot_dinner_for_two_soil": "Dinner for 2", - "iot_dreft_quick_cycle": "Dreft Quick", - "iot_eco_asynch": "Eco 45°C", - "iot_eco_bldc": "Eco 45°C", - "iot_eco_synch": "Eco 45°C", - "iot_extra_hygiene": "Extra Hygiene", - "iot_fairy_quick_cycle": "Fairy Short", - "iot_happy_hour": "Happy Hour", - "iot_jar_quick_cycle": "Jar Quick", - "iot_party": "Party", - "iot_party_soil": "Party", - "iot_pizza_menu": "Pizza Menu", - "iot_pizza_menu_soil": "Pizza Menu", - "iot_plastic_tupperware": "Plastic & Tupperware", - "iot_porcelain": "Porcelain", - "iot_pot_and_pans": "Pot & Pans", - "iot_pot_and_pans_soil": "Pot & Pans", - "iot_power_mix_wash": "Power Mix Wash", - "iot_power_mix_wash_soil": "Power Mix Wash", - "iot_prewash": "Pre-wash", - "iot_pyrex_and_glassware": "Pyrex & Glassware", - "iot_rapid_29": "Rapid 29'", - "iot_rapid_39": "Rapid 39' 60°C", - "iot_single": "Single", - "iot_steam": "Steam 75°C", - "iot_super_flash": "Super Flash", - "iot_super_wash": "Super Wash", - "iot_turbopower": "TurboPower", - "iot_universal": "Universal 60°C", - "iot_wok_grids_maxi_pans": "Special Pans (Wok, Grids & Maxi Pans)", - "iot_wok_grids_maxi_pans_soil": "Special Pans (Wok, Grids & Maxi Pans)", - "iot_yes_quick_cycle": "Yes Quick", - "night": "Night 55°C", - "prewash": "Pre-wash", - "rapid_20": "Rapid 20'", - "rapid_24": "Rapid 24'", - "rapid_29": "Rapid 29' 50°C", - "rapid_35": "Wash&Dry 35'", - "rapid_39": "Rapid 39' 60°C", - "rapid_49": "Rapid 49'", - "rapid_59": "Rapid 59'", - "sanitising": "Sanitising", - "silence": "Silence", - "silent": "Silent", - "silent_care": "Silent Care", - "smart_ai": "Smart AI", - "smart_ai_pro": "Smart AI Pro", - "smart_ai_rapid": "Smart AI Rapid", - "special": "Special", - "special_pw_prz": "Special", - "steam": "Steam 75°C", - "steam_plus": "Steam Plus 75°C", - "total_care": "Total Care 50°C", - "ultra_silence": "Ultra Silence 55°C", - "ultra_silent": "Ultra Silent 55°C", - "universal": "Universal 60°C", - "universal_plus": "Universal Plus 70°C", - "zone_wash": "Flex Zone Wash", - "zoom_39": "Zoom 39 min" - } - } } - } -} +} \ No newline at end of file diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json new file mode 100644 index 0000000..b260a56 --- /dev/null +++ b/custom_components/hon/translations/es.json @@ -0,0 +1,71 @@ +{ + "entity": { + "sensor": { + "washing_modes": { + "state": { + "0": "Listo", + "1": "Listo", + "3": "Pausa", + "4": "Programado", + "5": "Programado", + "6": "Error", + "7": "Listo" + } + }, + "program_phases_wm": { + "state": { + "0": "Listo", + "1": "Lavado", + "2": "Lavado", + "3": "Centrifugado", + "4": "Aclarado", + "5": "Aclarado", + "6": "Aclarado", + "7": "Secado", + "9": "Vapor", + "10": "Listo", + "11": "Centrifugado", + "12": "Peso ", + "13": "Peso ", + "14": "Lavado", + "15": "Lavado", + "16": "Lavado", + "17": "Aclarado", + "18": "Aclarado", + "19": "Programado", + "20": "Ropa fresca", + "24": "Refrescar", + "25": "Lavado", + "26": "Calentamiento", + "27": "Lavado" + } + }, + "program_phases_td": { + "state": { + "0": "Listo", + "1": "Secado", + "2": "Secado", + "3": "Enfriar", + "13": "Enfriar", + "14": "Secado", + "15": "Secado", + "16": "Enfriar", + "18": "Ropa fresca", + "19": "Secado", + "20": "Secado" + } + }, + "program_phases_dw": { + "state": { + "0": "Listo", + "1": "Prelavado", + "2": "Lavado", + "3": "Aclarado", + "4": "Secado", + "5": "Listo", + "6": "Hot rinse" + } + } + } + } +} \ No newline at end of file diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json new file mode 100644 index 0000000..7fa1af7 --- /dev/null +++ b/custom_components/hon/translations/fr.json @@ -0,0 +1,71 @@ +{ + "entity": { + "sensor": { + "washing_modes": { + "state": { + "0": "Pr\u00eat", + "1": "Pr\u00eat", + "3": "Pause", + "4": "Planifi\u00e9", + "5": "Planifi\u00e9", + "6": "Erreur", + "7": "Pr\u00eat" + } + }, + "program_phases_wm": { + "state": { + "0": "Pr\u00eat", + "1": "Lavage", + "2": "Lavage", + "3": "Essorage", + "4": "Rin\u00e7age", + "5": "Rin\u00e7age", + "6": "Rin\u00e7age", + "7": "S\u00e9chage", + "9": "Vapeur d'eau", + "10": "Pr\u00eat", + "11": "Essorage", + "12": "Calcul du poids ", + "13": "Calcul du poids ", + "14": "Lavage", + "15": "Lavage", + "16": "Lavage", + "17": "Rin\u00e7age", + "18": "Rin\u00e7age", + "19": "Planifi\u00e9", + "20": "Keep Fresh", + "24": "Rafra\u00eechissement", + "25": "Lavage", + "26": "Chauffage", + "27": "Lavage" + } + }, + "program_phases_td": { + "state": { + "0": "Pr\u00eat", + "1": "S\u00e9chage", + "2": "S\u00e9chage", + "3": "Refroidissement", + "13": "Refroidissement", + "14": "S\u00e9chage", + "15": "S\u00e9chage", + "16": "Refroidissement", + "18": "Keep Fresh", + "19": "S\u00e9chage", + "20": "S\u00e9chage" + } + }, + "program_phases_dw": { + "state": { + "0": "Pr\u00eat", + "1": "Pr\u00e9lavage", + "2": "Lavage", + "3": "Rin\u00e7age", + "4": "S\u00e9chage", + "5": "Pr\u00eat", + "6": "Hot rinse" + } + } + } + } +} \ No newline at end of file diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json new file mode 100644 index 0000000..8f858f7 --- /dev/null +++ b/custom_components/hon/translations/he.json @@ -0,0 +1,71 @@ +{ + "entity": { + "sensor": { + "washing_modes": { + "state": { + "0": "\u05de\u05d5\u05bc\u05db\u05b8\u05df", + "1": "\u05de\u05d5\u05bc\u05db\u05b8\u05df", + "3": "\u05d4\u05b7\u05e4\u05e1\u05b8\u05e7\u05b8\u05d4", + "4": "\u05de\u05ea\u05d5\u05d6\u05de\u05df", + "5": "\u05de\u05ea\u05d5\u05d6\u05de\u05df", + "6": "\u05e9\u05c1\u05b0\u05d2\u05b4\u05d9\u05d0\u05b8\u05d4", + "7": "\u05de\u05d5\u05bc\u05db\u05b8\u05df" + } + }, + "program_phases_wm": { + "state": { + "0": "\u05de\u05d5\u05bc\u05db\u05b8\u05df", + "1": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3", + "2": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3", + "3": "Spin", + "4": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3", + "5": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3", + "6": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3", + "7": "\u05d9\u05b4\u05d1\u05bc\u05d5\u05bc\u05e9\u05c1", + "9": "\u05e7\u05b4\u05d9\u05d8\u05d5\u05b9\u05e8", + "10": "\u05de\u05d5\u05bc\u05db\u05b8\u05df", + "11": "Spin", + "12": "Weighing ", + "13": "Weighing ", + "14": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3", + "15": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3", + "16": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3", + "17": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3", + "18": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3", + "19": "\u05de\u05ea\u05d5\u05d6\u05de\u05df", + "20": "\u05e9\u05de\u05d5\u05e8 \u05e2\u05dc \u05d8\u05e8\u05d9\u05d5\u05ea", + "24": "Refresh", + "25": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3", + "26": "Heating", + "27": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3" + } + }, + "program_phases_td": { + "state": { + "0": "\u05de\u05d5\u05bc\u05db\u05b8\u05df", + "1": "Drying", + "2": "\u05d9\u05b4\u05d1\u05bc\u05d5\u05bc\u05e9\u05c1", + "3": "Cooldown", + "13": "Cooldown", + "14": "Drying", + "15": "Drying", + "16": "Cooldown", + "18": "Keep Fresh", + "19": "\u05d9\u05b4\u05d1\u05bc\u05d5\u05bc\u05e9\u05c1", + "20": "\u05d9\u05b4\u05d1\u05bc\u05d5\u05bc\u05e9\u05c1" + } + }, + "program_phases_dw": { + "state": { + "0": "\u05de\u05d5\u05bc\u05db\u05b8\u05df", + "1": "Prewash", + "2": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3", + "3": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3", + "4": "\u05d9\u05b4\u05d1\u05bc\u05d5\u05bc\u05e9\u05c1", + "5": "\u05de\u05d5\u05bc\u05db\u05b8\u05df", + "6": "Hot rinse" + } + } + } + } +} \ No newline at end of file diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json new file mode 100644 index 0000000..4543537 --- /dev/null +++ b/custom_components/hon/translations/hr.json @@ -0,0 +1,71 @@ +{ + "entity": { + "sensor": { + "washing_modes": { + "state": { + "0": "Spremno", + "1": "Spremno", + "3": "Zaustavi", + "4": "Zakazano", + "5": "Zakazano", + "6": "Gre\u0161ka", + "7": "Spremno" + } + }, + "program_phases_wm": { + "state": { + "0": "Spremno", + "1": "Pranje", + "2": "Pranje", + "3": "Okretaj", + "4": "Ispiranje", + "5": "Ispiranje", + "6": "Ispiranje", + "7": "Su\u0161enje", + "9": "Para", + "10": "Spremno", + "11": "Okretaj", + "12": "Mjerenje te\u017eine ", + "13": "Mjerenje te\u017eine ", + "14": "Pranje", + "15": "Pranje", + "16": "Pranje", + "17": "Ispiranje", + "18": "Ispiranje", + "19": "Zakazano", + "20": "Odr\u017eavanje svje\u017eine", + "24": "Protiv neugodnih mirisa", + "25": "Pranje", + "26": "Grijanje", + "27": "Pranje" + } + }, + "program_phases_td": { + "state": { + "0": "Spremno", + "1": "Su\u0161enje", + "2": "Su\u0161enje", + "3": "Hla\u0111enje", + "13": "Hla\u0111enje", + "14": "Su\u0161enje", + "15": "Su\u0161enje", + "16": "Hla\u0111enje", + "18": "Odr\u017ei svje\u017eim", + "19": "Su\u0161enje", + "20": "Su\u0161enje" + } + }, + "program_phases_dw": { + "state": { + "0": "Spremno", + "1": "Pretpranje", + "2": "Pranje", + "3": "Ispiranje", + "4": "Su\u0161enje", + "5": "Spremno", + "6": "Hot rinse" + } + } + } + } +} \ No newline at end of file diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index ac98e76..6eab39d 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -26,7 +26,7 @@ "errors": { "state": { "00": "Nessun Errore", - "100000000000": "E2: Controllare se la porta è chiusa correttamente", + "100000000000": "E2: Controllare se la porta \u00e8 chiusa correttamente", "8000000000000": "E4: Controllare l'approvvigionamento idrico" } }, @@ -72,13 +72,78 @@ "13": "Pronto Armadio", "14": "Extra Dry H-3" } + }, + "washing_modes": { + "state": { + "0": "Pronta", + "1": "Pronta", + "3": "Pausa", + "4": "Pianificato", + "5": "Pianificato", + "6": "Errore", + "7": "Pronta" + } + }, + "program_phases_wm": { + "state": { + "0": "Pronta", + "1": "Lavaggio", + "2": "Lavaggio", + "3": "Centrifuga", + "4": "Risciacqui", + "5": "Risciacqui", + "6": "Risciacqui", + "7": "Asciugatura", + "9": "Vapore", + "10": "Pronta", + "11": "Centrifuga", + "12": "Pesatura", + "13": "Pesatura", + "14": "Lavaggio", + "15": "Lavaggio", + "16": "Lavaggio", + "17": "Risciacqui", + "18": "Risciacqui", + "19": "Pianificato", + "20": "Keep Fresh", + "24": "Rinfresca", + "25": "Lavaggio", + "26": "Riscaldamento", + "27": "Lavaggio" + } + }, + "program_phases_td": { + "state": { + "0": "Pronta", + "1": "Asciugatura", + "2": "Asciugatura", + "3": "Raffreddamento", + "13": "Raffreddamento", + "14": "Asciugatura", + "15": "Asciugatura", + "16": "Raffreddamento", + "18": "Keep Fresh", + "19": "Asciugatura", + "20": "Asciugatura" + } + }, + "program_phases_dw": { + "state": { + "0": "Pronta", + "1": "Prelavaggio", + "2": "Lavaggio", + "3": "Risciacqui", + "4": "Asciugatura", + "5": "Pronta", + "6": "Risciacquo caldo " + } } }, "select": { "programs": { "state": { - "20_degrees_coloured_cottons": "20° Colorati e Cotone", - "20_degrees_new_energy_label": "20°C", + "20_degrees_coloured_cottons": "20\u00b0 Colorati e Cotone", + "20_degrees_new_energy_label": "20\u00b0C", "active_steam": "Vapore", "active_wash": "Lavaggio attivo", "active_wash_steam": "Lavaggio attivo + Vapore", @@ -89,7 +154,7 @@ "all_in_one_59_steam": "Lavaggio attivo + Vapore", "autocare": "Autocare", "autoclean": "Pulizia del tamburo", - "baby_60": "Bambino 60°C", + "baby_60": "Bambino 60\u00b0C", "care_14": "Rapido 14'", "care_30": "Rapido 30'", "care_44": "Rapido 44'", @@ -115,7 +180,7 @@ "fresh_care_steam": "Fresh Care + Vapore", "handwash_wool": "Lavaggio A Mano + Lana", "high_dry": "Asciugatura Alta", - "hqd_20_degrees": "Cotone 20℃", + "hqd_20_degrees": "Cotone 20\u2103", "hqd_allergy": "Anti allergenici", "hqd_autoclean": "Pulizia del tamburo", "hqd_babycare": "Bambino", @@ -178,14 +243,14 @@ "hqd_wool": "Lana", "hqd_working_suit": "Completo da lavoro", "hygiene_59": "Igiene Plus 59'", - "hygiene_60": "Igiene 60°C", + "hygiene_60": "Igiene 60\u00b0C", "hygiene_plus_59": "Igiene Plus 59'", "hygiene_plus_59_min": "Igiene Plus 59'", "hygiene_pro _49_MIN": "Igiene Pro 49'", "hygiene_pro_49_min": "Igiene Pro 49'", "hygiene_pro_steam": "Hygiene Pro + Vapore", - "intensive_40": "Intensivo 40°C", - "intensive_40_steam": "Intensivo 40°C + Vapore", + "intensive_40": "Intensivo 40\u00b0C", + "intensive_40_steam": "Intensivo 40\u00b0C + Vapore", "iot_active_steam": "Vapore", "iot_active_wash_steam": "Active Wash + Vapore", "iot_allergy_care_pro": "Allergy Care Pro", @@ -204,7 +269,7 @@ "iot_dry_cotton_dry": "Asciugatura cotone", "iot_dry_cuddly_toys": "Peluches", "iot_dry_curtains": "Tende", - "iot_dry_dehumidifier": "Rimuovi umidità", + "iot_dry_dehumidifier": "Rimuovi umidit\u00e0", "iot_dry_delicates_antiallergy": "Antiallergia Delicati", "iot_dry_delicate_tablecloths": "Tovaglie delicate", "iot_dry_denim_jeans": "Denim - Jeans", @@ -225,7 +290,7 @@ "iot_easy_iron": "Stiro Facile", "iot_fresh_care_steam": "Fresh Care + Vapore", "iot_hygiene_pro_steam": "Hygiene Pro + Vapore", - "iot_intensive_40_steam": "Intensivo 40°C + Vapore", + "iot_intensive_40_steam": "Intensivo 40\u00b0C + Vapore", "iot_mixed_steam": "Misti + Vapore", "iot_mix_and_colour_59_steam": "Misti e Colorati 59' + Vapore", "iot_perfect_cotton_59_steam": "Cotone Perfetto 59' + Vapore", diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json new file mode 100644 index 0000000..b1f6b0e --- /dev/null +++ b/custom_components/hon/translations/nl.json @@ -0,0 +1,71 @@ +{ + "entity": { + "sensor": { + "washing_modes": { + "state": { + "0": "Klaar", + "1": "Klaar", + "3": "Pauze", + "4": "Gepland", + "5": "Gepland", + "6": "Fout", + "7": "Klaar" + } + }, + "program_phases_wm": { + "state": { + "0": "Klaar", + "1": "Wassen", + "2": "Wassen", + "3": "Centrifugeren", + "4": "Spoelen", + "5": "Spoelen", + "6": "Spoelen", + "7": "Drogen", + "9": "Stoom", + "10": "Klaar", + "11": "Centrifugeren", + "12": "Wegen ", + "13": "Wegen ", + "14": "Wassen", + "15": "Wassen", + "16": "Wassen", + "17": "Spoelen", + "18": "Spoelen", + "19": "Gepland", + "20": "Fris houden", + "24": "Opfrissen", + "25": "Wassen", + "26": "Verwarming", + "27": "Wassen" + } + }, + "program_phases_td": { + "state": { + "0": "Klaar", + "1": "Drogen", + "2": "Drogen", + "3": "Afkoelen", + "13": "Afkoelen", + "14": "Drogen", + "15": "Drogen", + "16": "Afkoelen", + "18": "Fris houden", + "19": "Drogen", + "20": "Drogen" + } + }, + "program_phases_dw": { + "state": { + "0": "Klaar", + "1": "Voorwassen", + "2": "Wassen", + "3": "Spoelen", + "4": "Drogen", + "5": "Klaar", + "6": "Hot rinse" + } + } + } + } +} \ No newline at end of file diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json new file mode 100644 index 0000000..9299b61 --- /dev/null +++ b/custom_components/hon/translations/pl.json @@ -0,0 +1,71 @@ +{ + "entity": { + "sensor": { + "washing_modes": { + "state": { + "0": "Gotowe", + "1": "Gotowe", + "3": "Zatrzymaj", + "4": "Zaplanowane", + "5": "Zaplanowane", + "6": "B\u0142\u0105d", + "7": "Gotowe" + } + }, + "program_phases_wm": { + "state": { + "0": "Gotowe", + "1": "Pranie", + "2": "Pranie", + "3": "Wirowanie", + "4": "P\u0142ukanie", + "5": "P\u0142ukanie", + "6": "P\u0142ukanie", + "7": "Suszenie", + "9": "Para", + "10": "Gotowe", + "11": "Wirowanie", + "12": "Wa\u017cenie ", + "13": "Wa\u017cenie ", + "14": "Pranie", + "15": "Pranie", + "16": "Pranie", + "17": "P\u0142ukanie", + "18": "P\u0142ukanie", + "19": "Zaplanowane", + "20": "Utrzymaj \u015bwie\u017co\u015b\u0107", + "24": "Od\u015bwie\u017canie", + "25": "Pranie", + "26": "Ogrzewanie", + "27": "Pranie" + } + }, + "program_phases_td": { + "state": { + "0": "Gotowe", + "1": "Suszenie", + "2": "Suszenie", + "3": "Ch\u0142odzenie", + "13": "Ch\u0142odzenie", + "14": "Suszenie", + "15": "Suszenie", + "16": "Ch\u0142odzenie", + "18": "Utrzymaj \u015bwie\u017co\u015b\u0107", + "19": "Suszenie", + "20": "Suszenie" + } + }, + "program_phases_dw": { + "state": { + "0": "Gotowe", + "1": "Zmywanie wst\u0119pne", + "2": "Pranie", + "3": "P\u0142ukanie", + "4": "Suszenie", + "5": "Gotowe", + "6": "Hot rinse" + } + } + } + } +} \ No newline at end of file diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json new file mode 100644 index 0000000..6d14111 --- /dev/null +++ b/custom_components/hon/translations/pt.json @@ -0,0 +1,71 @@ +{ + "entity": { + "sensor": { + "washing_modes": { + "state": { + "0": "Pronto", + "1": "Pronto", + "3": "Pausa", + "4": "Agendado", + "5": "Agendado", + "6": "Erro", + "7": "Pronto" + } + }, + "program_phases_wm": { + "state": { + "0": "Pronto", + "1": "Lavar", + "2": "Lavar", + "3": "Centrifugar", + "4": "Lavagem", + "5": "Lavagem", + "6": "Lavagem", + "7": "Secagem", + "9": "Vapor", + "10": "Pronto", + "11": "Centrifugar", + "12": "Pesagem ", + "13": "Pesagem ", + "14": "Lavar", + "15": "Lavar", + "16": "Lavar", + "17": "Lavagem", + "18": "Lavagem", + "19": "Agendado", + "20": "Manter Fresco", + "24": "Refrescar", + "25": "Lavar", + "26": "Aquecimento", + "27": "Lavar" + } + }, + "program_phases_td": { + "state": { + "0": "Pronto", + "1": "Secagem", + "2": "Secagem", + "3": "Arrefecimento", + "13": "Arrefecimento", + "14": "Secagem", + "15": "Secagem", + "16": "Arrefecimento", + "18": "Manter Fresco", + "19": "Secagem", + "20": "Secagem" + } + }, + "program_phases_dw": { + "state": { + "0": "Pronto", + "1": "Pr\u00e9-lavagem", + "2": "Lavar", + "3": "Lavagem", + "4": "Secagem", + "5": "Pronto", + "6": "Hot rinse" + } + } + } + } +} \ No newline at end of file diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json new file mode 100644 index 0000000..5e79239 --- /dev/null +++ b/custom_components/hon/translations/ro.json @@ -0,0 +1,71 @@ +{ + "entity": { + "sensor": { + "washing_modes": { + "state": { + "0": "Preg\u0103tit", + "1": "Preg\u0103tit", + "3": "Pauz\u0103", + "4": "Programat", + "5": "Programat", + "6": "Eroare", + "7": "Preg\u0103tit" + } + }, + "program_phases_wm": { + "state": { + "0": "Preg\u0103tit", + "1": "Sp\u0103lare", + "2": "Sp\u0103lare", + "3": "Stoarcere", + "4": "Cl\u0103tire", + "5": "Cl\u0103tire", + "6": "Cl\u0103tire", + "7": "Uscare", + "9": "Abur", + "10": "Preg\u0103tit", + "11": "Stoarcere", + "12": "C\u00e2nt\u0103rire ", + "13": "C\u00e2nt\u0103rire ", + "14": "Sp\u0103lare", + "15": "Sp\u0103lare", + "16": "Sp\u0103lare", + "17": "Cl\u0103tire", + "18": "Cl\u0103tire", + "19": "Programat", + "20": "Men\u021binere prospe\u021bime", + "24": "Re\u00eemprosp\u0103tare", + "25": "Sp\u0103lare", + "26": "\u00cenc\u0103lzire", + "27": "Sp\u0103lare" + } + }, + "program_phases_td": { + "state": { + "0": "Preg\u0103tit", + "1": "Uscare", + "2": "Uscare", + "3": "R\u0103cire", + "13": "R\u0103cire", + "14": "Uscare", + "15": "Uscare", + "16": "R\u0103cire", + "18": "Men\u021binere prospe\u021bime", + "19": "Uscare", + "20": "Uscare" + } + }, + "program_phases_dw": { + "state": { + "0": "Preg\u0103tit", + "1": "Presp\u0103lare", + "2": "Sp\u0103lare", + "3": "Cl\u0103tire", + "4": "Uscare", + "5": "Preg\u0103tit", + "6": "Hot rinse" + } + } + } + } +} \ No newline at end of file diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json new file mode 100644 index 0000000..9040110 --- /dev/null +++ b/custom_components/hon/translations/ru.json @@ -0,0 +1,71 @@ +{ + "entity": { + "sensor": { + "washing_modes": { + "state": { + "0": "\u0413\u043e\u0442\u043e\u0432\u043e", + "1": "\u0413\u043e\u0442\u043e\u0432\u043e", + "3": "\u041f\u0430\u0443\u0437\u0430", + "4": "\u0417\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043e", + "5": "\u0417\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043e", + "6": "\u041e\u0448\u0438\u0431\u043a\u0430", + "7": "\u0413\u043e\u0442\u043e\u0432\u043e" + } + }, + "program_phases_wm": { + "state": { + "0": "\u0413\u043e\u0442\u043e\u0432\u043e", + "1": "\u0421\u0442\u0438\u0440\u043a\u0430", + "2": "\u0421\u0442\u0438\u0440\u043a\u0430", + "3": "\u041e\u0442\u0436\u0438\u043c", + "4": "\u041f\u043e\u043b\u043e\u0441\u043a\u0430\u043d\u0438\u0435", + "5": "\u041f\u043e\u043b\u043e\u0441\u043a\u0430\u043d\u0438\u0435", + "6": "\u041f\u043e\u043b\u043e\u0441\u043a\u0430\u043d\u0438\u0435", + "7": "\u0421\u0443\u0448\u043a\u0430", + "9": "\u041f\u0430\u0440", + "10": "\u0413\u043e\u0442\u043e\u0432\u043e", + "11": "\u041e\u0442\u0436\u0438\u043c", + "12": "\u0412\u0437\u0432\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435 ", + "13": "\u0412\u0437\u0432\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435 ", + "14": "\u0421\u0442\u0438\u0440\u043a\u0430", + "15": "\u0421\u0442\u0438\u0440\u043a\u0430", + "16": "\u0421\u0442\u0438\u0440\u043a\u0430", + "17": "\u041f\u043e\u043b\u043e\u0441\u043a\u0430\u043d\u0438\u0435", + "18": "\u041f\u043e\u043b\u043e\u0441\u043a\u0430\u043d\u0438\u0435", + "19": "\u0417\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043e", + "20": "\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u0432\u0435\u0436\u0435\u0441\u0442\u0438", + "24": "\u041e\u0441\u0432\u0435\u0436\u0438\u0442\u044c", + "25": "\u0421\u0442\u0438\u0440\u043a\u0430", + "26": "\u041d\u0430\u0433\u0440\u0435\u0432", + "27": "\u0421\u0442\u0438\u0440\u043a\u0430" + } + }, + "program_phases_td": { + "state": { + "0": "\u0413\u043e\u0442\u043e\u0432\u043e", + "1": "\u0421\u0443\u0448\u043a\u0430", + "2": "\u0421\u0443\u0448\u043a\u0430", + "3": "\u041e\u0445\u043b\u0430\u0436\u0434\u0435\u043d\u0438\u0435", + "13": "\u041e\u0445\u043b\u0430\u0436\u0434\u0435\u043d\u0438\u0435", + "14": "\u0421\u0443\u0448\u043a\u0430", + "15": "\u0421\u0443\u0448\u043a\u0430", + "16": "\u041e\u0445\u043b\u0430\u0436\u0434\u0435\u043d\u0438\u0435", + "18": "Keep Fresh (\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u0432\u0435\u0436\u0435\u0441\u0442\u0438)", + "19": "\u0421\u0443\u0448\u043a\u0430", + "20": "\u0421\u0443\u0448\u043a\u0430" + } + }, + "program_phases_dw": { + "state": { + "0": "\u0413\u043e\u0442\u043e\u0432\u043e", + "1": "\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043c\u043e\u0439\u043a\u0430", + "2": "\u0421\u0442\u0438\u0440\u043a\u0430", + "3": "\u041f\u043e\u043b\u043e\u0441\u043a\u0430\u043d\u0438\u0435", + "4": "\u0421\u0443\u0448\u043a\u0430", + "5": "\u0413\u043e\u0442\u043e\u0432\u043e", + "6": "Hot rinse" + } + } + } + } +} \ No newline at end of file diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json new file mode 100644 index 0000000..1691b37 --- /dev/null +++ b/custom_components/hon/translations/sk.json @@ -0,0 +1,71 @@ +{ + "entity": { + "sensor": { + "washing_modes": { + "state": { + "0": "Pripraven\u00e9", + "1": "Pripraven\u00e9", + "3": "Pozastavi\u0165", + "4": "Napl\u00e1novan\u00e9", + "5": "Napl\u00e1novan\u00e9", + "6": "Chyba", + "7": "Pripraven\u00e9" + } + }, + "program_phases_wm": { + "state": { + "0": "Pripraven\u00e9", + "1": "Pranie", + "2": "Pranie", + "3": "Odstre\u010fovanie", + "4": "Oplachovanie", + "5": "Oplachovanie", + "6": "Oplachovanie", + "7": "Su\u0161enie", + "9": "Para", + "10": "Pripraven\u00e9", + "11": "Odstre\u010fovanie", + "12": "V\u00e1\u017eenie ", + "13": "V\u00e1\u017eenie ", + "14": "Pranie", + "15": "Pranie", + "16": "Pranie", + "17": "Oplachovanie", + "18": "Oplachovanie", + "19": "Napl\u00e1novan\u00e9", + "20": "Uchova\u0165 svie\u017ee", + "24": "Osvie\u017eenie", + "25": "Pranie", + "26": "Ohrev", + "27": "Pranie" + } + }, + "program_phases_td": { + "state": { + "0": "Pripraven\u00e9", + "1": "Su\u0161enie", + "2": "Su\u0161enie", + "3": "Schladi\u0165", + "13": "Schladi\u0165", + "14": "Su\u0161enie", + "15": "Su\u0161enie", + "16": "Schladi\u0165", + "18": "Uchova\u0165 svie\u017ee", + "19": "Su\u0161enie", + "20": "Su\u0161enie" + } + }, + "program_phases_dw": { + "state": { + "0": "Pripraven\u00e9", + "1": "Predpierka", + "2": "Pranie", + "3": "Oplachovanie", + "4": "Su\u0161enie", + "5": "Pripraven\u00e9", + "6": "Hot rinse" + } + } + } + } +} \ No newline at end of file diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json new file mode 100644 index 0000000..ddbf692 --- /dev/null +++ b/custom_components/hon/translations/sl.json @@ -0,0 +1,71 @@ +{ + "entity": { + "sensor": { + "washing_modes": { + "state": { + "0": "Pripravljen", + "1": "Pripravljen", + "3": "Premor", + "4": "Na\u010drtovano", + "5": "Na\u010drtovano", + "6": "Napaka", + "7": "Pripravljen" + } + }, + "program_phases_wm": { + "state": { + "0": "Pripravljen", + "1": "Pranje", + "2": "Pranje", + "3": "O\u017eemanje", + "4": "Izpiranje", + "5": "Izpiranje", + "6": "Izpiranje", + "7": "Su\u0161enje", + "9": "Para", + "10": "Pripravljen", + "11": "O\u017eemanje", + "12": "Tehtanje ", + "13": "Tehtanje ", + "14": "Pranje", + "15": "Pranje", + "16": "Pranje", + "17": "Izpiranje", + "18": "Izpiranje", + "19": "Na\u010drtovano", + "20": "Ohranjanje sve\u017eine", + "24": "Osve\u017eitev", + "25": "Pranje", + "26": "Ogrevanje", + "27": "Pranje" + } + }, + "program_phases_td": { + "state": { + "0": "Pripravljen", + "1": "Su\u0161enje", + "2": "Su\u0161enje", + "3": "Hlajenje", + "13": "Hlajenje", + "14": "Su\u0161enje", + "15": "Su\u0161enje", + "16": "Hlajenje", + "18": "Ohrani sve\u017ee", + "19": "Su\u0161enje", + "20": "Su\u0161enje" + } + }, + "program_phases_dw": { + "state": { + "0": "Pripravljen", + "1": "Predpranje", + "2": "Pranje", + "3": "Izpiranje", + "4": "Su\u0161enje", + "5": "Pripravljen", + "6": "Hot rinse" + } + } + } + } +} \ No newline at end of file diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json new file mode 100644 index 0000000..0edb3bd --- /dev/null +++ b/custom_components/hon/translations/sr.json @@ -0,0 +1,71 @@ +{ + "entity": { + "sensor": { + "washing_modes": { + "state": { + "0": "Spremno", + "1": "Spremno", + "3": "Pauza", + "4": "Planirano", + "5": "Planirano", + "6": "Gre\u0161ka", + "7": "Spremno" + } + }, + "program_phases_wm": { + "state": { + "0": "Spremno", + "1": "Pranje", + "2": "Pranje", + "3": "Centrifuga", + "4": "Ispiranje", + "5": "Ispiranje", + "6": "Ispiranje", + "7": "Su\u0161enje", + "9": "Vodena para", + "10": "Spremno", + "11": "Centrifuga", + "12": "Vaganje ", + "13": "Vaganje ", + "14": "Pranje", + "15": "Pranje", + "16": "Pranje", + "17": "Ispiranje", + "18": "Ispiranje", + "19": "Planirano", + "20": "Odr\u017eavanje sve\u017eine", + "24": "Osve\u017eavanje", + "25": "Pranje", + "26": "Grejanje", + "27": "Pranje" + } + }, + "program_phases_td": { + "state": { + "0": "Spremno", + "1": "Su\u0161enje", + "2": "Su\u0161enje", + "3": "Hla\u0111enje", + "13": "Hla\u0111enje", + "14": "Su\u0161enje", + "15": "Su\u0161enje", + "16": "Hla\u0111enje", + "18": "O\u010duvanje sve\u017eine", + "19": "Su\u0161enje", + "20": "Su\u0161enje" + } + }, + "program_phases_dw": { + "state": { + "0": "Spremno", + "1": "Pretpranje", + "2": "Pranje", + "3": "Ispiranje", + "4": "Su\u0161enje", + "5": "Spremno", + "6": "Hot rinse" + } + } + } + } +} \ No newline at end of file diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json new file mode 100644 index 0000000..f40af01 --- /dev/null +++ b/custom_components/hon/translations/tr.json @@ -0,0 +1,71 @@ +{ + "entity": { + "sensor": { + "washing_modes": { + "state": { + "0": "Haz\u0131r", + "1": "Haz\u0131r", + "3": "Duraklat", + "4": "Planland\u0131", + "5": "Planland\u0131", + "6": "Hata", + "7": "Haz\u0131r" + } + }, + "program_phases_wm": { + "state": { + "0": "Haz\u0131r", + "1": "Y\u0131kama", + "2": "Y\u0131kama", + "3": "S\u0131kma", + "4": "Durulama", + "5": "Durulama", + "6": "Durulama", + "7": "Kurutma", + "9": "Buhar", + "10": "Haz\u0131r", + "11": "S\u0131kma", + "12": "Tartma ", + "13": "Tartma ", + "14": "Y\u0131kama", + "15": "Y\u0131kama", + "16": "Y\u0131kama", + "17": "Durulama", + "18": "Durulama", + "19": "Planland\u0131", + "20": "Tazeleme", + "24": "Tazeleme", + "25": "Y\u0131kama", + "26": "Is\u0131tma", + "27": "Y\u0131kama" + } + }, + "program_phases_td": { + "state": { + "0": "Haz\u0131r", + "1": "Kurutma", + "2": "Kurutma", + "3": "So\u011futma", + "13": "So\u011futma", + "14": "Kurutma", + "15": "Kurutma", + "16": "So\u011futma", + "18": "Tazeleme", + "19": "Kurutma", + "20": "Kurutma" + } + }, + "program_phases_dw": { + "state": { + "0": "Haz\u0131r", + "1": "\u00d6n Y\u0131kama", + "2": "Y\u0131kama", + "3": "Durulama", + "4": "Kurutma", + "5": "Haz\u0131r", + "6": "Hot rinse" + } + } + } + } +} \ No newline at end of file diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json new file mode 100644 index 0000000..55c2cd4 --- /dev/null +++ b/custom_components/hon/translations/zh.json @@ -0,0 +1,71 @@ +{ + "entity": { + "sensor": { + "washing_modes": { + "state": { + "0": "\u5c31\u7eea", + "1": "\u5c31\u7eea", + "3": "\u6682\u505c", + "4": "\u5df2\u8ba1\u5212", + "5": "\u5df2\u8ba1\u5212", + "6": "\u9519\u8bef", + "7": "\u5c31\u7eea" + } + }, + "program_phases_wm": { + "state": { + "0": "\u5c31\u7eea", + "1": "\u6d17\u6da4", + "2": "\u6d17\u6da4", + "3": "\u7529\u5e72", + "4": "\u6f02\u6d17", + "5": "\u6f02\u6d17", + "6": "\u6f02\u6d17", + "7": "\u70d8\u5e72", + "9": "\u84b8\u6c7d", + "10": "\u5c31\u7eea", + "11": "\u7529\u5e72", + "12": "\u6b63\u5728\u79f0\u91cd ", + "13": "\u6b63\u5728\u79f0\u91cd ", + "14": "\u6d17\u6da4", + "15": "\u6d17\u6da4", + "16": "\u6d17\u6da4", + "17": "\u6f02\u6d17", + "18": "\u6f02\u6d17", + "19": "\u5df2\u8ba1\u5212", + "20": "\u4fdd\u6301\u6e05\u65b0", + "24": "\u6e05\u65b0", + "25": "\u6d17\u6da4", + "26": "\u52a0\u70ed", + "27": "\u6d17\u6da4" + } + }, + "program_phases_td": { + "state": { + "0": "\u5c31\u7eea", + "1": "\u6b63\u5728\u70d8\u5e72", + "2": "\u70d8\u5e72", + "3": "\u51b7\u5374", + "13": "\u51b7\u5374", + "14": "\u6b63\u5728\u70d8\u5e72", + "15": "\u6b63\u5728\u70d8\u5e72", + "16": "\u51b7\u5374", + "18": "\u4fdd\u6301\u6e05\u65b0", + "19": "\u70d8\u5e72", + "20": "\u70d8\u5e72" + } + }, + "program_phases_dw": { + "state": { + "0": "\u5c31\u7eea", + "1": "\u9884\u6d17", + "2": "\u6d17\u6da4", + "3": "\u6f02\u6d17", + "4": "\u70d8\u5e72", + "5": "\u5c31\u7eea", + "6": "Hot rinse" + } + } + } + } +} \ No newline at end of file diff --git a/scripts/generate_translation.py b/scripts/generate_translation.py new file mode 100644 index 0000000..ae07d9a --- /dev/null +++ b/scripts/generate_translation.py @@ -0,0 +1,157 @@ +import asyncio +import json +from pathlib import Path + +from pyhon import HonAPI + +LANGUAGES = [ + "cs", + "de", + "el", + "en", + "es", + "fr", + "he", + "hr", + "it", + "nl", + "pl", + "pt", + "ro", + "ru", + "sk", + "sl", + "sr", + "tr", + "zh", +] + +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", +} + +SENSOR = { + "washing_modes": MACH_MODE, + "program_phases_wm": WASHING_PR_PHASE, + "program_phases_td": TUMBLE_DRYER_PR_PHASE, + "program_phases_dw": DISHWASHER_PR_PHASE, +} + + +async def check_translation_files(translations): + for language in LANGUAGES: + path = translations / f"{language}.json" + if not path.is_file(): + async with HonAPI(anonymous=True) as hon: + keys = await hon.translation_keys(language) + save_json(path, keys) + + +def load_hon_translations(): + translations = Path(__file__).parent / "translations" + translations.mkdir(exist_ok=True) + asyncio.run(check_translation_files(translations)) + return {f.stem: f for f in translations.glob("*.json")} + + +def load_hass_translations(): + translations = ( + Path(__file__).parent.parent / "custom_components" / "hon" / "translations" + ) + return {f.stem: f for f in translations.glob("*.json")} + + +def load_json(path): + if path: + with open(path, "r") as file: + return json.loads(file.read()) + return {} + + +def save_json(path, keys): + with open(path, "w") as json_file: + json_file.write(json.dumps(keys, indent=4)) + + +def load_key(full_key, json_data, fallback=None): + result = json_data.copy() + for key in full_key.split("."): + result = result.get(key, {}) + if not result and fallback: + return load_key(full_key, fallback) + return result or "" + + +def main(): + hass = load_hass_translations() + hon = load_hon_translations() + base_path = Path(__file__).parent.parent / "custom_components/hon/translations" + fallback = load_json(hon.get("en", "")) + for language in LANGUAGES: + original = load_json(hon.get(language, "")) + old = load_json(hass.get(language, "")) + for name, data in SENSOR.items(): + sensor = old.setdefault("entity", {}).setdefault("sensor", {}) + for number, phase in data.items(): + state = sensor.setdefault(name, {}).setdefault("state", {}) + if key := load_key(phase, original, fallback): + state[str(number)] = key + save_json(base_path / f"{language}.json", old) + + +if __name__ == "__main__": + main() -- 2.39.5 From 7f439139d5f533b565f1dd7589f1962b2c9e9273 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sat, 22 Apr 2023 21:19:32 +0200 Subject: [PATCH 055/205] Add program translations --- custom_components/hon/select.py | 10 +- custom_components/hon/translations/bg.json | 332 ----------- custom_components/hon/translations/cs.json | 644 +++++++++++++++++++++ custom_components/hon/translations/de.json | 644 +++++++++++++++++++++ custom_components/hon/translations/el.json | 644 +++++++++++++++++++++ custom_components/hon/translations/en.json | 582 ++++++++++++------- custom_components/hon/translations/es.json | 644 +++++++++++++++++++++ custom_components/hon/translations/fr.json | 644 +++++++++++++++++++++ custom_components/hon/translations/he.json | 238 ++++++++ custom_components/hon/translations/hr.json | 644 +++++++++++++++++++++ custom_components/hon/translations/it.json | 448 +++++++++++--- custom_components/hon/translations/nl.json | 644 +++++++++++++++++++++ custom_components/hon/translations/pl.json | 644 +++++++++++++++++++++ custom_components/hon/translations/pt.json | 644 +++++++++++++++++++++ custom_components/hon/translations/ro.json | 644 +++++++++++++++++++++ custom_components/hon/translations/ru.json | 644 +++++++++++++++++++++ custom_components/hon/translations/sk.json | 644 +++++++++++++++++++++ custom_components/hon/translations/sl.json | 644 +++++++++++++++++++++ custom_components/hon/translations/sr.json | 644 +++++++++++++++++++++ custom_components/hon/translations/tr.json | 644 +++++++++++++++++++++ custom_components/hon/translations/zh.json | 644 +++++++++++++++++++++ scripts/generate_translation.py | 22 + 22 files changed, 11310 insertions(+), 626 deletions(-) diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index c57f1d9..b944631 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -37,7 +37,7 @@ SELECTS = { key="startProgram.program", name="Program", entity_category=EntityCategory.CONFIG, - translation_key="programs", + translation_key="programs_wm", ), ), "TD": ( @@ -45,7 +45,7 @@ SELECTS = { key="startProgram.program", name="Program", entity_category=EntityCategory.CONFIG, - translation_key="programs", + translation_key="programs_td", ), SelectEntityDescription( key="startProgram.dryTimeMM", @@ -60,7 +60,7 @@ SELECTS = { key="startProgram.program", name="Program", entity_category=EntityCategory.CONFIG, - translation_key="programs", + translation_key="programs_wm", ), ), "OV": ( @@ -68,7 +68,7 @@ SELECTS = { key="startProgram.program", name="Program", entity_category=EntityCategory.CONFIG, - translation_key="programs", + translation_key="programs_ov", ), ), "IH": ( @@ -76,7 +76,7 @@ SELECTS = { key="startProgram.program", name="Program", entity_category=EntityCategory.CONFIG, - translation_key="programs", + translation_key="programs_ih", ), ), "DW": ( diff --git a/custom_components/hon/translations/bg.json b/custom_components/hon/translations/bg.json index ef4c662..5bb855c 100644 --- a/custom_components/hon/translations/bg.json +++ b/custom_components/hon/translations/bg.json @@ -73,338 +73,6 @@ "14": "Екстра сухо H-3" } } - }, - "select": { - "programs": { - "state": { - "20_degrees_coloured_cottons": "20° Colored and Cottons", - "20_degrees_new_energy_label": "20°C", - "active_steam": "Steam", - "active_wash": "Active Wash", - "active_wash_steam": "Active Wash + Steam", - "allergy_care": "Allergy Care", - "allergy_care_pro": "Allergy Care Pro", - "all_in_one_49": "All in One 49'", - "all_in_one_59": "All in One 59'", - "all_in_one_59_steam": "Active Wash + Steam", - "autocare": "Autocare", - "autoclean": "Drum Cleaning", - "baby_60": "All Baby 60°C", - "care_14": "Rapid Care 14'", - "care_30": "Rapid Care 30'", - "care_44": "Rapid Care 44'", - "checkup": "Check-Up", - "colour_59": "Colored 59'", - "colour_59_steam": "Colored 59' + Steam", - "cottons": "Cotton", - "cottons_prewash": "Cottons + Prewash", - "cottons_steam": "Cotton + Steam", - "cotton_care_59": "Cotton Care 59'", - "delicate_59": "Delicate 59'", - "delicate_silk": "Delicate and Silk", - "delicate_silk_steam": "Delicate and Silk + Steam", - "delicati_59": "Delicate 59'", - "delicati_59_steam": "Delicate 59' + Steam", - "drain_spin": "Drain + Spin", - "easy_iron": "Easy Iron", - "eco_40_60_new_energy_label": "Eco 40-60", - "extra_care": "Extra Care", - "fitness": "Fitness Care", - "fitness_care": "Fitness Care", - "fresh_care": "Fresh Care", - "fresh_care_steam": "Fresh Care + Steam", - "handwash_wool": "Hand Wash + Wool", - "high_dry": "High Heat Dry", - "hqd_20_degrees": "Cotton 20℃", - "hqd_allergy": "Allergy Care", - "hqd_autoclean": "Автоматично почистване", - "hqd_babycare": "Бебе", - "hqd_baby_care": "Бебе", - "hqd_bath_towel": "Хавлиени кърпи", - "hqd_bed_sheets": "Чаршафи", - "hqd_checkup": "Check-Up", - "hqd_bulky": "Обемисти", - "hqd_casual": "Ежедневни", - "hqd_cold_wind_30": "Студен бриз 30 мин", - "hqd_cold_wind_timing": "Студен бриз за време", - "hqd_cotton": "Памук", - "hqd_cottons": "Памук", - "hqd_curtain": "Пердета", - "hqd_delicate": "Деликатни", - "hqd_delicate_cradle": "Деликатни", - "hqd_diaper": "Бебешки пелени", - "hqd_dry": "Cotton Dry", - "hqd_dry_synthetics": "Low Heat Dry", - "hqd_duvet": "Олекотени завивки", - "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_feather": "Пълнеж от пера(пух)", - "hqd_handwash_wool": "Wool", - "hqd_hot_wind_timing": "Горещ въздух за време", - "hqd_hygienic": "Здравословна", - "hqd_i_refresh": "i-Refresh", - "hqd_i_refresh_pro": "i-Refresh Pro", - "hqd_jacket": "Якета", - "hqd_jeans": "Дънки", - "hqd_luxury": "Луксозно", - "hqd_mix": "Смесен тип", - "hqd_night_dry": "Сушене през ноща", - "hqd_outdoor": "Дрехи за открито", - "hqd_precious_cure": "Precious cure", - "hqd_quick_15": "Бързо 15 мин", - "hqd_quick_20": "Бързо 20 мин", - "hqd_quick_30": "Бързо 30 мин", - "hqd_quick_dry": "Бързо", - "hqd_quick_wash_57": "Quick Wash 57'", - "hqd_quilt": "Юргани", - "hqd_rapid_wash_and_dry": "Wash and dry", - "hqd_refresh": "Освежаване", - "hqd_rinse": "Rinses", - "hqd_school_uniform": "Ученически униформи", - "hqd_shirt": "Ризи", - "hqd_shirts": "Ризи", - "hqd_shoes": "Обувки", - "hqd_silk": "Коприна", - "hqd_smart": "Smart A.I.", - "hqd_spin": "Spin", - "hqd_sport": "Спорт", - "hqd_sports": "Спорт", - "hqd_synthetics": "Синтетика", - "hqd_super_fast": "Супер бързо 39 мин", - "hqd_synthetic_and_coloured": "Synthetics", - "hqd_timer": "Таймер", - "hqd_towel": "Хавлиени кърпи", - "hqd_underwear": "Бельо", - "hqd_warm_up": "Затопляне", - "hqd_wool": "Вълна", - "hqd_working_suit": "Работно облекло", - "hygiene_59": "Hygiene Plus 59'", - "hygiene_60": "Hygiene 60°C", - "hygiene_plus_59": "Hygiene Plus 59'", - "hygiene_plus_59_min": "Hygiene Plus 59'", - "hygiene_pro_4_min": "Hygiene Pro 49'", - "hygiene_pro_49_min": "Hygiene Pro 49'", - "hygiene_pro_steam": "Hygiene Pro + Steam", - "intensive_40": "Intensive 40°C", - "intensive_40_steam": "Intensive 40°C + Steam", - "iot_checkup": "Check-Up", - "iot_dry_air_refresh": "Air Refresh", - "iot_dry_anti_mites": "Anti-mite", - "iot_dry_baby": "Бебе", - "iot_dry_backpacks": "Раници", - "iot_dry_bathrobe": "Халати за баня", - "iot_dry_bed_linen": "Спално бельо", - "iot_dry_cotton": "Памук", - "iot_dry_cotton_dry": "Памук", - "iot_dry_cuddly_toys": "Плюшени играчки", - "iot_dry_curtains": "Пердета", - "iot_dry_dehumidifier": "Humidity Remover", - "iot_dry_delicates": "Деликатни", - "iot_dry_delicates_antiallergy": "Delicates Anti-allergy", - "iot_dry_delicate_tablecloths": "Delicate Tablecloths", - "iot_dry_denim_jeans": "Дънки", - "iot_dry_down_jacket": "Пухени якета", - "iot_dry_duvet": "Олекотени завивки", - "iot_dry_easy_iron_cotton": "Easy Iron - Cotton", - "iot_dry_easy_iron_synthetics": "Easy Iron - Synthetics", - "iot_dry_gym_fit": "Фитнес", - "iot_dry_lingerie": "Деликано бельо", - "iot_dry_mixed": "Смесен тип", - "iot_dry_mixed_dry": "Смесен тип", - "iot_dry_rapid_30": "Бързо 30 мин", - "iot_dry_rapid_59": "Бързо 59 мин", - "iot_dry_rapid_60_min_delicates": "Rapid 60' - Delicates", - "iot_dry_shirts": "Ризи", - "iot_dry_swimsuits_and_bikinis": "Бански", - "iot_dry_synthetics": "Синтетика", - "iot_dry_synthetic_dry": "Synthetic Dry", - "iot_dry_tablecloths": "Покривки", - "iot_dry_technical_fabrics": "Технически тъкани", - "iot_dry_warm_embrace": "Warm Embrace", - "iot_dry_wool": "Вълна", - "iot_dry_wool_dry": "Вълна", - "iot_wash_and_dry": "Wash and dry", - "iot_wash_anti_mites": "Anti-mites", - "iot_wash_anti_odor": "Anti-odour", - "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", - "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", - "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", - "iot_wash_baby_sanitizer": "Sanitizer", - "iot_wash_baby_sanitizer_steam": "Sanitiser + Steam", - "iot_wash_backpacks": "Backpacks", - "iot_wash_backpacks_zelig": "Backpacks", - "iot_wash_bathrobe": "Bathrobes and Towels", - "iot_wash_bathrobe_steam": "Bathrobe and Towels + Steam", - "iot_wash_bed_linen": "Bed Linen", - "iot_wash_bed_linen_steam": "Bed Linen + Steam", - "iot_wash_bed_linen_zelig": "Bed Linens", - "iot_wash_big_single_load": "Big single load", - "iot_wash_bleaching": "Bleaching", - "iot_wash_blood_stains": "Bloodstains", - "iot_wash_cashmere": "Cashmere", - "iot_wash_chocolate_stains": "Chocolate stains", - "iot_wash_cold_wash": "Cold Wash", - "iot_wash_colored": "Colored", - "iot_wash_colored_anti_stain": "Colored Anti-stain", - "iot_wash_colored_delicate": "Colored Delicate", - "iot_wash_coloured": "Colored", - "iot_wash_coloured_bed_linen": "Colored Bed Linen", - "iot_wash_coloured_bed_linen_steam": "Coloured Bed Linen + Steam", - "iot_wash_coloured_curtains": "Colored Curtains", - "iot_wash_coloured_shirts": "Colored Shirts", - "iot_wash_coloured_shirts_steam": "Colored Shirts + Steam", - "iot_wash_coloured_steam": "Colored + Steam", - "iot_wash_coloured_tableclothes": "Colored Tableclothes", - "iot_wash_coloured_tableclothes_steam": "Coloured Tablecloths + Steam", - "iot_wash_cotton": "Cotton", - "iot_wash_cotton_steam": "Cotton + Steam", - "iot_wash_cuddly_toys": "Cuddly Toys", - "iot_wash_curtains": "Curtains", - "iot_wash_curtains_steam": "Curtains + Steam", - "iot_wash_curtains_zelig": "Curtains", - "iot_wash_dark": "Darks", - "iot_wash_darks_and_coloured_44": "Darks and Colored 44'", - "iot_wash_darks_and_coloured_59": "Darks and Colored 59'", - "iot_wash_darks_and_coloured_xl": "Darks and Colored XL", - "iot_wash_dark_steam": "Darks + Steam", - "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", - "iot_wash_dash_cold_cycle": "Dash Cold Clean", - "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", - "iot_wash_delicate": "Delicates", - "iot_wash_delicate_antiallergy": "Delicate Anti-Allergy", - "iot_wash_delicate_antiallergy_steam": "Delicate Anti-Allergy + Steam", - "iot_wash_delicate_antiallergy_zelig": "Delicate Anti-Allergy", - "iot_wash_delicate_colors": "Delicate Colors", - "iot_wash_delicate_colors_steam": "Delicate Colors + Steam", - "iot_wash_delicate_dark": "Delicate Darks", - "iot_wash_delicate_steam": "Delicates + Steam", - "iot_wash_delicate_tablecloths": "Delicate Tablecloths", - "iot_wash_delicate_tablecloths_steam": "Delicate Tablecloths + Steam", - "iot_wash_delicate_whites": "Delicate Whites", - "iot_wash_denim_jeans": "Denim - Jeans", - "iot_wash_diving_suits": "Diving Suits", - "iot_wash_diving_suits_zelig": "Diving Suits", - "iot_wash_down_jackets": "Down Jackets", - "iot_wash_down_jackets_zelig": "Down Jackets", - "iot_wash_duvet": "Duvet", - "iot_wash_fruit_stains": "Fruit stains", - "iot_wash_gym_fit": "Gym Fit - Fitness", - "iot_wash_handwash": "Handwash", - "iot_wash_handwash_colored": "Handwash Colored", - "iot_wash_handwash_dark": "Handwash Darks", - "iot_wash_lingerie": "Lingerie", - "iot_wash_masks_refresh": "Masks Refresh", - "iot_wash_masks_sanification": "Masks Sanitization", - "iot_wash_masks_sanification_steam": "Mask Sanitisation + Steam", - "iot_wash_mats": "Mats", - "iot_wash_men_s_trousers": "Trousers", - "iot_wash_mixed": "Mixed", - "iot_wash_mixed_steam": "Mixed + Steam", - "iot_wash_mix_and_coloured_44": "Mix and Colored 44'", - "iot_wash_mix_and_coloured_59": "Mix and Colored 59'", - "iot_wash_mix_and_coloured_xl": "Mix and colored XL", - "iot_wash_new_clothes": "New Clothes", - "iot_wash_perfect_white": "Perfect White", - "iot_wash_perfect_white_steam": "Perfect White + Steam", - "iot_wash_pets": "Pet Accessories", - "iot_wash_pets_hair_removal": "Pets Hair Removal", - "iot_wash_pets_odours_stains_removal": "Pets Odours and Stains Removal", - "iot_wash_pets_steam": "Pet Accessories + Steam", - "iot_wash_playsuits": "Playsuits", - "iot_wash_playsuits_steam": "Playsuits + Steam", - "iot_wash_quick_drum_cleaner": "Quick drum cleaner", - "iot_wash_rapid_14": "Rapid 14’", - "iot_wash_rapid_30": "Rapid 30’", - "iot_wash_rapid_44": "Rapid 44'", - "iot_wash_rapid_59": "Rapid 59'", - "iot_wash_rapid_59_steam": "Rapid 59' + Steam", - "iot_wash_refresh_14_min": "Refresh 14'", - "iot_wash_resistant_colored": "Resistant Colored", - "iot_wash_resistant_dark": "Resistant Darks", - "iot_wash_resistant_whites": "Resistant Whites", - "iot_wash_rinse": "Rinses", - "iot_wash_shirts": "Shirts", - "iot_wash_shirts_steam": "Shirts + Steam", - "iot_wash_silk": "Silk", - "iot_wash_ski_suit": "Ski Suit", - "iot_wash_ski_suit_zelig": "Ski Suit", - "iot_wash_spin": "Spin", - "iot_wash_sport": "Sport", - "iot_wash_sport_anti_odor": "Anti-odour Sportswear", - "iot_wash_sport_anti_odor_zelig": "Anti-odour Sportswear", - "iot_wash_stains_remover": "Stain Remover", - "iot_wash_swimsuits_and_bikinis": "Swimsuits and Bikinis", - "iot_wash_synthetic": "Synthetics", - "iot_wash_synthetic_steam": "Synthetics + Steam", - "iot_wash_tablecloths": "Tablecloths", - "iot_wash_tablecloths_steam": "Tablecloths + Steam", - "iot_wash_technical_fabrics": "Technical Fabrics", - "iot_wash_technical_fabrics_zelig": "Technical Fabrics", - "iot_wash_technical_jackets": "Technical Jackets", - "iot_wash_technical_jackets_zelig": "Technical Jackets", - "iot_wash_trainers": "Trainers", - "iot_wash_whites": "Whites", - "iot_wash_whites_44": "Whites 44'", - "iot_wash_whites_59": "Whites 59'", - "iot_wash_whites_xl": "Whites XL", - "iot_wash_wine_stains": "Wine Stains", - "iot_wash_wool": "Wool", - "jeans": "Jeans", - "jeans_60": "Jeans", - "low_dry": "Low Heat Dry", - "mixed": "Mixed", - "mixed_and_colored_59": "Mixed and Colored 59'", - "mixed_steam": "Mixed + Steam", - "mix_and_colour_59": "Mixed and Colored 59'", - "mix_and_colour_59_steam": "Mixed and Coloured 59' + Steam", - "night_and_day": "Night and Day", - "night_wash": "Night Wash", - "perfect_59": "Perfect 59'", - "perfect_cotton_59": "Perfect Cotton 59'", - "perfect_cotton_59_steam": "Perfect Cotton 59' + Steam", - "perfect_whites_59": "Perfect White 59'", - "rapid_14_min": "Rapid 14'", - "rapid_30_min": "Rapid 30'", - "rapid_44_min": "Rapid 44'", - "rapid_a_class_60": "Rapid 59' A Class", - "rapid_a_class_60_steam": "Rapid 59' A Class + Steam", - "rapid_wash_and_dry_59_min": "Wash and Dry 59'", - "resistant_cotton": "Resistant Cotton", - "resistant_cotton_steam": "Resistant Cotton + Steam", - "rinse": "Rinse", - "shirts_steam": "Shirts + Steam", - "silent_night": "Silent Night", - "single_item": "Single Item", - "single_item_steam": "Single Item + Steam", - "smart_wash": "Smart Wash", - "soft_care": "Soft Care", - "soft_care_steam": "Soft Care + Steam", - "soft_care_steam_title": "Soft Care + Steam", - "special_39": "Special 39'", - "special_39_full_load": "Special 39'", - "special_39_full_load_steam": "Special 39' + Steam", - "special_49": "Special 49'", - "sport_39": "Sport 39'", - "sport_plus_29": "Sport Plus 29'", - "sport_plus_39": "Sport Plus 39'", - "steam_39": "Steam 39'", - "steam_care_pro": "Steam Care Pro", - "steam_care_pro_cotton": "Steam Care Pro - Cottons", - "steam_care_pro_delicates": "Steam Care Pro - Delicates", - "steam_care_pro_synthetic": "Steam Care Pro - Synthetics", - "steam_hygiene_plus": "Hygiene Plus + Steam", - "synthetics": "Synthetics", - "synthetic_and_coloured": "Synthetic and Colored", - "synthetic_and_coloured_steam": "Synthetic and Coloured + Steam", - "tailored_resistant_cotton": "Tailored Resistant Cotton", - "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", - "total_care": "Total Care", - "tumbling": "Tumbling", - "wool": "Wool", - "wool_and_delicates_49": "Wool and Delicates 49'", - "wool_dry": "Wool Dry", - "wool_soft_care": "Wool and Soft Car" - } - } } } } diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index afd3b9b..030c7b8 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -66,6 +66,650 @@ "6": "Hot rinse" } } + }, + "select": { + "programs_dw": { + "state": { + "59_min": "Rychl\u00fd 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "Auto univerz\u00e1ln\u00ed 50 -60\u00b0C", + "auto_universal_plus": "Auto univerz\u00e1ln\u00ed plus 65 - 75\u00b0C", + "auto_universal_plus_soil": "Auto univerz\u00e1ln\u00ed plus 65 - 75\u00b0C", + "auto_universal_soil": "Auto univerz\u00e1ln\u00ed 50 -60\u00b0C", + "auto_wash": "Automatick\u00e9 pran\u00ed", + "auto_wash_soil": "Automatick\u00e9 pran\u00ed", + "classe_a_59": "A t\u0159\u00edda 1 h 65\u00b0C", + "delicate": "Jemn\u00fd 45\u00b0C", + "dishwasher_care": "Cyklus odstra\u0148ov\u00e1n\u00ed vodn\u00edho kamene", + "eco": "Eco", + "eco_asynch": "Eko 45 \u00b0C", + "eco_bldc": "Eko 45 \u00b0C", + "eco_synch": "Eko 45 \u00b0C", + "gentle_wash": "Gentle wash", + "glass": "Sklo", + "glass _care": "Glass Care", + "glassware": "Sklo 45 \u00b0C", + "glass_care": "Glass Care", + "hygiene": "Hygiena", + "hygiene_plus": "Hygienick\u00fd+ 75 \u00b0C", + "intensive": "Intenzivn\u00ed", + "intensive_rapid": "intenzivn\u00ed rychl\u00fd", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "Auto univerz\u00e1ln\u00ed 50 -60\u00b0C", + "iot_auto_wash_soil": "Automatick\u00e9 pran\u00ed", + "iot_baby_care": "P\u00e9\u010de o d\u011bti", + "iot_breakfast": "Sn\u00eddan\u011b", + "iot_checkup": "Kontrola", + "iot_china_crystals": "\u010c\u00ednsk\u00fd k\u0159i\u0161\u0165\u00e1l", + "iot_classe_a_59": "Rychl\u00fd 59'", + "iot_cocktail_glasses": "Koktejlov\u00e9 sklenice", + "iot_cocktail_glasses_soil": "Koktejlov\u00e9 sklenice", + "iot_daily_care": "Ka\u017edodenn\u00ed p\u00e9\u010de", + "iot_daily_care_soil": "Ka\u017edodenn\u00ed p\u00e9\u010de", + "iot_delicate": "Jemn\u00fd 45\u00b0C", + "iot_dinner_for_two": "Ve\u010de\u0159e pro 2", + "iot_dinner_for_two_soil": "Ve\u010de\u0159e pro 2", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "Eko 45 \u00b0C", + "iot_eco_bldc": "Eko 45 \u00b0C", + "iot_eco_synch": "Eko 45 \u00b0C", + "iot_extra_hygiene": "Hygiena extra", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "Happy Hour", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "Party", + "iot_party_soil": "Party", + "iot_pizza_menu": "N\u00e1dob\u00ed na pizzu", + "iot_pizza_menu_soil": "N\u00e1dob\u00ed na pizzu", + "iot_plastic_tupperware": "Plastov\u00e9 n\u00e1dob\u00ed a Tupperware", + "iot_porcelain": "Porcel\u00e1n", + "iot_pot_&_pans": "Hrnce a p\u00e1nve", + "iot_pot_&_pans_soil": "Hrnce a p\u00e1nve", + "iot_power_mix_wash": "Power Mix Wash", + "iot_power_mix_wash_soil": "Power Mix Wash", + "iot_prewash": "P\u0159edp\u00edrka", + "iot_pyrex_and_glassware": "Pyrex a sklen\u011bn\u00e9 n\u00e1dob\u00ed", + "iot_rapid_29": "Rychly 29'", + "iot_rapid_39": "Rychl\u00fd 39' 60 \u00b0C", + "iot_single": "Jedna osoba", + "iot_steam": "Parn\u00ed 75 \u00b0C", + "iot_super_flash": "Super rychl\u00fd", + "iot_super_wash": "Super myt\u00ed", + "iot_turbopower": "TurboPower", + "iot_universal": "Univerz\u00e1ln\u00ed 60 \u00b0C", + "iot_wok_grids_maxi_pans": "Speci\u00e1ln\u00ed p\u00e1nve (Woky \u2013 m\u0159\u00ed\u017eky a velik\u00e9 p\u00e1nve)", + "iot_wok_grids_maxi_pans_soil": "Speci\u00e1ln\u00ed p\u00e1nve (Woky \u2013 m\u0159\u00ed\u017eky a velik\u00e9 p\u00e1nve)", + "iot_yes_quick_cycle": "Yes Quick", + "night": "Ultra tich\u00fd 55\u00b0C", + "prewash": "P\u0159edp\u00edrka", + "rapid_20": "Rychl\u00fd 20'", + "rapid_24": "Rychly 24'", + "rapid_29": "Rychly 29' 50\u00b0C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "Rychl\u00fd 39' 60 \u00b0C", + "rapid_49": "Rychl\u00fd 49'", + "rapid_59": "Rychl\u00fd 59'", + "sanitising": "Dezinfekce", + "silence": "Silence", + "silent": "Noc", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "special": "speci\u00e1ln\u00ed", + "special_pw_prz": "speci\u00e1ln\u00ed", + "steam": "Parn\u00ed 75 \u00b0C", + "steam_plus": "P\u00e1ra plus 75\u00a0\u00b0C", + "total_care": "Total Care 50\u00b0C", + "ultra_silence": "Ultra tich\u00fd 55\u00b0C", + "ultra_silent": "Ultra tich\u00fd 55\u00b0C", + "universal": "Univerz\u00e1ln\u00ed 60 \u00b0C", + "universal_plus": "Univerz\u00e1ln\u00ed Plus 70 \u00b0C", + "zoom_39": "Zoom 39 min" + } + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "Bramborov\u00e1 placka", + "iot_special_beef_fillet": "Sv\u00ed\u010dkov\u00e1", + "iot_special_beef_veal_stew": "Du\u0161en\u00e9 hov\u011bz\u00ed a telec\u00ed maso", + "iot_special_boiled_rice": "Va\u0159en\u00e1 r\u00fd\u017ee", + "iot_special_chicken_breast": "Ku\u0159ec\u00ed prsa", + "iot_special_chicken_legs": "Ku\u0159ec\u00ed stehna", + "iot_special_chocolate_pudding": "\u010cokol\u00e1dov\u00fd pudink", + "iot_special_entrecote": "Ro\u0161t\u011bn\u00e1", + "iot_special_fresh_tuna": "\u010cerstv\u00fd tu\u0148\u00e1k", + "iot_special_grilled_vegetables": "Grilovan\u00e1 zelenina", + "iot_special_lamb_cutlet": "Jehn\u011b\u010d\u00ed kotletka", + "iot_special_meatballs": "Masov\u00e9 kuli\u010dky", + "iot_special_minestrone": "Minestrone", + "iot_special_mussels": "Sl\u00e1vky", + "iot_special_omelette": "Omeleta", + "iot_special_pancakes": "Pala\u010dinka", + "iot_special_paris_style_peas": "Hr\u00e1\u0161ek po pa\u0159\u00ed\u017esku", + "iot_special_poached_eggs": "S\u00e1zen\u00e1 vejce", + "iot_special_pork_fillet": "Vep\u0159ov\u00fd pl\u00e1tek", + "iot_special_pork_ribs": "Vep\u0159ov\u00e1 \u017eebra", + "iot_special_prawns": "Krevety", + "iot_special_quinoa": "Quinoa", + "iot_special_ratatouille": "Ratatouille", + "iot_special_salmon_fillet": "Filet z lososa", + "iot_special_saute_potatoes": "Restovan\u00e9 brambory", + "iot_special_scallops": "Lastury", + "iot_special_scrambled_eggs": "Sma\u017een\u00e1 vaj\u00ed\u010dka", + "iot_special_spelt": "\u0160palda", + "iot_special_veggy_noodles": "Vegetari\u00e1nsk\u00e9 nudle", + "iot_special_white_fish_fillet": "Filety z b\u00edl\u00fdch ryb", + "iot_standard_boiling": "Va\u0159en\u00ed", + "iot_standard_frying": "Sma\u017eit", + "iot_standard_keep_warm": "Udr\u017eov\u00e1n\u00ed tepla", + "iot_standard_melting": "Rozpustit", + "iot_standard_simmering": "Slab\u00e9 va\u0159en\u00ed" + } + }, + "programs_ov": { + "state": { + "bakery": "T\u011bstoviny a pe\u010divo", + "bakery_steam": "Chl\u00e9b pe\u010den\u00fd v p\u00e1\u0159e", + "bottom_heating": "Spodn\u00ed oh\u0159ev", + "bottom_heating_fan": "Spodn\u00ed oh\u0159ev + ventil\u00e1tor", + "bread": "Chl\u00e9b", + "bread_steam": "Pe\u010divo pe\u010den\u00e9 v p\u00e1\u0159e", + "convection_fan": "Statick\u00fd + ventil\u00e1tor", + "convection_fan_turnspit": "Konvekce + ventil\u00e1tor + ro\u017ee\u0148", + "conventional": "Statick\u00fd", + "conventional_turnspit": "Konvek\u010dn\u00ed + ro\u017ee\u0148", + "defrost": "Rozmrazov\u00e1n\u00ed", + "descaling": "Odstra\u0148ov\u00e1n\u00ed vodn\u00edho kamene", + "fish": "Ryby", + "fish_steam": "Ryby p\u0159ipravovan\u00e9 v p\u00e1\u0159e", + "grill_cata": "Gril", + "grill_fan_cata": "Ventil\u00e1tor grilu", + "grill_fan_pyro": "Gril + ventil\u00e1tor", + "grill_pyro": "Gril", + "h20_clean": "H2O-Clean", + "iot_bread": "Chl\u00e9b", + "iot_h20_clean": "h2O clean", + "leavening": "Kynut\u00ed", + "low_temp_cooking": "P\u0159\u00edprava p\u0159i n\u00edzk\u00fdch teplot\u00e1ch", + "low_temp_cooking_fish": "P\u0159\u00edprava ryb p\u0159i n\u00edzk\u00fdch teplot\u00e1ch", + "low_temp_cooking_fish_steam": "P\u0159\u00edprava ryb v p\u00e1\u0159e p\u0159i n\u00edzk\u00fdch teplot\u00e1ch", + "low_temp_cooking_meat": "P\u0159\u00edprava masa p\u0159i n\u00edzk\u00fdch teplot\u00e1ch", + "low_temp_cooking_meat_steam": "P\u0159\u00edprava masa v p\u00e1\u0159e p\u0159i n\u00edzk\u00fdch teplot\u00e1ch", + "low_temp_cooking_steam": "P\u0159\u00edprava v p\u00e1\u0159e p\u0159i n\u00edzk\u00fdch teplot\u00e1ch", + "meat": "Maso", + "meat_steam": "Maso p\u0159ipravovan\u00e9 v p\u00e1\u0159e", + "multi_level": "V\u00edce\u00farov\u0148ov\u00e9", + "paella": "Paella", + "pasta_and_bakery": "T\u011bstoviny a pe\u010divo", + "pizza": "Pizza", + "pyrolysis": "Pyrol\u00fdza", + "pyrolysis_plus": "Pyrol\u00fdza +", + "red_meat": "Tmav\u00e9 maso", + "red_meat_steam": "\u010cerven\u00e9 maso p\u0159ipravovan\u00e9 v p\u00e1\u0159e", + "regenerate": "Regenerace", + "soft_plus": "Soft +", + "super_grill": "Super gril", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_desctiption": "Tato funkce je ide\u00e1ln\u00ed pro p\u0159\u00edpravu pokrm\u016f, kter\u00e9 jsou uvnit\u0159 m\u011bkk\u00e9 a na povrchu k\u0159upav\u00e9.\r\r\r\r\r\r\r\r\r\nTato funkce sni\u017euje pot\u0159ebn\u00e9 mno\u017estv\u00ed tuku nebo oleje pro zdravou dietu.\r\r\r\r\r\r\r\r\r\nKombinace topn\u00fdch t\u011bles s cyklem pulzuj\u00edc\u00edho vzduchu zaru\u010duje dokonal\u00e9 v\u00fdsledky pe\u010den\u00ed.", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Zelenina", + "vegetables_cata": "Zelenina", + "vegetables_pyro": "Zelenina", + "water_discharge": "Odtok vody", + "white_meat": "B\u00edl\u00e9 maso", + "white_meat_steam": "B\u00edl\u00e9 maso p\u0159ipravovan\u00e9 v p\u00e1\u0159e" + } + }, + "programs_td": { + "state": { + "active_dry": "Aktivn\u00ed su\u0161en\u00ed", + "allergy_care": "Antialergick\u00fd", + "all_in_one": "All in One", + "antiallergy": "Antialergick\u00fd", + "anti_odours": "Proti z\u00e1pachu", + "auto_care": "Automatick\u00e1 p\u00e9\u010de", + "baby": "D\u011btsk\u00e9", + "bed_quilt": "Lo\u017en\u00ed p\u0159ikr\u00fdvka", + "care_30": "P\u00e9\u010de 30", + "care_45": "P\u00e9\u010de 45", + "care_59": "P\u00e9\u010de 59", + "coloured": "Barevn\u00e9", + "daily_45_min": "DENNI 45'", + "daily_perfect_59_min": "DENNI PERFEKTNI 59'", + "darks_and_coloured": "Tmav\u00e9 a barevn\u00e9", + "delicates": "Jemn\u00e9", + "duvet": "P\u0159ikr\u00fdvky", + "eco": "Eco bavlna", + "ecospeed_cottons": "Ecospeed bavlna", + "ecospeed_delicates": "Eco rychly - jemne", + "ecospeed_mixed": "Ecospeed sm\u011bsn\u00e9", + "extra_hygiene": "HYGIENA EXTRA", + "fitness": "Cvi\u010den\u00ed", + "fresh_care": "Sv\u011b\u017e\u00ed p\u00e9\u010de", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Ru\u010dn\u00edky", + "hqd_bed_sheets": "Povle\u010den\u00ed", + "hqd_bulky": "Objemn\u00e9 kusy", + "hqd_casual": "Casual", + "hqd_cold_wind_30": "Chladn\u00fd v\u00e1nek 30\u00a0minut", + "hqd_cold_wind_timing": "Chladn\u00fd v\u00e1nek ", + "hqd_cotton": "Bavlna", + "hqd_curtain": "Z\u00e1clony", + "hqd_delicate": "Jemn\u00e9", + "hqd_diaper": "Pleny", + "hqd_duvet": "P\u0159ikr\u00fdvky", + "hqd_feather": "Pro\u0161\u00edvan\u00e9 bundy", + "hqd_hot_wind_timing": "Hork\u00fd vzduch", + "hqd_hygienic": "Dezinfekce", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Bundy", + "hqd_jeans": "D\u017e\u00edny", + "hqd_luxury": "Luxusn\u00ed", + "hqd_mix": "Sm\u011bsn\u00e9", + "hqd_night_dry": "Su\u0161en\u00ed p\u0159es noc", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Rychl\u00fd 20", + "hqd_quick_30": "Rychl\u00fd 30", + "hqd_quick_dry": "Rychl\u00e9 su\u0161en\u00ed", + "hqd_quilt": "Deky", + "hqd_refresh": "Osv\u011b\u017een\u00ed", + "hqd_school_uniform": "\u0160koln\u00ed uniformy", + "hqd_shirt": "Ko\u0161ile", + "hqd_shoes": "Obuv", + "hqd_silk": "Hedv\u00e1b\u00ed", + "hqd_sports": "Sportovn\u00ed", + "hqd_synthetics": "Syntetika", + "hqd_timer": "Na\u010dasov\u00e1no", + "hqd_towel": "Ru\u010dn\u00edky", + "hqd_underwear": "Spodn\u00ed pr\u00e1dlo", + "hqd_warm_up": "Oh\u0159\u00e1t\u00ed", + "hqd_wool": "Vlna", + "hqd_working_suit": "Pracovn\u00ed od\u011bvy", + "hygiene": "Hygiena", + "iot_checkup": "Kontrola", + "iot_dry_anti_mites": "Proti rozto\u010d\u016fm", + "iot_dry_baby": "D\u011btsk\u00e9", + "iot_dry_backpacks": "Batohy", + "iot_dry_bathrobe": "\u017dupany", + "iot_dry_bed_linen": "Lo\u017en\u00ed pr\u00e1dlo", + "iot_dry_bed_quilt": "Lo\u017en\u00ed p\u0159ikr\u00fdvka", + "iot_dry_cotton": "Bavlna", + "iot_dry_cuddly_toys": "Ply\u0161ov\u00e9 hra\u010dky", + "iot_dry_curtains": "Z\u00e1v\u011bsy", + "iot_dry_dehumidifier": "Odstra\u0148ova\u010d vlhkosti", + "iot_dry_delicates": "Jemn\u00e9 pr\u00e1dlo", + "iot_dry_delicate_tablecloths": "Jemn\u00e9 ubrusy", + "iot_dry_denim_jeans": "D\u017e\u00ednovina - d\u017e\u00edny", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "P\u0159ikr\u00fdvky", + "iot_dry_easy_iron_cotton": "Super snadn\u00e9 \u017eehlen\u00ed", + "iot_dry_easy_iron_synthetics": "Velmi snadn\u00e9 \u017eehlen\u00ed - syntetika", + "iot_dry_gym_fit": "Sportovn\u00ed oble\u010den\u00ed", + "iot_dry_lingerie": "Spodn\u00ed pr\u00e1dlo", + "iot_dry_mixed": "Sm\u00ed\u0161en\u00e9", + "iot_dry_playsuits": "Tepl\u00e1ky", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Rychl\u00fd 59'.", + "iot_dry_refresh": "Osv\u011b\u017een\u00ed", + "iot_dry_regenerates_waterproof": "O\u017eiven\u00ed nepromokav\u00fdch tkanin", + "iot_dry_relax_creases": "Uvoln\u011bn\u00ed z\u00e1hyb\u016f", + "iot_dry_shirts": "Ko\u0161ile", + "iot_dry_small_load": "Mal\u00e1 n\u00e1pl\u0148", + "iot_dry_swimsuits_and_bikinis": "Plavky", + "iot_dry_synthetics": "Syntetika", + "iot_dry_synthetic_dry": "Syntetika - such\u00e9", + "iot_dry_tablecloths": "Ubrusy", + "iot_dry_technical_fabrics": "Technick\u00e9 tkaniny", + "iot_dry_warm_embrace": "D\u011btsk\u00e1 zavinova\u010dka", + "iot_dry_wool": "Woolmark", + "jeans": "D\u017e\u00edny", + "mix_and_dry": "Mix a such\u00e9", + "pets": "Zv\u00ed\u0159ata", + "pre_iron": "P\u0159ed \u017eehlen\u00edm", + "rapid_30": "Rapid 30", + "rapid_45": "Rychl\u00fd 45 min", + "rapid_59": "Perfektn\u011b rychl\u00fd 59 min", + "refresh": "Osv\u011b\u017een\u00ed", + "relax_creases": "Uvoln\u011bn\u00ed z\u00e1hyb\u016f", + "saving_30_min": "USPORNY 30'", + "shirts": "Ko\u0161ile", + "shoes": "Obuv", + "small_load": "Mal\u00e1 n\u00e1pl\u0148", + "soft_care": "M\u011bkk\u00e1 p\u00e9\u010de", + "sport_plus": "Sport", + "super_easy_iron_misti": "Velmi snadn\u00e9 \u017eehlen\u00ed \u2013 sm\u00ed\u0161en\u00e9", + "super_easy_iron_xxl": "Velmi snadn\u00e9 \u017eehlen\u00ed \u2013 XXL", + "super_fast_cottons": "Super rychl\u00fd bavlna", + "super_fast_delicates": "Super rychl\u00fd jemn\u00e9", + "synthetics": "Syntetika", + "total_care": "Total Care", + "trainers": "Sportovn\u00ed obuv", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Obnoven\u00ed vod\u011bodolnosti", + "whites": "B\u00edl\u00e9 pr\u00e1dlo", + "wool": "Su\u0161en\u00ed vlny", + "woolmark": "Woolmark", + "xxl_load": "XXL n\u00e1pl\u0148", + "zoom_59": "Zoom 59" + } + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "20\u00b0 barevn\u00e9 a bavln\u011bn\u00e9 l\u00e1tky", + "20_degrees_new_energy_label": "20 \u00b0C", + "active_steam": "P\u00e1ra", + "active_wash": "Aktivn\u00ed pran\u00ed", + "active_wash_steam": "Aktivn\u00ed pran\u00ed", + "allergy_care": "Antialergick\u00e1 p\u00e9\u010de", + "allergy_care_pro": "Antialergick\u00e1 p\u00e9\u010de Pro", + "all_in_one_49": "V\u0161e v jednom 49'.", + "all_in_one_59": "V\u0161e v jednom 59'.", + "all_in_one_59_steam": "Aktivn\u00ed pran\u00ed + p\u00e1ra", + "autocare": "Autocare", + "autoclean": "\u010ci\u0161t\u011bn\u00ed bubnu", + "baby_60": "V\u0161echno d\u011btsk\u00e9 60\u00b0C", + "care_14": "Rapid care 14'", + "care_30": "Rapid care 30'", + "care_44": "Rapid Care 44'", + "checkup": "Kontrola", + "colour_59": "Barevn\u00e9 59'", + "colour_59_steam": "Barevn\u00e9 59'' + p\u00e1ra", + "cottons": "Bavlna", + "cottons_prewash": "Bavlna + p\u0159edp\u00edrka", + "cottons_steam": "Bavlna + P\u00e1ra", + "cotton_care_59": "Cotton Care 59'", + "delicate_59": "Jemn\u00e9 59'", + "delicate_silk": "Jemn\u00e9 hedv\u00e1b\u00ed", + "delicate_silk_steam": "Jemn\u00e9 hedv\u00e1b\u00ed + p\u00e1ra", + "delicati_59": "Jemn\u00e9 59'", + "delicati_59_steam": "Jemn\u00e9 59'", + "drain_spin": "Od\u010derp\u00e1n\u00ed + odst\u0159ed\u011bn\u00ed", + "easy_iron": "Snadn\u00e9 \u017eehlen\u00ed", + "eco_40_60_new_energy_label": "Eco 40-60", + "extra_care": "Extra P\u00e9\u010de", + "fitness": "Cvi\u010den\u00ed P\u00e9\u010de", + "fitness_care": "Cvi\u010den\u00ed P\u00e9\u010de", + "fresh_care": "Sv\u011b\u017e\u00ed p\u00e9\u010de", + "fresh_care_steam": "Sv\u011b\u017e\u00ed p\u00e9\u010de + p\u00e1ra", + "handwash_wool": "Ru\u010dn\u00ed pran\u00ed a vlna", + "high_dry": "Bavlna - such\u00e9", + "hqd_20_degrees": "Bavlna 20\u00a0\u2103", + "hqd_allergy": "Antialergick\u00e1 p\u00e9\u010de", + "hqd_autoclean": "\u010ci\u0161t\u011bn\u00ed bubnu", + "hqd_babycare": "P\u00e9\u010de o d\u011bti", + "hqd_checkup": "Kontrola", + "hqd_cottons": "Bavlna", + "hqd_delicate": "Jemn\u00e9", + "hqd_delicate_cradle": "Jemn\u00e9", + "hqd_dry": "Bavlna - such\u00e9", + "hqd_dry_synthetics": "Sm\u011bsn\u00e9 - such\u00e9", + "hqd_duvet": "P\u0159ikr\u00fdvky", + "hqd_eco_40_60_degrees": "Eco 40-60", + "hqd_handwash_wool": "Vlna", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "Sm\u00ed\u0161en\u00e9", + "hqd_quick_15": "Rychl\u00fd 15'", + "hqd_quick_wash_57": "Rychl\u00e9 pran\u00ed 57 min", + "hqd_rapid_wash_and_dry": "Pran\u00ed a su\u0161en\u00ed", + "hqd_refresh": "Osv\u011b\u017een\u00ed", + "hqd_rinse": "M\u00e1ch\u00e1n\u00ed", + "hqd_shirts": "Ko\u0161ile", + "hqd_smart": "Smart A.I.", + "hqd_spin": "Odst\u0159e\u010fov\u00e1n\u00ed", + "hqd_sport": "Sportovn\u00ed", + "hqd_super_fast": "Rychl\u00fd 39\u2019", + "hqd_synthetic_and_coloured": "Syntetika", + "hygiene_59": "Hygienicky Plus 59'", + "hygiene_60": "Hygienick\u00fd 60\u00b0", + "hygiene_plus_59": "Hygienicky Plus 59'", + "hygiene_plus_59_min": "Hygienicky Plus 59'", + "hygiene_pro _49_min": "Hygienick\u00fd Pro 49 '", + "hygiene_pro_49_min": "Hygienick\u00fd Pro 49 min", + "hygiene_pro_steam": "Hygiene Pro + p\u00e1ra", + "intensive_40": "Intenzivn\u00ed 40\u00b0C", + "intensive_40_steam": "Intenzivn\u00ed 40\u00b0C + p\u00e1ra", + "iot_active_steam": "P\u00e1ra", + "iot_active_wash_steam": "Aktivn\u00ed pran\u00ed", + "iot_allergy_care_pro": "Antialergick\u00e1 p\u00e9\u010de Pro", + "iot_all_in_one_59_steam": "Aktivn\u00ed pran\u00ed + p\u00e1ra", + "iot_checkup": "Kontrola", + "iot_colour_59_steam": "Barevn\u00e9 59'' + p\u00e1ra", + "iot_cottons_steam": "Bavlna + P\u00e1ra", + "iot_delicate_silk_steam": "Jemn\u00e9 hedv\u00e1b\u00ed + p\u00e1ra", + "iot_delicati_59_steam": "Jemn\u00e9 59'", + "iot_dry_air_refresh": "Osv\u011b\u017een\u00ed", + "iot_dry_anti_mites": "Proti rozto\u010d\u016fm", + "iot_dry_baby": "D\u011btsk\u00e9", + "iot_dry_backpacks": "Batohy", + "iot_dry_bathrobe": "\u017dupany a por\u00e9zn\u00ed tkaniny", + "iot_dry_bed_linen": "Lo\u017en\u00ed pr\u00e1dlo", + "iot_dry_cotton_dry": "Bavlna - such\u00e9", + "iot_dry_cuddly_toys": "Ply\u0161ov\u00e9 hra\u010dky", + "iot_dry_curtains": "Z\u00e1clony", + "iot_dry_dehumidifier": "Odstra\u0148ova\u010d vlhkosti", + "iot_dry_delicates_antiallergy": "Jemn\u00e9 - antialergenn\u00ed", + "iot_dry_delicate_tablecloths": "Jemn\u00e9 ubrusy", + "iot_dry_denim_jeans": "D\u017e\u00ednovina - d\u017e\u00edny", + "iot_dry_easy_iron_cotton": "Snadn\u00e9 \u017eehlen\u00ed - bavlna", + "iot_dry_easy_iron_synthetics": "Snadn\u00e9 \u017eehlen\u00ed - syntetika", + "iot_dry_gym_fit": "Od\u011bvy na cvi\u010den\u00ed", + "iot_dry_lingerie": "Spodn\u00ed pr\u00e1dlo", + "iot_dry_mixed_dry": "Sm\u011bsn\u00e9 - such\u00e9", + "iot_dry_rapid_60_min_delicates": "Rychl\u00fd 60' - jemn\u00e9", + "iot_dry_shirts": "Ko\u0161ile", + "iot_dry_swimsuits_and_bikinis": "Plavky", + "iot_dry_synthetics": "Syntetika - such\u00e9", + "iot_dry_synthetic_dry": "Syntetika - such\u00e9", + "iot_dry_tablecloths": "Ubrusy", + "iot_dry_technical_fabrics": "Technick\u00e9 tkaniny", + "iot_dry_warm_embrace": "H\u0159ejiv\u00e9 pr\u00e1dlo", + "iot_dry_wool_dry": "Vlna - such\u00e9", + "iot_easy_iron": "Snadn\u00e9 \u017eehlen\u00ed", + "iot_fresh_care_steam": "Sv\u011b\u017e\u00ed p\u00e9\u010de + p\u00e1ra", + "iot_hygiene_pro_steam": "Hygiene Pro + p\u00e1ra", + "iot_intensive_40_steam": "Intenzivn\u00ed 40\u00b0C + p\u00e1ra", + "iot_mixed_steam": "Sm\u00ed\u0161en\u00e9 + P\u00e1ra", + "iot_mix_and_colour_59_steam": "Sm\u00ed\u0161en\u00e9 a barevn\u00e9 59' + p\u00e1ra", + "iot_perfect_cotton_59_steam": "Perfektni Bavlna 59'", + "iot_rapid_a_class_60_steam": "Rychl\u00e1 t\u0159\u00edda A 60 + p\u00e1ra", + "iot_resistant_cotton_steam": "Bavlna + P\u00e1ra", + "iot_shirts_steam": "Ko\u0161ile + p\u00e1ra", + "iot_single_item_steam": "Jedna polo\u017eka + p\u00e1ra", + "iot_smart_wash": "Chytr\u00e9 pran\u00ed", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "Speci\u00e1ln\u00ed 39' + p\u00e1ra", + "iot_steam_hygiene_plus": "Hygiena plus p\u00e1ra ", + "iot_synthetic_and_coloured_steam": "Syntetika a barevn\u00e9 + p\u00e1ra", + "iot_wash_and_dry": "Pran\u00ed a su\u0161en\u00ed", + "iot_wash_anti_mites": "Proti rozto\u010d\u016fm", + "iot_wash_anti_odor": "Protiz\u00e1pachov\u00fd", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "Dezinfekce", + "iot_wash_baby_sanitizer_steam": "D\u011btsk\u00e1 dezinfekce + p\u00e1ra", + "iot_wash_backpacks": "Batohy", + "iot_wash_backpacks_zelig": "Batohy", + "iot_wash_bathrobe": "\u017dupany a ru\u010dn\u00edky", + "iot_wash_bathrobe_steam": "\u017dupany + P\u00e1ra", + "iot_wash_bed_linen": "Lo\u017en\u00ed pr\u00e1dlo", + "iot_wash_bed_linen_steam": "Lo\u017en\u00ed pr\u00e1dlo + P\u00e1ra", + "iot_wash_bed_linen_zelig": "Lo\u017en\u00ed pr\u00e1dlo", + "iot_wash_big_single_load": "Jeden velk\u00fd kus", + "iot_wash_bleaching": "B\u011blen\u00ed", + "iot_wash_blood_stains": "Skvrny od krve", + "iot_wash_cashmere": "Ka\u0161m\u00edr", + "iot_wash_chocolate_stains": "\u010cokol\u00e1dov\u00e9 skvrny", + "iot_wash_cold_wash": "Pran\u00ed za studena", + "iot_wash_colored": "Barevn\u00e9", + "iot_wash_colored_anti_stain": "Odstra\u0148ov\u00e1n\u00ed skvrn pro barevn\u00e9 pr\u00e1dlo", + "iot_wash_colored_delicate": "Barevn\u00e9 jemn\u00e9", + "iot_wash_coloured": "Barevn\u00e9", + "iot_wash_coloured_bed_linen": "Barevn\u00e9 lo\u017en\u00ed pr\u00e1dlo", + "iot_wash_coloured_bed_linen_steam": "Barevn\u00e9 lo\u017en\u00ed pr\u00e1dlo + p\u00e1ra", + "iot_wash_coloured_curtains": "Barevn\u00e9 z\u00e1clony", + "iot_wash_coloured_shirts": "Barevn\u00e9 ko\u0161ile", + "iot_wash_coloured_shirts_steam": "Barevn\u00e9 ko\u0161ile + p\u00e1ra", + "iot_wash_coloured_steam": "Barevn\u00e9 + P\u00e1ra", + "iot_wash_coloured_tableclothes": "Barevn\u00e9 ubrusy", + "iot_wash_coloured_tableclothes_steam": "Barevn\u00e9 ubrusy + p\u00e1ra", + "iot_wash_cotton": "Bavlna", + "iot_wash_cotton_steam": "Bavlna + P\u00e1ra", + "iot_wash_cuddly_toys": "Ply\u0161ov\u00e9 hra\u010dky", + "iot_wash_curtains": "Z\u00e1clony", + "iot_wash_curtains_steam": "Z\u00e1clony + P\u00e1ra", + "iot_wash_curtains_zelig": "Z\u00e1clony", + "iot_wash_dark": "Tmav\u00e9 pr\u00e1dlo", + "iot_wash_darks_and_coloured_44": "Tmav\u00e9 a barevn\u00e9 44'", + "iot_wash_darks_and_coloured_59": "Tmav\u00e9 a barevn\u00e9 59'", + "iot_wash_darks_and_coloured_xl": "Tmav\u00e9 a barevn\u00e9 XL", + "iot_wash_dark_steam": "Tmav\u00e9 pr\u00e1dlo + P\u00e1ra", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "Jemn\u00e9", + "iot_wash_delicate_antiallergy": "Antialergenn\u00ed pro jemn\u00e9 pr\u00e1dlo", + "iot_wash_delicate_antiallergy_steam": "Antialergenn\u00ed pro jemn\u00e9 pr\u00e1dlo + P\u00e1ra", + "iot_wash_delicate_antiallergy_zelig": "Antialergenn\u00ed pro jemn\u00e9 pr\u00e1dlo", + "iot_wash_delicate_colors": "Barevn\u00e9 jemn\u00e9", + "iot_wash_delicate_colors_steam": "Barevn\u00e9 + p\u00e1ra", + "iot_wash_delicate_dark": "Jemn\u00e9 tmav\u00e9", + "iot_wash_delicate_steam": "Jemn\u00e9 + P\u00e1ra", + "iot_wash_delicate_tablecloths": "Jemn\u00e9 ubrusy", + "iot_wash_delicate_tablecloths_steam": "Jemn\u00e9 ubrusy + P\u00e1ra", + "iot_wash_delicate_whites": "Jemn\u00e9 b\u00edl\u00e9", + "iot_wash_denim_jeans": "D\u017e\u00ednovina - d\u017e\u00edny", + "iot_wash_diving_suits": "Pot\u00e1p\u011b\u010dsk\u00e9 obleky", + "iot_wash_diving_suits_zelig": "Pot\u00e1p\u011b\u010dsk\u00e9 obleky", + "iot_wash_down_jackets": "Pro\u0161\u00edvan\u00e9 bundy", + "iot_wash_down_jackets_zelig": "Pro\u0161\u00edvan\u00e9 bundy", + "iot_wash_duvet": "P\u0159ikr\u00fdvky", + "iot_wash_fruit_stains": "Skvrny od ovoce", + "iot_wash_gym_fit": "Od\u011bvy na cvi\u010den\u00ed", + "iot_wash_handwash": "Ru\u010dn\u00ed pran\u00ed", + "iot_wash_handwash_colored": "Ru\u010dn\u00ed pran\u00ed - barevn\u00e9", + "iot_wash_handwash_dark": "Ru\u010dn\u00ed pran\u00ed - tmav\u00e9", + "iot_wash_lingerie": "Spodn\u00ed pr\u00e1dlo", + "iot_wash_masks_refresh": "Osv\u011b\u017een\u00ed masek", + "iot_wash_masks_sanification": "Dezinfikov\u00e1n\u00ed masek", + "iot_wash_masks_sanification_steam": "Dezinfikov\u00e1n\u00ed masek + P\u00e1ra", + "iot_wash_mats": "P\u0159edlo\u017eky", + "iot_wash_men_s_trousers": "Kalhoty", + "iot_wash_mixed": "Sm\u011bsn\u00e9", + "iot_wash_mixed_steam": "Sm\u00ed\u0161en\u00e9 + P\u00e1ra", + "iot_wash_mix_and_coloured_44": "Sm\u011bsn\u00e9 a barevn\u00e9 44'", + "iot_wash_mix_and_coloured_59": "Sm\u011bsn\u00e9 a barevn\u00e9 59'", + "iot_wash_mix_and_coloured_xl": "Sm\u011bsn\u00e9 a barevn\u00e9 XL", + "iot_wash_new_clothes": "Nov\u00e9 oble\u010den\u00ed", + "iot_wash_perfect_white": "Dokonale b\u00edl\u00e9", + "iot_wash_perfect_white_steam": "Dokonale b\u00edl\u00e9 + P\u00e1ra", + "iot_wash_pets": "P\u0159\u00edslu\u0161enstv\u00ed pro dom\u00e1c\u00ed zv\u00ed\u0159ata", + "iot_wash_pets_hair_removal": "Odstra\u0148ov\u00e1n\u00ed chlup\u016f dom\u00e1c\u00edch mazl\u00ed\u010dk\u016f", + "iot_wash_pets_odours_stains_removal": "Odstra\u0148ov\u00e1n\u00ed z\u00e1pachu a skvrn po dom\u00e1c\u00edch mazl\u00ed\u010dc\u00edch", + "iot_wash_pets_steam": "P\u0159\u00edslu\u0161enstv\u00ed pro dom\u00e1c\u00ed zv\u00ed\u0159ata", + "iot_wash_playsuits": "Dupa\u010dky", + "iot_wash_playsuits_steam": "Dupa\u010dky + P\u00e1ra", + "iot_wash_quick_drum_cleaner": "Rychl\u00fd \u010disti\u010d bubnu", + "iot_wash_rapid_14": "Rychl\u00fd 14\u2019", + "iot_wash_rapid_30": "Rychl\u00fd 30\u2019", + "iot_wash_rapid_44": "Rychl\u00fd 44'", + "iot_wash_rapid_59": "Rychl\u00fd 59'", + "iot_wash_rapid_59_steam": "Rychl\u00fd 59' + p\u00e1ra", + "iot_wash_refresh_14_min": "Osv\u011b\u017een\u00ed 14'", + "iot_wash_resistant_colored": "Odoln\u00e9 barevn\u00e9", + "iot_wash_resistant_dark": "Odoln\u00e9 tmav\u00e9", + "iot_wash_resistant_whites": "Odoln\u00e9 b\u00edl\u00e9", + "iot_wash_rinse": "M\u00e1ch\u00e1n\u00ed", + "iot_wash_shirts": "Ko\u0161ile", + "iot_wash_shirts_steam": "Ko\u0161ile + P\u00e1ra", + "iot_wash_silk": "Hedv\u00e1b\u00ed", + "iot_wash_ski_suit": "Ly\u017ea\u0159sk\u00e9 oble\u010den\u00ed", + "iot_wash_ski_suit_zelig": "Ly\u017ea\u0159sk\u00e9 oble\u010den\u00ed", + "iot_wash_spin": "Odst\u0159e\u010fov\u00e1n\u00ed", + "iot_wash_sport": "Sportovn\u00ed", + "iot_wash_sport_anti_odor": "Sportovn\u00ed oble\u010den\u00ed s efektem proti z\u00e1pachu", + "iot_wash_sport_anti_odor_zelig": "Sportovn\u00ed oble\u010den\u00ed s efektem proti z\u00e1pachu", + "iot_wash_stains_remover": "Odstra\u0148ov\u00e1n\u00ed skvrn", + "iot_wash_swimsuits_and_bikinis": "Plavky", + "iot_wash_synthetic": "Syntetika", + "iot_wash_synthetic_steam": "Syntetika + P\u00e1ra", + "iot_wash_tablecloths": "Ubrusy", + "iot_wash_tablecloths_steam": "Ubrusy + P\u00e1ra", + "iot_wash_technical_fabrics": "Technick\u00e9 tkaniny", + "iot_wash_technical_fabrics_zelig": "Technick\u00e9 tkaniny", + "iot_wash_technical_jackets": "Technick\u00e9 bundy", + "iot_wash_technical_jackets_zelig": "Technick\u00e9 bundy", + "iot_wash_trainers": "Sportovn\u00ed obuv", + "iot_wash_whites": "B\u00edl\u00e9", + "iot_wash_whites_44": "B\u00edl\u00e9 44'", + "iot_wash_whites_59": "B\u00edl\u00e9 59'", + "iot_wash_whites_xl": "B\u00edl\u00e9 XL", + "iot_wash_wine_stains": "Skvrny od v\u00edna", + "iot_wash_wool": "Vlna", + "jeans": "D\u017e\u00edny", + "jeans_60": "D\u017e\u00edny", + "low_dry": "Sm\u011bsn\u00e9 - such\u00e9", + "mixed": "Sm\u00ed\u0161en\u00e9", + "mixed_and_colored_59": "Sm\u011bsn\u00e9 a barevn\u00e9 59'", + "mixed_steam": "Sm\u00ed\u0161en\u00e9 + P\u00e1ra", + "mix_and_colour_59": "Smisene a Barevne 59'", + "mix_and_colour_59_steam": "Sm\u00ed\u0161en\u00e9 a barevn\u00e9 59' + p\u00e1ra", + "night_and_day": "Noc a den", + "night_wash": "No\u010dn\u00ed cyklus", + "perfect_59": "Perfektn\u00ed 59'", + "perfect_cotton_59": "Perfektni Bavlna 59'", + "perfect_cotton_59_steam": "Perfektni Bavlna 59'", + "perfect_whites_59": "Dokonale b\u00edl\u00e9 59'", + "rapid_14_min": "Rychl\u00fd 14'", + "rapid_30_min": "Rychl\u00fd 30'", + "rapid_44_min": "Rychl\u00fd 44'", + "rapid_a_class_60": "Rychl\u00e1 t\u0159\u00edda A 60", + "rapid_a_class_60_steam": "Rychl\u00e1 t\u0159\u00edda A 60 + p\u00e1ra", + "rapid_wash_and_dry_59_min": "Pran\u00ed a su\u0161en\u00ed 59'.", + "resistant_cotton": "Bavlna", + "resistant_cotton_steam": "Bavlna + P\u00e1ra", + "rinse": "M\u00e1ch\u00e1n\u00ed", + "shirts_steam": "Ko\u0161ile + p\u00e1ra", + "silent_night": "No\u010dn\u00ed cyklus", + "single_item": "Jedna polo\u017eka", + "single_item_steam": "Jedna polo\u017eka + p\u00e1ra", + "smart_wash": "Chytr\u00e9 pran\u00ed", + "soft_care": "M\u011bkk\u00e1 p\u00e9\u010de", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "Specialni 39'", + "special_39_full_load": "Specialni 39'", + "special_39_full_load_steam": "Speci\u00e1ln\u00ed 39' + p\u00e1ra", + "special_49": "Speci\u00e1ln\u00ed 49'", + "sport_39": "Sportovn\u00ed 39'", + "sport_plus_29": "Sportovni Plus 29\"", + "sport_plus_39": "Sportovni Plus 39'", + "steam_39": "P\u00e1ra 39'", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro \u2013 bavlna", + "steam_care_pro_delicates": "Steam Care Pro \u2013 jemn\u00e9", + "steam_care_pro_synthetic": "Steam Care Pro \u2013 syntetika", + "steam_hygiene_plus": "Hygiena plus p\u00e1ra ", + "synthetics": "Syntetika", + "synthetic_and_coloured": "Syntetika a barevn\u00e9", + "synthetic_and_coloured_steam": "Syntetika a barevn\u00e9 + p\u00e1ra", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "Total Care", + "tumbling": "Pomal\u00e9 ot\u00e1\u010den\u00ed", + "wool": "Vlna", + "wool_and_delicates_49": "Vlna/Jemn\u00e9 49'", + "wool_dry": "Vlna - such\u00e9", + "wool_soft_care": "Vlna & M\u0115kk\u00e1 P\u00e9\u010de" + } + } } } } \ No newline at end of file diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index 41bb4fb..63bd206 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -66,6 +66,650 @@ "6": "Hot rinse" } } + }, + "select": { + "programs_dw": { + "state": { + "59_min": "Rapid 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "AutoUniversal 50-60\u00b0C", + "auto_universal_plus": "AutoUniversalPlus 65-75\u00b0C", + "auto_universal_plus_soil": "AutoUniversalPlus 65-75\u00b0C", + "auto_universal_soil": "AutoUniversal 50-60\u00b0C", + "auto_wash": "Auto Wash", + "auto_wash_soil": "Auto Wash", + "classe_a_59": "A Class 59' 65\u00b0C", + "delicate": "Delicate 45\u00b0C", + "dishwasher_care": "Entkalkungsprogramm", + "eco": "Eco", + "eco_asynch": "Eco 45\u00b0C", + "eco_bldc": "Eco 45\u00b0C", + "eco_synch": "Eco 45\u00b0C", + "gentle_wash": "Gentle wash", + "glass": "Glas", + "glass _care": "Glass Care", + "glassware": "Gl\u00e4ser 45 \u00b0C", + "glass_care": "Glass Care", + "hygiene": "Hygiene", + "hygiene_plus": "Hygiene 75 \u00b0C", + "intensive": "Intensiv ", + "intensive_rapid": "Intensiv-Schnellsp\u00fclgang", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "AutoUniversal 50-60\u00b0C", + "iot_auto_wash_soil": "Auto Wash", + "iot_baby_care": "Baby Care", + "iot_breakfast": "Fr\u00fchst\u00fcck", + "iot_checkup": "Check-Up", + "iot_china_crystals": "Kristall", + "iot_classe_a_59": "Rapid 59'", + "iot_cocktail_glasses": "Cocktail-Gl\u00e4ser", + "iot_cocktail_glasses_soil": "Cocktail-Gl\u00e4ser", + "iot_daily_care": "T\u00e4glicher Einsatz", + "iot_daily_care_soil": "T\u00e4glicher Einsatz", + "iot_delicate": "Delicate 45\u00b0C", + "iot_dinner_for_two": "Dinner for 2", + "iot_dinner_for_two_soil": "Dinner for 2", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "Eco 45\u00b0C", + "iot_eco_bldc": "Eco 45\u00b0C", + "iot_eco_synch": "Eco 45\u00b0C", + "iot_extra_hygiene": "Extra Hygiene", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "Happy Hour", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "Party", + "iot_party_soil": "Party", + "iot_pizza_menu": "Pizzageschirr", + "iot_pizza_menu_soil": "Pizzageschirr", + "iot_plastic_tupperware": "Kunststoff & Tupperware", + "iot_porcelain": "Porzellan", + "iot_pot_&_pans": "T\u00f6pfe & Pfannen", + "iot_pot_&_pans_soil": "T\u00f6pfe & Pfannen", + "iot_power_mix_wash": "Power Mix Wash", + "iot_power_mix_wash_soil": "Power Mix Wash", + "iot_prewash": "Vorsp\u00fclen", + "iot_pyrex_and_glassware": "Pyrex & Glas", + "iot_rapid_29": "Rapid 29'", + "iot_rapid_39": "Schnellw\u00e4sche 39' 60 \u00b0C", + "iot_single": "Single", + "iot_steam": "Dampf 75 \u00b0C", + "iot_super_flash": "Super Flash", + "iot_super_wash": "Super Wash", + "iot_turbopower": "TurboPower", + "iot_universal": "Universal 60\u00b0C", + "iot_wok_grids_maxi_pans": "Pfannen Spezial (Wok - Grillpfannen & Maxi-Pfannen)", + "iot_wok_grids_maxi_pans_soil": "Pfannen Spezial (Wok - Grillpfannen & Maxi-Pfannen)", + "iot_yes_quick_cycle": "Yes Quick", + "night": "Nacht 55\u00b0C", + "prewash": "Vorsp\u00fclen", + "rapid_20": "Rapid 20'", + "rapid_24": "Rapid 24'", + "rapid_29": "Rapid 29' 50\u00b0C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "Schnellw\u00e4sche 39' 60 \u00b0C", + "rapid_49": "Rapid 49'", + "rapid_59": "Rapid 59'", + "sanitising": "Desinfektion", + "silence": "Silence", + "silent": "Nacht", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "special": "spezial", + "special_pw_prz": "spezial", + "steam": "Dampf 75 \u00b0C", + "steam_plus": "Dampf Plus 75\u00b0C", + "total_care": "Total Care 50\u00b0C", + "ultra_silence": "Nacht 55\u00b0C", + "ultra_silent": "Nacht 55\u00b0C", + "universal": "Universal 60\u00b0C", + "universal_plus": "Universal Plus 70 \u00b0C", + "zoom_39": "Zoom 39 min" + } + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "Aschbraun", + "iot_special_beef_fillet": "Rinderfilet", + "iot_special_beef_veal_stew": "Rindfleischeintopf", + "iot_special_boiled_rice": "Gekochter Reis", + "iot_special_chicken_breast": "H\u00e4hnchenbrust", + "iot_special_chicken_legs": "H\u00e4hnchenschenkel", + "iot_special_chocolate_pudding": "Schokoladenpudding", + "iot_special_entrecote": "Entrec\u00f4te", + "iot_special_fresh_tuna": "Frischer Thunfisch", + "iot_special_grilled_vegetables": "Gegrilltes Gem\u00fcse", + "iot_special_lamb_cutlet": "Lammkotelett", + "iot_special_meatballs": "Fleischb\u00e4llchen", + "iot_special_minestrone": "Eintopf", + "iot_special_mussels": "Muscheln", + "iot_special_omelette": "Omelett", + "iot_special_pancakes": "Pfannkuchen", + "iot_special_paris_style_peas": "Erbsen Pariser Art", + "iot_special_poached_eggs": "Pochierte Eier", + "iot_special_pork_fillet": "Schweinefilet", + "iot_special_pork_ribs": "Schweinerippchen", + "iot_special_prawns": "Garnelen", + "iot_special_quinoa": "Quinoa", + "iot_special_ratatouille": "Ratatouille", + "iot_special_salmon_fillet": "Seelachsfilet", + "iot_special_saute_potatoes": "Bratkartoffeln", + "iot_special_scallops": "Jakobsmuscheln", + "iot_special_scrambled_eggs": "R\u00fchrei", + "iot_special_spelt": "Dinkel", + "iot_special_veggy_noodles": "Vegetarische Nudeln", + "iot_special_white_fish_fillet": "Wei\u00dffischfilet", + "iot_standard_boiling": "Boiling", + "iot_standard_frying": "Braten", + "iot_standard_keep_warm": "Warmhalten", + "iot_standard_melting": "Schmelzen", + "iot_standard_simmering": "Simmering" + } + }, + "programs_ov": { + "state": { + "bakery": "Teigwaren und Brot", + "bakery_steam": "Mit Dampf gebackenes Brot", + "bottom_heating": "Unterhitze", + "bottom_heating_fan": "Unterhitze + Umluft", + "bread": "Brot", + "bread_steam": "Mit Dampf gebackenes Geb\u00e4ck", + "convection_fan": "Umluft", + "convection_fan_turnspit": "Hei\u00dfluft + Drehspie\u00df", + "conventional": "Ober-Unterhitze", + "conventional_turnspit": "Ober-&Unterhitze + Bratspie\u00df", + "defrost": "Auftauen", + "descaling": "Entkalkung", + "fish": "Fisch", + "fish_steam": "Dampfgegarter Fisch", + "grill_cata": "Grill", + "grill_fan_cata": "Grill Umluft", + "grill_fan_pyro": "Grill + Umluft", + "grill_pyro": "Grill", + "h20_clean": "H2O-Clean", + "iot_bread": "Brot", + "iot_h20_clean": "h2O clean", + "leavening": "Aufgehen", + "low_temp_cooking": "Garen bei niedriger Temperatur", + "low_temp_cooking_fish": "Garen bei niedriger Temperatur - Fisch", + "low_temp_cooking_fish_steam": "Dampfgaren bei niedriger Temperatur - Fisch", + "low_temp_cooking_meat": "Garen bei niedriger Temperatur - Fleisch", + "low_temp_cooking_meat_steam": "Niedertemperatur-Dampfgaren - Fleisch", + "low_temp_cooking_steam": "Niedertemperatur-Dampfgaren", + "meat": "Fleisch", + "meat_steam": "Dampfgegartes Fleisch", + "multi_level": "Multi-Level", + "paella": "Paella", + "pasta_and_bakery": "Teigwaren und Brot", + "pizza": "Pizza", + "pyrolysis": "Pyrolyse", + "pyrolysis_plus": "Pyrolyse +", + "red_meat": "Rotes Fleisch", + "red_meat_steam": "Dampfgegartes rotes Fleisch", + "regenerate": "Regeneration", + "soft_plus": "Soft+", + "super_grill": "Super Grill", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_desctiption": "Diese Funktion ist ideal, damit Lebensmittel innen weich und au\u00dfen knusprig werden.\r\r\r\nDa bei dieser Funktion die ben\u00f6tigte Menge an Fett oder \u00d6l reduziert werden kann, ist sie besonders f\u00fcr eine gesunde Ern\u00e4hrung geeignet.\r\r\r\nDie Kombination der Heizelemente mit einem pulsierenden Luftzug gew\u00e4hrleistet gleichm\u00e4\u00dfige Backresultate.", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Gem\u00fcse", + "vegetables_cata": "Gem\u00fcse", + "vegetables_pyro": "Gem\u00fcse", + "water_discharge": "Wasserabfluss", + "white_meat": "Wei\u00dfes Fleisch", + "white_meat_steam": "Dampfgegartes wei\u00dfes Fleisch" + } + }, + "programs_td": { + "state": { + "active_dry": "Active Dry", + "allergy_care": "Anti-Allergie-Programm", + "all_in_one": "All in One", + "antiallergy": "Anti-Allergie-Programm", + "anti_odours": "Anti-Geruch", + "auto_care": "Auto Care", + "baby": "Baby", + "bed_quilt": "Bettdecken", + "care_30": "Pflege 30", + "care_45": "Pflege 45", + "care_59": "Pflege 59", + "coloured": "Buntw\u00e4sche", + "daily_45_min": "DAILY 45'", + "daily_perfect_59_min": "DAILY PERFECT 59'", + "darks_and_coloured": "Dunkles & Buntw\u00e4sche", + "delicates": "Feinw\u00e4sche", + "duvet": "Oberbetten", + "eco": "Eco-Baumwolle", + "ecospeed_cottons": "Ecospeed Baumwolle", + "ecospeed_delicates": "Ecospeed Feinwaesche", + "ecospeed_mixed": "Ecospeed Mischw\u00e4sche", + "extra_hygiene": "Extra Hygiene", + "fitness": "Fitness", + "fresh_care": "Fresh Care", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Handt\u00fccher", + "hqd_bed_sheets": "Bettw\u00e4sche", + "hqd_bulky": "Schwere Textilien", + "hqd_casual": "Casual", + "hqd_cold_wind_30": "K\u00fchle Brise 30 Minuten", + "hqd_cold_wind_timing": "K\u00fchle Brise ", + "hqd_cotton": "Baumwolle", + "hqd_curtain": "Vorh\u00e4nge", + "hqd_delicate": "Feinw\u00e4sche", + "hqd_diaper": "Windeln", + "hqd_duvet": "Bettdecke", + "hqd_feather": "Daunenjacken", + "hqd_hot_wind_timing": "Hei\u00dfe Luft", + "hqd_hygienic": "Desinfektion", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Jacken", + "hqd_jeans": "Jeans", + "hqd_luxury": "Luxury", + "hqd_mix": "Gemischt", + "hqd_night_dry": "Trocknung \u00fcber Nacht", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious Cure", + "hqd_quick_20": "Schnell 20", + "hqd_quick_30": "Schnell 30", + "hqd_quick_dry": "Schnell trocken", + "hqd_quilt": "Steppdecken", + "hqd_refresh": "Auffrischen", + "hqd_school_uniform": "Schuluniform", + "hqd_shirt": "Hemden", + "hqd_shoes": "Schuhe", + "hqd_silk": "Seide", + "hqd_sports": "Sport", + "hqd_synthetics": "Synthetik", + "hqd_timer": "Zeitgesteuert", + "hqd_towel": "Handt\u00fccher", + "hqd_underwear": "Unterw\u00e4sche", + "hqd_warm_up": "Erw\u00e4rmen", + "hqd_wool": "Wolle", + "hqd_working_suit": "Arbeitskleidung", + "hygiene": "Hygiene", + "iot_checkup": "Check-up", + "iot_dry_anti_mites": "Anti-Milben-Programm", + "iot_dry_baby": "Baby", + "iot_dry_backpacks": "Rucks\u00e4cke", + "iot_dry_bathrobe": "Badem\u00e4ntel", + "iot_dry_bed_linen": "Bettw\u00e4sche", + "iot_dry_bed_quilt": "Bettdecken", + "iot_dry_cotton": "Baumwolle", + "iot_dry_cuddly_toys": "Stofftiere", + "iot_dry_curtains": "Vorh\u00e4nge", + "iot_dry_dehumidifier": "Entfeuchter", + "iot_dry_delicates": "Feinw\u00e4sche", + "iot_dry_delicate_tablecloths": "Empfindliche Tischdecken", + "iot_dry_denim_jeans": "Denim - Jeans", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Oberbetten", + "iot_dry_easy_iron_cotton": "Superleichtes B\u00fcgeln", + "iot_dry_easy_iron_synthetics": "Super Leichtb\u00fcgeln Synthetik", + "iot_dry_gym_fit": "Gymnastik & Fitness \u2013 Sportkleidung", + "iot_dry_lingerie": "Unterw\u00e4sche", + "iot_dry_mixed": "Gemischt", + "iot_dry_playsuits": "Jumpsuits", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Rapid 59'.", + "iot_dry_refresh": "Auffrischen", + "iot_dry_regenerates_waterproof": "Auffrischung \u2013 wasserdichte Kleidung", + "iot_dry_relax_creases": "Falten gl\u00e4tten", + "iot_dry_shirts": "Hemden", + "iot_dry_small_load": "Kleine Beladung", + "iot_dry_swimsuits_and_bikinis": "Badeanz\u00fcge", + "iot_dry_synthetics": "Synthetische", + "iot_dry_synthetic_dry": "Synthetik trocken", + "iot_dry_tablecloths": "Tischdecken", + "iot_dry_technical_fabrics": "Technisches Gewebe", + "iot_dry_warm_embrace": "Superschon", + "iot_dry_wool": "Wolle", + "jeans": "Jeans", + "mix_and_dry": "Mix&Dry", + "pets": "Haustiere", + "pre_iron": "Vorb\u00fcgeln", + "rapid_30": "Rapid 30", + "rapid_45": "Schnell 45 Min", + "rapid_59": "Perfekt Schnellwaschgang 59 Min.", + "refresh": "Auffrischen", + "relax_creases": "Falten gl\u00e4tten", + "saving_30_min": "ECO 30'", + "shirts": "Hemden", + "shoes": "Schuhe", + "small_load": "Kleine Beladung", + "soft_care": "Sanfte Pflege", + "sport_plus": "Sports", + "super_easy_iron_misti": "Super Leichtb\u00fcgeln Gemischt", + "super_easy_iron_xxl": "Super Leichtb\u00fcgeln XXL", + "super_fast_cottons": "Superschnell Baumwolle", + "super_fast_delicates": "Superschnell Feinw\u00e4sche", + "synthetics": "Synthetische", + "total_care": "Total Care", + "trainers": "Turnschuhe", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Auffrischen wasserdichter Stoffe", + "whites": "Wei\u00dfen", + "wool": "Wolle Trocknen", + "woolmark": "Wolle", + "xxl_load": "XXL-Beladung", + "zoom_59": "Zoom 59" + } + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "20\u00b0 Buntes und Baumwolle", + "20_degrees_new_energy_label": "20\u00b0C", + "active_steam": "Dampf", + "active_wash": "Active Wash", + "active_wash_steam": "Active Wash", + "allergy_care": "Allergy Care", + "allergy_care_pro": "Allergy Care Pro", + "all_in_one_49": "All in One 49'", + "all_in_one_59": "All in One 59'", + "all_in_one_59_steam": "Active Wash + Dampf", + "autocare": "Autocare", + "autoclean": "Reinigung der Trommel", + "baby_60": "Alles Baby 60 \u00b0C", + "care_14": "Rapid Care 14'", + "care_30": "Rapid Care 30'", + "care_44": "Rapid Care 44'", + "checkup": "Check-up", + "colour_59": "Buntw\u00e4sche 59'", + "colour_59_steam": "Buntes 59' + Dampf", + "cottons": "Baumwolle", + "cottons_prewash": "Baumwolle + Vorw\u00e4sche", + "cottons_steam": "Baumwolle + Dampf", + "cotton_care_59": "Cotton Care 59 Min", + "delicate_59": "Feines 59'", + "delicate_silk": "Empfindliche Seide", + "delicate_silk_steam": "Empfindliche Seide + Dampf", + "delicati_59": "Feines 59'", + "delicati_59_steam": "Feines 59'", + "drain_spin": "Abpumpen und Schleudern", + "easy_iron": "B\u00fcgeltrocken", + "eco_40_60_new_energy_label": "ECO 40-60", + "extra_care": "Extra Care", + "fitness": "Fitness Care", + "fitness_care": "Fitness Care", + "fresh_care": "Fresh Care", + "fresh_care_steam": "Fresh Care + Dampf", + "handwash_wool": "Handw\u00e4sche und Wolle", + "high_dry": "Baumwolle trocken", + "hqd_20_degrees": "Baumwolle 20\u2103", + "hqd_allergy": "Allergy Care", + "hqd_autoclean": "Reinigung der Trommel", + "hqd_babycare": "Baby Care", + "hqd_checkup": "Check-up", + "hqd_cottons": "Baumwolle", + "hqd_delicate": "Feinw\u00e4sche", + "hqd_delicate_cradle": "Feinw\u00e4sche", + "hqd_dry": "Baumwolle trocken", + "hqd_dry_synthetics": "Trocknen gemischt", + "hqd_duvet": "Oberbetten", + "hqd_eco_40_60_degrees": "ECO 40-60", + "hqd_handwash_wool": "Wolle", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "Gemischt", + "hqd_quick_15": "Rapid 15'", + "hqd_quick_wash_57": "Schnellw\u00e4sche 57 min", + "hqd_rapid_wash_and_dry": "Waschen und trocknen", + "hqd_refresh": "Auffrischen", + "hqd_rinse": "Sp\u00fclen", + "hqd_shirts": "Hemden", + "hqd_smart": "Smart A.I.", + "hqd_spin": "Schleudern", + "hqd_sport": "Sport", + "hqd_super_fast": "Rapid 39\u2019", + "hqd_synthetic_and_coloured": "Synthetik", + "hygiene_59": "Hygiene Plus 59'", + "hygiene_60": "Hygiene 60\u00b0", + "hygiene_plus_59": "Hygiene Plus 59'", + "hygiene_plus_59_min": "Hygiene Plus 59'", + "hygiene_pro _49_min": "Hygiene Pro 49 '", + "hygiene_pro_49_min": "Hygiene Pro 49 min", + "hygiene_pro_steam": "Hygiene Pro + Dampf", + "intensive_40": "Intensiv 40\u00b0C", + "intensive_40_steam": "Intensiv 40\u00b0C + Dampf", + "iot_active_steam": "Dampf", + "iot_active_wash_steam": "Active Wash", + "iot_allergy_care_pro": "Allergy Care Pro", + "iot_all_in_one_59_steam": "Active Wash + Dampf", + "iot_checkup": "Check-up", + "iot_colour_59_steam": "Buntes 59' + Dampf", + "iot_cottons_steam": "Baumwolle + Dampf", + "iot_delicate_silk_steam": "Empfindliche Seide + Dampf", + "iot_delicati_59_steam": "Feines 59'", + "iot_dry_air_refresh": "Luftauffrischung", + "iot_dry_anti_mites": "Milbenbek\u00e4mpfung", + "iot_dry_baby": "Baby", + "iot_dry_backpacks": "Rucks\u00e4cke", + "iot_dry_bathrobe": "Badem\u00e4ntel und saugf\u00e4higes Gewebe", + "iot_dry_bed_linen": "Bettw\u00e4sche", + "iot_dry_cotton_dry": "Baumwolle trocken", + "iot_dry_cuddly_toys": "Stofftiere", + "iot_dry_curtains": "Vorh\u00e4nge", + "iot_dry_dehumidifier": "Entfeuchter", + "iot_dry_delicates_antiallergy": "Feinw\u00e4sche - Anti-Allergie", + "iot_dry_delicate_tablecloths": "Empfindliche Tischdecken", + "iot_dry_denim_jeans": "Denim - Jeans", + "iot_dry_easy_iron_cotton": "Leichtes B\u00fcgeln - Baumwolle", + "iot_dry_easy_iron_synthetics": "Leichtes B\u00fcgeln - Synthetik", + "iot_dry_gym_fit": "Fitness-Studio - Fitness-Kleidung", + "iot_dry_lingerie": "Dessous", + "iot_dry_mixed_dry": "Trocknen gemischt", + "iot_dry_rapid_60_min_delicates": "Rapid 60' - Feines", + "iot_dry_shirts": "Hemden", + "iot_dry_swimsuits_and_bikinis": "Badeanz\u00fcge", + "iot_dry_synthetics": "Synthetik trocken", + "iot_dry_synthetic_dry": "Synthetik trocken", + "iot_dry_tablecloths": "Tischdecken", + "iot_dry_technical_fabrics": "Technische Textilien", + "iot_dry_warm_embrace": "Warm trocknen", + "iot_dry_wool_dry": "Wolle trocknen", + "iot_easy_iron": "B\u00fcgeltrocken", + "iot_fresh_care_steam": "Fresh Care + Dampf", + "iot_hygiene_pro_steam": "Hygiene Pro + Dampf", + "iot_intensive_40_steam": "Intensiv 40\u00b0C + Dampf", + "iot_mixed_steam": "Gemischt + Dampf", + "iot_mix_and_colour_59_steam": "Misch- und Buntw\u00e4sche 59' + Dampf", + "iot_perfect_cotton_59_steam": "Baumwolle Perfekt 59'", + "iot_rapid_a_class_60_steam": "Rapid Klasse A 60 + Dampf", + "iot_resistant_cotton_steam": "Baumwolle + Dampf", + "iot_shirts_steam": "Hemden + Dampf", + "iot_single_item_steam": "Einzelner Gegenstand + Dampf", + "iot_smart_wash": "Smart Wash", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "Special 39' + Dampf", + "iot_steam_hygiene_plus": "Hygiene Plus Dampf ", + "iot_synthetic_and_coloured_steam": "Synthetik und Farben + Dampf", + "iot_wash_and_dry": "Waschen und trocknen", + "iot_wash_anti_mites": "Milbenbek\u00e4mpfung", + "iot_wash_anti_odor": "Anti-Geruch", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "Desinfektion", + "iot_wash_baby_sanitizer_steam": "Babyw\u00e4sche-Desinfektion + Dampf", + "iot_wash_backpacks": "Rucks\u00e4cke", + "iot_wash_backpacks_zelig": "Rucks\u00e4cke", + "iot_wash_bathrobe": "Badem\u00e4ntel und Handt\u00fccher", + "iot_wash_bathrobe_steam": "Bademantel + Dampf", + "iot_wash_bed_linen": "Bettw\u00e4sche", + "iot_wash_bed_linen_steam": "Bettw\u00e4sche + Dampf", + "iot_wash_bed_linen_zelig": "Bettw\u00e4sche", + "iot_wash_big_single_load": "Gro\u00dfe Einzelladung", + "iot_wash_bleaching": "Bleichen", + "iot_wash_blood_stains": "Blutflecken", + "iot_wash_cashmere": "Kaschmir", + "iot_wash_chocolate_stains": "Schokoladenflecken", + "iot_wash_cold_wash": "Kaltw\u00e4sche", + "iot_wash_colored": "Bunt", + "iot_wash_colored_anti_stain": "Fleckenentfernung bei farbigen Textilien", + "iot_wash_colored_delicate": "Bunte Feinw\u00e4sche", + "iot_wash_coloured": "Buntes", + "iot_wash_coloured_bed_linen": "Bunte Bettw\u00e4sche", + "iot_wash_coloured_bed_linen_steam": "Bunte Bettw\u00e4sche + Dampf", + "iot_wash_coloured_curtains": "Bunte Vorh\u00e4nge", + "iot_wash_coloured_shirts": "Farbige Hemden", + "iot_wash_coloured_shirts_steam": "Farbige Hemden + Dampf", + "iot_wash_coloured_steam": "Buntes + Dampf", + "iot_wash_coloured_tableclothes": "Farbige Tischt\u00fccher", + "iot_wash_coloured_tableclothes_steam": "Farbige Tischt\u00fccher + Dampf", + "iot_wash_cotton": "Baumwolle", + "iot_wash_cotton_steam": "Baumwolle + Dampf", + "iot_wash_cuddly_toys": "Stofftiere", + "iot_wash_curtains": "Vorh\u00e4nge", + "iot_wash_curtains_steam": "Vorh\u00e4nge+Dampf", + "iot_wash_curtains_zelig": "Vorh\u00e4nge", + "iot_wash_dark": "Dunkle Kleidungsst\u00fccke", + "iot_wash_darks_and_coloured_44": "Dunkles und Buntes 44'", + "iot_wash_darks_and_coloured_59": "Dunkles und Buntes 59'", + "iot_wash_darks_and_coloured_xl": "Dunkles und Buntes XL", + "iot_wash_dark_steam": "Dunkle Kleidungsst\u00fccke + Dampf", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "Feinw\u00e4sche", + "iot_wash_delicate_antiallergy": "Allergenarmes Programm f\u00fcr Feines", + "iot_wash_delicate_antiallergy_steam": "Allergenarmes Programm f\u00fcr Feines + Dampf", + "iot_wash_delicate_antiallergy_zelig": "Allergenarmes Programm f\u00fcr Feines", + "iot_wash_delicate_colors": "Bunte Feinw\u00e4sche", + "iot_wash_delicate_colors_steam": "Buntes + Dampf", + "iot_wash_delicate_dark": "Dunkle Feinw\u00e4sche", + "iot_wash_delicate_steam": "Feinw\u00e4sche + Dampf", + "iot_wash_delicate_tablecloths": "Empfindliche Tischdecken", + "iot_wash_delicate_tablecloths_steam": "Empfindliche Tischdecken + Dampf", + "iot_wash_delicate_whites": "Wei\u00dfe Feinw\u00e4sche", + "iot_wash_denim_jeans": "Denim - Jeans", + "iot_wash_diving_suits": "Tauchanz\u00fcge", + "iot_wash_diving_suits_zelig": "Tauchanz\u00fcge", + "iot_wash_down_jackets": "Daunenjacken", + "iot_wash_down_jackets_zelig": "Daunenjacken", + "iot_wash_duvet": "Oberbetten", + "iot_wash_fruit_stains": "Obstflecken", + "iot_wash_gym_fit": "Fitness-Studio - Fitness-Kleidung", + "iot_wash_handwash": "Handw\u00e4sche", + "iot_wash_handwash_colored": "Bunte Handw\u00e4sche", + "iot_wash_handwash_dark": "Dunkle Handw\u00e4sche", + "iot_wash_lingerie": "Dessous", + "iot_wash_masks_refresh": "Mundschutz-Auffrischung", + "iot_wash_masks_sanification": "Mundschutz-Desinfektion", + "iot_wash_masks_sanification_steam": "Mundschutz-Desinfektion + Dampf", + "iot_wash_mats": "Teppiche", + "iot_wash_men_s_trousers": "Herrenhosen", + "iot_wash_mixed": "Gemischt", + "iot_wash_mixed_steam": "Gemischt + Dampf", + "iot_wash_mix_and_coloured_44": "Gemischt und Farben 44'", + "iot_wash_mix_and_coloured_59": "Gemischt und Farben 59'", + "iot_wash_mix_and_coloured_xl": "Gemischt und Farben XL", + "iot_wash_new_clothes": "Neue Kleidung", + "iot_wash_perfect_white": "Perfektes Wei\u00df", + "iot_wash_perfect_white_steam": "Perfektes Wei\u00df + Dampf", + "iot_wash_pets": "Textilien f\u00fcr Haustiere", + "iot_wash_pets_hair_removal": "Haustierhaare auswaschen", + "iot_wash_pets_odours_stains_removal": "Haustiere Geruchs- und Fleckenentfernung", + "iot_wash_pets_steam": "Textilien f\u00fcr Haustiere", + "iot_wash_playsuits": "Strampelanz\u00fcge", + "iot_wash_playsuits_steam": "Strampelanz\u00fcge + Dampf", + "iot_wash_quick_drum_cleaner": "Schnellreinigung f\u00fcr Waschmaschinentrommeln", + "iot_wash_rapid_14": "Rapid 14\u2019", + "iot_wash_rapid_30": "Rapid 30\u2019", + "iot_wash_rapid_44": "Rapid 44'", + "iot_wash_rapid_59": "Rapid 59'", + "iot_wash_rapid_59_steam": "Rapid 59' + Dampf", + "iot_wash_refresh_14_min": "Auffrischen 14'", + "iot_wash_resistant_colored": "Strapazierf\u00e4hige Buntw\u00e4sche", + "iot_wash_resistant_dark": "Strapazierf\u00e4hige dunkle W\u00e4sche", + "iot_wash_resistant_whites": "Strapazierf\u00e4hige wei\u00dfe W\u00e4sche", + "iot_wash_rinse": "Sp\u00fclen", + "iot_wash_shirts": "Hemden", + "iot_wash_shirts_steam": "Hemden + Dampf", + "iot_wash_silk": "Seide", + "iot_wash_ski_suit": "Skianz\u00fcge", + "iot_wash_ski_suit_zelig": "Skianz\u00fcge", + "iot_wash_spin": "Schleudern", + "iot_wash_sport": "Sport", + "iot_wash_sport_anti_odor": "Anti-Geruch Sportbekleidung", + "iot_wash_sport_anti_odor_zelig": "Anti-Geruch Sportbekleidung", + "iot_wash_stains_remover": "Fleckenentferner", + "iot_wash_swimsuits_and_bikinis": "Badeanz\u00fcge", + "iot_wash_synthetic": "Synthetik", + "iot_wash_synthetic_steam": "Synthetik + Dampf", + "iot_wash_tablecloths": "Tischdecken", + "iot_wash_tablecloths_steam": "Tischdecken + Dampf", + "iot_wash_technical_fabrics": "Technische Textilien", + "iot_wash_technical_fabrics_zelig": "Technische Textilien", + "iot_wash_technical_jackets": "Jacken aus technischen Textilien", + "iot_wash_technical_jackets_zelig": "Jacken aus technischen Textilien", + "iot_wash_trainers": "Turnschuhe", + "iot_wash_whites": "Wei\u00df", + "iot_wash_whites_44": "Wei\u00df 44'", + "iot_wash_whites_59": "Wei\u00df 59'", + "iot_wash_whites_xl": "Wei\u00df XL", + "iot_wash_wine_stains": "Weinflecken", + "iot_wash_wool": "Wolle", + "jeans": "Jeans", + "jeans_60": "Jeans", + "low_dry": "Trocknen gemischt", + "mixed": "Gemischt", + "mixed_and_colored_59": "Gemischt und Farben 59'", + "mixed_steam": "Gemischt + Dampf", + "mix_and_colour_59": "Misch + Buntwaesche 59'", + "mix_and_colour_59_steam": "Misch- und Buntw\u00e4sche 59' + Dampf", + "night_and_day": "Nacht und Tag", + "night_wash": "Zyklus \u00fcber Nacht", + "perfect_59": "Perfekt 59'", + "perfect_cotton_59": "Baumwolle Perfekt 59'", + "perfect_cotton_59_steam": "Baumwolle Perfekt 59'", + "perfect_whites_59": "Bl\u00fctenwei\u00df 59'", + "rapid_14_min": "14'uten Kurzprogramm", + "rapid_30_min": "Schnellwaschgang 30'", + "rapid_44_min": "Schnellwaschgang 44'", + "rapid_a_class_60": "Rapid Klasse A 60", + "rapid_a_class_60_steam": "Rapid Klasse A 60 + Dampf", + "rapid_wash_and_dry_59_min": "Waschen und trocknen 59'", + "resistant_cotton": "Baumwolle", + "resistant_cotton_steam": "Baumwolle + Dampf", + "rinse": "Sp\u00fclen", + "shirts_steam": "Hemden + Dampf", + "silent_night": "Zyklus \u00fcber Nacht", + "single_item": "Einzelner Gegenstand", + "single_item_steam": "Einzelner Gegenstand + Dampf", + "smart_wash": "Smart Wash", + "soft_care": "Sanfte Pflege", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "Special 39'", + "special_39_full_load": "Special 39'", + "special_39_full_load_steam": "Special 39' + Dampf", + "special_49": "Spezial 49'", + "sport_39": "Sport 39'", + "sport_plus_29": "Sport Plus 29\"", + "sport_plus_39": "Sport Plus 39'", + "steam_39": "Dampf 39'", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro - Baumwolle", + "steam_care_pro_delicates": "Steam Care Pro - Feinw\u00e4sche", + "steam_care_pro_synthetic": "Steam Care Pro - Synthetik", + "steam_hygiene_plus": "Hygiene Plus Dampf ", + "synthetics": "Synthetik", + "synthetic_and_coloured": "Synthetik und Farben", + "synthetic_and_coloured_steam": "Synthetik und Farben + Dampf", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "Total Care", + "tumbling": "Trocknen", + "wool": "Wolle", + "wool_and_delicates_49": "Wolle/Feinw\u00e4sche 49'", + "wool_dry": "Wolle trocknen", + "wool_soft_care": "Wolle & Soft Care" + } + } } } } \ No newline at end of file diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index 3fdf9d6..5bede0e 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -66,6 +66,650 @@ "6": "Hot rinse" } } + }, + "select": { + "programs_dw": { + "state": { + "59_min": "\u0393\u03c1\u03b7\u03b3\u03bf\u03c1\u03bf 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "\u03b1\u03c5\u03c4\u03bf\u03bc\u03b1\u03c4\u03bf Universal 50 - 60\u00b0C", + "auto_universal_plus": "\u03b1\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03bf Universal Plus 65 - 75\u00b0C", + "auto_universal_plus_soil": "\u03b1\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03bf Universal Plus 65 - 75\u00b0C", + "auto_universal_soil": "\u03b1\u03c5\u03c4\u03bf\u03bc\u03b1\u03c4\u03bf Universal 50 - 60\u00b0C", + "auto_wash": "\u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03c0\u03bb\u03cd\u03c3\u03b7", + "auto_wash_soil": "\u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03c0\u03bb\u03cd\u03c3\u03b7", + "classe_a_59": "\u0391 Class 59' 65\u00b0C", + "delicate": "\u03b5\u03c5\u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03b1 45\u00b0C", + "dishwasher_care": "\u039a\u03cd\u03ba\u03bb\u03bf\u03c2 \u03ba\u03b1\u03b8\u03b1\u03c1\u03b9\u03c3\u03bc\u03bf\u03cd \u03ba\u03bb\u03af\u03bc\u03b1\u03ba\u03b1\u03c2 \u03c3\u03c4\u03c1\u03ce\u03bc\u03b1\u03c4\u03bf\u03c2 \u03b1\u03bb\u03ac\u03c4\u03c9\u03bd", + "eco": "\u039f\u03b9\u03ba\u03bf\u03bb\u03bf\u03b3\u03b9\u03ba\u03cc", + "eco_asynch": "ECO 45\u00b0C", + "eco_bldc": "ECO 45\u00b0C", + "eco_synch": "ECO 45\u00b0C", + "gentle_wash": "Gentle wash", + "glass": "\u03a0\u03bf\u03c4\u03ae\u03c1\u03b9", + "glass _care": "Glass Care", + "glassware": "\u03b3\u03c5\u03b1\u03bb\u03b9\u03ba\u03b1 45\u00b0C", + "glass_care": "Glass Care", + "hygiene": "\u03a5\u03b3\u03b9\u03b5\u03b9\u03bd\u03cc", + "hygiene_plus": "Hygiene+ 75\u00b0C", + "intensive": "\u0395\u03bd\u03c4\u03b1\u03c4\u03b9\u03ba\u03cc ", + "intensive_rapid": "\u03b4\u03c5\u03bd\u03b1\u03c4\u03bf \u03b3\u03c1\u03b7\u03b3\u03bf\u03c1\u03bf", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "\u03b1\u03c5\u03c4\u03bf\u03bc\u03b1\u03c4\u03bf Universal 50 - 60\u00b0C", + "iot_auto_wash_soil": "\u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03c0\u03bb\u03cd\u03c3\u03b7", + "iot_baby_care": "\u03a6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1 \u039c\u03c9\u03c1\u03bf\u03cd", + "iot_breakfast": "\u03a0\u03c1\u03c9\u03b9\u03bd\u03cc", + "iot_checkup": "\u0388\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2", + "iot_china_crystals": "\u039a\u03b9\u03bd\u03ad\u03b6\u03b9\u03ba\u03b1 \u039a\u03c1\u03cd\u03c3\u03c4\u03b1\u03bb\u03bb\u03b1", + "iot_classe_a_59": "\u0393\u03c1\u03b7\u03b3\u03bf\u03c1\u03bf 59'", + "iot_cocktail_glasses": "\u03a0\u03bf\u03c4\u03ae\u03c1\u03b9\u03b1 \u039a\u03bf\u03ba\u03c4\u03ad\u03b9\u03bb", + "iot_cocktail_glasses_soil": "\u03a0\u03bf\u03c4\u03ae\u03c1\u03b9\u03b1 \u039a\u03bf\u03ba\u03c4\u03ad\u03b9\u03bb", + "iot_daily_care": "\u039a\u03b1\u03b8\u03b7\u03bc\u03b5\u03c1\u03b9\u03bd\u03ae \u03a6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1", + "iot_daily_care_soil": "\u039a\u03b1\u03b8\u03b7\u03bc\u03b5\u03c1\u03b9\u03bd\u03ae \u03a6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1", + "iot_delicate": "\u03b5\u03c5\u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03b1 45\u00b0C", + "iot_dinner_for_two": "\u0394\u03b5\u03af\u03c0\u03bd\u03bf \u03b3\u03b9\u03b1 2", + "iot_dinner_for_two_soil": "\u0394\u03b5\u03af\u03c0\u03bd\u03bf \u03b3\u03b9\u03b1 2", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "ECO 45\u00b0C", + "iot_eco_bldc": "ECO 45\u00b0C", + "iot_eco_synch": "ECO 45\u00b0C", + "iot_extra_hygiene": "\u0395\u03c0\u03b9\u03c0\u03bb\u03ad\u03bf\u03bd \u03a5\u03b3\u03b9\u03b5\u03b9\u03bd\u03ae", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "Happy Hour", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "\u03a0\u03ac\u03c1\u03c4\u03b9", + "iot_party_soil": "\u03a0\u03ac\u03c1\u03c4\u03b9", + "iot_pizza_menu": "\u039c\u03b5\u03bd\u03bf\u03cd \u03a0\u03af\u03c4\u03c3\u03b1", + "iot_pizza_menu_soil": "\u039c\u03b5\u03bd\u03bf\u03cd \u03a0\u03af\u03c4\u03c3\u03b1", + "iot_plastic_tupperware": "\u03a0\u03bb\u03b1\u03c3\u03c4\u03b9\u03ba\u03ac & \u03a4\u03ac\u03c0\u03b5\u03c1", + "iot_porcelain": "\u03a0\u03bf\u03c1\u03c3\u03b5\u03bb\u03ac\u03bd\u03b7", + "iot_pot_&_pans": "\u039a\u03b1\u03c4\u03c3\u03b1\u03c1\u03cc\u03bb\u03b5\u03c2 & \u03a4\u03b7\u03b3\u03ac\u03bd\u03b9\u03b1", + "iot_pot_&_pans_soil": "\u039a\u03b1\u03c4\u03c3\u03b1\u03c1\u03cc\u03bb\u03b5\u03c2 & \u03a4\u03b7\u03b3\u03ac\u03bd\u03b9\u03b1", + "iot_power_mix_wash": "\u0399\u03c3\u03c7\u03c5\u03c1\u03ae \u03a0\u03bb\u03cd\u03c3\u03b7 \u03b3\u03b9\u03b1 \u039c\u03b9\u03ba\u03c4\u03ac", + "iot_power_mix_wash_soil": "\u0399\u03c3\u03c7\u03c5\u03c1\u03ae \u03a0\u03bb\u03cd\u03c3\u03b7 \u03b3\u03b9\u03b1 \u039c\u03b9\u03ba\u03c4\u03ac", + "iot_prewash": "\u03c0\u03c1\u03bf\u03c0\u03bb\u03c5\u03c3\u03b7", + "iot_pyrex_and_glassware": "\u03a0\u03c5\u03c1\u03ad\u03be & \u0393\u03c5\u03ac\u03bb\u03b9\u03bd\u03b1 \u0395\u03af\u03b4\u03b7", + "iot_rapid_29": "\u03b3\u03c1\u03b7\u03b3\u03bf\u03c1\u03bf 29'", + "iot_rapid_39": "\u03b3\u03c1\u03b7\u03b3\u03bf\u03c1\u03bf 39' 60\u00b0C", + "iot_single": "\u0391\u03c4\u03bf\u03bc\u03b9\u03ba\u03cc", + "iot_steam": "\u03b1\u03c4\u03bc\u03bf\u03c2 75\u00b0C", + "iot_super_flash": "\u0395\u03be\u03b1\u03b9\u03c1\u03b5\u03c4\u03b9\u03ba\u03ac \u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf", + "iot_super_wash": "\u0395\u03be\u03b1\u03b9\u03c1\u03b5\u03c4\u03b9\u03ba\u03ae \u03a0\u03bb\u03cd\u03c3\u03b7", + "iot_turbopower": "\u039c\u03b5\u03b3\u03ac\u03bb\u03b7 \u0399\u03c3\u03c7\u03cd\u03c2", + "iot_universal": "\u03b3\u03b5\u03bd\u03b9\u03ba\u03bf 60\u00b0C", + "iot_wok_grids_maxi_pans": "\u0395\u03b9\u03b4\u03b9\u03ba\u03ac \u03a4\u03b7\u03b3\u03ac\u03bd\u03b9\u03b1 (\u0393\u03bf\u03c5\u03cc\u03ba - \u03a3\u03c7\u03ac\u03c1\u03b5\u03c2 \u03ba\u03b1\u03b9 \u039c\u03b5\u03b3\u03ac\u03bb\u03b1 \u03a4\u03b7\u03b3\u03ac\u03bd\u03b9\u03b1)", + "iot_wok_grids_maxi_pans_soil": "\u0395\u03b9\u03b4\u03b9\u03ba\u03ac \u03a4\u03b7\u03b3\u03ac\u03bd\u03b9\u03b1 (\u0393\u03bf\u03c5\u03cc\u03ba - \u03a3\u03c7\u03ac\u03c1\u03b5\u03c2 \u03ba\u03b1\u03b9 \u039c\u03b5\u03b3\u03ac\u03bb\u03b1 \u03a4\u03b7\u03b3\u03ac\u03bd\u03b9\u03b1)", + "iot_yes_quick_cycle": "Yes Quick", + "night": "Ultra Silent 55\u00b0C", + "prewash": "\u03c0\u03c1\u03bf\u03c0\u03bb\u03c5\u03c3\u03b7", + "rapid_20": "\u0393\u03c1\u03b7\u03b3\u03bf\u03c1\u03bf 20'", + "rapid_24": "\u03b3\u03c1\u03b7\u03b3\u03bf\u03c1\u03bf 24'", + "rapid_29": "\u03b3\u03c1\u03b7\u03b3\u03bf\u03c1\u03bf 29' 50\u00b0C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "\u03b3\u03c1\u03b7\u03b3\u03bf\u03c1\u03bf 39' 60\u00b0C", + "rapid_49": "\u0393\u03c1\u03b7\u03b3\u03bf\u03c1\u03bf 49'", + "rapid_59": "\u0393\u03c1\u03b7\u03b3\u03bf\u03c1\u03bf 59'", + "sanitising": "\u0391\u03c0\u03bf\u03bb\u03cd\u03bc\u03b1\u03bd\u03c3\u03b7", + "silence": "Silence", + "silent": "\u039d\u03cd\u03c7\u03c4\u03b1", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "special": "\u03c3\u03c0\u03b5\u03c3\u03b9\u03b1\u03bb", + "special_pw_prz": "\u03c3\u03c0\u03b5\u03c3\u03b9\u03b1\u03bb", + "steam": "\u03b1\u03c4\u03bc\u03bf\u03c2 75\u00b0C", + "steam_plus": "\u0395\u03c0\u03b9\u03c0\u03bb\u03ad\u03bf\u03bd \u03b1\u03c4\u03bc\u03cc\u03c2 75\u00b0 C", + "total_care": "Total Care 50\u00b0C", + "ultra_silence": "Ultra Silent 55\u00b0C", + "ultra_silent": "Ultra Silent 55\u00b0C", + "universal": "\u03b3\u03b5\u03bd\u03b9\u03ba\u03bf 60\u00b0C", + "universal_plus": "\u03b3\u03b5\u03bd\u03b9\u03ba\u03bf Plus 70\u00b0C", + "zoom_39": "Zoom 39 min" + } + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "\u039a\u03b1\u03c6\u03ad \u03c6\u03bb\u03b1\u03bc\u03bf\u03c5\u03c1\u03b9\u03ac", + "iot_special_beef_fillet": "\u03a6\u03b9\u03bb\u03ad\u03c4\u03bf \u03b2\u03bf\u03b4\u03b9\u03bd\u03bf\u03cd", + "iot_special_beef_veal_stew": "\u0392\u03bf\u03b4\u03b9\u03bd\u03cc \u03ba\u03b1\u03b9 \u03bc\u03bf\u03c3\u03c7\u03b1\u03c1\u03af\u03c3\u03b9\u03bf \u03c1\u03b1\u03b3\u03bf\u03cd", + "iot_special_boiled_rice": "\u0392\u03c1\u03b1\u03c3\u03c4\u03cc \u03c1\u03cd\u03b6\u03b9", + "iot_special_chicken_breast": "\u03a3\u03c4\u03ae\u03b8\u03bf\u03c2 \u03ba\u03bf\u03c4\u03cc\u03c0\u03bf\u03c5\u03bb\u03bf\u03c5", + "iot_special_chicken_legs": "\u039c\u03c0\u03bf\u03cd\u03c4\u03b9\u03b1 \u03ba\u03bf\u03c4\u03cc\u03c0\u03bf\u03c5\u03bb\u03bf\u03c5", + "iot_special_chocolate_pudding": "\u03a0\u03bf\u03c5\u03c4\u03af\u03b3\u03ba\u03b1 \u03c3\u03bf\u03ba\u03bf\u03bb\u03ac\u03c4\u03b1\u03c2", + "iot_special_entrecote": "\u0395\u03bd\u03c4\u03c1\u03b5\u03ba\u03cc\u03c4", + "iot_special_fresh_tuna": "\u039d\u03c9\u03c0\u03cc\u03c2 \u03c4\u03cc\u03bd\u03bf\u03c2", + "iot_special_grilled_vegetables": "\u03a8\u03b7\u03c4\u03ac \u03bb\u03b1\u03c7\u03b1\u03bd\u03b9\u03ba\u03ac", + "iot_special_lamb_cutlet": "\u039a\u03bf\u03c4\u03bf\u03bb\u03ad\u03c4\u03b5\u03c2 \u03b1\u03c1\u03bd\u03b9\u03bf\u03cd", + "iot_special_meatballs": "\u039a\u03b5\u03c6\u03c4\u03ad\u03b4\u03b5\u03c2 \u03b1\u03c0\u03cc \u03ba\u03c1\u03ad\u03b1\u03c2", + "iot_special_minestrone": "\u039c\u03b9\u03bd\u03b5\u03c3\u03c4\u03c1\u03cc\u03bd\u03b7", + "iot_special_mussels": "\u039c\u03cd\u03b4\u03b9\u03b1", + "iot_special_omelette": "\u039f\u03bc\u03b5\u03bb\u03ad\u03c4\u03b1", + "iot_special_pancakes": "\u03a4\u03b7\u03b3\u03b1\u03bd\u03af\u03c4\u03b1", + "iot_special_paris_style_peas": "\u039c\u03c0\u03b9\u03b6\u03ad\u03bb\u03b9\u03b1 \u03c4\u03bf\u03c5 \u03a0\u03b1\u03c1\u03b9\u03c3\u03b9\u03bf\u03cd", + "iot_special_poached_eggs": "\u0391\u03c5\u03b3\u03ac \u03c0\u03bf\u03c3\u03ad", + "iot_special_pork_fillet": "\u03a6\u03b9\u03bb\u03ad\u03c4\u03bf \u03a7\u03bf\u03b9\u03c1\u03b9\u03bd\u03bf\u03cd", + "iot_special_pork_ribs": "\u03a7\u03bf\u03b9\u03c1\u03b9\u03bd\u03ac \u03c0\u03b1\u03ca\u03b4\u03ac\u03ba\u03b9\u03b1", + "iot_special_prawns": "\u0393\u03b1\u03c1\u03af\u03b4\u03b5\u03c2", + "iot_special_quinoa": "\u039a\u03b9\u03bd\u03cc\u03b1", + "iot_special_ratatouille": "Ratatouille", + "iot_special_salmon_fillet": "\u03a3\u03bf\u03bb\u03c9\u03bc\u03cc\u03c2 \u03c6\u03b9\u03bb\u03ad\u03c4\u03bf", + "iot_special_saute_potatoes": "\u03a0\u03b1\u03c4\u03ac\u03c4\u03b5\u03c2 \u03c3\u03c9\u03c4\u03ad", + "iot_special_scallops": "\u03a7\u03c4\u03ad\u03bd\u03b9\u03b1", + "iot_special_scrambled_eggs": "\u0391\u03c5\u03b3\u03ac \u03bf\u03bc\u03b5\u03bb\u03ad\u03c4\u03b1", + "iot_special_spelt": "\u038c\u03bb\u03c5\u03c1\u03b1", + "iot_special_veggy_noodles": "\u039b\u03b1\u03c7\u03b1\u03bd\u03b9\u03ba\u03ac \u03bd\u03bf\u03c5\u03bd\u03c4\u03bb\u03c2", + "iot_special_white_fish_fillet": "\u03a6\u03b9\u03bb\u03ad\u03c4\u03bf \u03bb\u03b5\u03c5\u03ba\u03cc\u03c8\u03b1\u03c1\u03bf\u03c5", + "iot_standard_boiling": "\u0392\u03c1\u03b1\u03c3\u03bc\u03cc\u03c2", + "iot_standard_frying": "\u03a4\u03b7\u03b3\u03ac\u03bd\u03b9\u03c3\u03bc\u03b1", + "iot_standard_keep_warm": "\u03a3\u03c5\u03bd\u03c4\u03ae\u03c1\u03b7\u03c3\u03b7", + "iot_standard_melting": "\u039b\u03b9\u03ce\u03c3\u03b9\u03bc\u03bf", + "iot_standard_simmering": "\u03a3\u03b9\u03b3\u03bf\u03b2\u03c1\u03ac\u03c3\u03b9\u03bc\u03bf" + } + }, + "programs_ov": { + "state": { + "bakery": "\u0396\u03c5\u03bc\u03b1\u03c1\u03b9\u03ba\u03ac \u03ba\u03b1\u03b9 \u03b1\u03c1\u03c4\u03bf\u03c0\u03bf\u03b9\u03ae\u03bc\u03b1\u03c4\u03b1", + "bakery_steam": "\u03a8\u03c9\u03bc\u03af \u03b1\u03c4\u03bc\u03bf\u03cd", + "bottom_heating": "\u039a\u03ac\u03c4\u03c9 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf", + "bottom_heating_fan": "\u039a\u03ac\u03c4\u03c9 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf + \u03b1\u03bd\u03b5\u03bc\u03b9\u03c3\u03c4\u03ae\u03c1\u03b1\u03c2", + "bread": "\u03a8\u03c9\u03bc\u03af", + "bread_steam": "\u0391\u03c1\u03c4\u03bf\u03c3\u03ba\u03b5\u03c5\u03ac\u03c3\u03bc\u03b1\u03c4\u03b1 \u03b1\u03c4\u03bc\u03bf\u03cd", + "convection_fan": "\u0398\u03b5\u03c1\u03bc\u03bf\u03c3 \u03b1\u03b5\u03c1\u03b1\u03c3", + "convection_fan_turnspit": "\u0398\u03b5\u03c1\u03bc\u03cc\u03c2 \u03b1\u03ad\u03c1\u03b1\u03c2 + \u0391\u03bd\u03b5\u03bc\u03b9\u03c3\u03c4\u03ae\u03c1\u03b1\u03c2 + \u03a3\u03bf\u03cd\u03b2\u03bb\u03b1", + "conventional": "\u0391\u03bd\u03c9 - \u03ba\u03b1\u03c4\u03c9 \u03b8\u03b5\u03c1\u03bc\u03b1\u03bd\u03c3\u03b7", + "conventional_turnspit": "\u0398\u03b5\u03c1\u03bc\u03cc\u03c2 \u03b1\u03ad\u03c1\u03b1\u03c2 + \u03a3\u03bf\u03cd\u03b2\u03bb\u03b1", + "defrost": "\u0391\u03c0\u03cc\u03c8\u03c5\u03be\u03b7", + "descaling": "\u0391\u03c6\u03b1\u03bb\u03ac\u03c4\u03c9\u03c3\u03b7", + "fish": "\u03a8\u03ac\u03c1\u03b9\u03b1", + "fish_steam": "\u03a8\u03ac\u03c1\u03b9 \u03c3\u03c4\u03bf\u03bd \u03b1\u03c4\u03bc\u03cc", + "grill_cata": "\u0393\u03ba\u03c1\u03b9\u03bb", + "grill_fan_cata": "\u0391\u03bd\u03b5\u03bc\u03b9\u03c3\u03c4\u03ae\u03c1\u03b1\u03c2 \u03b3\u03ba\u03c1\u03b9\u03bb", + "grill_fan_pyro": "\u0393\u03ba\u03c1\u03b9\u03bb + \u03b1\u03bd\u03b5\u03bc\u03b9\u03c3\u03c4\u03ae\u03c1\u03b1\u03c2", + "grill_pyro": "\u0393\u03ba\u03c1\u03b9\u03bb", + "h20_clean": "H2O-Clean", + "iot_bread": "\u03a8\u03c9\u03bc\u03af", + "iot_h20_clean": "h2O clean", + "leavening": "\u0396\u03c5\u03bc\u03c9\u03c3\u03b7", + "low_temp_cooking": "\u039c\u03b1\u03b3\u03b5\u03af\u03c1\u03b5\u03bc\u03b1 \u03c3\u03b5 \u03c7\u03b1\u03bc\u03b7\u03bb\u03ae \u03b8\u03b5\u03c1\u03bc\u03bf\u03ba\u03c1\u03b1\u03c3\u03af\u03b1", + "low_temp_cooking_fish": "\u039c\u03b1\u03b3\u03b5\u03af\u03c1\u03b5\u03bc\u03b1 \u03c3\u03b5 \u03c7\u03b1\u03bc\u03b7\u03bb\u03ae \u03b8\u03b5\u03c1\u03bc\u03bf\u03ba\u03c1\u03b1\u03c3\u03af\u03b1 - \u03a8\u03ac\u03c1\u03b9", + "low_temp_cooking_fish_steam": "\u039c\u03b1\u03b3\u03b5\u03af\u03c1\u03b5\u03bc\u03b1 \u03bc\u03b5 \u03b1\u03c4\u03bc\u03cc \u03c3\u03b5 \u03c7\u03b1\u03bc\u03b7\u03bb\u03ae \u03b8\u03b5\u03c1\u03bc\u03bf\u03ba\u03c1\u03b1\u03c3\u03af\u03b1 - \u03a8\u03ac\u03c1\u03b9", + "low_temp_cooking_meat": "\u039c\u03b1\u03b3\u03b5\u03af\u03c1\u03b5\u03bc\u03b1 \u03c3\u03b5 \u03c7\u03b1\u03bc\u03b7\u03bb\u03ae \u03b8\u03b5\u03c1\u03bc\u03bf\u03ba\u03c1\u03b1\u03c3\u03af\u03b1 - \u039a\u03c1\u03ad\u03b1\u03c2", + "low_temp_cooking_meat_steam": "\u039c\u03b1\u03b3\u03b5\u03af\u03c1\u03b5\u03bc\u03b1 \u03bc\u03b5 \u03b1\u03c4\u03bc\u03cc \u03c3\u03b5 \u03c7\u03b1\u03bc\u03b7\u03bb\u03ae \u03b8\u03b5\u03c1\u03bc\u03bf\u03ba\u03c1\u03b1\u03c3\u03af\u03b1 - \u039a\u03c1\u03ad\u03b1\u03c2", + "low_temp_cooking_steam": "\u039c\u03b1\u03b3\u03b5\u03af\u03c1\u03b5\u03bc\u03b1 \u03bc\u03b5 \u03b1\u03c4\u03bc\u03cc \u03c3\u03b5 \u03c7\u03b1\u03bc\u03b7\u03bb\u03ae \u03b8\u03b5\u03c1\u03bc\u03bf\u03ba\u03c1\u03b1\u03c3\u03af\u03b1", + "meat": "\u039a\u03c1\u03ad\u03b1\u03c2", + "meat_steam": "\u039a\u03c1\u03ad\u03b1\u03c2 \u03c3\u03c4\u03bf\u03bd \u03b1\u03c4\u03bc\u03cc", + "multi_level": "\u03a0\u03bf\u03bb\u03bb\u03b1\u03c0\u03bb\u03c9\u03bd \u0395\u03c0\u03b9\u03c0\u03b5\u03b4\u03c9\u03bd", + "paella": "Paella", + "pasta_and_bakery": "\u0396\u03c5\u03bc\u03b1\u03c1\u03b9\u03ba\u03ac \u03ba\u03b1\u03b9 \u03b1\u03c1\u03c4\u03bf\u03c0\u03bf\u03b9\u03ae\u03bc\u03b1\u03c4\u03b1", + "pizza": "Pizza", + "pyrolysis": "\u03a0\u03c5\u03c1\u03cc\u03bb\u03c5\u03c3\u03b7", + "pyrolysis_plus": "\u03a0\u03c5\u03c1\u03cc\u03bb\u03c5\u03c3\u03b7 +", + "red_meat": "\u039a\u03cc\u03ba\u03ba\u03b9\u03bd\u03bf \u03ba\u03c1\u03ad\u03b1\u03c2", + "red_meat_steam": "\u039a\u03cc\u03ba\u03ba\u03b9\u03bd\u03bf \u03ba\u03c1\u03ad\u03b1\u03c2 \u03c3\u03c4\u03bf\u03bd \u03b1\u03c4\u03bc\u03cc", + "regenerate": "\u0391\u03bd\u03b1\u03b6\u03c9\u03bf\u03b3\u03cc\u03bd\u03b7\u03c3\u03b7", + "soft_plus": "\u039c\u03b1\u03bb\u03b1\u03ba\u03cc +", + "super_grill": "\u03a3\u03bf\u03cd\u03c0\u03b5\u03c1 \u03b3\u03ba\u03c1\u03b9\u03bb", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_desctiption": "\u0391\u03c5\u03c4\u03ae \u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b9\u03b4\u03b1\u03bd\u03b9\u03ba\u03ae \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b4\u03b9\u03b1\u03c4\u03b7\u03c1\u03b5\u03af \u03c4\u03bf \u03c6\u03b1\u03b3\u03b7\u03c4\u03cc \u03b1\u03c0\u03b1\u03bb\u03cc \u03bc\u03ad\u03c3\u03b1 \u03ba\u03b1\u03b9 \u03c4\u03c1\u03b1\u03b3\u03b1\u03bd\u03cc \u03ad\u03be\u03c9.\r\r\r\r\r\n\u0391\u03c5\u03c4\u03ae \u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03bc\u03b5\u03b9\u03ce\u03bd\u03b5\u03b9 \u03c4\u03b7\u03bd \u03c0\u03bf\u03c3\u03cc\u03c4\u03b7\u03c4\u03b1 \u03bb\u03af\u03c0\u03bf\u03c5\u03c2 \u03ae \u03b5\u03bb\u03b1\u03af\u03bf\u03c5 \u03c0\u03bf\u03c5 \u03b1\u03c0\u03b1\u03b9\u03c4\u03b5\u03af\u03c4\u03b1\u03b9, \u03b3\u03b9\u03b1 \u03bc\u03b9\u03b1 \u03c5\u03b3\u03b9\u03b5\u03b9\u03bd\u03ae \u03b4\u03b9\u03b1\u03c4\u03c1\u03bf\u03c6\u03ae.\r\r\r\r\r\n\u039f \u03c3\u03c5\u03bd\u03b4\u03c5\u03b1\u03c3\u03bc\u03cc\u03c2 \u03b8\u03b5\u03c1\u03bc\u03b1\u03bd\u03c4\u03b9\u03ba\u03ce\u03bd \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03c9\u03bd \u03bc\u03b5 \u03c0\u03b1\u03bb\u03bb\u03cc\u03bc\u03b5\u03bd\u03bf \u03ba\u03cd\u03ba\u03bb\u03bf \u03b1\u03ad\u03c1\u03b1\r\r\r\r\r\n\u03b5\u03be\u03b1\u03c3\u03c6\u03b1\u03bb\u03af\u03b6\u03b5\u03b9 \u03bf\u03bc\u03bf\u03b9\u03cc\u03bc\u03bf\u03c1\u03c6\u03b1 \u03b1\u03c0\u03bf\u03c4\u03b5\u03bb\u03ad\u03c3\u03bc\u03b1\u03c4\u03b1 \u03c8\u03b7\u03c3\u03af\u03bc\u03b1\u03c4\u03bf\u03c2.", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "\u039b\u03b1\u03c7\u03b1\u03bd\u03b9\u03ba\u03ac", + "vegetables_cata": "\u039b\u03b1\u03c7\u03b1\u03bd\u03b9\u03ba\u03ac", + "vegetables_pyro": "\u039b\u03b1\u03c7\u03b1\u03bd\u03b9\u03ba\u03ac", + "water_discharge": "\u0391\u03c0\u03bf\u03c3\u03c4\u03c1\u03ac\u03b3\u03b3\u03b9\u03c3\u03b7 \u03bd\u03b5\u03c1\u03bf\u03cd", + "white_meat": "\u039b\u03b5\u03c5\u03ba\u03cc \u03ba\u03c1\u03ad\u03b1\u03c2", + "white_meat_steam": "\u039b\u03b5\u03c5\u03ba\u03cc \u03ba\u03c1\u03ad\u03b1\u03c2 \u03c3\u03c4\u03bf\u03bd \u03b1\u03c4\u03bc\u03cc" + } + }, + "programs_td": { + "state": { + "active_dry": "\u0395\u03bd\u03b5\u03c1\u03b3\u03cc \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", + "allergy_care": "\u0391\u03bd\u03c4\u03b9\u03b1\u03bb\u03bb\u03b5\u03c1\u03b3\u03b9\u03ba\u03bf", + "all_in_one": "\u039f\u03bb\u03b1 \u03c3\u03b5 \u03b5\u03bd\u03b1", + "antiallergy": "\u0391\u03bd\u03c4\u03b9\u03b1\u03bb\u03bb\u03b5\u03c1\u03b3\u03b9\u03ba\u03bf", + "anti_odours": "\u0395\u03bd\u03b1\u03bd\u03c4\u03b9\u03b1 \u03c3\u03c4\u03b9ws", + "auto_care": "\u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03c6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1", + "baby": "\u039c\u03c9\u03c1\u03bf\u03c5\u03b4\u03b9\u03b1\u03ba\u03ac", + "bed_quilt": "\u039a\u03b1\u03bb\u03c5\u03bc\u03bc\u03b1\u03c4\u03b1 \u03ba\u03c1\u03b5\u03b2\u03b1\u03c4\u03b9\u03bf\u03c5", + "care_30": "\u03a6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1 30", + "care_45": "\u03a6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1 45", + "care_59": "\u03a6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1 59", + "coloured": "\u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03b1", + "daily_45_min": "\u039a\u0391\u0398\u0397\u039c\u0395\u03a1\u0399\u039d\u039f 45'", + "daily_perfect_59_min": "\u039a\u0391\u0398\u0397\u039c\u0395\u03a1\u0399\u039d\u039f \u0399\u0394\u0391\u039d\u0399\u039a\u039f 59'", + "darks_and_coloured": "\u039c\u03b1\u03c5\u03c1\u03b1 & \u03a7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03b1", + "delicates": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1", + "duvet": "\u03a0\u03b1\u03c0\u03bb\u03ce\u03bc\u03b1\u03c4\u03b1", + "eco": "\u0392\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03ac \u03bf\u03b9\u03ba\u03bf\u03bb\u03bf\u03b3\u03b9\u03ba\u03ac", + "ecospeed_cottons": "Ecospeed \u03b2\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03b1", + "ecospeed_delicates": "Ecospeed \u03b5\u03c5\u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03b1", + "ecospeed_mixed": "Ecospeed \u03b1\u03bd\u03b1\u03bc\u03b5\u03b9\u03ba\u03c4\u03b1", + "extra_hygiene": "\u0395\u03a0\u0399\u03a0\u039b\u0395\u039f\u039d \u03a5\u0393\u0399\u0395\u0399\u039d\u0397", + "fitness": "\u039a\u03b1\u03c4\u03b1\u03bb\u03bb\u03b7\u03bb\u03cc\u03c4\u03b7\u03c4\u03b1", + "fresh_care": "\u03a6\u03c1\u03ad\u03c3\u03ba\u03b9\u03b1 \u03c6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "\u03a0\u03b5\u03c4\u03c3\u03ad\u03c4\u03b5\u03c2", + "hqd_bed_sheets": "\u03a3\u03b5\u03bd\u03c4\u03cc\u03bd\u03b9\u03b1 \u03ba\u03c1\u03b5\u03b2\u03b1\u03c4\u03b9\u03bf\u03cd", + "hqd_bulky": "\u039f\u03b3\u03ba\u03ce\u03b4\u03b7 \u03b1\u03bd\u03c4\u03b9\u03ba\u03b5\u03af\u03bc\u03b5\u03bd\u03b1", + "hqd_casual": "\u039a\u03b1\u03b8\u03b7\u03bc\u03b5\u03c1\u03b9\u03bd\u03ac \u03c1\u03bf\u03cd\u03c7\u03b1", + "hqd_cold_wind_30": "\u0394\u03c1\u03bf\u03c3\u03b5\u03c1\u03cc \u03b1\u03b5\u03c1\u03ac\u03ba\u03b9 30 \u03bb\u03b5\u03c0\u03c4\u03ac", + "hqd_cold_wind_timing": "\u0394\u03c1\u03bf\u03c3\u03b5\u03c1\u03cc \u03b1\u03b5\u03c1\u03ac\u03ba\u03b9 ", + "hqd_cotton": "\u0392\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03cc", + "hqd_curtain": "\u039a\u03bf\u03c5\u03c1\u03c4\u03af\u03bd\u03b5\u03c2", + "hqd_delicate": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1", + "hqd_diaper": "\u03a0\u03ac\u03bd\u03b5\u03c2", + "hqd_duvet": "\u03a0\u03ac\u03c0\u03bb\u03c9\u03bc\u03b1", + "hqd_feather": "\u03a6\u03bf\u03c5\u03c3\u03ba\u03c9\u03c4\u03ac \u03bc\u03c0\u03bf\u03c5\u03c6\u03ac\u03bd", + "hqd_hot_wind_timing": "\u0396\u03b5\u03c3\u03c4\u03cc\u03c2 \u03b1\u03ad\u03c1\u03b1\u03c2", + "hqd_hygienic": "\u03a5\u03b3\u03b9\u03b5\u03b9\u03bd\u03ae", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "\u0396\u03b1\u03ba\u03ad\u03c4\u03b5\u03c2", + "hqd_jeans": "\u03a4\u03b6\u03b9\u03bd \u03c0\u03b1\u03bd\u03c4\u03b5\u03bb\u03bf\u03bd\u03b9\u03b1", + "hqd_luxury": "Luxury", + "hqd_mix": "\u039c\u03b9\u03ba\u03c4\u03ac", + "hqd_night_dry": "\u039f\u03bb\u03bf\u03bd\u03cd\u03ba\u03c4\u03b9\u03bf \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03b1 20", + "hqd_quick_30": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03b1 30", + "hqd_quick_dry": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", + "hqd_quilt": "\u03a0\u03b1\u03c0\u03bb\u03ce\u03bc\u03b1\u03c4\u03b1", + "hqd_refresh": "\u03a6\u03c1\u03b5\u03c3\u03ba\u03ac\u03c1\u03b9\u03c3\u03bc\u03b1", + "hqd_school_uniform": "\u03a3\u03c7\u03bf\u03bb\u03b9\u03ba\u03ae \u03c3\u03c4\u03bf\u03bb\u03ae", + "hqd_shirt": "\u03a0\u03bf\u03c5\u03ba\u03ac\u03bc\u03b9\u03c3\u03b1", + "hqd_shoes": "\u03a0\u03b1\u03c0\u03bf\u03cd\u03c4\u03c3\u03b9\u03b1", + "hqd_silk": "\u039c\u03b5\u03c4\u03b1\u03be\u03c9\u03c4\u03ac", + "hqd_sports": "\u0391\u03b8\u03bb\u03b7\u03c4\u03b9\u03ba\u03ac", + "hqd_synthetics": "\u03a3\u03c5\u03bd\u03b8\u03b5\u03c4\u03b9\u03ba\u03ac", + "hqd_timer": "\u03a7\u03c1\u03bf\u03bd\u03bf\u03bc\u03b5\u03c4\u03c1\u03b7\u03bc\u03ad\u03bd\u03bf", + "hqd_towel": "\u03a0\u03b5\u03c4\u03c3\u03ad\u03c4\u03b5\u03c2", + "hqd_underwear": "\u0395\u03c3\u03ce\u03c1\u03bf\u03c5\u03c7\u03b1", + "hqd_warm_up": "\u0396\u03ad\u03c3\u03c4\u03b1\u03bc\u03b1", + "hqd_wool": "\u039c\u03ac\u03bb\u03bb\u03b9\u03bd\u03b1", + "hqd_working_suit": "\u0395\u03bd\u03b4\u03cd\u03bc\u03b1\u03c4\u03b1 \u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1\u03c2", + "hygiene": "\u03a5\u03b3\u03b9\u03b5\u03b9\u03bd\u03ae", + "iot_checkup": "\u0388\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2", + "iot_dry_anti_mites": "\u0395\u03bd\u03ac\u03bd\u03c4\u03b9\u03b1 \u03c3\u03c4\u03b1 \u03b1\u03ba\u03ac\u03c1\u03b5\u03b1", + "iot_dry_baby": "\u039c\u03c9\u03c1\u03bf\u03c5\u03b4\u03b9\u03b1\u03ba\u03ac", + "iot_dry_backpacks": "\u03a3\u03b1\u03ba\u03af\u03b4\u03b9\u03b1 \u03c0\u03bb\u03ac\u03c4\u03b7\u03c2", + "iot_dry_bathrobe": "\u039c\u03c0\u03bf\u03c5\u03c1\u03bd\u03bf\u03cd\u03b6\u03b9", + "iot_dry_bed_linen": "\u039a\u03bb\u03b9\u03bd\u03bf\u03c3\u03ba\u03b5\u03c0\u03ac\u03c3\u03bc\u03b1\u03c4\u03b1", + "iot_dry_bed_quilt": "\u039a\u03b1\u03bb\u03c5\u03bc\u03bc\u03b1\u03c4\u03b1 \u03ba\u03c1\u03b5\u03b2\u03b1\u03c4\u03b9\u03bf\u03c5", + "iot_dry_cotton": "\u0392\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03cc", + "iot_dry_cuddly_toys": "\u039b\u03bf\u03cd\u03c4\u03c1\u03b9\u03bd\u03b1 \u0391\u03c1\u03ba\u03bf\u03c5\u03b4\u03ac\u03ba\u03b9\u03b1", + "iot_dry_curtains": "\u039a\u03bf\u03c5\u03c1\u03c4\u03af\u03bd\u03b5\u03c2", + "iot_dry_dehumidifier": "\u0391\u03c6\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 \u03c5\u03b3\u03c1\u03b1\u03c3\u03af\u03b1\u03c2", + "iot_dry_delicates": "\u0395\u03c5\u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03b1", + "iot_dry_delicate_tablecloths": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1 \u03c4\u03c1\u03b1\u03c0\u03b5\u03b6\u03bf\u03bc\u03ac\u03bd\u03c4\u03b7\u03bb\u03b1", + "iot_dry_denim_jeans": "\u039d\u03c4\u03ad\u03bd\u03b9\u03bc - \u03c4\u03b6\u03b9\u03bd", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "\u03a0\u03b1\u03c0\u03bb\u03ce\u03bc\u03b1\u03c4\u03b1", + "iot_dry_easy_iron_cotton": "Super Easy Iron", + "iot_dry_easy_iron_synthetics": "\u0395\u03be\u03b1\u03b9\u03c1\u03b5\u03c4\u03b9\u03ba\u03ac \u03b5\u03cd\u03ba\u03bf\u03bb\u03bf \u03c3\u03b9\u03b4\u03ad\u03c1\u03c9\u03bc\u03b1 - \u03a3\u03c5\u03bd\u03b8\u03b5\u03c4\u03b9\u03ba\u03ac", + "iot_dry_gym_fit": "\u0393\u03c5\u03bc\u03bd\u03b1\u03c3\u03c4\u03ae\u03c1\u03b9\u03bf", + "iot_dry_lingerie": "\u0395\u03c3\u03ce\u03c1\u03bf\u03c5\u03c7\u03b1", + "iot_dry_mixed": "\u039c\u03b9\u03ba\u03c4\u03ac", + "iot_dry_playsuits": "\u03a3\u03c4\u03bf\u03bb\u03ad\u03c2", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf 59'.", + "iot_dry_refresh": "Refresh", + "iot_dry_regenerates_waterproof": "\u0391\u03bd\u03b1\u03bd\u03ad\u03c9\u03c3\u03b7 \u03b1\u03b4\u03b9\u03ac\u03b2\u03c1\u03bf\u03c7\u03c9\u03bd", + "iot_dry_relax_creases": "\u03a7\u0391\u039b\u0391\u03a1\u03a9\u03a3\u0397", + "iot_dry_shirts": "\u03a0\u03bf\u03c5\u03ba\u03ac\u03bc\u03b9\u03c3\u03b1", + "iot_dry_small_load": "\u039c\u0399\u039a\u03a1\u039f \u03a6\u039f\u03a1\u03a4\u0399\u039f", + "iot_dry_swimsuits_and_bikinis": "\u039c\u03b1\u03b3\u03b9\u03cc", + "iot_dry_synthetics": "\u03a3\u03c5\u03bd\u03b8\u03b5\u03c4\u03b9\u03ba\u03b1", + "iot_dry_synthetic_dry": "\u03a3\u03c5\u03bd\u03b8\u03b5\u03c4\u03b9\u03ba\u03ac \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", + "iot_dry_tablecloths": "\u03a4\u03c1\u03b1\u03c0\u03b5\u03b6\u03bf\u03bc\u03ac\u03bd\u03c4\u03b7\u03bb\u03b1", + "iot_dry_technical_fabrics": "\u03a4\u03b5\u03c7\u03bd\u03b9\u03ba\u03ac \u03c5\u03c6\u03ac\u03c3\u03bc\u03b1\u03c4\u03b1", + "iot_dry_warm_embrace": "\u0396\u03b5\u03c3\u03c4\u03ae \u0391\u03b3\u03ba\u03b1\u03bb\u03b9\u03ac", + "iot_dry_wool": "\u039c\u03b1\u03bb\u03bb\u03b9\u03bd\u03b1", + "jeans": "\u03c4\u03b6\u03b9\u03bd", + "mix_and_dry": "\u039c\u03b9\u03ba\u03c4\u03ac & \u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", + "pets": "\u039a\u03b1\u03c4\u03bf\u03b9\u03ba\u03af\u03b4\u03b9\u03b1", + "pre_iron": "\u03a0\u03c1\u03bf-\u03c3\u03b9\u03b4\u03b5\u03c1\u03c9\u03bc\u03b1", + "rapid_30": "Rapid 30", + "rapid_45": "Rapid 45 min", + "rapid_59": "\u03a4\u03ad\u03bb\u03b5\u03b9\u03bf \u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf 59 \u03bb\u03b5\u03c0\u03c4\u03ac", + "refresh": "\u03a6\u03c1\u03b5\u03c3\u03ba\u03ac\u03c1\u03b9\u03c3\u03bc\u03b1", + "relax_creases": "\u03a7\u0391\u039b\u0391\u03a1\u03a9\u03a3\u0397", + "saving_30_min": "\u0395\u039e\u039f\u0399\u039a\u039f\u039d\u039f\u039c\u0397\u03a3\u0397 30'", + "shirts": "\u03a0\u03bf\u03c5\u03ba\u03ac\u03bc\u03b9\u03c3\u03b1", + "shoes": "\u03a0\u03b1\u03c0\u03bf\u03cd\u03c4\u03c3\u03b9\u03b1", + "small_load": "\u039c\u0399\u039a\u03a1\u039f \u03a6\u039f\u03a1\u03a4\u0399\u039f", + "soft_care": "\u0391\u03c0\u03b1\u03bb\u03ae \u03c6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1", + "sport_plus": "\u03a3\u03a0\u039f\u03a1", + "super_easy_iron_misti": "\u0395\u03be\u03b1\u03b9\u03c1\u03b5\u03c4\u03b9\u03ba\u03ac \u03b5\u03cd\u03ba\u03bf\u03bb\u03bf \u03c3\u03b9\u03b4\u03ad\u03c1\u03c9\u03bc\u03b1 \u03b3\u03b9\u03b1 \u03b1\u03bd\u03ac\u03bc\u03b5\u03b9\u03ba\u03c4\u03b1", + "super_easy_iron_xxl": "\u0395\u03be\u03b1\u03b9\u03c1\u03b5\u03c4\u03b9\u03ba\u03ac \u03b5\u03cd\u03ba\u03bf\u03bb\u03bf \u03c3\u03b9\u03b4\u03ad\u03c1\u03c9\u03bc\u03b1 \u03b3\u03b9\u03b1 XXL", + "super_fast_cottons": "\u0395\u03be\u03b1\u03b9\u03c1\u03b5\u03c4\u03b9\u03ba\u03b1 \u0393\u03a1\u0397\u0393\u039f\u03a1\u039f \u03b2\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03b1", + "super_fast_delicates": "\u0395\u03be\u03b1\u03b9\u03c1\u03b5\u03c4\u03b9\u03ba\u03b1 \u0393\u03a1\u0397\u0393\u039f\u03a1\u039f \u03b5\u03c5\u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03b1", + "synthetics": "\u03a3\u03c5\u03bd\u03b8\u03b5\u03c4\u03b9\u03ba\u03b1", + "total_care": "\u039f\u03bb\u03b9\u03ba\u03b7 \u03a6\u03c1\u03bf\u03bd\u03c4\u03b9\u03b4\u03b1", + "trainers": "\u0391\u03b8\u03bb\u03b7\u03c4\u03b9\u03ba\u03ac \u03c0\u03b1\u03c0\u03bf\u03cd\u03c4\u03c3\u03b9\u03b1", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "\u0391\u03bd\u03b1\u03b6\u03c9\u03bf\u03b3\u03bf\u03bd\u03b7\u03c3\u03b7 \u03b1\u03b4\u03b9\u03b1\u03b2\u03c1\u03bf\u03c7\u03c9\u03bd", + "whites": "\u039b\u03b5\u03c5\u03ba\u03ac", + "wool": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1 \u039c\u03ac\u03bb\u03bb\u03b9\u03bd\u03c9\u03bd", + "woolmark": "\u039c\u03b1\u03bb\u03bb\u03b9\u03bd\u03b1", + "xxl_load": "XXL \u03a6\u03bf\u03c1\u03c4\u03b9\u03bf", + "zoom_59": "Zoom 59" + } + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "20\u00b0 \u03a7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac \u03ba\u03b1\u03b9 \u0392\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03ac", + "20_degrees_new_energy_label": "20\u00b0C", + "active_steam": "\u0391\u03c4\u03bc\u03cc\u03c2", + "active_wash": "\u0395\u03bd\u03b5\u03c1\u03b3\u03cc \u03c0\u03bb\u03cd\u03c3\u03b9\u03bc\u03bf", + "active_wash_steam": "\u0395\u03bd\u03b5\u03c1\u03b3\u03cc \u03c0\u03bb\u03cd\u03c3\u03b9\u03bc\u03bf", + "allergy_care": "\u03a6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1 \u03b1\u03bb\u03bb\u03b5\u03c1\u03b3\u03af\u03b1\u03c2", + "allergy_care_pro": "Allergy Care \u0395\u03c0\u03b1\u03b3\u03b3\u03b5\u03bb\u03bc\u03b1\u03c4\u03b9\u03ba\u03cc", + "all_in_one_49": "\u038c\u03bb\u03b1 \u03c3\u03b5 \u0388\u03bd\u03b1 49'.", + "all_in_one_59": "\u038c\u03bb\u03b1 \u03c3\u03b5 \u0388\u03bd\u03b1 59'.", + "all_in_one_59_steam": "\u0395\u03bd\u03b5\u03c1\u03b3\u03ae \u03c0\u03bb\u03cd\u03c3\u03b7 + \u0391\u03c4\u03bc\u03cc\u03c2", + "autocare": "\u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03c6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1", + "autoclean": "\u039a\u03b1\u03b8\u03b1\u03c1\u03b9\u03c3\u03bc\u03cc\u03c2 \u03ba\u03ac\u03b4\u03bf\u03c5", + "baby_60": "\u039c\u03c9\u03c1\u03bf\u03c5\u03b4\u03b9\u03b1\u03ba\u03ac 60\u00b0C", + "care_14": "Rapid Care 14'", + "care_30": "Rapid Care 30'", + "care_44": "Rapid Care 44'", + "checkup": "\u0388\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2", + "colour_59": "\u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03b1 59'", + "colour_59_steam": "\u03a7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac 59' + \u03b1\u03c4\u03bc\u03cc\u03c2", + "cottons": "\u0392\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03cc", + "cottons_prewash": "\u03b2\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03b1 + \u03c0\u03c1\u03bf\u03c0\u03bb\u03c5\u03c3\u03b7", + "cottons_steam": "\u0392\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03cc + \u0391\u03c4\u03bc\u03cc\u03c2", + "cotton_care_59": "\u03b2\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03b1 59 \u03bb\u03b5\u03c0\u03c4\u03b1", + "delicate_59": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1 59'", + "delicate_silk": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1 \u03bc\u03b5\u03c4\u03b1\u03be\u03c9\u03c4\u03ac", + "delicate_silk_steam": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1 \u03bc\u03b5\u03c4\u03b1\u03be\u03c9\u03c4\u03ac + \u03b1\u03c4\u03bc\u03cc\u03c2", + "delicati_59": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1 59'", + "delicati_59_steam": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1 59'", + "drain_spin": "\u03a3\u03c4\u03c1\u03b1\u03b3\u03b3\u03af\u03c3\u03c4\u03b5 + \u03ba\u03b1\u03b9 \u03c0\u03b5\u03c1\u03b9\u03c3\u03c4\u03c1\u03ad\u03c8\u03c4\u03b5", + "easy_iron": "\u03b5\u03c5\u03ba\u03bf\u03bb\u03bf \u03c3\u03b9\u03b4\u03b5\u03c1\u03c9\u03bc\u03b1", + "eco_40_60_new_energy_label": "Eco (\u03bf\u03b9\u03ba\u03bf\u03bb\u03bf\u03b3\u03b9\u03ba\u03cc) 40-60", + "extra_care": "EXTRA CARE", + "fitness": "FITNESS CARE", + "fitness_care": "FITNESS CARE", + "fresh_care": "\u03a6\u03c1\u03ad\u03c3\u03ba\u03b9\u03b1 \u03c6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1", + "fresh_care_steam": "\u03a6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1 \u03c6\u03c1\u03b5\u03c3\u03ba\u03ac\u03b4\u03b1\u03c2 + \u0391\u03c4\u03bc\u03cc\u03c2", + "handwash_wool": "\u03a0\u03bb\u03cd\u03c3\u03b9\u03bc\u03bf \u03c3\u03c4\u03bf \u03c7\u03ad\u03c1\u03b9 \u03ba\u03b1\u03b9 \u03bc\u03b1\u03bb\u03bb\u03af", + "high_dry": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1 \u03b2\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03ce\u03bd", + "hqd_20_degrees": "\u0392\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03cc 20\u2103", + "hqd_allergy": "\u03a6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1 \u03b1\u03bb\u03bb\u03b5\u03c1\u03b3\u03af\u03b1\u03c2", + "hqd_autoclean": "\u039a\u03b1\u03b8\u03b1\u03c1\u03b9\u03c3\u03bc\u03cc\u03c2 \u03ba\u03ac\u03b4\u03bf\u03c5", + "hqd_babycare": "\u03a6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1 \u039c\u03c9\u03c1\u03bf\u03cd", + "hqd_checkup": "\u0388\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2", + "hqd_cottons": "\u0392\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03cc", + "hqd_delicate": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1", + "hqd_delicate_cradle": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1", + "hqd_dry": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1 \u03b2\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03ce\u03bd", + "hqd_dry_synthetics": "\u039c\u03b9\u03ba\u03c4\u03ac \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", + "hqd_duvet": "\u03a0\u03b1\u03c0\u03bb\u03ce\u03bc\u03b1\u03c4\u03b1", + "hqd_eco_40_60_degrees": "Eco (\u03bf\u03b9\u03ba\u03bf\u03bb\u03bf\u03b3\u03b9\u03ba\u03cc) 40-60", + "hqd_handwash_wool": "\u039c\u03ac\u03bb\u03bb\u03b9\u03bd\u03b1", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "\u039c\u03b5\u03af\u03b3\u03bc\u03b1", + "hqd_quick_15": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf 15'", + "hqd_quick_wash_57": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf \u03c0\u03bb\u03cd\u03c3\u03b9\u03bc\u03bf 57 \u03bb\u03b5\u03c0\u03c4\u03ac", + "hqd_rapid_wash_and_dry": "\u03a0\u03bb\u03cd\u03c3\u03b9\u03bc\u03bf & \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", + "hqd_refresh": "Refresh", + "hqd_rinse": "\u039e\u03ad\u03c0\u03bb\u03c5\u03bc\u03b1", + "hqd_shirts": "\u03a0\u03bf\u03c5\u03ba\u03ac\u03bc\u03b9\u03c3\u03b1", + "hqd_smart": "Smart A.I.", + "hqd_spin": "\u03a3\u03c4\u03cd\u03c8\u03b9\u03bc\u03bf", + "hqd_sport": "\u0391\u03b8\u03bb\u03b7\u03c4\u03b9\u03ba\u03ac", + "hqd_super_fast": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf 39\u2019", + "hqd_synthetic_and_coloured": "\u03a3\u03c5\u03bd\u03b8\u03b5\u03c4\u03b9\u03ba\u03ac", + "hygiene_59": "HYGIENE PLUS 59'", + "hygiene_60": "\u03a5\u03b3\u03b9\u03b5\u03b9\u03bd\u03cc 60\u00b0", + "hygiene_plus_59": "HYGIENE PLUS 59'", + "hygiene_plus_59_min": "HYGIENE PLUS 59'", + "hygiene_pro _49_min": "Hygiene Pro 49 \u03bb\u03b5\u03c0\u03c4\u03ac", + "hygiene_pro_49_min": "Hygiene Pro 49 \u03bb\u03b5\u03c0\u03c4\u03ac", + "hygiene_pro_steam": "Hygiene Pro + \u0391\u03c4\u03bc\u03cc\u03c2", + "intensive_40": "\u0395\u03bd\u03c4\u03b1\u03c4\u03b9\u03ba\u03cc 40\u00b0C", + "intensive_40_steam": "\u0395\u03bd\u03c4\u03b1\u03c4\u03b9\u03ba\u03cc 40\u00b0C + \u03b1\u03c4\u03bc\u03cc\u03c2", + "iot_active_steam": "\u0391\u03c4\u03bc\u03cc\u03c2", + "iot_active_wash_steam": "\u0395\u03bd\u03b5\u03c1\u03b3\u03cc \u03c0\u03bb\u03cd\u03c3\u03b9\u03bc\u03bf", + "iot_allergy_care_pro": "Allergy Care \u0395\u03c0\u03b1\u03b3\u03b3\u03b5\u03bb\u03bc\u03b1\u03c4\u03b9\u03ba\u03cc", + "iot_all_in_one_59_steam": "\u0395\u03bd\u03b5\u03c1\u03b3\u03ae \u03c0\u03bb\u03cd\u03c3\u03b7 + \u0391\u03c4\u03bc\u03cc\u03c2", + "iot_checkup": "\u0388\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2", + "iot_colour_59_steam": "\u03a7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac 59' + \u03b1\u03c4\u03bc\u03cc\u03c2", + "iot_cottons_steam": "\u0392\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03cc + \u0391\u03c4\u03bc\u03cc\u03c2", + "iot_delicate_silk_steam": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1 \u03bc\u03b5\u03c4\u03b1\u03be\u03c9\u03c4\u03ac + \u03b1\u03c4\u03bc\u03cc\u03c2", + "iot_delicati_59_steam": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1 59'", + "iot_dry_air_refresh": "\u0391\u03bd\u03b1\u03bd\u03ad\u03c9\u03c3\u03b7 \u03b1\u03ad\u03c1\u03b1", + "iot_dry_anti_mites": "\u0391\u03bd\u03c4\u03b9-\u03b1\u03ba\u03ac\u03c1\u03b5\u03b1", + "iot_dry_baby": "\u039c\u03c9\u03c1\u03bf\u03c5\u03b4\u03b9\u03b1\u03ba\u03ac", + "iot_dry_backpacks": "\u03a3\u03b1\u03ba\u03af\u03b4\u03b9\u03b1", + "iot_dry_bathrobe": "\u039c\u03c0\u03bf\u03c5\u03c1\u03bd\u03bf\u03cd\u03b6\u03b9\u03b1 \u03ba\u03b1\u03b9 \u03c0\u03bf\u03c1\u03ce\u03b4\u03b7 \u03c5\u03c6\u03ac\u03c3\u03bc\u03b1\u03c4\u03b1", + "iot_dry_bed_linen": "\u039a\u03bb\u03b9\u03bd\u03bf\u03c3\u03ba\u03b5\u03c0\u03ac\u03c3\u03bc\u03b1\u03c4\u03b1", + "iot_dry_cotton_dry": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1 \u03b2\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03ce\u03bd", + "iot_dry_cuddly_toys": "\u039b\u03bf\u03cd\u03c4\u03c1\u03b9\u03bd\u03b1 \u03b6\u03c9\u03ac\u03ba\u03b9\u03b1", + "iot_dry_curtains": "\u039a\u03bf\u03c5\u03c1\u03c4\u03af\u03bd\u03b5\u03c2", + "iot_dry_dehumidifier": "\u0391\u03c6\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 \u03c5\u03b3\u03c1\u03b1\u03c3\u03af\u03b1\u03c2", + "iot_dry_delicates_antiallergy": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1 \u03ba\u03b1\u03b9 \u03bb\u03b5\u03c0\u03c4\u03ac \u2013 \u03b1\u03bd\u03c4\u03b9-\u03b1\u03bb\u03bb\u03b5\u03c1\u03b3\u03b9\u03bf\u03b3\u03cc\u03bd\u03b1", + "iot_dry_delicate_tablecloths": "\u039b\u03b5\u03c0\u03c4\u03ac \u03c4\u03c1\u03b1\u03c0\u03b5\u03b6\u03bf\u03bc\u03ac\u03bd\u03c4\u03b9\u03bb\u03b1", + "iot_dry_denim_jeans": "\u039d\u03c4\u03ad\u03bd\u03b9\u03bc - \u03a4\u03b6\u03b9\u03bd", + "iot_dry_easy_iron_cotton": "\u0395\u03cd\u03ba\u03bf\u03bb\u03bf \u03c3\u03b9\u03b4\u03ad\u03c1\u03c9\u03bc\u03b1 - \u03b2\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03ac", + "iot_dry_easy_iron_synthetics": "\u0395\u03cd\u03ba\u03bf\u03bb\u03bf \u03c3\u03b9\u03b4\u03ad\u03c1\u03c9\u03bc\u03b1 - \u03a3\u03c5\u03bd\u03b8\u03b5\u03c4\u03b9\u03ba\u03ac", + "iot_dry_gym_fit": "\u03a6\u03cc\u03c1\u03bc\u03b5\u03c2 - \u03c1\u03bf\u03cd\u03c7\u03b1 \u03b3\u03c5\u03bc\u03bd\u03b1\u03c3\u03c4\u03b9\u03ba\u03ae\u03c2", + "iot_dry_lingerie": "\u0395\u03c3\u03ce\u03c1\u03bf\u03c5\u03c7\u03b1", + "iot_dry_mixed_dry": "\u039c\u03b9\u03ba\u03c4\u03ac \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", + "iot_dry_rapid_60_min_delicates": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf 60' - \u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1", + "iot_dry_shirts": "\u03a0\u03bf\u03c5\u03ba\u03ac\u03bc\u03b9\u03c3\u03b1", + "iot_dry_swimsuits_and_bikinis": "\u039c\u03b1\u03b3\u03b9\u03cc", + "iot_dry_synthetics": "\u03a3\u03c5\u03bd\u03b8\u03b5\u03c4\u03b9\u03ba\u03ac \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", + "iot_dry_synthetic_dry": "\u03a3\u03c5\u03bd\u03b8\u03b5\u03c4\u03b9\u03ba\u03ac \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", + "iot_dry_tablecloths": "\u03a4\u03c1\u03b1\u03c0\u03b5\u03b6\u03bf\u03bc\u03ac\u03bd\u03c4\u03b7\u03bb\u03b1", + "iot_dry_technical_fabrics": "\u03a4\u03b5\u03c7\u03bd\u03b9\u03ba\u03ac \u03c5\u03c6\u03ac\u03c3\u03bc\u03b1\u03c4\u03b1", + "iot_dry_warm_embrace": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1 \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", + "iot_dry_wool_dry": "\u039c\u03ac\u03bb\u03bb\u03b9\u03bd\u03b1 \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", + "iot_easy_iron": "\u03b5\u03c5\u03ba\u03bf\u03bb\u03bf \u03c3\u03b9\u03b4\u03b5\u03c1\u03c9\u03bc\u03b1", + "iot_fresh_care_steam": "\u03a6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1 \u03c6\u03c1\u03b5\u03c3\u03ba\u03ac\u03b4\u03b1\u03c2 + \u0391\u03c4\u03bc\u03cc\u03c2", + "iot_hygiene_pro_steam": "Hygiene Pro + \u0391\u03c4\u03bc\u03cc\u03c2", + "iot_intensive_40_steam": "\u0395\u03bd\u03c4\u03b1\u03c4\u03b9\u03ba\u03cc 40\u00b0C + \u03b1\u03c4\u03bc\u03cc\u03c2", + "iot_mixed_steam": "\u039c\u03b9\u03ba\u03c4\u03ac + \u0391\u03c4\u03bc\u03cc\u03c2", + "iot_mix_and_colour_59_steam": "\u039c\u03b9\u03ba\u03c4\u03ac \u03ba\u03b1\u03b9 \u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac 59' + \u0391\u03c4\u03bc\u03cc\u03c2", + "iot_perfect_cotton_59_steam": "\u03a4\u0395\u039b\u0395\u0399\u0391 \u0392\u0391\u039c\u0392\u0391\u039a\u0395\u03a1\u0391 59'", + "iot_rapid_a_class_60_steam": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf \u03ba\u03b1\u03c4\u03b7\u03b3\u03bf\u03c1\u03af\u03b1\u03c2 A 60 + \u03b1\u03c4\u03bc\u03cc\u03c2", + "iot_resistant_cotton_steam": "\u0392\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03cc + \u0391\u03c4\u03bc\u03cc\u03c2", + "iot_shirts_steam": "\u03a0\u03bf\u03c5\u03ba\u03ac\u03bc\u03b9\u03c3\u03b1 + \u0391\u03c4\u03bc\u03cc\u03c2", + "iot_single_item_steam": "\u0388\u03bd\u03b1 \u03c4\u03b5\u03bc\u03ac\u03c7\u03b9\u03bf + \u0391\u03c4\u03bc\u03cc\u03c2", + "iot_smart_wash": "\u0388\u03be\u03c5\u03c0\u03bd\u03b7 \u03c0\u03bb\u03cd\u03c3\u03b7", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "\u0395\u03b9\u03b4\u03b9\u03ba\u03cc 39' + \u0391\u03c4\u03bc\u03cc\u03c2", + "iot_steam_hygiene_plus": "\u0391\u03c4\u03bc\u03cc\u03c2 \u03b3\u03b9\u03b1 \u03c0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03bf \u03c5\u03b3\u03b9\u03b5\u03b9\u03bd\u03cc \u03c6\u03b1\u03b3\u03b7\u03c4\u03cc ", + "iot_synthetic_and_coloured_steam": "\u03a3\u03c5\u03bd\u03b8\u03b5\u03c4\u03b9\u03ba\u03ac \u03ba\u03b1\u03b9 \u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac + \u0391\u03c4\u03bc\u03cc\u03c2", + "iot_wash_and_dry": "\u03a0\u03bb\u03cd\u03c3\u03b9\u03bc\u03bf & \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", + "iot_wash_anti_mites": "\u0391\u03bd\u03c4\u03b9-\u03b1\u03ba\u03ac\u03c1\u03b5\u03b1", + "iot_wash_anti_odor": "\u039a\u03b1\u03c4\u03ac \u03c4\u03c9\u03bd \u03bf\u03c3\u03bc\u03ce\u03bd", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "\u0391\u03c0\u03bf\u03bb\u03cd\u03bc\u03b1\u03bd\u03c3\u03b7", + "iot_wash_baby_sanitizer_steam": "\u0391\u03c0\u03bf\u03bb\u03cd\u03bc\u03b1\u03bd\u03c3\u03b7 \u03bc\u03c9\u03c1\u03bf\u03c5\u03b4\u03b9\u03b1\u03ba\u03ce\u03bd + \u03b1\u03c4\u03bc\u03cc\u03c2", + "iot_wash_backpacks": "\u03a3\u03b1\u03ba\u03af\u03b4\u03b9\u03b1", + "iot_wash_backpacks_zelig": "\u03a3\u03b1\u03ba\u03af\u03b4\u03b9\u03b1 \u03c0\u03bb\u03ac\u03c4\u03b7\u03c2", + "iot_wash_bathrobe": "\u039c\u03c0\u03bf\u03c5\u03c1\u03bd\u03bf\u03cd\u03b6\u03b9\u03b1 \u03ba\u03b1\u03b9 \u03c0\u03b5\u03c4\u03c3\u03ad\u03c4\u03b5\u03c2", + "iot_wash_bathrobe_steam": "\u039c\u03c0\u03bf\u03c5\u03c1\u03bd\u03bf\u03cd\u03b6\u03b9 + \u0391\u03c4\u03bc\u03cc\u03c2", + "iot_wash_bed_linen": "\u039a\u03bb\u03b9\u03bd\u03bf\u03c3\u03ba\u03b5\u03c0\u03ac\u03c3\u03bc\u03b1\u03c4\u03b1", + "iot_wash_bed_linen_steam": "\u039a\u03bb\u03b9\u03bd\u03bf\u03c3\u03ba\u03b5\u03c0\u03ac\u03c3\u03bc\u03b1\u03c4\u03b1 + \u0391\u03c4\u03bc\u03cc\u03c2", + "iot_wash_bed_linen_zelig": "\u039a\u03bb\u03b9\u03bd\u03bf\u03c3\u03ba\u03b5\u03c0\u03ac\u03c3\u03bc\u03b1\u03c4\u03b1", + "iot_wash_big_single_load": "\u039c\u03b5\u03b3\u03ac\u03bb\u03bf \u03bc\u03b5\u03bc\u03bf\u03bd\u03c9\u03bc\u03ad\u03bd\u03bf \u03c6\u03bf\u03c1\u03c4\u03af\u03bf", + "iot_wash_bleaching": "\u039b\u03b5\u03cd\u03ba\u03b1\u03bd\u03c3\u03b7", + "iot_wash_blood_stains": "\u039b\u03b5\u03ba\u03ad\u03b4\u03b5\u03c2 \u03b1\u03af\u03bc\u03b1\u03c4\u03bf\u03c2", + "iot_wash_cashmere": "\u039a\u03b1\u03c3\u03bc\u03af\u03c1\u03b9", + "iot_wash_chocolate_stains": "\u039b\u03b5\u03ba\u03ad\u03b4\u03b5\u03c2 \u03b1\u03c0\u03cc \u03c3\u03bf\u03ba\u03bf\u03bb\u03ac\u03c4\u03b1", + "iot_wash_cold_wash": "\u039a\u03c1\u03cd\u03b1 \u03c0\u03bb\u03cd\u03c3\u03b7", + "iot_wash_colored": "\u03a7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac", + "iot_wash_colored_anti_stain": "\u0391\u03c6\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 \u03bb\u03b5\u03ba\u03ad\u03b4\u03c9\u03bd \u03b3\u03b9\u03b1 \u03c7\u03c1\u03ce\u03bc\u03b1\u03c4\u03b1", + "iot_wash_colored_delicate": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1 \u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac", + "iot_wash_coloured": "\u03a7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac", + "iot_wash_coloured_bed_linen": "\u03a7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac \u03ba\u03bb\u03b9\u03bd\u03bf\u03c3\u03ba\u03b5\u03c0\u03ac\u03c3\u03bc\u03b1\u03c4\u03b1", + "iot_wash_coloured_bed_linen_steam": "\u03a7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac \u03ba\u03bb\u03b9\u03bd\u03bf\u03c3\u03ba\u03b5\u03c0\u03ac\u03c3\u03bc\u03b1\u03c4\u03b1 + \u03b1\u03c4\u03bc\u03cc\u03c2", + "iot_wash_coloured_curtains": "\u03a7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ad\u03c2 \u03ba\u03bf\u03c5\u03c1\u03c4\u03af\u03bd\u03b5\u03c2", + "iot_wash_coloured_shirts": "\u03a7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac \u03c0\u03bf\u03c5\u03ba\u03ac\u03bc\u03b9\u03c3\u03b1", + "iot_wash_coloured_shirts_steam": "\u03a7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac \u03c0\u03bf\u03c5\u03ba\u03ac\u03bc\u03b9\u03c3\u03b1 + \u03b1\u03c4\u03bc\u03cc\u03c2", + "iot_wash_coloured_steam": "\u03a7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac + \u0391\u03c4\u03bc\u03cc\u03c2", + "iot_wash_coloured_tableclothes": "\u03a7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac \u03c4\u03c1\u03b1\u03c0\u03b5\u03b6\u03bf\u03bc\u03ac\u03bd\u03c4\u03b7\u03bb\u03b1", + "iot_wash_coloured_tableclothes_steam": "\u03a7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac \u03c4\u03c1\u03b1\u03c0\u03b5\u03b6\u03bf\u03bc\u03ac\u03bd\u03c4\u03b9\u03bb\u03b1 + \u0391\u03c4\u03bc\u03cc\u03c2", + "iot_wash_cotton": "\u0392\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03cc", + "iot_wash_cotton_steam": "\u0392\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03cc + \u0391\u03c4\u03bc\u03cc\u03c2", + "iot_wash_cuddly_toys": "\u039b\u03bf\u03cd\u03c4\u03c1\u03b9\u03bd\u03b1 \u03b6\u03c9\u03ac\u03ba\u03b9\u03b1", + "iot_wash_curtains": "\u039a\u03bf\u03c5\u03c1\u03c4\u03af\u03bd\u03b5\u03c2", + "iot_wash_curtains_steam": "\u039a\u03bf\u03c5\u03c1\u03c4\u03af\u03bd\u03b5\u03c2 + \u0391\u03c4\u03bc\u03cc\u03c2", + "iot_wash_curtains_zelig": "\u039a\u03bf\u03c5\u03c1\u03c4\u03af\u03bd\u03b5\u03c2", + "iot_wash_dark": "\u03a3\u03ba\u03bf\u03cd\u03c1\u03b1 \u03c1\u03bf\u03cd\u03c7\u03b1", + "iot_wash_darks_and_coloured_44": "\u03a3\u03ba\u03bf\u03cd\u03c1\u03b1 \u03ba\u03b1\u03b9 \u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac 44'", + "iot_wash_darks_and_coloured_59": "\u03a3\u03ba\u03bf\u03cd\u03c1\u03b1 \u03ba\u03b1\u03b9 \u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac 59'", + "iot_wash_darks_and_coloured_xl": "\u03a3\u03ba\u03bf\u03cd\u03c1\u03b1 \u03ba\u03b1\u03b9 \u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac XL", + "iot_wash_dark_steam": "\u03a3\u03ba\u03bf\u03cd\u03c1\u03b1 \u03c1\u03bf\u03cd\u03c7\u03b1 + \u0391\u03c4\u03bc\u03cc\u03c2", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1", + "iot_wash_delicate_antiallergy": "\u0391\u03bd\u03c4\u03b9-\u03b1\u03bb\u03bb\u03b5\u03c1\u03b3\u03b9\u03ba\u03cc \u03b3\u03b9\u03b1 \u03bb\u03b9\u03c0\u03b1\u03c1\u03ad\u03c2 \u03bf\u03c5\u03c3\u03af\u03b5\u03c2", + "iot_wash_delicate_antiallergy_steam": "\u0391\u03bd\u03c4\u03b9-\u03b1\u03bb\u03bb\u03b5\u03c1\u03b3\u03b9\u03ba\u03cc \u03b3\u03b9\u03b1 \u03bb\u03b9\u03c0\u03b1\u03c1\u03ad\u03c2 \u03bf\u03c5\u03c3\u03af\u03b5\u03c2 + \u0391\u03c4\u03bc\u03cc\u03c2", + "iot_wash_delicate_antiallergy_zelig": "\u0391\u03bd\u03c4\u03b9-\u03b1\u03bb\u03bb\u03b5\u03c1\u03b3\u03b9\u03ba\u03cc \u03b3\u03b9\u03b1 \u03bb\u03b9\u03c0\u03b1\u03c1\u03ad\u03c2 \u03bf\u03c5\u03c3\u03af\u03b5\u03c2", + "iot_wash_delicate_colors": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1 \u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac", + "iot_wash_delicate_colors_steam": "\u03a7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac + \u03b1\u03c4\u03bc\u03cc\u03c2", + "iot_wash_delicate_dark": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1 \u03c3\u03ba\u03bf\u03cd\u03c1\u03b1", + "iot_wash_delicate_steam": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1 + \u0391\u03c4\u03bc\u03cc\u03c2", + "iot_wash_delicate_tablecloths": "\u039b\u03b5\u03c0\u03c4\u03ac \u03c4\u03c1\u03b1\u03c0\u03b5\u03b6\u03bf\u03bc\u03ac\u03bd\u03c4\u03b9\u03bb\u03b1", + "iot_wash_delicate_tablecloths_steam": "\u039b\u03b5\u03c0\u03c4\u03ac \u03c4\u03c1\u03b1\u03c0\u03b5\u03b6\u03bf\u03bc\u03ac\u03bd\u03c4\u03b9\u03bb\u03b1 + \u0391\u03c4\u03bc\u03cc\u03c2", + "iot_wash_delicate_whites": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1 \u03bb\u03b5\u03c5\u03ba\u03ac", + "iot_wash_denim_jeans": "\u039d\u03c4\u03ad\u03bd\u03b9\u03bc - \u03c4\u03b6\u03b9\u03bd", + "iot_wash_diving_suits": "\u03a3\u03c4\u03bf\u03bb\u03b5\u03c2 \u03ba\u03b1\u03c4\u03ac\u03b4\u03c5\u03c3\u03b7\u03c2", + "iot_wash_diving_suits_zelig": "\u03a3\u03c4\u03bf\u03bb\u03b5\u03c2 \u03ba\u03b1\u03c4\u03ac\u03b4\u03c5\u03c3\u03b7\u03c2", + "iot_wash_down_jackets": "\u03a6\u03bf\u03c5\u03c3\u03ba\u03c9\u03c4\u03ac \u03bc\u03c0\u03bf\u03c5\u03c6\u03ac\u03bd", + "iot_wash_down_jackets_zelig": "\u03a6\u03bf\u03c5\u03c3\u03ba\u03c9\u03c4\u03ac \u03bc\u03c0\u03bf\u03c5\u03c6\u03ac\u03bd", + "iot_wash_duvet": "\u03a0\u03b1\u03c0\u03bb\u03ce\u03bc\u03b1\u03c4\u03b1", + "iot_wash_fruit_stains": "\u039b\u03b5\u03ba\u03ad\u03b4\u03b5\u03c2 \u03c6\u03c1\u03bf\u03cd\u03c4\u03c9\u03bd", + "iot_wash_gym_fit": "\u03a6\u03cc\u03c1\u03bc\u03b5\u03c2 - \u03c1\u03bf\u03cd\u03c7\u03b1 \u03b3\u03c5\u03bc\u03bd\u03b1\u03c3\u03c4\u03b9\u03ba\u03ae\u03c2", + "iot_wash_handwash": "\u03a0\u03bb\u03cd\u03c3\u03b9\u03bc\u03bf \u03c3\u03c4\u03bf \u03c7\u03ad\u03c1\u03b9", + "iot_wash_handwash_colored": "\u03a0\u03bb\u03cd\u03c3\u03b9\u03bc\u03bf \u03c3\u03c4\u03bf \u03c7\u03ad\u03c1\u03b9 \u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac", + "iot_wash_handwash_dark": "\u03a0\u03bb\u03cd\u03c3\u03b9\u03bc\u03bf \u03c3\u03c4\u03bf \u03c7\u03ad\u03c1\u03b9 \u03c3\u03ba\u03bf\u03cd\u03c1\u03b1", + "iot_wash_lingerie": "\u0395\u03c3\u03ce\u03c1\u03bf\u03c5\u03c7\u03b1", + "iot_wash_masks_refresh": "\u03a6\u03c1\u03b5\u03c3\u03ba\u03ac\u03c1\u03b9\u03c3\u03bc\u03b1 \u03bc\u03b1\u03c3\u03ba\u03ce\u03bd", + "iot_wash_masks_sanification": "\u0391\u03c0\u03bf\u03bb\u03cd\u03bc\u03b1\u03bd\u03c3\u03b7 \u03bc\u03b1\u03c3\u03ba\u03ce\u03bd", + "iot_wash_masks_sanification_steam": "\u0391\u03c0\u03bf\u03bb\u03cd\u03bc\u03b1\u03bd\u03c3\u03b7 \u03bc\u03b1\u03c3\u03ba\u03ce\u03bd + \u0391\u03c4\u03bc\u03cc\u03c2", + "iot_wash_mats": "\u03a7\u03b1\u03bb\u03b9\u03ac", + "iot_wash_men_s_trousers": "\u03c0\u03b1\u03bd\u03c4\u03b5\u03bb\u03bf\u03bd\u03b9\u03b1", + "iot_wash_mixed": "\u039c\u03b9\u03ba\u03c4\u03ac", + "iot_wash_mixed_steam": "\u039c\u03b9\u03ba\u03c4\u03ac + \u0391\u03c4\u03bc\u03cc\u03c2", + "iot_wash_mix_and_coloured_44": "\u039c\u03b9\u03ba\u03c4\u03ac \u03ba\u03b1\u03b9 \u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac 44'", + "iot_wash_mix_and_coloured_59": "\u039c\u03b9\u03ba\u03c4\u03ac \u03ba\u03b1\u03b9 \u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac 59'", + "iot_wash_mix_and_coloured_xl": "\u039c\u03b9\u03ba\u03c4\u03ac \u03ba\u03b1\u03b9 \u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac XL", + "iot_wash_new_clothes": "\u039d\u03ad\u03b1 \u03c1\u03bf\u03cd\u03c7\u03b1", + "iot_wash_perfect_white": "\u03a4\u03ad\u03bb\u03b5\u03b9\u03bf \u03bb\u03b5\u03c5\u03ba\u03cc", + "iot_wash_perfect_white_steam": "\u03a4\u03ad\u03bb\u03b5\u03b9\u03bf \u03bb\u03b5\u03c5\u03ba\u03cc + \u0391\u03c4\u03bc\u03cc\u03c2", + "iot_wash_pets": "\u0391\u03be\u03b5\u03c3\u03bf\u03c5\u03ac\u03c1 \u03ba\u03b1\u03c4\u03bf\u03b9\u03ba\u03af\u03b4\u03b9\u03c9\u03bd", + "iot_wash_pets_hair_removal": "\u0391\u03c6\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 \u03c4\u03c9\u03bd \u03c4\u03c1\u03b9\u03c7\u03ce\u03bd \u03ba\u03b1\u03c4\u03bf\u03b9\u03ba\u03af\u03b4\u03b9\u03c9\u03bd \u03b6\u03ce\u03c9\u03bd", + "iot_wash_pets_odours_stains_removal": "\u0391\u03c6\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 \u03bf\u03c3\u03bc\u03ce\u03bd \u03ba\u03b1\u03b9 \u03bb\u03b5\u03ba\u03ad\u03b4\u03c9\u03bd \u03b1\u03c0\u03cc \u03c4\u03b1 \u03ba\u03b1\u03c4\u03bf\u03b9\u03ba\u03af\u03b4\u03b9\u03b1 \u03b6\u03ce\u03b1", + "iot_wash_pets_steam": "\u0391\u03be\u03b5\u03c3\u03bf\u03c5\u03ac\u03c1 \u03ba\u03b1\u03c4\u03bf\u03b9\u03ba\u03af\u03b4\u03b9\u03c9\u03bd", + "iot_wash_playsuits": "\u0391\u03b8\u03bb\u03b7\u03c4\u03b9\u03ba\u03ad\u03c2 \u03c6\u03cc\u03c1\u03bc\u03b5\u03c2", + "iot_wash_playsuits_steam": "\u0391\u03b8\u03bb\u03b7\u03c4\u03b9\u03ba\u03ad\u03c2 \u03c6\u03cc\u03c1\u03bc\u03b5\u03c2 + \u0391\u03c4\u03bc\u03cc\u03c2", + "iot_wash_quick_drum_cleaner": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf\u03c2 \u03ba\u03b1\u03b8\u03b1\u03c1\u03b9\u03c3\u03bc\u03cc\u03c2 \u03ba\u03ac\u03b4\u03bf\u03c5", + "iot_wash_rapid_14": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf 14\u2019", + "iot_wash_rapid_30": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf 30\u2019", + "iot_wash_rapid_44": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf 44'", + "iot_wash_rapid_59": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf 59'", + "iot_wash_rapid_59_steam": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf 59' + \u03b1\u03c4\u03bc\u03cc\u03c2", + "iot_wash_refresh_14_min": "\u0391\u03bd\u03b1\u03bd\u03ad\u03c9\u03c3\u03b7 14'", + "iot_wash_resistant_colored": "\u0391\u03bd\u03b8\u03b5\u03ba\u03c4\u03b9\u03ba\u03ac \u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac", + "iot_wash_resistant_dark": "\u0391\u03bd\u03b8\u03b5\u03ba\u03c4\u03b9\u03ba\u03ac \u03c3\u03ba\u03bf\u03cd\u03c1\u03b1", + "iot_wash_resistant_whites": "\u0391\u03bd\u03b8\u03b5\u03ba\u03c4\u03b9\u03ba\u03ac \u03bb\u03b5\u03c5\u03ba\u03ac", + "iot_wash_rinse": "\u039e\u03ad\u03c0\u03bb\u03c5\u03bc\u03b1", + "iot_wash_shirts": "\u03a0\u03bf\u03c5\u03ba\u03ac\u03bc\u03b9\u03c3\u03b1", + "iot_wash_shirts_steam": "\u03a0\u03bf\u03c5\u03ba\u03ac\u03bc\u03b9\u03c3\u03b1 + \u0391\u03c4\u03bc\u03cc\u03c2", + "iot_wash_silk": "\u039c\u03b5\u03c4\u03b1\u03be\u03c9\u03c4\u03ac", + "iot_wash_ski_suit": "\u03a3\u03c4\u03bf\u03bb\u03ad\u03c2 \u03c3\u03ba\u03b9", + "iot_wash_ski_suit_zelig": "\u03a3\u03c4\u03bf\u03bb\u03ad\u03c2 \u03c3\u03ba\u03b9", + "iot_wash_spin": "\u03a3\u03c4\u03cd\u03c8\u03b9\u03bc\u03bf", + "iot_wash_sport": "\u0391\u03b8\u03bb\u03b7\u03c4\u03b9\u03ba\u03ac", + "iot_wash_sport_anti_odor": "\u039a\u03b1\u03c4\u03ac \u03c4\u03b7\u03c2 \u03bf\u03c3\u03bc\u03ae\u03c2 \u03c4\u03c9\u03bd \u03b1\u03b8\u03bb\u03b7\u03c4\u03b9\u03ba\u03ce\u03bd \u03c1\u03bf\u03cd\u03c7\u03c9\u03bd", + "iot_wash_sport_anti_odor_zelig": "\u039a\u03b1\u03c4\u03ac \u03c4\u03b7\u03c2 \u03bf\u03c3\u03bc\u03ae\u03c2 \u03c4\u03c9\u03bd \u03b1\u03b8\u03bb\u03b7\u03c4\u03b9\u03ba\u03ce\u03bd \u03c1\u03bf\u03cd\u03c7\u03c9\u03bd", + "iot_wash_stains_remover": "\u0391\u03c6\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 \u03bb\u03b5\u03ba\u03ad\u03b4\u03c9\u03bd", + "iot_wash_swimsuits_and_bikinis": "\u039c\u03b1\u03b3\u03b9\u03cc", + "iot_wash_synthetic": "\u03a3\u03c5\u03bd\u03b8\u03b5\u03c4\u03b9\u03ba\u03ac", + "iot_wash_synthetic_steam": "\u03a3\u03c5\u03bd\u03b8\u03b5\u03c4\u03b9\u03ba\u03ac + \u0391\u03c4\u03bc\u03cc\u03c2", + "iot_wash_tablecloths": "\u03a4\u03c1\u03b1\u03c0\u03b5\u03b6\u03bf\u03bc\u03ac\u03bd\u03c4\u03b7\u03bb\u03b1", + "iot_wash_tablecloths_steam": "\u03a4\u03c1\u03b1\u03c0\u03b5\u03b6\u03bf\u03bc\u03ac\u03bd\u03c4\u03b7\u03bb\u03b1 + \u0391\u03c4\u03bc\u03cc\u03c2", + "iot_wash_technical_fabrics": "\u03a4\u03b5\u03c7\u03bd\u03b9\u03ba\u03ac \u03c5\u03c6\u03ac\u03c3\u03bc\u03b1\u03c4\u03b1", + "iot_wash_technical_fabrics_zelig": "\u03a4\u03b5\u03c7\u03bd\u03b9\u03ba\u03ac \u03c5\u03c6\u03ac\u03c3\u03bc\u03b1\u03c4\u03b1", + "iot_wash_technical_jackets": "\u03a4\u03b5\u03c7\u03bd\u03b9\u03ba\u03ac \u03bc\u03c0\u03bf\u03c5\u03c6\u03ac\u03bd", + "iot_wash_technical_jackets_zelig": "\u03a4\u03b5\u03c7\u03bd\u03b9\u03ba\u03ac \u03bc\u03c0\u03bf\u03c5\u03c6\u03ac\u03bd", + "iot_wash_trainers": "\u0391\u03b8\u03bb\u03b7\u03c4\u03b9\u03ba\u03ac \u03c0\u03b1\u03c0\u03bf\u03cd\u03c4\u03c3\u03b9\u03b1", + "iot_wash_whites": "\u039b\u03b5\u03c5\u03ba\u03ac", + "iot_wash_whites_44": "\u039b\u03b5\u03c5\u03ba\u03ac 44'", + "iot_wash_whites_59": "\u039b\u03b5\u03c5\u03ba\u03ac 59'", + "iot_wash_whites_xl": "\u039b\u03b5\u03c5\u03ba\u03ac XL", + "iot_wash_wine_stains": "\u039b\u03b5\u03ba\u03ad\u03b4\u03b5\u03c2 \u03ba\u03c1\u03b1\u03c3\u03b9\u03bf\u03cd", + "iot_wash_wool": "\u039c\u03ac\u03bb\u03bb\u03b9\u03bd\u03b1", + "jeans": "\u03a4\u03b6\u03b9\u03bd \u03c0\u03b1\u03bd\u03c4\u03b5\u03bb\u03bf\u03bd\u03b9\u03b1", + "jeans_60": "\u03c4\u03b6\u03b9\u03bd", + "low_dry": "\u039c\u03b9\u03ba\u03c4\u03ac \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", + "mixed": "\u039c\u03b9\u03ba\u03c4\u03ac", + "mixed_and_colored_59": "\u039c\u03b9\u03ba\u03c4\u03ac \u03ba\u03b1\u03b9 \u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac 59'", + "mixed_steam": "\u039c\u03b9\u03ba\u03c4\u03ac + \u0391\u03c4\u03bc\u03cc\u03c2", + "mix_and_colour_59": "\u039c\u0399\u039a\u03a4\u0391 + \u03a7\u03a1\u03a9\u039c\u0391\u03a4\u0399\u03a3\u03a4\u0391 59'", + "mix_and_colour_59_steam": "\u039c\u03b9\u03ba\u03c4\u03ac \u03ba\u03b1\u03b9 \u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac 59' + \u0391\u03c4\u03bc\u03cc\u03c2", + "night_and_day": "\u039d\u03cd\u03c7\u03c4\u03b1 \u03ba\u03b1\u03b9 \u03b7\u03bc\u03ad\u03c1\u03b1", + "night_wash": "\u039f\u03bb\u03bf\u03bd\u03cd\u03ba\u03c4\u03b9\u03bf\u03c2 \u03ba\u03cd\u03ba\u03bb\u03bf\u03c2", + "perfect_59": "\u03a4\u03ad\u03bb\u03b5\u03b9\u03bf 59'", + "perfect_cotton_59": "\u03a4\u0395\u039b\u0395\u0399\u0391 \u0392\u0391\u039c\u0392\u0391\u039a\u0395\u03a1\u0391 59'", + "perfect_cotton_59_steam": "\u03a4\u0395\u039b\u0395\u0399\u0391 \u0392\u0391\u039c\u0392\u0391\u039a\u0395\u03a1\u0391 59'", + "perfect_whites_59": "\u03c4\u03b5\u03bb\u03b5\u03b9\u03b1 \u03bb\u03b5\u03c5\u03ba\u03b1 59'", + "rapid_14_min": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf 14 \u03bb\u03b5\u03c0\u03c4\u03ce\u03bd", + "rapid_30_min": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf 30\u03bb\u03b5\u03c0.", + "rapid_44_min": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf 44\u03bb\u03b5\u03c0.", + "rapid_a_class_60": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf \u03ba\u03b1\u03c4\u03b7\u03b3\u03bf\u03c1\u03af\u03b1\u03c2 A 60", + "rapid_a_class_60_steam": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf \u03ba\u03b1\u03c4\u03b7\u03b3\u03bf\u03c1\u03af\u03b1\u03c2 A 60 + \u03b1\u03c4\u03bc\u03cc\u03c2", + "rapid_wash_and_dry_59_min": "\u03a0\u03bb\u03cd\u03c3\u03b9\u03bc\u03bf \u03ba\u03b1\u03b9 \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1 59'.", + "resistant_cotton": "\u0392\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03cc", + "resistant_cotton_steam": "\u0392\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03cc + \u0391\u03c4\u03bc\u03cc\u03c2", + "rinse": "\u039e\u03ad\u03c0\u03bb\u03c5\u03bc\u03b1", + "shirts_steam": "\u03a0\u03bf\u03c5\u03ba\u03ac\u03bc\u03b9\u03c3\u03b1 + \u0391\u03c4\u03bc\u03cc\u03c2", + "silent_night": "\u039f\u03bb\u03bf\u03bd\u03cd\u03ba\u03c4\u03b9\u03bf\u03c2 \u03ba\u03cd\u03ba\u03bb\u03bf\u03c2", + "single_item": "\u0395\u03bd\u03b9\u03b1\u03af\u03bf \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf", + "single_item_steam": "\u0388\u03bd\u03b1 \u03c4\u03b5\u03bc\u03ac\u03c7\u03b9\u03bf + \u0391\u03c4\u03bc\u03cc\u03c2", + "smart_wash": "\u0388\u03be\u03c5\u03c0\u03bd\u03b7 \u03c0\u03bb\u03cd\u03c3\u03b7", + "soft_care": "\u0391\u03c0\u03b1\u03bb\u03ae \u03c6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "E\u03b9\u03b4\u03b9\u03ba\u03bf\u03c2 39'", + "special_39_full_load": "E\u03b9\u03b4\u03b9\u03ba\u03bf\u03c2 39'", + "special_39_full_load_steam": "\u0395\u03b9\u03b4\u03b9\u03ba\u03cc 39' + \u0391\u03c4\u03bc\u03cc\u03c2", + "special_49": "\u0395\u03b9\u03b4\u03b9\u03ba\u03cc 49'", + "sport_39": "\u03a3\u03c0\u03bf\u03c1 39'", + "sport_plus_29": "SPORT PLUS 39\"", + "sport_plus_39": "SPORT PLUS 39'", + "steam_39": "\u0391\u03c4\u03bc\u03cc\u03c2 39'", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro - \u0392\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03ac", + "steam_care_pro_delicates": "Steam Care Pro - \u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1", + "steam_care_pro_synthetic": "Steam Care Pro - \u03a3\u03c5\u03bd\u03b8\u03b5\u03c4\u03b9\u03ba\u03ac", + "steam_hygiene_plus": "\u0391\u03c4\u03bc\u03cc\u03c2 \u03b3\u03b9\u03b1 \u03c0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03bf \u03c5\u03b3\u03b9\u03b5\u03b9\u03bd\u03cc \u03c6\u03b1\u03b3\u03b7\u03c4\u03cc ", + "synthetics": "\u03a3\u03c5\u03bd\u03b8\u03b5\u03c4\u03b9\u03ba\u03ac", + "synthetic_and_coloured": "\u03a3\u03c5\u03bd\u03b8\u03b5\u03c4\u03b9\u03ba\u03ac \u03ba\u03b1\u03b9 \u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac", + "synthetic_and_coloured_steam": "\u03a3\u03c5\u03bd\u03b8\u03b5\u03c4\u03b9\u03ba\u03ac \u03ba\u03b1\u03b9 \u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac + \u0391\u03c4\u03bc\u03cc\u03c2", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "\u039f\u03bb\u03b9\u03ba\u03ae \u03c6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1", + "tumbling": "\u039a\u03b1\u03c4\u03c1\u03b1\u03ba\u03cd\u03bb\u03b9\u03c3\u03bc\u03b1", + "wool": "\u039c\u03ac\u03bb\u03bb\u03b9\u03bd\u03b1", + "wool_and_delicates_49": "\u03bc\u03b1\u03bb\u03bb\u03b9\u03bd\u03b1/\u03b5\u03c5\u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03b1 49'", + "wool_dry": "\u039c\u03ac\u03bb\u03bb\u03b9\u03bd\u03b1 \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", + "wool_soft_care": "\u03bc\u03b1\u03bb\u03bb\u03b9\u03bd\u03b1 & Soft Care" + } + } } } } \ No newline at end of file diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index affd77c..f544d66 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -150,7 +150,346 @@ } }, "select": { - "programs": { + "programs_dw": { + "state": { + "59_min": "Rapid 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_hygiene": "Auto Hygiene", + "auto_plus": "AutoPlus", + "auto_rapid": "Auto Rapid", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "Auto Universal 50 - 60\u00b0C", + "auto_universal_plus": "Auto Universal+ 65 - 75\u00b0C", + "auto_universal_plus_soil": "Auto Universal+ 65 - 75\u00b0C", + "auto_universal_soil": "Auto Universal 50 - 60\u00b0C", + "auto_wash": "Auto Wash", + "auto_wash_soil": "Auto Wash", + "classe_a_59": "A Wash 59' 65\u00b0C", + "delicate": "Delicate 45\u00b0C", + "dishwasher_care": "Limescale cleaning", + "eco": "Eco", + "eco_asynch": "Eco 45\u00b0C", + "eco_bldc": "Eco 45\u00b0C", + "eco_synch": "Eco 45\u00b0C", + "gentle_wash": "Gentle wash", + "glass": "Glass", + "glass _care": "Glass Care", + "glassware": "Glassware 45\u00b0C", + "glass_care": "Glass Care", + "hygiene": "Hygiene", + "hygiene_plus": "Hygiene+ 75\u00b0C", + "intensive": "Intensive ", + "intensive_rapid": "Intensive Rapid", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "Auto Universal 50 - 60\u00b0C", + "iot_auto_wash_soil": "Auto Wash", + "iot_baby_care": "Baby Care", + "iot_breakfast": "Breakfast", + "iot_checkup": "Check-Up", + "iot_china_crystals": "China Crystals", + "iot_classe_a_59": "Rapid 59'", + "iot_cocktail_glasses": "Coktail Glasses", + "iot_cocktail_glasses_soil": "Coktail Glasses", + "iot_daily_care": "Daily Care", + "iot_daily_care_soil": "Daily Care", + "iot_delicate": "Delicate 45\u00b0C", + "iot_dinner_for_two": "Dinner for 2", + "iot_dinner_for_two_soil": "Dinner for 2", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "Eco 45\u00b0C", + "iot_eco_bldc": "Eco 45\u00b0C", + "iot_eco_synch": "Eco 45\u00b0C", + "iot_extra_hygiene": "Extra Hygiene", + "iot_fairy_quick_cycle": "Fairy Short", + "iot_happy_hour": "Happy Hour", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "Party", + "iot_party_soil": "Party", + "iot_pizza_menu": "Pizza Menu", + "iot_pizza_menu_soil": "Pizza Menu", + "iot_plastic_tupperware": "Plastic & Tupperware", + "iot_porcelain": "Porcelain", + "iot_pot_&_pans": "Pot & Pans", + "iot_pot_&_pans_soil": "Pot & Pans", + "iot_power_mix_wash": "Power Mix Wash", + "iot_power_mix_wash_soil": "Power Mix Wash", + "iot_prewash": "Pre-wash ", + "iot_pyrex_and_glassware": "Pyrex & Glassware", + "iot_rapid_29": "Rapid 29'", + "iot_rapid_39": "Rapid 39' 60\u00b0C", + "iot_single": "Single", + "iot_steam": "Steam 75\u00b0C", + "iot_super_flash": "Super Flash", + "iot_super_wash": "Super Wash", + "iot_turbopower": "TurboPower", + "iot_universal": "Universal 60\u00b0C", + "iot_wok_grids_maxi_pans": "Special Pans (Wok, Grids & Maxi Pans)", + "iot_wok_grids_maxi_pans_soil": "Special Pans (Wok, Grids & Maxi Pans)", + "iot_yes_quick_cycle": "Yes Quick", + "night": "Night 55\u00b0C", + "prewash": "Pre-wash ", + "rapid_20": "Rapid 20'", + "rapid_24": "Rapid 24'", + "rapid_29": "Rapid 29' 50\u00b0C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "Rapid 39' 60\u00b0C", + "rapid_49": "Rapid 49'", + "rapid_59": "Rapid 59'", + "sanitising": "Sanitising", + "silence": "Silence", + "silent": "Silent", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "special": "Special", + "special_pw_prz": "Special", + "steam": "Steam 75\u00b0C", + "steam_plus": "Steam Plus 75\u00b0C", + "total_care": "Total Care 50\u00b0C", + "ultra_silence": "Ultra Silence 55\u00b0C", + "ultra_silent": "Ultra Silent 55\u00b0C", + "universal": "Universal 60\u00b0C", + "universal_plus": "Universal Plus 70\u00b0C", + "zone_wash": "Flex Zone Wash", + "zoom_39": "Zoom 39 min" + } + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "Ash brown", + "iot_special_beef_fillet": "Beef fillet", + "iot_special_beef_veal_stew": "Beef and veal stew", + "iot_special_boiled_rice": "Boiled rice", + "iot_special_chicken_breast": "Chicken breast", + "iot_special_chicken_legs": "Chicken legs", + "iot_special_chocolate_pudding": "Chocolate pudding", + "iot_special_entrecote": "Entrecote", + "iot_special_fresh_tuna": "Fresh tuna", + "iot_special_grilled_vegetables": "Grilled vegetables", + "iot_special_lamb_cutlet": "Lamb cutle", + "iot_special_meatballs": "Meatballs", + "iot_special_minestrone": "Minestrone", + "iot_special_mussels": "Mussels", + "iot_special_omelette": "Omelette", + "iot_special_pancakes": "Pancakes", + "iot_special_paris_style_peas": "Paris style peas", + "iot_special_poached_eggs": "Poached eggs", + "iot_special_pork_fillet": "Pork fillet", + "iot_special_pork_ribs": "Pork ribs", + "iot_special_prawns": "Prawns", + "iot_special_quinoa": "Quinoa", + "iot_special_ratatouille": "Ratatouille", + "iot_special_salmon_fillet": "Salmon fillet", + "iot_special_saute_potatoes": "Saute potatoes", + "iot_special_scallops": "Scallops", + "iot_special_scrambled_eggs": "Scrambled eggs", + "iot_special_spelt": "Spelt", + "iot_special_veggy_noodles": "Veggy noodles", + "iot_special_white_fish_fillet": "White fish fillet", + "iot_standard_boiling": "Boiling", + "iot_standard_frying": "Frying", + "iot_standard_keep_warm": "Keep Warm", + "iot_standard_melting": "Melting", + "iot_standard_simmering": "Simmering" + } + }, + "programs_ov": { + "state": { + "bakery": "Pasta and Pastries", + "bakery_steam": "Steam-baked bread", + "bottom_heating": "Bottom Heating", + "bottom_heating_fan": "Bottom Heating + Fan", + "bread": "Bread", + "bread_steam": "Steam-baked pastries", + "combi": "Combi", + "convection_fan": "Convection + Fan", + "convection_fan_turnspit": "Convection + Fan + Turnspit", + "conventional": "Conventional", + "conventional_turnspit": "Convection + Turnspit", + "defrost": "Defrost", + "descaling": "Descaling", + "fish": "Fish", + "fish_steam": "Steam-cooked fish", + "grill_cata": "Grill", + "grill_fan_cata": "Grill fan", + "grill_fan_pyro": "Grill + Fan", + "grill_pyro": "Grill", + "h20_clean": "H2O-Clean", + "iot_bread": "Bread", + "iot_h20_clean": "h2O clean", + "leavening": "Leavening", + "light_fan": "Light Fan", + "low_temp_cooking": "Low Temperature Cooking", + "low_temp_cooking_fish": "Low Temperature Cooking - Fish", + "low_temp_cooking_fish_steam": "Low Temperature Steam Cooking - Fish", + "low_temp_cooking_meat": "Low Temperature Cooking - Meat", + "low_temp_cooking_meat_steam": "Low Temperature Steam Cooking - Meat", + "low_temp_cooking_steam": "Low Temperature Steam Cooking", + "meat": "Meat", + "meat_steam": "Steam-cooked meat", + "multi_level": "Multi-Level", + "paella": "Paella", + "pasta_and_bakery": "Pasta and Bakery", + "pizza": "Pizza", + "pyrolysis": "Pyrolysis", + "pyrolysis_plus": "Pyrolysis +", + "red_meat": "Red Meat", + "red_meat_steam": "Steam-cooked red meat", + "regenerate": "Regeneration", + "soft_plus": "Soft+", + "super_grill": "Super Grill", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_desctiption": "This function is ideal to keep food soft inside and crunchy outside. This function reduces the amount of fat or oil required, for a healthy diet. The combination of heating elements with a pulsating cycle of air ensures even baking results.", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Vegetables", + "vegetables_cata": "Vegetables", + "vegetables_pyro": "Vegetables", + "water_discharge": "Water Drain", + "white_meat": "White Meat", + "white_meat_steam": "Steam-cooked white meat" + } + }, + "programs_td": { + "state": { + "active_dry": "Active Dry", + "allergy_care": "Anti-allergy", + "all_in_one": "All in One", + "antiallergy": "Anti-allergy", + "anti_odours": "Anti-odours", + "auto_care": "Auto Care", + "baby": "Baby", + "bed_quilt": "Bed Quilt", + "care_30": "Care 30", + "care_45": "Care 45", + "care_59": "Care 59", + "coloured": "Colored", + "daily_45_min": "Daily 45'", + "daily_perfect_59_min": "Daily Perfect 59'", + "darks_and_coloured": "Darks & Colored", + "delicates": "Delicates", + "duvet": "Duvet", + "eco": "Eco Cotton", + "ecospeed_cottons": "Ecospeed Cottons", + "ecospeed_delicates": "Ecospeed Delicates", + "ecospeed_mixed": "Ecospeed Mixed", + "extra_hygiene": "Extra Hygiene", + "fitness": "Fitness", + "fresh_care": "Fresh Care", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Towels", + "hqd_bed_sheets": "Bed Sheets", + "hqd_bulky": "Bulky Items", + "hqd_casual": "Casual", + "hqd_cold_wind_30": "Cool Breeze 30 minutes", + "hqd_cold_wind_timing": "Cool Breeze ", + "hqd_cotton": "Cotton", + "hqd_curtain": "Curtains", + "hqd_delicate": "Delicates", + "hqd_diaper": "Diapers", + "hqd_duvet": "Duvet", + "hqd_feather": "Down Jackets", + "hqd_hot_wind_timing": "Hot Air", + "hqd_hygienic": "Hygienising", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Jackets", + "hqd_jeans": "Jeans", + "hqd_luxury": "Luxury", + "hqd_mix": "Mixed", + "hqd_night_dry": "Overnight drying", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious Cure", + "hqd_quick_20": "Quick 20", + "hqd_quick_30": "Quick 30", + "hqd_quick_dry": "Quick dry", + "hqd_quilt": "Quilts", + "hqd_refresh": "Refresh", + "hqd_school_uniform": "School Uniform", + "hqd_shirt": "Shirts", + "hqd_shoes": "Shoes", + "hqd_silk": "Silk", + "hqd_sports": "Sports", + "hqd_synthetics": "Synthetics", + "hqd_timer": "Timed", + "hqd_towel": "Towels", + "hqd_underwear": "Underwear", + "hqd_warm_up": "Warm up", + "hqd_wool": "Wool", + "hqd_working_suit": "Workwear", + "hygiene": "Hygiene", + "iot_checkup": "Check-Up", + "iot_dry_anti_mites": "Anti-mites", + "iot_dry_baby": "Baby", + "iot_dry_backpacks": "Backpacks", + "iot_dry_bathrobe": "Bathrobe", + "iot_dry_bed_linen": "Bed Linen", + "iot_dry_bed_quilt": "Bed Quilt", + "iot_dry_cotton": "Cotton", + "iot_dry_cuddly_toys": "Cuddly Toys", + "iot_dry_curtains": "Curtains", + "iot_dry_dehumidifier": "Humidity Remover", + "iot_dry_delicates": "Delicates", + "iot_dry_delicate_tablecloths": "Delicate Tablecloths", + "iot_dry_denim_jeans": "Denim - Jeans", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Duvet", + "iot_dry_easy_iron_cotton": "Super Easy Iron", + "iot_dry_easy_iron_synthetics": "Super Easy Iron Synthetics", + "iot_dry_gym_fit": "Gym fit - Fitness", + "iot_dry_lingerie": "Lingerie", + "iot_dry_mixed": "Mixed", + "iot_dry_playsuits": "Playsuits", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Rapid 59'", + "iot_dry_refresh": "Refresh", + "iot_dry_regenerates_waterproof": "Regenerates Waterproof", + "iot_dry_relax_creases": "Relax Creases", + "iot_dry_shirts": "Shirts", + "iot_dry_small_load": "Small Load", + "iot_dry_swimsuits_and_bikinis": "Swimsuits and Bikinis", + "iot_dry_synthetics": "Synthetics", + "iot_dry_synthetic_dry": "Synthetic Dry", + "iot_dry_tablecloths": "Tablecloths", + "iot_dry_technical_fabrics": "Technical Fabrics", + "iot_dry_warm_embrace": "Warm Embrace", + "iot_dry_wool": "Wool", + "jeans": "Jeans", + "mix_and_dry": "Mix&Dry", + "pets": "Pets", + "pre_iron": "Pre-Iron", + "rapid_30": "Rapid 30", + "rapid_45": "Rapid 45 min", + "rapid_59": "Perfect Rapid 59 Min", + "refresh": "Refresh", + "relax_creases": "Relax Creases", + "saving_30_min": "Saving 30'", + "shirts": "Shirts", + "shoes": "Shoes", + "small_load": "Small Load", + "soft_care": "Soft Care", + "sport_plus": "Sport Plus", + "super_easy_iron_misti": "Super Easy Iron Mixed", + "super_easy_iron_xxl": "Super Easy Iron XXL", + "super_fast_cottons": "Super Fast Cottons", + "super_fast_delicates": "Super Fast Delicates", + "synthetics": "Syntethics", + "total_care": "Total Care", + "trainers": "Trainers", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Waterproof Revitalize", + "whites": "Whites", + "wool": "Dry Wool", + "woolmark": "Wool", + "xxl_load": "XXL Load", + "zoom_59": "Zoom 59" + } + }, + "programs_wm": { "state": { "20_degrees_coloured_cottons": "20\u00b0 Colored and Cottons", "20_degrees_new_energy_label": "20\u00b0C", @@ -194,74 +533,46 @@ "hqd_allergy": "Allergy Care", "hqd_autoclean": "Drum Cleaning", "hqd_babycare": "Baby Care", - "hqd_baby_care": "Baby care", - "hqd_bath_towel": "Bath towel", - "hqd_bed_sheets": "Bed sheets", - "hqd_bulky": "Bulky", - "hqd_casual": "Casual", "hqd_checkup": "Check-Up", - "hqd_cold_wind_30": "Cold wind 30'", - "hqd_cold_wind_timing": "Cold wind timing", - "hqd_cotton": "Cotton", "hqd_cottons": "Cotton", - "hqd_curtain": "Curtain", "hqd_delicate": "Delicate", "hqd_delicate_cradle": "Delicate", - "hqd_diaper": "Diaper", "hqd_dry": "Cotton Dry", "hqd_dry_synthetics": "Low Heat Dry", "hqd_duvet": "Duvet", "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_feather": "Feather", "hqd_handwash_wool": "Wool", - "hqd_hot_wind_timing": "Hot wind timing", - "hqd_hygienic": "Hygienic", "hqd_i_refresh": "i-Refresh", - "hqd_i_refresh_pro": "i-Refresh Pro", - "hqd_jacket": "Jacket", - "hqd_jeans": "Jeans", - "hqd_luxury": "Luxury", "hqd_mix": "Mix", - "hqd_night_dry": "Night dry", - "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", "hqd_quick_15": "Quick 15'", - "hqd_quick_20": "Quick 20'", - "hqd_quick_30": "Quick 30'", - "hqd_quick_dry": "Quick dry", "hqd_quick_wash_57": "Quick Wash 57'", - "hqd_quilt": "Quilt", "hqd_rapid_wash_and_dry": "Wash and dry", "hqd_refresh": "Refresh", "hqd_rinse": "Rinses", - "hqd_school_uniform": "School uniform", - "hqd_shirt": "Shirt", "hqd_shirts": "Shirts", - "hqd_shoes": "Shoes", - "hqd_silk": "Silk", "hqd_smart": "Smart A.I.", "hqd_spin": "Spin", "hqd_sport": "Sport", - "hqd_sports": "Sports", "hqd_super_fast": "Super Fast 39'", "hqd_synthetic_and_coloured": "Synthetics", - "hqd_synthetics": "Synthetics", - "hqd_timer": "Timer", - "hqd_towel": "Towel", - "hqd_underwear": "Underwear", - "hqd_warm_up": "Warm up", - "hqd_wool": "Wool", - "hqd_working_suit": "Working suit", "hygiene_59": "Hygiene Plus 59'", "hygiene_60": "Hygiene 60\u00b0C", "hygiene_plus_59": "Hygiene Plus 59'", "hygiene_plus_59_min": "Hygiene Plus 59'", - "hygiene_pro_4_min": "Hygiene Pro 49'", + "hygiene_pro _49_min": "Hygiene Pro 49'", "hygiene_pro_49_min": "Hygiene Pro 49'", "hygiene_pro_steam": "Hygiene Pro + Steam", "intensive_40": "Intensive 40\u00b0C", "intensive_40_steam": "Intensive 40\u00b0C + Steam", + "iot_active_steam": "Steam", + "iot_active_wash_steam": "Active Wash + Steam", + "iot_allergy_care_pro": "Allergy Care Pro", + "iot_all_in_one_59_steam": "Active Wash + Steam", "iot_checkup": "Check-Up", + "iot_colour_59_steam": "Colored 59' + Steam", + "iot_cottons_steam": "Cotton + Steam", + "iot_delicate_silk_steam": "Delicate and Silk + Steam", + "iot_delicati_59_steam": "Delicate 59' + Steam", "iot_dry_air_refresh": "Air Refresh", "iot_dry_anti_mites": "Anti-mite", "iot_dry_baby": "Baby", @@ -269,24 +580,17 @@ "iot_dry_bathrobe": "Bathrobes", "iot_dry_bed_linen": "Bed Linen", "iot_dry_cotton_dry": "Cotton Dry", - "iot_dry_cotton": "Cotton", "iot_dry_cuddly_toys": "Cuddly Toys", "iot_dry_curtains": "Curtains", "iot_dry_dehumidifier": "Humidity Remover", - "iot_dry_delicates": "Delicates", "iot_dry_delicates_antiallergy": "Delicates Anti-allergy", "iot_dry_delicate_tablecloths": "Delicate Tablecloths", "iot_dry_denim_jeans": "Denim - Jeans", - "iot_dry_down_jacket": "Down jacket", - "iot_dry_duvet": "Duvet", "iot_dry_easy_iron_cotton": "Easy Iron - Cotton", "iot_dry_easy_iron_synthetics": "Easy Iron - Synthetics", "iot_dry_gym_fit": "Gym fit - Fitness", "iot_dry_lingerie": "Lingerie", - "iot_dry_mixed": "Mixed", "iot_dry_mixed_dry": "Mixed Dry", - "iot_dry_rapid_30": "Rapid 30'", - "iot_dry_rapid_59": "Rapid 59'", "iot_dry_rapid_60_min_delicates": "Rapid 60' - Delicates", "iot_dry_shirts": "Shirts", "iot_dry_swimsuits_and_bikinis": "Swimsuits and Bikinis", @@ -295,8 +599,23 @@ "iot_dry_tablecloths": "Tablecloths", "iot_dry_technical_fabrics": "Technical Fabrics", "iot_dry_warm_embrace": "Warm Embrace", - "iot_dry_wool": "Wool", "iot_dry_wool_dry": "Wool Dry", + "iot_easy_iron": "Easy Iron", + "iot_fresh_care_steam": "Fresh Care + Steam", + "iot_hygiene_pro_steam": "Hygiene Pro + Steam", + "iot_intensive_40_steam": "Intensive 40\u00b0C + Steam", + "iot_mixed_steam": "Mixed + Steam", + "iot_mix_and_colour_59_steam": "Mixed and Coloured 59' + Steam", + "iot_perfect_cotton_59_steam": "Perfect Cotton 59' + Steam", + "iot_rapid_a_class_60_steam": "Rapid 59' A Class + Steam", + "iot_resistant_cotton_steam": "Resistant Cotton + Steam", + "iot_shirts_steam": "Shirts + Steam", + "iot_single_item_steam": "Single Item + Steam", + "iot_smart_wash": "Smart Wash", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "Special 39' + Steam", + "iot_steam_hygiene_plus": "Hygiene Plus + Steam", + "iot_synthetic_and_coloured_steam": "Synthetic and Coloured + Steam", "iot_wash_and_dry": "Wash and dry", "iot_wash_anti_mites": "Anti-mites", "iot_wash_anti_odor": "Anti-odour", @@ -459,7 +778,7 @@ "special_39_full_load_steam": "Special 39' + Steam", "special_49": "Special 49'", "sport_39": "Sport 39'", - "sport_plus_29": "Sport Plus 29'", + "sport_plus_29": "Sport Plus 29\"", "sport_plus_39": "Sport Plus 39'", "steam_39": "Steam 39'", "steam_care_pro": "Steam Care Pro", @@ -470,177 +789,14 @@ "synthetics": "Synthetics", "synthetic_and_coloured": "Synthetic and Colored", "synthetic_and_coloured_steam": "Synthetic and Coloured + Steam", - "tailored_resistant_cotton": "Tailored Resistant Cotton", - "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "tailored_resistant_cotton": "Tailored resistant cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Coloured", "total_care": "Total Care", "tumbling": "Tumbling", "wool": "Wool", "wool_and_delicates_49": "Wool and Delicates 49'", "wool_dry": "Wool Dry", - "wool_soft_care": "Wool and Soft Car", - "bakery": "Pasta and Pastries", - "bakery_steam": "Steam-baked bread", - "bottom_heating": "Bottom Heating", - "bottom_heating_fan": "Bottom Heating + Fan", - "bread": "Bread", - "bread_steam": "Steam-baked pastries", - "combi": "Combi", - "convection_fan": "Convection + Fan", - "convection_fan_turnspit": "Convection + Fan + Turnspit", - "conventional": "Conventional", - "conventional_turnspit": "Convection + Turnspit", - "defrost": "Defrost", - "descaling": "Descaling", - "fish": "Fish", - "fish_steam": "Steam-cooked fish", - "grill_cata": "Grill", - "grill_fan_cata": "Grill fan", - "grill_fan_pyro": "Grill + Fan", - "grill_pyro": "Grill", - "h20_clean": "H2O-Clean", - "iot_bread": "Bread", - "iot_h20_clean": "h2O clean", - "leavening": "Leavening", - "light_fan": "Light Fan", - "low_temp_cooking": "Low Temperature Cooking", - "low_temp_cooking_fish": "Low Temperature Cooking - Fish", - "low_temp_cooking_fish_steam": "Low Temperature Steam Cooking - Fish", - "low_temp_cooking_meat": "Low Temperature Cooking - Meat", - "low_temp_cooking_meat_steam": "Low Temperature Steam Cooking - Meat", - "low_temp_cooking_steam": "Low Temperature Steam Cooking", - "meat": "Meat", - "meat_steam": "Steam-cooked meat", - "multi_level": "Multi-Level", - "paella": "Paella", - "pasta_and_bakery": "Pasta and Bakery", - "pizza": "Pizza", - "pyrolysis": "Pyrolysis", - "pyrolysis_plus": "Pyrolysis +", - "red_meat": "Red Meat", - "red_meat_steam": "Steam-cooked red meat", - "regenerate": "Regeneration", - "soft_plus": "Soft+", - "super_grill": "Super Grill", - "tailor_bake": "Tailor bake", - "tailor_bake_cata": "Tailor Bake", - "tailor_bake_pyro": "Tailor Bake", - "vegetables": "Vegetables", - "vegetables_cata": "Vegetables", - "vegetables_pyro": "Vegetables", - "water_discharge": "Water Drain", - "white_meat": "White Meat", - "white_meat_steam": "Steam-cooked white meat", - "iot_standard_boiling": "Boiling", - "iot_standard_frying": "Frying", - "iot_standard_keep_warm": "Keep Warm", - "iot_standard_melting": "Melting", - "iot_standard_simmering": "Simmering" - } - }, - "programs_dw": { - "state": { - "59_min": "Rapid 59'", - "auto_care": "Auto Care", - "auto_care_soil": "Auto Care", - "auto_hygiene": "Auto Hygiene", - "auto_plus": "AutoPlus", - "auto_rapid": "Auto Rapid", - "auto_sensor": "Auto Sensor", - "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Auto Universal 50 - 60\u00b0C", - "auto_universal_plus": "Auto Universal+ 65 - 75\u00b0C", - "auto_universal_plus_soil": "Auto Universal+ 65 - 75\u00b0C", - "auto_universal_soil": "Auto Universal 50 - 60\u00b0C", - "auto_wash": "Auto Wash", - "auto_wash_soil": "Auto Wash", - "classe_a_59": "A Wash 59' 65\u00b0C", - "delicate": "Delicate 45\u00b0C", - "dishwasher_care": "Limescale cleaning", - "eco": "Eco", - "eco_asynch": "Eco 45\u00b0C", - "eco_bldc": "Eco 45\u00b0C", - "eco_synch": "Eco 45\u00b0C", - "gentle_wash": "Gentle wash", - "glass": "Glass", - "glassware": "Glassware 45\u00b0C", - "glass_care": "Glass Care", - "hygiene": "Hygiene", - "hygiene_plus": "Hygiene+ 75\u00b0C", - "intensive": "Intensive", - "intensive_rapid": "Intensive Rapid", - "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Auto Universal 50 - 60\u00b0C", - "iot_auto_wash_soil": "Auto Wash", - "iot_baby_care": "Baby Care", - "iot_breakfast": "Breakfast", - "iot_checkup": "Check-Up", - "iot_china_crystals": "China Crystals", - "iot_classe_a_59": "Rapid 59'", - "iot_cocktail_glasses": "Coktail Glasses", - "iot_cocktail_glasses_soil": "Coktail Glasses", - "iot_daily_care": "Daily Care", - "iot_daily_care_soil": "Daily Care", - "iot_delicate": "Delicate 45\u00b0C", - "iot_dinner_for_two": "Dinner for 2", - "iot_dinner_for_two_soil": "Dinner for 2", - "iot_dreft_quick_cycle": "Dreft Quick", - "iot_eco_asynch": "Eco 45\u00b0C", - "iot_eco_bldc": "Eco 45\u00b0C", - "iot_eco_synch": "Eco 45\u00b0C", - "iot_extra_hygiene": "Extra Hygiene", - "iot_fairy_quick_cycle": "Fairy Short", - "iot_happy_hour": "Happy Hour", - "iot_jar_quick_cycle": "Jar Quick", - "iot_party": "Party", - "iot_party_soil": "Party", - "iot_pizza_menu": "Pizza Menu", - "iot_pizza_menu_soil": "Pizza Menu", - "iot_plastic_tupperware": "Plastic & Tupperware", - "iot_porcelain": "Porcelain", - "iot_pot_and_pans": "Pot & Pans", - "iot_pot_and_pans_soil": "Pot & Pans", - "iot_power_mix_wash": "Power Mix Wash", - "iot_power_mix_wash_soil": "Power Mix Wash", - "iot_prewash": "Pre-wash", - "iot_pyrex_and_glassware": "Pyrex & Glassware", - "iot_rapid_29": "Rapid 29'", - "iot_rapid_39": "Rapid 39' 60\u00b0C", - "iot_single": "Single", - "iot_steam": "Steam 75\u00b0C", - "iot_super_flash": "Super Flash", - "iot_super_wash": "Super Wash", - "iot_turbopower": "TurboPower", - "iot_universal": "Universal 60\u00b0C", - "iot_wok_grids_maxi_pans": "Special Pans (Wok, Grids & Maxi Pans)", - "iot_wok_grids_maxi_pans_soil": "Special Pans (Wok, Grids & Maxi Pans)", - "iot_yes_quick_cycle": "Yes Quick", - "night": "Night 55\u00b0C", - "prewash": "Pre-wash", - "rapid_20": "Rapid 20'", - "rapid_24": "Rapid 24'", - "rapid_29": "Rapid 29' 50\u00b0C", - "rapid_35": "Wash&Dry 35'", - "rapid_39": "Rapid 39' 60\u00b0C", - "rapid_49": "Rapid 49'", - "rapid_59": "Rapid 59'", - "sanitising": "Sanitising", - "silence": "Silence", - "silent": "Silent", - "silent_care": "Silent Care", - "smart_ai": "Smart AI", - "smart_ai_pro": "Smart AI Pro", - "smart_ai_rapid": "Smart AI Rapid", - "special": "Special", - "special_pw_prz": "Special", - "steam": "Steam 75\u00b0C", - "steam_plus": "Steam Plus 75\u00b0C", - "total_care": "Total Care 50\u00b0C", - "ultra_silence": "Ultra Silence 55\u00b0C", - "ultra_silent": "Ultra Silent 55\u00b0C", - "universal": "Universal 60\u00b0C", - "universal_plus": "Universal Plus 70\u00b0C", - "zone_wash": "Flex Zone Wash", - "zoom_39": "Zoom 39 min" + "wool_soft_care": "Wool and Soft Care" } } } diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index b260a56..dd3051c 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -66,6 +66,650 @@ "6": "Hot rinse" } } + }, + "select": { + "programs_dw": { + "state": { + "59_min": "R\u00e1pido 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "Auto Universal 50 - 60\u00b0C", + "auto_universal_plus": "Auto Universal Plus 65 - 75\u00b0C", + "auto_universal_plus_soil": "Auto Universal Plus 65 - 75\u00b0C", + "auto_universal_soil": "Auto Universal 50 - 60\u00b0C", + "auto_wash": "Lavado autom\u00e1tico", + "auto_wash_soil": "Lavado autom\u00e1tico", + "classe_a_59": "Clase A 59' 65\u00b0C", + "delicate": "Delicado 45\u00b0C", + "dishwasher_care": "Ciclo de limpieza antical", + "eco": "Eco", + "eco_asynch": "Eco 45\u00b0C", + "eco_bldc": "Eco 45\u00b0C", + "eco_synch": "Eco 45\u00b0C", + "gentle_wash": "Gentle wash", + "glass": "Cristal", + "glass _care": "Glass Care", + "glassware": "Cristal 45 \u00b0C", + "glass_care": "Glass Care", + "hygiene": "Higiene", + "hygiene_plus": "Higiene+ 75 \u00b0C", + "intensive": "Intensivo ", + "intensive_rapid": "Fuerte r\u00e1pido", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "Auto Universal 50 - 60\u00b0C", + "iot_auto_wash_soil": "Lavado autom\u00e1tico", + "iot_baby_care": "Baby Care", + "iot_breakfast": "Desayuno", + "iot_checkup": "Revisi\u00f3n", + "iot_china_crystals": "Cristal", + "iot_classe_a_59": "R\u00e1pido 59'", + "iot_cocktail_glasses": "Copas de c\u00f3ctel", + "iot_cocktail_glasses_soil": "Copas de c\u00f3ctel", + "iot_daily_care": "Diario", + "iot_daily_care_soil": "Diario", + "iot_delicate": "Delicado 45\u00b0C", + "iot_dinner_for_two": "Cena para 2", + "iot_dinner_for_two_soil": "Cena para 2", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "Eco 45\u00b0C", + "iot_eco_bldc": "Eco 45\u00b0C", + "iot_eco_synch": "Eco 45\u00b0C", + "iot_extra_hygiene": "Ciclo Higienizante", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "Happy Hour", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "Party", + "iot_party_soil": "Party", + "iot_pizza_menu": "Pizza Men\u00fa", + "iot_pizza_menu_soil": "Pizza Men\u00fa", + "iot_plastic_tupperware": "Pl\u00e1stico y Tupperware", + "iot_porcelain": "Porcelana", + "iot_pot_&_pans": "Ollas y Sartenes", + "iot_pot_&_pans_soil": "Ollas y Sartenes", + "iot_power_mix_wash": "Power Mix Wash", + "iot_power_mix_wash_soil": "Power Mix Wash", + "iot_prewash": "Pre-lavado", + "iot_pyrex_and_glassware": "Pyrex & Glassware", + "iot_rapid_29": "Rapido 29'", + "iot_rapid_39": "R\u00e1pido 39' 60\u00b0C", + "iot_single": "Solo para 1", + "iot_steam": "Vapor 75 \u00b0C", + "iot_super_flash": "Super Flash", + "iot_super_wash": "Lavado Super", + "iot_turbopower": "TurboPower", + "iot_universal": "Universal 60 \u00b0C", + "iot_wok_grids_maxi_pans": "Especial Ollas (Wok - Parrilas y Ollas)", + "iot_wok_grids_maxi_pans_soil": "Especial Ollas (Wok - Parrilas y Ollas)", + "iot_yes_quick_cycle": "Yes Quick", + "night": "Ultra Silencioso 55\u00b0C", + "prewash": "Pre-lavado", + "rapid_20": "R\u00e1pido 20'", + "rapid_24": "Rapido 24'", + "rapid_29": "Rapido 29' 50\u00b0C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "R\u00e1pido 39' 60\u00b0C", + "rapid_49": "R\u00e1pido 49'", + "rapid_59": "R\u00e1pido 59'", + "sanitising": "Higienizante", + "silence": "Silence", + "silent": "Noche", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "special": "Especial", + "special_pw_prz": "Especial", + "steam": "Vapor 75 \u00b0C", + "steam_plus": "Vapor Plus 75 \u00b0C", + "total_care": "Total Care 50\u00b0C", + "ultra_silence": "Ultra Silencioso 55\u00b0C", + "ultra_silent": "Ultra Silencioso 55\u00b0C", + "universal": "Universal 60 \u00b0C", + "universal_plus": "Universal Plus 70 \u00b0C", + "zoom_39": "Zoom 39 min" + } + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "Hash Brown", + "iot_special_beef_fillet": "Filete de ternera", + "iot_special_beef_veal_stew": "Estofado de carne de vacuno", + "iot_special_boiled_rice": "Arroz hervido", + "iot_special_chicken_breast": "Pechuga de pollo", + "iot_special_chicken_legs": "Muslos de pollo", + "iot_special_chocolate_pudding": "Pud\u00edn de chocolate", + "iot_special_entrecote": "Entrecot", + "iot_special_fresh_tuna": "At\u00fan fresco", + "iot_special_grilled_vegetables": "Verduras a la parrilla", + "iot_special_lamb_cutlet": "Chuletillas de cordero", + "iot_special_meatballs": "Alb\u00f3ndigas", + "iot_special_minestrone": "Minestrone", + "iot_special_mussels": "Mejillones", + "iot_special_omelette": "Tortilla", + "iot_special_pancakes": "Tortitas", + "iot_special_paris_style_peas": "Guisantes al estilo parisino", + "iot_special_poached_eggs": "Huevos escalfados", + "iot_special_pork_fillet": "Solomillo de cerdo", + "iot_special_pork_ribs": "Costillas de cerdo", + "iot_special_prawns": "Gambas", + "iot_special_quinoa": "Quinoa", + "iot_special_ratatouille": "Pisto", + "iot_special_salmon_fillet": "Filete de salm\u00f3n", + "iot_special_saute_potatoes": "Patatas salteadas", + "iot_special_scallops": "Vieiras", + "iot_special_scrambled_eggs": "Huevos revueltos", + "iot_special_spelt": "Espelta", + "iot_special_veggy_noodles": "Fideos con verdura", + "iot_special_white_fish_fillet": "Filete de pescado blanco", + "iot_standard_boiling": "Hervir", + "iot_standard_frying": "Fre\u00edr", + "iot_standard_keep_warm": "Keep Warm", + "iot_standard_melting": "Fundir", + "iot_standard_simmering": "Cocer a fuego lento" + } + }, + "programs_ov": { + "state": { + "bakery": "Pasta y Panader\u00eda", + "bakery_steam": "Pan al vapor", + "bottom_heating": "Calentamiento Inferior", + "bottom_heating_fan": "Calentamiento Inferior + Ventilador", + "bread": "Pan", + "bread_steam": "Boller\u00eda al vapor", + "convection_fan": "Convecci\u00f3n + Ventilador", + "convection_fan_turnspit": "Convecci\u00f3n + Ventilador + Rustepollos", + "conventional": "Convecci\u00f3n", + "conventional_turnspit": "Convecci\u00f3n + Rustepollos", + "defrost": "Descongelaci\u00f3n", + "descaling": "Descalcificaci\u00f3n", + "fish": "Pescado", + "fish_steam": "Pescado al vapor", + "grill_cata": "Grill", + "grill_fan_cata": "Grill y ventilador", + "grill_fan_pyro": "Grill + Ventilador", + "grill_pyro": "Grill", + "h20_clean": "H2O-Clean", + "iot_bread": "Pan", + "iot_h20_clean": "h2O clean", + "leavening": "Fermentaci\u00f3n", + "low_temp_cooking": "Cocci\u00f3n a baja temperatura", + "low_temp_cooking_fish": "Cocci\u00f3n a baja temperatura - Pescado", + "low_temp_cooking_fish_steam": "Cocci\u00f3n al vapor a baja temperatura - Pescado", + "low_temp_cooking_meat": "Cocci\u00f3n a baja temperatura - Carne", + "low_temp_cooking_meat_steam": "Cocci\u00f3n al vapor a baja temperatura - Carne", + "low_temp_cooking_steam": "Cocci\u00f3n al vapor a baja temperatura", + "meat": "Carne", + "meat_steam": "Carne al vapor", + "multi_level": "M\u00faltiples niveles", + "paella": "Paella", + "pasta_and_bakery": "Pasta y Panader\u00eda", + "pizza": "Pizza", + "pyrolysis": "Pir\u00f3lisis", + "pyrolysis_plus": "Pir\u00f3lisis +", + "red_meat": "Carne roja", + "red_meat_steam": "Carne roja al vapor", + "regenerate": "Regeneraci\u00f3n", + "soft_plus": "Soft+", + "super_grill": "Super Grill", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_desctiption": "Esta funci\u00f3n es ideal para mantener la comida blanda por dentro y crujiente por fuera.\r\r\r\nEsta funci\u00f3n reduce la cantidad de grasa o aceite requeridos, para una dieta saludable.\r\r\r\nLa combinaci\u00f3n de elementos de calentamiento con un ciclo de aire intermitente garantiza un horneado uniforme.", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Verduras", + "vegetables_cata": "Verduras", + "vegetables_pyro": "Verdura", + "water_discharge": "Drenaje del agua", + "white_meat": "Carne blanca", + "white_meat_steam": "Carne blanca al vapor" + } + }, + "programs_td": { + "state": { + "active_dry": "Secado activo", + "allergy_care": "Antialerg\u00e9nico", + "all_in_one": "All in One", + "antiallergy": "Antialerg\u00e9nico", + "anti_odours": "Anti-olor", + "auto_care": "Autocuidado", + "baby": "Baby", + "bed_quilt": "Edred\u00f3n", + "care_30": "Cuidado 30", + "care_45": "Cuidado 45", + "care_59": "Cuidado 59", + "coloured": "Color", + "daily_45_min": "DIARIO 45'", + "daily_perfect_59_min": "DIARIO PERFECTO 59'", + "darks_and_coloured": "Oscuro & Color", + "delicates": "Delicados", + "duvet": "Edred\u00f3n", + "eco": "Algod\u00f3n Eco", + "ecospeed_cottons": "Ecospeed Algod\u00f3n", + "ecospeed_delicates": "Ecospeed Delicados", + "ecospeed_mixed": "Ecospeed Mixtos", + "extra_hygiene": "Higiene Extra", + "fitness": "Deporte", + "fresh_care": "Cuidado y frescor", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Toallas", + "hqd_bed_sheets": "S\u00e1banas", + "hqd_bulky": "Objetos voluminosos", + "hqd_casual": "Casual", + "hqd_cold_wind_30": "Brisa fresca 30 minutos", + "hqd_cold_wind_timing": "Brisa fresca ", + "hqd_cotton": "Algod\u00f3n", + "hqd_curtain": "Cortinas", + "hqd_delicate": "Ropa delicada", + "hqd_diaper": "Pa\u00f1ales", + "hqd_duvet": "Edredones", + "hqd_feather": "Plum\u00edferos", + "hqd_hot_wind_timing": "Aire caliente", + "hqd_hygienic": "Higienizar", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Chaquetas", + "hqd_jeans": "Vaqueros", + "hqd_luxury": "Lujo", + "hqd_mix": "Ropa mixta", + "hqd_night_dry": "Secado nocturno", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "R\u00e1pido 20", + "hqd_quick_30": "R\u00e1pido 30", + "hqd_quick_dry": "Secado r\u00e1pido", + "hqd_quilt": "Colchas", + "hqd_refresh": "Refrescar", + "hqd_school_uniform": "Uniformes escolares", + "hqd_shirt": "Camisas", + "hqd_shoes": "Zapatos", + "hqd_silk": "Seda", + "hqd_sports": "Deporte", + "hqd_synthetics": "Sint\u00e9ticos", + "hqd_timer": "Temporizado", + "hqd_towel": "Toallas", + "hqd_underwear": "Ropa interior", + "hqd_warm_up": "Calentar", + "hqd_wool": "Lana", + "hqd_working_suit": "Ropa de trabajo", + "hygiene": "Higiene", + "iot_checkup": "Revisi\u00f3n", + "iot_dry_anti_mites": "Anti\u00e1caros", + "iot_dry_baby": "Baby", + "iot_dry_backpacks": "Mochilas", + "iot_dry_bathrobe": "Ropa de Ba\u00f1o", + "iot_dry_bed_linen": "Ropa de Cama", + "iot_dry_bed_quilt": "Edred\u00f3n", + "iot_dry_cotton": "Algod\u00f3n", + "iot_dry_cuddly_toys": "Peluches", + "iot_dry_curtains": "Cortinas", + "iot_dry_dehumidifier": "Eliminador de humedad", + "iot_dry_delicates": "Delicados", + "iot_dry_delicate_tablecloths": "Manteler\u00eda Delicada", + "iot_dry_denim_jeans": "Denim - Vaqueros", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Edred\u00f3n", + "iot_dry_easy_iron_cotton": "Planchado S\u00faper F\u00e1cil", + "iot_dry_easy_iron_synthetics": "Planchado muy f\u00e1cil - Sint\u00e9ticos", + "iot_dry_gym_fit": "Ropa de Deporte - Fitness", + "iot_dry_lingerie": "Lencer\u00eda", + "iot_dry_mixed": "Ropa mixta", + "iot_dry_playsuits": "Prendas de una pieza - Mono", + "iot_dry_rapid_30": "R\u00e1pido 30\u2019", + "iot_dry_rapid_59": "R\u00e1pido 59\u2019", + "iot_dry_refresh": "Refresh", + "iot_dry_regenerates_waterproof": "Regeneraci\u00f3n Tejidos Impermeables", + "iot_dry_relax_creases": "Reducci\u00f3n Arrugas", + "iot_dry_shirts": "Camisas", + "iot_dry_small_load": "Carga reducida", + "iot_dry_swimsuits_and_bikinis": "Trajes de ba\u00f1o", + "iot_dry_synthetics": "Sint\u00e9ticos", + "iot_dry_synthetic_dry": "Secado de prendas sint\u00e9ticas", + "iot_dry_tablecloths": "Manteler\u00eda", + "iot_dry_technical_fabrics": "Tejidos T\u00e9cnicos", + "iot_dry_warm_embrace": "Abrazo c\u00e1lido", + "iot_dry_wool": "Woolmark", + "jeans": "Vaqueros", + "mix_and_dry": "Mix&Dry", + "pets": "Mascotas", + "pre_iron": "Pre-Planchado", + "rapid_30": "R\u00e1pido 30 min", + "rapid_45": "R\u00e1pido 45 min", + "rapid_59": "Perfecto R\u00e1pido 59 Min", + "refresh": "Refresh", + "relax_creases": "Reducci\u00f3n Arrugas", + "saving_30_min": "ECO 30'", + "shirts": "Camisas", + "shoes": "Zapatos", + "small_load": "Carga reducida", + "soft_care": "Cuidado suave", + "sport_plus": "Deporte", + "super_easy_iron_misti": "Planchado muy f\u00e1cil ropa mixta", + "super_easy_iron_xxl": "Planchado muy f\u00e1cil XXL", + "super_fast_cottons": "Algod\u00f3n S\u00faper R\u00e1pido", + "super_fast_delicates": "Delicados S\u00faper R\u00e1pidos", + "synthetics": "Sint\u00e9ticos", + "total_care": "Total Care", + "trainers": "Calzado Deportivo", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Revitalizante Waterproof", + "whites": "Blanco", + "wool": "Secado Lana", + "woolmark": "Woolmark", + "xxl_load": "Carga XXL", + "zoom_59": "Zoom 59" + } + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "Color y algod\u00f3n 20 \u00b0C", + "20_degrees_new_energy_label": "20\u00b0C", + "active_steam": "Vapor", + "active_wash": "Lavado activo", + "active_wash_steam": "Lavado activo", + "allergy_care": "Antialergias", + "allergy_care_pro": "Allergy Care Pro", + "all_in_one_49": "Todo en uno 49\u2019", + "all_in_one_59": "Todo en uno 59\u2019", + "all_in_one_59_steam": "Lavado activo + Vapor", + "autocare": "Autocare", + "autoclean": "Limpieza del tambor", + "baby_60": "All Baby 60\u00b0C", + "care_14": "Rapid Care 14'", + "care_30": "Rapid Care 30'", + "care_44": "Rapid Care 44'", + "checkup": "Revisi\u00f3n", + "colour_59": "Color 59'", + "colour_59_steam": "Colores 59' + vapor", + "cottons": "Algod\u00f3n", + "cottons_prewash": "Ropa Blanca + Prelavado", + "cottons_steam": "Algod\u00f3n + Vapor", + "cotton_care_59": "Cotton Care 59 Min", + "delicate_59": "Delicado 59'", + "delicate_silk": "Seda delicada", + "delicate_silk_steam": "Seda delicada + vapor", + "delicati_59": "Delicado 59'", + "delicati_59_steam": "Delicado 59'", + "drain_spin": "Desag\u00fce + centrifugado", + "easy_iron": "Planchado f\u00e1cil", + "eco_40_60_new_energy_label": "Eco 40-60", + "extra_care": "Cuidado extra", + "fitness": "Deporte", + "fitness_care": "Deporte", + "fresh_care": "Cuidado y frescor", + "fresh_care_steam": "Cuidado y frescor + Vapor", + "handwash_wool": "Lana y lavado a mano", + "high_dry": "Secado algod\u00f3n", + "hqd_20_degrees": "Algod\u00f3n 20\u2103", + "hqd_allergy": "Antialergias", + "hqd_autoclean": "Limpieza del tambor", + "hqd_babycare": "Baby Care", + "hqd_checkup": "Revisi\u00f3n", + "hqd_cottons": "Algod\u00f3n", + "hqd_delicate": "Ropa delicada", + "hqd_delicate_cradle": "Ropa delicada", + "hqd_dry": "Secado algod\u00f3n", + "hqd_dry_synthetics": "Secado de ropa mixta", + "hqd_duvet": "Edred\u00f3n", + "hqd_eco_40_60_degrees": "Eco 40-60", + "hqd_handwash_wool": "Lana", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "Mixta", + "hqd_quick_15": "R\u00e1pido 15'", + "hqd_quick_wash_57": "Lavado r\u00e1pido 57 min", + "hqd_rapid_wash_and_dry": "Lavar y secar", + "hqd_refresh": "Refresh", + "hqd_rinse": "Aclarado", + "hqd_shirts": "Camisas", + "hqd_smart": "Smart A.I.", + "hqd_spin": "Centrifugado", + "hqd_sport": "Deporte", + "hqd_super_fast": "R\u00e1pido 39\u2019", + "hqd_synthetic_and_coloured": "Ropa sint\u00e9tica", + "hygiene_59": "Higiene Plus 59'", + "hygiene_60": "Higiene 60\u00b0 C", + "hygiene_plus_59": "Higiene Plus 59'", + "hygiene_plus_59_min": "Higiene Plus 59'", + "hygiene_pro _49_min": "Higiene Pro 49 '", + "hygiene_pro_49_min": "Higiene Pro 49 min", + "hygiene_pro_steam": "Higiene Pro + Vapor", + "intensive_40": "Intensivo 40\u00b0C", + "intensive_40_steam": "Intensivo 40\u00b0C + vapor", + "iot_active_steam": "Vapor", + "iot_active_wash_steam": "Lavado activo", + "iot_allergy_care_pro": "Allergy Care Pro", + "iot_all_in_one_59_steam": "Lavado activo + Vapor", + "iot_checkup": "Revisi\u00f3n", + "iot_colour_59_steam": "Colores 59' + vapor", + "iot_cottons_steam": "Algod\u00f3n + Vapor", + "iot_delicate_silk_steam": "Seda delicada + vapor", + "iot_delicati_59_steam": "Delicado 59'", + "iot_dry_air_refresh": "Air Refresh", + "iot_dry_anti_mites": "Anti\u00e1caros", + "iot_dry_baby": "Beb\u00e9", + "iot_dry_backpacks": "Mochilas", + "iot_dry_bathrobe": "Albornoces y telas porosas", + "iot_dry_bed_linen": "Ropa de cama", + "iot_dry_cotton_dry": "Secado algod\u00f3n", + "iot_dry_cuddly_toys": "Peluches", + "iot_dry_curtains": "Cortinas", + "iot_dry_dehumidifier": "Eliminador de humedad", + "iot_dry_delicates_antiallergy": "Ropa delicada - Antialergias", + "iot_dry_delicate_tablecloths": "Manteles delicados", + "iot_dry_denim_jeans": "Denim - Vaqueros", + "iot_dry_easy_iron_cotton": "Planchado f\u00e1cil - Algod\u00f3n", + "iot_dry_easy_iron_synthetics": "Planchado f\u00e1cil - Sint\u00e9ticos", + "iot_dry_gym_fit": "Gimnasio - Ropa de deporte", + "iot_dry_lingerie": "Lencer\u00eda", + "iot_dry_mixed_dry": "Secado de ropa mixta", + "iot_dry_rapid_60_min_delicates": "R\u00e1pido 60' - Delicados", + "iot_dry_shirts": "Camisas", + "iot_dry_swimsuits_and_bikinis": "Trajes de ba\u00f1o", + "iot_dry_synthetics": "Secado de prendas sint\u00e9ticas", + "iot_dry_synthetic_dry": "Secado de prendas sint\u00e9ticas", + "iot_dry_tablecloths": "Manteles", + "iot_dry_technical_fabrics": "Tejidos t\u00e9cnicos", + "iot_dry_warm_embrace": "C\u00e1lido abrazo", + "iot_dry_wool_dry": "Secado lana", + "iot_easy_iron": "Planchado f\u00e1cil", + "iot_fresh_care_steam": "Cuidado y frescor + Vapor", + "iot_hygiene_pro_steam": "Higiene Pro + Vapor", + "iot_intensive_40_steam": "Intensivo 40\u00b0C + vapor", + "iot_mixed_steam": "Ropa mixta + Vapor", + "iot_mix_and_colour_59_steam": "Mixta y de color 59' + Vapor", + "iot_perfect_cotton_59_steam": "Algodon Perfecto 59'", + "iot_rapid_a_class_60_steam": "Clase r\u00e1pida A 60 + vapor", + "iot_resistant_cotton_steam": "Algod\u00f3n + Vapor", + "iot_shirts_steam": "Camisas + Vapor", + "iot_single_item_steam": "Elemento \u00fanico + Vapor", + "iot_smart_wash": "Smart Wash", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "Especial 39' + Vapor", + "iot_steam_hygiene_plus": "Vapor higiene extra ", + "iot_synthetic_and_coloured_steam": "Ropa sint\u00e9tica y de color + Vapor", + "iot_wash_and_dry": "Lavar y secar", + "iot_wash_anti_mites": "Anti\u00e1caros", + "iot_wash_anti_odor": "Antiolor", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "Desinfectante", + "iot_wash_baby_sanitizer_steam": "Desinfectante para beb\u00e9s + vapor", + "iot_wash_backpacks": "Mochilas", + "iot_wash_backpacks_zelig": "Mochilas", + "iot_wash_bathrobe": "Albornoces y toallas", + "iot_wash_bathrobe_steam": "Albornoces + Vapor", + "iot_wash_bed_linen": "Ropa de cama", + "iot_wash_bed_linen_steam": "Ropa de cama + Vapor", + "iot_wash_bed_linen_zelig": "Ropa de cama", + "iot_wash_big_single_load": "Gran carga \u00fanica", + "iot_wash_bleaching": "Blanqueo", + "iot_wash_blood_stains": "Manchas de sangre", + "iot_wash_cashmere": "Cachemira", + "iot_wash_chocolate_stains": "Manchas de chocolate", + "iot_wash_cold_wash": "Lavado en fr\u00edo", + "iot_wash_colored": "Color", + "iot_wash_colored_anti_stain": "Eliminaci\u00f3n de manchas en prendas de color", + "iot_wash_colored_delicate": "Ropa de color delicada", + "iot_wash_coloured": "Ropa de color", + "iot_wash_coloured_bed_linen": "Ropa de cama de color", + "iot_wash_coloured_bed_linen_steam": "Ropa de cama de color + vapor", + "iot_wash_coloured_curtains": "Cortinas de color", + "iot_wash_coloured_shirts": "Camisas de color", + "iot_wash_coloured_shirts_steam": "Camisas de color + vapor", + "iot_wash_coloured_steam": "Ropa de color + Vapor", + "iot_wash_coloured_tableclothes": "Manteles de color", + "iot_wash_coloured_tableclothes_steam": "Manteles de color + Vapor", + "iot_wash_cotton": "Algod\u00f3n", + "iot_wash_cotton_steam": "Algod\u00f3n + Vapor", + "iot_wash_cuddly_toys": "Peluches", + "iot_wash_curtains": "Cortinas", + "iot_wash_curtains_steam": "Cortinas + Vapor", + "iot_wash_curtains_zelig": "Cortinas", + "iot_wash_dark": "Ropa oscura", + "iot_wash_darks_and_coloured_44": "Ropa oscura y de color 44\u2019", + "iot_wash_darks_and_coloured_59": "Ropa oscura y de color 59\u2019", + "iot_wash_darks_and_coloured_xl": "Ropa oscura y de color XL", + "iot_wash_dark_steam": "Ropa oscura + Vapor", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "Ropa delicada", + "iot_wash_delicate_antiallergy": "Antialergias para prendas delicadas", + "iot_wash_delicate_antiallergy_steam": "Antialergias para prendas delicadas + Vapor", + "iot_wash_delicate_antiallergy_zelig": "Antialergias para prendas delicadas", + "iot_wash_delicate_colors": "Ropa delicada de color", + "iot_wash_delicate_colors_steam": "Colores + vapor", + "iot_wash_delicate_dark": "Ropa oscura delicada", + "iot_wash_delicate_steam": "Ropa delicada + Vapor", + "iot_wash_delicate_tablecloths": "Manteles delicados", + "iot_wash_delicate_tablecloths_steam": "Manteles delicados + Vapor", + "iot_wash_delicate_whites": "Ropa blanca delicada", + "iot_wash_denim_jeans": "Denim - Vaqueros", + "iot_wash_diving_suits": "Trajes de buceo", + "iot_wash_diving_suits_zelig": "Trajes de buceo", + "iot_wash_down_jackets": "Plum\u00edferos", + "iot_wash_down_jackets_zelig": "Plum\u00edferos", + "iot_wash_duvet": "Edred\u00f3n", + "iot_wash_fruit_stains": "Manchas de fruta", + "iot_wash_gym_fit": "Gimnasio - Ropa de deporte", + "iot_wash_handwash": "Lavado a mano", + "iot_wash_handwash_colored": "Lavado a mano de ropa de color", + "iot_wash_handwash_dark": "Lavado a mano de ropa oscura", + "iot_wash_lingerie": "Lencer\u00eda", + "iot_wash_masks_refresh": "Lavado de mascarillas", + "iot_wash_masks_sanification": "Desinfecci\u00f3n de mascarillas", + "iot_wash_masks_sanification_steam": "Desinfecci\u00f3n de mascarillas + Vapor", + "iot_wash_mats": "Alfombras", + "iot_wash_men_s_trousers": "Pantalones ", + "iot_wash_mixed": "Ropa mixta", + "iot_wash_mixed_steam": "Ropa mixta + Vapor", + "iot_wash_mix_and_coloured_44": "Mixta y de color 44\u2019", + "iot_wash_mix_and_coloured_59": "Mixta y de color 59\u2019", + "iot_wash_mix_and_coloured_xl": "Mixta y de color XL", + "iot_wash_new_clothes": "Ropa nueva", + "iot_wash_perfect_white": "Blanco perfecto", + "iot_wash_perfect_white_steam": "Blanco perfecto + Vapor", + "iot_wash_pets": "Accesorios para mascotas", + "iot_wash_pets_hair_removal": "Eliminaci\u00f3n del pelo de las mascotas", + "iot_wash_pets_odours_stains_removal": "Eliminaci\u00f3n de manchas y olores dom\u00e9sticos", + "iot_wash_pets_steam": "Accesorios para mascotas", + "iot_wash_playsuits": "Monos", + "iot_wash_playsuits_steam": "Monos + Vapor", + "iot_wash_quick_drum_cleaner": "Limpiador r\u00e1pido de tambor", + "iot_wash_rapid_14": "R\u00e1pido 14\u2019", + "iot_wash_rapid_30": "R\u00e1pido 30\u2019", + "iot_wash_rapid_44": "R\u00e1pido 44\u2019", + "iot_wash_rapid_59": "R\u00e1pido 59\u2019", + "iot_wash_rapid_59_steam": "R\u00e1pido 59' + vapor", + "iot_wash_refresh_14_min": "Refrescar 14'", + "iot_wash_resistant_colored": "Ropa de color resistente", + "iot_wash_resistant_dark": "Ropa oscura resistente", + "iot_wash_resistant_whites": "Ropa blanca resistente", + "iot_wash_rinse": "Aclarado", + "iot_wash_shirts": "Camisas", + "iot_wash_shirts_steam": "Camisas + Vapor", + "iot_wash_silk": "Seda", + "iot_wash_ski_suit": "Trajes de esqu\u00ed", + "iot_wash_ski_suit_zelig": "Trajes de esqu\u00ed", + "iot_wash_spin": "Centrifugado", + "iot_wash_sport": "Deporte", + "iot_wash_sport_anti_odor": "Ropa deportiva antiolor", + "iot_wash_sport_anti_odor_zelig": "Ropa deportiva antiolor", + "iot_wash_stains_remover": "Quitamanchas", + "iot_wash_swimsuits_and_bikinis": "Trajes de ba\u00f1o", + "iot_wash_synthetic": "Ropa sint\u00e9tica", + "iot_wash_synthetic_steam": "Ropa sint\u00e9tica + Vapor", + "iot_wash_tablecloths": "Manteles", + "iot_wash_tablecloths_steam": "Manteles + Vapor", + "iot_wash_technical_fabrics": "Tejidos t\u00e9cnicos", + "iot_wash_technical_fabrics_zelig": "Tejidos t\u00e9cnicos", + "iot_wash_technical_jackets": "Chaquetas t\u00e9cnicas", + "iot_wash_technical_jackets_zelig": "Chaquetas t\u00e9cnicas", + "iot_wash_trainers": "Deportivas", + "iot_wash_whites": "Ropa blanca", + "iot_wash_whites_44": "Ropa blanca 44\u2019", + "iot_wash_whites_59": "Ropa blanca 59\u2019", + "iot_wash_whites_xl": "Ropa blanca XL", + "iot_wash_wine_stains": "Manchas de vino", + "iot_wash_wool": "Lana", + "jeans": "Vaqueros", + "jeans_60": "Jeans", + "low_dry": "Secado de ropa mixta", + "mixed": "Ropa mixta", + "mixed_and_colored_59": "Mixta y de color 59'", + "mixed_steam": "Ropa mixta + Vapor", + "mix_and_colour_59": "Color Y Mixtos 59'", + "mix_and_colour_59_steam": "Mixta y de color 59' + Vapor", + "night_and_day": "Noche y d\u00eda", + "night_wash": "Ciclo nocturno", + "perfect_59": "Perfecto 59'", + "perfect_cotton_59": "Algodon Perfecto 59'", + "perfect_cotton_59_steam": "Algodon Perfecto 59'", + "perfect_whites_59": "Blancos Perfectos 59'", + "rapid_14_min": "Rapido 14'", + "rapid_30_min": "R\u00e1pido 30'", + "rapid_44_min": "R\u00e1pido 44'", + "rapid_a_class_60": "Clase r\u00e1pida A 60", + "rapid_a_class_60_steam": "Clase r\u00e1pida A 60 + vapor", + "rapid_wash_and_dry_59_min": "Lavado y secado 59'", + "resistant_cotton": "Algod\u00f3n", + "resistant_cotton_steam": "Algod\u00f3n + Vapor", + "rinse": "Aclarado", + "shirts_steam": "Camisas + Vapor", + "silent_night": "Ciclo nocturno", + "single_item": "Elemento \u00fanico", + "single_item_steam": "Elemento \u00fanico + Vapor", + "smart_wash": "Smart Wash", + "soft_care": "Cuidado suave", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "Especial 39'", + "special_39_full_load": "Especial 39'", + "special_39_full_load_steam": "Especial 39' + Vapor", + "special_49": "Especial 49'", + "sport_39": "Deporte 39'", + "sport_plus_29": "Deporte Plus 29\"", + "sport_plus_39": "Deporte Plus 39'", + "steam_39": "Vapor 39'", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro - Algod\u00f3n", + "steam_care_pro_delicates": "Steam Care Pro - Delicados", + "steam_care_pro_synthetic": "Steam Care Pro - Sint\u00e9ticos", + "steam_hygiene_plus": "Vapor higiene extra ", + "synthetics": "Ropa sint\u00e9tica", + "synthetic_and_coloured": "Ropa sint\u00e9tica y de color", + "synthetic_and_coloured_steam": "Ropa sint\u00e9tica y de color + Vapor", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "Cuidado total", + "tumbling": "Rotaci\u00f3n", + "wool": "Lana", + "wool_and_delicates_49": "Lana/Delicados 49'", + "wool_dry": "Secado lana", + "wool_soft_care": "Lana & Soft Care" + } + } } } } \ No newline at end of file diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index 7fa1af7..5db951a 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -66,6 +66,650 @@ "6": "Hot rinse" } } + }, + "select": { + "programs_dw": { + "state": { + "59_min": "Rapide 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "Auto universel 50 - 60\u00b0C", + "auto_universal_plus": "Auto universel Plus 65 - 75\u00b0C", + "auto_universal_plus_soil": "Auto universel Plus 65 - 75\u00b0C", + "auto_universal_soil": "Auto universel 50 - 60\u00b0C", + "auto_wash": "Lavage automatique", + "auto_wash_soil": "Lavage automatique", + "classe_a_59": "Classe A 59' 65\u00b0C", + "delicate": "D\u00e9licat 45\u00b0C", + "dishwasher_care": "Cycle de nettoyage du calcaire", + "eco": "\u00c9co", + "eco_asynch": "Eco 45\u00b0C", + "eco_bldc": "Eco 45\u00b0C", + "eco_synch": "Eco 45\u00b0C", + "gentle_wash": "Gentle wash", + "glass": "En verre", + "glass _care": "Glass Care", + "glassware": "Verres 45 \u00b0C", + "glass_care": "Glass Care", + "hygiene": "Hygi\u00e8ne", + "hygiene_plus": "Hygi\u00e8ne 75 \u00b0C", + "intensive": "Intensif ", + "intensive_rapid": "Intensif rapide", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "Auto universel 50 - 60\u00b0C", + "iot_auto_wash_soil": "Lavage automatique", + "iot_baby_care": "Soin B\u00e9b\u00e9", + "iot_breakfast": "D\u00e9jeuner", + "iot_checkup": "V\u00e9rification", + "iot_china_crystals": "Cristal de Chine", + "iot_classe_a_59": "Rapide 59'", + "iot_cocktail_glasses": "Verre \u00e0 cocktail", + "iot_cocktail_glasses_soil": "Verre \u00e0 cocktail", + "iot_daily_care": "Quotidien", + "iot_daily_care_soil": "Quotidien", + "iot_delicate": "D\u00e9licat 45\u00b0C", + "iot_dinner_for_two": "Repas \u00e0 deux", + "iot_dinner_for_two_soil": "Repas \u00e0 deux", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "Eco 45\u00b0C", + "iot_eco_bldc": "Eco 45\u00b0C", + "iot_eco_synch": "Eco 45\u00b0C", + "iot_extra_hygiene": "Extra Hygi\u00e8ne", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "Happy Hour", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "Repas de f\u00eate", + "iot_party_soil": "Repas de f\u00eate", + "iot_pizza_menu": "Menu Pizza", + "iot_pizza_menu_soil": "Menu Pizza", + "iot_plastic_tupperware": "Plastique & Tupperware", + "iot_porcelain": "Porcelaine", + "iot_pot_&_pans": "Casseroles & po\u00eales", + "iot_pot_&_pans_soil": "Casseroles & po\u00eales", + "iot_power_mix_wash": "Power Mix Wash", + "iot_power_mix_wash_soil": "Power Mix Wash", + "iot_prewash": "Pr\u00e9lavage", + "iot_pyrex_and_glassware": "Pyrex & Verre", + "iot_rapid_29": "Rapide 29'", + "iot_rapid_39": "Rapide 39' 60 \u00b0C", + "iot_single": "Une personne", + "iot_steam": "Vapeur 75 \u00b0C", + "iot_super_flash": "Super Rapide", + "iot_super_wash": "Lavage Super Intensif", + "iot_turbopower": "TurboPower", + "iot_universal": "Universel 60 \u00b0C", + "iot_wok_grids_maxi_pans": "Sp\u00e9cial casserole (Wok - Grill & Casserole)", + "iot_wok_grids_maxi_pans_soil": "Sp\u00e9cial casserole (Wok - Grill & Casserole)", + "iot_yes_quick_cycle": "Yes Quick", + "night": "Ultra silence 55\u00b0C", + "prewash": "Pr\u00e9lavage", + "rapid_20": "Rapide 20'", + "rapid_24": "Rapide 24'", + "rapid_29": "Rapide 29' 50\u00b0C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "Rapide 39' 60 \u00b0C", + "rapid_49": "Rapide 49'", + "rapid_59": "Rapide 59'", + "sanitising": "Assainissant", + "silence": "Silence", + "silent": "Nuit", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "special": "sp\u00e9cial", + "special_pw_prz": "sp\u00e9cial", + "steam": "Vapeur 75 \u00b0C", + "steam_plus": "Vapeur Plus 75\u00a0\u00b0C", + "total_care": "Total Care 50\u00b0C", + "ultra_silence": "Ultra silence 55\u00b0C", + "ultra_silent": "Ultra silence 55\u00b0C", + "universal": "Universel 60 \u00b0C", + "universal_plus": "Universel Plus 70 \u00b0C", + "zoom_39": "Zoom 39 min" + } + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "Galettes de pommes de terre frites", + "iot_special_beef_fillet": "Filet de b\u0153uf", + "iot_special_beef_veal_stew": "Rago\u00fbt de b\u0153uf et de veau", + "iot_special_boiled_rice": "Bouillie de riz", + "iot_special_chicken_breast": "Blanc de poulet", + "iot_special_chicken_legs": "Cuisses de poulets", + "iot_special_chocolate_pudding": "Pudding au chocolat", + "iot_special_entrecote": "Entrec\u00f4te", + "iot_special_fresh_tuna": "Thon frais", + "iot_special_grilled_vegetables": "L\u00e9gumes grill\u00e9s", + "iot_special_lamb_cutlet": "C\u00f4telettes d\u2019agneau", + "iot_special_meatballs": "Boulettes de viande", + "iot_special_minestrone": "Minestrone", + "iot_special_mussels": "Moules", + "iot_special_omelette": "Omelette", + "iot_special_pancakes": "Cr\u00eapes", + "iot_special_paris_style_peas": "Petits pois \u00e0 la fran\u00e7aise", + "iot_special_poached_eggs": "\u0152ufs poch\u00e9s", + "iot_special_pork_fillet": "Filet de porc", + "iot_special_pork_ribs": "C\u00f4tes de porc", + "iot_special_prawns": "Crevettes", + "iot_special_quinoa": "Quinoa", + "iot_special_ratatouille": "Ratatouille", + "iot_special_salmon_fillet": "Filet de saumon", + "iot_special_saute_potatoes": "Pommes de terre saut\u00e9es", + "iot_special_scallops": "Coquilles Saint-Jacques", + "iot_special_scrambled_eggs": "\u0152ufs brouill\u00e9s", + "iot_special_spelt": "\u00c9peautre", + "iot_special_veggy_noodles": "Nouilles v\u00e9g\u00e9tariennes", + "iot_special_white_fish_fillet": "Filet de poisson blanc", + "iot_standard_boiling": "Bouillir", + "iot_standard_frying": "Frire", + "iot_standard_keep_warm": "Maintien au chaud", + "iot_standard_melting": "Fondre", + "iot_standard_simmering": "Mijoter" + } + }, + "programs_ov": { + "state": { + "bakery": "P\u00e2tes et pains", + "bakery_steam": "Pain cuit \u00e0 la vapeur", + "bottom_heating": "Sole", + "bottom_heating_fan": "Sole brass\u00e9e", + "bread": "Pain", + "bread_steam": "P\u00e2tisseries cuites \u00e0 la vapeur", + "convection_fan": "Chaleur tournante", + "convection_fan_turnspit": "Convection + Ventilateur + Tournebroche", + "conventional": "Convection naturelle", + "conventional_turnspit": "Convection + Tournebroche", + "defrost": "D\u00e9cong\u00e9lation", + "descaling": "D\u00e9tartrage", + "fish": "Poisson", + "fish_steam": "Poisson cuit \u00e0 la vapeur", + "grill_cata": "Gril", + "grill_fan_cata": "Turbogril", + "grill_fan_pyro": "Turbogril", + "grill_pyro": "Gril", + "h20_clean": "H2O-Clean", + "iot_bread": "Pain", + "iot_h20_clean": "h2O clean", + "leavening": "\u00c9tuve", + "low_temp_cooking": "Cuisson \u00e0 basse temp\u00e9rature", + "low_temp_cooking_fish": "Cuisson \u00e0 basse temp\u00e9rature - Poisson", + "low_temp_cooking_fish_steam": "Cuisson \u00e0 la vapeur \u00e0 basse temp\u00e9rature - Poisson", + "low_temp_cooking_meat": "Cuisson \u00e0 basse temp\u00e9rature - Viande", + "low_temp_cooking_meat_steam": "Cuisson \u00e0 la vapeur \u00e0 basse temp\u00e9rature - Viande", + "low_temp_cooking_steam": "Cuisson \u00e0 la vapeur \u00e0 basse temp\u00e9rature", + "meat": "Viande", + "meat_steam": "Viande cuite \u00e0 la vapeur", + "multi_level": "Chaleur puls\u00e9e", + "paella": "Paella", + "pasta_and_bakery": "P\u00e2tes et pains", + "pizza": "Pizza", + "pyrolysis": "Pyrolyse", + "pyrolysis_plus": "Pyrolyse +", + "red_meat": "Viande rouge", + "red_meat_steam": "Viande rouge cuite \u00e0 la vapeur", + "regenerate": "R\u00e9g\u00e9n\u00e9ration", + "soft_plus": "Soft+", + "super_grill": "Super Gril", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_desctiption": "Cette fonction est id\u00e9ale pour garder les aliments tendres \u00e0 l'int\u00e9rieur et croquants \u00e0 l'ext\u00e9rieur.\r\r\r\r\nCette fonction permet de r\u00e9duire la quantit\u00e9 de mati\u00e8re grasse ou d'huile n\u00e9cessaire \u00e0 la pr\u00e9paration des plats.\r\r\r\nL'association des \u00e9l\u00e9ments chauffants avec un syst\u00e8me de pulsation de l'air assure des r\u00e9sultats de cuisson uniformes.", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "L\u00e9gumes", + "vegetables_cata": "L\u00e9gumes", + "vegetables_pyro": "L\u00e9gumes", + "water_discharge": "Vidange de l\u2019eau", + "white_meat": "Viande blanche", + "white_meat_steam": "Viande blanche cuite \u00e0 la vapeur" + } + }, + "programs_td": { + "state": { + "active_dry": "S\u00e9chage actif", + "allergy_care": "Anti-allergies", + "all_in_one": "Tout en 1", + "antiallergy": "Anti-allergies", + "anti_odours": "Anti-odeurs", + "auto_care": "Soin automatique", + "baby": "Baby", + "bed_quilt": "Couette", + "care_30": "Soin 30", + "care_45": "Soin 45", + "care_59": "Soin 59", + "coloured": "Couleurs", + "daily_45_min": "QUOTIDIEN 45'", + "daily_perfect_59_min": "QUOTIDIEN PARFAIT 59'", + "darks_and_coloured": "Couleurs dont fonc\u00e9es", + "delicates": "D\u00e9licat", + "duvet": "Couette", + "eco": "Coton \u00c9co", + "ecospeed_cottons": "Ecospeed coton", + "ecospeed_delicates": "Delicats ecospeed", + "ecospeed_mixed": "Ecospeed mixte", + "extra_hygiene": "Extra Hygiene", + "fitness": "Fitness", + "fresh_care": "Soin frais", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Serviettes", + "hqd_bed_sheets": "Draps", + "hqd_bulky": "Articles volumineux", + "hqd_casual": "Journalier", + "hqd_cold_wind_30": "Brise rafra\u00eechissante 30 minutes", + "hqd_cold_wind_timing": "Brise rafra\u00eechissante ", + "hqd_cotton": "Coton", + "hqd_curtain": "Rideaux", + "hqd_delicate": "D\u00e9licats", + "hqd_diaper": "Couches", + "hqd_duvet": "Couette", + "hqd_feather": "Vestes en duvet", + "hqd_hot_wind_timing": "Air chaud", + "hqd_hygienic": "Hygi\u00e9nisation", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Vestes", + "hqd_jeans": "Jeans", + "hqd_luxury": "Luxury", + "hqd_mix": "Tissus m\u00e9lang\u00e9s", + "hqd_night_dry": "S\u00e9chage toute la nuit", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Rapide 20\u2019", + "hqd_quick_30": "Rapide 30\u2019", + "hqd_quick_dry": "S\u00e9chage rapide", + "hqd_quilt": "Couvertures", + "hqd_refresh": "Rafra\u00eechissement", + "hqd_school_uniform": "Uniforme scolaire", + "hqd_shirt": "Chemises", + "hqd_shoes": "Chaussures", + "hqd_silk": "Soie", + "hqd_sports": "Sport", + "hqd_synthetics": "Synth\u00e9tiques", + "hqd_timer": "Temporis\u00e9", + "hqd_towel": "Serviettes", + "hqd_underwear": "Sous-v\u00eatements", + "hqd_warm_up": "R\u00e9veil", + "hqd_wool": "Laine", + "hqd_working_suit": "V\u00eatements de travail", + "hygiene": "Hygi\u00e8ne", + "iot_checkup": "V\u00e9rification", + "iot_dry_anti_mites": "Anti-acariens", + "iot_dry_baby": "Baby", + "iot_dry_backpacks": "Sac \u00e0 dos", + "iot_dry_bathrobe": "Peignoir", + "iot_dry_bed_linen": "Linge de lit", + "iot_dry_bed_quilt": "Couette", + "iot_dry_cotton": "Coton", + "iot_dry_cuddly_toys": "Jouets en peluche", + "iot_dry_curtains": "Rideaux", + "iot_dry_dehumidifier": "\u00c9limination de l\\'humidit\u00e9", + "iot_dry_delicates": "D\u00e9licats", + "iot_dry_delicate_tablecloths": "Nappes d\u00e9licates", + "iot_dry_denim_jeans": "Denim - jeans", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Couette", + "iot_dry_easy_iron_cotton": "Repassage super facile", + "iot_dry_easy_iron_synthetics": "Repassage super facile des synth\u00e9tiques", + "iot_dry_gym_fit": "Sport", + "iot_dry_lingerie": "Lingerie", + "iot_dry_mixed": "Tissus m\u00e9lang\u00e9s", + "iot_dry_playsuits": "Combinaisons", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Rapide 59'.", + "iot_dry_refresh": "Coup d\\'\u00e9clat", + "iot_dry_regenerates_waterproof": "Imperm\u00e9abilisant", + "iot_dry_relax_creases": "Anti-plis", + "iot_dry_shirts": "Chemises", + "iot_dry_small_load": "Faible charge", + "iot_dry_swimsuits_and_bikinis": "Maillots de bain", + "iot_dry_synthetics": "Synth\u00e9tiques", + "iot_dry_synthetic_dry": "S\u00e9chage des synth\u00e9tiques", + "iot_dry_tablecloths": "Nappes", + "iot_dry_technical_fabrics": "Textiles techniques", + "iot_dry_warm_embrace": "Chauffage d\u00e9licat", + "iot_dry_wool": "Woolmark", + "jeans": "Jeans", + "mix_and_dry": "Mix&Dry", + "pets": "Animaux de compagnie", + "pre_iron": "Pr\u00e9-repassage", + "rapid_30": "Rapid 30", + "rapid_45": "Rapide 45 min", + "rapid_59": "Lavage Parfait 59 Min", + "refresh": "Coup d'\u00e9clat", + "relax_creases": "Anti-plis", + "saving_30_min": "ECO 30'", + "shirts": "Chemises", + "shoes": "Chaussures", + "small_load": "Faible charge", + "soft_care": "Soin Doux", + "sport_plus": "Sports", + "super_easy_iron_misti": "Repassage super facile des mixtes", + "super_easy_iron_xxl": "Repassage super facile XXL", + "super_fast_cottons": "Super rapide coton", + "super_fast_delicates": "Super rapide d\u00e9licat", + "synthetics": "Synth\u00e9tiques", + "total_care": "Total Care", + "trainers": "Baskets", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Entretien imperm\u00e9able", + "whites": "Blancs", + "wool": "S\u00e9chage Laine", + "woolmark": "Woolmark", + "xxl_load": "Charge XXL", + "zoom_59": "Zoom 59" + } + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "Couleurs 20\u00a0\u00b0C et cotons", + "20_degrees_new_energy_label": "20\u00b0C", + "active_steam": "Vapeur d'eau", + "active_wash": "Lavage actif", + "active_wash_steam": "Lavage actif", + "allergy_care": "Soin Allergie", + "allergy_care_pro": "Soin Allergie Pro", + "all_in_one_49": "Tout-en-un 49'.", + "all_in_one_59": "Tout-en-un 59'.", + "all_in_one_59_steam": "Lavage actif + vapeur", + "autocare": "Autocare", + "autoclean": "Nettoyage du tambour", + "baby_60": "B\u00e9b\u00e9 60\u00b0C", + "care_14": "Soin Rapide 14'", + "care_30": "Soin Rapide 30'", + "care_44": "Soin Rapide 44'", + "checkup": "V\u00e9rification", + "colour_59": "Couleurs 59'", + "colour_59_steam": "Couleurs 59' + Vapeur", + "cottons": "Coton", + "cottons_prewash": "Coton + pr\u00e9lavage", + "cottons_steam": "Coton + Vapeur d'eau", + "cotton_care_59": "Cotton Care 59 Min", + "delicate_59": "D\u00e9licat 59'", + "delicate_silk": "D\u00e9licat", + "delicate_silk_steam": "D\u00e9licat + vapeur", + "delicati_59": "D\u00e9licat 59'", + "delicati_59_steam": "D\u00e9licat 59'", + "drain_spin": "Vidange et essorage", + "easy_iron": "Repassage facile", + "eco_40_60_new_energy_label": "\u00c9co 40-60", + "extra_care": "Soin Extra", + "fitness": "Fitness Care", + "fitness_care": "Fitness Care", + "fresh_care": "Soin frais", + "fresh_care_steam": "Fresh Care + vapeur", + "handwash_wool": "Lavage \u00e0 la main et laine", + "high_dry": "S\u00e9chage du coton", + "hqd_20_degrees": "Coton 20\u00a0\u2103", + "hqd_allergy": "Soin Allergie", + "hqd_autoclean": "Nettoyage du tambour", + "hqd_babycare": "Soin B\u00e9b\u00e9", + "hqd_checkup": "V\u00e9rification", + "hqd_cottons": "Coton", + "hqd_delicate": "D\u00e9licats", + "hqd_delicate_cradle": "D\u00e9licats", + "hqd_dry": "S\u00e9chage du coton", + "hqd_dry_synthetics": "S\u00e9chage des tissus m\u00e9lang\u00e9s", + "hqd_duvet": "Couette", + "hqd_eco_40_60_degrees": "\u00c9co 40-60", + "hqd_handwash_wool": "Laine", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "Tissus m\u00e9lang\u00e9s", + "hqd_quick_15": "Rapide 15'", + "hqd_quick_wash_57": "Lavage rapide 57 min", + "hqd_rapid_wash_and_dry": "Lavage et s\u00e9chage", + "hqd_refresh": "Coup d\\'\u00e9clat", + "hqd_rinse": "Rin\u00e7age", + "hqd_shirts": "Chemises", + "hqd_smart": "Smart A.I.", + "hqd_spin": "Essorage", + "hqd_sport": "Sport", + "hqd_super_fast": "Rapide 39\u2019", + "hqd_synthetic_and_coloured": "Synth\u00e9tiques", + "hygiene_59": "Hygiene Plus 59'", + "hygiene_60": "Hygi\u00e8ne 60\u00b0", + "hygiene_plus_59": "Hygiene Plus 59'", + "hygiene_plus_59_min": "Hygiene Plus 59'", + "hygiene_pro _49_min": "Hygiene Pro 49\u00a0'", + "hygiene_pro_49_min": "Hygiene Pro 49\u00a0min", + "hygiene_pro_steam": "Hygiene Pro + Vapeur", + "intensive_40": "Intensif 40\u00b0C", + "intensive_40_steam": "Intensif 40\u00b0C + Vapeur", + "iot_active_steam": "Vapeur d'eau", + "iot_active_wash_steam": "Lavage actif", + "iot_allergy_care_pro": "Soin Allergie Pro", + "iot_all_in_one_59_steam": "Lavage actif + vapeur", + "iot_checkup": "V\u00e9rification", + "iot_colour_59_steam": "Couleurs 59' + Vapeur", + "iot_cottons_steam": "Coton + Vapeur d'eau", + "iot_delicate_silk_steam": "D\u00e9licat + vapeur", + "iot_delicati_59_steam": "D\u00e9licat 59'", + "iot_dry_air_refresh": "Rafra\u00eechissement de l'air", + "iot_dry_anti_mites": "Anti-acarien", + "iot_dry_baby": "B\u00e9b\u00e9", + "iot_dry_backpacks": "Sacs \u00e0 dos", + "iot_dry_bathrobe": "Peignoirs et tissus poreux", + "iot_dry_bed_linen": "Linge de lit", + "iot_dry_cotton_dry": "S\u00e9chage du coton", + "iot_dry_cuddly_toys": "Animaux en peluche", + "iot_dry_curtains": "Rideaux", + "iot_dry_dehumidifier": "\u00c9limination de l\\'humidit\u00e9", + "iot_dry_delicates_antiallergy": "D\u00e9licat - anti-allergique", + "iot_dry_delicate_tablecloths": "Nappes d\u00e9licates", + "iot_dry_denim_jeans": "Denim - Jeans", + "iot_dry_easy_iron_cotton": "Repassage facile - Coton", + "iot_dry_easy_iron_synthetics": "Repassage facile - Synth\u00e9tiques", + "iot_dry_gym_fit": "Gym - v\u00eatements de fitness", + "iot_dry_lingerie": "Lingerie", + "iot_dry_mixed_dry": "S\u00e9chage des tissus m\u00e9lang\u00e9s", + "iot_dry_rapid_60_min_delicates": "Rapid 60' - D\u00e9licats", + "iot_dry_shirts": "Chemises", + "iot_dry_swimsuits_and_bikinis": "Maillots de bain", + "iot_dry_synthetics": "S\u00e9chage des synth\u00e9tiques", + "iot_dry_synthetic_dry": "S\u00e9chage des synth\u00e9tiques", + "iot_dry_tablecloths": "Nappes", + "iot_dry_technical_fabrics": "Tissus techniques", + "iot_dry_warm_embrace": "\u00c9treinte chaude", + "iot_dry_wool_dry": "S\u00e9chage de la laine", + "iot_easy_iron": "Repassage facile", + "iot_fresh_care_steam": "Fresh Care + vapeur", + "iot_hygiene_pro_steam": "Hygiene Pro + Vapeur", + "iot_intensive_40_steam": "Intensif 40\u00b0C + Vapeur", + "iot_mixed_steam": "Tissus m\u00e9lang\u00e9s + Vapeur d'eau", + "iot_mix_and_colour_59_steam": "Mixtes et couleurs 59\u2019 + vapeur", + "iot_perfect_cotton_59_steam": "Coton Parfait 59'", + "iot_rapid_a_class_60_steam": "Classe\u00a0A rapide 60 + Vapeur", + "iot_resistant_cotton_steam": "Coton + Vapeur d'eau", + "iot_shirts_steam": "Chemises + Vapeur", + "iot_single_item_steam": "Article unique + vapeur", + "iot_smart_wash": "Lavage intelligent", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "Sp\u00e9cial 39\u2019 + vapeur", + "iot_steam_hygiene_plus": "Vapeur Hygi\u00e8ne Plus ", + "iot_synthetic_and_coloured_steam": "Synth\u00e9tiques et couleurs + vapeur", + "iot_wash_and_dry": "Lavage et s\u00e9chage", + "iot_wash_anti_mites": "Anti-acarien", + "iot_wash_anti_odor": "Anti-odeur", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "Assainissant", + "iot_wash_baby_sanitizer_steam": "Assainissant + Vapeur pour b\u00e9b\u00e9s", + "iot_wash_backpacks": "Sacs \u00e0 dos", + "iot_wash_backpacks_zelig": "Sac \u00e0 dos", + "iot_wash_bathrobe": "Peignoirs et serviettes", + "iot_wash_bathrobe_steam": "Peignoir de bain + Vapeur d'eau", + "iot_wash_bed_linen": "Linge de lit", + "iot_wash_bed_linen_steam": "Linge de lit + Vapeur d'eau", + "iot_wash_bed_linen_zelig": "Linge de lit", + "iot_wash_big_single_load": "Grande charge unique", + "iot_wash_bleaching": "Blanchiment", + "iot_wash_blood_stains": "Taches de sang", + "iot_wash_cashmere": "Cachemire", + "iot_wash_chocolate_stains": "Taches de chocolat", + "iot_wash_cold_wash": "Lavage \u00e0 froid", + "iot_wash_colored": "Color\u00e9s", + "iot_wash_colored_anti_stain": "D\u00e9tachage pour les couleurs", + "iot_wash_colored_delicate": "D\u00e9licats color\u00e9s", + "iot_wash_coloured": "Couleurs", + "iot_wash_coloured_bed_linen": "Draps de couleur", + "iot_wash_coloured_bed_linen_steam": "Draps de couleur + Vapeur", + "iot_wash_coloured_curtains": "Rideaux de couleur", + "iot_wash_coloured_shirts": "T-shirts de couleur", + "iot_wash_coloured_shirts_steam": "Chemises color\u00e9es + Vapeur", + "iot_wash_coloured_steam": "Couleurs + Vapeur d'eau", + "iot_wash_coloured_tableclothes": "Nappes de couleur", + "iot_wash_coloured_tableclothes_steam": "Nappes de couleur + vapeur", + "iot_wash_cotton": "Coton", + "iot_wash_cotton_steam": "Coton + Vapeur d'eau", + "iot_wash_cuddly_toys": "Animaux en peluche", + "iot_wash_curtains": "Rideaux", + "iot_wash_curtains_steam": "Rideaux+Vapeur d'eau", + "iot_wash_curtains_zelig": "Rideaux", + "iot_wash_dark": "V\u00eatements sombres", + "iot_wash_darks_and_coloured_44": "Fonc\u00e9s et color\u00e9s 44'", + "iot_wash_darks_and_coloured_59": "Fonc\u00e9s et color\u00e9s 59'", + "iot_wash_darks_and_coloured_xl": "Fonc\u00e9s et color\u00e9s XL", + "iot_wash_dark_steam": "V\u00eatements sombres + Vapeur d'eau", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "D\u00e9licats", + "iot_wash_delicate_antiallergy": "Anti-allergie pour les personnes fragiles", + "iot_wash_delicate_antiallergy_steam": "Anti-allergie pour les personnes fragiles + Vapeur d'eau", + "iot_wash_delicate_antiallergy_zelig": "Anti-allergie pour les personnes fragiles", + "iot_wash_delicate_colors": "D\u00e9licats de couleur", + "iot_wash_delicate_colors_steam": "Couleurs + Vapeur", + "iot_wash_delicate_dark": "Fonc\u00e9s d\u00e9licats", + "iot_wash_delicate_steam": "D\u00e9licats + Vapeur d'eau", + "iot_wash_delicate_tablecloths": "Nappes d\u00e9licates", + "iot_wash_delicate_tablecloths_steam": "Nappes d\u00e9licates + Vapeur d'eau", + "iot_wash_delicate_whites": "Blancs d\u00e9licats", + "iot_wash_denim_jeans": "Denim - jeans", + "iot_wash_diving_suits": "Combinaisons de plong\u00e9e", + "iot_wash_diving_suits_zelig": "Combinaisons de plong\u00e9e", + "iot_wash_down_jackets": "Vestes en duvet", + "iot_wash_down_jackets_zelig": "Vestes en duvet", + "iot_wash_duvet": "Couette", + "iot_wash_fruit_stains": "Taches de fruits", + "iot_wash_gym_fit": "Gym - v\u00eatements de fitness", + "iot_wash_handwash": "Lavage \u00e0 la main", + "iot_wash_handwash_colored": "Lavage \u00e0 la main des color\u00e9s", + "iot_wash_handwash_dark": "Lavage \u00e0 la main des fonc\u00e9s", + "iot_wash_lingerie": "Lingerie", + "iot_wash_masks_refresh": "Rafra\u00eechissement des masques", + "iot_wash_masks_sanification": "D\u00e9sinfection des masques", + "iot_wash_masks_sanification_steam": "D\u00e9sinfection des masques + Vapeur d'eau", + "iot_wash_mats": "Tapis", + "iot_wash_men_s_trousers": "Pantalons ", + "iot_wash_mixed": "Tissus m\u00e9lang\u00e9s", + "iot_wash_mixed_steam": "Tissus m\u00e9lang\u00e9s + Vapeur d'eau", + "iot_wash_mix_and_coloured_44": "Tissus m\u00e9lang\u00e9s et color\u00e9s 44'", + "iot_wash_mix_and_coloured_59": "Tissus m\u00e9lang\u00e9s et color\u00e9s 59'", + "iot_wash_mix_and_coloured_xl": "Tissus m\u00e9lang\u00e9s et color\u00e9s XL", + "iot_wash_new_clothes": "V\u00eatements neufs", + "iot_wash_perfect_white": "Un blanc parfait", + "iot_wash_perfect_white_steam": "Un blanc parfait + Vapeur d'eau", + "iot_wash_pets": "Accessoires pour animaux", + "iot_wash_pets_hair_removal": "\u00c9limination des poils d\u2019animaux de compagnie", + "iot_wash_pets_odours_stains_removal": "\u00c9limination des taches et des odeurs provenant des animaux de compagnie", + "iot_wash_pets_steam": "Accessoires pour animaux", + "iot_wash_playsuits": "Barboteuses", + "iot_wash_playsuits_steam": "Barboteuses + Vapeur d'eau", + "iot_wash_quick_drum_cleaner": "Nettoyant tambour rapide", + "iot_wash_rapid_14": "Rapide 14\u2019", + "iot_wash_rapid_30": "Rapide 30\u2019", + "iot_wash_rapid_44": "Rapide 44'", + "iot_wash_rapid_59": "Rapide 59'", + "iot_wash_rapid_59_steam": "Rapide 59' + Vapeur", + "iot_wash_refresh_14_min": "Rafra\u00eechir 14'", + "iot_wash_resistant_colored": "Color\u00e9s r\u00e9sistants", + "iot_wash_resistant_dark": "Fonc\u00e9s r\u00e9sistants", + "iot_wash_resistant_whites": "Blancs r\u00e9sistants", + "iot_wash_rinse": "Rin\u00e7age", + "iot_wash_shirts": "Chemises", + "iot_wash_shirts_steam": "Chemises + Vapeur d'eau", + "iot_wash_silk": "Soie", + "iot_wash_ski_suit": "Combinaisons de ski", + "iot_wash_ski_suit_zelig": "Combinaisons de ski", + "iot_wash_spin": "Essorage", + "iot_wash_sport": "Sport", + "iot_wash_sport_anti_odor": "Anti-odeur pour les v\u00eatements de sport", + "iot_wash_sport_anti_odor_zelig": "Anti-odeur pour les v\u00eatements de sport", + "iot_wash_stains_remover": "D\u00e9tachant", + "iot_wash_swimsuits_and_bikinis": "Maillots de bain", + "iot_wash_synthetic": "Synth\u00e9tiques", + "iot_wash_synthetic_steam": "Synth\u00e9tiques + Vapeur d'eau", + "iot_wash_tablecloths": "Nappes", + "iot_wash_tablecloths_steam": "Nappes + Vapeur d'eau", + "iot_wash_technical_fabrics": "Tissus techniques", + "iot_wash_technical_fabrics_zelig": "Tissus techniques", + "iot_wash_technical_jackets": "Vestes techniques", + "iot_wash_technical_jackets_zelig": "Vestes techniques", + "iot_wash_trainers": "Baskets", + "iot_wash_whites": "Blancs", + "iot_wash_whites_44": "Blancs 44'", + "iot_wash_whites_59": "Blancs 59'", + "iot_wash_whites_xl": "Blancs XL", + "iot_wash_wine_stains": "Taches de vin", + "iot_wash_wool": "Laine", + "jeans": "Jeans", + "jeans_60": "Jeans", + "low_dry": "S\u00e9chage des tissus m\u00e9lang\u00e9s", + "mixed": "Tissus m\u00e9lang\u00e9s", + "mixed_and_colored_59": "Tissus m\u00e9lang\u00e9s et couleurs 59'", + "mixed_steam": "Tissus m\u00e9lang\u00e9s + Vapeur d'eau", + "mix_and_colour_59": "Mixtes + Couleurs 59'", + "mix_and_colour_59_steam": "Mixtes et couleurs 59\u2019 + vapeur", + "night_and_day": "Nuit et jour", + "night_wash": "Cycle de nuit", + "perfect_59": "Parfait 59'", + "perfect_cotton_59": "Coton Parfait 59'", + "perfect_cotton_59_steam": "Coton Parfait 59'", + "perfect_whites_59": "Ultra-blanc 59'", + "rapid_14_min": "Rapide 14'.", + "rapid_30_min": "Rapide 30'", + "rapid_44_min": "Rapide 44'", + "rapid_a_class_60": "Classe\u00a0A rapide 60", + "rapid_a_class_60_steam": "Classe\u00a0A rapide 60 + Vapeur", + "rapid_wash_and_dry_59_min": "Lavage et s\u00e9chage 59'.", + "resistant_cotton": "Coton", + "resistant_cotton_steam": "Coton + Vapeur d'eau", + "rinse": "Rin\u00e7age", + "shirts_steam": "Chemises + Vapeur", + "silent_night": "Cycle de nuit", + "single_item": "\u00c9l\u00e9ment unique", + "single_item_steam": "Article unique + vapeur", + "smart_wash": "Lavage intelligent", + "soft_care": "Soin Doux", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "Special 39'", + "special_39_full_load": "Special 39'", + "special_39_full_load_steam": "Sp\u00e9cial 39\u2019 + vapeur", + "special_49": "Sp\u00e9cial 49'", + "sport_39": "Sport 39'", + "sport_plus_29": "Sport Plus 29\"", + "sport_plus_39": "Sport Plus 39'", + "steam_39": "Vapeur 39'", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro - Coton", + "steam_care_pro_delicates": "Steam Care Pro - D\u00e9licats", + "steam_care_pro_synthetic": "Steam Care Pro - Synth\u00e9tiques", + "steam_hygiene_plus": "Vapeur Hygi\u00e8ne Plus ", + "synthetics": "Synth\u00e9tiques", + "synthetic_and_coloured": "Synth\u00e9tiques et couleurs", + "synthetic_and_coloured_steam": "Synth\u00e9tiques et couleurs + vapeur", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "Soin total", + "tumbling": "Tumble", + "wool": "Laine", + "wool_and_delicates_49": "Laine/D\u00e9licat 49'", + "wool_dry": "S\u00e9chage de la laine", + "wool_soft_care": "Laine & Soin Doux" + } + } } } } \ No newline at end of file diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index 8f858f7..0c38340 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -66,6 +66,244 @@ "6": "Hot rinse" } } + }, + "select": { + "programs_dw": { + "state": { + "gentle_wash": "Gentle wash", + "iot_checkup": "\u05d1\u05bc\u05b0\u05d3\u05b4\u05d9\u05e7\u05b8\u05d4", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_jar_quick_cycle": "Jar Quick", + "iot_yes_quick_cycle": "Yes Quick", + "smart_ai": "Smart AI" + } + }, + "programs_ih": { + "state": { + "iot_special_grilled_vegetables": "Grilled vegetables" + } + }, + "programs_ov": { + "state": { + "iot_h20_clean": "h2O clean", + "pizza": "Pizza", + "tailor_bake": "Tailor bake" + } + }, + "programs_td": { + "state": { + "genius": "Genius", + "hqd_bath_towel": "Bath towel", + "hqd_bulky": "Bulky", + "hqd_cold_wind_30": "Cold wind 30 minutes", + "hqd_cold_wind_timing": "Cold wind", + "hqd_hot_wind_timing": "Hot wind", + "hqd_luxury": "Luxury", + "hqd_night_dry": "Night dry", + "hqd_refresh": "Refresh", + "hqd_timer": "\u05ea\u05d5\u05d6\u05de\u05df", + "hqd_warm_up": "Warm up", + "hqd_working_suit": "Working suit", + "iot_dry_synthetic_dry": "\u05e1\u05d9\u05e0\u05ea\u05d8\u05d9 \u05d9\u05d1\u05e9" + } + }, + "programs_wm": { + "state": { + "20_degrees_new_energy_label": "20 \u05de\u05e2\u05dc\u05d5\u05ea \u05e6\u05dc\u05d6\u05d9\u05d5\u05e1", + "active_steam": "\u05e7\u05b4\u05d9\u05d8\u05d5\u05b9\u05e8", + "active_wash": "\u05e9\u05d8\u05d9\u05e4\u05d4 \u05e4\u05e2\u05d9\u05dc\u05d4", + "active_wash_steam": "\u05e9\u05d8\u05d9\u05e4\u05d4 \u05e4\u05e2\u05d9\u05dc\u05d4", + "allergy_care": "\u05d8\u05d9\u05e4\u05d5\u05dc \u05d1\u05d0\u05dc\u05e8\u05d2\u05d9\u05d4", + "allergy_care_pro": "Allergy Care Pro", + "all_in_one_49": "All in One 49 '", + "all_in_one_59": "All in One 59 '", + "all_in_one_59_steam": "\u05e9\u05d8\u05d9\u05e4\u05d4 \u05e4\u05e2\u05d9\u05dc\u05d4", + "autocare": "\u05d8\u05d9\u05e4\u05d5\u05dc \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9", + "autoclean": "\u05e0\u05d9\u05e7\u05d5\u05d9 \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9", + "baby_60": "BABY_60", + "care_14": "\u05d8\u05d9\u05e4\u05d5\u05dc \u05de\u05d4\u05d9\u05e8 14 '", + "care_30": "\u05d8\u05d9\u05e4\u05d5\u05dc \u05de\u05d4\u05d9\u05e8 30 '", + "care_44": "\u05d8\u05d9\u05e4\u05d5\u05dc \u05de\u05d4\u05d9\u05e8 44 '", + "checkup": "\u05d1\u05bc\u05b0\u05d3\u05b4\u05d9\u05e7\u05b8\u05d4", + "cottons": "\u05db\u05d5\u05ea\u05e0\u05d4", + "cottons_prewash": "\u05db\u05d5\u05ea\u05e0\u05d4 + \u05db\u05d1\u05d9\u05e1\u05d4 \u05de\u05d5\u05e7\u05d3\u05de\u05ea", + "cotton_care_59": "Cotton Care 59 Min", + "delicate_59": "\u05e2\u05d3\u05d9\u05df 59 '", + "delicati_59": "DELICATI_59", + "delicati_59_steam": "DELICATI_59", + "drain_spin": "\u05e0\u05d9\u05e7\u05d5\u05d6 + \u05e1\u05d9\u05d1\u05d5\u05d1", + "easy_iron": "\u05d2\u05d9\u05d4\u05d5\u05e5 \u05e7\u05dc", + "eco_40_60_new_energy_label": "\u05d0\u05e7\u05d5 40-60", + "extra_care": "\u05d0\u05db\u05e4\u05ea\u05d9\u05d5\u05ea \u05de\u05d5\u05d2\u05d1\u05e8\u05ea", + "fitness": "\u05d8\u05d9\u05e4\u05d5\u05dc \u05d1\u05db\u05d5\u05e9\u05e8", + "fitness_care": "\u05d8\u05d9\u05e4\u05d5\u05dc \u05d1\u05db\u05d5\u05e9\u05e8", + "fresh_care": "\u05d8\u05d9\u05e4\u05d5\u05dc \u05d8\u05e8\u05d9", + "fresh_care_steam": "\u05d8\u05d9\u05e4\u05d5\u05dc \u05d8\u05e8\u05d9", + "handwash_wool": "\u05e9\u05d8\u05d9\u05e4\u05ea \u05d9\u05d3\u05d9\u05d9\u05dd + \u05e6\u05de\u05e8", + "high_dry": "\u05d9\u05d1\u05e9 \u05d1\u05d7\u05d5\u05dd \u05d2\u05d1\u05d5\u05d4", + "hqd_dry_synthetics": "\u05d9\u05d1\u05e9 \u05d1\u05d7\u05d5\u05dd \u05e0\u05de\u05d5\u05da", + "hygiene_60": "\u05d4\u05d9\u05d2\u05d9\u05d9\u05e0\u05d4 60 \u05de\u05e2\u05dc\u05d5\u05ea \u05e6\u05dc\u05d6\u05d9\u05d5\u05e1", + "intensive_40": "40\u00b0C \u05d0\u05d9\u05e0\u05d8\u05e0\u05e1\u05d9\u05d1\u05d9\u05d9\u05dd", + "iot_active_steam": "\u05e7\u05b4\u05d9\u05d8\u05d5\u05b9\u05e8", + "iot_active_wash_steam": "\u05e9\u05d8\u05d9\u05e4\u05d4 \u05e4\u05e2\u05d9\u05dc\u05d4", + "iot_allergy_care_pro": "Allergy Care Pro", + "iot_all_in_one_59_steam": "\u05e9\u05d8\u05d9\u05e4\u05d4 \u05e4\u05e2\u05d9\u05dc\u05d4", + "iot_checkup": "\u05d1\u05bc\u05b0\u05d3\u05b4\u05d9\u05e7\u05b8\u05d4", + "iot_delicati_59_steam": "DELICATI_59", + "iot_dry_air_refresh": "\u05e8\u05e2\u05e0\u05d5\u05df \u05d0\u05d5\u05d5\u05d9\u05e8", + "iot_dry_anti_mites": "\u05e0\u05d2\u05d3 \u05e7\u05e8\u05d3\u05d9\u05ea", + "iot_dry_baby": "\u05ea\u05b4\u05d9\u05e0\u05d5\u05b9\u05e7", + "iot_dry_backpacks": "\u05ea\u05d9\u05e7\u05d9 \u05d2\u05d1", + "iot_dry_bathrobe": "\u05d7\u05dc\u05d5\u05e7\u05d9 \u05e8\u05d7\u05e6\u05d4", + "iot_dry_bed_linen": "\u05de\u05e6\u05e2\u05d9\u05dd", + "iot_dry_cotton_dry": "\u05db\u05d5\u05ea\u05e0\u05d4 \u05d9\u05d1\u05e9\u05d4", + "iot_dry_cuddly_toys": "\u05e6\u05e2\u05e6\u05d5\u05e2\u05d9 \u05d7\u05d9\u05d1\u05d5\u05e7", + "iot_dry_curtains": "\u05d5\u05d9\u05dc\u05d5\u05e0\u05d5\u05ea", + "iot_dry_dehumidifier": "\u05de\u05e1\u05d9\u05e8 \u05dc\u05d7\u05d5\u05ea", + "iot_dry_delicates_antiallergy": "\u05e2\u05d3\u05d9\u05df \u05e0\u05d2\u05d3 \u05d0\u05dc\u05e8\u05d2\u05d9\u05d4", + "iot_dry_delicate_tablecloths": "\u05de\u05e4\u05d5\u05ea \u05e2\u05d3\u05d9\u05e0\u05d5\u05ea", + "iot_dry_denim_jeans": "\u05d2'\u05d9\u05e0\u05e1", + "iot_dry_easy_iron_cotton": "\u05d1\u05e8\u05d6\u05dc \u05e7\u05dc - \u05db\u05d5\u05ea\u05e0\u05d4", + "iot_dry_easy_iron_synthetics": "\u05e7\u05dc \u05d1\u05e8\u05d6\u05dc - \u05e1\u05d9\u05e0\u05ea\u05d8\u05d9\u05d9\u05dd", + "iot_dry_gym_fit": "\u05db\u05d5\u05e9\u05e8 \u05db\u05d5\u05e9\u05e8 - \u05db\u05d5\u05e9\u05e8", + "iot_dry_lingerie": "\u05dc\u05b4\u05d1\u05e0\u05b5\u05d9 \u05e0\u05b8\u05e9\u05c1\u05b4\u05d9\u05dd", + "iot_dry_mixed_dry": "\u05de\u05e2\u05d5\u05e8\u05d1\u05d1 \u05d9\u05d1\u05e9", + "iot_dry_rapid_60_min_delicates": "\u05de\u05d4\u05d9\u05e8 60 '- \u05e2\u05d3\u05d9\u05e0\u05d9\u05dd", + "iot_dry_shirts": "\u05d7\u05d5\u05dc\u05e6\u05d5\u05ea", + "iot_dry_swimsuits_and_bikinis": "\u05d1\u05d2\u05d3\u05d9 \u05d9\u05dd \u05d5\u05d1\u05d9\u05e7\u05d9\u05e0\u05d9", + "iot_dry_synthetics": "\u05e1\u05d9\u05e0\u05ea\u05d8\u05d9 \u05d9\u05d1\u05e9", + "iot_dry_synthetic_dry": "\u05e1\u05d9\u05e0\u05ea\u05d8\u05d9 \u05d9\u05d1\u05e9", + "iot_dry_tablecloths": "\u05de\u05e4\u05d5\u05ea \u05e9\u05d5\u05dc\u05d7\u05df", + "iot_dry_technical_fabrics": "\u05d1\u05d3\u05d9\u05dd \u05d8\u05db\u05e0\u05d9\u05d9\u05dd", + "iot_dry_warm_embrace": "\u05d7\u05d9\u05d1\u05d5\u05e7 \u05d7\u05dd", + "iot_dry_wool_dry": "\u05e6\u05de\u05e8 \u05d9\u05d1\u05e9", + "iot_easy_iron": "\u05d2\u05d9\u05d4\u05d5\u05e5 \u05e7\u05dc", + "iot_fresh_care_steam": "\u05d8\u05d9\u05e4\u05d5\u05dc \u05d8\u05e8\u05d9", + "iot_synthetic_and_coloured_steam": "\u05e1\u05d9\u05e0\u05d8\u05d8\u05d9 \u05d5\u05e6\u05d1\u05e2\u05d5\u05e0\u05d9", + "iot_wash_anti_mites": "\u05e0\u05d2\u05d3 \u05e7\u05e8\u05d3\u05d9\u05ea", + "iot_wash_anti_odor": "\u05e0\u05d2\u05d3 \u05e8\u05d9\u05d7", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "\u05d7\u05d9\u05d8\u05d5\u05d9 \u05dc\u05ea\u05d9\u05e0\u05d5\u05e7\u05d5\u05ea", + "iot_wash_backpacks": "\u05ea\u05d9\u05e7\u05d9 \u05d2\u05d1", + "iot_wash_bathrobe": "\u05d7\u05dc\u05d5\u05e7\u05d9 \u05e8\u05d7\u05e6\u05d4 \u05d5\u05d1\u05d3\u05d9\u05dd \u05e0\u05e7\u05d1\u05d5\u05d1\u05d9\u05d9\u05dd", + "iot_wash_bed_linen": "\u05de\u05e6\u05e2\u05d9\u05dd", + "iot_wash_bed_linen_zelig": "\u05de\u05e6\u05e2\u05d9\u05dd", + "iot_wash_bleaching": "\u05d4\u05b7\u05dc\u05d1\u05bc\u05b8\u05e0\u05b8\u05d4", + "iot_wash_blood_stains": "\u05db\u05ea\u05de\u05d9 \u05d3\u05dd", + "iot_wash_cashmere": "\u05e7\u05e9\u05de\u05d9\u05e8", + "iot_wash_chocolate_stains": "\u05db\u05ea\u05de\u05d9 \u05e9\u05d5\u05e7\u05d5\u05dc\u05d3", + "iot_wash_cold_wash": "\u05e9\u05d8\u05d9\u05e4\u05d4 \u05e7\u05e8\u05d4", + "iot_wash_colored": "\u05e6\u05d1\u05e2\u05d5\u05e0\u05d9", + "iot_wash_colored_anti_stain": "\u05e0\u05d2\u05d3 \u05db\u05ea\u05dd \u05e6\u05d1\u05e2\u05d5\u05e0\u05d9", + "iot_wash_colored_delicate": "\u05e6\u05d1\u05e2\u05d5\u05e0\u05d9 \u05e2\u05d3\u05d9\u05df", + "iot_wash_coloured": "\u05e6\u05d1\u05e2\u05d5\u05e0\u05d9", + "iot_wash_cotton": "\u05db\u05d5\u05ea\u05e0\u05d4", + "iot_wash_cuddly_toys": "\u05e6\u05e2\u05e6\u05d5\u05e2\u05d9 \u05d7\u05d9\u05d1\u05d5\u05e7", + "iot_wash_curtains": "\u05d5\u05d9\u05dc\u05d5\u05e0\u05d5\u05ea", + "iot_wash_curtains_zelig": "\u05d5\u05d9\u05dc\u05d5\u05e0\u05d5\u05ea", + "iot_wash_dark": "\u05d0\u05e4\u05dc", + "iot_wash_darks_and_coloured_44": "\u05d7\u05d1\u05d9\u05d1\u05d9\u05dd \u05d5\u05e6\u05d1\u05e2\u05d5\u05e0\u05d9\u05d9\u05dd 44 '", + "iot_wash_darks_and_coloured_59": "\u05d7\u05d1\u05d9\u05d1\u05d9\u05dd \u05d5\u05e6\u05d1\u05e2\u05d5\u05e0\u05d9 59 '", + "iot_wash_darks_and_coloured_xl": "\u05d7\u05e4\u05e6\u05d9\u05dd \u05d5\u05e6\u05d1\u05e2 XL", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "\u05e2\u05d3\u05d9\u05e0\u05d9\u05dd", + "iot_wash_delicate_antiallergy": "\u05d0\u05e0\u05d8\u05d9 \u05d0\u05dc\u05e8\u05d2\u05d9\u05d4 \u05e2\u05d3\u05d9\u05df", + "iot_wash_delicate_antiallergy_zelig": "\u05d0\u05e0\u05d8\u05d9 \u05d0\u05dc\u05e8\u05d2\u05d9\u05d4 \u05e2\u05d3\u05d9\u05df", + "iot_wash_delicate_colors": "\u05e6\u05d1\u05e2\u05d5\u05e0\u05d9 \u05e2\u05d3\u05d9\u05df", + "iot_wash_delicate_dark": "\u05db\u05d4\u05d4 \u05e2\u05d3\u05d9\u05df", + "iot_wash_delicate_tablecloths": "\u05de\u05e4\u05d5\u05ea \u05e2\u05d3\u05d9\u05e0\u05d5\u05ea", + "iot_wash_delicate_whites": "\u05dc\u05d1\u05e0\u05d9\u05dd \u05e2\u05d3\u05d9\u05e0\u05d9\u05dd", + "iot_wash_denim_jeans": "\u05d2'\u05d9\u05e0\u05e1", + "iot_wash_diving_suits": "\u05d7\u05dc\u05d9\u05e4\u05d5\u05ea \u05e6\u05dc\u05d9\u05dc\u05d4", + "iot_wash_diving_suits_zelig": "\u05d7\u05dc\u05d9\u05e4\u05d5\u05ea \u05e6\u05dc\u05d9\u05dc\u05d4", + "iot_wash_down_jackets": "\u05de\u05e2\u05d9\u05dc\u05d9 \u05e4\u05d5\u05da", + "iot_wash_down_jackets_zelig": "\u05de\u05e2\u05d9\u05dc\u05d9 \u05e4\u05d5\u05da", + "iot_wash_fruit_stains": "\u05db\u05ea\u05de\u05d9 \u05e4\u05e8\u05d9", + "iot_wash_gym_fit": "\u05db\u05d5\u05e9\u05e8 \u05db\u05d5\u05e9\u05e8 - \u05db\u05d5\u05e9\u05e8", + "iot_wash_handwash": "\u05e9\u05d8\u05d9\u05e4\u05ea \u05d9\u05d3\u05d9\u05d9\u05dd", + "iot_wash_handwash_colored": "\u05e9\u05d8\u05d9\u05e4\u05ea \u05d9\u05d3\u05d9\u05d9\u05dd \u05d1\u05e6\u05d1\u05e2", + "iot_wash_handwash_dark": "\u05e9\u05d8\u05d9\u05e4\u05ea \u05d9\u05d3\u05d9\u05d9\u05dd \u05db\u05d4\u05d4", + "iot_wash_lingerie": "\u05dc\u05b4\u05d1\u05e0\u05b5\u05d9 \u05e0\u05b8\u05e9\u05c1\u05b4\u05d9\u05dd", + "iot_wash_masks_refresh": "\u05de\u05e1\u05db\u05d5\u05ea \u05e8\u05e2\u05e0\u05df", + "iot_wash_masks_sanification": "\u05d7\u05d9\u05d8\u05d5\u05d9 \u05de\u05e1\u05db\u05d5\u05ea", + "iot_wash_mats": "\u05de\u05d7\u05e6\u05dc\u05d5\u05ea", + "iot_wash_men_s_trousers": "\u05de\u05db\u05e0\u05e1\u05d9 \u05d2\u05d1\u05e8\u05d9\u05dd", + "iot_wash_mixed": "\u05de\u05e2\u05d5\u05e8\u05d1", + "iot_wash_mix_and_coloured_44": "\u05dc\u05e2\u05e8\u05d1\u05d1 \u05d5\u05e6\u05d1\u05e2\u05d5\u05e0\u05d9 44 '", + "iot_wash_mix_and_coloured_59": "\u05de\u05d9\u05e7\u05e1 \u05d5\u05e6\u05d1\u05e2\u05d5\u05e0\u05d9 59 '", + "iot_wash_mix_and_coloured_xl": "\u05de\u05e2\u05e8\u05d1\u05d1\u05d9\u05dd \u05d5\u05e6\u05d1\u05e2\u05d9\u05dd XL", + "iot_wash_new_clothes": "\u05d1\u05d2\u05d3\u05d9\u05dd \u05d7\u05d3\u05e9\u05d9\u05dd", + "iot_wash_perfect_white": "\u05dc\u05d1\u05df \u05de\u05d5\u05e9\u05dc\u05dd", + "iot_wash_pets": "\u05d7\u05d9\u05d5\u05ea \u05de\u05d7\u05de\u05d3", + "iot_wash_pets_steam": "\u05d7\u05d9\u05d5\u05ea \u05de\u05d7\u05de\u05d3", + "iot_wash_playsuits": "\u05d7\u05dc\u05d9\u05e4\u05d5\u05ea \u05de\u05e9\u05d7\u05e7", + "iot_wash_rapid_14": "\u05de\u05d4\u05d9\u05e8 14 '", + "iot_wash_rapid_30": "\u05de\u05d4\u05d9\u05e8 30 '", + "iot_wash_rapid_44": "\u05de\u05d4\u05d9\u05e8 44 '", + "iot_wash_rapid_59": "\u05de\u05d4\u05d9\u05e8 59 '", + "iot_wash_refresh_14_min": "\u05e8\u05e2\u05e0\u05df 14 \u05d3\u05e7\u05d5\u05ea", + "iot_wash_resistant_colored": "\u05e6\u05d1\u05e2\u05d5\u05e0\u05d9 \u05e2\u05de\u05d9\u05d3", + "iot_wash_resistant_dark": "\u05db\u05d4\u05d4 \u05e2\u05de\u05d9\u05d3", + "iot_wash_resistant_whites": "\u05dc\u05d1\u05e0\u05d9\u05dd \u05e2\u05de\u05d9\u05d3\u05d9\u05dd", + "iot_wash_rinse": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3", + "iot_wash_shirts": "\u05d7\u05d5\u05dc\u05e6\u05d5\u05ea", + "iot_wash_silk": "\u05de\u05e9\u05d9", + "iot_wash_ski_suit": "\u05d7\u05dc\u05d9\u05e4\u05ea \u05e1\u05e7\u05d9", + "iot_wash_ski_suit_zelig": "\u05d7\u05dc\u05d9\u05e4\u05ea \u05e1\u05e7\u05d9", + "iot_wash_spin": "\u05e1\u05d9\u05d1\u05d5\u05d1", + "iot_wash_sport": "\u05e1\u05e4\u05bc\u05d5\u05b9\u05e8\u05d8", + "iot_wash_stains_remover": "\u05de\u05e1\u05d9\u05e8 \u05db\u05ea\u05de\u05d9\u05dd", + "iot_wash_swimsuits_and_bikinis": "\u05d1\u05d2\u05d3\u05d9 \u05d9\u05dd \u05d5\u05d1\u05d9\u05e7\u05d9\u05e0\u05d9", + "iot_wash_synthetic": "\u05e1\u05d9\u05e0\u05ea\u05d8\u05d9\u05d9\u05dd", + "iot_wash_tablecloths": "\u05de\u05e4\u05d5\u05ea \u05e9\u05d5\u05dc\u05d7\u05df", + "iot_wash_technical_fabrics": "\u05d1\u05d3\u05d9\u05dd \u05d8\u05db\u05e0\u05d9\u05d9\u05dd", + "iot_wash_technical_fabrics_zelig": "\u05d1\u05d3\u05d9\u05dd \u05d8\u05db\u05e0\u05d9\u05d9\u05dd", + "iot_wash_technical_jackets": "\u05d6'\u05e7\u05d8\u05d9\u05dd \u05d8\u05db\u05e0\u05d9\u05d9\u05dd", + "iot_wash_technical_jackets_zelig": "\u05d6'\u05e7\u05d8\u05d9\u05dd \u05d8\u05db\u05e0\u05d9\u05d9\u05dd", + "iot_wash_trainers": "\u05de\u05d0\u05de\u05e0\u05d9\u05dd", + "iot_wash_whites": "\u05dc\u05b0\u05d1\u05b8\u05e0\u05b4\u05d9\u05dd", + "iot_wash_whites_44": "\u05dc\u05d1\u05e0\u05d9\u05dd 44 '", + "iot_wash_whites_59": "\u05dc\u05d1\u05e0\u05d9\u05dd 59 '", + "iot_wash_whites_xl": "\u05dc\u05d1\u05e0\u05d9\u05dd XL", + "iot_wash_wine_stains": "\u05db\u05ea\u05de\u05d9 \u05d9\u05d9\u05df", + "iot_wash_wool": "\u05e6\u05b6\u05de\u05b6\u05e8", + "jeans": "\u05d2\u05b4'\u05d9\u05e0\u05e1", + "low_dry": "\u05d9\u05d1\u05e9 \u05d1\u05d7\u05d5\u05dd \u05e0\u05de\u05d5\u05da", + "mixed_and_colored_59": "\u05de\u05e2\u05d5\u05e8\u05d1 \u05d5\u05e6\u05d1\u05e2\u05d5\u05e0\u05d9 59 '", + "night_and_day": "\u05dc\u05d9\u05dc\u05d4 \u05d5\u05d9\u05d5\u05dd", + "night_wash": "Night Wash", + "perfect_59": "\u05de\u05d5\u05e9\u05dc\u05dd 59 '", + "perfect_whites_59": "\u05dc\u05d1\u05df \u05de\u05d5\u05e9\u05dc\u05dd", + "rapid_wash_and_dry_59_min": "\u05dc\u05e9\u05d8\u05d5\u05e3 \u05d5\u05dc\u05d9\u05d9\u05d1\u05e9 59 '", + "resistant_cotton": "\u05db\u05d5\u05ea\u05e0\u05d4", + "rinse": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3", + "silent_night": "Night Wash", + "soft_care": "\u05d8\u05d9\u05e4\u05d5\u05dc \u05e8\u05da", + "special_49": "\u05de\u05d9\u05d5\u05d7\u05d3 49 '", + "sport_39": "\u05e1\u05e4\u05d5\u05e8\u05d8 39 '", + "sport_plus_29": "\u05e1\u05e4\u05d5\u05e8\u05d8 \u05e4\u05dc\u05d5\u05e1 29 \"", + "steam_39": "\u05e7\u05d9\u05d8\u05d5\u05e8 39 '", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro", + "steam_care_pro_delicates": "Steam Care Pro", + "steam_care_pro_synthetic": "Steam Care Pro", + "synthetics": "\u05e1\u05d9\u05e0\u05ea\u05d8\u05d9\u05d9\u05dd", + "synthetic_and_coloured": "\u05e1\u05d9\u05e0\u05d8\u05d8\u05d9 \u05d5\u05e6\u05d1\u05e2\u05d5\u05e0\u05d9", + "synthetic_and_coloured_steam": "\u05e1\u05d9\u05e0\u05d8\u05d8\u05d9 \u05d5\u05e6\u05d1\u05e2\u05d5\u05e0\u05d9", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "\u05d8\u05d9\u05e4\u05d5\u05dc \u05d8\u05d5\u05d8\u05d0\u05dc\u05d9", + "tumbling": "\u05e0\u05d5\u05e4\u05dc\u05d9\u05dd", + "wool_and_delicates_49": "Wool/Delicates 49'", + "wool_dry": "\u05e6\u05de\u05e8 \u05d9\u05d1\u05e9", + "wool_soft_care": "Wool & Soft Care" + } + } } } } \ No newline at end of file diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index 4543537..bb2fbe9 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -66,6 +66,650 @@ "6": "Hot rinse" } } + }, + "select": { + "programs_dw": { + "state": { + "59_min": "Brzi 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "Automatski univerzalni 50 - 60\u00b0C", + "auto_universal_plus": "Automatski univerzalni+ 65 - 75\u00b0C", + "auto_universal_plus_soil": "Automatski univerzalni+ 65 - 75\u00b0C", + "auto_universal_soil": "Automatski univerzalni 50 - 60\u00b0C", + "auto_wash": "Automatsko pranje", + "auto_wash_soil": "Automatsko pranje", + "classe_a_59": "A klasa 59' 65\u00b0C", + "delicate": "Osjetljivo 45\u00b0C", + "dishwasher_care": "Ciklus \u010di\u0161\u0107enja kamenca", + "eco": "Ekolo\u0161ki", + "eco_asynch": "Eco 45\u00b0C", + "eco_bldc": "Eco 45\u00b0C", + "eco_synch": "Eco 45\u00b0C", + "gentle_wash": "Gentle wash", + "glass": "Staklo", + "glass _care": "Glass Care", + "glassware": "Glassware (Stakleno posu\u0111e) 45 \u00b0C", + "glass_care": "Glass Care", + "hygiene": "Hygiene", + "hygiene_plus": "Hygiene+ (Higijena+) 75 \u00b0C", + "intensive": "Intenzivno ", + "intensive_rapid": "Sna\u017ean i brz", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "Automatski univerzalni 50 - 60\u00b0C", + "iot_auto_wash_soil": "Automatsko pranje", + "iot_baby_care": "Baby Care", + "iot_breakfast": "Doru\u010dak", + "iot_checkup": "Check Up ciklus provjere", + "iot_china_crystals": "Kristal", + "iot_classe_a_59": "Brzi 59'", + "iot_cocktail_glasses": "Koktel \u010da\u0161e", + "iot_cocktail_glasses_soil": "Koktel \u010da\u0161e", + "iot_daily_care": "Daily Care", + "iot_daily_care_soil": "Daily Care", + "iot_delicate": "Osjetljivo 45\u00b0C", + "iot_dinner_for_two": "Ve\u010dera za dvoje", + "iot_dinner_for_two_soil": "Ve\u010dera za dvoje", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "Eco 45\u00b0C", + "iot_eco_bldc": "Eco 45\u00b0C", + "iot_eco_synch": "Eco 45\u00b0C", + "iot_extra_hygiene": "Extra Hygiene", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "Happy Hour", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "Party", + "iot_party_soil": "Party", + "iot_pizza_menu": "Pizza", + "iot_pizza_menu_soil": "Pizza", + "iot_plastic_tupperware": "Plastika", + "iot_porcelain": "Porculan", + "iot_pot_&_pans": "Lonci & tave", + "iot_pot_&_pans_soil": "Lonci & tave", + "iot_power_mix_wash": "Power Mix Wash", + "iot_power_mix_wash_soil": "Power Mix Wash", + "iot_prewash": "Pretpranje", + "iot_pyrex_and_glassware": "Pireks & obi\u010dno staklo", + "iot_rapid_29": "Brzo 29'", + "iot_rapid_39": "Rapid (Brzi program) 39 minuta 60 \u00b0C", + "iot_single": "Samac", + "iot_steam": "Steam (Para) 75 \u00b0C", + "iot_super_flash": "Super Flash", + "iot_super_wash": "Super Wash", + "iot_turbopower": "TurboPower", + "iot_universal": "Universal (Univerzalni) 60 \u00b0C", + "iot_wok_grids_maxi_pans": "Posebne tave (Wok - re\u0161etke & Maxi tave)", + "iot_wok_grids_maxi_pans_soil": "Posebne tave (Wok - re\u0161etke & Maxi tave)", + "iot_yes_quick_cycle": "Yes Quick", + "night": "Ultra tihi 55\u00b0C", + "prewash": "Pretpranje", + "rapid_20": "Brzi 20'", + "rapid_24": "Brzo 24'", + "rapid_29": "Brzo 29' 50\u00b0C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "Rapid (Brzi program) 39 minuta 60 \u00b0C", + "rapid_49": "Brzi 49'", + "rapid_59": "Brzi 59'", + "sanitising": "Dezinficiranje", + "silence": "Silence", + "silent": "No\u0107", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "special": "Posebno", + "special_pw_prz": "Posebno", + "steam": "Steam (Para) 75 \u00b0C", + "steam_plus": "Para plus 75\u00b0C", + "total_care": "Total Care 50\u00b0C", + "ultra_silence": "Ultra tihi 55\u00b0C", + "ultra_silent": "Ultra tihi 55\u00b0C", + "universal": "Universal (Univerzalni) 60 \u00b0C", + "universal_plus": "Universal Plus (Univerzalni plus) 70 \u00b0C", + "zoom_39": "Zoom 39 min" + } + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "Pr\u017eeni ribani krumpir", + "iot_special_beef_fillet": "Gove\u0111i file", + "iot_special_beef_veal_stew": "Gove\u0111i i tele\u0107i gula\u0161", + "iot_special_boiled_rice": "Kuhana ri\u017ea", + "iot_special_chicken_breast": "Pile\u0107a prsa", + "iot_special_chicken_legs": "Pile\u0107i bataci", + "iot_special_chocolate_pudding": "\u010cokoladni puding", + "iot_special_entrecote": "Odrezak", + "iot_special_fresh_tuna": "Svje\u017ea tuna", + "iot_special_grilled_vegetables": "Povr\u0107e na \u017earu", + "iot_special_lamb_cutlet": "Janje\u0107i kotlet", + "iot_special_meatballs": "Mesne okruglice", + "iot_special_minestrone": "Minestrone", + "iot_special_mussels": "Dagnje", + "iot_special_omelette": "Omlet", + "iot_special_pancakes": "Pala\u010dinke", + "iot_special_paris_style_peas": "Gra\u0161ak na pari\u0161ki na\u010din", + "iot_special_poached_eggs": "Po\u0161irana jaja", + "iot_special_pork_fillet": "Svinjski file", + "iot_special_pork_ribs": "Svinjska rebarca", + "iot_special_prawns": "Kozice", + "iot_special_quinoa": "Kvinoja", + "iot_special_ratatouille": "Ratatouille", + "iot_special_salmon_fillet": "Filet lososa", + "iot_special_saute_potatoes": "Pirjani krumpir", + "iot_special_scallops": "Jakobove kapice", + "iot_special_scrambled_eggs": "Kajgana", + "iot_special_spelt": "Pir", + "iot_special_veggy_noodles": "Rezanci s povr\u0107em", + "iot_special_white_fish_fillet": "Filet bijele ribe", + "iot_standard_boiling": "Boiling (Prokuhavanje)", + "iot_standard_frying": "Pr\u017eenje", + "iot_standard_keep_warm": "Odr\u017eite toplinu", + "iot_standard_melting": "Otapanje", + "iot_standard_simmering": "Simmering (Pirjanje)" + } + }, + "programs_ov": { + "state": { + "bakery": "Tjestenina i tijesta", + "bakery_steam": "Kruh pe\u010den na pari", + "bottom_heating": "Donji grija\u010d", + "bottom_heating_fan": "Donji grija\u010d + Ventilator", + "bread": "Kruh", + "bread_steam": "Peciva pe\u010dena na pari", + "convection_fan": "Konvekcija + Ventilator", + "convection_fan_turnspit": "Konvekcija + ventilator + ra\u017eanj", + "conventional": "Konvekcijska", + "conventional_turnspit": "Konvekcija + ra\u017eanj", + "defrost": "Odmrzavanje", + "descaling": "Uklanjanje kamenca", + "fish": "Riba", + "fish_steam": "Riba kuhana na pari", + "grill_cata": "Pe\u010denje", + "grill_fan_cata": "Ventilator za pe\u010denje", + "grill_fan_pyro": "Grija\u010d + ventilator", + "grill_pyro": "Grija\u010d", + "h20_clean": "H2O-Clean", + "iot_bread": "Kruh", + "iot_h20_clean": "h2O clean", + "leavening": "Dizanje tijesta", + "low_temp_cooking": "Kuhanje na niskoj temperaturi", + "low_temp_cooking_fish": "Kuhanje na niskoj temperaturi - riba", + "low_temp_cooking_fish_steam": "Kuhanje na pari i na niskoj temperaturi - riba", + "low_temp_cooking_meat": "Kuhanje na niskoj temperaturi - meso", + "low_temp_cooking_meat_steam": "Kuhanje na pari i na niskoj temperaturi - meso", + "low_temp_cooking_steam": "Kuhanje na pari i na niskoj temperaturi", + "meat": "Meso", + "meat_steam": "Meso kuhano na pari", + "multi_level": "Vi\u0161e razina", + "paella": "Paella", + "pasta_and_bakery": "Tjestenina i tijesta", + "pizza": "Pizza", + "pyrolysis": "Piroliza", + "pyrolysis_plus": "Piroliza +", + "red_meat": "Crveno meso", + "red_meat_steam": "Crveno meso kuhano na pari", + "regenerate": "Regeneracija", + "soft_plus": "Mekano+", + "super_grill": "Super ro\u0161tilj", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_desctiption": "Ova je funkcija idealna za odr\u017eavanje mekane hrane iznutra i hrskave izvana.\r\r\r\nOvom se funkcijom smanjuje koli\u010dina potrebnih masno\u0107a ili ulja, za zdravu prehranu.\r\r\r\nKombiniranjem grija\u010da s pulsiraju\u0107im ciklusom zraka jam\u010de se ujedna\u010deni rezultati pe\u010denja.", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Povr\u0107e", + "vegetables_cata": "Povr\u0107e", + "vegetables_pyro": "Povr\u0107e", + "water_discharge": "Odvod vode", + "white_meat": "Bijelo meso", + "white_meat_steam": "Bijelo meso kuhano na pari" + } + }, + "programs_td": { + "state": { + "active_dry": "Aktivno su\u0161enje", + "allergy_care": "Antialergijski", + "all_in_one": "All in One", + "antiallergy": "Antialergijski", + "anti_odours": "Protiv neugodnih mirisa", + "auto_care": "Auto Care", + "baby": "Dje\u010dje rublje", + "bed_quilt": "Pokriva\u010di", + "care_30": "Njega 30", + "care_45": "Njega 45", + "care_59": "Njega 59", + "coloured": "\u0160areno", + "daily_45_min": "Dnevni 45'", + "daily_perfect_59_min": "Dnevni Perfect 59'", + "darks_and_coloured": "Tamno & \u0160areno", + "delicates": "Osjetljivo", + "duvet": "Popluni", + "eco": "Ekolo\u0161ki pamuk", + "ecospeed_cottons": "Ecospeed Pamuk", + "ecospeed_delicates": "Ecospeed osjetljivo", + "ecospeed_mixed": "Ecospeed Mije\u0161ane tkanine", + "extra_hygiene": "Extra higijenski", + "fitness": "Fitness", + "fresh_care": "Svje\u017ea njega", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Ru\u010dnici", + "hqd_bed_sheets": "Plahte", + "hqd_bulky": "Glomazni komadi", + "hqd_casual": "Opu\u0161teno", + "hqd_cold_wind_30": "Hladni zrak, 30 minuta", + "hqd_cold_wind_timing": "Hladni zrak ", + "hqd_cotton": "Pamuk", + "hqd_curtain": "Zavjese", + "hqd_delicate": "Osjetljivo rublje", + "hqd_diaper": "Pelene", + "hqd_duvet": "Poplun", + "hqd_feather": "Jakne punjene paperjem", + "hqd_hot_wind_timing": "Vru\u0107i zrak", + "hqd_hygienic": "Higijenizacija", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Jakne", + "hqd_jeans": "Traperice", + "hqd_luxury": "Luxury", + "hqd_mix": "Mije\u0161ano rublje", + "hqd_night_dry": "Su\u0161enje preko no\u0107i", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious Cure", + "hqd_quick_20": "Brzo 20", + "hqd_quick_30": "Brzo 30", + "hqd_quick_dry": "Brzo su\u0161enje", + "hqd_quilt": "Popluni", + "hqd_refresh": "Protiv neugodnih mirisa", + "hqd_school_uniform": "\u0160kolska uniforma", + "hqd_shirt": "Majice", + "hqd_shoes": "Cipele", + "hqd_silk": "Svila", + "hqd_sports": "Sportska odje\u0107a", + "hqd_synthetics": "Sintetika", + "hqd_timer": "Vremenski definirano", + "hqd_towel": "Ru\u010dnici", + "hqd_underwear": "Donje rublje", + "hqd_warm_up": "Zagrijavanje", + "hqd_wool": "Vuna", + "hqd_working_suit": "Radna odje\u0107a", + "hygiene": "Higijena", + "iot_checkup": "Kontrolni pregled", + "iot_dry_anti_mites": "Protiv grinja", + "iot_dry_baby": "Dje\u010dje rublje", + "iot_dry_backpacks": "Ruksaci", + "iot_dry_bathrobe": "Kupaonski ogrta\u010di", + "iot_dry_bed_linen": "Posteljina", + "iot_dry_bed_quilt": "Pokriva\u010di", + "iot_dry_cotton": "Pamuk", + "iot_dry_cuddly_toys": "Pli\u0161ane igra\u010dke", + "iot_dry_curtains": "Zavjese", + "iot_dry_dehumidifier": "Odstranjiva\u010d vlage", + "iot_dry_delicates": "Osjetljivo", + "iot_dry_delicate_tablecloths": "Osjetljivi stolnjaci", + "iot_dry_denim_jeans": "Traper \u2013 Traperice", + "iot_dry_down_jacket": "Jakna", + "iot_dry_duvet": "Popluni", + "iot_dry_easy_iron_cotton": "Super Easy Iron", + "iot_dry_easy_iron_synthetics": "Super Easy Iron za sinteti\u010dko rublje", + "iot_dry_gym_fit": "Fitness odje\u0107a", + "iot_dry_lingerie": "Donje rublje", + "iot_dry_mixed": "Mije\u0161ane tkanine", + "iot_dry_playsuits": "Kombinezoni", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Brzi program 59\u2019.", + "iot_dry_refresh": "Osvje\u017eavanje", + "iot_dry_regenerates_waterproof": "Regeneracija vodootporne odje\u0107e", + "iot_dry_relax_creases": "Smanjenje nabora", + "iot_dry_shirts": "Ko\u0161ulje", + "iot_dry_small_load": "Mali kapacitet", + "iot_dry_swimsuits_and_bikinis": "Kupa\u0107i kostimi", + "iot_dry_synthetics": "Sintetika", + "iot_dry_synthetic_dry": "Suha sintetika", + "iot_dry_tablecloths": "Stolnjaci", + "iot_dry_technical_fabrics": "Tehni\u010dko platno", + "iot_dry_warm_embrace": "Zagrijavanje", + "iot_dry_wool": "Woolmark", + "jeans": "Traper", + "mix_and_dry": "Mix&Dry", + "pets": "Ku\u0107ni ljubimci", + "pre_iron": "Prije gla\u010danja", + "rapid_30": "Rapid 30", + "rapid_45": "Brzi 45 min", + "rapid_59": "Perfect Rapid 59 Min", + "refresh": "Osvje\u017eavanje", + "relax_creases": "Smanjenje nabora", + "saving_30_min": "ECO 30'", + "shirts": "Ko\u0161ulje", + "shoes": "Cipele", + "small_load": "Mali kapacitet", + "soft_care": "Soft Care", + "sport_plus": "Sport Plus", + "super_easy_iron_misti": "Iznimno jednostavno gla\u010danje za raznovrsne tkanine", + "super_easy_iron_xxl": "Iznimno jednostavno gla\u010danje XXL", + "super_fast_cottons": "Super brzi Pamuk", + "super_fast_delicates": "Super brzi Osjetljivo", + "synthetics": "Sintetika", + "total_care": "Total Care", + "trainers": "Trenirke i sportska obu\u0107a", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Regeneracija vodootporne odje\u0107e", + "whites": "Bijelo", + "wool": "Su\u0161enje vune", + "woolmark": "Woolmark", + "xxl_load": "XXL kapacitet", + "zoom_59": "Zoom\u00a059" + } + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "20\u00b0 \u0161areno i pamu\u010dno rublje", + "20_degrees_new_energy_label": "20\u00b0C", + "active_steam": "Para", + "active_wash": "Aktivno pranje", + "active_wash_steam": "Aktivno pranje", + "allergy_care": "Alergijska njega", + "allergy_care_pro": "Alergijska njega Pro", + "all_in_one_49": "Sve u jednom 49\u2019.", + "all_in_one_59": "Sve u jednom 59\u2019.", + "all_in_one_59_steam": "Aktivno pranje + para", + "autocare": "Automatska njega", + "autoclean": "\u010ci\u0161\u0107enje bubnja", + "baby_60": "All Baby 60\u00b0C", + "care_14": "Rapid Care 14'", + "care_30": "Rapid Care 30'", + "care_44": "Rapid Care 44'", + "checkup": "Kontrolni pregled", + "colour_59": "\u0160areno 59'", + "colour_59_steam": "Boje 59' + para", + "cottons": "Pamuk", + "cottons_prewash": "Pamuk + Pretpranje", + "cottons_steam": "Pamuk + Para", + "cotton_care_59": "Pamuk 59 Min", + "delicate_59": "Osjetljivo rublje 59\u2019", + "delicate_silk": "Osjetljiva svila", + "delicate_silk_steam": "Osjetljiva svila + para", + "delicati_59": "Osjetljivo rublje 59\u2019", + "delicati_59_steam": "Osjetljivo rublje 59\u2019", + "drain_spin": "Ispiranje i centrifuga", + "easy_iron": "Easy Iron - lak\u0161e gla\u010danje", + "eco_40_60_new_energy_label": "Eco 40-60", + "extra_care": "Dodatna Njega", + "fitness": "Fitness Care", + "fitness_care": "Fitness Care", + "fresh_care": "Fresh Care", + "fresh_care_steam": "Svje\u017ea njega + para", + "handwash_wool": "Ru\u010dno pranje i vuna", + "high_dry": "Suhi pamuk", + "hqd_20_degrees": "Pamuk 20\u00a0\u2103", + "hqd_allergy": "Alergijska njega", + "hqd_autoclean": "\u010ci\u0161\u0107enje bubnja", + "hqd_babycare": "Baby Care", + "hqd_checkup": "Kontrolni pregled", + "hqd_cottons": "Pamuk", + "hqd_delicate": "Osjetljivo rublje", + "hqd_delicate_cradle": "Osjetljivo rublje", + "hqd_dry": "Suhi pamuk", + "hqd_dry_synthetics": "Suha mije\u0161ana odje\u0107a", + "hqd_duvet": "Popluni", + "hqd_eco_40_60_degrees": "Eco 40-60", + "hqd_handwash_wool": "Vuna", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "Mije\u0161ano rublje", + "hqd_quick_15": "Brzi program 15'", + "hqd_quick_wash_57": "Brzo pranje 57 min", + "hqd_rapid_wash_and_dry": "Pranje & su\u0161enje", + "hqd_refresh": "Osvje\u017eavanje", + "hqd_rinse": "Ispiranje", + "hqd_shirts": "Ko\u0161ulje", + "hqd_smart": "Smart A.I.", + "hqd_spin": "Okretaj", + "hqd_sport": "Sportska odje\u0107a", + "hqd_super_fast": "Brzi program 39\u2019", + "hqd_synthetic_and_coloured": "Sintetika", + "hygiene_59": "Hygijenski Plus 59'", + "hygiene_60": "Higijena 60\u00b0", + "hygiene_plus_59": "Hygijenski Plus 59'", + "hygiene_plus_59_min": "Hygijenski Plus 59'", + "hygiene_pro _49_min": "Hygiene Pro 49 '", + "hygiene_pro_49_min": "Hygiene Pro 49 min", + "hygiene_pro_steam": "Hygiene Pro + para", + "intensive_40": "Intenzivno 40\u00b0C", + "intensive_40_steam": "Intenzivno 40\u00b0C + para", + "iot_active_steam": "Para", + "iot_active_wash_steam": "Aktivno pranje", + "iot_allergy_care_pro": "Alergijska njega Pro", + "iot_all_in_one_59_steam": "Aktivno pranje + para", + "iot_checkup": "Kontrolni pregled", + "iot_colour_59_steam": "Boje 59' + para", + "iot_cottons_steam": "Pamuk + Para", + "iot_delicate_silk_steam": "Osjetljiva svila + para", + "iot_delicati_59_steam": "Osjetljivo rublje 59\u2019", + "iot_dry_air_refresh": "Osvje\u017eavanje zraka", + "iot_dry_anti_mites": "Protiv grinja", + "iot_dry_baby": "Dje\u010dja odje\u0107a", + "iot_dry_backpacks": "Naprtnja\u010de", + "iot_dry_bathrobe": "Ku\u0107ni ogrta\u010di i porozne tkanine", + "iot_dry_bed_linen": "Posteljine", + "iot_dry_cotton_dry": "Suhi pamuk", + "iot_dry_cuddly_toys": "Pli\u0161ane igra\u010dke", + "iot_dry_curtains": "Zavjese", + "iot_dry_dehumidifier": "Odstranjiva\u010d vlage", + "iot_dry_delicates_antiallergy": "Osjetljivo rublje \u2013 antialergijski", + "iot_dry_delicate_tablecloths": "Osjetljivi stolnjaci", + "iot_dry_denim_jeans": "Traper \u2013 Traperice", + "iot_dry_easy_iron_cotton": "Lagano gla\u010danje pamuka", + "iot_dry_easy_iron_synthetics": "Lagano gla\u010danje sintetike", + "iot_dry_gym_fit": "Odje\u0107a za teretanu \u2013 fitness", + "iot_dry_lingerie": "Donje rublje", + "iot_dry_mixed_dry": "Suha mije\u0161ana odje\u0107a", + "iot_dry_rapid_60_min_delicates": "Brzo 60' \u2013 Osjetljivo rublje", + "iot_dry_shirts": "Ko\u0161ulje", + "iot_dry_swimsuits_and_bikinis": "Kupa\u0107i kostimi", + "iot_dry_synthetics": "Sintetika suho", + "iot_dry_synthetic_dry": "Sintetika suho", + "iot_dry_tablecloths": "Stolnjaci", + "iot_dry_technical_fabrics": "Tehni\u010dke tkanine", + "iot_dry_warm_embrace": "Toplo su\u0161enje", + "iot_dry_wool_dry": "Vuna, suho", + "iot_easy_iron": "Easy Iron - lak\u0161e gla\u010danje", + "iot_fresh_care_steam": "Svje\u017ea njega + para", + "iot_hygiene_pro_steam": "Hygiene Pro + para", + "iot_intensive_40_steam": "Intenzivno 40\u00b0C + para", + "iot_mixed_steam": "Mije\u0161ane tkanine + Para", + "iot_mix_and_colour_59_steam": "Mje\u0161ovite i obojene tkanine 59' + para", + "iot_perfect_cotton_59_steam": "Pamuk Brzi 59'", + "iot_rapid_a_class_60_steam": "Brza klasa A 60 + para", + "iot_resistant_cotton_steam": "Pamuk + Para", + "iot_shirts_steam": "Ko\u0161ulje + para", + "iot_single_item_steam": "Pojedina\u010dna stavka + para", + "iot_smart_wash": "Pametno pranje", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "Posebna 39' + para", + "iot_steam_hygiene_plus": "Hygiene Plus Steam ", + "iot_synthetic_and_coloured_steam": "Sintetika i \u0161areno rublje + para", + "iot_wash_and_dry": "Pranje & su\u0161enje", + "iot_wash_anti_mites": "Protiv grinja", + "iot_wash_anti_odor": "Protiv neugodnih mirisa", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "Dezinficijens", + "iot_wash_baby_sanitizer_steam": "Dezinfekcijsko sredstvo za bebe + para", + "iot_wash_backpacks": "Naprtnja\u010de", + "iot_wash_backpacks_zelig": "Ruksaci", + "iot_wash_bathrobe": "Ku\u0107ni ogrta\u010di i ru\u010dnici", + "iot_wash_bathrobe_steam": "Kupaonski ogrta\u010di + Para", + "iot_wash_bed_linen": "Posteljine", + "iot_wash_bed_linen_steam": "Posteljina + Para", + "iot_wash_bed_linen_zelig": "Posteljine", + "iot_wash_big_single_load": "Veliko pojedina\u010dno punjenje", + "iot_wash_bleaching": "Izbjeljivanje", + "iot_wash_blood_stains": "Mrlje od krvi", + "iot_wash_cashmere": "Ka\u0161mir", + "iot_wash_chocolate_stains": "Mrlje od \u010dokolade", + "iot_wash_cold_wash": "Hladno pranje", + "iot_wash_colored": "Obojeno rublje", + "iot_wash_colored_anti_stain": "Uklanjanje mrlja za boje", + "iot_wash_colored_delicate": "Obojeno osjetljivo rublje", + "iot_wash_coloured": "Boje", + "iot_wash_coloured_bed_linen": "Posteljina u boji", + "iot_wash_coloured_bed_linen_steam": "Posteljina u boji + para", + "iot_wash_coloured_curtains": "\u0160arene zavjese", + "iot_wash_coloured_shirts": "\u0160arene ko\u0161ulje", + "iot_wash_coloured_shirts_steam": "Ko\u0161ulje u boji + para", + "iot_wash_coloured_steam": "Boje + Para", + "iot_wash_coloured_tableclothes": "\u0160areni stolnjaci", + "iot_wash_coloured_tableclothes_steam": "\u0160areni stolnjaci + para", + "iot_wash_cotton": "Pamuk", + "iot_wash_cotton_steam": "Pamuk + Para", + "iot_wash_cuddly_toys": "Pli\u0161ane igra\u010dke", + "iot_wash_curtains": "Zavjese", + "iot_wash_curtains_steam": "Zavjese+Para", + "iot_wash_curtains_zelig": "Zavjese", + "iot_wash_dark": "Tamna odje\u0107a", + "iot_wash_darks_and_coloured_44": "Tamno i obojeno rublje 44'", + "iot_wash_darks_and_coloured_59": "Tamno i obojeno rublje 59'", + "iot_wash_darks_and_coloured_xl": "Tamno i obojeno rublje XL", + "iot_wash_dark_steam": "Tamna odje\u0107a + Para", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "Osjetljivo rublje", + "iot_wash_delicate_antiallergy": "Antialergijski za osjetljivo rublje", + "iot_wash_delicate_antiallergy_steam": "Antialergijski za osjetljivo rublje + Para", + "iot_wash_delicate_antiallergy_zelig": "Antialergijski za osjetljivo rublje", + "iot_wash_delicate_colors": "Osjetljivo \u0161areno rublje", + "iot_wash_delicate_colors_steam": "Boje + para", + "iot_wash_delicate_dark": "Osjetljivo tamno rublje", + "iot_wash_delicate_steam": "Osjetljivo rublje + Para", + "iot_wash_delicate_tablecloths": "Osjetljivi stolnjaci", + "iot_wash_delicate_tablecloths_steam": "Osjetljivi stolnjaci + Para", + "iot_wash_delicate_whites": "Osjetljivo bijelo rublje", + "iot_wash_denim_jeans": "Traper \u2013 Traperice", + "iot_wash_diving_suits": "Ronila\u010dka odijela", + "iot_wash_diving_suits_zelig": "Ronila\u010dka odijela", + "iot_wash_down_jackets": "Jakne punjene paperjem", + "iot_wash_down_jackets_zelig": "Jakne punjene paperjem", + "iot_wash_duvet": "Popluni", + "iot_wash_fruit_stains": "Mrlje od vo\u0107a", + "iot_wash_gym_fit": "Odje\u0107a za teretanu \u2013 fitness", + "iot_wash_handwash": "Ru\u010dno pranje", + "iot_wash_handwash_colored": "Ru\u010dno pranje obojenog rublja", + "iot_wash_handwash_dark": "Ru\u010dno pranje tamnog rublja", + "iot_wash_lingerie": "Donje rublje", + "iot_wash_masks_refresh": "Osvje\u017eavanje maski", + "iot_wash_masks_sanification": "Sanitacija maski", + "iot_wash_masks_sanification_steam": "Sanitacija maski + Para", + "iot_wash_mats": "Prostirke", + "iot_wash_men_s_trousers": "Hla\u010de", + "iot_wash_mixed": "Mije\u0161ano", + "iot_wash_mixed_steam": "Mije\u0161ane tkanine + Para", + "iot_wash_mix_and_coloured_44": "Mije\u0161ano i obojeno rublje 44'", + "iot_wash_mix_and_coloured_59": "Mije\u0161ano i obojeno rublje 59'", + "iot_wash_mix_and_coloured_xl": "Mije\u0161ano i obojeno rublje XL", + "iot_wash_new_clothes": "Nova odje\u0107a", + "iot_wash_perfect_white": "Savr\u0161eno bijelo", + "iot_wash_perfect_white_steam": "Savr\u0161eno bijelo + Para", + "iot_wash_pets": "Pribor za ljubimce", + "iot_wash_pets_hair_removal": "Uklanjanje dlaka ku\u0107nih ljubimaca", + "iot_wash_pets_odours_stains_removal": "Uklanjanje neugodnih mirisa i mrlja od ku\u0107nih ljubimaca", + "iot_wash_pets_steam": "Pribor za ljubimce", + "iot_wash_playsuits": "Kombinezoni", + "iot_wash_playsuits_steam": "Kombinezoni + Para", + "iot_wash_quick_drum_cleaner": "Sredstvo za brzo \u010di\u0161\u0107enje bubnja", + "iot_wash_rapid_14": "Brzi program 14\u2019", + "iot_wash_rapid_30": "Brzi program 30\u2019", + "iot_wash_rapid_44": "Brzi program 44\u2019", + "iot_wash_rapid_59": "Brzi program 59\u2019", + "iot_wash_rapid_59_steam": "Brzi 59' + para", + "iot_wash_refresh_14_min": "Osvje\u017eavanje 14\u2019", + "iot_wash_resistant_colored": "Otporno obojeno rublje", + "iot_wash_resistant_dark": "Otporno tamno rublje", + "iot_wash_resistant_whites": "Otporno bijelo rublje", + "iot_wash_rinse": "Ispiranje", + "iot_wash_shirts": "Ko\u0161ulje", + "iot_wash_shirts_steam": "Ko\u0161ulje + Para", + "iot_wash_silk": "Svila", + "iot_wash_ski_suit": "Skija\u0161ka odijela", + "iot_wash_ski_suit_zelig": "Skija\u0161ka odijela", + "iot_wash_spin": "Centrifuga", + "iot_wash_sport": "Sportsko rublje", + "iot_wash_sport_anti_odor": "Sportska odje\u0107a protiv neugodnih mirisa", + "iot_wash_sport_anti_odor_zelig": "Sportska odje\u0107a protiv neugodnih mirisa", + "iot_wash_stains_remover": "Uklanjanje mrlja", + "iot_wash_swimsuits_and_bikinis": "Kupa\u0107i kostimi", + "iot_wash_synthetic": "Sintetika", + "iot_wash_synthetic_steam": "Sintetika + Para", + "iot_wash_tablecloths": "Stolnjaci", + "iot_wash_tablecloths_steam": "Stolnjaci + Para", + "iot_wash_technical_fabrics": "Tehni\u010dke tkanine", + "iot_wash_technical_fabrics_zelig": "Tehni\u010dke tkanine", + "iot_wash_technical_jackets": "Tehni\u010dke jakne", + "iot_wash_technical_jackets_zelig": "Tehni\u010dke jakne", + "iot_wash_trainers": "Tenisice", + "iot_wash_whites": "Bijelo rublje", + "iot_wash_whites_44": "Bijelo rublje 44'", + "iot_wash_whites_59": "Bijelo rublje 59'", + "iot_wash_whites_xl": "Bijelo rublje XL", + "iot_wash_wine_stains": "Mrlje od vina", + "iot_wash_wool": "Vuna", + "jeans": "Traperice", + "jeans_60": "Traper", + "low_dry": "Suha mije\u0161ana odje\u0107a", + "mixed": "Mije\u0161ane tkanine", + "mixed_and_colored_59": "Mije\u0161ana i \u0161arena odje\u0107a 59\u2019", + "mixed_steam": "Mije\u0161ane tkanine + Para", + "mix_and_colour_59": "Mijesane Tkanine + Sareno 59'", + "mix_and_colour_59_steam": "Mje\u0161ovite i obojene tkanine 59' + para", + "night_and_day": "No\u0107 i dan", + "night_wash": "Ciklus preko no\u0107i", + "perfect_59": "Savr\u0161eno 59\u2019", + "perfect_cotton_59": "Pamuk Brzi 59'", + "perfect_cotton_59_steam": "Pamuk Brzi 59'", + "perfect_whites_59": "Savr\u0161eno bijelo 59'", + "rapid_14_min": "Brzi 14'", + "rapid_30_min": "Brzi 30 min", + "rapid_44_min": "Brzi 44 min", + "rapid_a_class_60": "Brza klasa A 60", + "rapid_a_class_60_steam": "Brza klasa A 60 + para", + "rapid_wash_and_dry_59_min": "Pranje i su\u0161enje 59\u2019.", + "resistant_cotton": "Pamuk", + "resistant_cotton_steam": "Pamuk + Para", + "rinse": "Ispiranje", + "shirts_steam": "Ko\u0161ulje + para", + "silent_night": "Ciklus preko no\u0107i", + "single_item": "Pojedina\u010dna stavka", + "single_item_steam": "Pojedina\u010dna stavka + para", + "smart_wash": "Pametno pranje", + "soft_care": "Mekana njega", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "Posebna 39'", + "special_39_full_load": "Posebna 39'", + "special_39_full_load_steam": "Posebna 39' + para", + "special_49": "Posebno 49\u2019", + "sport_39": "Sport 39\u2019", + "sport_plus_29": "Sportski Plus 29\"", + "sport_plus_39": "Sportski Plus 39'", + "steam_39": "Para 39\u2019", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro - pamuk", + "steam_care_pro_delicates": "Steam Care Pro - osjetljivo", + "steam_care_pro_synthetic": "Steam Care Pro - sintetika", + "steam_hygiene_plus": "Hygiene Plus Steam ", + "synthetics": "Sintetika", + "synthetic_and_coloured": "Sintetika i \u0161areno rublje", + "synthetic_and_coloured_steam": "Sintetika i \u0161areno rublje + para", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "Potpuna njega", + "tumbling": "Su\u0161ilica", + "wool": "Vuna", + "wool_and_delicates_49": "Vuna/Osjetljivo 49'", + "wool_dry": "Suha vuna", + "wool_soft_care": "Vuna & Mekana Njega" + } + } } } } \ No newline at end of file diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index 6eab39d..d12fe67 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -140,74 +140,246 @@ } }, "select": { - "programs": { + "programs_dw": { "state": { - "20_degrees_coloured_cottons": "20\u00b0 Colorati e Cotone", - "20_degrees_new_energy_label": "20\u00b0C", - "active_steam": "Vapore", - "active_wash": "Lavaggio attivo", - "active_wash_steam": "Lavaggio attivo + Vapore", - "allergy_care": "Anti allergenici", - "allergy_care_pro": "Anti allergenici Pro", - "all_in_one_49": "Tutto in uno 49'", - "all_in_one_59": "Tutto in uno 59'", - "all_in_one_59_steam": "Lavaggio attivo + Vapore", - "autocare": "Autocare", - "autoclean": "Pulizia del tamburo", - "baby_60": "Bambino 60\u00b0C", - "care_14": "Rapido 14'", - "care_30": "Rapido 30'", - "care_44": "Rapido 44'", - "checkup": "Check-Up", - "colour_59": "Colorati 59'", - "colour_59_steam": "Colorati 59' + Vapore", - "cottons": "Cotone", - "cottons_prewash": "Cotone + Prelavaggio", - "cottons_steam": "Cotone + Vapore", - "cotton_care_59": "Cura Cotone 59'", - "delicate_59": "Delicati 59'", - "delicate_silk": "Delicati e Seta", - "delicate_silk_steam": "Delicati e Seta + Vapore", - "delicati_59": "Delicati 59'", - "delicati_59_steam": "Delicati 59' + Vapore", - "drain_spin": "Scarico e Centrifuga", - "easy_iron": "Pronto Stiro", - "eco_40_60_new_energy_label": "Eco 40-60", - "extra_care": "Extra Care", - "fitness": "Fitness Care", - "fitness_care": "Fitness Care", + "59_min": "Rapido 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "Auto Universale 50 - 60\u00b0C", + "auto_universal_plus": "Auto Universale Plus 65 - 75\u00b0C", + "auto_universal_plus_soil": "Auto Universale Plus 65 - 75\u00b0C", + "auto_universal_soil": "Auto Universale 50 - 60\u00b0C", + "auto_wash": "Auto Wash", + "auto_wash_soil": "Auto Wash", + "classe_a_59": "Classe A 59' 65\u00b0C", + "delicate": "Delicato 45\u00b0C", + "dishwasher_care": "Ciclo anticalcare", + "eco": "Eco", + "eco_asynch": "Eco 45\u00b0C", + "eco_bldc": "Eco 45\u00b0C", + "eco_synch": "Eco 45\u00b0C", + "gentle_wash": "Gentle wash", + "glass": "Calici", + "glass _care": "Glass Care", + "glassware": "Cristalli 45\u00b0C", + "glass_care": "Glass Care", + "hygiene": "Igiene", + "hygiene_plus": "Igiene 75\u00b0C", + "intensive": "Intensivo ", + "intensive_rapid": "Forte Veloce", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "Auto Universale 50 - 60\u00b0C", + "iot_auto_wash_soil": "Auto Wash", + "iot_baby_care": "Baby Care", + "iot_breakfast": "Colazione", + "iot_checkup": "Check-Up", + "iot_china_crystals": "Cristalli", + "iot_classe_a_59": "Rapido 59'", + "iot_cocktail_glasses": "Cocktail Glasses", + "iot_cocktail_glasses_soil": "Cocktail Glasses", + "iot_daily_care": "Quotidiano", + "iot_daily_care_soil": "Quotidiano", + "iot_delicate": "Delicato 45\u00b0C", + "iot_dinner_for_two": "Cena di coppia", + "iot_dinner_for_two_soil": "Cena di coppia", + "iot_dreft_quick_cycle": "Dreft Rapido", + "iot_eco_asynch": "Eco 45\u00b0C", + "iot_eco_bldc": "Eco 45\u00b0C", + "iot_eco_synch": "Eco 45\u00b0C", + "iot_extra_hygiene": "Ciclo Vapore", + "iot_fairy_quick_cycle": "Fairy Rapido", + "iot_happy_hour": "Happy Hour", + "iot_jar_quick_cycle": "Jar Rapido", + "iot_party": "Party", + "iot_party_soil": "Party", + "iot_pizza_menu": "Pizza Menu", + "iot_pizza_menu_soil": "Pizza Menu", + "iot_plastic_tupperware": "Plastiche & Tupperware", + "iot_porcelain": "Porcellane", + "iot_pot_&_pans": "Pentole & Padelle", + "iot_pot_&_pans_soil": "Pentole & Padelle", + "iot_power_mix_wash": "Power Mix Wash", + "iot_power_mix_wash_soil": "Power Mix Wash", + "iot_prewash": "Prelavaggio", + "iot_pyrex_and_glassware": "Pyrex & Glassware", + "iot_rapid_29": "Rapido 29'", + "iot_rapid_39": "Rapido 39' 60\u00b0C", + "iot_single": "Single", + "iot_steam": "Vapore 75\u00b0C", + "iot_super_flash": "Super Flash", + "iot_super_wash": "Super Wash", + "iot_turbopower": "Turbo Power", + "iot_universal": "Universale 60\u00b0C", + "iot_wok_grids_maxi_pans": "Maxi Stoviglie e Griglie", + "iot_wok_grids_maxi_pans_soil": "Maxi Stoviglie e Griglie", + "iot_yes_quick_cycle": "Yes Rapido", + "night": "Notte 55\u00b0C", + "prewash": "Prelavaggio", + "rapid_20": "Rapido 20'", + "rapid_24": "Rapido 24'", + "rapid_29": "Rapido 29' 50\u00b0C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "Rapido 39' 60\u00b0C", + "rapid_49": "Rapido 49'", + "rapid_59": "Rapido 59'", + "sanitising": "Igienizzazione", + "silence": "Silence", + "silent": "Notte", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "special": "Speciale", + "special_pw_prz": "Speciale", + "steam": "Vapore 75\u00b0C", + "steam_plus": "Vapore Plus 75\u00b0C", + "total_care": "Total Care 50\u00b0C", + "ultra_silence": "Ultra Silenzioso 55\u00b0C", + "ultra_silent": "Ultra Silenzioso 55\u00b0C", + "universal": "Universale 60\u00b0C", + "universal_plus": "Universale Plus 70\u00b0C", + "zoom_39": "Zoom 39 min" + } + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "Frittelle di patate", + "iot_special_beef_fillet": "Filetto di manzo", + "iot_special_beef_veal_stew": "Spezzatino di manzo e vitello", + "iot_special_boiled_rice": "Riso bollito", + "iot_special_chicken_breast": "Petto di pollo", + "iot_special_chicken_legs": "Cosce di pollo", + "iot_special_chocolate_pudding": "Chocolate pudding", + "iot_special_entrecote": "Entrecote", + "iot_special_fresh_tuna": "Tonno fresco", + "iot_special_grilled_vegetables": "Verdure alla griglia", + "iot_special_lamb_cutlet": "Cotoletta di agnello", + "iot_special_meatballs": "Polpette", + "iot_special_minestrone": "Minestrone", + "iot_special_mussels": "Cozze", + "iot_special_omelette": "Omelette", + "iot_special_pancakes": "Pancakes", + "iot_special_paris_style_peas": "Piselli alla parigina", + "iot_special_poached_eggs": "Poached eggs", + "iot_special_pork_fillet": "Filetto di maiale", + "iot_special_pork_ribs": "Costolette di maiale", + "iot_special_prawns": "Gamberi", + "iot_special_quinoa": "Quinoa", + "iot_special_ratatouille": "Ratatouille", + "iot_special_salmon_fillet": "Filetto di salmone", + "iot_special_saute_potatoes": "Patete saltate", + "iot_special_scallops": "Cappe sante", + "iot_special_scrambled_eggs": "Uova strapazzate", + "iot_special_spelt": "Farro", + "iot_special_veggy_noodles": "Spaghetti vegetariani", + "iot_special_white_fish_fillet": "Filetto di pesce bianco", + "iot_standard_boiling": "Ebollizione", + "iot_standard_frying": "Frittura", + "iot_standard_keep_warm": "Mantenimento", + "iot_standard_melting": "Fusione", + "iot_standard_simmering": "Ebollizione Lenta" + } + }, + "programs_ov": { + "state": { + "bakery": "Pasta e Pasticceria", + "bakery_steam": "Pane a vapore", + "bottom_heating": "Resistenza Inferiore", + "bottom_heating_fan": "Resistenza Inferiore Ventilata", + "bread": "Pane", + "bread_steam": "Pasticceria a vapore", + "convection_fan": "Cottura Ventilata", + "convection_fan_turnspit": "Girarrosto + statico ventilato", + "conventional": "Statico", + "conventional_turnspit": "Girarrosto + statico", + "defrost": "Decongelamento", + "descaling": "Disincrostazione", + "fish": "Pesce", + "fish_steam": "Pesce a vapore", + "grill_cata": "Grill", + "grill_fan_cata": "Grill fan", + "grill_fan_pyro": "Grill Ventilato", + "grill_pyro": "Grill", + "h20_clean": "H2O-Clean", + "iot_bread": "Pane", + "iot_h20_clean": "h2O clean", + "leavening": "Lievitazione", + "low_temp_cooking": "Cottura a bassa temperatura", + "low_temp_cooking_fish": "Cottura a bassa temperatura del pesce", + "low_temp_cooking_fish_steam": "Cottura a bassa temperatura del pesce a vapore", + "low_temp_cooking_meat": "Cottura a bassa temperatura della carne", + "low_temp_cooking_meat_steam": "Cottura a vapore a bassa temperatura di carne", + "low_temp_cooking_steam": "Cottura a vapore a bassa temperatura", + "meat": "Carne", + "meat_steam": "Carne a vapore", + "multi_level": "Cottura Multilivello", + "paella": "Paella", + "pasta_and_bakery": "Pasta e Pasticceria", + "pizza": "Pizza", + "pyrolysis": "Pirolisi", + "pyrolysis_plus": "Pirolisi +", + "red_meat": "Carne rossa", + "red_meat_steam": "Carne rossa a vapore", + "regenerate": "Rigenerazione", + "soft_plus": "Soft+", + "super_grill": "Supergriglia", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_desctiption": "Questa funzione \u00e8 ideale per mantenere il cibo morbido all'interno e croccante all'esterno. Per una cucina sana, questa funzione riduce la quantit\u00e0 di grasso o olio necessaria.\r\r\nLa combinazione di elementi riscaldanti con un ciclo pulsante di aria garantisce risultati di cottura uniformi.", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Verdure", + "vegetables_cata": "Verdure", + "vegetables_pyro": "Verdure", + "water_discharge": "Scarico d'acqua", + "white_meat": "Carne bianca", + "white_meat_steam": "Carne bianca a vapore" + } + }, + "programs_td": { + "state": { + "active_dry": "Active Dry", + "allergy_care": "Anti-allergie", + "all_in_one": "Tutto in Uno", + "antiallergy": "Anti-allergie", + "anti_odours": "Anti-odori", + "auto_care": "Auto Care", + "baby": "Baby", + "bed_quilt": "Trapunte-Piumoni", + "care_30": "Care 30", + "care_45": "Care 45", + "care_59": "Care 59", + "coloured": "Colorati", + "daily_45_min": "Quotidiano 45'", + "daily_perfect_59_min": "Daily Perfect 59'", + "darks_and_coloured": "Scuri e Colorati", + "delicates": "Delicati", + "duvet": "Piumone", + "eco": "Eco Cotton", + "ecospeed_cottons": "Ecospeed Cotone", + "ecospeed_delicates": "Ecospeed Delicati", + "ecospeed_mixed": "Ecospeed Misti", + "extra_hygiene": "Igiene Extra", + "fitness": "Fitness", "fresh_care": "Fresh Care", - "fresh_care_steam": "Fresh Care + Vapore", - "handwash_wool": "Lavaggio A Mano + Lana", - "high_dry": "Asciugatura Alta", - "hqd_20_degrees": "Cotone 20\u2103", - "hqd_allergy": "Anti allergenici", - "hqd_autoclean": "Pulizia del tamburo", - "hqd_babycare": "Bambino", - "hqd_baby_care": "Bambino", + "genius": "Genius", + "hqd_baby_care": "Baby Care", "hqd_bath_towel": "Asciugamani", "hqd_bed_sheets": "Lenzuola", "hqd_bulky": "Vestiti voluminosi", "hqd_casual": "Casual", - "hqd_checkup": "Check-Up", - "hqd_cold_wind_30": "Brezza rinfrescante 30'", + "hqd_cold_wind_30": "Brezza rinfrescante 30 minuti", "hqd_cold_wind_timing": "Brezza rinfrescante", "hqd_cotton": "Cotone", - "hqd_cottons": "Cotone", "hqd_curtain": "Tende", "hqd_delicate": "Delicati", - "hqd_delicate_cradle": "Delicati", "hqd_diaper": "Pannolini", - "hqd_dry": "Asciugatura Cotone", - "hqd_dry_synthetics": "Asciugatura bassa", - "hqd_duvet": "Piumino", - "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_feather": "Piuma", - "hqd_handwash_wool": "Lana", + "hqd_duvet": "Piumone", + "hqd_feather": "Piumini", "hqd_hot_wind_timing": "Aria calda", "hqd_hygienic": "Igienizzante", - "hqd_i_refresh": "i-Refresh", - "hqd_i_refresh_pro": "i-Refresh Pro", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", "hqd_jacket": "Giacche", "hqd_jeans": "Jeans", "hqd_luxury": "Vestiti preziosi", @@ -215,38 +387,162 @@ "hqd_night_dry": "Asciugatura notturna", "hqd_outdoor": "Outdoor", "hqd_precious_cure": "Precious cure", - "hqd_quick_15": "Rapido 15'", - "hqd_quick_20": "Rapido 20'", - "hqd_quick_30": "Rapido 30'", - "hqd_quick_dry": "Asciugatura Rapida", - "hqd_quick_wash_57": "Lavaggio Rapido 57'", - "hqd_quilt": "Trapunta", - "hqd_rapid_wash_and_dry": "Lavaggio e Asciugatura", + "hqd_quick_20": "Rapido 20", + "hqd_quick_30": "Rapido 30", + "hqd_quick_dry": "Asciugatura veloce", + "hqd_quilt": "Trapunte", "hqd_refresh": "Refresh", - "hqd_rinse": "Risciacqui", "hqd_school_uniform": "Uniforme scolastica", "hqd_shirt": "Camicie", - "hqd_shirts": "Camicie", "hqd_shoes": "Scarpe", "hqd_silk": "Seta", - "hqd_smart": "Smart A.I.", - "hqd_spin": "Centrifuga", - "hqd_sport": "Sport", - "hqd_sports": "Sports", - "hqd_super_fast": "Rapido 39'", - "hqd_synthetic_and_coloured": "Sintetici", + "hqd_sports": "Sport", "hqd_synthetics": "Sintetici", - "hqd_timer": "Timer", + "hqd_timer": "A tempo", "hqd_towel": "Asciugamani", "hqd_underwear": "Intimo", "hqd_warm_up": "Riscaldamento", "hqd_wool": "Lana", "hqd_working_suit": "Completo da lavoro", + "hygiene": "Igiene", + "iot_checkup": "Check-Up", + "iot_dry_anti_mites": "Anti-Acari", + "iot_dry_baby": "Baby", + "iot_dry_backpacks": "Zaini", + "iot_dry_bathrobe": "Accappatoi e Spugne", + "iot_dry_bed_linen": "Lenzuola", + "iot_dry_bed_quilt": "Trapunte-Piumoni", + "iot_dry_cotton": "Cotone", + "iot_dry_cuddly_toys": "Peluches", + "iot_dry_curtains": "Tende", + "iot_dry_dehumidifier": "Rimuovi umidit\u00e0", + "iot_dry_delicates": "Delicati", + "iot_dry_delicate_tablecloths": "Tovaglie delicate", + "iot_dry_denim_jeans": "Denim - jeans", + "iot_dry_down_jacket": "Giacche", + "iot_dry_duvet": "Piumone", + "iot_dry_easy_iron_cotton": "Stira facile", + "iot_dry_easy_iron_synthetics": "Stira facile Sintetici", + "iot_dry_gym_fit": "Gym fit - Fitness", + "iot_dry_lingerie": "Lingerie", + "iot_dry_mixed": "Misti", + "iot_dry_playsuits": "Tutine", + "iot_dry_rapid_30": "Rapido 30", + "iot_dry_rapid_59": "Rapido 59'.", + "iot_dry_refresh": "Rinfresca", + "iot_dry_regenerates_waterproof": "Rigenera Tessuti Impermeabili", + "iot_dry_relax_creases": "Meno Pieghe", + "iot_dry_shirts": "Camicie", + "iot_dry_small_load": "Carico Small", + "iot_dry_swimsuits_and_bikinis": "Costumi e Bikini", + "iot_dry_synthetics": "Sintetici", + "iot_dry_synthetic_dry": "Asciugatura Sintetici", + "iot_dry_tablecloths": "Tovaglie", + "iot_dry_technical_fabrics": "Tessuti Tecnici", + "iot_dry_warm_embrace": "Caldo abbraccio", + "iot_dry_wool": "Lana", + "jeans": "Jeans", + "mix_and_dry": "Mix&Dry", + "pets": "Pets", + "pre_iron": "Pre-Stiro", + "rapid_30": "Rapido 30", + "rapid_45": "Rapido 45 min", + "rapid_59": "Perfect Rapid 59 Min", + "refresh": "Rinfresca", + "relax_creases": "Meno Pieghe", + "saving_30_min": "Risparmio 30'", + "shirts": "Camicie", + "shoes": "Scarpe", + "small_load": "Carico Small", + "soft_care": "Soft Care", + "sport_plus": "Sport Plus", + "super_easy_iron_misti": "Super Easy Iron misti", + "super_easy_iron_xxl": "Super Easy Iron XXL", + "super_fast_cottons": "Super Fast Cotone", + "super_fast_delicates": "Super Fast Delicati", + "synthetics": "Sintetici", + "total_care": "Total Care", + "trainers": "Scarpe da ginnastica", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Impermeabilizzazione", + "whites": "Bianchi", + "wool": "Asciugatura Lana", + "woolmark": "Lana", + "xxl_load": "Carico XXL", + "zoom_59": "Zoom 59" + } + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "Cotone e Colorati 20\u00b0", + "20_degrees_new_energy_label": "20\u00b0C", + "active_steam": "Vapore", + "active_wash": "Active Wash", + "active_wash_steam": "Active Wash + Vapore", + "allergy_care": "Allergy Care", + "allergy_care_pro": "Allergy Care Pro", + "all_in_one_49": "All in One 49'", + "all_in_one_59": "All in One 59'", + "all_in_one_59_steam": "Active Wash + Vapore", + "autocare": "Autocare", + "autoclean": "Pulizia cesto e decalcifiazione", + "baby_60": "Tutto Beb\u00e8 60\u00b0C", + "care_14": "Rapid Care 14'", + "care_30": "Rapid Care 30'", + "care_44": "Rapid Care 44'", + "checkup": "Check-Up", + "colour_59": "Colorati 59'", + "colour_59_steam": "Colorati 59' + Vapore", + "cottons": "Cotone", + "cottons_prewash": "Cotone + Prelavaggio", + "cottons_steam": "Cotone + Vapore", + "cotton_care_59": "Cotton Care 59'", + "delicate_59": "Delicati 59'", + "delicate_silk": "Delicati e Seta", + "delicate_silk_steam": "Delicati e Seta + Vapore", + "delicati_59": "Delicati 59'", + "delicati_59_steam": "Delicati 59' + Vapore", + "drain_spin": "Scarico e Centrifuga", + "easy_iron": "Stiro Facile", + "eco_40_60_new_energy_label": "Eco 40-60", + "extra_care": "Extra Care", + "fitness": "Fitness Care", + "fitness_care": "Fitness Care", + "fresh_care": "Fresh Care", + "fresh_care_steam": "Fresh Care + Vapore", + "handwash_wool": "Mano e Lana", + "high_dry": "Asciugatura Cotone", + "hqd_20_degrees": "Cotone 20\u00b0C", + "hqd_allergy": "Allergy Care", + "hqd_autoclean": "Pulizia del cesto", + "hqd_babycare": "Baby Care", + "hqd_checkup": "Check-Up", + "hqd_cottons": "Cotone", + "hqd_delicate": "Delicati", + "hqd_delicate_cradle": "Delicati", + "hqd_dry": "Asciugatura Cotone", + "hqd_dry_synthetics": "Asciugatura Misti", + "hqd_duvet": "Piumone", + "hqd_eco_40_60_degrees": "Eco 40-60", + "hqd_handwash_wool": "Lana", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "Misti", + "hqd_quick_15": "Express 15'", + "hqd_quick_wash_57": "Rapido 57'", + "hqd_rapid_wash_and_dry": "Lava e Asciuga", + "hqd_refresh": "Rinfresca", + "hqd_rinse": "Risciacqui", + "hqd_shirts": "Camicie", + "hqd_smart": "Smart A.I.", + "hqd_spin": "Centrifuga", + "hqd_sport": "Sport", + "hqd_super_fast": "Rapido 39'", + "hqd_synthetic_and_coloured": "Sintetici", "hygiene_59": "Igiene Plus 59'", "hygiene_60": "Igiene 60\u00b0C", "hygiene_plus_59": "Igiene Plus 59'", "hygiene_plus_59_min": "Igiene Plus 59'", - "hygiene_pro _49_MIN": "Igiene Pro 49'", + "hygiene_pro _49_min": "Igiene Pro 49'", "hygiene_pro_49_min": "Igiene Pro 49'", "hygiene_pro_steam": "Hygiene Pro + Vapore", "intensive_40": "Intensivo 40\u00b0C", @@ -292,7 +588,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + Vapore", "iot_intensive_40_steam": "Intensivo 40\u00b0C + Vapore", "iot_mixed_steam": "Misti + Vapore", - "iot_mix_and_colour_59_steam": "Misti e Colorati 59' + Vapore", + "iot_mix_and_colour_59_steam": "Misti e Colorati 59' + Vapore ", "iot_perfect_cotton_59_steam": "Cotone Perfetto 59' + Vapore", "iot_rapid_a_class_60_steam": "Rapido 59' Classe A + Vapore", "iot_resistant_cotton_steam": "Cotone Resistente + Vapore", @@ -377,7 +673,7 @@ "iot_wash_masks_sanification": "Sanificazione Mascherine", "iot_wash_masks_sanification_steam": "Sanificazione Mascherine + Vapore", "iot_wash_mats": "Tappetini", - "iot_wash_men_s_trousers": "Pantaloni", + "iot_wash_men_s_trousers": "Pantaloni ", "iot_wash_mixed": "Misti", "iot_wash_mixed_steam": "Misti + Vapore", "iot_wash_mix_and_coloured_44": "Misti e colorati 44'", @@ -423,7 +719,7 @@ "iot_wash_technical_jackets": "Giacconi Tecnici", "iot_wash_technical_jackets_zelig": "Giacconi Tecnici", "iot_wash_trainers": "Scarpe da ginnastica", - "iot_wash_whites": "Bianchi", + "iot_wash_whites": "Bianchi ", "iot_wash_whites_44": "Bianchi 44'", "iot_wash_whites_59": "Bianchi 59'", "iot_wash_whites_xl": "Bianchi XL", @@ -436,7 +732,7 @@ "mixed_and_colored_59": "Misti e Colorati 59'", "mixed_steam": "Misti + Vapore", "mix_and_colour_59": "Misti e Colorati 59'", - "mix_and_colour_59_steam": "Misti e Colorati 59' + Vapore", + "mix_and_colour_59_steam": "Misti e Colorati 59' + Vapore ", "night_and_day": "Night and Day", "night_wash": "Ciclo Notturno", "perfect_59": "Perfetto 59'", diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index b1f6b0e..8df7bff 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -66,6 +66,650 @@ "6": "Hot rinse" } } + }, + "select": { + "programs_dw": { + "state": { + "59_min": "Snel 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "Auto universeel 50 - 60\u00b0C", + "auto_universal_plus": "Auto universeel plus 65 - 75\u00b0C", + "auto_universal_plus_soil": "Auto universeel plus 65 - 75\u00b0C", + "auto_universal_soil": "Auto universeel 50 - 60\u00b0C", + "auto_wash": "Automatisch wassen", + "auto_wash_soil": "Automatisch wassen", + "classe_a_59": "A klasse 59' 65\u00b0C", + "delicate": "Delicaat 45\u00b0C", + "dishwasher_care": "Ontkalkingsprogramma", + "eco": "Eco", + "eco_asynch": "Eco 45\u00b0C", + "eco_bldc": "Eco 45\u00b0C", + "eco_synch": "Eco 45\u00b0C", + "gentle_wash": "Gentle wash", + "glass": "Glas", + "glass _care": "Glass Care", + "glassware": "Glaswerk 45\u00b0C", + "glass_care": "Glass Care", + "hygiene": "Hygi\u00ebne", + "hygiene_plus": "Hygi\u00ebne+ 75\u00b0C", + "intensive": "Intensief", + "intensive_rapid": "Intensief snel", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "Auto universeel 50 - 60\u00b0C", + "iot_auto_wash_soil": "Automatisch wassen", + "iot_baby_care": "Baby Care", + "iot_breakfast": "Onbtijt", + "iot_checkup": "Controle", + "iot_china_crystals": "Kristallen", + "iot_classe_a_59": "Snel 59'", + "iot_cocktail_glasses": "CocktailGlazen", + "iot_cocktail_glasses_soil": "CocktailGlazen", + "iot_daily_care": "Dagelijkse Zorg", + "iot_daily_care_soil": "Dagelijkse Zorg", + "iot_delicate": "Delicaat 45\u00b0C", + "iot_dinner_for_two": "Dinner for 2", + "iot_dinner_for_two_soil": "Dinner for 2", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "Eco 45\u00b0C", + "iot_eco_bldc": "Eco 45\u00b0C", + "iot_eco_synch": "Eco 45\u00b0C", + "iot_extra_hygiene": "Extra Hygiene", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "Happy Hour", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "Party", + "iot_party_soil": "Party", + "iot_pizza_menu": "Pizza Menu", + "iot_pizza_menu_soil": "Pizza Menu", + "iot_plastic_tupperware": "Plastiek & Tupperware", + "iot_porcelain": "Porcelein", + "iot_pot_&_pans": "Potten & Pannen", + "iot_pot_&_pans_soil": "Potten & Pannen", + "iot_power_mix_wash": "Power Mix Was", + "iot_power_mix_wash_soil": "Power Mix Was", + "iot_prewash": "Voorwas", + "iot_pyrex_and_glassware": "Pyrex & Glazen", + "iot_rapid_29": "Snel 29'", + "iot_rapid_39": "Snel 39' 60\u00b0C", + "iot_single": "Single", + "iot_steam": "Stoom 75\u00b0C", + "iot_super_flash": "Super Flash", + "iot_super_wash": "Super Was", + "iot_turbopower": "TurboPower", + "iot_universal": "Universeel 60\u00b0C", + "iot_wok_grids_maxi_pans": "Speciale Pannen (Wokpannen - Roosters & Maxi Pannen)", + "iot_wok_grids_maxi_pans_soil": "Speciale Pannen (Wokpannen - Roosters & Maxi Pannen)", + "iot_yes_quick_cycle": "Yes Quick", + "night": "Zeer stil 55\u00b0C", + "prewash": "Voorwas", + "rapid_20": "Snel 20'", + "rapid_24": "Snel 24'", + "rapid_29": "Snel 29' 50\u00b0C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "Snel 39' 60\u00b0C", + "rapid_49": "Snel 49'", + "rapid_59": "Snel 59'", + "sanitising": "Ontsmetten", + "silence": "Silence", + "silent": "Nacht", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "special": "speciaal", + "special_pw_prz": "speciaal", + "steam": "Stoom 75\u00b0C", + "steam_plus": "Stoom Plus 75\u00b0C", + "total_care": "Total Care 50\u00b0C", + "ultra_silence": "Zeer stil 55\u00b0C", + "ultra_silent": "Zeer stil 55\u00b0C", + "universal": "Universeel 60\u00b0C", + "universal_plus": "Universeel Plus 70\u00b0C", + "zoom_39": "Zoom 39 min" + } + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "Asbruin", + "iot_special_beef_fillet": "Runderfilet", + "iot_special_beef_veal_stew": "Rund- en kalfsvleesstoofpot", + "iot_special_boiled_rice": "Gekookte rijst", + "iot_special_chicken_breast": "Kippenborst", + "iot_special_chicken_legs": "Kippenpoten", + "iot_special_chocolate_pudding": "Chocoladepudding", + "iot_special_entrecote": "Entrecote", + "iot_special_fresh_tuna": "Verse tonijn", + "iot_special_grilled_vegetables": "Gegrilde groenten", + "iot_special_lamb_cutlet": "Lamskotelet", + "iot_special_meatballs": "Gehaktballen", + "iot_special_minestrone": "Minestrone", + "iot_special_mussels": "Mosselen", + "iot_special_omelette": "Omelet", + "iot_special_pancakes": "Pannenkoeken", + "iot_special_paris_style_peas": "Erwten in Parijse stijl", + "iot_special_poached_eggs": "Gepocheerde eieren", + "iot_special_pork_fillet": "Varkensfilet", + "iot_special_pork_ribs": "Varkensribben", + "iot_special_prawns": "Garnalen", + "iot_special_quinoa": "Quinoa", + "iot_special_ratatouille": "Ratatouille", + "iot_special_salmon_fillet": "Zalmfilet", + "iot_special_saute_potatoes": "Gebakken aardappelen", + "iot_special_scallops": "Sint-jakobsschelpen", + "iot_special_scrambled_eggs": "Roerei", + "iot_special_spelt": "Spelt", + "iot_special_veggy_noodles": "Vegetarische noedels", + "iot_special_white_fish_fillet": "Witte visfilet", + "iot_standard_boiling": "Boiling", + "iot_standard_frying": "Bakken", + "iot_standard_keep_warm": "Warm houden", + "iot_standard_melting": "Smelten", + "iot_standard_simmering": "Simmering" + } + }, + "programs_ov": { + "state": { + "bakery": "Pasta en bakkersproducten", + "bakery_steam": "Stoomgebakken brood", + "bottom_heating": "Bodemverwarming", + "bottom_heating_fan": "Bodemverwarming + Ventilator", + "bread": "Brood", + "bread_steam": "Stoomgebakken pasteien", + "convection_fan": "Met ventilator", + "convection_fan_turnspit": "Convectie + ventilator + draaispit", + "conventional": "Conventioneel", + "conventional_turnspit": "Convectie + draaispit", + "defrost": "Ontdooien", + "descaling": "Ontkalken", + "fish": "Vis", + "fish_steam": "Gestoomde vis", + "grill_cata": "Grill", + "grill_fan_cata": "Grill + ventilator", + "grill_fan_pyro": "Grill + ventilator", + "grill_pyro": "Grill", + "h20_clean": "H2O-Clean", + "iot_bread": "Brood", + "iot_h20_clean": "h2O clean", + "leavening": "Gisting", + "low_temp_cooking": "Bereiding op lage temperatuur", + "low_temp_cooking_fish": "Bereiding op lage temperatuur \u2013 Vis", + "low_temp_cooking_fish_steam": "Stomen bij lage temperatuur \u2013 Vis", + "low_temp_cooking_meat": "Bereiding op lage temperatuur \u2013 Vlees", + "low_temp_cooking_meat_steam": "Stomen bij lage temperatuur \u2013 Vlees", + "low_temp_cooking_steam": "Stomen bij lage temperatuur", + "meat": "Vlees", + "meat_steam": "Gestoomd vlees", + "multi_level": "Multi-level", + "paella": "Paella", + "pasta_and_bakery": "Pasta en bakkersproducten", + "pizza": "Pizza", + "pyrolysis": "Pyrolyse", + "pyrolysis_plus": "Pyrolyse +", + "red_meat": "Rood vlees", + "red_meat_steam": "Gestoomd rood vlees", + "regenerate": "Regeneratie", + "soft_plus": "Soft+", + "super_grill": "Super grill", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_desctiption": "Deze functie is ideaal om voedsel zacht van binnen te houden en knapperig van buiten.\r\r\r\r\r\r\r\r\r\r\r\r\nDeze functie vermindert de benodigde hoeveelheid vet of olie, voor een gezonde bereiding.\r\r\r\r\r\r\r\r\r\r\r\r\nDe combinatie van verwarmingselementen met een pulserende luchtcyclus\r\r\r\r\r\r\r\r\r\r\r\r\nzorgt voor gelijkmatige bereidingsresultaten.", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Groenten", + "vegetables_cata": "Groenten", + "vegetables_pyro": "Groenten", + "water_discharge": "Waterafvoer", + "white_meat": "Wit vlees", + "white_meat_steam": "Gestoomd wit vlees" + } + }, + "programs_td": { + "state": { + "active_dry": "Actief drogen", + "allergy_care": "Anti-allergie", + "all_in_one": "All in One", + "antiallergy": "Anti-allergie", + "anti_odours": "Anti geuren", + "auto_care": "Automatische verzorging", + "baby": "Baby", + "bed_quilt": "Dekbed", + "care_30": "Verzorging 30'", + "care_45": "Verzorging 45'", + "care_59": "Verzorging 59'", + "coloured": "Gekleurd", + "daily_45_min": "DAILY 45'", + "daily_perfect_59_min": "DAILY PERFECT 59'", + "darks_and_coloured": "Donker & Gekleurd", + "delicates": "Fijne was", + "duvet": "Dekbed", + "eco": "Eco katoen", + "ecospeed_cottons": "Ecospeed Katoen", + "ecospeed_delicates": "Ecospeed fijne was", + "ecospeed_mixed": "Ecospeed Gemengd", + "extra_hygiene": "Extra Hygiene", + "fitness": "Fitness", + "fresh_care": "Opfrisverzorging", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Handdoeken", + "hqd_bed_sheets": "Beddengoed", + "hqd_bulky": "Grote artikelen", + "hqd_casual": "Casual", + "hqd_cold_wind_30": "30\u00a0minuten koel briesje", + "hqd_cold_wind_timing": "Koel briesje ", + "hqd_cotton": "Katoen", + "hqd_curtain": "Gordijnen", + "hqd_delicate": "Fijne was", + "hqd_diaper": "Luiers", + "hqd_duvet": "Dekbed", + "hqd_feather": "Donsjassen", + "hqd_hot_wind_timing": "Hete lucht", + "hqd_hygienic": "Ontsmetten", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Jassen", + "hqd_jeans": "Jeans", + "hqd_luxury": "Luxury", + "hqd_mix": "Gemengde vezels", + "hqd_night_dry": "Nachtelijk droogprogramma", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Quick 20", + "hqd_quick_30": "Quick 30", + "hqd_quick_dry": "Quick dry", + "hqd_quilt": "Quilts", + "hqd_refresh": "Opfrissen", + "hqd_school_uniform": "Schooluniform", + "hqd_shirt": "Overhemden", + "hqd_shoes": "Schoenen", + "hqd_silk": "Zijde", + "hqd_sports": "Sport", + "hqd_synthetics": "Synthetische stoffen", + "hqd_timer": "Getimed", + "hqd_towel": "Handdoeken", + "hqd_underwear": "Ondergoed", + "hqd_warm_up": "Opwarmen", + "hqd_wool": "Wol", + "hqd_working_suit": "Werkkleding", + "hygiene": "Hygi\u00ebne", + "iot_checkup": "Controle", + "iot_dry_anti_mites": "Anti-mijten", + "iot_dry_baby": "Baby", + "iot_dry_backpacks": "Rugzakken", + "iot_dry_bathrobe": "Badjas", + "iot_dry_bed_linen": "Bed Linnen", + "iot_dry_bed_quilt": "Dekbed", + "iot_dry_cotton": "Katoen", + "iot_dry_cuddly_toys": "Knufflels", + "iot_dry_curtains": "Gordijnen", + "iot_dry_dehumidifier": "Vochtigheidsverwijderaar", + "iot_dry_delicates": "Delicate was", + "iot_dry_delicate_tablecloths": "Delicate tafelkleden", + "iot_dry_denim_jeans": "Denim \u2013 Jeans", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Dekbed", + "iot_dry_easy_iron_cotton": "Super Gemakkelijk strijken", + "iot_dry_easy_iron_synthetics": "Synthetische stoffen gemakkelijk strijken", + "iot_dry_gym_fit": "Gym fit - Fitness", + "iot_dry_lingerie": "Lingerie", + "iot_dry_mixed": "Gemengde vezels", + "iot_dry_playsuits": "Jumpsuits", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Snel 59'", + "iot_dry_refresh": "Opfrissen", + "iot_dry_regenerates_waterproof": "Regenereert Waterproof", + "iot_dry_relax_creases": "Ontkreuken", + "iot_dry_shirts": "Overhemden", + "iot_dry_small_load": "Kleine lading", + "iot_dry_swimsuits_and_bikinis": "Badkleding", + "iot_dry_synthetics": "Synthetisch", + "iot_dry_synthetic_dry": "Synthetische stoffen drogen", + "iot_dry_tablecloths": "Tafelkleden", + "iot_dry_technical_fabrics": "Technische Vezels", + "iot_dry_warm_embrace": "Warme Knuffel", + "iot_dry_wool": "Wol", + "jeans": "Jeans", + "mix_and_dry": "Gemengd&Droog", + "pets": "Huisdieren", + "pre_iron": "Gemakkelijk strijken", + "rapid_30": "Rapid 30", + "rapid_45": "Snel 45 min", + "rapid_59": "Perfect Rapid 59 Min", + "refresh": "Opfrissen", + "relax_creases": "Ontkreuken", + "saving_30_min": "ECO 30'", + "shirts": "Overhemden", + "shoes": "Schoenen", + "small_load": "Kleine lading", + "soft_care": "Zachte verzorging", + "sport_plus": "Sports", + "super_easy_iron_misti": "Super eenvoudig strijken gemengd", + "super_easy_iron_xxl": "Super eenvoudig strijken XXL", + "super_fast_cottons": "Super Snel Katoen", + "super_fast_delicates": "Super Snel Delicaat", + "synthetics": "Synthetisch", + "total_care": "Total Care", + "trainers": "Trainers", + "ultra_care": "Ultra\u00a0Care", + "waterproof_revitalize": "Waterproof Revitaliseren", + "whites": "Witte was", + "wool": "Droge Wol", + "woolmark": "Wol", + "xxl_load": "XXL Lading", + "zoom_59": "Zoom\u00a059" + } + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "20\u00b0 gekleurd en katoen", + "20_degrees_new_energy_label": "20 \u00b0C", + "active_steam": "Stoom", + "active_wash": "Actieve was", + "active_wash_steam": "Actieve was", + "allergy_care": "Allergiezorg", + "allergy_care_pro": "Allergy Care Pro", + "all_in_one_49": "Alles-in-\u00e9\u00e9n 49'.", + "all_in_one_59": "Alles-in-\u00e9\u00e9n 59'.", + "all_in_one_59_steam": "Actieve was + Stoom", + "autocare": "Automatische verzorging", + "autoclean": "Trommelreiniging", + "baby_60": "All baby 60 \u00b0 C", + "care_14": "Rapid care 14'", + "care_30": "Rapid care 30'", + "care_44": "Rapid Care 44'", + "checkup": "Controle", + "colour_59": "Gekleurd 59'", + "colour_59_steam": "Gekleurd 59' + Stoom", + "cottons": "Katoen", + "cottons_prewash": "Katoen + voorwas", + "cottons_steam": "Katoen + Stoom", + "cotton_care_59": "Cotton Care 59 Min", + "delicate_59": "Fijne was 59'", + "delicate_silk": "Fijne was Zijde", + "delicate_silk_steam": "Fijne was Zijde + Stoom", + "delicati_59": "Fijne was 59'", + "delicati_59_steam": "Fijne was 59'", + "drain_spin": "Afpompen en centrifugeren", + "easy_iron": "Makkelijk Strijkbaar", + "eco_40_60_new_energy_label": "Eco 40-60", + "extra_care": "Extra Care", + "fitness": "Fitness care", + "fitness_care": "Fitness care", + "fresh_care": "Opfrisverzorging", + "fresh_care_steam": "Fresh Care + Stoom", + "handwash_wool": "Handwas en wol", + "high_dry": "Katoen drogen", + "hqd_20_degrees": "Katoen 20\u2103", + "hqd_allergy": "Allergiezorg", + "hqd_autoclean": "Het reinigen van de trommel", + "hqd_babycare": "Baby Care", + "hqd_checkup": "Controle", + "hqd_cottons": "Katoen", + "hqd_delicate": "Fijne was", + "hqd_delicate_cradle": "Fijne was", + "hqd_dry": "Katoen drogen", + "hqd_dry_synthetics": "Gemengde vezels drogen", + "hqd_duvet": "Dekbed", + "hqd_eco_40_60_degrees": "Eco 40-60", + "hqd_handwash_wool": "Wol", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "Gemengde was", + "hqd_quick_15": "Snel 15'", + "hqd_quick_wash_57": "Snel wassen 57\u00a0min", + "hqd_rapid_wash_and_dry": "Wassen en drogen", + "hqd_refresh": "Opfrissen", + "hqd_rinse": "Spoelen", + "hqd_shirts": "Overhemden", + "hqd_smart": "Smart A.I.", + "hqd_spin": "Centrifugeren", + "hqd_sport": "Sport", + "hqd_super_fast": "Snel 39'", + "hqd_synthetic_and_coloured": "Synthetische stoffen", + "hygiene_59": "Hygiene Plus 59'", + "hygiene_60": "Hygi\u00ebne 60 \u00b0C", + "hygiene_plus_59": "Hygiene Plus 59'", + "hygiene_plus_59_min": "Hygiene Plus 59'", + "hygiene_pro _49_min": "Hygiene Pro 49 '", + "hygiene_pro_49_min": "Hygiene Pro 49 min", + "hygiene_pro_steam": "Hygiene Pro + stoom", + "intensive_40": "Intensief 40\u00b0C", + "intensive_40_steam": "Intensief 40\u00b0C + Stoom", + "iot_active_steam": "Stoom", + "iot_active_wash_steam": "Actieve was", + "iot_allergy_care_pro": "Allergy Care Pro", + "iot_all_in_one_59_steam": "Actieve was + Stoom", + "iot_checkup": "Controle", + "iot_colour_59_steam": "Gekleurd 59' + Stoom", + "iot_cottons_steam": "Katoen + Stoom", + "iot_delicate_silk_steam": "Fijne was Zijde + Stoom", + "iot_delicati_59_steam": "Fijne was 59'", + "iot_dry_air_refresh": "Opfrissen met lucht", + "iot_dry_anti_mites": "Antimijt", + "iot_dry_baby": "Baby", + "iot_dry_backpacks": "Rugzakken", + "iot_dry_bathrobe": "Badjassen en poreuze stoffen", + "iot_dry_bed_linen": "Beddengoed", + "iot_dry_cotton_dry": "Katoen drogen", + "iot_dry_cuddly_toys": "Knuffeldieren", + "iot_dry_curtains": "Gordijnen", + "iot_dry_dehumidifier": "Vochtigheidsverwijderaar", + "iot_dry_delicates_antiallergy": "Fijne was \u2013 anti-allergie", + "iot_dry_delicate_tablecloths": "Delicate tafellakens", + "iot_dry_denim_jeans": "Denim \u2013 Jeans", + "iot_dry_easy_iron_cotton": "Gemakkelijk strijken \u2013 Katoen", + "iot_dry_easy_iron_synthetics": "Gemakkelijk strijken \u2013 Synthetische stoffen", + "iot_dry_gym_fit": "Sportkleding", + "iot_dry_lingerie": "Lingerie", + "iot_dry_mixed_dry": "Gemengde vezels drogen", + "iot_dry_rapid_60_min_delicates": "Snel 60' \u2013 Fijne was", + "iot_dry_shirts": "Overhemden", + "iot_dry_swimsuits_and_bikinis": "Badkleding", + "iot_dry_synthetics": "Synthetische stoffen drogen", + "iot_dry_synthetic_dry": "Synthetische stoffen drogen", + "iot_dry_tablecloths": "Tafellakens", + "iot_dry_technical_fabrics": "Technische stoffen", + "iot_dry_warm_embrace": "Warm drogen", + "iot_dry_wool_dry": "Wol drogen", + "iot_easy_iron": "Makkelijk Strijkbaar", + "iot_fresh_care_steam": "Fresh Care + Stoom", + "iot_hygiene_pro_steam": "Hygiene Pro + stoom", + "iot_intensive_40_steam": "Intensief 40\u00b0C + Stoom", + "iot_mixed_steam": "Gemengde vezels + Stoom", + "iot_mix_and_colour_59_steam": "Gemengd en Gekleurd 59' + Stoom", + "iot_perfect_cotton_59_steam": "Perfecte Katoen 59'", + "iot_rapid_a_class_60_steam": "Snel klasse A 60 + Stoom", + "iot_resistant_cotton_steam": "Katoen + Stoom", + "iot_shirts_steam": "Shirts + stoom", + "iot_single_item_steam": "E\u00e9n artikel + Stoom", + "iot_smart_wash": "Smart Wash", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "Speciaal 39' + Stoom", + "iot_steam_hygiene_plus": "Hygi\u00ebne Plus Stoom ", + "iot_synthetic_and_coloured_steam": "Synthetisch en gekleurd + Stoom", + "iot_wash_and_dry": "Wassen en drogen", + "iot_wash_anti_mites": "Antimijt", + "iot_wash_anti_odor": "Antigeur", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "Ontsmettend", + "iot_wash_baby_sanitizer_steam": "Baby Sanitiser + Stoom", + "iot_wash_backpacks": "Rugzakken", + "iot_wash_backpacks_zelig": "Rugzakken", + "iot_wash_bathrobe": "Badjassen en handdoeken", + "iot_wash_bathrobe_steam": "Badjas + Stoom", + "iot_wash_bed_linen": "Beddengoed", + "iot_wash_bed_linen_steam": "Beddengoed + Stoom", + "iot_wash_bed_linen_zelig": "Beddengoed", + "iot_wash_big_single_load": "Grote enkele lading", + "iot_wash_bleaching": "Bleken", + "iot_wash_blood_stains": "Bloedvlekken", + "iot_wash_cashmere": "Kasjmier", + "iot_wash_chocolate_stains": "Chocoladevlekken", + "iot_wash_cold_wash": "Koude was", + "iot_wash_colored": "Bonte was", + "iot_wash_colored_anti_stain": "Vlekverwijdering voor bonte was", + "iot_wash_colored_delicate": "Fijne bonte was", + "iot_wash_coloured": "Bonte was", + "iot_wash_coloured_bed_linen": "Gekleurd beddengoed", + "iot_wash_coloured_bed_linen_steam": "Gekleurd beddengoed + Stoom", + "iot_wash_coloured_curtains": "Gekleurde gordijnen", + "iot_wash_coloured_shirts": "Gekleurde overhemden", + "iot_wash_coloured_shirts_steam": "Gekleurde Shirts + Stoom", + "iot_wash_coloured_steam": "Bonte was + Stoom", + "iot_wash_coloured_tableclothes": "Gekleurde tafelkleden", + "iot_wash_coloured_tableclothes_steam": "Gekleurde tafelkleden + Stoom", + "iot_wash_cotton": "Katoen", + "iot_wash_cotton_steam": "Katoen + Stoom", + "iot_wash_cuddly_toys": "Knuffeldieren", + "iot_wash_curtains": "Gordijnen", + "iot_wash_curtains_steam": "Gordijnen+Stoom", + "iot_wash_curtains_zelig": "Gordijnen", + "iot_wash_dark": "Donkere kleding", + "iot_wash_darks_and_coloured_44": "Donkere en bonte was 44'", + "iot_wash_darks_and_coloured_59": "Donkere en bonte was 59'", + "iot_wash_darks_and_coloured_xl": "Donkere en bonte was XL", + "iot_wash_dark_steam": "Donkere kleding + Stoom", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "Fijne was", + "iot_wash_delicate_antiallergy": "Anti-allergie voor fijne was", + "iot_wash_delicate_antiallergy_steam": "Anti-allergie voor fijne was + Stoom", + "iot_wash_delicate_antiallergy_zelig": "Anti-allergie voor fijne was", + "iot_wash_delicate_colors": "Gekleurde fijne was", + "iot_wash_delicate_colors_steam": "Kleuren + Stoom", + "iot_wash_delicate_dark": "Donkere fijne was", + "iot_wash_delicate_steam": "Fijne was + Stoom", + "iot_wash_delicate_tablecloths": "Delicate tafellakens", + "iot_wash_delicate_tablecloths_steam": "Delicate tafellakens + Stoom", + "iot_wash_delicate_whites": "Witte fijne was", + "iot_wash_denim_jeans": "Denim \u2013 Jeans", + "iot_wash_diving_suits": "Duikpakken", + "iot_wash_diving_suits_zelig": "Duikpakken", + "iot_wash_down_jackets": "Donsjassen", + "iot_wash_down_jackets_zelig": "Donsjassen", + "iot_wash_duvet": "Dekbed", + "iot_wash_fruit_stains": "Fruitvlekken", + "iot_wash_gym_fit": "Sportkleding", + "iot_wash_handwash": "Handwas", + "iot_wash_handwash_colored": "Fijne handwas", + "iot_wash_handwash_dark": "Donkere handwas", + "iot_wash_lingerie": "Lingerie", + "iot_wash_masks_refresh": "Maskers opfrissen", + "iot_wash_masks_sanification": "Maskers ontsmetting", + "iot_wash_masks_sanification_steam": "Maskers ontsmetting + Stoom", + "iot_wash_mats": "Vloerkleden", + "iot_wash_men_s_trousers": "Mannenbroeken", + "iot_wash_mixed": "Gemengde vezels", + "iot_wash_mixed_steam": "Gemengde vezels + Stoom", + "iot_wash_mix_and_coloured_44": "Gemengde vezels en bonte was 44'", + "iot_wash_mix_and_coloured_59": "Gemengde vezels en bonte was 59'", + "iot_wash_mix_and_coloured_xl": "Gemengde vezels en bonte was XL", + "iot_wash_new_clothes": "Nieuwe kleding", + "iot_wash_perfect_white": "Perfect wit", + "iot_wash_perfect_white_steam": "Perfect wit + Stoom", + "iot_wash_pets": "Accessoires voor dieren", + "iot_wash_pets_hair_removal": "Verwijderen van huisdierharen", + "iot_wash_pets_odours_stains_removal": "Verwijderen van diergeuren en vlekken", + "iot_wash_pets_steam": "Accessoires voor dieren", + "iot_wash_playsuits": "Playsuits", + "iot_wash_playsuits_steam": "Playsuits + Stoom", + "iot_wash_quick_drum_cleaner": "Snelle trommelreiniger", + "iot_wash_rapid_14": "Snel 14'", + "iot_wash_rapid_30": "Snel 30'", + "iot_wash_rapid_44": "Snel 44'", + "iot_wash_rapid_59": "Snel 59'", + "iot_wash_rapid_59_steam": "Snel 59' + Stoom", + "iot_wash_refresh_14_min": "Opfrissen 14'", + "iot_wash_resistant_colored": "Bont stevig wasgoed", + "iot_wash_resistant_dark": "Donker stevig wasgoed", + "iot_wash_resistant_whites": "Wit stevig wasgoed", + "iot_wash_rinse": "Spoelen", + "iot_wash_shirts": "Overhemden", + "iot_wash_shirts_steam": "Overhemden + Stoom", + "iot_wash_silk": "Zijde", + "iot_wash_ski_suit": "Skipakken", + "iot_wash_ski_suit_zelig": "Skipakken", + "iot_wash_spin": "Centrifugeren", + "iot_wash_sport": "Sport", + "iot_wash_sport_anti_odor": "Anti-Odour sportkleding", + "iot_wash_sport_anti_odor_zelig": "Anti-Odour sportkleding", + "iot_wash_stains_remover": "Vlekkenverwijderaar", + "iot_wash_swimsuits_and_bikinis": "Badkleding", + "iot_wash_synthetic": "Synthetische stoffen", + "iot_wash_synthetic_steam": "Synthetische stoffen + Stoom", + "iot_wash_tablecloths": "Tafellakens", + "iot_wash_tablecloths_steam": "Tafellakens + Stoom", + "iot_wash_technical_fabrics": "Technische stoffen", + "iot_wash_technical_fabrics_zelig": "Technische stoffen", + "iot_wash_technical_jackets": "Technische jacks", + "iot_wash_technical_jackets_zelig": "Technische jacks", + "iot_wash_trainers": "Sportschoenen", + "iot_wash_whites": "Witte was", + "iot_wash_whites_44": "Witte was 44'", + "iot_wash_whites_59": "Witte was 59'", + "iot_wash_whites_xl": "Witte was XL", + "iot_wash_wine_stains": "Wijnvlekken", + "iot_wash_wool": "Wol", + "jeans": "Jeans", + "jeans_60": "Jeans", + "low_dry": "Gemengde vezels drogen", + "mixed": "Gemengde vezels", + "mixed_and_colored_59": "Gemengde vezels en bonte was 59'", + "mixed_steam": "Gemengde vezels + Stoom", + "mix_and_colour_59": "Gemengd + Gekleurd 39'", + "mix_and_colour_59_steam": "Gemengd en Gekleurd 59' + Stoom", + "night_and_day": "Dag en nacht", + "night_wash": "Nachtprogramma", + "perfect_59": "Perfect 59'", + "perfect_cotton_59": "Perfecte Katoen 59'", + "perfect_cotton_59_steam": "Perfecte Katoen 59'", + "perfect_whites_59": "Perfect wit 59'", + "rapid_14_min": "Snel 14'", + "rapid_30_min": "Rapid 30'", + "rapid_44_min": "Rapid 44'", + "rapid_a_class_60": "Snel klasse A 60", + "rapid_a_class_60_steam": "Snel klasse A 60 + Stoom", + "rapid_wash_and_dry_59_min": "Wassen en drogen 59'", + "resistant_cotton": "Katoen", + "resistant_cotton_steam": "Katoen + Stoom", + "rinse": "Spoelen", + "shirts_steam": "Shirts + stoom", + "silent_night": "Nachtprogramma", + "single_item": "E\u00e9n artikel", + "single_item_steam": "E\u00e9n artikel + Stoom", + "smart_wash": "Smart Wash", + "soft_care": "Zachte verzorging", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "Speciaal 39'", + "special_39_full_load": "Speciaal 39'", + "special_39_full_load_steam": "Speciaal 39' + Stoom", + "special_49": "Speciaal 49'", + "sport_39": "Sport 39'", + "sport_plus_29": "Sport Plus 29\"", + "sport_plus_39": "Sport Plus 39'", + "steam_39": "Stoom 39'", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro - Katoen", + "steam_care_pro_delicates": "Steam Care Pro - Fijne was", + "steam_care_pro_synthetic": "Steam Care Pro - Synthetisch", + "steam_hygiene_plus": "Hygi\u00ebne Plus Stoom ", + "synthetics": "Synthetische stoffen", + "synthetic_and_coloured": "Synthetische vezels en kleuren", + "synthetic_and_coloured_steam": "Synthetisch en gekleurd + Stoom", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "Total Care", + "tumbling": "Trommeldrogen", + "wool": "Wol", + "wool_and_delicates_49": "Wol/Fijne was 49'", + "wool_dry": "Wol drogen", + "wool_soft_care": "Wol & Soft Care" + } + } } } } \ No newline at end of file diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index 9299b61..49dce72 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -66,6 +66,650 @@ "6": "Hot rinse" } } + }, + "select": { + "programs_dw": { + "state": { + "59_min": "Szybki 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "Auto Universalny 50 - 60\u00b0C", + "auto_universal_plus": "Auto Universalny Plus 65 - 75\u00b0C", + "auto_universal_plus_soil": "Auto Universalny Plus 65 - 75\u00b0C", + "auto_universal_soil": "Auto Universalny 50 - 60\u00b0C", + "auto_wash": "Auto Wash", + "auto_wash_soil": "Auto Wash", + "classe_a_59": "Zmywanie w klasie A 1 godz. 65\u00b0C", + "delicate": "Delikatny 45\u00b0C", + "dishwasher_care": "Cykl usuwania kamienia", + "eco": "Eco", + "eco_asynch": "Eco 45\u00b0C", + "eco_bldc": "Eco 45\u00b0C", + "eco_synch": "Eco 45\u00b0C", + "gentle_wash": "Gentle wash", + "glass": "Szk\u0142o", + "glass _care": "Glass Care", + "glassware": "Szklane 45\u00b0C", + "glass_care": "Glass Care", + "hygiene": "Higiena", + "hygiene_plus": "Higiena+ 75\u00b0C", + "intensive": "Intensywne ", + "intensive_rapid": "intensywny szybki", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "Auto Universalny 50 - 60\u00b0C", + "iot_auto_wash_soil": "Auto Wash", + "iot_baby_care": "Baby Care", + "iot_breakfast": "\u015aniadanie", + "iot_checkup": "Kontrola", + "iot_china_crystals": "Kryszta\u0142y", + "iot_classe_a_59": "Szybki 59'", + "iot_cocktail_glasses": "Kieliszki", + "iot_cocktail_glasses_soil": "Kieliszki", + "iot_daily_care": "Daily Care", + "iot_daily_care_soil": "Daily Care", + "iot_delicate": "Delikatny 45\u00b0C", + "iot_dinner_for_two": "Obiad dla dwojga", + "iot_dinner_for_two_soil": "Obiad dla dwojga", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "Eco 45\u00b0C", + "iot_eco_bldc": "Eco 45\u00b0C", + "iot_eco_synch": "Eco 45\u00b0C", + "iot_extra_hygiene": "Extra Higieniczne", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "Happy Hour", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "Imprezowy", + "iot_party_soil": "Imprezowy", + "iot_pizza_menu": "Pizza", + "iot_pizza_menu_soil": "Pizza", + "iot_plastic_tupperware": "Plastik i pojemniki", + "iot_porcelain": "Porcelana", + "iot_pot_&_pans": "Garnki i patelnie", + "iot_pot_&_pans_soil": "Garnki i patelnie", + "iot_power_mix_wash": "Mieszanie zmywanie Power", + "iot_power_mix_wash_soil": "Mieszanie zmywanie Power", + "iot_prewash": "Mycie wst\u0119pne", + "iot_pyrex_and_glassware": "Pyrex i Szk\u0142o", + "iot_rapid_29": "Szybki 29'", + "iot_rapid_39": "Szybkie 39' 60\u00b0C", + "iot_single": "Pojedynczy", + "iot_steam": "Para 75\u00b0C", + "iot_super_flash": "Super Flash", + "iot_super_wash": "Super Mycie", + "iot_turbopower": "TurboPower", + "iot_universal": "Uniwersalne 60\u00b0C", + "iot_wok_grids_maxi_pans": "Specjalny do patelni (Woki, Patelnie karbowane, Patelnie maxi)", + "iot_wok_grids_maxi_pans_soil": "Specjalny do patelni (Woki, Patelnie karbowane, Patelnie maxi)", + "iot_yes_quick_cycle": "Yes Quick", + "night": "Ultra Ciche 55\u00b0C", + "prewash": "Mycie wst\u0119pne", + "rapid_20": "Szybki 20'", + "rapid_24": "Szybki 24'", + "rapid_29": "Szybki 29' 50\u00b0C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "Szybkie 39' 60\u00b0C", + "rapid_49": "Szybki 49'", + "rapid_59": "Szybki 59'", + "sanitising": "Dezynfekcja", + "silence": "Silence", + "silent": "Nocny", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "special": "specjalne", + "special_pw_prz": "specjalne", + "steam": "Para 75\u00b0C", + "steam_plus": "Para Plus 75\u00b0C", + "total_care": "Total Care 50\u00b0C", + "ultra_silence": "Ultra Ciche 55\u00b0C", + "ultra_silent": "Ultra Ciche 55\u00b0C", + "universal": "Uniwersalne 60\u00b0C", + "universal_plus": "Uniwersalne Plus 70\u00b0C", + "zoom_39": "Zoom 39 min" + } + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "Popielato-br\u0105zowy", + "iot_special_beef_fillet": "Pol\u0119dwica wo\u0142owa", + "iot_special_beef_veal_stew": "Gulasz wo\u0142owo-ciel\u0119cy", + "iot_special_boiled_rice": "Ry\u017c gotowany", + "iot_special_chicken_breast": "Pier\u015b z kurczaka", + "iot_special_chicken_legs": "Udka kurczaka", + "iot_special_chocolate_pudding": "Budy\u0144 czekoladowy", + "iot_special_entrecote": "Antrykot", + "iot_special_fresh_tuna": "\u015awie\u017cy tu\u0144czyk", + "iot_special_grilled_vegetables": "Grillowane warzywa", + "iot_special_lamb_cutlet": "Kotlet jagni\u0119cy", + "iot_special_meatballs": "Klopsy mi\u0119sne", + "iot_special_minestrone": "W\u0142oska zupa warzywna", + "iot_special_mussels": "Ma\u0142\u017ce", + "iot_special_omelette": "Omlet", + "iot_special_pancakes": "Nale\u015bniki", + "iot_special_paris_style_peas": "Groszek w stylu paryskim", + "iot_special_poached_eggs": "Jajka w koszulce", + "iot_special_pork_fillet": "Kotlet wieprzowy", + "iot_special_pork_ribs": "\u017beberka wieprzowe", + "iot_special_prawns": "Krewetki", + "iot_special_quinoa": "Komosa ry\u017cowa (quinoa)", + "iot_special_ratatouille": "Ratatuja", + "iot_special_salmon_fillet": "Filet z \u0142ososia", + "iot_special_saute_potatoes": "Sma\u017cone ziemniaki", + "iot_special_scallops": "Ma\u0142\u017ce (przegrzebki)", + "iot_special_scrambled_eggs": "Jajecznica", + "iot_special_spelt": "Orkisz", + "iot_special_veggy_noodles": "Makaron wegetaria\u0144ski", + "iot_special_white_fish_fillet": "Filet z bia\u0142ej ryby", + "iot_standard_boiling": "Gotowanie", + "iot_standard_frying": "Sma\u017cenie", + "iot_standard_keep_warm": "Podtrzymanie ciep\u0142a", + "iot_standard_melting": "Roztapianie", + "iot_standard_simmering": "Duszenie" + } + }, + "programs_ov": { + "state": { + "bakery": "Makaron i Piekarnia", + "bakery_steam": "Chleb pieczony na parze", + "bottom_heating": "Grzanie dolne", + "bottom_heating_fan": "Grzanie Dolne + Termoobieg", + "bread": "Chleb", + "bread_steam": "Ciasteczka pieczone na parze", + "convection_fan": "Termoobieg", + "convection_fan_turnspit": "Termoobieg + Fan + Ro\u017cen", + "conventional": "Konwencjonalny", + "conventional_turnspit": "Statyczny + Ro\u017cen", + "defrost": "Rozmra\u017canie", + "descaling": "Odkamienianie", + "fish": "Ryby", + "fish_steam": "Ryba gotowana na parze", + "grill_cata": "Grill", + "grill_fan_cata": "Grill + termoobieg", + "grill_fan_pyro": "Grill + termoobieg", + "grill_pyro": "Grill", + "h20_clean": "H2O-Clean", + "iot_bread": "Chleb", + "iot_h20_clean": "h2O clean", + "leavening": "Zaczyn", + "low_temp_cooking": "Pieczenie w niskiej temperaturze", + "low_temp_cooking_fish": "Pieczenie w niskiej temperaturze - ryby", + "low_temp_cooking_fish_steam": "Gotowanie na parze w niskiej temperaturze \u2014 ryby", + "low_temp_cooking_meat": "Pieczenie w niskiej temperaturze - mi\u0119so", + "low_temp_cooking_meat_steam": "Gotowanie na parze w niskiej temperaturze \u2014 mi\u0119so", + "low_temp_cooking_steam": "Gotowanie na parze w niskiej temperaturze", + "meat": "Mi\u0119so", + "meat_steam": "Mi\u0119so gotowane na parze", + "multi_level": "Wielopoziomowo", + "paella": "Paella", + "pasta_and_bakery": "Makaron i Piekarnia", + "pizza": "Pizza", + "pyrolysis": "Pyroliza", + "pyrolysis_plus": "Pyroliza +", + "red_meat": "Czerwone mi\u0119so", + "red_meat_steam": "Czerwone mi\u0119so gotowane na parze", + "regenerate": "Regeneracja", + "soft_plus": "Soft+", + "super_grill": "Super Grill", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor bake", + "tailor_bake_desctiption": "Idealnie nadaje si\u0119 do tego, aby potrawy by\u0142y mi\u0119kkie w \u015brodku i chrupi\u0105ce na zewn\u0105trz.\r\r\r\r\r\r\r\nFunkcja ta zmniejsza ilo\u015b\u0107 wykorzystywanego t\u0142uszczu lub oleju, dla zdrowej diety.\r\r\r\r\r\r\r\nPo\u0142\u0105czenie grza\u0142ek z pulsacyjnym cyklem powietrza zapewnia r\u00f3wnomierny efekt pieczenia.", + "tailor_bake_pyro": "Tailor bake", + "vegetables": "Warzywa", + "vegetables_cata": "Warzywa", + "vegetables_pyro": "Warzywa", + "water_discharge": "Odp\u0142yw wody", + "white_meat": "Bia\u0142e mi\u0119so", + "white_meat_steam": "Bia\u0142e mi\u0119so gotowane na parze" + } + }, + "programs_td": { + "state": { + "active_dry": "Aktywne suche", + "allergy_care": "Antiallergy", + "all_in_one": "All in One", + "antiallergy": "Antiallergy", + "anti_odours": "Od\u015bwie\u017cenie", + "auto_care": "Auto Care", + "baby": "Dzieci", + "bed_quilt": "Bed Quilt", + "care_30": "Care 30", + "care_45": "Care 45", + "care_59": "Care 59", + "coloured": "Kolorowe", + "daily_45_min": "CODZIENNY 45'", + "daily_perfect_59_min": "CODZIENNY PERFEKT 59'", + "darks_and_coloured": "Darks & Coloured", + "delicates": "Delikatne", + "duvet": "Ko\u0142dry", + "eco": "Bawe\u0142na ekologiczna", + "ecospeed_cottons": "Ecospeed Cottons", + "ecospeed_delicates": "Szybki Eco do tkanin delikatnych", + "ecospeed_mixed": "Ecospeed Mixed", + "extra_hygiene": "HIGIENICZNY", + "fitness": "Fitness", + "fresh_care": "Fresh Care", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "R\u0119czniki", + "hqd_bed_sheets": "Prze\u015bcierad\u0142a", + "hqd_bulky": "Elementy wielkogabarytowe", + "hqd_casual": "Nieformalny", + "hqd_cold_wind_30": "Ch\u0142odna bryza 30 minut", + "hqd_cold_wind_timing": "Ch\u0142odny wietrzyk ", + "hqd_cotton": "Bawe\u0142na", + "hqd_curtain": "Zas\u0142ony", + "hqd_delicate": "Delikatne", + "hqd_diaper": "Pieluchy", + "hqd_duvet": "Ko\u0142dry", + "hqd_feather": "Kurtki puchowe", + "hqd_hot_wind_timing": "Gor\u0105ce powietrze", + "hqd_hygienic": "Higienizacja", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Kurtki", + "hqd_jeans": "D\u017cins", + "hqd_luxury": "Luxury", + "hqd_mix": "Mieszane", + "hqd_night_dry": "Suszenie nocne", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Szybkie 20", + "hqd_quick_30": "Szybkie 30", + "hqd_quick_dry": "Szybkoschn\u0105ce", + "hqd_quilt": "Ko\u0142dry", + "hqd_refresh": "Od\u015bwie\u017canie", + "hqd_school_uniform": "Mundurek szkolny", + "hqd_shirt": "Koszule", + "hqd_shoes": "Buty", + "hqd_silk": "Jedwab", + "hqd_sports": "Odzie\u017c sportowa", + "hqd_synthetics": "Syntetyki", + "hqd_timer": "Czasowe", + "hqd_towel": "R\u0119czniki", + "hqd_underwear": "Bielizna", + "hqd_warm_up": "Podgrzej", + "hqd_wool": "We\u0142na", + "hqd_working_suit": "Odzie\u017c robocza", + "hygiene": "Higiena", + "iot_checkup": "Kontrola", + "iot_dry_anti_mites": "Przeciw roztoczom", + "iot_dry_baby": "Dzieci", + "iot_dry_backpacks": "Plecaki", + "iot_dry_bathrobe": "Szlafroki", + "iot_dry_bed_linen": "Po\u015bciel", + "iot_dry_bed_quilt": "Bed Quilt", + "iot_dry_cotton": "Bawe\u0142na", + "iot_dry_cuddly_toys": "Zabawki pluszowe", + "iot_dry_curtains": "Zas\u0142ony", + "iot_dry_dehumidifier": "\u015arodek do usuwania wilgoci", + "iot_dry_delicates": "Bielizna", + "iot_dry_delicate_tablecloths": "Delikatne obrusy", + "iot_dry_denim_jeans": "D\u017cinsy", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Ko\u0142dry", + "iot_dry_easy_iron_cotton": "Super Easy Iron", + "iot_dry_easy_iron_synthetics": "Super \u0142atwe prasowanie tkanin syntetycznych", + "iot_dry_gym_fit": "Gimnastyczne - Fitness", + "iot_dry_lingerie": "Bielizna", + "iot_dry_mixed": "Mieszane", + "iot_dry_playsuits": "Pajacyki", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Szybki 59\u2019.", + "iot_dry_refresh": "Refresh", + "iot_dry_regenerates_waterproof": "Regeneracja wodoodpornych", + "iot_dry_relax_creases": "Relax Creases", + "iot_dry_shirts": "Koszule", + "iot_dry_small_load": "Small Load", + "iot_dry_swimsuits_and_bikinis": "Stroje k\u0105pielowe", + "iot_dry_synthetics": "Syntetyczne", + "iot_dry_synthetic_dry": "Suszenie materia\u0142\u00f3w syntetycznych", + "iot_dry_tablecloths": "Obrusy", + "iot_dry_technical_fabrics": "Materia\u0142y techniczne", + "iot_dry_warm_embrace": "Ciep\u0142e obj\u0119cie", + "iot_dry_wool": "Woolmark", + "jeans": "D\u017cinsy", + "mix_and_dry": "Mix&Dry", + "pets": "Zwierz\u0119ta domowe", + "pre_iron": "Pre-Iron", + "rapid_30": "Rapid 30", + "rapid_45": "Rapid 45 min", + "rapid_59": "Perfekcyjne szybkie w 59 min", + "refresh": "Od\u015bwie\u017canie", + "relax_creases": "Relax Creases", + "saving_30_min": "ECO 30'", + "shirts": "Koszule", + "shoes": "Buty", + "small_load": "Small Load", + "soft_care": "Soft Care", + "sport_plus": "Sportowe", + "super_easy_iron_misti": "Super \u0142atwe prasowanie tkanin mieszanych", + "super_easy_iron_xxl": "Super \u0142atwe prasowanie XXL", + "super_fast_cottons": "Super Fast Cottons", + "super_fast_delicates": "Super Fast Delicates", + "synthetics": "Syntetyczne", + "total_care": "Total Care", + "trainers": "Buty sportowe", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Waterproof Revitalize", + "whites": "Bia\u0142e", + "wool": "Suszenie we\u0142ny", + "woolmark": "Woolmark", + "xxl_load": "XXL Load", + "zoom_59": "Zoom 59" + } + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "20\u00b0 Kolorowe i Bawe\u0142na", + "20_degrees_new_energy_label": "20\u00b0C", + "active_steam": "Para", + "active_wash": "Aktywne pranie", + "active_wash_steam": "Aktywne pranie", + "allergy_care": "Piel\u0119gnacja antyalergiczna", + "allergy_care_pro": "Allergy Care Pro", + "all_in_one_49": "Wszystko w jednym cyklu 49\u2019", + "all_in_one_59": "Wszystko w jednym cyklu 59\u2019", + "all_in_one_59_steam": "Aktywne pranie + Para", + "autocare": "Piel\u0119gnacja w\u0142asna", + "autoclean": "Czyszczenie b\u0119bna", + "baby_60": "Wszystkie dziecinne 60\u00b0C", + "care_14": "Rapid Care 14'", + "care_30": "Rapid Care 30'", + "care_44": "Rapid Care 44'", + "checkup": "Kontrola", + "colour_59": "Kolorowe 59'", + "colour_59_steam": "Kolorowe 59' + Para", + "cottons": "Bawe\u0142na", + "cottons_prewash": "Bawe\u0142na + pranie wst\u0119pne", + "cottons_steam": "Bawe\u0142na + Para", + "cotton_care_59": "Cotton Care 59 Min", + "delicate_59": "Delikatne 59\u2019", + "delicate_silk": "Delikatny jedwab", + "delicate_silk_steam": "Delikatny jedwab + Para", + "delicati_59": "Delikatne 59\u2019", + "delicati_59_steam": "Delikatne 59\u2019", + "drain_spin": "Spu\u015b\u0107 wod\u0119 +i odwiruj", + "easy_iron": "\u0141atwe prasowanie", + "eco_40_60_new_energy_label": "Eco 40-60", + "extra_care": "Extra Care", + "fitness": "Fitness Care", + "fitness_care": "Fitness Care", + "fresh_care": "Fresh Care", + "fresh_care_steam": "Fresh Care + Para", + "handwash_wool": "Pranie r\u0119czne i we\u0142na", + "high_dry": "Suszenie bawe\u0142ny", + "hqd_20_degrees": "Bawe\u0142na 20\u2103", + "hqd_allergy": "Piel\u0119gnacja antyalergiczna", + "hqd_autoclean": "Czyszczenie b\u0119bna", + "hqd_babycare": "Baby Care", + "hqd_checkup": "Kontrola", + "hqd_cottons": "Bawe\u0142na", + "hqd_delicate": "Delikatne", + "hqd_delicate_cradle": "Delikatne", + "hqd_dry": "Suszenie bawe\u0142ny", + "hqd_dry_synthetics": "Suszenie materia\u0142\u00f3w mieszanych", + "hqd_duvet": "Ko\u0142dry", + "hqd_eco_40_60_degrees": "Eco 40-60", + "hqd_handwash_wool": "We\u0142na", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "Mieszane", + "hqd_quick_15": "Szybki 15'", + "hqd_quick_wash_57": "Szybkie pranie 57 min", + "hqd_rapid_wash_and_dry": "Pranie + suszenie", + "hqd_refresh": "Refresh", + "hqd_rinse": "P\u0142ukanie", + "hqd_shirts": "Koszule", + "hqd_smart": "Smart A.I.", + "hqd_spin": "Wirowanie", + "hqd_sport": "Odzie\u017c sportowa", + "hqd_super_fast": "Szybki 39\u2019", + "hqd_synthetic_and_coloured": "Syntetyki", + "hygiene_59": "Higiena Plus 59'", + "hygiene_60": "Higiena 60 \u00b0", + "hygiene_plus_59": "Higiena Plus 59'", + "hygiene_plus_59_min": "Higiena Plus 59'", + "hygiene_pro _49_min": "Hygiene Pro 49 '", + "hygiene_pro_49_min": "Hygiene Pro 49 min", + "hygiene_pro_steam": "Hygiene Pro + Para", + "intensive_40": "Intensywne 40\u00b0C", + "intensive_40_steam": "Intensywny 40\u00b0C + Para", + "iot_active_steam": "Para", + "iot_active_wash_steam": "Aktywne pranie", + "iot_allergy_care_pro": "Allergy Care Pro", + "iot_all_in_one_59_steam": "Aktywne pranie + Para", + "iot_checkup": "Kontrola", + "iot_colour_59_steam": "Kolorowe 59' + Para", + "iot_cottons_steam": "Bawe\u0142na + Para", + "iot_delicate_silk_steam": "Delikatny jedwab + Para", + "iot_delicati_59_steam": "Delikatne 59\u2019", + "iot_dry_air_refresh": "Od\u015bwie\u017cacz powietrza", + "iot_dry_anti_mites": "Przeciw roztoczom", + "iot_dry_baby": "Dzieci\u0119ce", + "iot_dry_backpacks": "Plecaki", + "iot_dry_bathrobe": "Szlafroki i tkaniny porowate", + "iot_dry_bed_linen": "Po\u015bciele", + "iot_dry_cotton_dry": "Suszenie bawe\u0142ny", + "iot_dry_cuddly_toys": "Pluszaki", + "iot_dry_curtains": "Zas\u0142ony", + "iot_dry_dehumidifier": "\u015arodek do usuwania wilgoci", + "iot_dry_delicates_antiallergy": "Delikatne - przeciwalergiczne", + "iot_dry_delicate_tablecloths": "Delikatne obrusy", + "iot_dry_denim_jeans": "D\u017cinsy", + "iot_dry_easy_iron_cotton": "\u0141atwe prasowanie - We\u0142na", + "iot_dry_easy_iron_synthetics": "\u0141atwe prasowanie - Syntetyki", + "iot_dry_gym_fit": "Ubrania na si\u0142owni\u0119", + "iot_dry_lingerie": "Bielizna", + "iot_dry_mixed_dry": "Suszenie materia\u0142\u00f3w mieszanych", + "iot_dry_rapid_60_min_delicates": "Szybki 60 - Delikatne", + "iot_dry_shirts": "Koszule", + "iot_dry_swimsuits_and_bikinis": "Stroje k\u0105pielowe", + "iot_dry_synthetics": "Suszenie materia\u0142\u00f3w syntetycznych", + "iot_dry_synthetic_dry": "Suszenie materia\u0142\u00f3w syntetycznych", + "iot_dry_tablecloths": "Obrusy", + "iot_dry_technical_fabrics": "Tkaniny techniczne", + "iot_dry_warm_embrace": "Delikatne suszenie", + "iot_dry_wool_dry": "Suszenie we\u0142ny", + "iot_easy_iron": "\u0141atwe prasowanie", + "iot_fresh_care_steam": "Fresh Care + Para", + "iot_hygiene_pro_steam": "Hygiene Pro + Para", + "iot_intensive_40_steam": "Intensywny 40\u00b0C + Para", + "iot_mixed_steam": "Mieszane + Para", + "iot_mix_and_colour_59_steam": "Mieszane i kolorowe 59' + Para", + "iot_perfect_cotton_59_steam": "Idealna Bawelna 59'", + "iot_rapid_a_class_60_steam": "Szybki Klasa A 60 + Para", + "iot_resistant_cotton_steam": "Bawe\u0142na + Para", + "iot_shirts_steam": "Koszule + Para", + "iot_single_item_steam": "Pojedynczy przedmiot + Para", + "iot_smart_wash": "Inteligentne pranie", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "Specjalny 39' + Para", + "iot_steam_hygiene_plus": "Higiena Plus Para ", + "iot_synthetic_and_coloured_steam": "Syntetyki i Kolorowe + Para", + "iot_wash_and_dry": "Pranie + suszenie", + "iot_wash_anti_mites": "Przeciw roztoczom", + "iot_wash_anti_odor": "Usuwanie zapach\u00f3w", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "\u015arodek dezynfekuj\u0105cy", + "iot_wash_baby_sanitizer_steam": "Odka\u017cacz dla dzieci + Para", + "iot_wash_backpacks": "Plecaki", + "iot_wash_backpacks_zelig": "Plecaki", + "iot_wash_bathrobe": "Szlafroki i r\u0119czniki", + "iot_wash_bathrobe_steam": "Szlafroki + Para", + "iot_wash_bed_linen": "Po\u015bciele", + "iot_wash_bed_linen_steam": "Po\u015bciele + Para", + "iot_wash_bed_linen_zelig": "Po\u015bciele", + "iot_wash_big_single_load": "Du\u017cy pojedynczy \u0142adunek", + "iot_wash_bleaching": "Wybielanie", + "iot_wash_blood_stains": "Plamy krwi", + "iot_wash_cashmere": "Kaszmir", + "iot_wash_chocolate_stains": "Plamy z czekolady", + "iot_wash_cold_wash": "Pranie w zimnej wodzie", + "iot_wash_colored": "Kolorowe", + "iot_wash_colored_anti_stain": "Usuwanie plam z tkanin kolorowych", + "iot_wash_colored_delicate": "Kolorowe, delikatne", + "iot_wash_coloured": "Tkaniny kolorowe", + "iot_wash_coloured_bed_linen": "Kolorowa po\u015bciel", + "iot_wash_coloured_bed_linen_steam": "Kolorowa po\u015bciel + Para", + "iot_wash_coloured_curtains": "Kolorowe zas\u0142ony", + "iot_wash_coloured_shirts": "Kolorowe koszule", + "iot_wash_coloured_shirts_steam": "Kolorowe koszule + Para", + "iot_wash_coloured_steam": "Tkaniny kolorowe + Para", + "iot_wash_coloured_tableclothes": "Kolorowe obrusy", + "iot_wash_coloured_tableclothes_steam": "Kolorowe obrusy + Para", + "iot_wash_cotton": "Bawe\u0142na", + "iot_wash_cotton_steam": "Bawe\u0142na + Para", + "iot_wash_cuddly_toys": "Pluszaki", + "iot_wash_curtains": "Zas\u0142ony", + "iot_wash_curtains_steam": "Zas\u0142ony+Para", + "iot_wash_curtains_zelig": "Zas\u0142ony", + "iot_wash_dark": "Ciemne ubrania", + "iot_wash_darks_and_coloured_44": "Ciemne i kolorowe 44'", + "iot_wash_darks_and_coloured_59": "Ciemne i kolorowe 59'", + "iot_wash_darks_and_coloured_xl": "Ciemne i kolorowe XL", + "iot_wash_dark_steam": "Ciemne ubrania + Para", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "Delikatne", + "iot_wash_delicate_antiallergy": "Antyalergiczny dla delikatnych", + "iot_wash_delicate_antiallergy_steam": "Antyalergiczny dla delikatnych + Para", + "iot_wash_delicate_antiallergy_zelig": "Antyalergiczny dla delikatnych", + "iot_wash_delicate_colors": "Delikatne tkaniny kolorowe", + "iot_wash_delicate_colors_steam": "Kolorowe + Para", + "iot_wash_delicate_dark": "Delikatne, ciemne", + "iot_wash_delicate_steam": "Delikatne + Para", + "iot_wash_delicate_tablecloths": "Delikatne obrusy", + "iot_wash_delicate_tablecloths_steam": "Delikatne obrusy + Para", + "iot_wash_delicate_whites": "Delikatne, bia\u0142e", + "iot_wash_denim_jeans": "D\u017cinsy", + "iot_wash_diving_suits": "Kombinezony do nurkowania", + "iot_wash_diving_suits_zelig": "Kombinezony do nurkowania", + "iot_wash_down_jackets": "Kurtki puchowe", + "iot_wash_down_jackets_zelig": "Kurtki puchowe", + "iot_wash_duvet": "Ko\u0142dry", + "iot_wash_fruit_stains": "Plamy z owoc\u00f3w", + "iot_wash_gym_fit": "Ubrania na si\u0142owni\u0119", + "iot_wash_handwash": "Pranie r\u0119czne", + "iot_wash_handwash_colored": "Pranie r\u0119czne, kolorowe", + "iot_wash_handwash_dark": "Pranie r\u0119czne, ciemne", + "iot_wash_lingerie": "Bielizna", + "iot_wash_masks_refresh": "Od\u015bwie\u017canie masek", + "iot_wash_masks_sanification": "Dezynfekcja masek", + "iot_wash_masks_sanification_steam": "Dezynfekcja masek + Para", + "iot_wash_mats": "Dywany", + "iot_wash_men_s_trousers": "Spodnie", + "iot_wash_mixed": "Mieszane", + "iot_wash_mixed_steam": "Mieszane + Para", + "iot_wash_mix_and_coloured_44": "Mieszane i kolorowe 44'", + "iot_wash_mix_and_coloured_59": "Mieszane i kolorowe 59'", + "iot_wash_mix_and_coloured_xl": "Mieszane i kolorowe XL", + "iot_wash_new_clothes": "Nowe ubrania", + "iot_wash_perfect_white": "Idealnie bia\u0142e tkaniny", + "iot_wash_perfect_white_steam": "Idealnie bia\u0142e tkaniny + Para", + "iot_wash_pets": "Akcesoria dla zwierz\u0105t", + "iot_wash_pets_hair_removal": "Usuwanie sier\u015bci zwierz\u0105t", + "iot_wash_pets_odours_stains_removal": "Usuwanie zapach\u00f3w i plam po zwierz\u0119tach domowych", + "iot_wash_pets_steam": "Akcesoria dla zwierz\u0105t", + "iot_wash_playsuits": "Kombinezony", + "iot_wash_playsuits_steam": "Kombinezony + Para", + "iot_wash_quick_drum_cleaner": "\u015arodek do szybkiego czyszczenia b\u0119bna", + "iot_wash_rapid_14": "Szybki 14\u2019", + "iot_wash_rapid_30": "Szybki 30\u2019", + "iot_wash_rapid_44": "Szybki 44\u2019", + "iot_wash_rapid_59": "Szybki 59\u2019", + "iot_wash_rapid_59_steam": "Szybki 59' + Para", + "iot_wash_refresh_14_min": "Od\u015bwie\u017canie 14\u2019", + "iot_wash_resistant_colored": "Wytrzyma\u0142e, kolorowe", + "iot_wash_resistant_dark": "Wytrzyma\u0142e ciemne", + "iot_wash_resistant_whites": "Wytrzyma\u0142e bia\u0142e", + "iot_wash_rinse": "P\u0142ukanie", + "iot_wash_shirts": "Koszule", + "iot_wash_shirts_steam": "Koszule + Para", + "iot_wash_silk": "Jedwab", + "iot_wash_ski_suit": "Kombinezony narciarskie", + "iot_wash_ski_suit_zelig": "Kombinezony narciarskie", + "iot_wash_spin": "Wirowanie", + "iot_wash_sport": "Odzie\u017c sportowa", + "iot_wash_sport_anti_odor": "Odzie\u017c sportowa zapobiegaj\u0105ca powstawaniu nieprzyjemnych zapach\u00f3w", + "iot_wash_sport_anti_odor_zelig": "Odzie\u017c sportowa zapobiegaj\u0105ca powstawaniu nieprzyjemnych zapach\u00f3w", + "iot_wash_stains_remover": "Wywabiacz", + "iot_wash_swimsuits_and_bikinis": "Stroje k\u0105pielowe", + "iot_wash_synthetic": "Syntetyki", + "iot_wash_synthetic_steam": "Syntetyki + Para", + "iot_wash_tablecloths": "Obrusy", + "iot_wash_tablecloths_steam": "Obrusy + Para", + "iot_wash_technical_fabrics": "Tkaniny techniczne", + "iot_wash_technical_fabrics_zelig": "Tkaniny techniczne", + "iot_wash_technical_jackets": "Kurtki techniczne", + "iot_wash_technical_jackets_zelig": "Kurtki techniczne", + "iot_wash_trainers": "Buty sportowe", + "iot_wash_whites": "Bia\u0142e", + "iot_wash_whites_44": "Bia\u0142e 44\u2019", + "iot_wash_whites_59": "Bia\u0142e 59\u2019", + "iot_wash_whites_xl": "Bia\u0142e XL", + "iot_wash_wine_stains": "Plamy z wina", + "iot_wash_wool": "We\u0142na", + "jeans": "D\u017cins", + "jeans_60": "D\u017cinsy", + "low_dry": "Suszenie materia\u0142\u00f3w mieszanych", + "mixed": "Mieszane", + "mixed_and_colored_59": "Mieszane i kolorowe 59 '", + "mixed_steam": "Mieszane + Para", + "mix_and_colour_59": "Mieszane i kolorowe 59'", + "mix_and_colour_59_steam": "Mieszane i kolorowe 59' + Para", + "night_and_day": "Noc i Dzie\u0144", + "night_wash": "Cykl nocny", + "perfect_59": "Perfekcyjne 59\u2019", + "perfect_cotton_59": "Idealna Bawelna 59'", + "perfect_cotton_59_steam": "Idealna Bawelna 59'", + "perfect_whites_59": "Idealna biel 59'", + "rapid_14_min": "Szybkie 14'", + "rapid_30_min": "Szybki 30'", + "rapid_44_min": "Szybki 44'", + "rapid_a_class_60": "Szybki Klasa A 60", + "rapid_a_class_60_steam": "Szybki Klasa A 60 + Para", + "rapid_wash_and_dry_59_min": "Pranie i suszenie 59\u2019", + "resistant_cotton": "Bawe\u0142na", + "resistant_cotton_steam": "Bawe\u0142na + Para", + "rinse": "P\u0142ukanie", + "shirts_steam": "Koszule + Para", + "silent_night": "Cykl nocny", + "single_item": "Pojedynczy przedmiot", + "single_item_steam": "Pojedynczy przedmiot + Para", + "smart_wash": "Inteligentne pranie", + "soft_care": "Soft Care", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "Specjalny 39'", + "special_39_full_load": "Specjalny 39'", + "special_39_full_load_steam": "Specjalny 39' + Para", + "special_49": "Specjalne 49\u2019", + "sport_39": "Sport 39\u2019", + "sport_plus_29": "Sportowy Plus 29\"", + "sport_plus_39": "Sportowy Plus 39'", + "steam_39": "Para 39\u2019", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro - Bawe\u0142na", + "steam_care_pro_delicates": "Steam Care Pro - Delikatne", + "steam_care_pro_synthetic": "Steam Care Pro - Syntetyki", + "steam_hygiene_plus": "Higiena Plus Para ", + "synthetics": "Syntetyki", + "synthetic_and_coloured": "Syntetyki i Kolorowe", + "synthetic_and_coloured_steam": "Syntetyki i Kolorowe + Para", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "Total Care", + "tumbling": "B\u0119ben", + "wool": "We\u0142na", + "wool_and_delicates_49": "We\u0142na/Delikatne 49'", + "wool_dry": "Suszenie we\u0142ny", + "wool_soft_care": "We\u0142na & Soft Care" + } + } } } } \ No newline at end of file diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index 6d14111..dc3fb38 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -66,6 +66,650 @@ "6": "Hot rinse" } } + }, + "select": { + "programs_dw": { + "state": { + "59_min": "R\u00e1pido 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "Auto Universal 50 - 60\u00b0C", + "auto_universal_plus": "Auto Universal Plus 65 - 75\u00b0C", + "auto_universal_plus_soil": "Auto Universal Plus 65 - 75\u00b0C", + "auto_universal_soil": "Auto Universal 50 - 60\u00b0C", + "auto_wash": "Auto Wash", + "auto_wash_soil": "Auto Wash", + "classe_a_59": "Classe A 59' 65\u00b0C", + "delicate": "Delicados 45\u00b0C", + "dishwasher_care": "Ciclo de limpeza de calc\u00e1rio", + "eco": "Eco", + "eco_asynch": "Eco 45\u00b0C", + "eco_bldc": "Eco 45\u00b0C", + "eco_synch": "Eco 45\u00b0C", + "gentle_wash": "Gentle wash", + "glass": "Vidro", + "glass _care": "Glass Care", + "glassware": "Vidros 45 \u00b0C", + "glass_care": "Glass Care", + "hygiene": "Higiene", + "hygiene_plus": "Higiene+ 75 \u00b0C", + "intensive": "Intensivo ", + "intensive_rapid": "R\u00e1pido intensivo", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "Auto Universal 50 - 60\u00b0C", + "iot_auto_wash_soil": "Auto Wash", + "iot_baby_care": "Roupa de beb\u00e9", + "iot_breakfast": "Pequeno-almo\u00e7o", + "iot_checkup": "Check-Up", + "iot_china_crystals": "Porcelana chinesa", + "iot_classe_a_59": "R\u00e1pido 59'", + "iot_cocktail_glasses": "Copos para Cocktail", + "iot_cocktail_glasses_soil": "Copos para Cocktail", + "iot_daily_care": "Roupa Di\u00e1ria", + "iot_daily_care_soil": "Roupa Di\u00e1ria", + "iot_delicate": "Delicados 45\u00b0C", + "iot_dinner_for_two": "Jantar para 2", + "iot_dinner_for_two_soil": "Jantar para 2", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "Eco 45\u00b0C", + "iot_eco_bldc": "Eco 45\u00b0C", + "iot_eco_synch": "Eco 45\u00b0C", + "iot_extra_hygiene": "Higiene Extra", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "Happy Hour", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "Loi\u00e7a de festas", + "iot_party_soil": "Loi\u00e7a de festas", + "iot_pizza_menu": "Menu de Pizza", + "iot_pizza_menu_soil": "Menu de Pizza", + "iot_plastic_tupperware": "Pl\u00e1sticos e Tupperwares", + "iot_porcelain": "Porcelana", + "iot_pot_&_pans": "Panelas e Tachos", + "iot_pot_&_pans_soil": "Panelas e Tachos", + "iot_power_mix_wash": "Lavagem Power Mix", + "iot_power_mix_wash_soil": "Lavagem Power Mix", + "iot_prewash": "Pr\u00e9-lavagem", + "iot_pyrex_and_glassware": "Pyrex e Recipientes de vidro", + "iot_rapid_29": "Rapido 29'", + "iot_rapid_39": "R\u00e1pido 39 min. 60 \u00b0C", + "iot_single": "Solteiros", + "iot_steam": "Vapor 75 \u00b0C", + "iot_super_flash": "Super Flash", + "iot_super_wash": "Lavagem Super", + "iot_turbopower": "TurboPower", + "iot_universal": "Universal 60 \u00b0C", + "iot_wok_grids_maxi_pans": "Tachos Especiais (Wok - Grelhas e Tachos M\u00e1xi)", + "iot_wok_grids_maxi_pans_soil": "Tachos Especiais (Wok - Grelhas e Tachos M\u00e1xi)", + "iot_yes_quick_cycle": "Yes Quick", + "night": "Ultra Silencioso 55\u00b0C", + "prewash": "Pr\u00e9-lavagem", + "rapid_20": "R\u00e1pido 20'", + "rapid_24": "Rapido 24'", + "rapid_29": "Rapido 29' 50\u00b0C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "R\u00e1pido 39 min. 60 \u00b0C", + "rapid_49": "R\u00e1pido 49'", + "rapid_59": "R\u00e1pido 59'", + "sanitising": "Desinfetante", + "silence": "Silence", + "silent": "Noite", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "special": "especial", + "special_pw_prz": "especial", + "steam": "Vapor 75 \u00b0C", + "steam_plus": "Vapor Mais 75\u00b0C", + "total_care": "Total Care 50\u00b0C", + "ultra_silence": "Ultra Silencioso 55\u00b0C", + "ultra_silent": "Ultra Silencioso 55\u00b0C", + "universal": "Universal 60 \u00b0C", + "universal_plus": "Universal plus 70 \u00b0C", + "zoom_39": "Zoom 39 min" + } + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "Castanho cinza", + "iot_special_beef_fillet": "Lombo de novilho", + "iot_special_beef_veal_stew": "Carne de vitela guisada ", + "iot_special_boiled_rice": "Arroz cozido", + "iot_special_chicken_breast": "Peito de frango", + "iot_special_chicken_legs": "Pernas de frango", + "iot_special_chocolate_pudding": "Pudim de chocolate", + "iot_special_entrecote": "Entrec\u00f4te", + "iot_special_fresh_tuna": "Atum fresco", + "iot_special_grilled_vegetables": "Legumes grelhados", + "iot_special_lamb_cutlet": "Costeleta de borrego", + "iot_special_meatballs": "Alm\u00f4ndegas", + "iot_special_minestrone": "Minestrone", + "iot_special_mussels": "Mexilh\u00f5es", + "iot_special_omelette": "Omelete", + "iot_special_pancakes": "Panquecas", + "iot_special_paris_style_peas": "Ervilhas ao estilo parisiense", + "iot_special_poached_eggs": "Ovos escalfados", + "iot_special_pork_fillet": "Lombo porco ", + "iot_special_pork_ribs": "Lombo de porco", + "iot_special_prawns": "Camar\u00f5es", + "iot_special_quinoa": "Quinoa", + "iot_special_ratatouille": "Ratatouille", + "iot_special_salmon_fillet": "Fil\u00e9 de salm\u00e3o", + "iot_special_saute_potatoes": "Batatas salteadas", + "iot_special_scallops": "Vieiras", + "iot_special_scrambled_eggs": "Ovos mexidos", + "iot_special_spelt": "Espelta", + "iot_special_veggy_noodles": "Massa vegetariana", + "iot_special_white_fish_fillet": "Filetes de peixe branco", + "iot_standard_boiling": "Boiling", + "iot_standard_frying": "Fritar", + "iot_standard_keep_warm": "Manter quente", + "iot_standard_melting": "Derreter", + "iot_standard_simmering": "Simmering" + } + }, + "programs_ov": { + "state": { + "bakery": "Massas e bolos", + "bakery_steam": "P\u00e3o cozido a vapor", + "bottom_heating": "Aquecimento inferior", + "bottom_heating_fan": "Aquecimento Inferior + Ventila\u00e7\u00e3o", + "bread": "P\u00e3o", + "bread_steam": "Pastelaria cozida a vapor", + "convection_fan": "Convec\u00e7\u00e3o + Ventilador", + "convection_fan_turnspit": "Convec\u00e7\u00e3o + Ventilador + Espeto girat\u00f3rio", + "conventional": "Est\u00e1tico", + "conventional_turnspit": "Convec\u00e7\u00e3o + Espeto girat\u00f3rio", + "defrost": "Descongelar", + "descaling": "Descalcifica\u00e7\u00e3o", + "fish": "Peixe", + "fish_steam": "Peixe cozinhado a vapor", + "grill_cata": "Grelhar", + "grill_fan_cata": "Grelhar com ventila\u00e7\u00e3o", + "grill_fan_pyro": "Grelhar + Ventila\u00e7\u00e3o", + "grill_pyro": "Grelhar", + "h20_clean": "H2O-Clean", + "iot_bread": "P\u00e3o", + "iot_h20_clean": "h2O clean", + "leavening": "Leveda\u00e7\u00e3o", + "low_temp_cooking": "Cozinhar a baixa temperatura", + "low_temp_cooking_fish": "Cozinhar carne a baixa temperatura - Peixe", + "low_temp_cooking_fish_steam": "Cozedura a vapor a baixa temperatura - Peixe", + "low_temp_cooking_meat": "Cozinhar carne a baixa temperatura - Carne", + "low_temp_cooking_meat_steam": "Cozedura a vapor a baixa temperatura - Carne", + "low_temp_cooking_steam": "Cozedura a vapor a baixa temperatura", + "meat": "Carne", + "meat_steam": "Carne cozinhada a vapor", + "multi_level": "Multin\u00edvel", + "paella": "Paella", + "pasta_and_bakery": "Massas e bolos", + "pizza": "Pizza", + "pyrolysis": "Pir\u00f3lise", + "pyrolysis_plus": "Pir\u00f3lise +", + "red_meat": "Carne vermelha", + "red_meat_steam": "Carne vermelha cozinhada a vapor", + "regenerate": "Regenera\u00e7\u00e3o", + "soft_plus": "Soft+", + "super_grill": "Super Grelhador", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_desctiption": "Esta fun\u00e7\u00e3o \u00e9 ideal para manter os alimentos macios no interior e estaladi\u00e7os por fora.\r\r\r\r\r\nEsta fun\u00e7\u00e3o reduz a quantidade de gordura ou \u00f3leo necess\u00e1ria, para uma dieta saud\u00e1vel.\r\r\r\r\r\nA combina\u00e7\u00e3o de resist\u00eancias com um ciclo pulsante de ar garante resultados de assadura uniformes.", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Vegetais", + "vegetables_cata": "Legumes", + "vegetables_pyro": "Legumes", + "water_discharge": "Drenagem de \u00e1gua", + "white_meat": "Carne branca", + "white_meat_steam": "Carne branca cozinhada a vapor" + } + }, + "programs_td": { + "state": { + "active_dry": "Secagem ativa", + "allergy_care": "Anti alergias", + "all_in_one": "All in One", + "antiallergy": "Anti alergias", + "anti_odours": "Anti-odor", + "auto_care": "Auto Care", + "baby": "Roupa de beb\u00e9", + "bed_quilt": "Colchas", + "care_30": "Cuidado 30", + "care_45": "Cuidado 45", + "care_59": "Cuidado 59", + "coloured": "Cores", + "daily_45_min": "DIARIO 45'", + "daily_perfect_59_min": "DIARIO PERFEITO 59'", + "darks_and_coloured": "Roupa escura e colorida", + "delicates": "Delicados", + "duvet": "Edred\u00e3os", + "eco": "Eco Algod\u00e3o", + "ecospeed_cottons": "Velocidade eco algod\u00f5es", + "ecospeed_delicates": "Ecospeed roupa delicada", + "ecospeed_mixed": "Velocidade eco mistos", + "extra_hygiene": "Higiene Extra", + "fitness": "Fitness", + "fresh_care": "Cuidado Fresco", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Toalhas", + "hqd_bed_sheets": "Len\u00e7\u00f3is", + "hqd_bulky": "Itens volumosos", + "hqd_casual": "Casual", + "hqd_cold_wind_30": "Brisa fresca durante 30 minutos", + "hqd_cold_wind_timing": "Brisa fresca ", + "hqd_cotton": "Algod\u00e3o", + "hqd_curtain": "Cortinas", + "hqd_delicate": "Roupa delicada", + "hqd_diaper": "Fraldas", + "hqd_duvet": "Edred\u00f5es", + "hqd_feather": "Blus\u00f5es", + "hqd_hot_wind_timing": "Ar quente", + "hqd_hygienic": "Higieniza\u00e7\u00e3o", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Casacos", + "hqd_jeans": "Jeans", + "hqd_luxury": "Pe\u00e7as requintadas", + "hqd_mix": "Mistos", + "hqd_night_dry": "Secagem durante a noite", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "R\u00e1pido 20", + "hqd_quick_30": "R\u00e1pido 30", + "hqd_quick_dry": "Secagem r\u00e1pida", + "hqd_quilt": "Colchas", + "hqd_refresh": "Refrescar", + "hqd_school_uniform": "Farda da escola", + "hqd_shirt": "Camisas", + "hqd_shoes": "Cal\u00e7ado", + "hqd_silk": "Seda", + "hqd_sports": "Desporto", + "hqd_synthetics": "Sint\u00e9ticos", + "hqd_timer": "Temporizado", + "hqd_towel": "Toalhas", + "hqd_underwear": "Roupa interior", + "hqd_warm_up": "Aquecer", + "hqd_wool": "L\u00e3s", + "hqd_working_suit": "Roupa de trabalho", + "hygiene": "Higiene", + "iot_checkup": "Check-Up", + "iot_dry_anti_mites": "Anti-\u00e1caros", + "iot_dry_baby": "Roupa de beb\u00e9", + "iot_dry_backpacks": "Mochilas", + "iot_dry_bathrobe": "Roup\u00f5es", + "iot_dry_bed_linen": "Roupa de cama", + "iot_dry_bed_quilt": "Colchas", + "iot_dry_cotton": "Algod\u00e3o", + "iot_dry_cuddly_toys": "Brinquedos macios", + "iot_dry_curtains": "Cortinas", + "iot_dry_dehumidifier": "Removedor de humidade", + "iot_dry_delicates": "Roupa delicada", + "iot_dry_delicate_tablecloths": "Roupa de mesa delicada", + "iot_dry_denim_jeans": "Ganga - Jeans", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Edred\u00e3os", + "iot_dry_easy_iron_cotton": "Engomar f\u00e1cil", + "iot_dry_easy_iron_synthetics": "Engomar Super F\u00e1cil de Sint\u00e9ticos", + "iot_dry_gym_fit": "Roupa de desporto - Fitness", + "iot_dry_lingerie": "Roupa interior", + "iot_dry_mixed": "Mistos", + "iot_dry_playsuits": "Macac\u00f5es", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "R\u00e1pido 59\u2019.", + "iot_dry_refresh": "Refrescar", + "iot_dry_regenerates_waterproof": "Regenera\u00e7\u00e3o da Impermeabiliza\u00e7\u00e3o (?)", + "iot_dry_relax_creases": "Menos vincos", + "iot_dry_shirts": "Camisas", + "iot_dry_small_load": "Pequena carga", + "iot_dry_swimsuits_and_bikinis": "Fatos de banho", + "iot_dry_synthetics": "Sint\u00e9ticos", + "iot_dry_synthetic_dry": "Secagem de Sint\u00e9ticos", + "iot_dry_tablecloths": "Roupa de mesa", + "iot_dry_technical_fabrics": "Tecidos t\u00e9cnicos", + "iot_dry_warm_embrace": "Warm Embrace (?)", + "iot_dry_wool": "Woolmark", + "jeans": "Jeans", + "mix_and_dry": "Mix&Dry (Mista e Seca)", + "pets": "Animais de estima\u00e7\u00e3o", + "pre_iron": "Pr\u00e9 engomar", + "rapid_30": "Rapid 30", + "rapid_45": "R\u00e1pido 45 min", + "rapid_59": "R\u00e1pida Perfeita 59 min", + "refresh": "Refrescar", + "relax_creases": "Menos vincos", + "saving_30_min": "ECO 30'", + "shirts": "Camisas", + "shoes": "Cal\u00e7ado", + "small_load": "Pequena carga", + "soft_care": "Cuidado Suave", + "sport_plus": "Roupa desportiva", + "super_easy_iron_misti": "Engomar Super F\u00e1cil de mistos", + "super_easy_iron_xxl": "Engomar Super F\u00e1cil XXL", + "super_fast_cottons": "Algod\u00f5es super r\u00e1pido", + "super_fast_delicates": "Delicados super r\u00e1pido", + "synthetics": "Sint\u00e9ticos", + "total_care": "Total Care", + "trainers": "T\u00e9nis", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Revitaliza\u00e7\u00e3o da impermeabializa\u00e7\u00e3o", + "whites": "Roupa branca", + "wool": "Secagem de l\u00e3s", + "woolmark": "Woolmark", + "xxl_load": "Carga XXL", + "zoom_59": "Zoom 59" + } + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "20\u00b0 Cores e Algod\u00f5es", + "20_degrees_new_energy_label": "20\u00b0C", + "active_steam": "Vapor", + "active_wash": "Lavagem Ativa", + "active_wash_steam": "Lavagem Ativa", + "allergy_care": "Cuidado de Alergias", + "allergy_care_pro": "Cuidado Alergias Pro", + "all_in_one_49": "Tudo em Um 49'.", + "all_in_one_59": "Tudo em Um 59'.", + "all_in_one_59_steam": "Active Wash + Vapor", + "autocare": "Cuidado autom\u00e1tico", + "autoclean": "Limpeza do tambor", + "baby_60": "All Baby 60\u00b0C", + "care_14": "Cuidado Rapido 14'", + "care_30": "Cuidado Rapido 30'", + "care_44": "Cuidado Rapido 44'", + "checkup": "Check-Up", + "colour_59": "Cores 59'", + "colour_59_steam": "Cores 59' + vapor", + "cottons": "Algod\u00e3o", + "cottons_prewash": "Algod\u00f5es + Pr\u00e9-lavagem", + "cottons_steam": "Algod\u00e3o + Vapor", + "cotton_care_59": "Algod\u00f5es 59 min", + "delicate_59": "Delicados 59'", + "delicate_silk": "Seda delicada", + "delicate_silk_steam": "Seda delicada + vapor", + "delicati_59": "Delicados 59'", + "delicati_59_steam": "Delicados 59'", + "drain_spin": "Drenar +e Centrifugar", + "easy_iron": "Engomar F\u00e1cil", + "eco_40_60_new_energy_label": "Eco 40-60", + "extra_care": "Cuidado extra", + "fitness": "Fitness Care", + "fitness_care": "Fitness Care", + "fresh_care": "Cuidado Fresco", + "fresh_care_steam": "Fresh Care + Vapor", + "handwash_wool": "Lavagem manual e l\u00e3", + "high_dry": "Secagem de algod\u00e3o", + "hqd_20_degrees": "Algod\u00e3o 20\u2103", + "hqd_allergy": "Cuidado de Alergias", + "hqd_autoclean": "Limpeza do tambor", + "hqd_babycare": "Roupa de beb\u00e9", + "hqd_checkup": "Check-Up", + "hqd_cottons": "Algod\u00e3o", + "hqd_delicate": "Roupa delicada", + "hqd_delicate_cradle": "Roupa delicada", + "hqd_dry": "Secagem de algod\u00e3o", + "hqd_dry_synthetics": "Secos mistos", + "hqd_duvet": "Edred\u00e3os", + "hqd_eco_40_60_degrees": "Eco 40-60", + "hqd_handwash_wool": "L\u00e3s", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "Misto", + "hqd_quick_15": "R\u00e1pido 15'", + "hqd_quick_wash_57": "Ciclo R\u00e1pido 57 min", + "hqd_rapid_wash_and_dry": "Lavar & secar", + "hqd_refresh": "Refrescar", + "hqd_rinse": "Lavagem", + "hqd_shirts": "Camisas", + "hqd_smart": "Smart A.I.", + "hqd_spin": "Centrifugar", + "hqd_sport": "Desporto", + "hqd_super_fast": "R\u00e1pido 39\u2019", + "hqd_synthetic_and_coloured": "Sint\u00e9ticos", + "hygiene_59": "Higiene Plus 59'", + "hygiene_60": "Higiene 60\u00b0", + "hygiene_plus_59": "Higiene Plus 59'", + "hygiene_plus_59_min": "Higiene Plus 59'", + "hygiene_pro _49_min": "Hygiene Pro 49 '", + "hygiene_pro_49_min": "Hygiene Pro 49 min", + "hygiene_pro_steam": "Hygiene Pro + Vapor", + "intensive_40": "Intensivo 40\u00b0C", + "intensive_40_steam": "Intensivo 40\u00b0C + vapor", + "iot_active_steam": "Vapor", + "iot_active_wash_steam": "Lavagem Ativa", + "iot_allergy_care_pro": "Cuidado Alergias Pro", + "iot_all_in_one_59_steam": "Active Wash + Vapor", + "iot_checkup": "Check-Up", + "iot_colour_59_steam": "Cores 59' + vapor", + "iot_cottons_steam": "Algod\u00e3o + Vapor", + "iot_delicate_silk_steam": "Seda delicada + vapor", + "iot_delicati_59_steam": "Delicados 59'", + "iot_dry_air_refresh": "Refrescar ao Ar", + "iot_dry_anti_mites": "Anti-\u00e1caros", + "iot_dry_baby": "Beb\u00e9", + "iot_dry_backpacks": "Mochilas", + "iot_dry_bathrobe": "Roup\u00f5es e tecidos porosos", + "iot_dry_bed_linen": "Roupa de cama", + "iot_dry_cotton_dry": "Secagem de algod\u00e3o", + "iot_dry_cuddly_toys": "Animais de peluche", + "iot_dry_curtains": "Cortinas", + "iot_dry_dehumidifier": "Removedor de humidade", + "iot_dry_delicates_antiallergy": "Delicados - antial\u00e9rgicos", + "iot_dry_delicate_tablecloths": "Toalhas delicadas", + "iot_dry_denim_jeans": "Ganga - Jeans", + "iot_dry_easy_iron_cotton": "Engomagem F\u00e1cil - Algod\u00e3o", + "iot_dry_easy_iron_synthetics": "Engomar F\u00e1cil - Sint\u00e9ticos", + "iot_dry_gym_fit": "Vestu\u00e1rio de gin\u00e1sio - fitness", + "iot_dry_lingerie": "Lingerie", + "iot_dry_mixed_dry": "Secos mistos", + "iot_dry_rapid_60_min_delicates": "R\u00e1pido 60' - Delicados", + "iot_dry_shirts": "Camisas", + "iot_dry_swimsuits_and_bikinis": "Fatos de banho", + "iot_dry_synthetics": "Secagem de Sint\u00e9ticos", + "iot_dry_synthetic_dry": "Secagem de Sint\u00e9ticos", + "iot_dry_tablecloths": "Toalhas de mesa", + "iot_dry_technical_fabrics": "Tecidos t\u00e9cnicos", + "iot_dry_warm_embrace": "Secagem a quente", + "iot_dry_wool_dry": "Secagem de l\u00e3s", + "iot_easy_iron": "Engomar F\u00e1cil", + "iot_fresh_care_steam": "Fresh Care + Vapor", + "iot_hygiene_pro_steam": "Hygiene Pro + Vapor", + "iot_intensive_40_steam": "Intensivo 40\u00b0C + vapor", + "iot_mixed_steam": "Mistos + Vapor", + "iot_mix_and_colour_59_steam": "Mistos E Cores 59' + Vapor", + "iot_perfect_cotton_59_steam": "Algodao Perfeito 59'", + "iot_rapid_a_class_60_steam": "Classe A r\u00e1pida 60 + vapor", + "iot_resistant_cotton_steam": "Algod\u00e3o + Vapor", + "iot_shirts_steam": "Camisas + Vapor", + "iot_single_item_steam": "Pe\u00e7a \u00fanica + Vapor", + "iot_smart_wash": "Smart Wash", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "Special 39' + Vapor", + "iot_steam_hygiene_plus": "Hygiene Plus Steam ", + "iot_synthetic_and_coloured_steam": "Sint\u00e9ticos e Cores + Vapor", + "iot_wash_and_dry": "Lavar & secar", + "iot_wash_anti_mites": "Anti-\u00e1caros", + "iot_wash_anti_odor": "Anti-odor", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "Desinfetante", + "iot_wash_baby_sanitizer_steam": "higienizador para beb\u00ea + vapor", + "iot_wash_backpacks": "Mochilas", + "iot_wash_backpacks_zelig": "Mochilas", + "iot_wash_bathrobe": "Roup\u00f5es e toalhas", + "iot_wash_bathrobe_steam": "Roup\u00e3o + Vapor", + "iot_wash_bed_linen": "Roupa de cama", + "iot_wash_bed_linen_steam": "Roupa de cama + Vapor", + "iot_wash_bed_linen_zelig": "Roupa de cama", + "iot_wash_big_single_load": "Pe\u00e7a \u00fanica grande", + "iot_wash_bleaching": "Branqueamento", + "iot_wash_blood_stains": "N\u00f3doas de sangue", + "iot_wash_cashmere": "Cachemira", + "iot_wash_chocolate_stains": "N\u00f3doas de chocolate", + "iot_wash_cold_wash": "Lavagem a frio", + "iot_wash_colored": "Cores", + "iot_wash_colored_anti_stain": "Remo\u00e7\u00e3o de n\u00f3doas para roupas de cor", + "iot_wash_colored_delicate": "Cores delicadas", + "iot_wash_coloured": "Cores", + "iot_wash_coloured_bed_linen": "Roupa de cama de cores", + "iot_wash_coloured_bed_linen_steam": "Roupa de cama de cores + vapor", + "iot_wash_coloured_curtains": "Cortinas de cor", + "iot_wash_coloured_shirts": "Camisas de cor", + "iot_wash_coloured_shirts_steam": "Camisas de cor + vapor", + "iot_wash_coloured_steam": "Cores + Vapor", + "iot_wash_coloured_tableclothes": "Toalhas de mesa de cor", + "iot_wash_coloured_tableclothes_steam": "Toalhas de mesa de cor + Vapor", + "iot_wash_cotton": "Algod\u00e3o", + "iot_wash_cotton_steam": "Algod\u00e3o + Vapor", + "iot_wash_cuddly_toys": "Animais de peluche", + "iot_wash_curtains": "Cortinas", + "iot_wash_curtains_steam": "Cortinas+Vapor", + "iot_wash_curtains_zelig": "Cortinas", + "iot_wash_dark": "Rupas escuras", + "iot_wash_darks_and_coloured_44": "Escuros e cores 44'", + "iot_wash_darks_and_coloured_59": "Escuros e cores 59'", + "iot_wash_darks_and_coloured_xl": "Escuros e cores XL", + "iot_wash_dark_steam": "Rupas escuras + Vapor", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "Roupa delicada", + "iot_wash_delicate_antiallergy": "Antial\u00e9rgico para roupas delicadas", + "iot_wash_delicate_antiallergy_steam": "Antial\u00e9rgico para roupas delicadas + Vapor", + "iot_wash_delicate_antiallergy_zelig": "Antial\u00e9rgico para roupas delicadas", + "iot_wash_delicate_colors": "Delicados de cor", + "iot_wash_delicate_colors_steam": "Cores + vapor", + "iot_wash_delicate_dark": "Escuros delicados", + "iot_wash_delicate_steam": "Roupa delicada + Vapor", + "iot_wash_delicate_tablecloths": "Toalhas delicadas", + "iot_wash_delicate_tablecloths_steam": "Toalhas delicadas + Vapor", + "iot_wash_delicate_whites": "Brancos delicados", + "iot_wash_denim_jeans": "Ganga - Jeans", + "iot_wash_diving_suits": "Fatos de mergulho", + "iot_wash_diving_suits_zelig": "Fatos de mergulho", + "iot_wash_down_jackets": "Blus\u00f5es", + "iot_wash_down_jackets_zelig": "Blus\u00f5es", + "iot_wash_duvet": "Edred\u00e3os", + "iot_wash_fruit_stains": "N\u00f3doas de fruta", + "iot_wash_gym_fit": "Vestu\u00e1rio de gin\u00e1sio - fitness", + "iot_wash_handwash": "Lavagem \u00e0 m\u00e3o", + "iot_wash_handwash_colored": "Lavagem \u00e0 m\u00e3o cores", + "iot_wash_handwash_dark": "Lavagem \u00e0 m\u00e3o de escuros", + "iot_wash_lingerie": "Lingerie", + "iot_wash_masks_refresh": "Refrescar M\u00e1scaras", + "iot_wash_masks_sanification": "Desinfe\u00e7\u00e3o de M\u00e1scaras", + "iot_wash_masks_sanification_steam": "Desinfe\u00e7\u00e3o de M\u00e1scaras + Vapor", + "iot_wash_mats": "Tapetes", + "iot_wash_men_s_trousers": "Cal\u00e7as ", + "iot_wash_mixed": "Misto", + "iot_wash_mixed_steam": "Mistos + Vapor", + "iot_wash_mix_and_coloured_44": "Misto e cores 44'", + "iot_wash_mix_and_coloured_59": "Misto e cores 59'", + "iot_wash_mix_and_coloured_xl": "Misto e cores XL", + "iot_wash_new_clothes": "Roupa nova", + "iot_wash_perfect_white": "Branco perfeito", + "iot_wash_perfect_white_steam": "Branco perfeito + Vapor", + "iot_wash_pets": "Acess\u00f3rios de animais", + "iot_wash_pets_hair_removal": "Remo\u00e7\u00e3o de pelo de animais de estima\u00e7\u00e3o", + "iot_wash_pets_odours_stains_removal": "Remo\u00e7\u00e3o de odores e manchas de animais de estima\u00e7\u00e3o", + "iot_wash_pets_steam": "Acess\u00f3rios de animais", + "iot_wash_playsuits": "Macac\u00f5es", + "iot_wash_playsuits_steam": "Macac\u00f5es + Vapor", + "iot_wash_quick_drum_cleaner": "Produto de limpeza r\u00e1pida do tambor", + "iot_wash_rapid_14": "R\u00e1pido 14\u2019", + "iot_wash_rapid_30": "R\u00e1pido 30\u2019", + "iot_wash_rapid_44": "R\u00e1pido 44\u2019", + "iot_wash_rapid_59": "R\u00e1pido 59\u2019", + "iot_wash_rapid_59_steam": "R\u00e1pido 59' + vapor", + "iot_wash_refresh_14_min": "Refrescar 14'", + "iot_wash_resistant_colored": "Cores resistentes", + "iot_wash_resistant_dark": "Escuros resistentes", + "iot_wash_resistant_whites": "Brancos resistentes", + "iot_wash_rinse": "Lavagem", + "iot_wash_shirts": "Camisas", + "iot_wash_shirts_steam": "Camisas + Vapor", + "iot_wash_silk": "Seda", + "iot_wash_ski_suit": "Fatos de Ski", + "iot_wash_ski_suit_zelig": "Fatos de Ski", + "iot_wash_spin": "Centrifugar", + "iot_wash_sport": "Desporto", + "iot_wash_sport_anti_odor": "Roupa de desporto anti odor", + "iot_wash_sport_anti_odor_zelig": "Roupa de desporto anti odor", + "iot_wash_stains_remover": "Removedor de n\u00f3doas", + "iot_wash_swimsuits_and_bikinis": "Fatos de banho", + "iot_wash_synthetic": "Sint\u00e9ticos", + "iot_wash_synthetic_steam": "Sint\u00e9ticos + Vapor", + "iot_wash_tablecloths": "Toalhas de mesa", + "iot_wash_tablecloths_steam": "Toalhas de mesa + Vapor", + "iot_wash_technical_fabrics": "Tecidos t\u00e9cnicos", + "iot_wash_technical_fabrics_zelig": "Tecidos t\u00e9cnicos", + "iot_wash_technical_jackets": "Casacos t\u00e9cnicos", + "iot_wash_technical_jackets_zelig": "Casacos t\u00e9cnicos", + "iot_wash_trainers": "T\u00e9nis", + "iot_wash_whites": "Brancos", + "iot_wash_whites_44": "Brancos 44'", + "iot_wash_whites_59": "Brancos 59'", + "iot_wash_whites_xl": "Brancos XL", + "iot_wash_wine_stains": "N\u00f3doas de vinho", + "iot_wash_wool": "L\u00e3s", + "jeans": "Jeans", + "jeans_60": "Jeans", + "low_dry": "Secos mistos", + "mixed": "Mistos", + "mixed_and_colored_59": "Misto e Cores 59'", + "mixed_steam": "Mistos + Vapor", + "mix_and_colour_59": "Mistos E Cores 59'", + "mix_and_colour_59_steam": "Mistos E Cores 59' + Vapor", + "night_and_day": "Noite e Dia", + "night_wash": "Ciclo durante a noite", + "perfect_59": "Perfeito 59'", + "perfect_cotton_59": "Algodao Perfeito 59'", + "perfect_cotton_59_steam": "Algodao Perfeito 59'", + "perfect_whites_59": "Branco perfeito 59'", + "rapid_14_min": "R\u00e1pido 14'", + "rapid_30_min": "R\u00e1pido 30'", + "rapid_44_min": "R\u00e1pido 44'", + "rapid_a_class_60": "Classe A r\u00e1pida 60", + "rapid_a_class_60_steam": "Classe A r\u00e1pida 60 + vapor", + "rapid_wash_and_dry_59_min": "Lavar e Secar 59'.", + "resistant_cotton": "Algod\u00e3o", + "resistant_cotton_steam": "Algod\u00e3o + Vapor", + "rinse": "Lavagem", + "shirts_steam": "Camisas + Vapor", + "silent_night": "Ciclo durante a noite", + "single_item": "Pe\u00e7a \u00fanica", + "single_item_steam": "Pe\u00e7a \u00fanica + Vapor", + "smart_wash": "Smart Wash", + "soft_care": "Cuidado Suave", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "Especial 39'", + "special_39_full_load": "Especial 39'", + "special_39_full_load_steam": "Special 39' + Vapor", + "special_49": "Especial 49'", + "sport_39": "Desporto 39'", + "sport_plus_29": "Desporto Plus 29\"", + "sport_plus_39": "Desporto Plus 39'", + "steam_39": "Vapor 39'", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro - Algod\u00f5es", + "steam_care_pro_delicates": "Steam Care Pro - Delicados", + "steam_care_pro_synthetic": "Steam Care Pro - Sint\u00e9ticos", + "steam_hygiene_plus": "Hygiene Plus Steam ", + "synthetics": "Sint\u00e9ticos", + "synthetic_and_coloured": "Sint\u00e9ticos e Cores", + "synthetic_and_coloured_steam": "Sint\u00e9ticos e Cores + Vapor", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "Cuidado Total", + "tumbling": "Secar na m\u00e1quina", + "wool": "L\u00e3s", + "wool_and_delicates_49": "L\u00e3s/Delicados 49'", + "wool_dry": "Secagem de l\u00e3s", + "wool_soft_care": "L\u00e3s & Cuidado Suavidade" + } + } } } } \ No newline at end of file diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index 5e79239..01525a9 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -66,6 +66,650 @@ "6": "Hot rinse" } } + }, + "select": { + "programs_dw": { + "state": { + "59_min": "Rapid 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "Auto Universal 50 - 60\u00b0C", + "auto_universal_plus": "Auto Universal+ 65 - 75\u00b0C", + "auto_universal_plus_soil": "Auto Universal+ 65 - 75\u00b0C", + "auto_universal_soil": "Auto Universal 50 - 60\u00b0C", + "auto_wash": "Sp\u0103lare automat\u0103", + "auto_wash_soil": "Sp\u0103lare automat\u0103", + "classe_a_59": "Clasa A 59' 65\u00b0C", + "delicate": "Delicate 45\u00b0C", + "dishwasher_care": "Ciclu de cur\u0103\u021bare a calcarului", + "eco": "Eco", + "eco_asynch": "Eco 45\u00b0C", + "eco_bldc": "Eco 45\u00b0C", + "eco_synch": "Eco 45\u00b0C", + "gentle_wash": "Gentle wash", + "glass": "Sticl\u0103", + "glass _care": "Glass Care", + "glassware": "Sticl\u0103rie 45 \u00b0C", + "glass_care": "Glass Care", + "hygiene": "Igien\u0103", + "hygiene_plus": "Igien\u0103+ 75 \u00b0C", + "intensive": "Intensiv ", + "intensive_rapid": "rapid intensiv", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "Auto Universal 50 - 60\u00b0C", + "iot_auto_wash_soil": "Sp\u0103lare automat\u0103", + "iot_baby_care": "\u00cengrijirea bebelu\u0219ilor", + "iot_breakfast": "Mic dejun", + "iot_checkup": "Verificare", + "iot_china_crystals": "Vase din cristal", + "iot_classe_a_59": "Rapid 59'", + "iot_cocktail_glasses": "Pahare de cocktail", + "iot_cocktail_glasses_soil": "Pahare de cocktail", + "iot_daily_care": "Utilizare zilnic\u0103", + "iot_daily_care_soil": "Utilizare zilnic\u0103", + "iot_delicate": "Delicate 45\u00b0C", + "iot_dinner_for_two": "Cin\u0103 pentru 2", + "iot_dinner_for_two_soil": "Cin\u0103 pentru 2", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "Eco 45\u00b0C", + "iot_eco_bldc": "Eco 45\u00b0C", + "iot_eco_synch": "Eco 45\u00b0C", + "iot_extra_hygiene": "Extra Igien\u0103", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "Happy Hour", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "Petrecere", + "iot_party_soil": "Petrecere", + "iot_pizza_menu": "Meniu Pizza", + "iot_pizza_menu_soil": "Meniu Pizza", + "iot_plastic_tupperware": "Recipiente din plastic", + "iot_porcelain": "Por\u021belan", + "iot_pot_&_pans": "Oale & Tig\u0103i", + "iot_pot_&_pans_soil": "Oale & Tig\u0103i", + "iot_power_mix_wash": "Sp\u0103lare Putere Mixt\u0103", + "iot_power_mix_wash_soil": "Sp\u0103lare Putere Mixt\u0103", + "iot_prewash": "Presp\u0103lare", + "iot_pyrex_and_glassware": "Articole din sticl\u0103", + "iot_rapid_29": "Rapid 29'", + "iot_rapid_39": "Rapid 39' 60 \u00b0C", + "iot_single": "Singur", + "iot_steam": "Abur 75 \u00b0C", + "iot_super_flash": "Super rapid", + "iot_super_wash": "Super sp\u0103lare", + "iot_turbopower": "Putere Turbo", + "iot_universal": "Universal 60 \u00b0C", + "iot_wok_grids_maxi_pans": "Recipiente speciale (Wok - Gr\u0103tare & Oale mari)", + "iot_wok_grids_maxi_pans_soil": "Recipiente speciale (Wok - Gr\u0103tare & Oale mari)", + "iot_yes_quick_cycle": "Yes Quick", + "night": "Ultra Silen\u021bios 55\u00b0C", + "prewash": "Presp\u0103lare", + "rapid_20": "Rapid 20'", + "rapid_24": "Rapid 24'", + "rapid_29": "Rapid 29' 50\u00b0C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "Rapid 39' 60 \u00b0C", + "rapid_49": "Rapid 49'", + "rapid_59": "Rapid 59'", + "sanitising": "Igienizare", + "silence": "Silence", + "silent": "Noapte", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "special": "special", + "special_pw_prz": "special", + "steam": "Abur 75 \u00b0C", + "steam_plus": "Vapor Plus 75 \u00b0C", + "total_care": "Total Care 50\u00b0C", + "ultra_silence": "Ultra Silen\u021bios 55\u00b0C", + "ultra_silent": "Ultra Silen\u021bios 55\u00b0C", + "universal": "Universal 60 \u00b0C", + "universal_plus": "Universal Plus 70 \u00b0C", + "zoom_39": "Zoom 39 min" + } + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "Tocinei", + "iot_special_beef_fillet": "File de vit\u0103", + "iot_special_beef_veal_stew": "Tocan\u0103 de vit\u0103 \u0219i vi\u021bel", + "iot_special_boiled_rice": "Orez fiert", + "iot_special_chicken_breast": "Piept de pui", + "iot_special_chicken_legs": "Pulpe de pui", + "iot_special_chocolate_pudding": "Budinc\u0103 de ciocolat\u0103", + "iot_special_entrecote": "Antricot", + "iot_special_fresh_tuna": "Ton proasp\u0103t", + "iot_special_grilled_vegetables": "Legume pe gr\u0103tar", + "iot_special_lamb_cutlet": "Cotlet de miel", + "iot_special_meatballs": "Piftelu\u021be de carne", + "iot_special_minestrone": "Sup\u0103 minestrone", + "iot_special_mussels": "Midii", + "iot_special_omelette": "Omlet\u0103", + "iot_special_pancakes": "Cl\u0103tite", + "iot_special_paris_style_peas": "Maz\u0103re \u00een stil parizian", + "iot_special_poached_eggs": "Ou\u0103 fierte", + "iot_special_pork_fillet": "Mu\u015fchi file", + "iot_special_pork_ribs": "Coaste de porc", + "iot_special_prawns": "Creve\u021bi", + "iot_special_quinoa": "Quinoa", + "iot_special_ratatouille": "Ratatouille", + "iot_special_salmon_fillet": "File de somon", + "iot_special_saute_potatoes": "Cartofi sote", + "iot_special_scallops": "Scoici", + "iot_special_scrambled_eggs": "Scrob", + "iot_special_spelt": "Alac", + "iot_special_veggy_noodles": "T\u0103i\u0163ei vegetali", + "iot_special_white_fish_fillet": "File de pe\u0219te alb", + "iot_standard_boiling": "Fierbere", + "iot_standard_frying": "Pr\u0103jire", + "iot_standard_keep_warm": "Men\u021binere la cald", + "iot_standard_melting": "Topire", + "iot_standard_simmering": "Fierbere \u00een\u0103bu\u0219it\u0103" + } + }, + "programs_ov": { + "state": { + "bakery": "Paste \u0219i patiserie", + "bakery_steam": "P\u00e2ine g\u0103tit\u0103 la abur", + "bottom_heating": "\u00cenc\u0103lzire de jos", + "bottom_heating_fan": "\u00cenc\u0103lzire De Jos + Ventila\u021bie", + "bread": "P\u00e2ine", + "bread_steam": "Produse de patiserie g\u0103tite la abur", + "convection_fan": "Convec\u021bie \u0219i ventila\u021bie", + "convection_fan_turnspit": "Convec\u021bie + Ventilator + Rotisor", + "conventional": "Conven\u021bional", + "conventional_turnspit": "Convec\u021bie + Rotisor", + "defrost": "Decongelare", + "descaling": "\u00cendep\u0103rtarea calcarului", + "fish": "Pe\u0219te", + "fish_steam": "Pe\u0219te g\u0103tit la abur", + "grill_cata": "Gril", + "grill_fan_cata": "Grill + Ventila\u021bie", + "grill_fan_pyro": "Grill + Ventila\u021bie", + "grill_pyro": "Grill", + "h20_clean": "H2O-Clean", + "iot_bread": "P\u00e2ine", + "iot_h20_clean": "h2O clean", + "leavening": "Dospire", + "low_temp_cooking": "G\u0103tire la temperatur\u0103 sc\u0103zut\u0103", + "low_temp_cooking_fish": "G\u0103tire la temperatur\u0103 sc\u0103zut\u0103 - Pe\u0219te", + "low_temp_cooking_fish_steam": "G\u0103titul cu abur la temperatur\u0103 sc\u0103zut\u0103 - Pe\u0219te", + "low_temp_cooking_meat": "G\u0103tire la temperatur\u0103 sc\u0103zut\u0103 - Carne", + "low_temp_cooking_meat_steam": "G\u0103titul la abur la temperatur\u0103 sc\u0103zut\u0103 - carne", + "low_temp_cooking_steam": "G\u0103titul la abur la temperaturi sc\u0103zute", + "meat": "Carne", + "meat_steam": "Carne g\u0103tit\u0103 la abur", + "multi_level": "Multi-Nivel", + "paella": "Paella", + "pasta_and_bakery": "Paste \u0219i patiserie", + "pizza": "Pizza", + "pyrolysis": "Piroliz\u0103", + "pyrolysis_plus": "Piroliz\u0103+", + "red_meat": "Carne ro\u0219ie", + "red_meat_steam": "Carne ro\u0219ie g\u0103tit\u0103 la abur", + "regenerate": "Regenerare", + "soft_plus": "Soft+", + "super_grill": "Super Grill", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_desctiption": "Aceast\u0103 func\u021bie este ideal\u0103 pentru a men\u021bine preparatele moi la interior \u0219i crocante la exterior.\r\r\r\r\r\r\r\nAceast\u0103 func\u021bie reduce cantitatea de gr\u0103sime sau de ulei necesar\u0103 pentru o diet\u0103 s\u0103n\u0103toas\u0103.\r\r\r\r\r\r\r\nCombina\u021bia elementelor de \u00eenc\u0103lzire cu un ciclu pulsatil de aer garanteaz\u0103 un rezultate de coacere uniforme.", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Legume", + "vegetables_cata": "Legume", + "vegetables_pyro": "Legume", + "water_discharge": "Scurgerea apei", + "white_meat": "Carne alb\u0103", + "white_meat_steam": "Carne alb\u0103 g\u0103tit\u0103 la abur" + } + }, + "programs_td": { + "state": { + "active_dry": "Uscare activ\u0103", + "allergy_care": "Anti-alergic", + "all_in_one": "Tot \u00een unu", + "antiallergy": "Anti-alergic", + "anti_odours": "Anti mirosuri", + "auto_care": "\u00cengrijire automat\u0103", + "baby": "Haine copii", + "bed_quilt": "Pilote", + "care_30": "\u00cengrijire 30", + "care_45": "\u00cengrijire 45", + "care_59": "\u00cengrijire 59", + "coloured": "Colorate", + "daily_45_min": "ZILNIC 45'", + "daily_perfect_59_min": "ZILNIC PERFECT 59'", + "darks_and_coloured": "\u021aes\u0103turi \u00eenchise & colorate", + "delicates": "Delicate", + "duvet": "P\u0103tur\u0103", + "eco": "Bumbac Eco", + "ecospeed_cottons": "Bumbac Ecospeed", + "ecospeed_delicates": "Delicate Ecospeed", + "ecospeed_mixed": "\u021aes\u0103turi mixte Ecospeed", + "extra_hygiene": "EXTRA IGIENIZARE", + "fitness": "Fitness", + "fresh_care": "\u00cengrijire proasp\u0103t\u0103", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Prosoape", + "hqd_bed_sheets": "Cearceafuri", + "hqd_bulky": "Articole voluminoase", + "hqd_casual": "Articole obi\u0219nuite", + "hqd_cold_wind_30": "V\u00e2nt rece 30 minute", + "hqd_cold_wind_timing": "V\u00e2nt rece ", + "hqd_cotton": "Bumbac", + "hqd_curtain": "Perdele", + "hqd_delicate": "Delicate", + "hqd_diaper": "Scutece", + "hqd_duvet": "Cuvertur\u0103", + "hqd_feather": "Geci", + "hqd_hot_wind_timing": "Aer cald", + "hqd_hygienic": "Igienizare", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Jachete", + "hqd_jeans": "Blugi", + "hqd_luxury": "Luxury", + "hqd_mix": "Mixte", + "hqd_night_dry": "Uscare peste noapte", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Rapid 20", + "hqd_quick_30": "Rapid 30", + "hqd_quick_dry": "Uscare rapid\u0103", + "hqd_quilt": "Pilote", + "hqd_refresh": "Re\u00eemprosp\u0103tare", + "hqd_school_uniform": "Uniform\u0103 \u0219colar\u0103", + "hqd_shirt": "C\u0103m\u0103\u0219i", + "hqd_shoes": "\u00cenc\u0103l\u021b\u0103minte", + "hqd_silk": "M\u0103tase", + "hqd_sports": "Articole sportive", + "hqd_synthetics": "Sintetice", + "hqd_timer": "Cronometrat", + "hqd_towel": "Prosoape", + "hqd_underwear": "Lenjerie", + "hqd_warm_up": "\u00cenc\u0103lzire", + "hqd_wool": "L\u00e2n\u0103", + "hqd_working_suit": "\u00cembr\u0103c\u0103minte de lucru", + "hygiene": "Igienizare", + "iot_checkup": "Verificare", + "iot_dry_anti_mites": "Anti-acarieni", + "iot_dry_baby": "Haine copii", + "iot_dry_backpacks": "Rucsaci", + "iot_dry_bathrobe": "Halat de baie", + "iot_dry_bed_linen": "Lenjerie de pat", + "iot_dry_bed_quilt": "Pilote", + "iot_dry_cotton": "Bumbac", + "iot_dry_cuddly_toys": "Juc\u0103rii", + "iot_dry_curtains": "Perdele", + "iot_dry_dehumidifier": "Dispozitiv pentru \u00eendep\u0103rtarea umidit\u0103\u021bii", + "iot_dry_delicates": "Delicate", + "iot_dry_delicate_tablecloths": "Fe\u021be de mas\u0103 delicate", + "iot_dry_denim_jeans": "Denim - Blugi", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "P\u0103tur\u0103", + "iot_dry_easy_iron_cotton": "C\u0103lcare Super Easy", + "iot_dry_easy_iron_synthetics": "C\u0103lcare super u\u0219oar\u0103 a rufelor sintetice", + "iot_dry_gym_fit": "Articole sportive - Fitness", + "iot_dry_lingerie": "Lenjerie", + "iot_dry_mixed": "Mixte", + "iot_dry_playsuits": "Haine de joac\u0103", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Rapid 59'.", + "iot_dry_refresh": "Re\u00eemprosp\u0103tare", + "iot_dry_regenerates_waterproof": "Rezistente la ap\u0103", + "iot_dry_relax_creases": "Reducere \u0219ifonare", + "iot_dry_shirts": "C\u0103m\u0103\u0219i", + "iot_dry_small_load": "\u00cenc\u0103rcare mic\u0103", + "iot_dry_swimsuits_and_bikinis": "Costume de baie", + "iot_dry_synthetics": "Sintetice", + "iot_dry_synthetic_dry": "Uscare material sintetic", + "iot_dry_tablecloths": "Fe\u021be de mas\u0103", + "iot_dry_technical_fabrics": "\u021aes\u0103turi industriale", + "iot_dry_warm_embrace": "\u00cembr\u0103\u021bi\u0219are cald\u0103", + "iot_dry_wool": "Woolmark", + "jeans": "Jeans", + "mix_and_dry": "Mix&Uscare", + "pets": "Animale de companie", + "pre_iron": "Pre-C\u0103lcare", + "rapid_30": "Rapid 30", + "rapid_45": "Rapid 45 min", + "rapid_59": "Rapid Perfect 59 Min", + "refresh": "Re\u00eemprosp\u0103tare", + "relax_creases": "Reducere \u0219ifonare", + "saving_30_min": "ECO 30'", + "shirts": "C\u0103m\u0103\u0219i", + "shoes": "\u00cenc\u0103l\u021b\u0103minte", + "small_load": "\u00cenc\u0103rcare mic\u0103", + "soft_care": "\u00cengrijire bl\u00e2nd\u0103", + "sport_plus": "Haine sport", + "super_easy_iron_misti": "C\u0103lcare super u\u0219oar\u0103 a rufelor cu fibre mixte", + "super_easy_iron_xxl": "C\u0103lcare super u\u0219oar\u0103 a rufelor XXL", + "super_fast_cottons": "Bumbac Super Rapid", + "super_fast_delicates": "Delicate Super Rapid", + "synthetics": "Sintetice", + "total_care": "Total Care", + "trainers": "\u00cenc\u0103l\u021b\u0103minte sport", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Revitalizare impermeabile", + "whites": "Albe", + "wool": "Uscare l\u00e2n\u0103", + "woolmark": "Woolmark", + "xxl_load": "\u00cenc\u0103rcare XXL", + "zoom_59": "Zoom 59" + } + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "20\u00b0 Colorate \u0219i bumbac", + "20_degrees_new_energy_label": "20 \u00b0C", + "active_steam": "Abur", + "active_wash": "Sp\u0103lare activ\u0103", + "active_wash_steam": "Sp\u0103lare activ\u0103", + "allergy_care": "\u00cengrijire antialergic\u0103", + "allergy_care_pro": "\u00cengrijire alergie pro", + "all_in_one_49": "Toate \u00een One 49'.", + "all_in_one_59": "Toate \u00een One 59'.", + "all_in_one_59_steam": "Sp\u0103lare activ\u0103 + abur", + "autocare": "Auto\u00eengrijire", + "autoclean": "Cur\u0103\u021barea tamburului", + "baby_60": "Haine bebelu\u0219i 60\u00b0C", + "care_14": "Rapid Care 14'", + "care_30": "Rapid Care 30'", + "care_44": "Rapid Care 44'", + "checkup": "Verificare", + "colour_59": "Colorate 59'", + "colour_59_steam": "Colorate 59' + Abur", + "cottons": "Bumbac", + "cottons_prewash": "Bumbac + Presp\u0103lare", + "cottons_steam": "Bumbac + Abur", + "cotton_care_59": "Bumbac 59 Min", + "delicate_59": "Delicate 59'", + "delicate_silk": "M\u0103tase delicat\u0103", + "delicate_silk_steam": "M\u0103tase delicat\u0103 + abur", + "delicati_59": "Delicate 59'", + "delicati_59_steam": "Delicate 59'", + "drain_spin": "Drenare +\u0219i stoarcere", + "easy_iron": "C\u0103lcare u\u0219oar\u0103", + "eco_40_60_new_energy_label": "Eco 40-60", + "extra_care": "\u00cengrijire Suplimentar\u0103", + "fitness": "Fitness Care", + "fitness_care": "Fitness Care", + "fresh_care": "\u00cengrijire proasp\u0103t\u0103", + "fresh_care_steam": "\u00cengrijire proasp\u0103t\u0103 + abur", + "handwash_wool": "Sp\u0103lare manual\u0103 \u0219i l\u00e2n\u0103", + "high_dry": "Uscarea bumbacului", + "hqd_20_degrees": "Bumbac 20 \u2103", + "hqd_allergy": "\u00cengrijire antialergic\u0103", + "hqd_autoclean": "Cur\u0103\u021barea tamburului", + "hqd_babycare": "\u00cengrijirea bebelu\u0219ilor", + "hqd_checkup": "Verificare", + "hqd_cottons": "Bumbac", + "hqd_delicate": "Delicate", + "hqd_delicate_cradle": "Delicate", + "hqd_dry": "Uscarea bumbacului", + "hqd_dry_synthetics": "Uscarea fibrelor mixte", + "hqd_duvet": "P\u0103tur\u0103", + "hqd_eco_40_60_degrees": "Eco 40-60", + "hqd_handwash_wool": "L\u00e2n\u0103", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "Mixte", + "hqd_quick_15": "Rapid 15'", + "hqd_quick_wash_57": "Sp\u0103lare rapid\u0103 57 min", + "hqd_rapid_wash_and_dry": "Sp\u0103lare \u0219i uscare", + "hqd_refresh": "Re\u00eemprosp\u0103tare", + "hqd_rinse": "Cl\u0103tire", + "hqd_shirts": "C\u0103m\u0103\u0219i", + "hqd_smart": "Smart A.I.", + "hqd_spin": "Stoarcere", + "hqd_sport": "Sport", + "hqd_super_fast": "Rapid 39\u2019", + "hqd_synthetic_and_coloured": "Sintetice", + "hygiene_59": "Igiena Plus 59'", + "hygiene_60": "Igien\u0103 60\u00b0", + "hygiene_plus_59": "Igiena Plus 59'", + "hygiene_plus_59_min": "Igiena Plus 59'", + "hygiene_pro _49_min": "Igien\u0103 Pro 49 '", + "hygiene_pro_49_min": "Igien\u0103 Pro 49 min", + "hygiene_pro_steam": "Hygiene Pro + Abur", + "intensive_40": "Intensiv 40\u00b0C", + "intensive_40_steam": "Intensiv 40\u00b0C + Abur", + "iot_active_steam": "Abur", + "iot_active_wash_steam": "Sp\u0103lare activ\u0103", + "iot_allergy_care_pro": "\u00cengrijire alergie pro", + "iot_all_in_one_59_steam": "Sp\u0103lare activ\u0103 + abur", + "iot_checkup": "Verificare", + "iot_colour_59_steam": "Colorate 59' + Abur", + "iot_cottons_steam": "Bumbac + Abur", + "iot_delicate_silk_steam": "M\u0103tase delicat\u0103 + abur", + "iot_delicati_59_steam": "Delicate 59'", + "iot_dry_air_refresh": "Re\u00eemprosp\u0103tarea aerului", + "iot_dry_anti_mites": "Anti-acarieni", + "iot_dry_baby": "Bebelu\u0219", + "iot_dry_backpacks": "Rucsaci", + "iot_dry_bathrobe": "Halate de baie \u0219i materiale poroase", + "iot_dry_bed_linen": "Lenjerie de pat", + "iot_dry_cotton_dry": "Uscarea bumbacului", + "iot_dry_cuddly_toys": "Animale de plu\u0219 umplute", + "iot_dry_curtains": "Perdele", + "iot_dry_dehumidifier": "Dispozitiv pentru \u00eendep\u0103rtarea umidit\u0103\u021bii", + "iot_dry_delicates_antiallergy": "Delicate - antialergic", + "iot_dry_delicate_tablecloths": "Fe\u021be de mas\u0103 delicate", + "iot_dry_denim_jeans": "Denim - Blugi", + "iot_dry_easy_iron_cotton": "Anti\u0219ifonare - Bumbac", + "iot_dry_easy_iron_synthetics": "Anti\u0219ifonare - Sintetice", + "iot_dry_gym_fit": "Fitness - haine de fitness", + "iot_dry_lingerie": "Lenjerie intim\u0103", + "iot_dry_mixed_dry": "Uscarea fibrelor mixte", + "iot_dry_rapid_60_min_delicates": "Rapid 60'- Delicate", + "iot_dry_shirts": "C\u0103m\u0103\u0219i", + "iot_dry_swimsuits_and_bikinis": "Costume de baie", + "iot_dry_synthetics": "Uscare material sintetic", + "iot_dry_synthetic_dry": "Uscare material sintetic", + "iot_dry_tablecloths": "Fe\u021be de mas\u0103", + "iot_dry_technical_fabrics": "Materiale tehnice", + "iot_dry_warm_embrace": "Uscarea \u00een tambur", + "iot_dry_wool_dry": "Uscarea l\u00e2nii", + "iot_easy_iron": "C\u0103lcare u\u0219oar\u0103", + "iot_fresh_care_steam": "\u00cengrijire proasp\u0103t\u0103 + abur", + "iot_hygiene_pro_steam": "Hygiene Pro + Abur", + "iot_intensive_40_steam": "Intensiv 40\u00b0C + Abur", + "iot_mixed_steam": "Mixte + Abur", + "iot_mix_and_colour_59_steam": "Mixte \u0219i colorate 59' + abur", + "iot_perfect_cotton_59_steam": "Bumbac Perfect 59'", + "iot_rapid_a_class_60_steam": "Rapid Clasa A 60 + Abur", + "iot_resistant_cotton_steam": "Bumbac + Abur", + "iot_shirts_steam": "C\u0103m\u0103\u0219i + Abur", + "iot_single_item_steam": "Un singur articol + abur", + "iot_smart_wash": "Sp\u0103lare inteligent\u0103", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "Special 39' + abur", + "iot_steam_hygiene_plus": "Hygiene Plus Steam ", + "iot_synthetic_and_coloured_steam": "Sintetice \u0219i colorate + abur", + "iot_wash_and_dry": "Sp\u0103lare \u0219i uscare", + "iot_wash_anti_mites": "Anti-acarieni", + "iot_wash_anti_odor": "Anti-miros", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "Igienizare", + "iot_wash_baby_sanitizer_steam": "Igien\u0103 bebelu\u0219 + Abur", + "iot_wash_backpacks": "Rucsaci", + "iot_wash_backpacks_zelig": "Rucsaci", + "iot_wash_bathrobe": "Halate de baie \u0219i prosoape", + "iot_wash_bathrobe_steam": "Halat de baie + Abur", + "iot_wash_bed_linen": "Lenjerie de pat", + "iot_wash_bed_linen_steam": "Lenjerie de pat + Abur", + "iot_wash_bed_linen_zelig": "Lenjerie de pat", + "iot_wash_big_single_load": "\u00cenc\u0103rcare unic\u0103 mare", + "iot_wash_bleaching": "\u00cen\u0103lbire", + "iot_wash_blood_stains": "Pete de s\u00e2nge", + "iot_wash_cashmere": "Ca\u0219mir", + "iot_wash_chocolate_stains": "Pete de ciocolat\u0103", + "iot_wash_cold_wash": "Sp\u0103lare rece", + "iot_wash_colored": "Colorate", + "iot_wash_colored_anti_stain": "Eliminarea petelor de pe materiale colorate", + "iot_wash_colored_delicate": "Colorate delicate", + "iot_wash_coloured": "Culori", + "iot_wash_coloured_bed_linen": "Lenjerie de pat colorat\u0103", + "iot_wash_coloured_bed_linen_steam": "Lenjerie de pat colorat\u0103 + Abur", + "iot_wash_coloured_curtains": "Perdele colorate", + "iot_wash_coloured_shirts": "C\u0103m\u0103\u0219i colorate", + "iot_wash_coloured_shirts_steam": "C\u0103m\u0103\u0219i colorate + Abur", + "iot_wash_coloured_steam": "Culori + Abur", + "iot_wash_coloured_tableclothes": "Fe\u021be de masa colorate", + "iot_wash_coloured_tableclothes_steam": "Fe\u021be de mas\u0103 colorate + abur", + "iot_wash_cotton": "Bumbac", + "iot_wash_cotton_steam": "Bumbac + Abur", + "iot_wash_cuddly_toys": "Animale de plu\u0219 umplute", + "iot_wash_curtains": "Perdele", + "iot_wash_curtains_steam": "Perdele+Abur", + "iot_wash_curtains_zelig": "Perdele", + "iot_wash_dark": "Haine cu culori \u00eenchise", + "iot_wash_darks_and_coloured_44": "\u00cenchise la culoare \u0219i colorate 44\u2019", + "iot_wash_darks_and_coloured_59": "\u00cenchise la culoare \u0219i colorate 59\u2019", + "iot_wash_darks_and_coloured_xl": "\u00cenchise la culoare \u0219i colorate XL", + "iot_wash_dark_steam": "Haine cu culori \u00eenchise + Abur", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "Delicate", + "iot_wash_delicate_antiallergy": "Antialergic pentru haine delicate", + "iot_wash_delicate_antiallergy_steam": "Anti-alergenic pentru \u021bes\u0103turi delicate + Abur", + "iot_wash_delicate_antiallergy_zelig": "Antialergic pentru haine delicate", + "iot_wash_delicate_colors": "Colorate delicate", + "iot_wash_delicate_colors_steam": "Culori + Abur", + "iot_wash_delicate_dark": "Culori \u00eenchise delicate", + "iot_wash_delicate_steam": "Delicate + Abur", + "iot_wash_delicate_tablecloths": "Fe\u021be de mas\u0103 delicate", + "iot_wash_delicate_tablecloths_steam": "Fe\u021be de mas\u0103 delicate + Abur", + "iot_wash_delicate_whites": "Albe delicate", + "iot_wash_denim_jeans": "Denim - Blugi", + "iot_wash_diving_suits": "Costume de baie", + "iot_wash_diving_suits_zelig": "Costume de baie", + "iot_wash_down_jackets": "Geci", + "iot_wash_down_jackets_zelig": "Geci", + "iot_wash_duvet": "P\u0103tur\u0103", + "iot_wash_fruit_stains": "Pete de fructe", + "iot_wash_gym_fit": "Fitness - haine de fitness", + "iot_wash_handwash": "Sp\u0103lare manual\u0103", + "iot_wash_handwash_colored": "Sp\u0103lare manual\u0103 colorate", + "iot_wash_handwash_dark": "Sp\u0103lare manual\u0103 \u00eenchise la culoare", + "iot_wash_lingerie": "Lenjerie intim\u0103", + "iot_wash_masks_refresh": "Re\u00eemprosp\u0103tarea m\u0103\u0219tilor", + "iot_wash_masks_sanification": "Igienizarea m\u0103\u0219tilor", + "iot_wash_masks_sanification_steam": "Igienizarea m\u0103\u0219tilor + Abur", + "iot_wash_mats": "Covoare", + "iot_wash_men_s_trousers": "Pantaloni", + "iot_wash_mixed": "Mixte", + "iot_wash_mixed_steam": "Mixte + Abur", + "iot_wash_mix_and_coloured_44": "Mixte \u0219i colorate 44\u2019", + "iot_wash_mix_and_coloured_59": "Mixte \u0219i colorate 59\u2019", + "iot_wash_mix_and_coloured_xl": "Mixte \u0219i colorate XL", + "iot_wash_new_clothes": "Haine noi", + "iot_wash_perfect_white": "Albul perfect", + "iot_wash_perfect_white_steam": "Albul perfect + Abur", + "iot_wash_pets": "Accesorii pentru animale de cas\u0103", + "iot_wash_pets_hair_removal": "Elimin\u0103 p\u0103rul animalelor de companie", + "iot_wash_pets_odours_stains_removal": "\u00cendep\u0103rtarea mirosurilor animalelor de companie \u0219i a petelor", + "iot_wash_pets_steam": "Accesorii pentru animale de cas\u0103", + "iot_wash_playsuits": "Costume de joac\u0103", + "iot_wash_playsuits_steam": "Costume de joac\u0103 + Abur", + "iot_wash_quick_drum_cleaner": "Agent de cur\u0103\u021bare rapid\u0103 a tamburului", + "iot_wash_rapid_14": "Rapid 14\u2019", + "iot_wash_rapid_30": "Rapid 30\u2019", + "iot_wash_rapid_44": "Rapid 44'", + "iot_wash_rapid_59": "Rapid 59'", + "iot_wash_rapid_59_steam": "Rapid 59' + Steam", + "iot_wash_refresh_14_min": "Re\u00eemprosp\u0103tare 14'", + "iot_wash_resistant_colored": "Colorate rezistente", + "iot_wash_resistant_dark": "\u00cenchise la culoare rezistente", + "iot_wash_resistant_whites": "Albe rezistente", + "iot_wash_rinse": "Cl\u0103tire", + "iot_wash_shirts": "C\u0103m\u0103\u0219i", + "iot_wash_shirts_steam": "C\u0103m\u0103\u0219i + Abur", + "iot_wash_silk": "M\u0103tase", + "iot_wash_ski_suit": "Costume de schi", + "iot_wash_ski_suit_zelig": "Costume de schi", + "iot_wash_spin": "Stoarcere", + "iot_wash_sport": "Sport", + "iot_wash_sport_anti_odor": "\u00cembr\u0103c\u0103minte sportiv\u0103 anti-miros", + "iot_wash_sport_anti_odor_zelig": "\u00cembr\u0103c\u0103minte sportiv\u0103 anti-miros", + "iot_wash_stains_remover": "Eliminare de pete", + "iot_wash_swimsuits_and_bikinis": "Costume de baie", + "iot_wash_synthetic": "Sintetice", + "iot_wash_synthetic_steam": "Sintetice + Abur", + "iot_wash_tablecloths": "Fe\u021be de mas\u0103", + "iot_wash_tablecloths_steam": "Fe\u021be de mas\u0103 + Abur", + "iot_wash_technical_fabrics": "Materiale tehnice", + "iot_wash_technical_fabrics_zelig": "Materiale tehnice", + "iot_wash_technical_jackets": "Haine tehnice", + "iot_wash_technical_jackets_zelig": "Haine tehnice", + "iot_wash_trainers": "\u00cenc\u0103l\u021b\u0103minte sport", + "iot_wash_whites": "Albe", + "iot_wash_whites_44": "Albe 44\u2019", + "iot_wash_whites_59": "Albe 59\u2019", + "iot_wash_whites_xl": "Albe XL", + "iot_wash_wine_stains": "Pete de vin", + "iot_wash_wool": "L\u00e2n\u0103", + "jeans": "Blugi", + "jeans_60": "Jeans", + "low_dry": "Uscarea fibrelor mixte", + "mixed": "Mixte", + "mixed_and_colored_59": "Mixte \u0219i colorate 59\u2019", + "mixed_steam": "Mixte + Abur", + "mix_and_colour_59": "Mixte + Colorate 59'", + "mix_and_colour_59_steam": "Mixte \u0219i colorate 59' + abur", + "night_and_day": "Zi \u0219i noapte", + "night_wash": "Ciclu peste noapte", + "perfect_59": "Perfect 59'", + "perfect_cotton_59": "Bumbac Perfect 59'", + "perfect_cotton_59_steam": "Bumbac Perfect 59'", + "perfect_whites_59": "Albul perfect 59'", + "rapid_14_min": "Rapid 14'", + "rapid_30_min": "Rapid 30'", + "rapid_44_min": "Rapid 44'", + "rapid_a_class_60": "Rapid Clasa A 60", + "rapid_a_class_60_steam": "Rapid Clasa A 60 + Abur", + "rapid_wash_and_dry_59_min": "Sp\u0103lare \u0219i uscare 59'.", + "resistant_cotton": "Bumbac", + "resistant_cotton_steam": "Bumbac + Abur", + "rinse": "Cl\u0103tire", + "shirts_steam": "C\u0103m\u0103\u0219i + Abur", + "silent_night": "Ciclu peste noapte", + "single_item": "Un singur articol", + "single_item_steam": "Un singur articol + abur", + "smart_wash": "Sp\u0103lare inteligent\u0103", + "soft_care": "\u00cengrijire bl\u00e2nd\u0103", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "Special 39'", + "special_39_full_load": "Special 39'", + "special_39_full_load_steam": "Special 39' + abur", + "special_49": "Special 49'", + "sport_39": "Sport 39'", + "sport_plus_29": "Sport Plus 29\"", + "sport_plus_39": "Sport Plus 39'", + "steam_39": "Abur 39'", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro - bumbac", + "steam_care_pro_delicates": "Steam Care Pro - delicate", + "steam_care_pro_synthetic": "Steam Care Pro - sintetice", + "steam_hygiene_plus": "Hygiene Plus Steam ", + "synthetics": "Sintetice", + "synthetic_and_coloured": "Sintetice \u0219i colorate", + "synthetic_and_coloured_steam": "Sintetice \u0219i colorate + abur", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "\u00cengrijire total\u0103", + "tumbling": "Tambur", + "wool": "L\u00e2n\u0103", + "wool_and_delicates_49": "L\u00e2n\u0103/Delicate 49'", + "wool_dry": "Uscarea l\u00e2nii", + "wool_soft_care": "L\u00e2n\u0103 & \u00cengrijire Bl\u00e2nd\u0103" + } + } } } } \ No newline at end of file diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index 9040110..0d49717 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -66,6 +66,650 @@ "6": "Hot rinse" } } + }, + "select": { + "programs_dw": { + "state": { + "59_min": "\u0411\u044bc\u0442\u0440\u0430\u044f \u041c\u043e\u0439k\u0430 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "\u0430\u0432\u0442\u043e \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f 50 - 60\u00b0C", + "auto_universal_plus": "\u0430\u0432\u0442\u043e \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043b\u044e\u0441 65 - 75\u00b0C", + "auto_universal_plus_soil": "\u0430\u0432\u0442\u043e \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043b\u044e\u0441 65 - 75\u00b0C", + "auto_universal_soil": "\u0430\u0432\u0442\u043e \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f 50 - 60\u00b0C", + "auto_wash": "Auto Wash", + "auto_wash_soil": "Auto Wash", + "classe_a_59": "\u0430 \u043a\u043b\u0430\u0441\u0441 \u0437\u0430 1 \u0447\u0430\u0441 65\u00b0C", + "delicate": "\u0434\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u0430\u044f 45\u00b0C", + "dishwasher_care": "\u0426\u0438\u043a\u043b \u043e\u0447\u0438\u0441\u0442\u043a\u0438 \u043e\u0442 \u043d\u0430\u043a\u0438\u043f\u0438", + "eco": "\u042d\u043a\u043e", + "eco_asynch": "\u044d\u043a\u043e 45\u00b0C", + "eco_bldc": "\u044d\u043a\u043e 45\u00b0C", + "eco_synch": "\u044d\u043a\u043e 45\u00b0C", + "gentle_wash": "Gentle wash", + "glass": "\u0421\u0442\u0435\u043a\u043b\u043e", + "glass _care": "Glass Care", + "glassware": "\u0441\u0442\u0435\u043a\u043b\u043e 45\u00b0C", + "glass_care": "Glass Care", + "hygiene": "\u0413\u0438\u0433\u0438\u0435\u043d\u0430", + "hygiene_plus": "\u0433\u0438\u0433\u0438\u0435\u043d\u0430+ 75\u00b0C", + "intensive": "\u0418\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u0430\u044f 40", + "intensive_rapid": "\u0438\u043d\u0442\u0435\u043dc\u0438\u0432\u043d\u0430\u044f \u0431\u044bc\u0442\u0440\u0430\u044f", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "\u0430\u0432\u0442\u043e \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f 50 - 60\u00b0C", + "iot_auto_wash_soil": "Auto Wash", + "iot_baby_care": "\u0414\u0435\u0442\u0441\u043a\u0430\u044f \u043e\u0434\u0435\u0436\u0434\u0430", + "iot_breakfast": "\u0417\u0430\u0432\u0442\u0440\u0430\u043a", + "iot_checkup": "\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430", + "iot_china_crystals": "\u041a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u0439 \u0445\u0440\u0443\u0441\u0442\u0430\u043b\u044c", + "iot_classe_a_59": "\u0411\u044bc\u0442\u0440\u0430\u044f \u041c\u043e\u0439k\u0430 59'", + "iot_cocktail_glasses": "\u0411\u043e\u043a\u0430\u043b\u044b \u0434\u043b\u044f \u043a\u043e\u043a\u0442\u0435\u0439\u043b\u0435\u0439", + "iot_cocktail_glasses_soil": "\u0411\u043e\u043a\u0430\u043b\u044b \u0434\u043b\u044f \u043a\u043e\u043a\u0442\u0435\u0439\u043b\u0435\u0439", + "iot_daily_care": "\u0415\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u044b\u0439 \u0443\u0445\u043e\u0434", + "iot_daily_care_soil": "\u0415\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u044b\u0439 \u0443\u0445\u043e\u0434", + "iot_delicate": "\u0434\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u0430\u044f 45\u00b0C", + "iot_dinner_for_two": "\u0423\u0436\u0438\u043d \u0434\u043b\u044f \u0434\u0432\u043e\u0438\u0445", + "iot_dinner_for_two_soil": "\u0423\u0436\u0438\u043d \u0434\u043b\u044f \u0434\u0432\u043e\u0438\u0445", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "\u044d\u043a\u043e 45\u00b0C", + "iot_eco_bldc": "\u044d\u043a\u043e 45\u00b0C", + "iot_eco_synch": "\u044d\u043a\u043e 45\u00b0C", + "iot_extra_hygiene": "\u0426\u0438\u043a\u043b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0430\u0440\u043e\u043c", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "\u0421\u0447\u0430\u0441\u0442\u043b\u0438\u0432\u044b\u0439 \u0447\u0430\u0441", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "\u0412\u0435\u0447\u0435\u0440\u0438\u043d\u043a\u0430", + "iot_party_soil": "\u0412\u0435\u0447\u0435\u0440\u0438\u043d\u043a\u0430", + "iot_pizza_menu": "\u041c\u0435\u043d\u044e \u043f\u0438\u0446\u0446\u0430", + "iot_pizza_menu_soil": "\u041c\u0435\u043d\u044e \u043f\u0438\u0446\u0446\u0430", + "iot_plastic_tupperware": "\u041f\u043b\u0430\u0441\u0442\u043c\u0430\u0441\u0441\u043e\u0432\u044b\u0435 \u043b\u043e\u0442\u043a\u0438 \u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b", + "iot_porcelain": "\u0424\u0430\u0440\u0444\u043e\u0440", + "iot_pot_&_pans": "\u041a\u043e\u0442\u0435\u043b\u043a\u0438 \u0438 \u043a\u0430\u0441\u0442\u0440\u044e\u043b\u0438", + "iot_pot_&_pans_soil": "\u041a\u043e\u0442\u0435\u043b\u043a\u0438 \u0438 \u043a\u0430\u0441\u0442\u0440\u044e\u043b\u0438", + "iot_power_mix_wash": "\u0418\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u043e\u0435 \u043c\u044b\u0442\u044c\u0435 \u0441\u043c\u0435\u0448\u0430\u043d\u043d\u043e\u0439 \u043f\u043e\u0441\u0443\u0434\u044b", + "iot_power_mix_wash_soil": "\u0418\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u043e\u0435 \u043c\u044b\u0442\u044c\u0435 \u0441\u043c\u0435\u0448\u0430\u043d\u043d\u043e\u0439 \u043f\u043e\u0441\u0443\u0434\u044b", + "iot_prewash": "\u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043c\u043e\u0439\u043a\u0430", + "iot_pyrex_and_glassware": "\u0416\u0430\u0440\u043e\u0441\u0442\u043e\u0439\u043a\u0430\u044f \u0438 \u0441\u0442\u0435\u043a\u043b\u044f\u043d\u043d\u0430\u044f \u043f\u043e\u0441\u0443\u0434\u0430", + "iot_rapid_29": "\u0431\u044b\u0441\u0442\u0440\u0430\u044f 29'", + "iot_rapid_39": "\u0431\u044b\u0441\u0442\u0440\u0430\u044f 39' 60\u00b0C", + "iot_single": "\u041e\u0434\u0438\u043d\u043e\u043a\u0438\u0435", + "iot_steam": "\u043f\u0430\u0440 75\u00b0C", + "iot_super_flash": "Super Flash", + "iot_super_wash": "\u0421\u0443\u043f\u0435\u0440\u043c\u043e\u0439\u043a\u0430", + "iot_turbopower": "TurboPower", + "iot_universal": "\u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f 60\u00b0C", + "iot_wok_grids_maxi_pans": "\u0411\u043e\u043b\u044c\u0448\u0438\u0435 \u0441\u043a\u043e\u0432\u043e\u0440\u043e\u0434\u043a\u0438 \u0438 \u0440\u0435\u0448\u0435\u0442\u043a\u0438", + "iot_wok_grids_maxi_pans_soil": "\u0411\u043e\u043b\u044c\u0448\u0438\u0435 \u0441\u043a\u043e\u0432\u043e\u0440\u043e\u0434\u043a\u0438 \u0438 \u0440\u0435\u0448\u0435\u0442\u043a\u0438", + "iot_yes_quick_cycle": "Yes Quick", + "night": "\u0443\u043b\u044c\u0442\u0440\u0430 \u0442\u0438\u0445\u0430\u044f 55\u00b0\u0441", + "prewash": "\u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043c\u043e\u0439\u043a\u0430", + "rapid_20": "\u0411\u044bc\u0442\u0440\u0430\u044f \u041c\u043e\u0439k\u0430 20'", + "rapid_24": "\u0431\u044b\u0441\u0442\u0440\u0430\u044f 24'", + "rapid_29": "\u0431\u044b\u0441\u0442\u0440\u0430\u044f 29' 50\u00b0C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "\u0431\u044b\u0441\u0442\u0440\u0430\u044f 39' 60\u00b0C", + "rapid_49": "\u0411\u044bc\u0442\u0440\u0430\u044f \u041c\u043e\u0439k\u0430 49'", + "rapid_59": "\u0411\u044bc\u0442\u0440\u0430\u044f \u041c\u043e\u0439k\u0430 59'", + "sanitising": "\u0413\u0438\u0433\u0438\u0435\u043d\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0438\u0440\u043a\u0430", + "silence": "Silence", + "silent": "\u041d\u043e\u0447\u044c", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "special": "\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435", + "special_pw_prz": "\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435", + "steam": "\u043f\u0430\u0440 75\u00b0C", + "steam_plus": "\u041f\u0430\u0440 \u043f\u043b\u044e\u0441 75\u00b0C", + "total_care": "\u043e\u0431\u0449\u0438\u0439 \u0443\u0445\u043e\u0434 50\u00b0C", + "ultra_silence": "\u0443\u043b\u044c\u0442\u0440\u0430 \u0442\u0438\u0445\u0430\u044f 55\u00b0\u0441", + "ultra_silent": "\u0443\u043b\u044c\u0442\u0440\u0430 \u0442\u0438\u0445\u0430\u044f 55\u00b0\u0441", + "universal": "\u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f 60\u00b0C", + "universal_plus": "\u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043b\u044e\u0441 70\u00b0C", + "zoom_39": "Zoom 39 min" + } + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "\u041f\u043e\u0434\u0440\u0443\u043c\u044f\u043d\u0435\u043d\u043d\u044b\u0439", + "iot_special_beef_fillet": "\u0424\u0438\u043b\u0435 \u0433\u043e\u0432\u044f\u0434\u0438\u043d\u044b", + "iot_special_beef_veal_stew": "\u0422\u0443\u0448\u0435\u043d\u0430\u044f \u0433\u043e\u0432\u044f\u0434\u0438\u043d\u0430 \u0438 \u0442\u0435\u043b\u044f\u0442\u0438\u043d\u0430", + "iot_special_boiled_rice": "\u0420\u0438\u0441 \u043e\u0442\u0432\u0430\u0440\u043d\u043e\u0439", + "iot_special_chicken_breast": "\u041a\u0443\u0440\u0438\u043d\u0430\u044f \u0433\u0440\u0443\u0434\u043a\u0430", + "iot_special_chicken_legs": "\u041a\u0443\u0440\u0438\u043d\u044b\u0435 \u043d\u043e\u0436\u043a\u0438", + "iot_special_chocolate_pudding": "\u0428\u043e\u043a\u043e\u043b\u0430\u0434\u043d\u044b\u0439 \u043f\u0443\u0434\u0438\u043d\u0433", + "iot_special_entrecote": "\u0410\u043d\u0442\u0440\u0435\u043a\u043e\u0442", + "iot_special_fresh_tuna": "\u0421\u0432\u0435\u0436\u0438\u0439 \u0442\u0443\u043d\u0435\u0446", + "iot_special_grilled_vegetables": "\u041e\u0432\u043e\u0449\u0438 \u043d\u0430 \u0433\u0440\u0438\u043b\u0435", + "iot_special_lamb_cutlet": "\u041a\u0430\u0440\u0435 \u044f\u0433\u043d\u0435\u043d\u043a\u0430", + "iot_special_meatballs": "\u041c\u0438\u0442\u0431\u043e\u043b\u044b", + "iot_special_minestrone": "\u041c\u0438\u043d\u0435\u0441\u0442\u0440\u043e\u043d\u0435", + "iot_special_mussels": "\u041c\u0438\u0434\u0438\u0438", + "iot_special_omelette": "\u041e\u043c\u043b\u0435\u0442", + "iot_special_pancakes": "\u041e\u043b\u0430\u0434\u044c\u0438", + "iot_special_paris_style_peas": "\u0413\u043e\u0440\u043e\u0448\u0435\u043a \u043f\u043e-\u043f\u0430\u0440\u0438\u0436\u0441\u043a\u0438", + "iot_special_poached_eggs": "\u042f\u0439\u0446\u0430-\u043f\u0430\u0448\u043e\u0442", + "iot_special_pork_fillet": "\u0421\u0432\u0438\u043d\u043e\u0435 \u0444\u0438\u043b\u0435", + "iot_special_pork_ribs": "\u0421\u0432\u0438\u043d\u044b\u0435 \u0440\u0435\u0431\u0440\u0430", + "iot_special_prawns": "\u041a\u0440\u0435\u0432\u0435\u0442\u043a\u0438", + "iot_special_quinoa": "\u041a\u0438\u043d\u043e\u0430", + "iot_special_ratatouille": "\u0420\u0430\u0442\u0430\u0442\u0443\u0439", + "iot_special_salmon_fillet": "\u0424\u0438\u043b\u0435 \u043b\u043e\u0441\u043e\u0441\u044f", + "iot_special_saute_potatoes": "\u041a\u0430\u0440\u0442\u043e\u0444\u0435\u043b\u044c \u0436\u0430\u0440\u0435\u043d\u044b\u0439", + "iot_special_scallops": "\u0413\u0440\u0435\u0431\u0435\u0448\u043a\u0438", + "iot_special_scrambled_eggs": "\u042f\u0438\u0447\u043d\u0438\u0446\u0430-\u0431\u043e\u043b\u0442\u0443\u043d\u044c\u044f", + "iot_special_spelt": "\u0421\u043f\u0435\u043b\u044c\u0442\u0430", + "iot_special_veggy_noodles": "\u0412\u0435\u0433\u0435\u0442\u0430\u0440\u0438\u0430\u043d\u0441\u043a\u0430\u044f \u043b\u0430\u043f\u0448\u0430", + "iot_special_white_fish_fillet": "\u0424\u0438\u043b\u0435 \u0431\u0435\u043b\u043e\u0439 \u0440\u044b\u0431\u044b", + "iot_standard_boiling": "\u041a\u0438\u043f\u044f\u0447\u0435\u043d\u0438\u0435", + "iot_standard_frying": "\u0416\u0430\u0440\u043a\u0430", + "iot_standard_keep_warm": "\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0431\u043b\u044e\u0434 \u0432 \u0442\u0435\u043f\u043b\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438", + "iot_standard_melting": "\u041f\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435", + "iot_standard_simmering": "\u041f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e\u043c \u043e\u0433\u043d\u0435" + } + }, + "programs_ov": { + "state": { + "bakery": "\u041f\u0430\u0441\u0442\u0430 \u0438 \u0432\u044b\u043f\u0435\u0447\u043a\u0430", + "bakery_steam": "\u0425\u043b\u0435\u0431, \u0438\u0441\u043f\u0435\u0447\u0435\u043d\u043d\u044b\u0439 \u043d\u0430 \u043f\u0430\u0440\u0443", + "bottom_heating": "\u041d\u0438\u0436\u043d\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442", + "bottom_heating_fan": "\u041d\u0438\u0436\u043d\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 + \u0432\u0435\u043d\u0442\u0438\u043b\u044f\u0442\u043e\u0440", + "bread": "\u0425\u043b\u0435\u0431", + "bread_steam": "\u0412\u044b\u043f\u0435\u0447\u043a\u0430, \u043f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u043d\u0430 \u043f\u0430\u0440\u0443", + "convection_fan": "\u0412\u0435\u0440\u0445\u043d\u0438\u0439 \u0438 \u043d\u0438\u0436\u043d\u0438\u0439 \u043d\u0430\u0433\u0440\u0435\u0432 \u0441 \u0432\u0435\u043d\u0442\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c", + "convection_fan_turnspit": "\u041e\u0431\u044b\u043a\u043d\u043e\u0432\u0435\u043d\u043d\u0430\u044f \u0434\u0443\u0445\u043e\u0432\u043a\u0430 + \u0432\u0435\u043d\u0442\u0438\u043b\u044f\u0442\u043e\u0440 + \u0432\u0435\u0440\u0442\u0435\u043b", + "conventional": "\u0412\u0435\u0440\u0445\u043d\u0438\u0439 \u0438 \u043d\u0438\u0436\u043d\u0438\u0439 \u043d\u0430\u0433\u0440\u0435\u0432", + "conventional_turnspit": "\u041e\u0431\u044b\u043a\u043d\u043e\u0432\u0435\u043d\u043d\u0430\u044f \u0434\u0443\u0445\u043e\u0432\u043a\u0430 + \u0432\u0435\u043d\u0442\u0438\u043b\u044f\u0442\u043e\u0440", + "defrost": "\u0420\u0430\u0437\u043c\u043e\u0440\u0430\u0436\u0438\u0432\u0430\u043d\u0438\u0435", + "descaling": "\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u043a\u0438\u043f\u0438", + "fish": "\u0420\u044b\u0431\u0430", + "fish_steam": "\u0420\u044b\u0431\u0430, \u043f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u043d\u0430 \u043f\u0430\u0440\u0443", + "grill_cata": "\u0413\u0440\u0438\u043b\u044c", + "grill_fan_cata": "\u0413\u0440\u0438\u043b\u044c \u0441 \u0432\u0435\u043d\u0442\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c", + "grill_fan_pyro": "\u0413\u0440\u0438\u043b\u044c + \u0432\u0435\u043d\u0442\u0438\u043b\u044f\u0442\u043e\u0440", + "grill_pyro": "\u0413\u0440\u0438\u043b\u044c", + "h20_clean": "H2O-Clean", + "iot_bread": "\u0425\u043b\u0435\u0431", + "iot_h20_clean": "h2O clean", + "leavening": "\u0417\u0430\u043a\u0432\u0430\u0448\u0438\u0432\u0430\u043d\u0438\u0435", + "low_temp_cooking": "\u041f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u043d\u0438\u0437\u043a\u043e\u0439 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0435", + "low_temp_cooking_fish": "\u041f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u043d\u0438\u0437\u043a\u043e\u0439 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0435 - \u0420\u044b\u0431\u0430", + "low_temp_cooking_fish_steam": "\u041f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u043d\u0438\u0437\u043a\u043e\u0439 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0435 \u043d\u0430 \u043f\u0430\u0440\u0443 - \u0420\u044b\u0431\u0430", + "low_temp_cooking_meat": "\u041f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u043d\u0438\u0437\u043a\u043e\u0439 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0435 - \u041c\u044f\u0441\u043e", + "low_temp_cooking_meat_steam": "\u041f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u043d\u0438\u0437\u043a\u043e\u0439 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0435 \u043d\u0430 \u043f\u0430\u0440\u0443 - \u041c\u044f\u0441\u043e", + "low_temp_cooking_steam": "\u041f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u043d\u0438\u0437\u043a\u043e\u0439 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0435 \u043d\u0430 \u043f\u0430\u0440\u0443", + "meat": "\u041c\u044f\u0441\u043e", + "meat_steam": "\u041c\u044f\u0441\u043e, \u043f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u043d\u0430 \u043f\u0430\u0440\u0443", + "multi_level": "\u041c\u043d\u043e\u0433\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0435 \u043f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u0435", + "paella": "Paella", + "pasta_and_bakery": "\u041f\u0430\u0441\u0442\u0430 \u0438 \u0432\u044b\u043f\u0435\u0447\u043a\u0430", + "pizza": "Pizza", + "pyrolysis": "\u041f\u0438\u0440\u043e\u043b\u0438\u0437", + "pyrolysis_plus": "\u041f\u0438\u0440\u043e\u043b\u0438\u0437 +", + "red_meat": "\u041a\u0440\u0430\u0441\u043d\u043e\u0435 \u043c\u044f\u0441\u043e", + "red_meat_steam": "\u041a\u0440\u0430\u0441\u043d\u043e\u0435 \u043c\u044f\u0441\u043e, \u043f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u043d\u0430 \u043f\u0430\u0440\u0443", + "regenerate": "\u0420\u0435\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f", + "soft_plus": "Soft+", + "super_grill": "\u0421\u0443\u043f\u0435\u0440-\u0433\u0440\u0438\u043b\u044c", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_desctiption": "\u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0434\u0435\u043b\u0438\u0435 \u0431\u044b\u043b\u043e \u043c\u044f\u0433\u043a\u0438\u043c \u0432\u043d\u0443\u0442\u0440\u0438 \u0438 \u0441 \u043a\u043e\u0440\u043e\u0447\u043a\u043e\u0439 \u0441\u043d\u0430\u0440\u0443\u0436\u0438.\r\r\r\r\r\n\u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442 \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0435\u0435\u0441\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0436\u0438\u0440\u0430 \u0438 \u043c\u0430\u0441\u043b\u0430 \u0434\u043b\u044f \u043f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u0435\u0435 \u0437\u0434\u043e\u0440\u043e\u0432\u043e\u0439 \u043f\u0438\u0449\u0438.\r\r\r\r\r\n\u0421\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435 \u043d\u0430\u0433\u0440\u0435\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 \u043f\u0443\u043b\u044c\u0441\u0438\u0440\u0443\u044e\u0449\u0438\u043c \u0446\u0438\u043a\u043b\u043e\u043c\r\r\r\r\r\n\u0446\u0438\u0440\u043a\u0443\u043b\u044f\u0446\u0438\u0438 \u0432\u043e\u0437\u0434\u0443\u0445\u0430 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432\u044b\u043f\u0435\u043a\u0430\u043d\u0438\u044f.", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "\u041e\u0432\u043e\u0449\u0438", + "vegetables_cata": "\u041e\u0432\u043e\u0449\u0438", + "vegetables_pyro": "\u041e\u0432\u043e\u0449\u0438", + "water_discharge": "\u0412\u043e\u0434\u043e\u043e\u0442\u0432\u043e\u0434", + "white_meat": "\u0411\u0435\u043b\u043e\u0435 \u043c\u044f\u0441\u043e", + "white_meat_steam": "\u0411\u0435\u043b\u043e\u0435 \u043c\u044f\u0441\u043e, \u043f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u043d\u0430 \u043f\u0430\u0440\u0443" + } + }, + "programs_td": { + "state": { + "active_dry": "\u0410\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0441\u0443\u0448\u043a\u0430", + "allergy_care": "\u041f\u0440\u043e\u0442\u0438\u0432\u043e\u0430\u043b\u043b\u0435\u0440\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435", + "all_in_one": "\u0412\u0441\u0435 \u0432 \u043e\u0434\u043d\u043e\u043c", + "antiallergy": "\u041f\u0440\u043e\u0442\u0438\u0432\u043e\u0430\u043b\u043b\u0435\u0440\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435", + "anti_odours": "\u041f\u0440\u043e\u0442\u0438\u0432 \u0437\u0430\u043f\u0430\u0445\u0430", + "auto_care": "\u0410\u0432\u0442\u043e\u0443\u0445\u043e\u0434", + "baby": "\u0414\u0435\u0442\u0441\u043a\u0430\u044f \u043e\u0434\u0435\u0436\u0434\u0430", + "bed_quilt": "\u0421\u0442\u0435\u0433\u0430\u043d\u044b\u0435 \u0438 \u043f\u0443\u0445\u043e\u0432\u044b\u0435 \u043e\u0434\u0435\u044f\u043b\u0430", + "care_30": "\u0423\u0445\u043e\u0434 30", + "care_45": "\u0423\u0445\u043e\u0434 45", + "care_59": "\u0423\u0445\u043e\u0434 59", + "coloured": "\u0446\u0432\u0435\u0442\u043d\u044b\u0435", + "daily_45_min": "\u0415\u0416\u0415\u0414\u041d\u0415\u0412\u041d\u0410\u042f 45'", + "daily_perfect_59_min": "\u0415\u0416\u0415\u0414\u041d\u0415\u0412\u041d\u0410\u042f \u0418\u0414\u0415\u0410\u041b\u042c\u041d\u0410\u042f 59'", + "darks_and_coloured": "\u0422\u0435\u043c\u043d\u044b\u0435 \u0438 \u0426\u0432\u0435\u0442\u043d\u044b\u0435", + "delicates": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435", + "duvet": "\u041f\u0443\u0445\u043e\u0432\u043e\u0435 \u043e\u0434\u0435\u044f\u043b\u043e", + "eco": "\u042d\u043a\u043e \u0445\u043b\u043e\u043f\u043e\u043a", + "ecospeed_cottons": "\u042d\u043a\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0445\u043b\u043e\u043f\u043e\u043a", + "ecospeed_delicates": "\u042d\u043a\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0434\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435", + "ecospeed_mixed": "\u042d\u043a\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0441\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435", + "extra_hygiene": "\u042d\u041a\u0421\u0422\u0420\u0410 \u0413\u0418\u0413\u0418\u0415\u041d\u0410", + "fitness": "\u0424\u0438\u0442\u043d\u0435\u0441", + "fresh_care": "\u0421\u0432\u0435\u0436\u0435\u0441\u0442\u044c", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "\u041f\u043e\u043b\u043e\u0442\u0435\u043d\u0446\u0430", + "hqd_bed_sheets": "\u041f\u0440\u043e\u0441\u0442\u044b\u043d\u0438", + "hqd_bulky": "\u041e\u0431\u044a\u0435\u043c\u043d\u044b\u0435 \u0438\u0437\u0434\u0435\u043b\u0438\u044f", + "hqd_casual": "\u041f\u043e\u0432\u0441\u0435\u0434\u043d\u0435\u0432\u043d\u0430\u044f \u043e\u0434\u0435\u0436\u0434\u0430", + "hqd_cold_wind_30": "\u041f\u0440\u043e\u0445\u043b\u0430\u0434\u043d\u044b\u0439 \u043e\u0431\u0434\u0443\u0432 30 \u043c\u0438\u043d\u0443\u0442", + "hqd_cold_wind_timing": "\u041f\u0440\u043e\u0445\u043b\u0430\u0434\u043d\u044b\u0439 \u043e\u0431\u0434\u0443\u0432 ", + "hqd_cotton": "\u0425\u043b\u043e\u043f\u043e\u043a", + "hqd_curtain": "\u0428\u0442\u043e\u0440\u044b", + "hqd_delicate": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0432\u0435\u0449\u0438", + "hqd_diaper": "\u041f\u0435\u043b\u0435\u043d\u043a\u0438", + "hqd_duvet": "\u041f\u0443\u0445\u043e\u0432\u043e\u0435 \u043e\u0434\u0435\u044f\u043b\u043e", + "hqd_feather": "\u041f\u0443\u0445\u043e\u0432\u0438\u043a\u0438", + "hqd_hot_wind_timing": "\u0413\u043e\u0440\u044f\u0447\u0438\u0439 \u0432\u043e\u0437\u0434\u0443\u0445", + "hqd_hygienic": "\u0421\u0430\u043d\u0438\u0442\u0430\u0440\u043d\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "\u041a\u0443\u0440\u0442\u043a\u0438", + "hqd_jeans": "\u0414\u0436\u0438\u043d\u0441\u044b", + "hqd_luxury": "\u041b\u044e\u043a\u0441\u043e\u0432\u044b\u0435 \u0438\u0437\u0434\u0435\u043b\u0438\u044f", + "hqd_mix": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", + "hqd_night_dry": "\u041d\u043e\u0447\u043d\u0430\u044f \u0441\u0443\u0448\u043a\u0430", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f 20", + "hqd_quick_30": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f 30", + "hqd_quick_dry": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f \u0441\u0443\u0448\u043a\u0430", + "hqd_quilt": "\u0421\u0442\u0435\u0433\u0430\u043d\u044b\u0435 \u043e\u0434\u0435\u044f\u043b\u0430", + "hqd_refresh": "\u041e\u0441\u0432\u0435\u0436\u0435\u043d\u0438\u0435", + "hqd_school_uniform": "\u0428\u043a\u043e\u043b\u044c\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430", + "hqd_shirt": "\u0420\u0443\u0431\u0430\u0448\u043a\u0438", + "hqd_shoes": "\u041e\u0431\u0443\u0432\u044c", + "hqd_silk": "\u0428\u0435\u043b\u043a", + "hqd_sports": "\u0421\u043f\u043e\u0440\u0442\u0438\u0432\u043d\u0430\u044f \u043e\u0434\u0435\u0436\u0434\u0430", + "hqd_synthetics": "\u0421\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0430", + "hqd_timer": "Timed", + "hqd_towel": "\u041f\u043e\u043b\u043e\u0442\u0435\u043d\u0446\u0430", + "hqd_underwear": "\u041d\u0438\u0436\u043d\u0435\u0435 \u0431\u0435\u043b\u044c\u0435", + "hqd_warm_up": "\u041f\u043e\u0434\u043e\u0433\u0440\u0435\u0432", + "hqd_wool": "\u0428\u0435\u0440\u0441\u0442\u044c", + "hqd_working_suit": "\u0420\u0430\u0431\u043e\u0447\u0430\u044f \u043e\u0434\u0435\u0436\u0434\u0430", + "hygiene": "\u0413\u0438\u0433\u0438\u0435\u043d\u0430", + "iot_checkup": "\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430", + "iot_dry_anti_mites": "\u041f\u0440\u043e\u0442\u0438\u0432\u043e\u043a\u043b\u0435\u0449\u0435\u0432\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430", + "iot_dry_baby": "\u0414\u0435\u0442\u0441\u043a\u0430\u044f \u043e\u0434\u0435\u0436\u0434\u0430", + "iot_dry_backpacks": "\u0420\u044e\u043a\u0437\u0430\u043a\u0438", + "iot_dry_bathrobe": "\u0411\u0430\u043d\u043d\u044b\u0435 \u0445\u0430\u043b\u0430\u0442\u044b", + "iot_dry_bed_linen": "\u041f\u043e\u0441\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0431\u0435\u043b\u044c\u0435", + "iot_dry_bed_quilt": "\u0421\u0442\u0435\u0433\u0430\u043d\u044b\u0435 \u0438 \u043f\u0443\u0445\u043e\u0432\u044b\u0435 \u043e\u0434\u0435\u044f\u043b\u0430", + "iot_dry_cotton": "\u0425\u043b\u043e\u043f\u043e\u043a", + "iot_dry_cuddly_toys": "\u041c\u044f\u0433\u043a\u0438\u0435 \u0438\u0433\u0440\u0443\u0448\u043a\u0438", + "iot_dry_curtains": "\u0428\u0442\u043e\u0440\u044b", + "iot_dry_dehumidifier": "\u0412\u043b\u0430\u0433\u043e\u043f\u043e\u0433\u043b\u043e\u0442\u0438\u0442\u0435\u043b\u044c", + "iot_dry_delicates": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435", + "iot_dry_delicate_tablecloths": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0441\u043a\u0430\u0442\u0435\u0440\u0442\u0438", + "iot_dry_denim_jeans": "\u0414\u0435\u043d\u0438\u043c \u2013 \u0434\u0436\u0438\u043d\u0441\u044b", + "iot_dry_down_jacket": "\u041a\u0443\u0440\u0442\u043a\u0438", + "iot_dry_duvet": "\u041f\u0443\u0445\u043e\u0432\u043e\u0435 \u043e\u0434\u0435\u044f\u043b\u043e", + "iot_dry_easy_iron_cotton": "\u0421\u0432\u0435\u0440\u0445\u043b\u0435\u0433\u043a\u0430\u044f \u0433\u043b\u0430\u0436\u043a\u0430", + "iot_dry_easy_iron_synthetics": "\u0421\u0443\u043f\u0435\u0440\u0443\u0434\u043e\u0431\u043d\u0430\u044f \u0433\u043b\u0430\u0436\u043a\u0430 \u0441\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0438", + "iot_dry_gym_fit": "\u041e\u0434\u0435\u0436\u0434\u0430 \u0434\u043b\u044f \u0441\u043f\u043e\u0440\u0442\u0437\u0430\u043b\u0430 \u2013 \u0424\u0438\u0442\u043d\u0435\u0441", + "iot_dry_lingerie": "\u0411\u0435\u043b\u044c\u0435", + "iot_dry_mixed": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", + "iot_dry_playsuits": "\u041f\u043b\u044f\u0436\u043d\u044b\u0435 \u043a\u043e\u0441\u0442\u044e\u043c\u044b", + "iot_dry_rapid_30": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f 30'", + "iot_dry_rapid_59": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f 59 \u043c\u0438\u043d.", + "iot_dry_refresh": "\u041e\u0441\u0432\u0435\u0436\u0438\u0442\u044c", + "iot_dry_regenerates_waterproof": "\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u043e\u0434\u043e\u043d\u0435\u043f\u0440\u043e\u043d\u0438\u0446\u0430\u0435\u043c\u044b\u0445 \u0442\u043a\u0430\u043d\u0435\u0439", + "iot_dry_relax_creases": "\u0423\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043a\u043b\u0430\u0434\u043e\u043a", + "iot_dry_shirts": "\u0420\u0443\u0431\u0430\u0448\u043a\u0438", + "iot_dry_small_load": "\u041c\u0430\u043b\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430", + "iot_dry_swimsuits_and_bikinis": "\u041a\u0443\u043f\u0430\u043b\u044c\u043d\u0438\u043a\u0438", + "iot_dry_synthetics": "\u0421\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0430", + "iot_dry_synthetic_dry": "\u0421\u0443\u0448\u043a\u0430 \u0441\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0438", + "iot_dry_tablecloths": "\u0421\u043a\u0430\u0442\u0435\u0440\u0442\u0438", + "iot_dry_technical_fabrics": "\u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0442\u043a\u0430\u043d\u0438", + "iot_dry_warm_embrace": "\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0442\u0435\u043f\u043b\u043e\u043c", + "iot_dry_wool": "\u0428\u0435\u0440\u0441\u0442\u044c", + "jeans": "\u0434\u0436\u0438\u043d\u0441\u044b", + "mix_and_dry": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435+\u0441\u0443\u0448\u043a\u0430", + "pets": "\u0416\u0438\u0432\u043e\u0442\u043d\u044b\u0435", + "pre_iron": "\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0433\u043b\u0430\u0436\u043a\u0430", + "rapid_30": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f 30'", + "rapid_45": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f 45 \u043c\u0438\u043d", + "rapid_59": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u0430\u044f 59 \u043c\u0438\u043d.", + "refresh": "\u041e\u0441\u0432\u0435\u0436\u0438\u0442\u044c", + "relax_creases": "\u0423\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043a\u043b\u0430\u0434\u043e\u043a", + "saving_30_min": "\u042d\u041a\u041e 30'", + "shirts": "\u0420\u0443\u0431\u0430\u0448\u043a\u0438", + "shoes": "\u041e\u0431\u0443\u0432\u044c", + "small_load": "\u041c\u0430\u043b\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430", + "soft_care": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0439 \u0443\u0445\u043e\u0434", + "sport_plus": "\u0421\u043f\u043e\u0440\u0442", + "super_easy_iron_misti": "\u0421\u0443\u043f\u0435\u0440\u043b\u0435\u0433\u043a\u0430\u044f \u0433\u043b\u0430\u0436\u043a\u0430 \u0441\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435", + "super_easy_iron_xxl": "\u0421\u0443\u043f\u0435\u0440\u043b\u0435\u0433\u043a\u0430\u044f \u0433\u043b\u0430\u0436\u043a\u0430 XXL", + "super_fast_cottons": "\u0421\u0443\u043f\u0435\u0440-\u0411\u042b\u0421\u0422\u0420\u0410\u042f \u0445\u043b\u043e\u043f\u043e\u043a", + "super_fast_delicates": "\u0421\u0443\u043f\u0435\u0440-\u0411\u042b\u0421\u0422\u0420\u0410\u042f \u0434\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435", + "synthetics": "\u0421\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0430", + "total_care": "\u041e\u0431\u0449\u0438\u0438 \u0443\u0445\u043e\u0434", + "trainers": "\u0421\u043f\u043e\u0440\u0442\u0438\u0432\u043d\u0430\u044f \u043e\u0431\u0443\u0432\u044c", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u043e\u0434\u043e\u043d\u0435\u043f\u0440\u043e\u043d\u0438\u0446\u0430\u0435\u043c\u043e\u0441\u0442\u0438", + "whites": "\u0411\u0435\u043b\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", + "wool": "\u0421\u0443\u0448\u043a\u0430 \u0448\u0435\u0440\u0441\u0442\u0438", + "woolmark": "\u0428\u0435\u0440\u0441\u0442\u044c", + "xxl_load": "\u041e\u0431\u044a\u0435\u043c\u043d\u044b\u0435 \u0432\u0435\u0449\u0438", + "zoom_59": "Zoom 59 (\u0417\u0443\u043c 59)" + } + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "20\u00b0 \u0426\u0432\u0435\u0442\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438 \u0438 \u0425\u043b\u043e\u043f\u043e\u043a", + "20_degrees_new_energy_label": "20\u00b0C", + "active_steam": "\u041f\u0430\u0440", + "active_wash": "\u0410\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0441\u0442\u0438\u0440\u043a\u0430", + "active_wash_steam": "\u0410\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0441\u0442\u0438\u0440\u043a\u0430", + "allergy_care": "\u0423\u0445\u043e\u0434 \u0434\u043b\u044f \u0430\u043b\u043b\u0435\u0440\u0433\u0438\u043a\u043e\u0432", + "allergy_care_pro": "\u0423\u0445\u043e\u0434 \u0434\u043b\u044f \u0430\u043b\u043b\u0435\u0440\u0433\u0438\u043a\u043e\u0432 \u043f\u0440\u043e", + "all_in_one_49": "\u0412\u0441\u0435 \u0432 \u043e\u0434\u043d\u043e\u043c 49 \u043c\u0438\u043d.", + "all_in_one_59": "\u0412\u0441\u0435 \u0432 \u043e\u0434\u043d\u043e\u043c 59 \u043c\u0438\u043d.", + "all_in_one_59_steam": "\u0410\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0441\u0442\u0438\u0440\u043a\u0430\u00a0+ \u043f\u0430\u0440", + "autocare": "\u0410\u0432\u0442\u043e\u0443\u0445\u043e\u0434", + "autoclean": "\u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u0431\u0430\u0440\u0430\u0431\u0430\u043d\u0430", + "baby_60": "\u0421\u0442\u0438\u0440\u043a\u0430 \u0434\u0435\u0442\u0441\u043a\u043e\u0433\u043e \u0431\u0435\u043b\u044c\u044f \u043f\u0440\u0438 60\u00b0\u0421", + "care_14": "\u0411\u042b\u0421\u0422\u0420\u042b\u0419 \u0423\u0445\u043e\u0434 14'", + "care_30": "\u0411\u042b\u0421\u0422\u0420\u042b\u0419 \u0423\u0445\u043e\u0434 30'", + "care_44": "\u0411\u042b\u0421\u0422\u0420\u042b\u0419 \u0423\u0445\u043e\u0434 44'", + "checkup": "\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430", + "colour_59": "\u0446\u0432\u0435\u0442\u043d\u044b\u0435 59'", + "colour_59_steam": "\u0426\u0432\u0435\u0442\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438 59' + \u043f\u0430\u0440", + "cottons": "\u0425\u043b\u043e\u043f\u043e\u043a", + "cottons_prewash": "\u0445\u043b\u043e\u043f\u043e\u043a + \u043f\u0440\u0435\u0434\u0432\u0430\u0440.", + "cottons_steam": "\u0425\u043b\u043e\u043f\u043e\u043a + \u041f\u0430\u0440", + "cotton_care_59": "\u0445\u043b\u043e\u043f\u043e\u043a 59 \u043c\u0438\u043d\u0443\u0442", + "delicate_59": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u0430\u044f 59 \u043c\u0438\u043d.", + "delicate_silk": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u0430\u044f \u0442\u043a\u0430\u043d\u044c (\u0448\u0435\u043b\u043a)", + "delicate_silk_steam": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u0430\u044f \u0442\u043a\u0430\u043d\u044c (\u0448\u0435\u043b\u043a) + \u043f\u0430\u0440", + "delicati_59": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u0430\u044f 59 \u043c\u0438\u043d.", + "delicati_59_steam": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u0430\u044f 59 \u043c\u0438\u043d.", + "drain_spin": "\u0421\u043b\u0438\u0432 + \u043e\u0442\u0436\u0438\u043c", + "easy_iron": "\u043b\u0435\u0433\u043a\u0430\u044f \u0433\u043b\u0430\u0436\u043a\u0430", + "eco_40_60_new_energy_label": "Eco 40-60", + "extra_care": "\u042d\u041a\u0421\u0422\u0420\u0410 \u0423\u0425\u041e\u0414", + "fitness": "\u0424\u0438\u0442\u043d\u0435\u0441", + "fitness_care": "\u0424\u0438\u0442\u043d\u0435\u0441", + "fresh_care": "\u0421\u0432\u0435\u0436\u0435\u0441\u0442\u044c", + "fresh_care_steam": "\u0421\u0432\u0435\u0436\u0435\u0441\u0442\u044c\u00a0+ \u043f\u0430\u0440", + "handwash_wool": "\u0420\u0443\u0447\u043d\u0430\u044f \u0441\u0442\u0438\u0440\u043a\u0430 \u0438 \u0448\u0435\u0440\u0441\u0442\u044c", + "high_dry": "\u0421\u0443\u0448\u043a\u0430 \u0445\u043b\u043e\u043f\u043a\u0430", + "hqd_20_degrees": "\u0425\u043b\u043e\u043f\u043e\u043a 20\u2103", + "hqd_allergy": "\u0423\u0445\u043e\u0434 \u0434\u043b\u044f \u0430\u043b\u043b\u0435\u0440\u0433\u0438\u043a\u043e\u0432", + "hqd_autoclean": "\u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u0431\u0430\u0440\u0430\u0431\u0430\u043d\u0430", + "hqd_babycare": "\u0414\u0435\u0442\u0441\u043a\u0430\u044f \u043e\u0434\u0435\u0436\u0434\u0430", + "hqd_checkup": "\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430", + "hqd_cottons": "\u0425\u043b\u043e\u043f\u043e\u043a", + "hqd_delicate": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0432\u0435\u0449\u0438", + "hqd_delicate_cradle": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0432\u0435\u0449\u0438", + "hqd_dry": "\u0421\u0443\u0448\u043a\u0430 \u0445\u043b\u043e\u043f\u043a\u0430", + "hqd_dry_synthetics": "\u0421\u0443\u0448\u043a\u0430 \u0441\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0445 \u0442\u043a\u0430\u043d\u0435\u0439", + "hqd_duvet": "\u041f\u0443\u0445\u043e\u0432\u043e\u0435 \u043e\u0434\u0435\u044f\u043b\u043e", + "hqd_eco_40_60_degrees": "Eco 40-60", + "hqd_handwash_wool": "\u0428\u0435\u0440\u0441\u0442\u044c", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", + "hqd_quick_15": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f 15 \u043c\u0438\u043d.", + "hqd_quick_wash_57": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f \u0441\u0442\u0438\u0440\u043a\u0430 57 \u043c\u0438\u043d", + "hqd_rapid_wash_and_dry": "\u0421\u0442\u0438\u0440\u043a\u0430 \u0438 \u0441\u0443\u0448\u043a\u0430", + "hqd_refresh": "\u041e\u0441\u0432\u0435\u0436\u0438\u0442\u044c", + "hqd_rinse": "\u041f\u043e\u043b\u043e\u0441\u043a\u0430\u043d\u0438\u0435", + "hqd_shirts": "\u0420\u0443\u0431\u0430\u0448\u043a\u0438", + "hqd_smart": "Smart A.I.", + "hqd_spin": "\u041e\u0442\u0436\u0438\u043c", + "hqd_sport": "\u0421\u043f\u043e\u0440\u0442", + "hqd_super_fast": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f 39 \u043c\u0438\u043d.", + "hqd_synthetic_and_coloured": "\u0421\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0430", + "hygiene_59": "\u0413\u0418\u0413\u0418\u0415\u041d\u0418\u0427\u041d\u0410\u042f \u041f\u041b\u042e\u0421 59'", + "hygiene_60": "\u0413\u0438\u0433\u0438\u0435\u043d\u0438\u0447\u043d\u0430\u044f 60\u00b0", + "hygiene_plus_59": "\u0413\u0418\u0413\u0418\u0415\u041d\u0418\u0427\u041d\u0410\u042f \u041f\u041b\u042e\u0421 59'", + "hygiene_plus_59_min": "\u0413\u0418\u0413\u0418\u0415\u041d\u0418\u0427\u041d\u0410\u042f \u041f\u041b\u042e\u0421 59'", + "hygiene_pro _49_min": "Hygiene Pro 49 \u043c\u0438\u043d.", + "hygiene_pro_49_min": "Hygiene Pro 49 \u043c\u0438\u043d.", + "hygiene_pro_steam": "Hygiene Pro + \u041f\u0430\u0440", + "intensive_40": "\u0418\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u0430\u044f 40\u00b0\u0421", + "intensive_40_steam": "\u0418\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u044b\u0439 \u043f\u0430\u0440 40\u00b0C +", + "iot_active_steam": "\u041f\u0430\u0440", + "iot_active_wash_steam": "\u0410\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0441\u0442\u0438\u0440\u043a\u0430", + "iot_allergy_care_pro": "\u0423\u0445\u043e\u0434 \u0434\u043b\u044f \u0430\u043b\u043b\u0435\u0440\u0433\u0438\u043a\u043e\u0432 \u043f\u0440\u043e", + "iot_all_in_one_59_steam": "\u0410\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0441\u0442\u0438\u0440\u043a\u0430\u00a0+ \u043f\u0430\u0440", + "iot_checkup": "\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430", + "iot_colour_59_steam": "\u0426\u0432\u0435\u0442\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438 59' + \u043f\u0430\u0440", + "iot_cottons_steam": "\u0425\u043b\u043e\u043f\u043e\u043a + \u041f\u0430\u0440", + "iot_delicate_silk_steam": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u0430\u044f \u0442\u043a\u0430\u043d\u044c (\u0448\u0435\u043b\u043a) + \u043f\u0430\u0440", + "iot_delicati_59_steam": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u0430\u044f 59 \u043c\u0438\u043d.", + "iot_dry_air_refresh": "\u041e\u0441\u0432\u0435\u0436\u0435\u043d\u0438\u0435 \u0432\u043e\u0437\u0434\u0443\u0445\u043e\u043c", + "iot_dry_anti_mites": "\u041f\u0440\u043e\u0442\u0438\u0432\u043e\u043a\u043b\u0435\u0449\u0435\u0432\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430", + "iot_dry_baby": "\u0414\u0435\u0442\u0441\u043a\u0438\u0435 \u0432\u0435\u0449\u0438", + "iot_dry_backpacks": "\u0420\u044e\u043a\u0437\u0430\u043a\u0438", + "iot_dry_bathrobe": "\u041a\u0443\u043f\u0430\u043b\u044c\u043d\u044b\u0435 \u0445\u0430\u043b\u0430\u0442\u044b \u0438 \u0440\u044b\u0445\u043b\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", + "iot_dry_bed_linen": "\u041f\u043e\u0441\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0431\u0435\u043b\u044c\u0435", + "iot_dry_cotton_dry": "\u0421\u0443\u0448\u043a\u0430 \u0445\u043b\u043e\u043f\u043a\u0430", + "iot_dry_cuddly_toys": "\u041c\u044f\u0433\u043a\u0438\u0435 \u0438\u0433\u0440\u0443\u0448\u043a\u0438", + "iot_dry_curtains": "\u0428\u0442\u043e\u0440\u044b", + "iot_dry_dehumidifier": "\u0412\u043b\u0430\u0433\u043e\u043f\u043e\u0433\u043b\u043e\u0442\u0438\u0442\u0435\u043b\u044c", + "iot_dry_delicates_antiallergy": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0432\u0435\u0449\u0438 \u2013 \u0437\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u0430\u043b\u043b\u0435\u0440\u0433\u0438\u0438", + "iot_dry_delicate_tablecloths": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0441\u043a\u0430\u0442\u0435\u0440\u0442\u0438", + "iot_dry_denim_jeans": "\u0414\u0435\u043d\u0438\u043c \u2013 \u0434\u0436\u0438\u043d\u0441\u044b", + "iot_dry_easy_iron_cotton": "\u041b\u0435\u0433\u043a\u0430\u044f \u0433\u043b\u0430\u0436\u043a\u0430 \u2013 \u0445\u043b\u043e\u043f\u043e\u043a", + "iot_dry_easy_iron_synthetics": "\u041b\u0435\u0433\u043a\u0430\u044f \u0433\u043b\u0430\u0436\u043a\u0430 \u2013 \u0441\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0430", + "iot_dry_gym_fit": "\u041e\u0434\u0435\u0436\u0434\u0430 \u0434\u043b\u044f \u0441\u043f\u043e\u0440\u0442\u0437\u0430\u043b\u0430", + "iot_dry_lingerie": "\u0411\u0435\u043b\u044c\u0435", + "iot_dry_mixed_dry": "\u0421\u0443\u0448\u043a\u0430 \u0441\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0445 \u0442\u043a\u0430\u043d\u0435\u0439", + "iot_dry_rapid_60_min_delicates": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f \u0441\u0443\u0448\u043a\u0430 60 \u043c\u0438\u043d. \u2013 \u0434\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", + "iot_dry_shirts": "\u0420\u0443\u0431\u0430\u0448\u043a\u0438", + "iot_dry_swimsuits_and_bikinis": "\u041a\u0443\u043f\u0430\u043b\u044c\u043d\u0438\u043a\u0438", + "iot_dry_synthetics": "\u0421\u0443\u0448\u043a\u0430 \u0441\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0438", + "iot_dry_synthetic_dry": "\u0421\u0443\u0448\u043a\u0430 \u0441\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0438", + "iot_dry_tablecloths": "\u0421\u043a\u0430\u0442\u0435\u0440\u0442\u0438", + "iot_dry_technical_fabrics": "\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", + "iot_dry_warm_embrace": "\u0422\u0435\u043f\u043b\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u043d\u0430\u044f \u0441\u0443\u0448\u043a\u0430", + "iot_dry_wool_dry": "\u0421\u0443\u0448\u043a\u0430 \u0448\u0435\u0440\u0441\u0442\u0438", + "iot_easy_iron": "\u043b\u0435\u0433\u043a\u0430\u044f \u0433\u043b\u0430\u0436\u043a\u0430", + "iot_fresh_care_steam": "\u0421\u0432\u0435\u0436\u0435\u0441\u0442\u044c\u00a0+ \u043f\u0430\u0440", + "iot_hygiene_pro_steam": "Hygiene Pro + \u041f\u0430\u0440", + "iot_intensive_40_steam": "\u0418\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u044b\u0439 \u043f\u0430\u0440 40\u00b0C +", + "iot_mixed_steam": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438 + \u041f\u0430\u0440", + "iot_mix_and_colour_59_steam": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435 \u0438 \u0446\u0432\u0435\u0442\u043d\u044b\u0435 59\u00a0\u043c\u0438\u043d\u00a0+ \u043f\u0430\u0440", + "iot_perfect_cotton_59_steam": "\u0425\u041b\u041e\u041f\u041e\u041a: \u0418\u0414\u0415\u0410\u041b\u042c\u041d\u0410\u042f \u0421\u0422\u0418\u0420\u041a\u0410 59'", + "iot_rapid_a_class_60_steam": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f \u041a\u043b\u0430\u0441\u0441 A 60 + \u043f\u0430\u0440", + "iot_resistant_cotton_steam": "\u0425\u043b\u043e\u043f\u043e\u043a + \u041f\u0430\u0440", + "iot_shirts_steam": "\u0420\u0443\u0431\u0430\u0448\u043a\u0438 + \u041f\u0430\u0440", + "iot_single_item_steam": "\u041e\u0434\u043d\u0430 \u0432\u0435\u0449\u044c\u00a0+ \u043f\u0430\u0440", + "iot_smart_wash": "Smart Wash", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f 39\u00a0\u043c\u0438\u043d\u00a0+ \u043f\u0430\u0440", + "iot_steam_hygiene_plus": "\u0413\u0438\u0433\u0438\u0435\u043d\u0430 \u043f\u043b\u044e\u0441 \u043f\u0430\u0440\u043e\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 ", + "iot_synthetic_and_coloured_steam": "\u0421\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0430 \u0438 \u0446\u0432\u0435\u0442\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438\u00a0+ \u043f\u0430\u0440", + "iot_wash_and_dry": "\u0421\u0442\u0438\u0440\u043a\u0430 \u0438 \u0441\u0443\u0448\u043a\u0430", + "iot_wash_anti_mites": "\u041f\u0440\u043e\u0442\u0438\u0432\u043e\u043a\u043b\u0435\u0449\u0435\u0432\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430", + "iot_wash_anti_odor": "\u0423\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0430\u0445\u043e\u0432", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "\u0413\u0438\u0433\u0438\u0435\u043d\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0438\u0440\u043a\u0430", + "iot_wash_baby_sanitizer_steam": "\u0413\u0438\u0433\u0438\u0435\u043d\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0438\u0440\u043a\u0430 \u0434\u0435\u0442\u0441\u043a\u0438\u0445 \u0432\u0435\u0449\u0435\u0439 + \u043f\u0430\u0440", + "iot_wash_backpacks": "\u0420\u044e\u043a\u0437\u0430\u043a\u0438", + "iot_wash_backpacks_zelig": "\u0420\u044e\u043a\u0437\u0430\u043a\u0438", + "iot_wash_bathrobe": "\u0411\u0430\u043d\u043d\u044b\u0435 \u0445\u0430\u043b\u0430\u0442\u044b \u0438 \u043f\u043e\u043b\u043e\u0442\u0435\u043d\u0446\u0430", + "iot_wash_bathrobe_steam": "\u0411\u0430\u043d\u043d\u044b\u0435 \u0445\u0430\u043b\u0430\u0442\u044b + \u041f\u0430\u0440", + "iot_wash_bed_linen": "\u041f\u043e\u0441\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0431\u0435\u043b\u044c\u0435", + "iot_wash_bed_linen_steam": "\u041f\u043e\u0441\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0431\u0435\u043b\u044c\u0435 + \u041f\u0430\u0440", + "iot_wash_bed_linen_zelig": "\u041f\u043e\u0441\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0431\u0435\u043b\u044c\u0435", + "iot_wash_big_single_load": "\u0411\u043e\u043b\u044c\u0448\u0430\u044f \u0440\u0430\u0437\u043e\u0432\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430", + "iot_wash_bleaching": "\u041e\u0442\u0431\u0435\u043b\u0438\u0432\u0430\u043d\u0438\u0435", + "iot_wash_blood_stains": "\u041f\u044f\u0442\u043d\u0430 \u043a\u0440\u043e\u0432\u0438", + "iot_wash_cashmere": "\u041a\u0430\u0448\u0435\u043c\u0438\u0440", + "iot_wash_chocolate_stains": "\u041f\u044f\u0442\u043d\u0430 \u0448\u043e\u043a\u043e\u043b\u0430\u0434\u0430", + "iot_wash_cold_wash": "\u0421\u0442\u0438\u0440\u043a\u0430 \u0432 \u0445\u043e\u043b\u043e\u0434\u043d\u043e\u0439 \u0432\u043e\u0434\u0435", + "iot_wash_colored": "\u0426\u0432\u0435\u0442\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", + "iot_wash_colored_anti_stain": "\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043f\u044f\u0442\u0435\u043d \u0441 \u0446\u0432\u0435\u0442\u043d\u044b\u0445 \u0432\u0435\u0449\u0435\u0439", + "iot_wash_colored_delicate": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u043d\u044b\u0435", + "iot_wash_coloured": "\u0426\u0432\u0435\u0442\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", + "iot_wash_coloured_bed_linen": "\u0426\u0432\u0435\u0442\u043d\u043e\u0435 \u043f\u043e\u0441\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0431\u0435\u043b\u044c\u0435", + "iot_wash_coloured_bed_linen_steam": "\u0426\u0432\u0435\u0442\u043d\u043e\u0435 \u043f\u043e\u0441\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0431\u0435\u043b\u044c\u0435 + \u043f\u0430\u0440", + "iot_wash_coloured_curtains": "\u0426\u0432\u0435\u0442\u043d\u044b\u0435 \u0448\u0442\u043e\u0440\u044b", + "iot_wash_coloured_shirts": "\u0426\u0432\u0435\u0442\u043d\u044b\u0435 \u0440\u0443\u0431\u0430\u0448\u043a\u0438", + "iot_wash_coloured_shirts_steam": "\u0426\u0432\u0435\u0442\u043d\u044b\u0435 \u0440\u0443\u0431\u0430\u0448\u043a\u0438 + \u043f\u0430\u0440", + "iot_wash_coloured_steam": "\u0426\u0432\u0435\u0442\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438 + \u041f\u0430\u0440", + "iot_wash_coloured_tableclothes": "\u0426\u0432\u0435\u0442\u043d\u044b\u0435 \u0441\u043a\u0430\u0442\u0435\u0440\u0442\u0438", + "iot_wash_coloured_tableclothes_steam": "\u0426\u0432\u0435\u0442\u043d\u044b\u0435 \u0441\u043a\u0430\u0442\u0435\u0440\u0442\u0438\u00a0+ \u043f\u0430\u0440", + "iot_wash_cotton": "\u0425\u043b\u043e\u043f\u043e\u043a", + "iot_wash_cotton_steam": "\u0425\u043b\u043e\u043f\u043e\u043a + \u041f\u0430\u0440", + "iot_wash_cuddly_toys": "\u041c\u044f\u0433\u043a\u0438\u0435 \u0438\u0433\u0440\u0443\u0448\u043a\u0438", + "iot_wash_curtains": "\u0428\u0442\u043e\u0440\u044b", + "iot_wash_curtains_steam": "\u0428\u0442\u043e\u0440\u044b+\u041f\u0430\u0440", + "iot_wash_curtains_zelig": "\u0428\u0442\u043e\u0440\u044b", + "iot_wash_dark": "\u0422\u0435\u043c\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", + "iot_wash_darks_and_coloured_44": "\u0422\u0435\u043c\u043d\u044b\u0435 \u0438 \u0446\u0432\u0435\u0442\u043d\u044b\u0435 44 \u043c\u0438\u043d.", + "iot_wash_darks_and_coloured_59": "\u0422\u0435\u043c\u043d\u044b\u0435 \u0438 \u0446\u0432\u0435\u0442\u043d\u044b\u0435 59 \u043c\u0438\u043d.", + "iot_wash_darks_and_coloured_xl": "\u0422\u0435\u043c\u043d\u044b\u0435 \u0438 \u0446\u0432\u0435\u0442\u043d\u044b\u0435 XL", + "iot_wash_dark_steam": "\u0422\u0435\u043c\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438 + \u041f\u0430\u0440", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0432\u0435\u0449\u0438", + "iot_wash_delicate_antiallergy": "\u0417\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u0430\u043b\u043b\u0435\u0440\u0433\u0438\u0438 \u0434\u043b\u044f \u0434\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0445 \u0432\u0435\u0449\u0435\u0439", + "iot_wash_delicate_antiallergy_steam": "\u0417\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u0430\u043b\u043b\u0435\u0440\u0433\u0438\u0438 \u0434\u043b\u044f \u0434\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0445 \u0432\u0435\u0449\u0435\u0439 + \u041f\u0430\u0440", + "iot_wash_delicate_antiallergy_zelig": "\u0417\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u0430\u043b\u043b\u0435\u0440\u0433\u0438\u0438 \u0434\u043b\u044f \u0434\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0445 \u0432\u0435\u0449\u0435\u0439", + "iot_wash_delicate_colors": "\u0426\u0432\u0435\u0442\u043d\u044b\u0435 \u0434\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", + "iot_wash_delicate_colors_steam": "\u0426\u0432\u0435\u0442\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438 + \u043f\u0430\u0440", + "iot_wash_delicate_dark": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0442\u0435\u043c\u043d\u044b\u0435", + "iot_wash_delicate_steam": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0432\u0435\u0449\u0438 + \u041f\u0430\u0440", + "iot_wash_delicate_tablecloths": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0441\u043a\u0430\u0442\u0435\u0440\u0442\u0438", + "iot_wash_delicate_tablecloths_steam": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0441\u043a\u0430\u0442\u0435\u0440\u0442\u0438 + \u041f\u0430\u0440", + "iot_wash_delicate_whites": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0431\u0435\u043b\u044b\u0435", + "iot_wash_denim_jeans": "\u0414\u0435\u043d\u0438\u043c \u2013 \u0434\u0436\u0438\u043d\u0441\u044b", + "iot_wash_diving_suits": "\u0413\u0438\u0434\u0440\u043e\u043a\u043e\u0441\u0442\u044e\u043c\u044b", + "iot_wash_diving_suits_zelig": "\u0413\u0438\u0434\u0440\u043e\u043a\u043e\u0441\u0442\u044e\u043c\u044b", + "iot_wash_down_jackets": "\u041f\u0443\u0445\u043e\u0432\u0438\u043a\u0438", + "iot_wash_down_jackets_zelig": "\u041f\u0443\u0445\u043e\u0432\u0438\u043a\u0438", + "iot_wash_duvet": "\u041f\u0443\u0445\u043e\u0432\u043e\u0435 \u043e\u0434\u0435\u044f\u043b\u043e", + "iot_wash_fruit_stains": "\u041f\u044f\u0442\u043d\u0430 \u043e\u0442 \u0444\u0440\u0443\u043a\u0442\u043e\u0432", + "iot_wash_gym_fit": "\u041e\u0434\u0435\u0436\u0434\u0430 \u0434\u043b\u044f \u0441\u043f\u043e\u0440\u0442\u0437\u0430\u043b\u0430", + "iot_wash_handwash": "\u0420\u0443\u0447\u043d\u0430\u044f \u0441\u0442\u0438\u0440\u043a\u0430", + "iot_wash_handwash_colored": "\u0420\u0443\u0447\u043d\u0430\u044f \u0441\u0442\u0438\u0440\u043a\u0430 \u0446\u0432\u0435\u0442\u043d\u044b\u0445 \u0442\u043a\u0430\u043d\u0435\u0439", + "iot_wash_handwash_dark": "\u0420\u0443\u0447\u043d\u0430\u044f \u0441\u0442\u0438\u0440\u043a\u0430 \u0442\u0435\u043c\u043d\u044b\u0445 \u0442\u043a\u0430\u043d\u0435\u0439", + "iot_wash_lingerie": "\u0411\u0435\u043b\u044c\u0435", + "iot_wash_masks_refresh": "\u041e\u0441\u0432\u0435\u0436\u0435\u043d\u0438\u0435 \u043c\u0430\u0441\u043e\u043a", + "iot_wash_masks_sanification": "\u0414\u0435\u0437\u0438\u043d\u0444\u0435\u043a\u0446\u0438\u044f \u043c\u0430\u0441\u043e\u043a", + "iot_wash_masks_sanification_steam": "\u0414\u0435\u0437\u0438\u043d\u0444\u0435\u043a\u0446\u0438\u044f \u043c\u0430\u0441\u043e\u043a + \u041f\u0430\u0440", + "iot_wash_mats": "\u041a\u043e\u0432\u0440\u044b", + "iot_wash_men_s_trousers": "\u0431\u0440\u044e\u043a\u0438", + "iot_wash_mixed": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", + "iot_wash_mixed_steam": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438 + \u041f\u0430\u0440", + "iot_wash_mix_and_coloured_44": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435 \u0438 \u0446\u0432\u0435\u0442\u043d\u044b\u0435 44 \u043c\u0438\u043d.", + "iot_wash_mix_and_coloured_59": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435 \u0438 \u0446\u0432\u0435\u0442\u043d\u044b\u0435 59 \u043c\u0438\u043d.", + "iot_wash_mix_and_coloured_xl": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435 \u0438 \u0446\u0432\u0435\u0442\u043d\u044b\u0435 XL", + "iot_wash_new_clothes": "\u041d\u043e\u0432\u0430\u044f \u043e\u0434\u0435\u0436\u0434\u0430", + "iot_wash_perfect_white": "\u0411\u0435\u0437\u0443\u043f\u0440\u0435\u0447\u043d\u044b\u0439 \u0431\u0435\u043b\u044b\u0439", + "iot_wash_perfect_white_steam": "\u0411\u0435\u0437\u0443\u043f\u0440\u0435\u0447\u043d\u044b\u0439 \u0431\u0435\u043b\u044b\u0439 + \u041f\u0430\u0440", + "iot_wash_pets": "\u041f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0436\u0438\u0432\u043e\u0442\u043d\u044b\u0445", + "iot_wash_pets_hair_removal": "\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0448\u0435\u0440\u0441\u0442\u0438 \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0445 \u0436\u0438\u0432\u043e\u0442\u043d\u044b\u0445", + "iot_wash_pets_odours_stains_removal": "\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043f\u044f\u0442\u0435\u043d \u0438 \u0437\u0430\u043f\u0430\u0445\u043e\u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0445 \u0436\u0438\u0432\u043e\u0442\u043d\u044b\u0445", + "iot_wash_pets_steam": "\u041f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0436\u0438\u0432\u043e\u0442\u043d\u044b\u0445", + "iot_wash_playsuits": "\u041f\u043b\u044f\u0436\u043d\u044b\u0435 \u043a\u043e\u0441\u0442\u044e\u043c\u044b", + "iot_wash_playsuits_steam": "\u041f\u043b\u044f\u0436\u043d\u044b\u0435 \u043a\u043e\u0441\u0442\u044e\u043c\u044b + \u041f\u0430\u0440", + "iot_wash_quick_drum_cleaner": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f \u043e\u0447\u0438\u0441\u0442\u043a\u0430 \u0431\u0430\u0440\u0430\u0431\u0430\u043d\u0430", + "iot_wash_rapid_14": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f 14 \u043c\u0438\u043d.", + "iot_wash_rapid_30": "(\u0411\u044b\u0441\u0442\u0440\u0430\u044f 30 \u043c\u0438\u043d.", + "iot_wash_rapid_44": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f 44 \u043c\u0438\u043d.", + "iot_wash_rapid_59": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f 59 \u043c\u0438\u043d", + "iot_wash_rapid_59_steam": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f 59' + \u043f\u0430\u0440", + "iot_wash_refresh_14_min": "\u041e\u0441\u0432\u0435\u0436\u0435\u043d\u0438\u0435 14 \u043c\u0438\u043d.", + "iot_wash_resistant_colored": "\u041f\u0440\u043e\u0447\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", + "iot_wash_resistant_dark": "\u041f\u0440\u043e\u0447\u043d\u044b\u0435 \u0442\u0435\u043c\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", + "iot_wash_resistant_whites": "\u041f\u0440\u043e\u0447\u043d\u044b\u0435 \u0431\u0435\u043b\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", + "iot_wash_rinse": "\u041f\u043e\u043b\u043e\u0441\u043a\u0430\u043d\u0438\u0435", + "iot_wash_shirts": "\u0420\u0443\u0431\u0430\u0448\u043a\u0438", + "iot_wash_shirts_steam": "\u0420\u0443\u0431\u0430\u0448\u043a\u0438 + \u041f\u0430\u0440", + "iot_wash_silk": "\u0428\u0435\u043b\u043a", + "iot_wash_ski_suit": "\u041b\u044b\u0436\u043d\u044b\u0435 \u043a\u043e\u0441\u0442\u044e\u043c\u044b", + "iot_wash_ski_suit_zelig": "\u041b\u044b\u0436\u043d\u044b\u0435 \u043a\u043e\u0441\u0442\u044e\u043c\u044b", + "iot_wash_spin": "\u041e\u0442\u0436\u0438\u043c", + "iot_wash_sport": "\u0421\u043f\u043e\u0440\u0442", + "iot_wash_sport_anti_odor": "\u0423\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0430\u0445\u0430 \u0441\u043e \u0441\u043f\u043e\u0440\u0442\u0438\u0432\u043d\u043e\u0439 \u043e\u0434\u0435\u0436\u0434\u044b", + "iot_wash_sport_anti_odor_zelig": "\u0423\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0430\u0445\u0430 \u0441\u043e \u0441\u043f\u043e\u0440\u0442\u0438\u0432\u043d\u043e\u0439 \u043e\u0434\u0435\u0436\u0434\u044b", + "iot_wash_stains_remover": "\u0412\u044b\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u044f\u0442\u0435\u043d", + "iot_wash_swimsuits_and_bikinis": "\u041a\u0443\u043f\u0430\u043b\u044c\u043d\u0438\u043a\u0438", + "iot_wash_synthetic": "\u0421\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0430", + "iot_wash_synthetic_steam": "\u0421\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0430 + \u041f\u0430\u0440", + "iot_wash_tablecloths": "\u0421\u043a\u0430\u0442\u0435\u0440\u0442\u0438", + "iot_wash_tablecloths_steam": "\u0421\u043a\u0430\u0442\u0435\u0440\u0442\u0438 + \u041f\u0430\u0440", + "iot_wash_technical_fabrics": "\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", + "iot_wash_technical_fabrics_zelig": "\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", + "iot_wash_technical_jackets": "\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043a\u0443\u0440\u0442\u043a\u0438", + "iot_wash_technical_jackets_zelig": "\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043a\u0443\u0440\u0442\u043a\u0438", + "iot_wash_trainers": "\u0421\u043f\u043e\u0440\u0442\u0438\u0432\u043d\u0430\u044f \u043e\u0431\u0443\u0432\u044c", + "iot_wash_whites": "\u0411\u0435\u043b\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", + "iot_wash_whites_44": "\u0411\u0435\u043b\u044b\u0435 \u0442\u043a\u0430\u043d\u0438 44 \u043c\u0438\u043d.", + "iot_wash_whites_59": "\u0411\u0435\u043b\u044b\u0435 \u0442\u043a\u0430\u043d\u0438 59 \u043c\u0438\u043d.", + "iot_wash_whites_xl": "\u0411\u0435\u043b\u044b\u0435 \u0442\u043a\u0430\u043d\u0438 XL", + "iot_wash_wine_stains": "\u041f\u044f\u0442\u043d\u0430 \u043e\u0442 \u0432\u0438\u043d\u0430", + "iot_wash_wool": "\u0428\u0435\u0440\u0441\u0442\u044c", + "jeans": "\u0414\u0436\u0438\u043d\u0441\u044b", + "jeans_60": "\u0434\u0436\u0438\u043d\u0441\u044b", + "low_dry": "\u0421\u0443\u0448\u043a\u0430 \u0441\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0445 \u0442\u043a\u0430\u043d\u0435\u0439", + "mixed": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", + "mixed_and_colored_59": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435 \u0438 \u0446\u0432\u0435\u0442\u043d\u044b\u0435 59 \u043c\u0438\u043d.", + "mixed_steam": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438 + \u041f\u0430\u0440", + "mix_and_colour_59": "\u0421\u041c\u0415\u0428\u0410\u041d\u041d\u042b\u0415 \u0418 \u0426\u0412\u0415\u0422\u041d\u042b\u0415 59'", + "mix_and_colour_59_steam": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435 \u0438 \u0446\u0432\u0435\u0442\u043d\u044b\u0435 59\u00a0\u043c\u0438\u043d\u00a0+ \u043f\u0430\u0440", + "night_and_day": "\u041d\u043e\u0447\u043d\u0430\u044f \u0441\u0442\u0438\u0440\u043a\u0430", + "night_wash": "\u041d\u043e\u0447\u043d\u043e\u0439 \u0446\u0438\u043a\u043b", + "perfect_59": "\u0418\u0434\u0435\u0430\u043b\u044c\u043d\u0430\u044f 59 \u043c\u0438\u043d.", + "perfect_cotton_59": "\u0425\u041b\u041e\u041f\u041e\u041a: \u0418\u0414\u0415\u0410\u041b\u042c\u041d\u0410\u042f \u0421\u0422\u0418\u0420\u041a\u0410 59'", + "perfect_cotton_59_steam": "\u0425\u041b\u041e\u041f\u041e\u041a: \u0418\u0414\u0415\u0410\u041b\u042c\u041d\u0410\u042f \u0421\u0422\u0418\u0420\u041a\u0410 59'", + "perfect_whites_59": "\u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u0431\u0435\u043b\u043e\u0435 59'", + "rapid_14_min": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f 14 \u043c\u0438\u043d", + "rapid_30_min": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f 30 \u043c\u0438\u043d.", + "rapid_44_min": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f 44 \u043c\u0438\u043d.", + "rapid_a_class_60": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f \u041a\u043b\u0430\u0441\u0441 A 60", + "rapid_a_class_60_steam": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f \u041a\u043b\u0430\u0441\u0441 A 60 + \u043f\u0430\u0440", + "rapid_wash_and_dry_59_min": "\u0421\u0442\u0438\u0440\u043a\u0430 \u0438 \u0441\u0443\u0448\u043a\u0430 59 \u043c\u0438\u043d.", + "resistant_cotton": "\u0425\u043b\u043e\u043f\u043e\u043a", + "resistant_cotton_steam": "\u0425\u043b\u043e\u043f\u043e\u043a + \u041f\u0430\u0440", + "rinse": "\u041f\u043e\u043b\u043e\u0441\u043a\u0430\u043d\u0438\u0435", + "shirts_steam": "\u0420\u0443\u0431\u0430\u0448\u043a\u0438 + \u041f\u0430\u0440", + "silent_night": "\u041d\u043e\u0447\u043d\u043e\u0439 \u0446\u0438\u043a\u043b", + "single_item": "\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442", + "single_item_steam": "\u041e\u0434\u043d\u0430 \u0432\u0435\u0449\u044c\u00a0+ \u043f\u0430\u0440", + "smart_wash": "Smart Wash", + "soft_care": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0439 \u0443\u0445\u043e\u0434", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "C\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 39'", + "special_39_full_load": "C\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 39'", + "special_39_full_load_steam": "\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f 39\u00a0\u043c\u0438\u043d\u00a0+ \u043f\u0430\u0440", + "special_49": "\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 49 \u043c\u0438\u043d.", + "sport_39": "\u0421\u043f\u043e\u0440\u0442 39 \u043c\u0438\u043d.", + "sport_plus_29": "\u0421\u041f\u041e\u0420\u0422 \u041f\u041b\u042e\u0421 29\"", + "sport_plus_39": "\u0421\u041f\u041e\u0420\u0422 \u041f\u041b\u042e\u0421 39'", + "steam_39": "\u041f\u0430\u0440 39 \u043c\u0438\u043d.", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro\u00a0\u2014 \u0445\u043b\u043e\u043f\u043e\u043a", + "steam_care_pro_delicates": "Steam Care Pro\u00a0\u2014 \u0434\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0432\u0435\u0449\u0438", + "steam_care_pro_synthetic": "Steam Care Pro\u00a0\u2014 \u0441\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0430", + "steam_hygiene_plus": "\u0413\u0438\u0433\u0438\u0435\u043d\u0430 \u043f\u043b\u044e\u0441 \u043f\u0430\u0440\u043e\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 ", + "synthetics": "\u0421\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0430", + "synthetic_and_coloured": "\u0421\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0430 \u0438 \u0446\u0432\u0435\u0442\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", + "synthetic_and_coloured_steam": "\u0421\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0430 \u0438 \u0446\u0432\u0435\u0442\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438\u00a0+ \u043f\u0430\u0440", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "\u041e\u0431\u0449\u0438\u0439 \u0443\u0445\u043e\u0434", + "tumbling": "\u0411\u0430\u0440\u0430\u0431\u0430\u043d", + "wool": "\u0428\u0435\u0440\u0441\u0442\u044c", + "wool_and_delicates_49": "\u0448\u0435\u0440\u0441\u0442\u044c/\u0434\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 49'", + "wool_dry": "\u0421\u0443\u0448\u043a\u0430 \u0448\u0435\u0440\u0441\u0442\u0438", + "wool_soft_care": "\u0448\u0435\u0440\u0441\u0442\u044c & \u0434\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0439 \u0443\u0445\u043e\u0434" + } + } } } } \ No newline at end of file diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index 1691b37..994e718 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -66,6 +66,650 @@ "6": "Hot rinse" } } + }, + "select": { + "programs_dw": { + "state": { + "59_min": "R\u00fdchly 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "Auto univerz\u00e1lny 50 -60\u00b0C", + "auto_universal_plus": "Auto univerz\u00e1lny plus 65 - 75\u00b0C", + "auto_universal_plus_soil": "Auto univerz\u00e1lny plus 65 - 75\u00b0C", + "auto_universal_soil": "Auto univerz\u00e1lny 50 -60\u00b0C", + "auto_wash": "Automatick\u00e9 pranie", + "auto_wash_soil": "Automatick\u00e9 pranie", + "classe_a_59": "A trieda 1 h 65\u00b0C", + "delicate": "Jemn\u00fd 45\u00b0C", + "dishwasher_care": "Cyklus \u010distenia vodn\u00e9ho kame\u0148a", + "eco": "Eko", + "eco_asynch": "Eco 45\u00b0C", + "eco_bldc": "Eco 45\u00b0C", + "eco_synch": "Eco 45\u00b0C", + "gentle_wash": "Gentle wash", + "glass": "Sklo", + "glass _care": "Glass Care", + "glassware": "Sklo 45 \u00b0C", + "glass_care": "Glass Care", + "hygiene": "Hygiena", + "hygiene_plus": "Hygienick\u00e9 um\u00fdvanie + 75 \u00b0C", + "intensive": "Intenz\u00edvne pranie ", + "intensive_rapid": "intenz\u00edvny r\u00fdchly", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "Auto univerz\u00e1lny 50 -60\u00b0C", + "iot_auto_wash_soil": "Automatick\u00e9 pranie", + "iot_baby_care": "Detsk\u00e1 starostlivos\u0165", + "iot_breakfast": "Ra\u0148ajky", + "iot_checkup": "Kontrola", + "iot_china_crystals": "Kri\u0161t\u00e1\u013e", + "iot_classe_a_59": "R\u00fdchly 59'", + "iot_cocktail_glasses": "Koktailov\u00e9 poh\u00e1re", + "iot_cocktail_glasses_soil": "Koktailov\u00e9 poh\u00e1re", + "iot_daily_care": "Denn\u00e1 starostlivos\u0165", + "iot_daily_care_soil": "Denn\u00e1 starostlivos\u0165", + "iot_delicate": "Jemn\u00fd 45\u00b0C", + "iot_dinner_for_two": "Ve\u010dera pre dvoch", + "iot_dinner_for_two_soil": "Ve\u010dera pre dvoch", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "Eco 45\u00b0C", + "iot_eco_bldc": "Eco 45\u00b0C", + "iot_eco_synch": "Eco 45\u00b0C", + "iot_extra_hygiene": "Extra hygienick\u00fd", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "Happy Hour", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "P\u00e1rty (ve\u010dierok)", + "iot_party_soil": "P\u00e1rty (ve\u010dierok)", + "iot_pizza_menu": "Pizza Menu", + "iot_pizza_menu_soil": "Pizza Menu", + "iot_plastic_tupperware": "Plastov\u00e9 riady a misky", + "iot_porcelain": "Porcel\u00e1n", + "iot_pot_&_pans": "Hrnce a panvice", + "iot_pot_&_pans_soil": "Hrnce a panvice", + "iot_power_mix_wash": "Power Mix Wash", + "iot_power_mix_wash_soil": "Power Mix Wash", + "iot_prewash": "Predum\u00fdvanie", + "iot_pyrex_and_glassware": "Pyrex a sklenen\u00e9 riady", + "iot_rapid_29": "Rychly 29'", + "iot_rapid_39": "R\u00fdchle 39' 60 \u00b0C", + "iot_single": "Jeden", + "iot_steam": "Para 75 \u00b0C", + "iot_super_flash": "Super oplach", + "iot_super_wash": "Super Wash", + "iot_turbopower": "Turbo Power", + "iot_universal": "Univerz\u00e1lne 60 \u00b0C", + "iot_wok_grids_maxi_pans": "\u0160peci\u00e1lne panvice (Wok, ro\u0161ty, maxi panvice)", + "iot_wok_grids_maxi_pans_soil": "\u0160peci\u00e1lne panvice (Wok, ro\u0161ty, maxi panvice)", + "iot_yes_quick_cycle": "Yes Quick", + "night": "Ultra tich\u00fd 55\u00b0C", + "prewash": "Predum\u00fdvanie", + "rapid_20": "R\u00fdchly 20'", + "rapid_24": "Rychly 24'", + "rapid_29": "Rychly 29' 50\u00b0C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "R\u00fdchle 39' 60 \u00b0C", + "rapid_49": "R\u00fdchly 49'", + "rapid_59": "R\u00fdchly 59'", + "sanitising": "Dezinfekcia", + "silence": "Silence", + "silent": "Noc", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "special": "\u0161peci\u00e1l", + "special_pw_prz": "\u0161peci\u00e1l", + "steam": "Para 75 \u00b0C", + "steam_plus": "Para Plus 75 \u00b0C", + "total_care": "Total Care 50\u00b0C", + "ultra_silence": "Ultra tich\u00fd 55\u00b0C", + "ultra_silent": "Ultra tich\u00fd 55\u00b0C", + "universal": "Univerz\u00e1lne 60 \u00b0C", + "universal_plus": "Univerz\u00e1lne Plus 70 \u00b0C", + "zoom_39": "Zoom 39 min" + } + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "Zemiakov\u00e9 placky", + "iot_special_beef_fillet": "Svie\u010dkov\u00e1", + "iot_special_beef_veal_stew": "Dusen\u00e9 hov\u00e4dzie a te\u013eacie m\u00e4so", + "iot_special_boiled_rice": "Varen\u00e1 ry\u017ea", + "iot_special_chicken_breast": "Kuracie prsia", + "iot_special_chicken_legs": "Kuracie stehn\u00e1", + "iot_special_chocolate_pudding": "\u010cokol\u00e1dov\u00fd puding", + "iot_special_entrecote": "Ro\u0161tenka", + "iot_special_fresh_tuna": "\u010cerstv\u00fd tuniak", + "iot_special_grilled_vegetables": "Grilovan\u00e1 zelenina", + "iot_special_lamb_cutlet": "Jah\u0148acie kotlety", + "iot_special_meatballs": "M\u00e4sov\u00e9 knedli\u010dky", + "iot_special_minestrone": "Minestrone", + "iot_special_mussels": "Mu\u0161le", + "iot_special_omelette": "Omeleta", + "iot_special_pancakes": "Palacinky", + "iot_special_paris_style_peas": "Hr\u00e1\u0161ok po par\u00ed\u017esky", + "iot_special_poached_eggs": "Straten\u00e9 vajcia", + "iot_special_pork_fillet": "Brav\u010dov\u00e1 fileta", + "iot_special_pork_ribs": "Brav\u010dov\u00e9 rebierka", + "iot_special_prawns": "Krevety", + "iot_special_quinoa": "Quinoa", + "iot_special_ratatouille": "Ratatouille", + "iot_special_salmon_fillet": "Fileta z lososa", + "iot_special_saute_potatoes": "Restovan\u00e9 zemiaky", + "iot_special_scallops": "Last\u00fary", + "iot_special_scrambled_eggs": "Pra\u017eenica", + "iot_special_spelt": "\u0160palda", + "iot_special_veggy_noodles": "Vegetari\u00e1nske rezance", + "iot_special_white_fish_fillet": "Filety z bielych r\u00fdb", + "iot_standard_boiling": "Vrenie", + "iot_standard_frying": "Vypr\u00e1\u017ea\u0165", + "iot_standard_keep_warm": "Udr\u017eiavanie tepla", + "iot_standard_melting": "Topi\u0165", + "iot_standard_simmering": "Slab\u00e9 vrenie" + } + }, + "programs_ov": { + "state": { + "bakery": "Cestoviny a pe\u010denie", + "bakery_steam": "Chlieb pe\u010den\u00fd v pare", + "bottom_heating": "Spodn\u00fd ohrev", + "bottom_heating_fan": "Spodn\u00fd ohrev + Ventil\u00e1tor", + "bread": "Chlieb", + "bread_steam": "Pe\u010divo pe\u010den\u00e9 v pare", + "convection_fan": "Statick\u00fd + ventil\u00e1tor", + "convection_fan_turnspit": "Statick\u00e9 + ventil\u00e1tor + oto\u010dn\u00fd ra\u017ee\u0148", + "conventional": "Statick\u00fd", + "conventional_turnspit": "Statick\u00e9 + oto\u010dn\u00fd ra\u017ee\u0148", + "defrost": "Rozmrazi\u0165", + "descaling": "Odstr\u00e1nenie vodn\u00e9ho kame\u0148a", + "fish": "Ryby", + "fish_steam": "Ryby varen\u00e9 v pare", + "grill_cata": "Gril", + "grill_fan_cata": "Gril + ventil\u00e1tor", + "grill_fan_pyro": "Gril + ventil\u00e1tor", + "grill_pyro": "Gril", + "h20_clean": "H2O-Clean", + "iot_bread": "Chlieb", + "iot_h20_clean": "h2O clean", + "leavening": "Kysnutie", + "low_temp_cooking": "Varenie pri n\u00edzkych teplot\u00e1ch", + "low_temp_cooking_fish": "Varenie pri n\u00edzkych teplot\u00e1ch \u2013 Ryby", + "low_temp_cooking_fish_steam": "Varenie pri n\u00edzkych teplot\u00e1ch v pare \u2013 Ryby", + "low_temp_cooking_meat": "Varenie pri n\u00edzkych teplot\u00e1ch \u2013 M\u00e4so", + "low_temp_cooking_meat_steam": "Varenie pri n\u00edzkych teplot\u00e1ch v pare", + "low_temp_cooking_steam": "Varenie pri n\u00edzkych teplot\u00e1ch v pare", + "meat": "M\u00e4so", + "meat_steam": "M\u00e4so uvaren\u00e9 v pare", + "multi_level": "Viac\u00farov\u0148ov\u00e9", + "paella": "Paella", + "pasta_and_bakery": "Cestoviny a pe\u010denie", + "pizza": "Pizza", + "pyrolysis": "Pyrol\u00fdza", + "pyrolysis_plus": "Pyrol\u00fdza +", + "red_meat": "\u010cerven\u00e9 m\u00e4so", + "red_meat_steam": "\u010cerven\u00e9 m\u00e4so varen\u00e9 v pare", + "regenerate": "Regener\u00e1cia", + "soft_plus": "Soft+", + "super_grill": "Super Gril", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_desctiption": "T\u00e1to funkcia je ide\u00e1lna na zachovania m\u00e4kkosti vo vn\u00fatri jedla s chrumkav\u00fdm vonkaj\u0161kom.\r\r\nT\u00e1to funkcia zni\u017euje mno\u017estvo tuku alebo oleja potrebn\u00e9 pre zdrav\u00fa v\u00fd\u017eivu.\r\r\nKombin\u00e1cia ohrievac\u00edch \u010dl\u00e1nkov s pulzuj\u00facim cyklom vzduchu zabezpe\u010duje rovnomern\u00e9 pe\u010denie.", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Zelenina", + "vegetables_cata": "Zelenina", + "vegetables_pyro": "Zelenina", + "water_discharge": "Odtok vody", + "white_meat": "Biele m\u00e4so", + "white_meat_steam": "Biele m\u00e4so varen\u00e9 v pare" + } + }, + "programs_td": { + "state": { + "active_dry": "Akt\u00edvne su\u0161enie", + "allergy_care": "Antialergick\u00fd", + "all_in_one": "All in One", + "antiallergy": "Antialergick\u00fd", + "anti_odours": "O\u017eivenie", + "auto_care": "Automatick\u00e1 starostlivos\u0165", + "baby": "Detsk\u00e1", + "bed_quilt": "Poste\u013en\u00e1 prikr\u00fdvka", + "care_30": "Starostlivos\u0165 30", + "care_45": "Starostlivos\u0165 45", + "care_59": "Starostlivos\u0165 59", + "coloured": "Farebn\u00e1", + "daily_45_min": "DENNY 45'", + "daily_perfect_59_min": "DAILY PERFECT 59'", + "darks_and_coloured": "Tmav\u00e1 a farebn\u00e1", + "delicates": "Jemn\u00e9", + "duvet": "Prikr\u00fdvky", + "eco": "Eco bavlna", + "ecospeed_cottons": "Ecospeed bavlna", + "ecospeed_delicates": "Eco rychly - jemne", + "ecospeed_mixed": "Ecospeed zmie\u0161an\u00e1", + "extra_hygiene": "EXTRA HYGIENA", + "fitness": "Fitnes", + "fresh_care": "Svie\u017ea starostlivos\u0165", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Osu\u0161ky", + "hqd_bed_sheets": "Poste\u013en\u00e1 bielize\u0148", + "hqd_bulky": "Objemn\u00e9 polo\u017eky", + "hqd_casual": "Neform\u00e1lne", + "hqd_cold_wind_30": "Chladn\u00fd v\u00e1nok 30 min\u00fat", + "hqd_cold_wind_timing": "Studen\u00fd v\u00e1nok ", + "hqd_cotton": "Bavlna", + "hqd_curtain": "Z\u00e1clony", + "hqd_delicate": "Jemn\u00e9 materi\u00e1ly", + "hqd_diaper": "Plienky", + "hqd_duvet": "Papl\u00f3n", + "hqd_feather": "Pre\u0161\u00edvan\u00e9 bundy", + "hqd_hot_wind_timing": "Hor\u00faci vzduch", + "hqd_hygienic": "Hygieniz\u00e1cia", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Bundy", + "hqd_jeans": "D\u017e\u00ednsy", + "hqd_luxury": "Luxury", + "hqd_mix": "Zmie\u0161an\u00e9", + "hqd_night_dry": "No\u010dn\u00e9 su\u0161enie", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "R\u00fdchle 20", + "hqd_quick_30": "R\u00fdchle 30", + "hqd_quick_dry": "R\u00fdchle su\u0161enie", + "hqd_quilt": "Prikr\u00fdvky", + "hqd_refresh": "Osvie\u017eenie", + "hqd_school_uniform": "\u0160kolsk\u00e1 uniforma", + "hqd_shirt": "Ko\u0161ele", + "hqd_shoes": "Obuv", + "hqd_silk": "Hodv\u00e1b", + "hqd_sports": "\u0160port", + "hqd_synthetics": "Syntetika", + "hqd_timer": "Na\u010dasovan\u00e9", + "hqd_towel": "Osu\u0161ky", + "hqd_underwear": "Spodn\u00e1 bielize\u0148", + "hqd_warm_up": "Zahriatie", + "hqd_wool": "Vlna", + "hqd_working_suit": "Pracovn\u00e9 odevy", + "hygiene": "Hygiena", + "iot_checkup": "Kontrola", + "iot_dry_anti_mites": "Proti rozto\u010dom", + "iot_dry_baby": "Detsk\u00e1", + "iot_dry_backpacks": "Batohy", + "iot_dry_bathrobe": "Bathrobe", + "iot_dry_bed_linen": "Poste\u013en\u00e1 bielize\u0148", + "iot_dry_bed_quilt": "Poste\u013en\u00e1 prikr\u00fdvka", + "iot_dry_cotton": "Bavlna", + "iot_dry_cuddly_toys": "Ply\u0161ov\u00e9 hra\u010dky", + "iot_dry_curtains": "Z\u00e1vesy", + "iot_dry_dehumidifier": "Odstra\u0148ova\u010d vlhkosti", + "iot_dry_delicates": "Jemn\u00e1", + "iot_dry_delicate_tablecloths": "Jemn\u00e9 obrusy", + "iot_dry_denim_jeans": "D\u017e\u00ednsovina \u2013 d\u017e\u00ednsy", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Prikr\u00fdvky", + "iot_dry_easy_iron_cotton": "Super \u013eahk\u00e9 \u017eehlenie", + "iot_dry_easy_iron_synthetics": "Super \u013eahk\u00e9 \u017eehlenie syntetiky", + "iot_dry_gym_fit": "\u0160portovn\u00e9 oble\u010denie", + "iot_dry_lingerie": "Spodn\u00e1 bielize\u0148", + "iot_dry_mixed": "Zmie\u0161an\u00e9", + "iot_dry_playsuits": "Tepl\u00e1ky", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "R\u00fdchly 59 min.", + "iot_dry_refresh": "Osvie\u017eenie", + "iot_dry_regenerates_waterproof": "O\u017eiven\u00ed nepromokav\u00fdch tkanin", + "iot_dry_relax_creases": "Uvo\u013enenie z\u00e1hybov", + "iot_dry_shirts": "Ko\u0161ele", + "iot_dry_small_load": "Mal\u00e1 n\u00e1pl\u0148", + "iot_dry_swimsuits_and_bikinis": "Plavky", + "iot_dry_synthetics": "Syntetick\u00e1", + "iot_dry_synthetic_dry": "Syntetika \u2013 su\u0161enie", + "iot_dry_tablecloths": "Obrusy", + "iot_dry_technical_fabrics": "Technick\u00e9 tkaniny", + "iot_dry_warm_embrace": "Detsk\u00e1 zavinova\u010dka", + "iot_dry_wool": "Woolmark", + "jeans": "D\u017e\u00ednsy", + "mix_and_dry": "Mix&Dry", + "pets": "Dom\u00e1ce zvierat\u00e1", + "pre_iron": "Pred \u017eehlen\u00edm", + "rapid_30": "Rapid 30", + "rapid_45": "R\u00fdchly 45 min", + "rapid_59": "Perfektne r\u00fdchly 59 min", + "refresh": "Osvie\u017eenie", + "relax_creases": "Uvo\u013enenie z\u00e1hybov", + "saving_30_min": "EKONOMICKY 30'", + "shirts": "Ko\u0161ele", + "shoes": "Obuv", + "small_load": "Mal\u00e1 n\u00e1pl\u0148", + "soft_care": "Jemn\u00e1 starostlivos\u0165", + "sport_plus": "Sportovy", + "super_easy_iron_misti": "Super \u013eahk\u00e9 \u017eehlenie pre Zmie\u0161an\u00e9", + "super_easy_iron_xxl": "Super \u013eahk\u00e9 \u017eehlenie XXL", + "super_fast_cottons": "Super r\u00fdchly bavlna", + "super_fast_delicates": "Super r\u00fdchly jemn\u00e1", + "synthetics": "Syntetick\u00e1", + "total_care": "Total Care", + "trainers": "\u0160portov\u00e1 obuv", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Obnovenie vodeodolnosti", + "whites": "Biela", + "wool": "Su\u0161enie vlny", + "woolmark": "Woolmark", + "xxl_load": "XXL n\u00e1pl\u0148", + "zoom_59": "Zoom 59" + } + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "20\u00b0 farebn\u00e9 a bavlnen\u00e9", + "20_degrees_new_energy_label": "20\u00b0C", + "active_steam": "Para", + "active_wash": "Akt\u00edvne pranie", + "active_wash_steam": "Akt\u00edvne pranie", + "allergy_care": "Antialergick\u00e9 o\u0161etrenie", + "allergy_care_pro": "Antialergick\u00e9 o\u0161etrenie Pro", + "all_in_one_49": "V\u0161etko v jednom 49 min.", + "all_in_one_59": "V\u0161etko v jednom 59 min.", + "all_in_one_59_steam": "Akt\u00edvne pranie + para", + "autocare": "Automatick\u00e1 starostlivos\u0165", + "autoclean": "\u010cistenie bubna", + "baby_60": "V\u0161etka detsk\u00e1 60\u00b0C", + "care_14": " Starostlivost 14'", + "care_30": " Starostlivost 30'", + "care_44": "Starostlivost 44'", + "checkup": "Kontrola", + "colour_59": "Farebn\u00e1 59'", + "colour_59_steam": "Farebn\u00e1 bielize\u0148 59' + Para", + "cottons": "Bavlna", + "cottons_prewash": "Bavlna + Predpierka", + "cottons_steam": "Bavlna + Para", + "cotton_care_59": "Bavlna 59 Min", + "delicate_59": "Jemn\u00e9 materi\u00e1ly 59 min.", + "delicate_silk": "Jemn\u00fd hodv\u00e1b", + "delicate_silk_steam": "Jemn\u00fd hodv\u00e1b + Para", + "delicati_59": "Jemn\u00e9 materi\u00e1ly 59 min.", + "delicati_59_steam": "Jemn\u00e9 materi\u00e1ly 59 min.", + "drain_spin": "Vyp\u00fa\u0161\u0165anie a odstre\u010fovanie", + "easy_iron": "Jednoduch\u00e9 \u017eehlenie", + "eco_40_60_new_energy_label": "Eco 40 \u2013 60", + "extra_care": "Extra Starostlivost", + "fitness": "Fitnes", + "fitness_care": "Fitnes", + "fresh_care": "Svie\u017ea starostlivos\u0165", + "fresh_care_steam": "Fresh Care + Para", + "handwash_wool": "Pranie v ruk\u00e1ch a vlna", + "high_dry": "Bavlna such\u00e1", + "hqd_20_degrees": "Bavlna 20 \u2103", + "hqd_allergy": "Antialergick\u00e9 o\u0161etrenie", + "hqd_autoclean": "\u010cistenie bubna", + "hqd_babycare": "Detsk\u00e1 starostlivos\u0165", + "hqd_checkup": "Kontrola", + "hqd_cottons": "Bavlna", + "hqd_delicate": "Jemn\u00e9 materi\u00e1ly", + "hqd_delicate_cradle": "Jemn\u00e9 materi\u00e1ly", + "hqd_dry": "Bavlna such\u00e1", + "hqd_dry_synthetics": "Zmie\u0161an\u00e9 such\u00e9", + "hqd_duvet": "Prikr\u00fdvky", + "hqd_eco_40_60_degrees": "Eco 40 \u2013 60", + "hqd_handwash_wool": "Vlna", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "Zmie\u0161an\u00e9", + "hqd_quick_15": "R\u00fdchly 15 min.", + "hqd_quick_wash_57": "R\u00fdchle pranie 57 min.", + "hqd_rapid_wash_and_dry": "Pranie a su\u0161enie", + "hqd_refresh": "Osvie\u017eenie", + "hqd_rinse": "Oplachovanie", + "hqd_shirts": "Ko\u0161ele", + "hqd_smart": "Smart A.I.", + "hqd_spin": "Odstre\u010fovanie", + "hqd_sport": "\u0160port", + "hqd_super_fast": "R\u00fdchly 39 min.", + "hqd_synthetic_and_coloured": "Syntetika", + "hygiene_59": "Hygiena Plus 59'", + "hygiene_60": "Hygiena 60\u00b0", + "hygiene_plus_59": "Hygiena Plus 59'", + "hygiene_plus_59_min": "Hygiena Plus 59'", + "hygiene_pro _49_min": "Hygiene Pro 49 '", + "hygiene_pro_49_min": "Hygiene Pro 49 min", + "hygiene_pro_steam": "Hygiene Pro + para", + "intensive_40": "Intenz\u00edvne pranie 40\u00b0C", + "intensive_40_steam": "Intensive 40\u00b0C + Para", + "iot_active_steam": "Para", + "iot_active_wash_steam": "Akt\u00edvne pranie", + "iot_allergy_care_pro": "Antialergick\u00e9 o\u0161etrenie Pro", + "iot_all_in_one_59_steam": "Akt\u00edvne pranie + para", + "iot_checkup": "Kontrola", + "iot_colour_59_steam": "Farebn\u00e1 bielize\u0148 59' + Para", + "iot_cottons_steam": "Bavlna + Para", + "iot_delicate_silk_steam": "Jemn\u00fd hodv\u00e1b + Para", + "iot_delicati_59_steam": "Jemn\u00e9 materi\u00e1ly 59 min.", + "iot_dry_air_refresh": "Prevzdu\u0161nenie", + "iot_dry_anti_mites": "Proti rozto\u010dom", + "iot_dry_baby": "Odevy pre bato\u013ea", + "iot_dry_backpacks": "Plecniaky", + "iot_dry_bathrobe": "\u017dupany a por\u00e9zne tkaniny", + "iot_dry_bed_linen": "Poste\u013en\u00e9 oblie\u010dky", + "iot_dry_cotton_dry": "Bavlna such\u00e1", + "iot_dry_cuddly_toys": "Ply\u0161ov\u00e9 zvieratk\u00e1", + "iot_dry_curtains": "Z\u00e1clony", + "iot_dry_dehumidifier": "Odstra\u0148ova\u010d vlhkosti", + "iot_dry_delicates_antiallergy": "Jemn\u00e9 materi\u00e1ly \u2013 antialergick\u00fd program", + "iot_dry_delicate_tablecloths": "Obrusy z jemn\u00fdch materi\u00e1lov", + "iot_dry_denim_jeans": "D\u017e\u00ednsovina \u2013 d\u017e\u00ednsy", + "iot_dry_easy_iron_cotton": "Jednoduch\u00e9 \u017eehlenie \u2013 bavlna", + "iot_dry_easy_iron_synthetics": "Jednoduch\u00e9 \u017eehlenie \u2013 syntetika", + "iot_dry_gym_fit": "Oble\u010denie do telocvi\u010dne a posil\u0148ovne", + "iot_dry_lingerie": "Spodn\u00e1 bielize\u0148", + "iot_dry_mixed_dry": "Zmie\u0161an\u00e9 such\u00e9", + "iot_dry_rapid_60_min_delicates": "R\u00fdchly 60 min. \u2013 jemn\u00e9 materi\u00e1ly", + "iot_dry_shirts": "Ko\u0161ele", + "iot_dry_swimsuits_and_bikinis": "Plavky", + "iot_dry_synthetics": "Syntetika \u2013 su\u0161enie", + "iot_dry_synthetic_dry": "Syntetika \u2013 su\u0161enie", + "iot_dry_tablecloths": "Obrusy", + "iot_dry_technical_fabrics": "Technick\u00e9 tkaniny", + "iot_dry_warm_embrace": "Tepl\u00e9 bubnov\u00e9 su\u0161enie", + "iot_dry_wool_dry": "Vlna such\u00e1", + "iot_easy_iron": "Jednoduch\u00e9 \u017eehlenie", + "iot_fresh_care_steam": "Fresh Care + Para", + "iot_hygiene_pro_steam": "Hygiene Pro + para", + "iot_intensive_40_steam": "Intensive 40\u00b0C + Para", + "iot_mixed_steam": "Zmie\u0161an\u00e9 + Para", + "iot_mix_and_colour_59_steam": "Zmie\u0161an\u00e9 a Farebn\u00e9 59' + Para", + "iot_perfect_cotton_59_steam": "Cista Bavlna 59'", + "iot_rapid_a_class_60_steam": "R\u00fdchly Trieda A 60 + Para", + "iot_resistant_cotton_steam": "Bavlna + Para", + "iot_shirts_steam": "Ko\u0161ele + para", + "iot_single_item_steam": "Jedna polo\u017eka + Para", + "iot_smart_wash": "Smart Wash", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "\u0160peci\u00e1l 39' + Para", + "iot_steam_hygiene_plus": "Para Hygiene Plus ", + "iot_synthetic_and_coloured_steam": "Syntetika a farebn\u00e9 materi\u00e1ly + para", + "iot_wash_and_dry": "Pranie a su\u0161enie", + "iot_wash_anti_mites": "Proti rozto\u010dom", + "iot_wash_anti_odor": "Odstr\u00e1nenie z\u00e1pachu", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "Dezinfekcia", + "iot_wash_baby_sanitizer_steam": "Dezinfek\u010dn\u00fd pre odevy pre bato\u013ea + Para", + "iot_wash_backpacks": "Plecniaky", + "iot_wash_backpacks_zelig": "Batohy", + "iot_wash_bathrobe": "\u017dupany a uter\u00e1ky", + "iot_wash_bathrobe_steam": "\u017dupan + Para", + "iot_wash_bed_linen": "Poste\u013en\u00e9 oblie\u010dky", + "iot_wash_bed_linen_steam": "Poste\u013en\u00e9 oblie\u010dky + Para", + "iot_wash_bed_linen_zelig": "Poste\u013en\u00e9 oblie\u010dky", + "iot_wash_big_single_load": "Ve\u013ek\u00e1 jednorazov\u00e1 n\u00e1pl\u0148", + "iot_wash_bleaching": "Bielenie", + "iot_wash_blood_stains": "Krvav\u00e9 \u0161kvrny", + "iot_wash_cashmere": "Ka\u0161m\u00edr", + "iot_wash_chocolate_stains": "\u010cokol\u00e1dov\u00e9 \u0161kvrny", + "iot_wash_cold_wash": "Studen\u00e9 pranie", + "iot_wash_colored": "Farebn\u00e9", + "iot_wash_colored_anti_stain": "Odstra\u0148ovanie \u0161kv\u0155n z farebn\u00fdch materi\u00e1lov", + "iot_wash_colored_delicate": "Farebn\u00e9 ch\u00falostiv\u00e9", + "iot_wash_coloured": "Farebn\u00e9", + "iot_wash_coloured_bed_linen": "Farebn\u00e9 poste\u013en\u00e9 oblie\u010dky", + "iot_wash_coloured_bed_linen_steam": "Farebn\u00e9 poste\u013en\u00e9 oblie\u010dky + Para", + "iot_wash_coloured_curtains": "Farebn\u00e9 z\u00e1vesy", + "iot_wash_coloured_shirts": "Farebn\u00e9 ko\u0161ele", + "iot_wash_coloured_shirts_steam": "Farebn\u00e9 ko\u0161ele + Para", + "iot_wash_coloured_steam": "Farebn\u00e9 + Para", + "iot_wash_coloured_tableclothes": "Farebn\u00e9 obrusy", + "iot_wash_coloured_tableclothes_steam": "Farebn\u00e9 obrusy + Para", + "iot_wash_cotton": "Bavlna", + "iot_wash_cotton_steam": "Bavlna + Para", + "iot_wash_cuddly_toys": "Ply\u0161ov\u00e9 zvieratk\u00e1", + "iot_wash_curtains": "Z\u00e1clony", + "iot_wash_curtains_steam": "Z\u00e1clony+Para", + "iot_wash_curtains_zelig": "Z\u00e1clony", + "iot_wash_dark": "Tmav\u00e9 odevy", + "iot_wash_darks_and_coloured_44": "Tmav\u00e9 a farebn\u00e9 44 min.", + "iot_wash_darks_and_coloured_59": "Tmav\u00e9 a farebn\u00e9 59 min.", + "iot_wash_darks_and_coloured_xl": "Tmav\u00e9 a farebn\u00e9 XL", + "iot_wash_dark_steam": "Tmav\u00e9 odevy + Para", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "Jemn\u00e9 materi\u00e1ly", + "iot_wash_delicate_antiallergy": "Antialergick\u00fd program pre jemn\u00e9 materi\u00e1ly", + "iot_wash_delicate_antiallergy_steam": "Antialergick\u00fd program pre jemn\u00e9 materi\u00e1ly + Para", + "iot_wash_delicate_antiallergy_zelig": "Antialergick\u00fd program pre jemn\u00e9 materi\u00e1ly", + "iot_wash_delicate_colors": "Farebn\u00e9 jemn\u00e9 materi\u00e1ly", + "iot_wash_delicate_colors_steam": "Farebn\u00e1 bielize\u0148 + Para", + "iot_wash_delicate_dark": "Ch\u00falostiv\u00e9 tmav\u00e9", + "iot_wash_delicate_steam": "Jemn\u00e9 materi\u00e1ly + Para", + "iot_wash_delicate_tablecloths": "Obrusy z jemn\u00fdch materi\u00e1lov", + "iot_wash_delicate_tablecloths_steam": "Obrusy z\u00a0jemn\u00fdch materi\u00e1lov + Para", + "iot_wash_delicate_whites": "Ch\u00falostiv\u00e9 biele", + "iot_wash_denim_jeans": "D\u017e\u00ednsovina \u2013 d\u017e\u00ednsy", + "iot_wash_diving_suits": "Pot\u00e1pa\u010dsk\u00e9 obleky", + "iot_wash_diving_suits_zelig": "Pot\u00e1pa\u010dsk\u00e9 obleky", + "iot_wash_down_jackets": "Pre\u0161\u00edvan\u00e9 bundy", + "iot_wash_down_jackets_zelig": "Pre\u0161\u00edvan\u00e9 bundy", + "iot_wash_duvet": "Prikr\u00fdvky", + "iot_wash_fruit_stains": "Ovocn\u00e9 \u0161kvrny", + "iot_wash_gym_fit": "Oble\u010denie do telocvi\u010dne a posil\u0148ovne", + "iot_wash_handwash": "Prepieranie", + "iot_wash_handwash_colored": "Prepieranie farebn\u00e9ho", + "iot_wash_handwash_dark": "Prepieranie tmav\u00e9ho", + "iot_wash_lingerie": "Spodn\u00e1 bielize\u0148", + "iot_wash_masks_refresh": "Osvie\u017eenie r\u00fa\u0161ok", + "iot_wash_masks_sanification": "Dezinfekcia r\u00fa\u0161ok", + "iot_wash_masks_sanification_steam": "Dezinfekcia r\u00fa\u0161ok + Para", + "iot_wash_mats": "Roho\u017ee", + "iot_wash_men_s_trousers": "Nohavice", + "iot_wash_mixed": "Zmie\u0161an\u00e9", + "iot_wash_mixed_steam": "Zmie\u0161an\u00e9 + Para", + "iot_wash_mix_and_coloured_44": "Zmie\u0161an\u00e9 a\u00a0farebn\u00e9 44\u00a0min.", + "iot_wash_mix_and_coloured_59": "Zmie\u0161an\u00e9 a\u00a0farebn\u00e9 59\u00a0min.", + "iot_wash_mix_and_coloured_xl": "Zmie\u0161an\u00e9 a farebn\u00e9 XL", + "iot_wash_new_clothes": "Nov\u00e9 oble\u010denie", + "iot_wash_perfect_white": "Dokonal\u00e1 biela", + "iot_wash_perfect_white_steam": "Dokonal\u00e1 biela + Para", + "iot_wash_pets": "Doplnky pre dom\u00e1cich mil\u00e1\u010dikov", + "iot_wash_pets_hair_removal": "Odstr\u00e1nenie ch\u013apkov z dom\u00e1cich mil\u00e1\u010dikov", + "iot_wash_pets_odours_stains_removal": "Odstra\u0148ovanie z\u00e1pachu a \u0161kv\u0155n po dom\u00e1cich zvierat\u00e1ch", + "iot_wash_pets_steam": "Doplnky pre dom\u00e1cich mil\u00e1\u010dikov", + "iot_wash_playsuits": "Overaly", + "iot_wash_playsuits_steam": "Overaly + Para", + "iot_wash_quick_drum_cleaner": "R\u00fdchly \u010disti\u010d bubna", + "iot_wash_rapid_14": "R\u00fdchly 14 min.", + "iot_wash_rapid_30": "R\u00fdchly 30 min.", + "iot_wash_rapid_44": "R\u00fdchly 44 min.", + "iot_wash_rapid_59": "R\u00fdchly 59 min", + "iot_wash_rapid_59_steam": "R\u00fdchly 59' + Para", + "iot_wash_refresh_14_min": "Osvie\u017eenie 14'.", + "iot_wash_resistant_colored": "Odoln\u00e9 farebn\u00e9", + "iot_wash_resistant_dark": "Odoln\u00e9 tmav\u00e9", + "iot_wash_resistant_whites": "Odoln\u00e9 biele", + "iot_wash_rinse": "Oplachovanie", + "iot_wash_shirts": "Ko\u0161ele", + "iot_wash_shirts_steam": "Ko\u0161ele + Para", + "iot_wash_silk": "Hodv\u00e1b", + "iot_wash_ski_suit": "Ly\u017eiarske odevy", + "iot_wash_ski_suit_zelig": "Ly\u017eiarske odevy", + "iot_wash_spin": "Odstre\u010fovanie", + "iot_wash_sport": "\u0160port", + "iot_wash_sport_anti_odor": "\u0160portov\u00e9 oble\u010denie", + "iot_wash_sport_anti_odor_zelig": "\u0160portov\u00e9 oble\u010denie", + "iot_wash_stains_remover": "Odstra\u0148ovanie \u0161kv\u0155n", + "iot_wash_swimsuits_and_bikinis": "Plavky", + "iot_wash_synthetic": "Syntetika", + "iot_wash_synthetic_steam": "Syntetika + Para", + "iot_wash_tablecloths": "Obrusy", + "iot_wash_tablecloths_steam": "Obrusy + Para", + "iot_wash_technical_fabrics": "Technick\u00e9 tkaniny", + "iot_wash_technical_fabrics_zelig": "Technick\u00e9 tkaniny", + "iot_wash_technical_jackets": "Technick\u00e9 bundy", + "iot_wash_technical_jackets_zelig": "Technick\u00e9 bundy", + "iot_wash_trainers": "Tenisky", + "iot_wash_whites": "Biele", + "iot_wash_whites_44": "Biele 44 min.", + "iot_wash_whites_59": "Biele 59 min.", + "iot_wash_whites_xl": "Biele XL", + "iot_wash_wine_stains": "\u0160kvrny od v\u00edna", + "iot_wash_wool": "Vlna", + "jeans": "D\u017e\u00ednsy", + "jeans_60": "D\u017e\u00ednsy", + "low_dry": "Zmie\u0161an\u00e9 such\u00e9", + "mixed": "Zmie\u0161an\u00e9", + "mixed_and_colored_59": "Zmie\u0161an\u00e9 a farebn\u00e9 59 min.", + "mixed_steam": "Zmie\u0161an\u00e9 + Para", + "mix_and_colour_59": "Zmiesana + Farebna 59'", + "mix_and_colour_59_steam": "Zmie\u0161an\u00e9 a Farebn\u00e9 59' + Para", + "night_and_day": "Noc a de\u0148", + "night_wash": "No\u010dn\u00fd cyklus", + "perfect_59": "Dokonal\u00e9 vypranie 59 min.", + "perfect_cotton_59": "Cista Bavlna 59'", + "perfect_cotton_59_steam": "Cista Bavlna 59'", + "perfect_whites_59": "Dokonale biele 59'", + "rapid_14_min": "R\u00fdchly 14'", + "rapid_30_min": "R\u00fdchly 30'", + "rapid_44_min": "R\u00fdchly 44'", + "rapid_a_class_60": "R\u00fdchly Trieda A 60", + "rapid_a_class_60_steam": "R\u00fdchly Trieda A 60 + Para", + "rapid_wash_and_dry_59_min": "Pranie a su\u0161enie 59 min.", + "resistant_cotton": "Bavlna", + "resistant_cotton_steam": "Bavlna + Para", + "rinse": "Oplachovanie", + "shirts_steam": "Ko\u0161ele + para", + "silent_night": "No\u010dn\u00fd cyklus", + "single_item": "Jedna polo\u017eka", + "single_item_steam": "Jedna polo\u017eka + Para", + "smart_wash": "Smart Wash", + "soft_care": "Jemn\u00e1 starostlivos\u0165", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "Special 39'", + "special_39_full_load": "Special 39'", + "special_39_full_load_steam": "\u0160peci\u00e1l 39' + Para", + "special_49": "\u0160peci\u00e1lne 49 min.", + "sport_39": "\u0160port 39 min.", + "sport_plus_29": "Sport Plus 29\"", + "sport_plus_39": "Sport Plus 39'", + "steam_39": "Para 39 min.", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro - bavlna", + "steam_care_pro_delicates": "Steam Care Pro - jemn\u00e9", + "steam_care_pro_synthetic": "Steam Care Pro - syntetika", + "steam_hygiene_plus": "Para Hygiene Plus ", + "synthetics": "Syntetika", + "synthetic_and_coloured": "Syntetika a farebn\u00e9 materi\u00e1ly", + "synthetic_and_coloured_steam": "Syntetika a farebn\u00e9 materi\u00e1ly + para", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "Celkov\u00e1 starostlivos\u0165", + "tumbling": "Bubnov\u00e9 su\u0161enie", + "wool": "Vlna", + "wool_and_delicates_49": "Vlna/Jemn\u00e9 49'", + "wool_dry": "Vlna such\u00e1", + "wool_soft_care": "Vlna & M\u00e4kk\u00e1 starostlivost" + } + } } } } \ No newline at end of file diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index ddbf692..7a6f6b1 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -66,6 +66,650 @@ "6": "Hot rinse" } } + }, + "select": { + "programs_dw": { + "state": { + "59_min": "Hitri progr. 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "Samodejno univerzalno 50\u201360 \u00b0C", + "auto_universal_plus": "Samodejno univerzalno+ 65\u201375 \u00b0C", + "auto_universal_plus_soil": "Samodejno univerzalno+ 65\u201375 \u00b0C", + "auto_universal_soil": "Samodejno univerzalno 50\u201360 \u00b0C", + "auto_wash": "Samodejno pomivanje", + "auto_wash_soil": "Samodejno pomivanje", + "classe_a_59": "Razred A 59 min. 65 \u00b0C", + "delicate": "Ob\u010dutljivo 45 \u00b0C", + "dishwasher_care": "Cikel odstranjevanja vodnega kamna", + "eco": "Var\u010dno", + "eco_asynch": "Eko 45 \u00b0C", + "eco_bldc": "Eko 45 \u00b0C", + "eco_synch": "Eko 45 \u00b0C", + "gentle_wash": "Gentle wash", + "glass": "Kozarci", + "glass _care": "Glass Care", + "glassware": "Steklo 45 \u00b0C", + "glass_care": "Glass Care", + "hygiene": "Higiena", + "hygiene_plus": "Higiena + 75 \u00b0C", + "intensive": "Intenzivno ", + "intensive_rapid": "Hitro in intenzivno", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "Samodejno univerzalno 50\u201360 \u00b0C", + "iot_auto_wash_soil": "Samodejno pranje", + "iot_baby_care": "Otro\u0161ka posoda", + "iot_breakfast": "Zajtrk", + "iot_checkup": "Pregled", + "iot_china_crystals": "Kristal", + "iot_classe_a_59": "Hitri progr. 59'", + "iot_cocktail_glasses": "Koktajl kozarci", + "iot_cocktail_glasses_soil": "Koktajl kozarci", + "iot_daily_care": "Dnevna nega", + "iot_daily_care_soil": "Dnevna nega", + "iot_delicate": "Ob\u010dutljivo 45 \u00b0C", + "iot_dinner_for_two": "Ve\u010derja v dvoje", + "iot_dinner_for_two_soil": "Ve\u010derja v dvoje", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "Var\u010dno 45 \u00b0C", + "iot_eco_bldc": "Var\u010dno 45 \u00b0C", + "iot_eco_synch": "Var\u010dno 45 \u00b0C", + "iot_extra_hygiene": "Visoka stopnja higiene", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "Zakuska", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "Zabava", + "iot_party_soil": "Zabava", + "iot_pizza_menu": "Pica program", + "iot_pizza_menu_soil": "Pica program", + "iot_plastic_tupperware": "Plastika in posode za \u017eivila", + "iot_porcelain": "Porcelan", + "iot_pot_&_pans": "Lonci in kozice", + "iot_pot_&_pans_soil": "Lonci in kozice", + "iot_power_mix_wash": "Intenzivni za razli\u010dno posodo", + "iot_power_mix_wash_soil": "Intenzivni za razli\u010dno posodo", + "iot_prewash": "Predpranje", + "iot_pyrex_and_glassware": "Pyrex in steklenina", + "iot_rapid_29": "Hitro 29'", + "iot_rapid_39": "Rapid 39' 60 \u00b0C", + "iot_single": "Samsko \u017eivljenje", + "iot_steam": "Para 75 \u00b0C", + "iot_super_flash": "Super hitro", + "iot_super_wash": "Super pomivanje", + "iot_turbopower": "Turbo mo\u010d", + "iot_universal": "Univerzalno 60 \u00b0C", + "iot_wok_grids_maxi_pans": "Posebna posoda (voki, re\u0161etke in velike kozice)", + "iot_wok_grids_maxi_pans_soil": "Posebna posoda (voki, re\u0161etke in velike kozice)", + "iot_yes_quick_cycle": "Yes Quick", + "night": "Zelo tiho 55 \u00b0C", + "prewash": "Predpranje", + "rapid_20": "Kratki progr. 20'", + "rapid_24": "Hitro 24'", + "rapid_29": "Hitro 29' 50\u00b0C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "Rapid 39' 60 \u00b0C", + "rapid_49": "Kratki progr. 49'", + "rapid_59": "Hitri progr. 59'", + "sanitising": "Dezinfekcija", + "silence": "Silence", + "silent": "No\u010d", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "special": "posebno", + "special_pw_prz": "Posebno", + "steam": "Para 75 \u00b0C", + "steam_plus": "Para Plus 75\u00b0C", + "total_care": "Total Care 50\u00b0C", + "ultra_silence": "Zelo tiho 55 \u00b0C", + "ultra_silent": "Zelo tiho 55 \u00b0C", + "universal": "Univerzalno 60 \u00b0C", + "universal_plus": "Univerzalni Plus 70 \u00b0C", + "zoom_39": "Zoom 39 min" + } + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "Pepelnato rjava", + "iot_special_beef_fillet": "Goveji file", + "iot_special_beef_veal_stew": "Goveja in tele\u010dja obara", + "iot_special_boiled_rice": "Kuhan ri\u017e", + "iot_special_chicken_breast": "Pi\u0161\u010dan\u010dje prsi", + "iot_special_chicken_legs": "Pi\u0161\u010dan\u010dja bedra", + "iot_special_chocolate_pudding": "\u010cokoladni puding", + "iot_special_entrecote": "Zrezek Entrecote", + "iot_special_fresh_tuna": "Sve\u017ea tuna", + "iot_special_grilled_vegetables": "Zelenjava na \u017earu", + "iot_special_lamb_cutlet": "Jagnje\u010dji kotlet", + "iot_special_meatballs": "Mesne kroglice", + "iot_special_minestrone": "Mine\u0161tra", + "iot_special_mussels": "Morske \u0161koljke", + "iot_special_omelette": "Omleta", + "iot_special_pancakes": "Pala\u010dinke", + "iot_special_paris_style_peas": "Grah na pari\u0161ki na\u010din", + "iot_special_poached_eggs": "Pe\u010dena jajca", + "iot_special_pork_fillet": "Svinjski file", + "iot_special_pork_ribs": "Svinjska rebrca", + "iot_special_prawns": "Kozice", + "iot_special_quinoa": "Kvinoja", + "iot_special_ratatouille": "Ratatouille", + "iot_special_salmon_fillet": "Lososov file", + "iot_special_saute_potatoes": "Sotiran krompir", + "iot_special_scallops": "Pokrova\u010de", + "iot_special_scrambled_eggs": "Vme\u0161ana jajca", + "iot_special_spelt": "Pira", + "iot_special_veggy_noodles": "Vegetarijanski rezanci", + "iot_special_white_fish_fillet": "File bele ribe", + "iot_standard_boiling": "Vretje", + "iot_standard_frying": "Cvrtje", + "iot_standard_keep_warm": "Ohranjanje toplote", + "iot_standard_melting": "Taljenje", + "iot_standard_simmering": "Rahlo vretje" + } + }, + "programs_ov": { + "state": { + "bakery": "Testenine in pekovski izdelki", + "bakery_steam": "V sopari pe\u010den kruh", + "bottom_heating": "Spodnji grelnik", + "bottom_heating_fan": "Spodnji grelnik + Ventilator", + "bread": "Kruh", + "bread_steam": "V sopari pe\u010deno pecivo", + "convection_fan": "Konvekcija + ventilator", + "convection_fan_turnspit": "Konvekcija + ventilator + ra\u017eenj", + "conventional": "Konvenkcijsko", + "conventional_turnspit": "Konvekcija + ra\u017eenj", + "defrost": "Odmrzovanje", + "descaling": "Odstranjevanje vodnega kamna", + "fish": "Ribe", + "fish_steam": "Soparjene ribe", + "grill_cata": "\u017dar", + "grill_fan_cata": "\u017dar in ventilator", + "grill_fan_pyro": "\u017dar + ventilator", + "grill_pyro": "\u017dar", + "h20_clean": "H2O-Clean", + "iot_bread": "Kruh", + "iot_h20_clean": "h2O clean", + "leavening": "Vzhajanje", + "low_temp_cooking": "Priprava pri nizki temperaturi", + "low_temp_cooking_fish": "Priprava pri nizki temperaturi \u2013 ribe", + "low_temp_cooking_fish_steam": "Soparjenje pri nizki temperaturi \u2013 ribe", + "low_temp_cooking_meat": "Priprava pri nizki temperaturi \u2013 meso", + "low_temp_cooking_meat_steam": "Soparjenje pri nizki temperaturi \u2013 meso", + "low_temp_cooking_steam": "Soparjenje pri nizki temperaturi", + "meat": "Meso", + "meat_steam": "Soparjeno meso", + "multi_level": "Na ve\u010d nivojih", + "paella": "Paella", + "pasta_and_bakery": "Testenine in pekovski izdelki", + "pizza": "Pizza", + "pyrolysis": "Piroliza", + "pyrolysis_plus": "Piroliza +", + "red_meat": "Rde\u010de meso", + "red_meat_steam": "Soparjeno rde\u010de meso", + "regenerate": "Obnavljanje", + "soft_plus": "Soft+", + "super_grill": "Super Grill", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_desctiption": "Ta funkcija je idealna za pripravo jedi, ki so mehke znotraj in hrustljave zunaj.\r\r\r\r\r\nTa funkcija zmanj\u0161a koli\u010dino ma\u0161\u010dob ali olja, potrebnega za zdravo prehrano.\r\r\r\r\r\nKombinacija grelnih elementov in pulziraji\u010dega ciklusa\r\r\r\r\r\nzraka zagotavlja popolne rezultate peke.", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Zelenjava", + "vegetables_cata": "Zelenjava", + "vegetables_pyro": "Zelenjava", + "water_discharge": "Odtok za vodo", + "white_meat": "Belo meso", + "white_meat_steam": "Soparjeno belo meso" + } + }, + "programs_td": { + "state": { + "active_dry": "Aktivno su\u0161enje", + "allergy_care": "Protialergijski", + "all_in_one": "Vse hkrati", + "antiallergy": "Protialergijski", + "anti_odours": "Odstranjevanje vonjav", + "auto_care": "Samodejna nega", + "baby": "Obla\u010dila dojen\u010dkov", + "bed_quilt": "Pre\u0161ite odeje", + "care_30": "Nega 30 min", + "care_45": "Nega 45 min", + "care_59": "Nega 59 min", + "coloured": "Barvno", + "daily_45_min": "DNEVNO 45 min", + "daily_perfect_59_min": "DNEVNO POPOLNO 59 min", + "darks_and_coloured": "Temno in barvno", + "delicates": "Ob\u010dutljivo perilo", + "duvet": "Pre\u0161ite odeje", + "eco": "Eko bomba\u017e", + "ecospeed_cottons": "Eko hitri za bomba\u017e", + "ecospeed_delicates": "Eko hitri za ob\u010dutljivo", + "ecospeed_mixed": "Eko hitri za me\u0161ano", + "extra_hygiene": "DODATNA HIGIENA", + "fitness": "Fitnes", + "fresh_care": "Nega za sve\u017eino", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Brisa\u010de", + "hqd_bed_sheets": "Rjuhe", + "hqd_bulky": "Ve\u010dji kosi", + "hqd_casual": "Za prosti \u010das", + "hqd_cold_wind_30": "Hladen vetri\u010d 30 minut", + "hqd_cold_wind_timing": "Hladen vetri\u010d ", + "hqd_cotton": "Bomba\u017e", + "hqd_curtain": "Zavese", + "hqd_delicate": "Ob\u010dutljive tkanine", + "hqd_diaper": "Plenice", + "hqd_duvet": "Pre\u0161ite odeje", + "hqd_feather": "Puhovke", + "hqd_hot_wind_timing": "Vro\u010d zrak", + "hqd_hygienic": "Higienizacija", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Suknji\u010di", + "hqd_jeans": "Kavbojke", + "hqd_luxury": "Luxury", + "hqd_mix": "Me\u0161ano", + "hqd_night_dry": "Su\u0161enje \u010dez no\u010d", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Hitro 20", + "hqd_quick_30": "Hitro 30", + "hqd_quick_dry": "Hitro su\u0161enje", + "hqd_quilt": "Posteljna pregrinjala", + "hqd_refresh": "Osve\u017eitev", + "hqd_school_uniform": "\u0160olska uniforma", + "hqd_shirt": "Srajce", + "hqd_shoes": "Obuvala", + "hqd_silk": "Svila", + "hqd_sports": "\u0160port", + "hqd_synthetics": "Sintetika", + "hqd_timer": "\u010casovno", + "hqd_towel": "Brisa\u010de", + "hqd_underwear": "Spodnje perilo", + "hqd_warm_up": "Pogrevanje", + "hqd_wool": "Volna", + "hqd_working_suit": "Delovna obla\u010dila", + "hygiene": "Higiena", + "iot_checkup": "Pregled", + "iot_dry_anti_mites": "Proti pr\u0161icam", + "iot_dry_baby": "Obla\u010dila dojen\u010dkov", + "iot_dry_backpacks": "Nahrbtniki", + "iot_dry_bathrobe": "Kopalni pla\u0161\u010d", + "iot_dry_bed_linen": "Posteljnina", + "iot_dry_bed_quilt": "Pre\u0161ite odeje", + "iot_dry_cotton": "Bomba\u017e", + "iot_dry_cuddly_toys": "Pli\u0161aste igra\u010dke", + "iot_dry_curtains": "Zavese", + "iot_dry_dehumidifier": "Odstranjevalec vlage", + "iot_dry_delicates": "Ob\u010dutljivo", + "iot_dry_delicate_tablecloths": "Ob\u010dutljivi namizni prti", + "iot_dry_denim_jeans": "Denim \u2013 jeans", + "iot_dry_down_jacket": "Suknji\u010di", + "iot_dry_duvet": "Pre\u0161ite odeje", + "iot_dry_easy_iron_cotton": "Super la\u017eje likanje", + "iot_dry_easy_iron_synthetics": "Super la\u017eje likanje sintetike", + "iot_dry_gym_fit": "Obla\u010dila za telovadbo in fitnes", + "iot_dry_lingerie": "Spodnje perilo", + "iot_dry_mixed": "Me\u0161ano", + "iot_dry_playsuits": "Pajaci", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Hitro 59\u2019", + "iot_dry_refresh": "Osve\u017eitev", + "iot_dry_regenerates_waterproof": "Obnovitev nepremo\u010dljivih obla\u010dil", + "iot_dry_relax_creases": "Meh\u010danje gub", + "iot_dry_shirts": "Srajce", + "iot_dry_small_load": "Malo perila", + "iot_dry_swimsuits_and_bikinis": "Kopalke", + "iot_dry_synthetics": "Sintetika", + "iot_dry_synthetic_dry": "Su\u0161enje sintetike", + "iot_dry_tablecloths": "Namizni prti", + "iot_dry_technical_fabrics": "Tehni\u010dne tkanine", + "iot_dry_warm_embrace": "Mehkoba", + "iot_dry_wool": "Woolmark", + "jeans": "D\u017eins", + "mix_and_dry": "Su\u0161enje \u2013 me\u0161ana sestava", + "pets": "Hi\u0161ne \u017eivali", + "pre_iron": "Pred likanjem", + "rapid_30": "Rapid 30", + "rapid_45": "Hitri 45 min", + "rapid_59": "Popolni hitri program 59 min.", + "refresh": "Osve\u017eitev", + "relax_creases": "Meh\u010danje gub", + "saving_30_min": "EKO 30 min", + "shirts": "Srajce", + "shoes": "Obuvala", + "small_load": "Malo perila", + "soft_care": "Nega za mehkobo", + "sport_plus": "\u0160portna oblacila", + "super_easy_iron_misti": "Super la\u017eje likanje me\u0161anih tkanin", + "super_easy_iron_xxl": "Super la\u017eje likanje XXL", + "super_fast_cottons": "Super hitri za bomba\u017e", + "super_fast_delicates": "Super hitri za ob\u010dutljivo", + "synthetics": "Sintetika", + "total_care": "Total Care", + "trainers": "\u0160portna obutev", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Obnovitev nepremo\u010dljivih obla\u010dil", + "whites": "Belo", + "wool": "Su\u0161enje volne", + "woolmark": "Woolmark", + "xxl_load": "Zelo veliki kosi perila", + "zoom_59": "Zoom 59" + } + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "20\u00b0 pisano in bomba\u017e", + "20_degrees_new_energy_label": "20\u00b0C", + "active_steam": "Para", + "active_wash": "Aktivno pranje", + "active_wash_steam": "Aktivno pranje", + "allergy_care": "Nega proti alergijam", + "allergy_care_pro": "Nega proti alergijam Pro", + "all_in_one_49": "Vse v enem 49'.", + "all_in_one_59": "Vse v enem 59'.", + "all_in_one_59_steam": "Aktivno pranje + para", + "autocare": "Samodejna nega", + "autoclean": "\u010ci\u0161\u010denje bobna", + "baby_60": "Vsa otro\u0161ka obla\u010dila 60 \u00b0C", + "care_14": "Rapid Care 14'", + "care_30": "Rapid Care 30'", + "care_44": "Rapid Care 44'", + "checkup": "Preveri", + "colour_59": "Barvno 59'", + "colour_59_steam": "Barvno perilo 59' + para", + "cottons": "Bomba\u017e", + "cottons_prewash": "Bomba\u017e + predpranje", + "cottons_steam": "Bomba\u017e + Para", + "cotton_care_59": "Bomba\u017e 59 min.", + "delicate_59": "Ob\u010dutljivo 59'", + "delicate_silk": "Ob\u010dutljiva svila", + "delicate_silk_steam": "Ob\u010dutljiva svila + para", + "delicati_59": "Ob\u010dutljivo 59'", + "delicati_59_steam": "Ob\u010dutljivo 59'", + "drain_spin": "Izpiranje in o\u017eemanje", + "easy_iron": "La\u017eje likanje", + "eco_40_60_new_energy_label": "Eco 40-60", + "extra_care": "Dodatna Nega", + "fitness": "Fitness", + "fitness_care": "Fitness", + "fresh_care": "Nega za sve\u017eino", + "fresh_care_steam": "Nega za sve\u017eino + para", + "handwash_wool": "Ro\u010dno pranje in volna", + "high_dry": "Su\u0161enje bomba\u017ea", + "hqd_20_degrees": "Bomba\u017e 20\u2103", + "hqd_allergy": "Nega proti alergijam", + "hqd_autoclean": "\u010ci\u0161\u010denje bobna", + "hqd_babycare": "Otro\u0161ka posoda", + "hqd_checkup": "Preveri", + "hqd_cottons": "Bomba\u017e", + "hqd_delicate": "Ob\u010dutljive tkanine", + "hqd_delicate_cradle": "Ob\u010dutljive tkanine", + "hqd_dry": "Su\u0161enje bomba\u017ea", + "hqd_dry_synthetics": "Su\u0161enje me\u0161anih tkanin", + "hqd_duvet": "Pre\u0161ite odeje", + "hqd_eco_40_60_degrees": "Eco 40-60", + "hqd_handwash_wool": "Volna", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "Me\u0161ano", + "hqd_quick_15": "Hitro 15'", + "hqd_quick_wash_57": "Hitro pranje 57 min", + "hqd_rapid_wash_and_dry": "Pranje in su\u0161enje", + "hqd_refresh": "Osve\u017eitev", + "hqd_rinse": "Splakovanje", + "hqd_shirts": "Srajce", + "hqd_smart": "Smart A.I.", + "hqd_spin": "O\u017eemanje", + "hqd_sport": "\u0160port", + "hqd_super_fast": "Hitro 39\u2019", + "hqd_synthetic_and_coloured": "Sintetika", + "hygiene_59": "Higiena Plus 59'", + "hygiene_60": "Higiena 60'", + "hygiene_plus_59": "Higiena Plus 59'", + "hygiene_plus_59_min": "Higiena Plus 59'", + "hygiene_pro _49_min": "Higiena Pro 49 '", + "hygiene_pro_49_min": "Higiena Pro 49 min", + "hygiene_pro_steam": "Hygiene Pro + Para", + "intensive_40": "Intenzivno 40\u00b0C", + "intensive_40_steam": "Intenzivno 40\u00b0C + para", + "iot_active_steam": "Para", + "iot_active_wash_steam": "Aktivno pranje", + "iot_allergy_care_pro": "Nega proti alergijam Pro", + "iot_all_in_one_59_steam": "Aktivno pranje + para", + "iot_checkup": "Preveri", + "iot_colour_59_steam": "Barvno perilo 59' + para", + "iot_cottons_steam": "Bomba\u017e + Para", + "iot_delicate_silk_steam": "Ob\u010dutljiva svila + para", + "iot_delicati_59_steam": "Ob\u010dutljivo 59'", + "iot_dry_air_refresh": "Osve\u017eitev z zrakom", + "iot_dry_anti_mites": "Proti pr\u0161icam", + "iot_dry_baby": "Dojen\u010dek", + "iot_dry_backpacks": "Nahrbtniki", + "iot_dry_bathrobe": "Kopalni pla\u0161\u010di in luknji\u010daste tkanine", + "iot_dry_bed_linen": "Posteljnina", + "iot_dry_cotton_dry": "Su\u0161enje bomba\u017ea", + "iot_dry_cuddly_toys": "Pli\u0161aste igra\u010de", + "iot_dry_curtains": "Zavese", + "iot_dry_dehumidifier": "Odstranjevalec vlage", + "iot_dry_delicates_antiallergy": "Ob\u010dutljive tkanine \u2013 protialegrijsko", + "iot_dry_delicate_tablecloths": "Ob\u010dutljivi namizni prti", + "iot_dry_denim_jeans": "Denim \u2013 jeans", + "iot_dry_easy_iron_cotton": "Enostavno likanje \u2013 bomba\u017e", + "iot_dry_easy_iron_synthetics": "Enostavno likanje \u2013 sintetika", + "iot_dry_gym_fit": "\u0160portna obla\u010dila", + "iot_dry_lingerie": "Spodnje perilo", + "iot_dry_mixed_dry": "Su\u0161enje me\u0161anih tkanin", + "iot_dry_rapid_60_min_delicates": "Hitro 60' \u2013 ob\u010dutljive tkanine", + "iot_dry_shirts": "Srajce", + "iot_dry_swimsuits_and_bikinis": "Kopalke", + "iot_dry_synthetics": "Su\u0161enje sintetike", + "iot_dry_synthetic_dry": "Su\u0161enje sintetike", + "iot_dry_tablecloths": "Namizni prti", + "iot_dry_technical_fabrics": "Tehni\u010dne tkanine", + "iot_dry_warm_embrace": "Topel boben", + "iot_dry_wool_dry": "Su\u0161enje volne", + "iot_easy_iron": "La\u017eje likanje", + "iot_fresh_care_steam": "Nega za sve\u017eino + para", + "iot_hygiene_pro_steam": "Hygiene Pro + Para", + "iot_intensive_40_steam": "Intenzivno 40\u00b0C + para", + "iot_mixed_steam": "Me\u0161ano + Para", + "iot_mix_and_colour_59_steam": "Me\u0161ana in pisana obla\u010dila 59' + para", + "iot_perfect_cotton_59_steam": "Idealen za Bombaz 59'", + "iot_rapid_a_class_60_steam": "Hitri razred A 60 + para", + "iot_resistant_cotton_steam": "Bomba\u017e + Para", + "iot_shirts_steam": "Srajce + Para", + "iot_single_item_steam": "En artikel + para", + "iot_smart_wash": "Pametno pranje", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "Posebno 39' + para", + "iot_steam_hygiene_plus": "Higiena plus para ", + "iot_synthetic_and_coloured_steam": "Sinteti\u010dne in pisane tkanine + para", + "iot_wash_and_dry": "Pranje in su\u0161enje", + "iot_wash_anti_mites": "Proti pr\u0161icam", + "iot_wash_anti_odor": "Proti neprijetnim vonjavam", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "Dezinfekcija", + "iot_wash_baby_sanitizer_steam": "Razku\u017eevanje za otroke + para", + "iot_wash_backpacks": "Nahrbtniki", + "iot_wash_backpacks_zelig": "Nahrbtniki", + "iot_wash_bathrobe": "Kopalni pla\u0161\u010di in brisa\u010de", + "iot_wash_bathrobe_steam": "Kopalni pla\u0161\u010d + Para", + "iot_wash_bed_linen": "Posteljnina", + "iot_wash_bed_linen_steam": "Posteljnina + Para", + "iot_wash_bed_linen_zelig": "Posteljnina", + "iot_wash_big_single_load": "Velika posamezna koli\u010dina", + "iot_wash_bleaching": "Beljenje", + "iot_wash_blood_stains": "Made\u017ei krvi", + "iot_wash_cashmere": "Ka\u0161mir", + "iot_wash_chocolate_stains": "\u010cokoladni made\u017ei", + "iot_wash_cold_wash": "Hladna voda", + "iot_wash_colored": "Barvno", + "iot_wash_colored_anti_stain": "Odstranjevanje made\u017eev za barva obla\u010dila", + "iot_wash_colored_delicate": "Ob\u010dutljivo barvno", + "iot_wash_coloured": "Pisane tkanine", + "iot_wash_coloured_bed_linen": "Barvna posteljnina", + "iot_wash_coloured_bed_linen_steam": "Barvna posteljnina + para", + "iot_wash_coloured_curtains": "Pisane zavese", + "iot_wash_coloured_shirts": "Pisane srajce", + "iot_wash_coloured_shirts_steam": "Barvne srajce + para", + "iot_wash_coloured_steam": "Pisane tkanine + Para", + "iot_wash_coloured_tableclothes": "Pisani namizni prti", + "iot_wash_coloured_tableclothes_steam": "Pisani namizni prti + para", + "iot_wash_cotton": "Bomba\u017e", + "iot_wash_cotton_steam": "Bomba\u017e + Para", + "iot_wash_cuddly_toys": "Pli\u0161aste igra\u010de", + "iot_wash_curtains": "Zavese", + "iot_wash_curtains_steam": "Zavese + Para", + "iot_wash_curtains_zelig": "Zavese", + "iot_wash_dark": "Temne tkanine", + "iot_wash_darks_and_coloured_44": "Temno in barvno 44 min", + "iot_wash_darks_and_coloured_59": "Temno in barvno 59 min", + "iot_wash_darks_and_coloured_xl": "Temno in barvno XL", + "iot_wash_dark_steam": "Temne tkanine + Para", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "Ob\u010dutljive tkanine", + "iot_wash_delicate_antiallergy": "Protialergijsko delovanje za ob\u010dutljive tkanine", + "iot_wash_delicate_antiallergy_steam": "Protialergijsko delovanje za ob\u010dutljive tkanine + Para", + "iot_wash_delicate_antiallergy_zelig": "Protialergijsko delovanje za ob\u010dutljive tkanine", + "iot_wash_delicate_colors": "Ob\u010dutljive pisane tkanine", + "iot_wash_delicate_colors_steam": "Barvno perilo + para", + "iot_wash_delicate_dark": "Ob\u010dutljivo temno", + "iot_wash_delicate_steam": "Ob\u010dutljive tkanine + Para", + "iot_wash_delicate_tablecloths": "Ob\u010dutljivi namizni prti", + "iot_wash_delicate_tablecloths_steam": "Ob\u010dutljivi namizni prti + Para", + "iot_wash_delicate_whites": "Ob\u010dutljivo belo", + "iot_wash_denim_jeans": "Denim \u2013 jeans", + "iot_wash_diving_suits": "Potaplja\u0161ke obleke", + "iot_wash_diving_suits_zelig": "Potaplja\u0161ke obleke", + "iot_wash_down_jackets": "Puhovke", + "iot_wash_down_jackets_zelig": "Puhovke", + "iot_wash_duvet": "Pre\u0161ite odeje", + "iot_wash_fruit_stains": "Made\u017ei sadja", + "iot_wash_gym_fit": "\u0160portna obla\u010dila", + "iot_wash_handwash": "Ro\u010dno pranje", + "iot_wash_handwash_colored": "Ro\u010dno pranje barvno", + "iot_wash_handwash_dark": "Ro\u010dno pranje temno", + "iot_wash_lingerie": "Spodnje perilo", + "iot_wash_masks_refresh": "Osve\u017eevanje mask", + "iot_wash_masks_sanification": "Dezinfekcija mask", + "iot_wash_masks_sanification_steam": "Dezinfekcija mask + Para", + "iot_wash_mats": "Preproge", + "iot_wash_men_s_trousers": "Hla\u010de", + "iot_wash_mixed": "Me\u0161ano", + "iot_wash_mixed_steam": "Me\u0161ano + Para", + "iot_wash_mix_and_coloured_44": "Me\u0161ano in barvno 44 min", + "iot_wash_mix_and_coloured_59": "Me\u0161ano in barvno 59 min", + "iot_wash_mix_and_coloured_xl": "Me\u0161ano in barvno XL", + "iot_wash_new_clothes": "Nova obla\u010dila", + "iot_wash_perfect_white": "Popolna belina", + "iot_wash_perfect_white_steam": "Popolna belina + Para", + "iot_wash_pets": "Dodatki za hi\u0161ne ljubljen\u010dke", + "iot_wash_pets_hair_removal": "Odstranjevanje dlake hi\u0161nih ljubljen\u010dkov", + "iot_wash_pets_odours_stains_removal": "Odstranjevanje vonjav in made\u017eev hi\u0161nih ljubljen\u010dkov", + "iot_wash_pets_steam": "Dodatki za hi\u0161ne ljubljen\u010dke", + "iot_wash_playsuits": "Otro\u0161ka obla\u010dila", + "iot_wash_playsuits_steam": "Otro\u0161ka obla\u010dila + Para", + "iot_wash_quick_drum_cleaner": "Sredstvo za hitro \u010di\u0161\u010denje bobna", + "iot_wash_rapid_14": "Hitro 14\u2019", + "iot_wash_rapid_30": "Hitro 30\u2019", + "iot_wash_rapid_44": "Hitro 44\u2019", + "iot_wash_rapid_59": "Hitro 59\u2019", + "iot_wash_rapid_59_steam": "Hitro 59' + para", + "iot_wash_refresh_14_min": "Osve\u017eitev 14\u2019", + "iot_wash_resistant_colored": "Trpe\u017eno barvno", + "iot_wash_resistant_dark": "Trpe\u017eno temno", + "iot_wash_resistant_whites": "Trpe\u017eno belo", + "iot_wash_rinse": "Splakovanje", + "iot_wash_shirts": "Srajce", + "iot_wash_shirts_steam": "Srajce + Para", + "iot_wash_silk": "Svila", + "iot_wash_ski_suit": "Smu\u010darske obleke", + "iot_wash_ski_suit_zelig": "Smu\u010darske obleke", + "iot_wash_spin": "O\u017eemanje", + "iot_wash_sport": "\u0160port", + "iot_wash_sport_anti_odor": "\u0160portna obla\u010dila, odporna proti neprijetnim vonjavam", + "iot_wash_sport_anti_odor_zelig": "\u0160portna obla\u010dila, odporna proti neprijetnim vonjavam", + "iot_wash_stains_remover": "Odstranjevalec made\u017eev", + "iot_wash_swimsuits_and_bikinis": "Kopalke", + "iot_wash_synthetic": "Sintetika", + "iot_wash_synthetic_steam": "Sintetika + Para", + "iot_wash_tablecloths": "Namizni prti", + "iot_wash_tablecloths_steam": "Namizni prti + Para", + "iot_wash_technical_fabrics": "Tehni\u010dne tkanine", + "iot_wash_technical_fabrics_zelig": "Tehni\u010dne tkanine", + "iot_wash_technical_jackets": "Tehni\u010dne jakne", + "iot_wash_technical_jackets_zelig": "Tehni\u010dne jakne", + "iot_wash_trainers": "\u0160portni copati", + "iot_wash_whites": "Belo", + "iot_wash_whites_44": "Belo 44 min", + "iot_wash_whites_59": "Belo 59 min", + "iot_wash_whites_xl": "Belo XL", + "iot_wash_wine_stains": "Made\u017ei vina", + "iot_wash_wool": "Volna", + "jeans": "Jeans", + "jeans_60": "D\u017eins", + "low_dry": "Su\u0161enje me\u0161anih tkanin", + "mixed": "Me\u0161ano", + "mixed_and_colored_59": "Me\u0161ana in pisana obla\u010dila 59'", + "mixed_steam": "Me\u0161ano + Para", + "mix_and_colour_59": "Mesana Sestava in Barvno 59'", + "mix_and_colour_59_steam": "Me\u0161ana in pisana obla\u010dila 59' + para", + "night_and_day": "No\u010d in dan", + "night_wash": "Overnight Cycle", + "perfect_59": "Popolno 59'", + "perfect_cotton_59": "Idealen za Bombaz 59'", + "perfect_cotton_59_steam": "Idealen za Bombaz 59'", + "perfect_whites_59": "Popolnoma belo 59'", + "rapid_14_min": "Hitri program 14'.", + "rapid_30_min": "Hitri program 14 min.", + "rapid_44_min": "Hitri program 14 min.", + "rapid_a_class_60": "Hitri razred A 60", + "rapid_a_class_60_steam": "Hitri razred A 60 + para", + "rapid_wash_and_dry_59_min": "Pranje in su\u0161enje 59'.", + "resistant_cotton": "Bomba\u017e", + "resistant_cotton_steam": "Bomba\u017e + Para", + "rinse": "Splakovanje", + "shirts_steam": "Srajce + Para", + "silent_night": "Overnight Cycle", + "single_item": "En artikel", + "single_item_steam": "En artikel + para", + "smart_wash": "Pametno pranje", + "soft_care": "Nega za mehkobo", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "Poseben 39'", + "special_39_full_load": "Poseben 39'", + "special_39_full_load_steam": "Posebno 39' + para", + "special_49": "Posebno 49'", + "sport_39": "\u0160port 39'", + "sport_plus_29": "Sport Plus 29\"", + "sport_plus_39": "Sport Plus 39'", + "steam_39": "Para 39'", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro \u2013 bomba\u017e", + "steam_care_pro_delicates": "Steam Care Pro \u2013 ob\u010dutljive tkanine", + "steam_care_pro_synthetic": "Steam Care Pro \u2013 sintetika", + "steam_hygiene_plus": "Higiena plus para ", + "synthetics": "Sintetika", + "synthetic_and_coloured": "Sinteti\u010dne in pisane tkanine", + "synthetic_and_coloured_steam": "Sinteti\u010dne in pisane tkanine + para", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "Popolna nega", + "tumbling": "Boben", + "wool": "Volna", + "wool_and_delicates_49": "Volna/Ob\u010dutljive tkanine 49'", + "wool_dry": "Su\u0161enje volne", + "wool_soft_care": "Volna & Nega Za Mehkobo" + } + } } } } \ No newline at end of file diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index 0edb3bd..c552160 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -66,6 +66,650 @@ "6": "Hot rinse" } } + }, + "select": { + "programs_dw": { + "state": { + "59_min": "Brzi 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "Automatski univerzalni 50 - 60\u00b0C", + "auto_universal_plus": "Automatski univerzalni+ 65 - 75\u00b0C", + "auto_universal_plus_soil": "Automatski univerzalni+ 65 - 75\u00b0C", + "auto_universal_soil": "Automatski univerzalni 50 - 60\u00b0C", + "auto_wash": "Automatsko pranje", + "auto_wash_soil": "Automatsko pranje", + "classe_a_59": "A klasa 59' 65\u00b0C", + "delicate": "Osetljivo 45\u00b0C", + "dishwasher_care": "Ciklus \u010di\u0161\u0107enja kamenca", + "eco": "Eko", + "eco_asynch": "Eco 45\u00b0C", + "eco_bldc": "Eco 45\u00b0C", + "eco_synch": "Eco 45\u00b0C", + "gentle_wash": "Gentle wash", + "glass": "Staklo", + "glass _care": "Glass Care", + "glassware": "Staklo 45\u00b0C", + "glass_care": "Glass Care", + "hygiene": "Higijena", + "hygiene_plus": "Higijenski+ 75\u00b0C", + "intensive": "Intenzivno ", + "intensive_rapid": "sna\u017eno i brzo", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "Automatski univerzalni 50 - 60\u00b0C", + "iot_auto_wash_soil": "Automatsko pranje", + "iot_baby_care": "Baby Nega", + "iot_breakfast": "Doru\u010dak", + "iot_checkup": "Provera", + "iot_china_crystals": "China Kristal", + "iot_classe_a_59": "Brzi 59'", + "iot_cocktail_glasses": "\u010ca\u0161e za koktel", + "iot_cocktail_glasses_soil": "\u010ca\u0161e za koktel", + "iot_daily_care": "Svakodnevna nega", + "iot_daily_care_soil": "Svakodnevna nega", + "iot_delicate": "Osetljivo 45\u00b0C", + "iot_dinner_for_two": "Ve\u010dera za dvoje", + "iot_dinner_for_two_soil": "Ve\u010dera za dvoje", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "Eco 45\u00b0C", + "iot_eco_bldc": "Eco 45\u00b0C", + "iot_eco_synch": "Eco 45\u00b0C", + "iot_extra_hygiene": "Extra Higijena", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "Happy Hour", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "\u017durka", + "iot_party_soil": "\u017durka", + "iot_pizza_menu": "Pizza Meni", + "iot_pizza_menu_soil": "Pizza Meni", + "iot_plastic_tupperware": "Plastika i Tupperware", + "iot_porcelain": "Porcelan", + "iot_pot_&_pans": "\u0160erpe i Tiganji", + "iot_pot_&_pans_soil": "\u0160erpe i Tiganji", + "iot_power_mix_wash": "Power Mix pranje", + "iot_power_mix_wash_soil": "Power Mix pranje", + "iot_prewash": "Predpranje", + "iot_pyrex_and_glassware": "Pyrex i Vatrostalne posude", + "iot_rapid_29": "Brzo 29'", + "iot_rapid_39": "Brzi 39' 60\u00b0C", + "iot_single": "Single", + "iot_steam": "Para 75\u00b0C", + "iot_super_flash": "Super brzi", + "iot_super_wash": "Super pranje", + "iot_turbopower": "TurboPower", + "iot_universal": "Univerzalni 60\u00b0C", + "iot_wok_grids_maxi_pans": "Specijalni tiganji (Wok, Re\u0161etke, Maxi tiganji)", + "iot_wok_grids_maxi_pans_soil": "Specijalni tiganji (Wok, Re\u0161etke, Maxi tiganji)", + "iot_yes_quick_cycle": "Yes Quick", + "night": "Ultra tihi 55\u00b0C", + "prewash": "Predpranje", + "rapid_20": "Brzi 20'", + "rapid_24": "Brzo 24'", + "rapid_29": "Brzo 29' 50\u00b0C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "Brzi 39' 60\u00b0C", + "rapid_49": "Brzi 49'", + "rapid_59": "Brzi 59'", + "sanitising": "Dezinfekcija", + "silence": "Silence", + "silent": "No\u0107", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "special": "posebno", + "special_pw_prz": "posebno", + "steam": "Para 75\u00b0C", + "steam_plus": "Dodatno parenje na 75 \u00b0C", + "total_care": "Total Care 50\u00b0C", + "ultra_silence": "Ultra tihi 55\u00b0C", + "ultra_silent": "Ultra tihi 55\u00b0C", + "universal": "Univerzalni 60\u00b0C", + "universal_plus": "Univerzalni plus 70\u00b0C", + "zoom_39": "Zoom 39 min" + } + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "Pr\u017eeni rendani krompir", + "iot_special_beef_fillet": "Gove\u0111i file", + "iot_special_beef_veal_stew": "Gove\u0111i i telec\u0301i paprika\u0161", + "iot_special_boiled_rice": "Kuvani pirina\u010d", + "iot_special_chicken_breast": "Pile\u0107a prsa", + "iot_special_chicken_legs": "Pile\u0107i bataci", + "iot_special_chocolate_pudding": "Puding od \u010dokolade", + "iot_special_entrecote": "Antrikot", + "iot_special_fresh_tuna": "Sve\u017ea tuna", + "iot_special_grilled_vegetables": "Grilovano povr\u0107e", + "iot_special_lamb_cutlet": "Jagnje\u0107i kotlet", + "iot_special_meatballs": "\u0106ufte", + "iot_special_minestrone": "Minestrone", + "iot_special_mussels": "Dagnje", + "iot_special_omelette": "Omlet", + "iot_special_pancakes": "Pala\u010dinke", + "iot_special_paris_style_peas": "Gra\u0161ak na pariski na\u010din", + "iot_special_poached_eggs": "Po\u0161irana jaja", + "iot_special_pork_fillet": "Svinjski file", + "iot_special_pork_ribs": "Svinjska rebarca", + "iot_special_prawns": "Gambori", + "iot_special_quinoa": "Kinoa", + "iot_special_ratatouille": "Ratatuj", + "iot_special_salmon_fillet": "Filet lososa", + "iot_special_saute_potatoes": "Dinstani krompir", + "iot_special_scallops": "Jakobove kapice", + "iot_special_scrambled_eggs": "Kajgana", + "iot_special_spelt": "Spelta", + "iot_special_veggy_noodles": "Rezanci s povr\u0107em", + "iot_special_white_fish_fillet": "Filet bele ribe", + "iot_standard_boiling": "Boiling", + "iot_standard_frying": "Pr\u017eenje", + "iot_standard_keep_warm": "Odr\u017eite toplinu", + "iot_standard_melting": "Topljenje", + "iot_standard_simmering": "Simmering" + } + }, + "programs_ov": { + "state": { + "bakery": "Testenine i pecivo", + "bakery_steam": "Hleb pe\u010den na pari", + "bottom_heating": "Donje grejanje", + "bottom_heating_fan": "Donje grejanje + Ventilator", + "bread": "Hleb", + "bread_steam": "Peciva pe\u010dena na pari", + "convection_fan": "Konvekcija + ventilator", + "convection_fan_turnspit": "Konvekcija + ventilator + ra\u017eanj", + "conventional": "Konvekcija", + "conventional_turnspit": "Konvekcija + ra\u017eanj", + "defrost": "Odmrzavanje", + "descaling": "Uklanjanje kamenca", + "fish": "Riba", + "fish_steam": "Riba kuvana na pari", + "grill_cata": "Ro\u0161tilj", + "grill_fan_cata": "Ro\u0161tilj sa ventilatorom", + "grill_fan_pyro": "Gril + ventilator", + "grill_pyro": "Gril", + "h20_clean": "H2O-Clean", + "iot_bread": "Hleb", + "iot_h20_clean": "h2O clean", + "leavening": "Narastanje", + "low_temp_cooking": "Kuvanje na niskoj temperaturi", + "low_temp_cooking_fish": "Kuvanje na niskoj temperaturi \u2013 riba", + "low_temp_cooking_fish_steam": "Kuvanje na pari na niskoj temperaturi \u2013 riba", + "low_temp_cooking_meat": "Kuvanje na niskoj temperaturi \u2013 meso", + "low_temp_cooking_meat_steam": "Kuvanje na pari na niskoj temperaturi \u2013 meso", + "low_temp_cooking_steam": "Kuvanje na pari na niskoj temperaturi", + "meat": "Meso", + "meat_steam": "Meso kuvano na pari", + "multi_level": "Vi\u0161e nivoa", + "paella": "Paella", + "pasta_and_bakery": "Testenine i pecivo", + "pizza": "Pizza", + "pyrolysis": "Piroliza", + "pyrolysis_plus": "Piroliza +", + "red_meat": "Crveno meso", + "red_meat_steam": "Crveno meso kuvano na pari", + "regenerate": "Regeneracija", + "soft_plus": "Meko+", + "super_grill": "Super gril", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_desctiption": "Ova opcija je idealna za to da hrana ostane meka iznutra a hrskava spolja. Ova opcija smanjuje koli\u010dinu potrebne masti ili ulja radi zdrave ishrane.\r\r\nKombinacija grejnih elemenata sa pulsiraju\u0107im ciklusom vazduha omogu\u0107ava ravnomerno pe\u010denje.", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Povr\u0107e", + "vegetables_cata": "Povr\u0107e", + "vegetables_pyro": "Povr\u0107e", + "water_discharge": "Odvod vode", + "white_meat": "Belo meso", + "white_meat_steam": "Belo meso kuvano na pari" + } + }, + "programs_td": { + "state": { + "active_dry": "Aktivno su\u0161enje", + "allergy_care": "Antialergijski", + "all_in_one": "All in One", + "antiallergy": "Antialergijski", + "anti_odours": "Protiv neugodnih mirisa", + "auto_care": "Aktivna nega", + "baby": "Baby", + "bed_quilt": "\u0106ebad i jorgani", + "care_30": "Nega 30", + "care_45": "Nega 45", + "care_59": "Nega 59", + "coloured": "Obojeno", + "daily_45_min": "SVAKODNEVNI 45'", + "daily_perfect_59_min": "PERFECT SVAKODNEVNI 59'", + "darks_and_coloured": "Tamno i obojeno", + "delicates": "Osetljivo", + "duvet": "Jorgani", + "eco": "Eko pamuk", + "ecospeed_cottons": "Ecospeed Pamuk", + "ecospeed_delicates": "Ecospeed osetljive tkanine", + "ecospeed_mixed": "Ecospeed Me\u0161ano", + "extra_hygiene": "EXTRA HIGIJENA", + "fitness": "Fitnes", + "fresh_care": "Tretman za osve\u017eavanje", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Pe\u0161kiri", + "hqd_bed_sheets": "Posteljina", + "hqd_bulky": "Glomazni artikli", + "hqd_casual": "Neformalno", + "hqd_cold_wind_30": "Hladan vazduh 30 minuta", + "hqd_cold_wind_timing": "Hladan vazduh ", + "hqd_cotton": "Pamuk", + "hqd_curtain": "Zavese", + "hqd_delicate": "Osetljive tkanine", + "hqd_diaper": "Pelene", + "hqd_duvet": "Jorgan", + "hqd_feather": "Perjane jakne", + "hqd_hot_wind_timing": "Vru\u0107 vazduh", + "hqd_hygienic": "Higijenski", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Jakne", + "hqd_jeans": "D\u017eins", + "hqd_luxury": "Luksuzno", + "hqd_mix": "Me\u0161ovito", + "hqd_night_dry": "No\u0107no su\u0161enje", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Brzo 20", + "hqd_quick_30": "Brzo 30", + "hqd_quick_dry": "Brzo su\u0161enje", + "hqd_quilt": "Jorgani", + "hqd_refresh": "Osve\u017eavanje", + "hqd_school_uniform": "\u0160kolska uniforma", + "hqd_shirt": "Ko\u0161ulje", + "hqd_shoes": "Cipele", + "hqd_silk": "Svila", + "hqd_sports": "Sportska ode\u0107a", + "hqd_synthetics": "Sintetika", + "hqd_timer": "Vremenski ograni\u010deno", + "hqd_towel": "Pe\u0161kiri", + "hqd_underwear": "Donji ve\u0161", + "hqd_warm_up": "Zagrevanje", + "hqd_wool": "Vuna", + "hqd_working_suit": "Radna ode\u0107a", + "hygiene": "Higijena", + "iot_checkup": "Provera", + "iot_dry_anti_mites": "Anti-grinje", + "iot_dry_baby": "Baby", + "iot_dry_backpacks": "Ran\u010devi", + "iot_dry_bathrobe": "Bade-mantili", + "iot_dry_bed_linen": "Posteljine", + "iot_dry_bed_quilt": "\u0106ebad i jorgani", + "iot_dry_cotton": "Pamuk", + "iot_dry_cuddly_toys": "Pli\u0161ane igra\u010dke", + "iot_dry_curtains": "Zavese", + "iot_dry_dehumidifier": "Uklanjanje vlage", + "iot_dry_delicates": "Delikatni", + "iot_dry_delicate_tablecloths": "Osetljivi stoljnjaci", + "iot_dry_denim_jeans": "Teksas - d\u017eins", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Jorgani", + "iot_dry_easy_iron_cotton": "Super Lako peglanje", + "iot_dry_easy_iron_synthetics": "Sintetika koja se veoma lako pegla", + "iot_dry_gym_fit": "Gym fit - Fitness", + "iot_dry_lingerie": "Donji ve\u0161", + "iot_dry_mixed": "Me\u0161ani ve\u0161", + "iot_dry_playsuits": "Kostimi", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Brzi program 59'.", + "iot_dry_refresh": "Osve\u017eavanje", + "iot_dry_regenerates_waterproof": "Regenerisanje vodootpornosti", + "iot_dry_relax_creases": "Otpu\u0161tanje prevoja", + "iot_dry_shirts": "Ko\u0161ulje", + "iot_dry_small_load": "Mala koli\u010dina ve\u0161a", + "iot_dry_swimsuits_and_bikinis": "Ode\u0107a za kupanje", + "iot_dry_synthetics": "Sintetika", + "iot_dry_synthetic_dry": "Su\u0161enje sintetike", + "iot_dry_tablecloths": "Stolnjaci", + "iot_dry_technical_fabrics": "Sinteti\u010dki materijali", + "iot_dry_warm_embrace": "Topao zagrljaj", + "iot_dry_wool": "Woolmark", + "jeans": "Jeans", + "mix_and_dry": "Mix&Dry", + "pets": "Ljubimci", + "pre_iron": "Pre-peglanje", + "rapid_30": "Rapid 30", + "rapid_45": "Brzi 45 min", + "rapid_59": "Perfect Rapid 59 Min", + "refresh": "Osve\u017eavanje", + "relax_creases": "Otpu\u0161tanje prevoja", + "saving_30_min": "EKO 30'", + "shirts": "Ko\u0161ulje", + "shoes": "Cipele", + "small_load": "Mala koli\u010dina ve\u0161a", + "soft_care": "Blagi tretman", + "sport_plus": "Sportska odeca", + "super_easy_iron_misti": "Me\u0161ani ve\u0161 koji se veoma lako pegla", + "super_easy_iron_xxl": "XXL ve\u0161 koji se veoma lako pegla", + "super_fast_cottons": "Super brzo Pamuk", + "super_fast_delicates": "Super brzo Osetljivo", + "synthetics": "Sintetika", + "total_care": "Total Care", + "trainers": "Trenerke i sportska obu\u0107a", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Revitalizacija vodootpornosti", + "whites": "Beli ve\u0161", + "wool": "Su\u0161enje vune", + "woolmark": "Woolmark", + "xxl_load": "XXL ve\u0161", + "zoom_59": "Zoom 59" + } + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "20\u00b0 u boji i pamuk", + "20_degrees_new_energy_label": "20\u00b0C", + "active_steam": "Para", + "active_wash": "Aktivno pranje", + "active_wash_steam": "Aktivno pranje", + "allergy_care": "Tretman protiv alergija", + "allergy_care_pro": "Tretman protiv alergija Pro", + "all_in_one_49": "Sve u jedan 49'.", + "all_in_one_59": "Sve u jedan 59'.", + "all_in_one_59_steam": "Aktivno pranje + para", + "autocare": "Automatska nega", + "autoclean": "\u010ci\u0161\u0107enje bubnja", + "baby_60": "All Baby 60\u00b0C", + "care_14": "Rapid Care 14'", + "care_30": "Rapid Care 30'", + "care_44": "Rapid Care 44'", + "checkup": "Provera", + "colour_59": "Obojeno 59'", + "colour_59_steam": "\u0160arena ode\u0107a 59' + para", + "cottons": "Pamuk", + "cottons_prewash": "Pamuk + Predpranje", + "cottons_steam": "Pamuk + Para", + "cotton_care_59": "Pamuk 59 Min", + "delicate_59": "Delikatni 59'", + "delicate_silk": "Osetljiva svila", + "delicate_silk_steam": "Osetljiva svila + para", + "delicati_59": "Delikatni 59'", + "delicati_59_steam": "Delikatni 59'", + "drain_spin": "Su\u0161enje i centrifuga", + "easy_iron": "Lako peglanje", + "eco_40_60_new_energy_label": "Eko 40-60", + "extra_care": "Dodatni Tretman", + "fitness": "Fitnes", + "fitness_care": "Fitnes", + "fresh_care": "Tretman za osve\u017eavanje", + "fresh_care_steam": "Tretman za osve\u017eavanje + para", + "handwash_wool": "Ru\u010dno pranje i vuna", + "high_dry": "Su\u0161enje pamuka", + "hqd_20_degrees": "Pamuk 20\u2103", + "hqd_allergy": "Tretman protiv alergija", + "hqd_autoclean": "\u010ci\u0161\u0107enje bubnja", + "hqd_babycare": "Baby Nega", + "hqd_checkup": "Provera", + "hqd_cottons": "Pamuk", + "hqd_delicate": "Osetljive tkanine", + "hqd_delicate_cradle": "Osetljive tkanine", + "hqd_dry": "Su\u0161enje pamuka", + "hqd_dry_synthetics": "Su\u0161enje me\u0161anog ve\u0161a", + "hqd_duvet": "Jorgani", + "hqd_eco_40_60_degrees": "Eko 40-60", + "hqd_handwash_wool": "Vuna", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "Me\u0161ani ve\u0161", + "hqd_quick_15": "Brzi program 15'", + "hqd_quick_wash_57": "Brzo pranje 57 min.", + "hqd_rapid_wash_and_dry": "Pranje i su\u0161enje", + "hqd_refresh": "Osve\u017eavanje", + "hqd_rinse": "Ispiranje", + "hqd_shirts": "Ko\u0161ulje", + "hqd_smart": "Smart A.I.", + "hqd_spin": "Centrifuga", + "hqd_sport": "Sportska ode\u0107a", + "hqd_super_fast": "Brzi program 39\u2019", + "hqd_synthetic_and_coloured": "Sintetika", + "hygiene_59": "Hygijenski Plus 59'", + "hygiene_60": "Higijena 60\u00b0", + "hygiene_plus_59": "Hygijenski Plus 59'", + "hygiene_plus_59_min": "Hygijenski Plus 59'", + "hygiene_pro _49_min": "Hygiene Pro 49 '", + "hygiene_pro_49_min": "Hygiene Pro 49 min", + "hygiene_pro_steam": "Hygiene Pro + para", + "intensive_40": "Intenzivno 40\u00b0C", + "intensive_40_steam": "Intenzivno 40\u00b0C + para", + "iot_active_steam": "Para", + "iot_active_wash_steam": "Aktivno pranje", + "iot_allergy_care_pro": "Tretman protiv alergija Pro", + "iot_all_in_one_59_steam": "Aktivno pranje + para", + "iot_checkup": "Provera", + "iot_colour_59_steam": "\u0160arena ode\u0107a 59' + para", + "iot_cottons_steam": "Pamuk + Para", + "iot_delicate_silk_steam": "Osetljiva svila + para", + "iot_delicati_59_steam": "Delikatni 59'", + "iot_dry_air_refresh": "Osve\u017eavanje", + "iot_dry_anti_mites": "Protiv grinja", + "iot_dry_baby": "Beba", + "iot_dry_backpacks": "Ran\u010devi", + "iot_dry_bathrobe": "Bade-mantili i porozne tkanine", + "iot_dry_bed_linen": "Posteljina", + "iot_dry_cotton_dry": "Su\u0161enje pamuka", + "iot_dry_cuddly_toys": "Pli\u0161ane igra\u010dke", + "iot_dry_curtains": "Zavese", + "iot_dry_dehumidifier": "Uklanjanje vlage", + "iot_dry_delicates_antiallergy": "Osetljive tkanine - protiv alergije", + "iot_dry_delicate_tablecloths": "Osetljivi stolnjaci", + "iot_dry_denim_jeans": "Teksas - d\u017eins", + "iot_dry_easy_iron_cotton": "Lako peglanje - pamuk", + "iot_dry_easy_iron_synthetics": "Lako peglanje - sintetika", + "iot_dry_gym_fit": "Ode\u0107a za teretanu - fitnes", + "iot_dry_lingerie": "Donji ve\u0161", + "iot_dry_mixed_dry": "Su\u0161enje me\u0161anog ve\u0161a", + "iot_dry_rapid_60_min_delicates": "Brzi program 60' - osetljive tkanine", + "iot_dry_shirts": "Ko\u0161ulje", + "iot_dry_swimsuits_and_bikinis": "Ode\u0107a za kupanje", + "iot_dry_synthetics": "Su\u0161enje sintetike", + "iot_dry_synthetic_dry": "Su\u0161enje sintetike", + "iot_dry_tablecloths": "Stolnjaci", + "iot_dry_technical_fabrics": "Teni\u010dke tkanine", + "iot_dry_warm_embrace": "Toplo su\u0161enje", + "iot_dry_wool_dry": "Su\u0161enje vune", + "iot_easy_iron": "Lako peglanje", + "iot_fresh_care_steam": "Tretman za osve\u017eavanje + para", + "iot_hygiene_pro_steam": "Hygiene Pro + para", + "iot_intensive_40_steam": "Intenzivno 40\u00b0C + para", + "iot_mixed_steam": "Me\u0161ani ve\u0161 + Para", + "iot_mix_and_colour_59_steam": "Me\u0161ano i u boji 59' + para", + "iot_perfect_cotton_59_steam": "Perfect Pamuk 59'", + "iot_rapid_a_class_60_steam": "Brza klasa A 60 + para", + "iot_resistant_cotton_steam": "Pamuk + Para", + "iot_shirts_steam": "Ko\u0161ulje + para", + "iot_single_item_steam": "Pojedina\u010dni predmet + para", + "iot_smart_wash": "Pametno pranje", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "Posebno 39' + para", + "iot_steam_hygiene_plus": "Higijena plus sa parom ", + "iot_synthetic_and_coloured_steam": "Sintetika i \u0161arena ode\u0107a + para", + "iot_wash_and_dry": "Pranje i su\u0161enje", + "iot_wash_anti_mites": "Protiv grinja", + "iot_wash_anti_odor": "Protiv neprijatnih mirisa", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "Dezinfekcija", + "iot_wash_baby_sanitizer_steam": "Dezinfekcija ode\u0107e za bebe + para", + "iot_wash_backpacks": "Ran\u010devi", + "iot_wash_backpacks_zelig": "Ran\u010devi", + "iot_wash_bathrobe": "Bade mantili i pe\u0161kiri", + "iot_wash_bathrobe_steam": "Bade-mantil + Para", + "iot_wash_bed_linen": "Posteljina", + "iot_wash_bed_linen_steam": "Posteljina + Para", + "iot_wash_bed_linen_zelig": "Posteljina", + "iot_wash_big_single_load": "Velika pojedina\u010dna koli\u010dina", + "iot_wash_bleaching": "Izbeljivanje", + "iot_wash_blood_stains": "Fleke od krvi", + "iot_wash_cashmere": "Ka\u0161mir", + "iot_wash_chocolate_stains": "Fleke od \u010dokolade", + "iot_wash_cold_wash": "Hladno pranje", + "iot_wash_colored": "U boji", + "iot_wash_colored_anti_stain": "Uklanjanje fleka na bojama", + "iot_wash_colored_delicate": "Osetljivi materijal u boji", + "iot_wash_coloured": "Boja", + "iot_wash_coloured_bed_linen": "Posteljina u boji", + "iot_wash_coloured_bed_linen_steam": "Posteljina u boji + para", + "iot_wash_coloured_curtains": "Zavese u boji", + "iot_wash_coloured_shirts": "Ko\u0161ulje u boji", + "iot_wash_coloured_shirts_steam": "Ko\u0161ulje u boji + para", + "iot_wash_coloured_steam": "Boja + Para", + "iot_wash_coloured_tableclothes": "Stolnjaci u boji", + "iot_wash_coloured_tableclothes_steam": "Stolnjaci u boji + para", + "iot_wash_cotton": "Pamuk", + "iot_wash_cotton_steam": "Pamuk + Para", + "iot_wash_cuddly_toys": "Pli\u0161ane igra\u010dke", + "iot_wash_curtains": "Zavese", + "iot_wash_curtains_steam": "Zavese+Para", + "iot_wash_curtains_zelig": "Zavese", + "iot_wash_dark": "Tamna ode\u0107a", + "iot_wash_darks_and_coloured_44": "Tamno i u boji 44'", + "iot_wash_darks_and_coloured_59": "Tamno i u boji 59'", + "iot_wash_darks_and_coloured_xl": "Tamno i u boji XL", + "iot_wash_dark_steam": "Tamna ode\u0107a + Para", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "Osetljive tkanine", + "iot_wash_delicate_antiallergy": "Protiv alergije za osetljive tkanine", + "iot_wash_delicate_antiallergy_steam": "Protiv alergije za osetljive tkanine + Para", + "iot_wash_delicate_antiallergy_zelig": "Protiv alergije za osetljive tkanine", + "iot_wash_delicate_colors": "Osetljive tkanine u boji", + "iot_wash_delicate_colors_steam": "\u0160arena ode\u0107a + para", + "iot_wash_delicate_dark": "Osetljivi tamni materijal", + "iot_wash_delicate_steam": "Osetljive tkanine + Para", + "iot_wash_delicate_tablecloths": "Osetljivi stolnjaci", + "iot_wash_delicate_tablecloths_steam": "Osetljivi stolnjaci + Para", + "iot_wash_delicate_whites": "Osetljivi beli materijal", + "iot_wash_denim_jeans": "Teksas - d\u017eins", + "iot_wash_diving_suits": "Ronila\u010dka odela", + "iot_wash_diving_suits_zelig": "Ronila\u010dka odela", + "iot_wash_down_jackets": "Podjakne", + "iot_wash_down_jackets_zelig": "Podjakne", + "iot_wash_duvet": "Jorgani", + "iot_wash_fruit_stains": "Fleke od vo\u0107a", + "iot_wash_gym_fit": "Ode\u0107a za teretanu - fitnes", + "iot_wash_handwash": "Ru\u010dno pranje", + "iot_wash_handwash_colored": "Ru\u010dno pranje materijala u boji", + "iot_wash_handwash_dark": "Ru\u010dno pranje tamnog materijala", + "iot_wash_lingerie": "Donji ve\u0161", + "iot_wash_masks_refresh": "Osve\u017eavanje maski", + "iot_wash_masks_sanification": "Dezinfekcija maski", + "iot_wash_masks_sanification_steam": "Dezinfekcija maski + Para", + "iot_wash_mats": "Prostirke", + "iot_wash_men_s_trousers": "Pantalone", + "iot_wash_mixed": "Me\u0161ani ve\u0161", + "iot_wash_mixed_steam": "Me\u0161ani ve\u0161 + Para", + "iot_wash_mix_and_coloured_44": "Me\u0161ano i u boji 44'", + "iot_wash_mix_and_coloured_59": "Me\u0161ano i u boji 59'", + "iot_wash_mix_and_coloured_xl": "Me\u0161ano i u boji XL", + "iot_wash_new_clothes": "Nova ode\u0107a", + "iot_wash_perfect_white": "Savr\u0161eno belo", + "iot_wash_perfect_white_steam": "Savr\u0161eno belo + Para", + "iot_wash_pets": "Oprema za ku\u0107ne ljubimce", + "iot_wash_pets_hair_removal": "Uklanjanje dlaka ku\u0107nih ljubimaca", + "iot_wash_pets_odours_stains_removal": "Uklanjanje mirisa i mrlja od ku\u0107nih ljubimaca", + "iot_wash_pets_steam": "Oprema za ku\u0107ne ljubimce", + "iot_wash_playsuits": "Ode\u0107a za igru", + "iot_wash_playsuits_steam": "Ode\u0107a za igru + Para", + "iot_wash_quick_drum_cleaner": "Brzi \u010dista\u010d bubnja", + "iot_wash_rapid_14": "Brzi program 14\u2019", + "iot_wash_rapid_30": "Brzi program 30\u2019", + "iot_wash_rapid_44": "Brzi program 44\u2019", + "iot_wash_rapid_59": "Brzi program 59'", + "iot_wash_rapid_59_steam": "Brzi program 59' + para", + "iot_wash_refresh_14_min": "Osve\u017eavanje 14'", + "iot_wash_resistant_colored": "Otporni materijal u boji", + "iot_wash_resistant_dark": "Otporno tamno", + "iot_wash_resistant_whites": "Otporno belo", + "iot_wash_rinse": "Ispiranje", + "iot_wash_shirts": "Ko\u0161ulje", + "iot_wash_shirts_steam": "Ko\u0161ulje + Para", + "iot_wash_silk": "Svila", + "iot_wash_ski_suit": "Skija\u0161ko odelo", + "iot_wash_ski_suit_zelig": "Skija\u0161ko odelo", + "iot_wash_spin": "Centrifuga", + "iot_wash_sport": "Sportska ode\u0107a", + "iot_wash_sport_anti_odor": "Sportska ode\u0107a sa spre\u010davanjem neprijatnih mirisa", + "iot_wash_sport_anti_odor_zelig": "Sportska ode\u0107a sa spre\u010davanjem neprijatnih mirisa", + "iot_wash_stains_remover": "Uklanjanje fleka", + "iot_wash_swimsuits_and_bikinis": "Ode\u0107a za kupanje", + "iot_wash_synthetic": "Sintetika", + "iot_wash_synthetic_steam": "Sintetika + Para", + "iot_wash_tablecloths": "Stolnjaci", + "iot_wash_tablecloths_steam": "Stolnjaci + Para", + "iot_wash_technical_fabrics": "Teni\u010dke tkanine", + "iot_wash_technical_fabrics_zelig": "Teni\u010dke tkanine", + "iot_wash_technical_jackets": "Vindjakne", + "iot_wash_technical_jackets_zelig": "Vindjakne", + "iot_wash_trainers": "Patike", + "iot_wash_whites": "Bela", + "iot_wash_whites_44": "Bela 44'", + "iot_wash_whites_59": "Bela 59'", + "iot_wash_whites_xl": "Bela XL", + "iot_wash_wine_stains": "Fleke od vina", + "iot_wash_wool": "Vuna", + "jeans": "D\u017eins", + "jeans_60": "Jeans", + "low_dry": "Su\u0161enje me\u0161anog ve\u0161a", + "mixed": "Me\u0161ani ve\u0161", + "mixed_and_colored_59": "Me\u0161ani ve\u0161 i ve\u0161 u boji 59'", + "mixed_steam": "Me\u0161ani ve\u0161 + Para", + "mix_and_colour_59": "Mesano I Obojeno 59'", + "mix_and_colour_59_steam": "Me\u0161ano i u boji 59' + para", + "night_and_day": "No\u0107 i dan", + "night_wash": "No\u0107ni ciklus", + "perfect_59": "Savr\u0161eno 59'", + "perfect_cotton_59": "Perfect Pamuk 59'", + "perfect_cotton_59_steam": "Perfect Pamuk 59'", + "perfect_whites_59": "Savr\u0161eno belo 59'", + "rapid_14_min": "Brzi 14'", + "rapid_30_min": "Brzi 30 min", + "rapid_44_min": "Brzi 44 min", + "rapid_a_class_60": "Brza klasa A 60", + "rapid_a_class_60_steam": "Brza klasa A 60 + para", + "rapid_wash_and_dry_59_min": "Pranje i su\u0161enje 59'.", + "resistant_cotton": "Pamuk", + "resistant_cotton_steam": "Pamuk + Para", + "rinse": "Ispiranje", + "shirts_steam": "Ko\u0161ulje + para", + "silent_night": "No\u0107ni ciklus", + "single_item": "Pojedina\u010dni predmet", + "single_item_steam": "Pojedina\u010dni predmet + para", + "smart_wash": "Pametno pranje", + "soft_care": "Blagi tretman", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "\u041f\u043e\u0441\u0435\u0431\u043d\u0438 39'", + "special_39_full_load": "\u041f\u043e\u0441\u0435\u0431\u043d\u0438 39'", + "special_39_full_load_steam": "Posebno 39' + para", + "special_49": "Posebno 49'", + "sport_39": "Sportska ode\u0107a 39'", + "sport_plus_29": "Sport Plus 29\"", + "sport_plus_39": "Sport Plus 39'", + "steam_39": "Para 39'", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro - pamuk", + "steam_care_pro_delicates": "Steam Care Pro - osetljive tkanine", + "steam_care_pro_synthetic": "Steam Care Pro - sintetika", + "steam_hygiene_plus": "Higijena plus sa parom ", + "synthetics": "Sintetika", + "synthetic_and_coloured": "Sintetika i materijal u boji", + "synthetic_and_coloured_steam": "Sintetika i \u0161arena ode\u0107a + para", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "Kompletna nega", + "tumbling": "Su\u0161enje", + "wool": "Vuna", + "wool_and_delicates_49": "Vuna/Delikatni 49'", + "wool_dry": "Su\u0161enje vune", + "wool_soft_care": "Vuna & Blagi Tretman" + } + } } } } \ No newline at end of file diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index f40af01..2ccc3e6 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -66,6 +66,650 @@ "6": "Hot rinse" } } + }, + "select": { + "programs_dw": { + "state": { + "59_min": "Hizli 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "Universal 50-60\u00b0C", + "auto_universal_plus": "Family 65-75\u00b0C", + "auto_universal_plus_soil": "Family 65-75\u00b0C", + "auto_universal_soil": "Universal 50-60\u00b0C", + "auto_wash": "Otomatik Y\u0131kama", + "auto_wash_soil": "Otomatik Y\u0131kama", + "classe_a_59": "A Wash 59' 65\u00b0C", + "delicate": "Cristal 45\u00b0C", + "dishwasher_care": "Kire\u00e7 kal\u0131nt\u0131s\u0131 temizleme program\u0131", + "eco": "Eko", + "eco_asynch": "Eco 45\u00b0C", + "eco_bldc": "Eco 45\u00b0C", + "eco_synch": "Eco 45\u00b0C", + "gentle_wash": "Gentle wash", + "glass": "Cam", + "glass _care": "Glass Care", + "glassware": "Cam E\u015fya 45\u00b0C", + "glass_care": "Glass Care", + "hygiene": "Hijyen", + "hygiene_plus": "Hijyen+ 75\u00b0C", + "intensive": "Yo\u011fun ", + "intensive_rapid": "yogun hizli", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "Universal 50-60\u00b0C", + "iot_auto_wash_soil": "Otomatik Y\u0131kama", + "iot_baby_care": "Bebek Bak\u0131m", + "iot_breakfast": "Kahvalt\u0131", + "iot_checkup": "Check-up", + "iot_china_crystals": "\u00c7in Kristalleri", + "iot_classe_a_59": "Hizli 59'", + "iot_cocktail_glasses": "Kokteyl Bardaklar\u0131", + "iot_cocktail_glasses_soil": "Kokteyl Bardaklar\u0131", + "iot_daily_care": "G\u00fcnl\u00fck Bak\u0131m", + "iot_daily_care_soil": "G\u00fcnl\u00fck Bak\u0131m", + "iot_delicate": "Cristal 45\u00b0C", + "iot_dinner_for_two": "2 Ki\u015filik Ak\u015fam Yeme\u011fi", + "iot_dinner_for_two_soil": "2 Ki\u015filik Ak\u015fam Yeme\u011fi", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "Eco 45\u00b0C", + "iot_eco_bldc": "Eco 45\u00b0C", + "iot_eco_synch": "Eco 45\u00b0C", + "iot_extra_hygiene": "Ekstra Hijyen", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "Happy Hour", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "Parti", + "iot_party_soil": "Parti", + "iot_pizza_menu": "Pizza Men\u00fcs\u00fc", + "iot_pizza_menu_soil": "Pizza Men\u00fcs\u00fc", + "iot_plastic_tupperware": "Plastik ve Tupperware", + "iot_porcelain": "Porselen", + "iot_pot_&_pans": "Tencereler ve Tavalar", + "iot_pot_&_pans_soil": "Tencereler ve Tavalar", + "iot_power_mix_wash": "Power Mix Y\u0131kama", + "iot_power_mix_wash_soil": "Power Mix Y\u0131kama", + "iot_prewash": "Pre-wash", + "iot_pyrex_and_glassware": "Borcam ve Cam E\u015fya", + "iot_rapid_29": "Rapid 29'", + "iot_rapid_39": "H\u0131zl\u0131 39' 60\u00b0C", + "iot_single": "Tek", + "iot_steam": "Buhar 75\u00b0C", + "iot_super_flash": "S\u00fcper H\u0131zl\u0131", + "iot_super_wash": "S\u00fcper Y\u0131kama", + "iot_turbopower": "TurboPower", + "iot_universal": "\u00c7ok Ama\u00e7l\u0131 60\u00b0C", + "iot_wok_grids_maxi_pans": "\u00d6zel Tavalar (Wok - Izgaralar ve Maksi Tavalar)", + "iot_wok_grids_maxi_pans_soil": "\u00d6zel Tavalar (Wok - Izgaralar ve Maksi Tavalar)", + "iot_yes_quick_cycle": "Yes Quick", + "night": "Night 55\u00b0C", + "prewash": "Pre-wash", + "rapid_20": "Hizli 20'", + "rapid_24": "Rapid 24'", + "rapid_29": "Rapid 29' 50\u00b0C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "H\u0131zl\u0131 39' 60\u00b0C", + "rapid_49": "Hizli 49'", + "rapid_59": "Hizli 59'", + "sanitising": "Dezenfekte Etme", + "silence": "Silence", + "silent": "Gece", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "special": "\u00f6zel", + "special_pw_prz": "\u00f6zel", + "steam": "Buhar 75\u00b0C", + "steam_plus": "Ekstra Buhar 75\u00b0C", + "total_care": "Total Care 50\u00b0C", + "ultra_silence": "Night 55\u00b0C", + "ultra_silent": "Night 55\u00b0C", + "universal": "\u00c7ok Ama\u00e7l\u0131 60\u00b0C", + "universal_plus": "\u00c7ok Ama\u00e7l\u0131 Art\u0131 70\u00b0C", + "zoom_39": "Zoom 39 min" + } + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "K\u00fcl kahverengi", + "iot_special_beef_fillet": "Dana fileto", + "iot_special_beef_veal_stew": "Dana eti ve dana yahnisi", + "iot_special_boiled_rice": "Ha\u015flanm\u0131\u015f pirin\u00e7", + "iot_special_chicken_breast": "Tavuk g\u00f6\u011f\u00fcs", + "iot_special_chicken_legs": "Tavuk but", + "iot_special_chocolate_pudding": "S\u00fcpangle", + "iot_special_entrecote": "Antrikot", + "iot_special_fresh_tuna": "Taze ton bal\u0131\u011f\u0131", + "iot_special_grilled_vegetables": "Izgara sebzeler", + "iot_special_lamb_cutlet": "Kuzu kotlet", + "iot_special_meatballs": "K\u00f6fte", + "iot_special_minestrone": "\u00c7orba", + "iot_special_mussels": "Midye", + "iot_special_omelette": "Omlet", + "iot_special_pancakes": "Pankek", + "iot_special_paris_style_peas": "Frans\u0131z usul\u00fc bezelye", + "iot_special_poached_eggs": "Po\u015fe yumurta", + "iot_special_pork_fillet": "Domuz filetosu", + "iot_special_pork_ribs": "Domuz kaburgas\u0131", + "iot_special_prawns": "Karides", + "iot_special_quinoa": "Kinoa", + "iot_special_ratatouille": "Ratatuy", + "iot_special_salmon_fillet": "Somon fileto", + "iot_special_saute_potatoes": "Patates sote", + "iot_special_scallops": "Deniz tara\u011f\u0131", + "iot_special_scrambled_eggs": "Sahanda yumurta", + "iot_special_spelt": "K\u0131l\u00e7\u0131ks\u0131z bu\u011fday", + "iot_special_veggy_noodles": "Sebzeli eri\u015fte", + "iot_special_white_fish_fillet": "Beyaz bal\u0131k filetosu", + "iot_standard_boiling": "Kaynama", + "iot_standard_frying": "K\u0131zart", + "iot_standard_keep_warm": "S\u0131cak Tut", + "iot_standard_melting": "Erit", + "iot_standard_simmering": "\u0130\u00e7ten \u0130\u00e7e Kaynama" + } + }, + "programs_ov": { + "state": { + "bakery": "Makarna ve Ekmek", + "bakery_steam": "Buharda pi\u015fmi\u015f ekmek", + "bottom_heating": "Alt \u0131s\u0131t\u0131c\u0131", + "bottom_heating_fan": "Alt \u0131s\u0131t\u0131c\u0131 + Fan", + "bread": "Ekmek", + "bread_steam": "Buharda pi\u015fmi\u015f hamur i\u015fleri", + "convection_fan": "Fan destekl\u0131", + "convection_fan_turnspit": "Konveksiyon + Fan + \u015ei\u015f \u00c7evirme", + "conventional": "Stat\u0131k", + "conventional_turnspit": "Konveksiyon + \u015ei\u015f \u00c7evirme", + "defrost": "Buz \u00e7\u00f6zme", + "descaling": "Kire\u00e7 \u00e7\u00f6zme", + "fish": "Bal\u0131k", + "fish_steam": "Buharda pi\u015fmi\u015f bal\u0131k", + "grill_cata": "Izgara", + "grill_fan_cata": "Izgara fan", + "grill_fan_pyro": "Izgara + Fan", + "grill_pyro": "Izgara", + "h20_clean": "H2O-Clean", + "iot_bread": "Ekmek", + "iot_h20_clean": "h2O clean", + "leavening": "Mayalama", + "low_temp_cooking": "D\u00fc\u015f\u00fck S\u0131cakl\u0131kta Pi\u015firme", + "low_temp_cooking_fish": "D\u00fc\u015f\u00fck S\u0131cakl\u0131kta Pi\u015firme - Bal\u0131k", + "low_temp_cooking_fish_steam": "D\u00fc\u015f\u00fck S\u0131cakl\u0131kta Buharda Pi\u015firme - Bal\u0131k", + "low_temp_cooking_meat": "D\u00fc\u015f\u00fck S\u0131cakl\u0131kta Pi\u015firme - Et", + "low_temp_cooking_meat_steam": "D\u00fc\u015f\u00fck S\u0131cakl\u0131kta Buharda Pi\u015firme - Et", + "low_temp_cooking_steam": "D\u00fc\u015f\u00fck S\u0131cakl\u0131kta Buharda Pi\u015firme", + "meat": "Et", + "meat_steam": "Buharda pi\u015fmi\u015f et", + "multi_level": "\u00c7ok Seviyeli", + "paella": "Paella", + "pasta_and_bakery": "Makarna ve Ekmek", + "pizza": "Pizza", + "pyrolysis": "Piroliz", + "pyrolysis_plus": "Piroliz +", + "red_meat": "K\u0131rm\u0131z\u0131 Et", + "red_meat_steam": "Buharda pi\u015fmi\u015f k\u0131rm\u0131z\u0131 et", + "regenerate": "Yenileme", + "soft_plus": "Yumu\u015fak+", + "super_grill": "S\u00fcper Izgara", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_desctiption": "Bu i\u015flev, yiyeceklerin i\u00e7ini yumu\u015fak ve d\u0131\u015f\u0131n\u0131 gevrek tutmak i\u00e7in idealdir.\r\r\r\r\r\r\r\r\nBu i\u015flev, sa\u011fl\u0131kl\u0131 bir diyet i\u00e7in gereken kat\u0131 ya\u011f veya s\u0131v\u0131 ya\u011f miktar\u0131n\u0131 azalt\u0131r.\r\r\r\r\r\r\r\r\nIs\u0131tma elemanlar\u0131n\u0131n titre\u015fimli bir hava d\u00f6ng\u00fcs\u00fc ile kombinasyonu, e\u015fit pi\u015firme sonu\u00e7lar\u0131 sa\u011flar.", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Sebzeler", + "vegetables_cata": "Sebzeler", + "vegetables_pyro": "Sebzeler", + "water_discharge": "Su Drenaj\u0131", + "white_meat": "Beyaz Et", + "white_meat_steam": "Buharda pi\u015fmi\u015f beyaz et" + } + }, + "programs_td": { + "state": { + "active_dry": "Aktif Kurutma", + "allergy_care": "Antialerji", + "all_in_one": "Hepsi Bir Arada", + "antiallergy": "Antialerji", + "anti_odours": "Koku giderme", + "auto_care": "Oto. Bak\u0131m", + "baby": "Bebek", + "bed_quilt": "Yorgan", + "care_30": "Bak\u0131m 30", + "care_45": "Bak\u0131m 45", + "care_59": "Bak\u0131m 59", + "coloured": "Renkli", + "daily_45_min": "GUNLUK 45'", + "daily_perfect_59_min": "GUNLUK 59'", + "darks_and_coloured": "Koyu Renkliler ve Renkliler", + "delicates": "Hassas", + "duvet": "Yorgan", + "eco": "Eko Pamuk", + "ecospeed_cottons": "Eko h\u0131z Pamuklu", + "ecospeed_delicates": "ECOSEPEED Hassas", + "ecospeed_mixed": "Eko h\u0131z Kar\u0131\u015f\u0131k", + "extra_hygiene": "EKSTRA HIJYEN", + "fitness": "Fitness", + "fresh_care": "Yenileme Bak\u0131m\u0131", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Havlular", + "hqd_bed_sheets": "\u00c7ar\u015faflar", + "hqd_bulky": "Hacimli e\u015fyalar", + "hqd_casual": "G\u00fcndelik", + "hqd_cold_wind_30": "Serin esinti 30 dakika", + "hqd_cold_wind_timing": "Serin esinti ", + "hqd_cotton": "Pamuk", + "hqd_curtain": "Perdeler", + "hqd_delicate": "Narin \u00c7ama\u015f\u0131rlar", + "hqd_diaper": "Bebek bezi", + "hqd_duvet": "Nevresim", + "hqd_feather": "\u015ei\u015fme montlar", + "hqd_hot_wind_timing": "S\u0131cak hava", + "hqd_hygienic": "Hijyen", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Ceketler", + "hqd_jeans": "Kot pantolon", + "hqd_luxury": "Konfor", + "hqd_mix": "Kar\u0131\u015f\u0131k", + "hqd_night_dry": "Gece kurutma", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "H\u0131zl\u0131 20", + "hqd_quick_30": "H\u0131zl\u0131 30", + "hqd_quick_dry": "H\u0131zl\u0131 kurutma", + "hqd_quilt": "Yorganlar", + "hqd_refresh": "Yenileme", + "hqd_school_uniform": "Okul \u00fcniformas\u0131", + "hqd_shirt": "G\u00f6mlekler", + "hqd_shoes": "Ayakkab\u0131lar", + "hqd_silk": "\u0130pek", + "hqd_sports": "Spor", + "hqd_synthetics": "Sentetikler", + "hqd_timer": "Zaman Ayarl\u0131", + "hqd_towel": "Havlular", + "hqd_underwear": "\u0130\u00e7 \u00e7ama\u015f\u0131r\u0131", + "hqd_warm_up": "Is\u0131tma", + "hqd_wool": "Y\u00fcn", + "hqd_working_suit": "\u0130\u015f giysisi", + "hygiene": "Hijyen", + "iot_checkup": "Kontrol", + "iot_dry_anti_mites": "Anti-akar", + "iot_dry_baby": "Bebek", + "iot_dry_backpacks": "S\u0131rt \u00c7antalar\u0131", + "iot_dry_bathrobe": "Bornoz", + "iot_dry_bed_linen": "\u00c7ar\u015faf", + "iot_dry_bed_quilt": "Yorgan", + "iot_dry_cotton": "Pamuklular", + "iot_dry_cuddly_toys": "Yumu\u015fak Oyuncaklar", + "iot_dry_curtains": "Perdeler", + "iot_dry_dehumidifier": "Nem giderici", + "iot_dry_delicates": "Hassas", + "iot_dry_delicate_tablecloths": "Hassas masa \u00f6rt\u00fcleri", + "iot_dry_denim_jeans": "Denim - kot pantolon", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Yorgan", + "iot_dry_easy_iron_cotton": "S\u00fcper Kolay \u00dct\u00fcleme", + "iot_dry_easy_iron_synthetics": "Sentetikler S\u00fcper Kolay \u00dct\u00fc", + "iot_dry_gym_fit": "Spor k\u0131yafetleri", + "iot_dry_lingerie": "\u0130\u00e7 \u00c7ama\u015f\u0131r\u0131", + "iot_dry_mixed": "Kar\u0131\u015f\u0131k", + "iot_dry_playsuits": "Oyun elbiseleri", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "H\u0131zl\u0131 59'.", + "iot_dry_refresh": "Yenileme", + "iot_dry_regenerates_waterproof": "Su ge\u00e7irmezli\u011fi art\u0131rmak", + "iot_dry_relax_creases": "K\u0131r\u0131\u015f\u0131kl\u0131k A\u00e7ma", + "iot_dry_shirts": "G\u00f6mlek", + "iot_dry_small_load": "Az \u00c7ama\u015f\u0131r", + "iot_dry_swimsuits_and_bikinis": "Mayolar", + "iot_dry_synthetics": "Sentetik", + "iot_dry_synthetic_dry": "Sentetik Kurutma", + "iot_dry_tablecloths": "Masa \u00f6rt\u00fcleri", + "iot_dry_technical_fabrics": "Teknik Kuma\u015flar", + "iot_dry_warm_embrace": "S\u0131cak Hava", + "iot_dry_wool": "Saf y\u00fcn markas\u0131", + "jeans": "Kot", + "mix_and_dry": "Kar\u0131\u015f\u0131k ve Kuru", + "pets": "Evcil hayvanlar", + "pre_iron": "\u00d6n \u00dct\u00fcleme", + "rapid_30": "Rapid 30", + "rapid_45": "45 dak. h\u0131zl\u0131", + "rapid_59": "M\u00fckemmel H\u0131zl\u0131 59 dk", + "refresh": "Yenileme", + "relax_creases": "K\u0131r\u0131\u015f\u0131kl\u0131k A\u00e7ma", + "saving_30_min": "EKO 30'", + "shirts": "G\u00f6mlekler", + "shoes": "Ayakkab\u0131lar", + "small_load": "Az \u00c7ama\u015f\u0131r", + "soft_care": "Yumu\u015fak Bak\u0131m", + "sport_plus": "Spor+", + "super_easy_iron_misti": "S\u00fcper Kolay \u00dct\u00fc kar\u0131\u015f\u0131k", + "super_easy_iron_xxl": "S\u00fcper Kolay \u00dct\u00fc XXL", + "super_fast_cottons": "S\u00fcper H\u0131zl\u0131 Pamuklu", + "super_fast_delicates": "S\u00fcper H\u0131zl\u0131 Hassas", + "synthetics": "Sentetik", + "total_care": "Total Care", + "trainers": "Spor Ayakkab\u0131lar\u0131", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Su Ge\u00e7irmez Canland\u0131rma", + "whites": "Beyazlar", + "wool": "Y\u00fcnl\u00fcleri Kurutma", + "woolmark": "Saf y\u00fcn markas\u0131", + "xxl_load": "XXL \u00c7ama\u015f\u0131r", + "zoom_59": "Yak\u0131nla\u015ft\u0131r 59" + } + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "20\u00b0 Renkli ve Pamuklular", + "20_degrees_new_energy_label": "20\u00b0C", + "active_steam": "Buhar", + "active_wash": "Aktif Y\u0131kama", + "active_wash_steam": "Aktif Y\u0131kama", + "allergy_care": "Alerji Bak\u0131m\u0131", + "allergy_care_pro": "Anti-Alerji Pro", + "all_in_one_49": "Hepsi bir Arada 49'.", + "all_in_one_59": "Hepsi bir Arada 59'.", + "all_in_one_59_steam": "Aktif Y\u0131kama + Buhar", + "autocare": "Otomatik bak\u0131m", + "autoclean": "Tambur temizli\u011fi", + "baby_60": "Bebek K\u0131yafetleri 60\u00b0C", + "care_14": "Hizli 14'", + "care_30": "Hizli 30'", + "care_44": "Hizli 44'", + "checkup": "Check-up", + "colour_59": "Renkli 59'", + "colour_59_steam": "Renkliler 59' + Buhar", + "cottons": "Pamuklular", + "cottons_prewash": "Pamuklular + \u00d6n Y\u0131kama", + "cottons_steam": "Pamuklular + Buhar", + "cotton_care_59": "Pamuklular 59 dk", + "delicate_59": "Narin 59'", + "delicate_silk": "Hassas \u0130pek", + "delicate_silk_steam": "Hassas \u0130pek + Buhar", + "delicati_59": "Narin 59'", + "delicati_59_steam": "Narin 59'", + "drain_spin": "Bo\u015faltma +ve S\u0131kma", + "easy_iron": "Kolay \u00dct\u00fcleme", + "eco_40_60_new_energy_label": "Eco 40-60", + "extra_care": "Karisik Kirliler", + "fitness": "Az Kirli Spor", + "fitness_care": "Az Kirli Spor", + "fresh_care": "Yenileme Bak\u0131m\u0131", + "fresh_care_steam": "Fresh Care + Buhar", + "handwash_wool": "Elde Y\u0131kama ve Y\u00fcnl\u00fcler", + "high_dry": "Pamuklular kurutma", + "hqd_20_degrees": "Pamuklu 20\u2103", + "hqd_allergy": "Alerji Bak\u0131m\u0131", + "hqd_autoclean": "Tambur temizli\u011fi", + "hqd_babycare": "Bebek Bak\u0131m", + "hqd_checkup": "Check-Up", + "hqd_cottons": "Pamuklular", + "hqd_delicate": "Narin \u00c7ama\u015f\u0131rlar", + "hqd_delicate_cradle": "Narin \u00c7ama\u015f\u0131rlar", + "hqd_dry": "Pamuklular kurutma", + "hqd_dry_synthetics": "Kar\u0131\u015f\u0131k kurutma", + "hqd_duvet": "Yorgan", + "hqd_eco_40_60_degrees": "Eco 40-60", + "hqd_handwash_wool": "Y\u00fcnl\u00fcler", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "Kar\u0131\u015f\u0131k", + "hqd_quick_15": "H\u0131zl\u0131 15'", + "hqd_quick_wash_57": "H\u0131zl\u0131 Y\u0131kama 57 dak", + "hqd_rapid_wash_and_dry": "Y\u0131kama ve kurutma", + "hqd_refresh": "Yenileme", + "hqd_rinse": "Durulama", + "hqd_shirts": "G\u00f6mlekler", + "hqd_smart": "Smart A.I.", + "hqd_spin": "S\u0131kma", + "hqd_sport": "Spor", + "hqd_super_fast": "H\u0131zl\u0131 39\u2019", + "hqd_synthetic_and_coloured": "Sentetikler", + "hygiene_59": "Hijyen 59'", + "hygiene_60": "Hijyen 60\u00b0", + "hygiene_plus_59": "Hijyen 59'", + "hygiene_plus_59_min": "Hijyen 59'", + "hygiene_pro _49_min": "Hygiene Pro 49 '", + "hygiene_pro_49_min": "Hygiene Pro 49 min", + "hygiene_pro_steam": "Hygiene Pro + Buhar", + "intensive_40": "Yo\u011fun 40\u00b0C", + "intensive_40_steam": "Yo\u011fun 40\u00b0C + Buhar", + "iot_active_steam": "Buhar", + "iot_active_wash_steam": "Aktif Y\u0131kama", + "iot_allergy_care_pro": "Anti-Alerji Pro", + "iot_all_in_one_59_steam": "Aktif Y\u0131kama + Buhar", + "iot_checkup": "Check-up", + "iot_colour_59_steam": "Renkliler 59' + Buhar", + "iot_cottons_steam": "Pamuklular + Buhar", + "iot_delicate_silk_steam": "Hassas \u0130pek + Buhar", + "iot_delicati_59_steam": "Narin 59'", + "iot_dry_air_refresh": "Hava Yenileme", + "iot_dry_anti_mites": "Akar \u00f6nleyici", + "iot_dry_baby": "Bebek", + "iot_dry_backpacks": "S\u0131rt \u00e7antalar\u0131", + "iot_dry_bathrobe": "Bornoz ve g\u00f6zenekli kuma\u015flar", + "iot_dry_bed_linen": "\u00c7ar\u015faflar", + "iot_dry_cotton_dry": "Pamuklular kurutma", + "iot_dry_cuddly_toys": "Pel\u00fc\u015f hayvanlar", + "iot_dry_curtains": "Perdeler", + "iot_dry_dehumidifier": "Nem giderici", + "iot_dry_delicates_antiallergy": "Narinler - anti-alerji", + "iot_dry_delicate_tablecloths": "Narin masa \u00f6rt\u00fcleri", + "iot_dry_denim_jeans": "Denim - Kot Pantolon", + "iot_dry_easy_iron_cotton": "Kolay \u00dct\u00fc - Pamuklular", + "iot_dry_easy_iron_synthetics": "Kolay \u00dct\u00fc - Sentetikler", + "iot_dry_gym_fit": "Fitness - spor k\u0131yafetleri", + "iot_dry_lingerie": "\u0130\u00e7 \u00e7ama\u015f\u0131rlar\u0131", + "iot_dry_mixed_dry": "Kar\u0131\u015f\u0131k kurutma", + "iot_dry_rapid_60_min_delicates": "H\u0131zl\u0131 60' - Narinler", + "iot_dry_shirts": "G\u00f6mlekler", + "iot_dry_swimsuits_and_bikinis": "Mayolar", + "iot_dry_synthetics": "Sentetik Kurutma", + "iot_dry_synthetic_dry": "Sentetik Kurutma", + "iot_dry_tablecloths": "Masa \u00f6rt\u00fcleri", + "iot_dry_technical_fabrics": "Teknik kuma\u015flar", + "iot_dry_warm_embrace": "Il\u0131k d\u00f6nd\u00fcrme", + "iot_dry_wool_dry": "Y\u00fcnl\u00fc kurutma", + "iot_easy_iron": "Kolay \u00dct\u00fcleme", + "iot_fresh_care_steam": "Fresh Care + Buhar", + "iot_hygiene_pro_steam": "Hygiene Pro + Buhar", + "iot_intensive_40_steam": "Yo\u011fun 40\u00b0C + Buhar", + "iot_mixed_steam": "Kar\u0131\u015f\u0131k + Buhar", + "iot_mix_and_colour_59_steam": "Kar\u0131\u015f\u0131k ve Renkliler 59' + Buhar", + "iot_perfect_cotton_59_steam": "Kirli Pamuklular 59'", + "iot_rapid_a_class_60_steam": "H\u0131zl\u0131 A S\u0131n\u0131f\u0131 60 + Buhar", + "iot_resistant_cotton_steam": "Pamuklular + Buhar", + "iot_shirts_steam": "G\u00f6mlek + Buhar", + "iot_single_item_steam": "Tek \u00c7ama\u015f\u0131r + Buhar", + "iot_smart_wash": "Ak\u0131ll\u0131 Y\u0131kama", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "\u00d6zel program 39' + Buhar", + "iot_steam_hygiene_plus": "Hijyen Art\u0131 Buhar ", + "iot_synthetic_and_coloured_steam": "Sentetikler ve Renkliler + Buhar", + "iot_wash_and_dry": "Y\u0131kama ve kurutma", + "iot_wash_anti_mites": "Akar \u00f6nleyici", + "iot_wash_anti_odor": "Koku giderici", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "Dezenfektan", + "iot_wash_baby_sanitizer_steam": "Bebek Dezenfektan\u0131 + Buhar", + "iot_wash_backpacks": "S\u0131rt \u00e7antalar\u0131", + "iot_wash_backpacks_zelig": "S\u0131rt \u00c7antalar\u0131", + "iot_wash_bathrobe": "Bornoz ve havlular", + "iot_wash_bathrobe_steam": "Bornoz + Buhar", + "iot_wash_bed_linen": "\u00c7ar\u015faflar", + "iot_wash_bed_linen_steam": "\u00c7ar\u015faflar + Buhar", + "iot_wash_bed_linen_zelig": "\u00c7ar\u015faflar", + "iot_wash_big_single_load": "B\u00fcy\u00fck tek y\u00fck", + "iot_wash_bleaching": "Beyazlatma", + "iot_wash_blood_stains": "Kan lekeleri", + "iot_wash_cashmere": "Ka\u015fmir", + "iot_wash_chocolate_stains": "\u00c7ikolata lekeleri", + "iot_wash_cold_wash": "So\u011fuk Y\u0131kama", + "iot_wash_colored": "Renkli", + "iot_wash_colored_anti_stain": "Renkliler i\u00e7in leke \u00e7\u0131karma", + "iot_wash_colored_delicate": "Renkli hassas", + "iot_wash_coloured": "Renkliler", + "iot_wash_coloured_bed_linen": "Renkli Nevresim", + "iot_wash_coloured_bed_linen_steam": "Renkli Nevresim + Buhar", + "iot_wash_coloured_curtains": "Renkli Perdeler", + "iot_wash_coloured_shirts": "Renkli G\u00f6mlekler", + "iot_wash_coloured_shirts_steam": "Renkli G\u00f6mlekler + Buhar", + "iot_wash_coloured_steam": "Renkliler + Buhar", + "iot_wash_coloured_tableclothes": "Renkli Masa \u00d6rt\u00fcs\u00fc", + "iot_wash_coloured_tableclothes_steam": "Renkli Masa \u00d6rt\u00fcs\u00fc + Buhar", + "iot_wash_cotton": "Pamuklular", + "iot_wash_cotton_steam": "Pamuklular + Buhar", + "iot_wash_cuddly_toys": "Pel\u00fc\u015f hayvanlar", + "iot_wash_curtains": "Perdeler", + "iot_wash_curtains_steam": "Perdeler+Buhar", + "iot_wash_curtains_zelig": "Perdeler", + "iot_wash_dark": "Koyu renkli giysiler", + "iot_wash_darks_and_coloured_44": "Koyu ve renkliler 44'", + "iot_wash_darks_and_coloured_59": "Koyu ve renkliler 59'", + "iot_wash_darks_and_coloured_xl": "Koyu ve renkliler XL", + "iot_wash_dark_steam": "Koyu renkli giysiler + Buhar", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "Narin \u00c7ama\u015f\u0131rlar", + "iot_wash_delicate_antiallergy": "Narin \u00e7ama\u015f\u0131rlar i\u00e7in anti-alerji", + "iot_wash_delicate_antiallergy_steam": "Narin \u00e7ama\u015f\u0131rlar i\u00e7in anti-alerji + Buhar", + "iot_wash_delicate_antiallergy_zelig": "Narin \u00e7ama\u015f\u0131rlar i\u00e7in anti-alerji", + "iot_wash_delicate_colors": "Renkli narin \u00e7ama\u015f\u0131rlar", + "iot_wash_delicate_colors_steam": "Renkliler + Buhar", + "iot_wash_delicate_dark": "Hassas koyu", + "iot_wash_delicate_steam": "Narin \u00c7ama\u015f\u0131rlar + Buhar", + "iot_wash_delicate_tablecloths": "Narin masa \u00f6rt\u00fcleri", + "iot_wash_delicate_tablecloths_steam": "Narin masa \u00f6rt\u00fcleri + Buhar", + "iot_wash_delicate_whites": "Hassas beyazlar", + "iot_wash_denim_jeans": "Denim - kot pantolon", + "iot_wash_diving_suits": "Dalg\u0131\u00e7 elbiseleri", + "iot_wash_diving_suits_zelig": "Dalg\u0131\u00e7 elbiseleri", + "iot_wash_down_jackets": "\u015ei\u015fme montlar", + "iot_wash_down_jackets_zelig": "\u015ei\u015fme montlar", + "iot_wash_duvet": "Yorgan", + "iot_wash_fruit_stains": "Meyve lekeleri", + "iot_wash_gym_fit": "Fitness - spor k\u0131yafetleri", + "iot_wash_handwash": "Elde y\u0131kama", + "iot_wash_handwash_colored": "Elde y\u0131kama renkli", + "iot_wash_handwash_dark": "Elde y\u0131kama koyu renkli", + "iot_wash_lingerie": "\u0130\u00e7 \u00e7ama\u015f\u0131rlar\u0131", + "iot_wash_masks_refresh": "Maskeleri Yenileme", + "iot_wash_masks_sanification": "Maske Sterilize Etme", + "iot_wash_masks_sanification_steam": "Maske Sterilize Etme + Buhar", + "iot_wash_mats": "Hal\u0131lar", + "iot_wash_men_s_trousers": "Pantolonlar\u0131", + "iot_wash_mixed": "Kar\u0131\u015f\u0131k", + "iot_wash_mixed_steam": "Kar\u0131\u015f\u0131k + Buhar", + "iot_wash_mix_and_coloured_44": "Kar\u0131\u015f\u0131k ve renkli 44'", + "iot_wash_mix_and_coloured_59": "Kar\u0131\u015f\u0131k ve renkli 59'", + "iot_wash_mix_and_coloured_xl": "Kar\u0131\u015f\u0131k ve renkli XL", + "iot_wash_new_clothes": "Yeni k\u0131yafetler", + "iot_wash_perfect_white": "Kusursuz beyazlar", + "iot_wash_perfect_white_steam": "Kusursuz beyazlar + Buhar", + "iot_wash_pets": "Evcil hayvan aksesuarlar\u0131", + "iot_wash_pets_hair_removal": "Evcil Hayvan T\u00fcy\u00fc Temizleme", + "iot_wash_pets_odours_stains_removal": "Evcil Hayvan Kokular\u0131n\u0131 ve Lekelerini Giderme", + "iot_wash_pets_steam": "Evcil hayvan aksesuarlar\u0131", + "iot_wash_playsuits": "Oyun elbiseleri", + "iot_wash_playsuits_steam": "Oyun elbiseleri + Buhar", + "iot_wash_quick_drum_cleaner": "H\u0131zl\u0131 tamburlu temizleyici", + "iot_wash_rapid_14": "H\u0131zl\u0131 14\u2019", + "iot_wash_rapid_30": "H\u0131zl\u0131 30\u2019", + "iot_wash_rapid_44": "H\u0131zl\u0131 44'", + "iot_wash_rapid_59": "H\u0131zl\u0131 59'", + "iot_wash_rapid_59_steam": "H\u0131zl\u0131 59' + Buhar", + "iot_wash_refresh_14_min": "Yenileme 14'", + "iot_wash_resistant_colored": "Dayan\u0131kl\u0131 renkli", + "iot_wash_resistant_dark": "Dayan\u0131kl\u0131 koyu renkli", + "iot_wash_resistant_whites": "Dayan\u0131kl\u0131 beyazlar", + "iot_wash_rinse": "Durulama", + "iot_wash_shirts": "G\u00f6mlekler", + "iot_wash_shirts_steam": "G\u00f6mlekler + Buhar", + "iot_wash_silk": "\u0130pek", + "iot_wash_ski_suit": "Kayak giysileri", + "iot_wash_ski_suit_zelig": "Kayak giysileri", + "iot_wash_spin": "S\u0131kma", + "iot_wash_sport": "Spor", + "iot_wash_sport_anti_odor": "Koku \u00d6nleyici Spor Giyim", + "iot_wash_sport_anti_odor_zelig": "Koku \u00d6nleyici Spor Giyim", + "iot_wash_stains_remover": "Leke \u00e7\u0131kar\u0131c\u0131", + "iot_wash_swimsuits_and_bikinis": "Mayolar", + "iot_wash_synthetic": "Sentetikler", + "iot_wash_synthetic_steam": "Sentetikler + Buhar", + "iot_wash_tablecloths": "Masa \u00f6rt\u00fcleri", + "iot_wash_tablecloths_steam": "Masa \u00f6rt\u00fcleri + Buhar", + "iot_wash_technical_fabrics": "Teknik kuma\u015flar", + "iot_wash_technical_fabrics_zelig": "Teknik kuma\u015flar", + "iot_wash_technical_jackets": "Teknik ceketler", + "iot_wash_technical_jackets_zelig": "Teknik ceketler", + "iot_wash_trainers": "Spor ayakkab\u0131lar\u0131", + "iot_wash_whites": "Beyazlar", + "iot_wash_whites_44": "Beyazlar 44'", + "iot_wash_whites_59": "Beyazlar 59'", + "iot_wash_whites_xl": "Beyazlar XL", + "iot_wash_wine_stains": "\u015earap lekeleri", + "iot_wash_wool": "Y\u00fcnl\u00fcler", + "jeans": "Kot pantolon", + "jeans_60": "Kot", + "low_dry": "Kar\u0131\u015f\u0131k kurutma", + "mixed": "Kar\u0131\u015f\u0131k", + "mixed_and_colored_59": "Kar\u0131\u015f\u0131k ve Renkliler 59'", + "mixed_steam": "Kar\u0131\u015f\u0131k + Buhar", + "mix_and_colour_59": "Karisik Renkliler 59'", + "mix_and_colour_59_steam": "Kar\u0131\u015f\u0131k ve Renkliler 59' + Buhar", + "night_and_day": "Gece ve G\u00fcnd\u00fcz", + "night_wash": "Gece Program\u0131", + "perfect_59": "Kusursuz 59'", + "perfect_cotton_59": "Kirli Pamuklular 59'", + "perfect_cotton_59_steam": "Kirli Pamuklular 59'", + "perfect_whites_59": "M\u00fckemmel beyazl\u0131k 59'", + "rapid_14_min": "H\u0131zl\u0131 14 Dk", + "rapid_30_min": "H\u0131zl\u0131 30 dk", + "rapid_44_min": "H\u0131zl\u0131 44 dk", + "rapid_a_class_60": "H\u0131zl\u0131 S\u0131n\u0131f A 60", + "rapid_a_class_60_steam": "H\u0131zl\u0131 A S\u0131n\u0131f\u0131 60 + Buhar", + "rapid_wash_and_dry_59_min": "Y\u0131kama ve Kurutma 59'.", + "resistant_cotton": "Pamuklular", + "resistant_cotton_steam": "Pamuklular + Buhar", + "rinse": "Durulama", + "shirts_steam": "G\u00f6mlek + Buhar", + "silent_night": "Gece Program\u0131", + "single_item": "Tek \u00c7ama\u015f\u0131r", + "single_item_steam": "Tek \u00c7ama\u015f\u0131r + Buhar", + "smart_wash": "Ak\u0131ll\u0131 Y\u0131kama", + "soft_care": "Yumu\u015fak Bak\u0131m", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "Gunluk Yikama 39'", + "special_39_full_load": "Gunluk Yikama 39'", + "special_39_full_load_steam": "\u00d6zel program 39' + Buhar", + "special_49": "\u00d6zel 49'", + "sport_39": "Spor 39'", + "sport_plus_29": "Cok Kirli Spor 29\"", + "sport_plus_39": "Col kirli spor 39'", + "steam_39": "Buhar 39'", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro - Pamuklular", + "steam_care_pro_delicates": "Steam Care Pro - Narin \u00e7ama\u015f\u0131rlar", + "steam_care_pro_synthetic": "Steam Care Pro - Sentetikler", + "steam_hygiene_plus": "Hijyen Art\u0131 Buhar ", + "synthetics": "Sentetikler", + "synthetic_and_coloured": "Sentetikler ve Renkliler", + "synthetic_and_coloured_steam": "Sentetikler ve Renkliler + Buhar", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "Toplam Bak\u0131m", + "tumbling": "D\u00f6nd\u00fcrme", + "wool": "Y\u00fcnl\u00fcler", + "wool_and_delicates_49": "Y\u00fcnl\u00fc/Hassas 49'", + "wool_dry": "Y\u00fcnl\u00fc kurutma", + "wool_soft_care": "Y\u00fcnl\u00fc & Hassas" + } + } } } } \ No newline at end of file diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index 55c2cd4..1a42639 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -66,6 +66,650 @@ "6": "Hot rinse" } } + }, + "select": { + "programs_dw": { + "state": { + "59_min": "Rapid 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "\u81ea\u52a8\u901a\u752850\u2103-60\u2103", + "auto_universal_plus": "\u81ea\u52a8\u901a\u7528+ 65\u2103-75\u2103", + "auto_universal_plus_soil": "\u81ea\u52a8\u901a\u7528+ 65\u2103-75\u2103", + "auto_universal_soil": "\u81ea\u52a8\u901a\u752850\u2103-60\u2103", + "auto_wash": "\u81ea\u52a8\u6d17\u6da4", + "auto_wash_soil": "\u81ea\u52a8\u6d17\u6da4", + "classe_a_59": "A\u7ea71\u5c0f\u65f665\u2103", + "delicate": "\u6613\u788e45\u2103", + "dishwasher_care": "\u6c34\u57a2\u6e05\u6d01\u5faa\u73af", + "eco": "\u8282\u80fd", + "eco_asynch": "\u7ecf\u6d4e45\u2103", + "eco_bldc": "\u7ecf\u6d4e45\u2103", + "eco_synch": "\u7ecf\u6d4e45\u2103", + "gentle_wash": "Gentle wash", + "glass": "\u73bb\u7483", + "glass _care": "Glass Care", + "glassware": "\u73bb\u7483\u5668\u76bf45\u00b0C", + "glass_care": "Glass Care", + "hygiene": "\u536b\u751f", + "hygiene_plus": "\u6d88\u6bd2\u6d17+75\u00b0C", + "intensive": "\u52a0\u5f3a ", + "intensive_rapid": "\u5f3a\u5316\u5feb\u901f", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "\u81ea\u52a8\u901a\u752850\u2103-60\u2103", + "iot_auto_wash_soil": "\u81ea\u52a8\u6d17\u6da4", + "iot_baby_care": "\u5a74\u513f\u670d", + "iot_breakfast": "\u65e9\u9910", + "iot_checkup": "\u68c0\u6d4b", + "iot_china_crystals": "\u4e2d\u5f0f\u77f3\u82f1\u5668\u76bf", + "iot_classe_a_59": "Rapid 59'", + "iot_cocktail_glasses": "\u9e21\u5c3e\u9152\u676f", + "iot_cocktail_glasses_soil": "\u9e21\u5c3e\u9152\u676f", + "iot_daily_care": "\u65e5\u5e38\u6e05\u6d17", + "iot_daily_care_soil": "\u65e5\u5e38\u6e05\u6d17", + "iot_delicate": "\u6613\u788e45\u2103", + "iot_dinner_for_two": "2\u4eba\u9910", + "iot_dinner_for_two_soil": "2\u4eba\u9910", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "\u7ecf\u6d4e45\u2103", + "iot_eco_bldc": "\u7ecf\u6d4e45\u2103", + "iot_eco_synch": "\u7ecf\u6d4e45\u2103", + "iot_extra_hygiene": "\u989d\u5916\u6d88\u6bd2", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "\u5bb6\u5ead\u805a\u4f1a", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "\u6d3e\u5bf9\u7528\u9910\u5177", + "iot_party_soil": "\u6d3e\u5bf9\u7528\u9910\u5177", + "iot_pizza_menu": "Pizza\u9910\u5177", + "iot_pizza_menu_soil": "Pizza\u9910\u5177", + "iot_plastic_tupperware": "\u5851\u6599\u9910\u5177", + "iot_porcelain": "\u74f7\u5668", + "iot_pot_&_pans": "\u9505\u7c7b", + "iot_pot_&_pans_soil": "\u9505\u7c7b", + "iot_power_mix_wash": "\u6df7\u5408\u6d17\u6da4", + "iot_power_mix_wash_soil": "\u6df7\u5408\u6d17\u6da4", + "iot_prewash": "\u9884\u6d17", + "iot_pyrex_and_glassware": "\u73bb\u7483\u5668\u76bf", + "iot_rapid_29": "Rapid 29'", + "iot_rapid_39": "\u5feb\u901f 39' 60\u00b0C", + "iot_single": "\u5355\u4eba\u9910", + "iot_steam": "\u84b8\u6c7d\u6d1775\u00b0C", + "iot_super_flash": "\u8d85\u5feb\u6d17", + "iot_super_wash": "\u5f3a\u529b\u6d17\u6da4", + "iot_turbopower": "\u6da1\u8f6e\u52a8\u529b", + "iot_universal": "\u901a\u752860\u00b0C", + "iot_wok_grids_maxi_pans": "\u7279\u6b8a\u9505\u7c7b", + "iot_wok_grids_maxi_pans_soil": "\u7279\u6b8a\u9505\u7c7b", + "iot_yes_quick_cycle": "Yes Quick", + "night": "\u8d85\u975955\u2103", + "prewash": "\u9884\u6d17", + "rapid_20": "Rapid 20'", + "rapid_24": "Rapid 24'", + "rapid_29": "Rapid 29' 50\u00b0C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "\u5feb\u901f 39' 60\u00b0C", + "rapid_49": "Rapid 49'", + "rapid_59": "Rapid 59'", + "sanitising": "\u6d88\u6bd2", + "silence": "Silence", + "silent": "\u591c\u95f4", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "special": "\u7279\u6b8a", + "special_pw_prz": "\u7279\u6b8a", + "steam": "\u84b8\u6c7d\u6d1775\u00b0C", + "steam_plus": "\u84b8\u6c7d + 75\u00b0C", + "total_care": "Total Care 50\u00b0C", + "ultra_silence": "\u8d85\u975955\u2103", + "ultra_silent": "\u8d85\u975955\u2103", + "universal": "\u901a\u752860\u00b0C", + "universal_plus": "\u901a\u7528+ 70\u00b0C", + "zoom_39": "Zoom 39 min" + } + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "\u7070\u8910\u8272", + "iot_special_beef_fillet": "\u725b\u6392", + "iot_special_beef_veal_stew": "\u7096\u725b\u8089\u548c\u5c0f\u725b\u8089", + "iot_special_boiled_rice": "\u716e\u996d", + "iot_special_chicken_breast": "\u9e21\u80f8\u8089", + "iot_special_chicken_legs": "\u9e21\u817f", + "iot_special_chocolate_pudding": "\u5de7\u514b\u529b\u5e03\u4e01", + "iot_special_entrecote": "\u808b\u773c\u725b\u6392", + "iot_special_fresh_tuna": "\u65b0\u9c9c\u91d1\u67aa\u9c7c", + "iot_special_grilled_vegetables": "\u70e4\u852c\u83dc", + "iot_special_lamb_cutlet": "\u7f94\u7f8a\u8089", + "iot_special_meatballs": "\u8089\u4e38", + "iot_special_minestrone": "\u610f\u5f0f\u4ec0\u9526\u852c\u83dc\u6c64", + "iot_special_mussels": "\u8d3b\u8d1d", + "iot_special_omelette": "\u714e\u86cb", + "iot_special_pancakes": "\u714e\u7cd5\u997c", + "iot_special_paris_style_peas": "\u5df4\u9ece\u5f0f\u8c4c\u8c46", + "iot_special_poached_eggs": "\u6c34\u716e\u86cb", + "iot_special_pork_fillet": "\u732a\u8089\u91cc\u810a", + "iot_special_pork_ribs": "\u732a\u6392\u9aa8", + "iot_special_prawns": "\u660e\u867e", + "iot_special_quinoa": "\u85dc\u9ea6", + "iot_special_ratatouille": "\u666e\u7f57\u65fa\u65af\u852c\u83dc\u6742\u70e9", + "iot_special_salmon_fillet": "\u4e09\u6587\u9c7c\u7247", + "iot_special_saute_potatoes": "\u7092\u571f\u8c46", + "iot_special_scallops": "\u6247\u8d1d", + "iot_special_scrambled_eggs": "\u7092\u86cb", + "iot_special_spelt": "\u65af\u4f69\u8033\u7279\u5c0f\u9ea6", + "iot_special_veggy_noodles": "\u852c\u83dc\u9762", + "iot_special_white_fish_fillet": "\u767d\u9c7c\u7247", + "iot_standard_boiling": "Boiling", + "iot_standard_frying": "\u70b8", + "iot_standard_keep_warm": "\u4fdd\u6e29", + "iot_standard_melting": "\u878d\u5316", + "iot_standard_simmering": "Simmering" + } + }, + "programs_ov": { + "state": { + "bakery": "\u610f\u5927\u5229\u9762\u548c\u70d8\u7119\u98df\u54c1", + "bakery_steam": "\u84b8\u70e4\u7684\u9762\u5305", + "bottom_heating": "\u5e95\u90e8\u52a0\u70ed ", + "bottom_heating_fan": "\u5e95\u90e8\u52a0\u70ed + \u98ce\u6247", + "bread": "\u9762\u5305", + "bread_steam": "\u84b8\u70e4\u7684\u751c\u70b9", + "convection_fan": "\u5bf9\u6d41 + \u98ce\u6247", + "convection_fan_turnspit": "\u5bf9\u6d41 + \u98ce\u6247 + \u70e4\u53c9", + "conventional": "\u5bf9\u6d41", + "conventional_turnspit": "\u5bf9\u6d41 + \u70e4\u53c9", + "defrost": "\u89e3\u51bb", + "descaling": "\u9664\u57a2", + "fish": "\u9c7c", + "fish_steam": "\u84b8\u716e\u7684\u9c7c", + "grill_cata": "\u70e4\u67b6", + "grill_fan_cata": "\u70e4\u67b6\u98ce\u6247", + "grill_fan_pyro": "\u70e4\u67b6 + \u98ce\u6247", + "grill_pyro": "\u70e4\u67b6", + "h20_clean": "H2O-Clean", + "iot_bread": "\u9762\u5305", + "iot_h20_clean": "h2O clean", + "leavening": "\u53d1\u9175", + "low_temp_cooking": "\u4f4e\u6e29\u70f9\u996a", + "low_temp_cooking_fish": "\u4f4e\u6e29\u70f9\u996a - \u9c7c\u7c7b", + "low_temp_cooking_fish_steam": "\u4f4e\u6e29\u84b8\u6c7d\u70f9\u996a - \u9c7c\u7c7b", + "low_temp_cooking_meat": "\u4f4e\u6e29\u70f9\u996a - \u8089\u7c7b", + "low_temp_cooking_meat_steam": "\u4f4e\u6e29\u84b8\u6c7d\u70f9\u996a - \u8089\u7c7b", + "low_temp_cooking_steam": "\u4f4e\u6e29\u84b8\u6c7d\u70f9\u996a", + "meat": "\u8089", + "meat_steam": "\u84b8\u716e\u7684\u8089", + "multi_level": "\u591a\u5c42", + "paella": "Paella", + "pasta_and_bakery": "\u610f\u5927\u5229\u9762\u548c\u70d8\u7119\u98df\u54c1", + "pizza": "Pizza", + "pyrolysis": "\u70ed\u89e3", + "pyrolysis_plus": "\u70ed\u89e3 +", + "red_meat": "\u7ea2\u8089", + "red_meat_steam": "\u84b8\u716e\u7684\u7ea2\u8089", + "regenerate": "\u518d\u751f", + "soft_plus": "\u8f6f+", + "super_grill": "\u8d85\u7ea7\u70e4\u67b6", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_desctiption": "\u6b64\u529f\u80fd\u7279\u522b\u9002\u5408\u4fdd\u6301\u98df\u7269\u5185\u91cc\u677e\u8f6f\uff0c\u5916\u5c42\u9165\u8106\u3002\r\r\r\n\u6b64\u529f\u80fd\u53ef\u51cf\u5c11\u6240\u9700\u7684\u6cb9\u8102\u91cf\uff0c\u4ee5\u8fbe\u5230\u5065\u5eb7\u996e\u98df\u7684\u6548\u679c\u3002\r\r\r\n\u52a0\u70ed\u5143\u4ef6\u4e0e\u7a7a\u6c14\u8109\u52a8\u5faa\u73af\r\r\r\n\u7684\u7ed3\u5408\u53ef\u786e\u4fdd\u5747\u5300\u7684\u70d8\u70e4\u6548\u679c\u3002", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "\u852c\u83dc", + "vegetables_cata": "\u852c\u83dc", + "vegetables_pyro": "\u852c\u83dc", + "water_discharge": "\u6392\u6c34", + "white_meat": "\u767d\u8089", + "white_meat_steam": "\u84b8\u716e\u7684\u767d\u8089" + } + }, + "programs_td": { + "state": { + "active_dry": "\u4e3b\u52a8\u5e72\u71e5", + "allergy_care": "Antiallergy", + "all_in_one": "All in One", + "antiallergy": "\u6297\u8fc7\u654f", + "anti_odours": "\u9664\u5473", + "auto_care": "\u81ea\u52a8\u62a4\u7406", + "baby": "\u5a74\u513f\u670d", + "bed_quilt": "\u5e8a\u88ab", + "care_30": "\u62a4\u7406 30", + "care_45": "\u62a4\u7406 45", + "care_59": "\u62a4\u7406 59", + "coloured": "\u5f69\u8272\u8863\u7269", + "daily_45_min": "\u6bcf\u65e5 45 \u5206\u949f", + "daily_perfect_59_min": "\u6bcf\u65e5\u5b8c\u7f8e 59 \u5206\u949f", + "darks_and_coloured": "\u6df1\u8272\u548c\u5f69\u8272\u8863\u7269", + "delicates": "\u7cbe\u7ec6\u7ec7\u7269", + "duvet": "\u7fbd\u7ed2\u670d", + "eco": "\u751f\u6001\u68c9", + "ecospeed_cottons": "\u7ecf\u6d4e\u901f\u5ea6\u68c9\u8d28\u8863\u7269", + "ecospeed_delicates": "\u7ecf\u6d4e\u901f\u5ea6\u7cbe\u81f4\u8863\u7269", + "ecospeed_mixed": "\u7ecf\u6d4e\u901f\u5ea6\u6df7\u5408\u8863\u7269", + "extra_hygiene": "\u989d\u5916\u536b\u751f", + "fitness": "\u5065\u8eab\u8863\u7269", + "fresh_care": "\u6e05\u65b0\u62a4\u7406", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "\u6bdb\u5dfe", + "hqd_bed_sheets": "\u5e8a\u5355", + "hqd_bulky": "\u5927\u4ef6\u7269\u54c1", + "hqd_casual": "\u4f11\u95f2", + "hqd_cold_wind_30": "\u51c9\u98ce 30 \u5206\u949f", + "hqd_cold_wind_timing": "\u51c9\u98ce ", + "hqd_cotton": "\u68c9\u5e03", + "hqd_curtain": "\u7a97\u5e18", + "hqd_delicate": "\u7cbe\u81f4\u8863\u7269", + "hqd_diaper": "\u7eb8\u5c3f\u88e4", + "hqd_duvet": "\u7fbd\u7ed2\u88ab", + "hqd_feather": "\u7fbd\u7ed2\u670d", + "hqd_hot_wind_timing": "\u70ed\u7a7a\u6c14", + "hqd_hygienic": "\u536b\u751f\u4fdd\u62a4", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "\u5939\u514b", + "hqd_jeans": "\u725b\u4ed4\u88e4", + "hqd_luxury": "\u5962\u4f88\u8863\u7269", + "hqd_mix": "\u6df7\u5408\u6750\u8d28", + "hqd_night_dry": "\u8fc7\u591c\u70d8\u5e72", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "\u5feb\u6d17 20", + "hqd_quick_30": "\u5feb\u6d17 30", + "hqd_quick_dry": "\u5feb\u901f\u5e72\u71e5", + "hqd_quilt": "\u68c9\u88ab", + "hqd_refresh": "\u6e05\u65b0", + "hqd_school_uniform": "\u6821\u670d", + "hqd_shirt": "\u886c\u886b", + "hqd_shoes": "\u978b\u5b50", + "hqd_silk": "\u4e1d\u7ef8", + "hqd_sports": "\u8fd0\u52a8\u88c5", + "hqd_synthetics": "\u5408\u6210\u7ea4\u7ef4", + "hqd_timer": "\u5b9a\u65f6", + "hqd_towel": "\u6bdb\u5dfe", + "hqd_underwear": "\u5185\u8863", + "hqd_warm_up": "\u52a0\u70ed", + "hqd_wool": "\u7f8a\u6bdb\u8863\u7269", + "hqd_working_suit": "\u5de5\u4f5c\u670d", + "hygiene": "\u536b\u751f", + "iot_checkup": "\u68c0\u6d4b", + "iot_dry_anti_mites": "\u9664\u87a8", + "iot_dry_baby": "\u5a74\u513f\u670d", + "iot_dry_backpacks": "\u80cc\u5305", + "iot_dry_bathrobe": "\u6d74\u8863", + "iot_dry_bed_linen": "\u88ab\u5355\u6795\u5957", + "iot_dry_bed_quilt": "\u5e8a\u88ab", + "iot_dry_cotton": "\u68c9\u5e03", + "iot_dry_cuddly_toys": "\u6bdb\u7ed2\u73a9\u5177", + "iot_dry_curtains": "\u7a97\u5e18", + "iot_dry_dehumidifier": "\u9664\u6e7f\u673a", + "iot_dry_delicates": "\u7cbe\u7ec6\u7ec7\u7269", + "iot_dry_delicate_tablecloths": "\u7cbe\u7ec6\u53f0\u5e03", + "iot_dry_denim_jeans": "\u725b\u4ed4\u5e03 - \u725b\u4ed4\u88e4", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "\u7fbd\u7ed2\u670d", + "iot_dry_easy_iron_cotton": "Super Easy Iron", + "iot_dry_easy_iron_synthetics": "\u8d85\u7ea7\u6613\u71a8\u5408\u6210\u7ec7\u7269", + "iot_dry_gym_fit": "\u5065\u8eab\u670d", + "iot_dry_lingerie": "\u5973\u6027\u5185\u8863", + "iot_dry_mixed": "\u6df7\u5408\u6750\u8d28", + "iot_dry_playsuits": "\u8fd0\u52a8\u88c5", + "iot_dry_rapid_30": "\u5feb\u901f 30", + "iot_dry_rapid_59": "\u5feb\u901f 59\u2019", + "iot_dry_refresh": "Refresh", + "iot_dry_regenerates_waterproof": "\u9632\u6c34\u5e03", + "iot_dry_relax_creases": "Relax Creases", + "iot_dry_shirts": "\u886c\u886b", + "iot_dry_small_load": "Small Load", + "iot_dry_swimsuits_and_bikinis": "\u6cf3\u8863", + "iot_dry_synthetics": "\u5408\u6210\u7ea4\u7ef4\u8863\u7269", + "iot_dry_synthetic_dry": "\u5408\u6210\u7ea4\u7ef4\u70d8\u5e72", + "iot_dry_tablecloths": "\u53f0\u5e03", + "iot_dry_technical_fabrics": "\u5f39\u6027\u7ec7\u7269", + "iot_dry_warm_embrace": "\u8863\u7269\u84ec\u677e", + "iot_dry_wool": "Woolmark", + "jeans": "\u725b\u4ed4\u88e4", + "mix_and_dry": "\u6df7\u5408\u5316\u7ea4\u6d17\u5e72\u4e00\u4f53", + "pets": "\u5ba0\u7269", + "pre_iron": "\u71a8\u70eb\u524d", + "rapid_30": "\u5feb\u901f 30", + "rapid_45": "\u5feb\u901f 45 \u5206\u949f", + "rapid_59": "\u5b8c\u7f8e\u5feb\u6d1759\u2032", + "refresh": "\u6e05\u65b0", + "relax_creases": "Relax Creases", + "saving_30_min": "\u8282\u7ea6 30 \u5206\u949f", + "shirts": "\u886c\u886b", + "shoes": "\u978b\u5b50", + "small_load": "Small Load", + "soft_care": "\u67d4\u8f6f\u4fdd\u517b", + "sport_plus": "Sport Plus", + "super_easy_iron_misti": "\u8d85\u6613\u71a8\u70eb\u6df7\u5408\u8863\u7269", + "super_easy_iron_xxl": "\u8d85\u6613\u71a8\u70eb\u8d85\u5927\u8863\u7269", + "super_fast_cottons": "Super Fast Cottons", + "super_fast_delicates": "Super Fast Delicates", + "synthetics": "\u5408\u6210\u7ea4\u7ef4\u8863\u7269", + "total_care": "Total Care", + "trainers": "\u8fd0\u52a8\u978b", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Waterproof Revitalize", + "whites": "\u6d45\u8272\u8863\u7269", + "wool": "\u70d8\u5e72\u7f8a\u6bdb\u8863\u7269", + "woolmark": "Woolmark", + "xxl_load": "XXL Load", + "zoom_59": "\u7f29\u653e 59" + } + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "20\u00b0 \u5f69\u8272\u548c\u68c9\u82b1", + "20_degrees_new_energy_label": "20\u00b0C", + "active_steam": "\u84b8\u6c7d", + "active_wash": "\u6d3b\u5316\u6d17\u6da4", + "active_wash_steam": "\u6d3b\u5316\u6d17\u6da4", + "allergy_care": "\u8fc7\u654f\u4fdd\u517b", + "allergy_care_pro": "Allergy Care Pro", + "all_in_one_49": "\u4e00\u4f53\u5316 49'", + "all_in_one_59": "\u4e00\u4f53\u5316 59'", + "all_in_one_59_steam": "\u6d3b\u5316\u6d17\u6da4 + \u84b8\u6c7d", + "autocare": "\u81ea\u52a8\u62a4\u7406", + "autoclean": "\u6eda\u7b52\u6e05\u6d01", + "baby_60": "\u5a74\u513f\u670d60\u2103", + "care_14": "\u7ecf\u6d4e\u4fdd\u517b 14 \u5206", + "care_30": "\u7ecf\u6d4e\u4fdd\u517b 30 \u5206", + "care_44": "\u7ecf\u6d4e\u4fdd\u517b 44 \u5206", + "checkup": "\u68c0\u6d4b", + "colour_59": "\u5f69\u8272\u8863\u7269 59'", + "colour_59_steam": "Coloureds 59' + \u84b8\u6c7d", + "cottons": "\u68c9\u5e03", + "cottons_prewash": "\u68c9\u9ebb+\u9884\u6d17", + "cottons_steam": "\u68c9\u8d28 + \u84b8\u6c7d", + "cotton_care_59": "\u68c9\u9ebb\u6d1759\"", + "delicate_59": "\u7cbe\u81f4 59'", + "delicate_silk": "\u7cbe\u81f4\u4e1d\u7ef8", + "delicate_silk_steam": "\u7cbe\u81f4\u4e1d\u7ef8 + \u84b8\u6c7d", + "delicati_59": "\u7cbe\u81f4 59'", + "delicati_59_steam": "\u7cbe\u81f4 59'", + "drain_spin": "\u8131\u6c34 + \u7529\u5e72", + "easy_iron": "\u6613\u71a8", + "eco_40_60_new_energy_label": "\u7ecf\u6d4e 40-60", + "extra_care": "\u989d\u5916\u4fdd\u517b", + "fitness": "\u5065\u8eab\u8863\u7269", + "fitness_care": "\u5065\u8eab\u8863\u7269", + "fresh_care": "\u6e05\u65b0\u62a4\u7406", + "fresh_care_steam": "\u6e05\u65b0\u62a4\u7406 + \u84b8\u6c7d", + "handwash_wool": "\u624b\u6d17\u548c\u7f8a\u6bdb\u8863\u7269", + "high_dry": "\u68c9\u8d28\u8863\u7269\u70d8\u5e72", + "hqd_20_degrees": "\u68c9\u8d28 20\u2103", + "hqd_allergy": "\u8fc7\u654f\u4fdd\u517b", + "hqd_autoclean": "\u6eda\u7b52\u6e05\u6d01", + "hqd_babycare": "\u5a74\u513f\u670d", + "hqd_checkup": "\u68c0\u6d4b", + "hqd_cottons": "\u68c9\u5e03", + "hqd_delicate": "\u7cbe\u81f4\u8863\u7269", + "hqd_delicate_cradle": "\u7cbe\u81f4\u8863\u7269", + "hqd_dry": "\u68c9\u8d28\u8863\u7269\u70d8\u5e72", + "hqd_dry_synthetics": "\u6df7\u5408\u6750\u8d28\u70d8\u5e72", + "hqd_duvet": "\u7fbd\u7ed2\u670d", + "hqd_eco_40_60_degrees": "\u7ecf\u6d4e 40-60", + "hqd_handwash_wool": "\u7f8a\u6bdb\u8863\u7269", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "\u6df7\u5408", + "hqd_quick_15": "\u5feb\u901f 15'", + "hqd_quick_wash_57": "\u5feb\u901f\u6d17\u6da4 57 \u5206\u949f", + "hqd_rapid_wash_and_dry": "\u6d17\u6da4\u4e0e\u70d8\u5e72", + "hqd_refresh": "Refresh", + "hqd_rinse": "\u6f02\u6d17", + "hqd_shirts": "\u886c\u886b", + "hqd_smart": "Smart A.I.", + "hqd_spin": "\u7529\u5e72", + "hqd_sport": "\u8fd0\u52a8\u88c5", + "hqd_super_fast": "\u5feb\u901f 39\u2019", + "hqd_synthetic_and_coloured": "\u5408\u6210\u7ea4\u7ef4", + "hygiene_59": "\u536b\u751f\u589e\u5f3a 59 \u5206", + "hygiene_60": "\u536b\u751f 60\u00b0", + "hygiene_plus_59": "\u536b\u751f\u589e\u5f3a 59 \u5206", + "hygiene_plus_59_min": "\u536b\u751f\u589e\u5f3a 59 \u5206", + "hygiene_pro _49_min": "49 \u5206\u949f\u536b\u751f\u4e13\u5bb6", + "hygiene_pro_49_min": "Hygiene Pro 49 min", + "hygiene_pro_steam": "Hygiene Pro + \u84b8\u6c7d", + "intensive_40": "\u52a0\u5f3a 40\u00b0C", + "intensive_40_steam": "Intensive 40\u00b0C + \u84b8\u6c7d", + "iot_active_steam": "\u84b8\u6c7d", + "iot_active_wash_steam": "\u6d3b\u5316\u6d17\u6da4", + "iot_allergy_care_pro": "Allergy Care Pro", + "iot_all_in_one_59_steam": "\u6d3b\u5316\u6d17\u6da4 + \u84b8\u6c7d", + "iot_checkup": "\u68c0\u6d4b", + "iot_colour_59_steam": "Coloureds 59' + \u84b8\u6c7d", + "iot_cottons_steam": "\u68c9\u8d28 + \u84b8\u6c7d", + "iot_delicate_silk_steam": "\u7cbe\u81f4\u4e1d\u7ef8 + \u84b8\u6c7d", + "iot_delicati_59_steam": "\u7cbe\u81f4 59'", + "iot_dry_air_refresh": "\u7a7a\u6c14\u6e05\u65b0", + "iot_dry_anti_mites": "\u9632\u87a8", + "iot_dry_baby": "\u5a74\u513f", + "iot_dry_backpacks": "\u80cc\u5305", + "iot_dry_bathrobe": "\u6d74\u8863\u548c\u900f\u6c14\u7ec7\u7269", + "iot_dry_bed_linen": "\u5e8a\u5355", + "iot_dry_cotton_dry": "\u68c9\u8d28\u8863\u7269\u70d8\u5e72", + "iot_dry_cuddly_toys": "\u6bdb\u7ed2\u73a9\u5177", + "iot_dry_curtains": "\u7a97\u5e18", + "iot_dry_dehumidifier": "\u9664\u6e7f\u673a", + "iot_dry_delicates_antiallergy": "\u7cbe\u81f4\u8863\u7269 - \u6297\u8fc7\u654f", + "iot_dry_delicate_tablecloths": "\u7cbe\u81f4\u684c\u5e03", + "iot_dry_denim_jeans": "\u725b\u4ed4\u5e03 - \u725b\u4ed4\u88e4", + "iot_dry_easy_iron_cotton": "\u8f7b\u677e\u71a8\u70eb - \u68c9\u5e03", + "iot_dry_easy_iron_synthetics": "\u8f7b\u677e\u71a8\u70eb - \u5408\u6210\u7ea4\u7ef4", + "iot_dry_gym_fit": "\u8fd0\u52a8 - \u5065\u8eab\u8863\u7269", + "iot_dry_lingerie": "\u5185\u8863", + "iot_dry_mixed_dry": "\u6df7\u5408\u6750\u8d28\u70d8\u5e72", + "iot_dry_rapid_60_min_delicates": "\u5feb\u901f 60' - \u7cbe\u81f4\u8863\u7269", + "iot_dry_shirts": "\u886c\u886b", + "iot_dry_swimsuits_and_bikinis": "\u6cf3\u8863", + "iot_dry_synthetics": "\u5408\u6210\u7ea4\u7ef4\u70d8\u5e72", + "iot_dry_synthetic_dry": "\u5408\u6210\u7ea4\u7ef4\u70d8\u5e72", + "iot_dry_tablecloths": "\u684c\u5e03", + "iot_dry_technical_fabrics": "\u5de5\u827a\u7ec7\u7269", + "iot_dry_warm_embrace": "\u4e2d\u6e29\u70d8\u5e72", + "iot_dry_wool_dry": "\u7f8a\u6bdb\u8863\u7269\u70d8\u5e72", + "iot_easy_iron": "\u6613\u71a8", + "iot_fresh_care_steam": "\u6e05\u65b0\u62a4\u7406 + \u84b8\u6c7d", + "iot_hygiene_pro_steam": "Hygiene Pro + \u84b8\u6c7d", + "iot_intensive_40_steam": "Intensive 40\u00b0C + \u84b8\u6c7d", + "iot_mixed_steam": "\u6df7\u5408 + \u84b8\u6c7d", + "iot_mix_and_colour_59_steam": "\u6df7\u5408\u6750\u8d28\u548c\u5f69\u8272 59' + \u84b8\u6c7d", + "iot_perfect_cotton_59_steam": "\u5b8c\u7f8e\u68c9\u8d28 59 \u5206", + "iot_rapid_a_class_60_steam": "\u5feb\u901f A \u7ea7 60 + \u84b8\u6c7d", + "iot_resistant_cotton_steam": "\u68c9\u8d28 + \u84b8\u6c7d", + "iot_shirts_steam": "\u886c\u886b + \u84b8\u6c7d", + "iot_single_item_steam": "\u5355\u4ef6\u7269\u54c1 + \u84b8\u6c7d", + "iot_smart_wash": "\u667a\u80fd\u6d17\u6da4", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "\u4e13\u7528 39' + \u84b8\u6c7d", + "iot_steam_hygiene_plus": "\u536b\u751f\u589e\u5f3a\u84b8\u6c7d ", + "iot_synthetic_and_coloured_steam": "\u5316\u7ea4\u548c\u5f69\u8272 + \u84b8\u6c7d", + "iot_wash_and_dry": "\u6d17\u6da4\u4e0e\u70d8\u5e72", + "iot_wash_anti_mites": "\u9632\u87a8", + "iot_wash_anti_odor": "\u9632\u5f02\u5473", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "\u6d88\u6bd2", + "iot_wash_baby_sanitizer_steam": "\u5a74\u513f\u7528\u54c1\u6d88\u6bd2 + \u84b8\u6c7d", + "iot_wash_backpacks": "\u80cc\u5305", + "iot_wash_backpacks_zelig": "\u80cc\u5305", + "iot_wash_bathrobe": "\u6d74\u888d\u548c\u6bdb\u5dfe", + "iot_wash_bathrobe_steam": "\u6d74\u8863 + \u84b8\u6c7d", + "iot_wash_bed_linen": "\u5e8a\u5355", + "iot_wash_bed_linen_steam": "\u5e8a\u5355 + \u84b8\u6c7d", + "iot_wash_bed_linen_zelig": "\u5e8a\u5355", + "iot_wash_big_single_load": "\u5355\u4ef6\u5927\u8863\u7269", + "iot_wash_bleaching": "\u6f02\u767d", + "iot_wash_blood_stains": "\u8840\u8ff9", + "iot_wash_cashmere": "\u7f8a\u7ed2", + "iot_wash_chocolate_stains": "\u5de7\u514b\u529b\u6e0d", + "iot_wash_cold_wash": "\u51b7\u6d17", + "iot_wash_colored": "\u5f69\u8272", + "iot_wash_colored_anti_stain": "\u53bb\u9664\u5f69\u8272\u7ec7\u7269\u4e0a\u7684\u6c61\u6e0d", + "iot_wash_colored_delicate": "\u5f69\u8272\u7cbe\u81f4", + "iot_wash_coloured": "\u989c\u8272", + "iot_wash_coloured_bed_linen": "\u5f69\u8272\u5e8a\u5355", + "iot_wash_coloured_bed_linen_steam": "\u5f69\u8272\u5e8a\u5355 + \u84b8\u6c7d", + "iot_wash_coloured_curtains": "\u5f69\u8272\u7a97\u5e18", + "iot_wash_coloured_shirts": "\u5f69\u8272\u886c\u886b", + "iot_wash_coloured_shirts_steam": "\u5f69\u8272\u886c\u886b + \u84b8\u6c7d", + "iot_wash_coloured_steam": "\u5f69\u8272 + \u84b8\u6c7d", + "iot_wash_coloured_tableclothes": "\u5f69\u8272\u684c\u5e03", + "iot_wash_coloured_tableclothes_steam": "\u5f69\u8272\u684c\u5e03 + \u84b8\u6c7d", + "iot_wash_cotton": "\u68c9\u5e03", + "iot_wash_cotton_steam": "\u68c9\u8d28 + \u84b8\u6c7d", + "iot_wash_cuddly_toys": "\u6bdb\u7ed2\u73a9\u5177", + "iot_wash_curtains": "\u7a97\u5e18", + "iot_wash_curtains_steam": "\u7a97\u5e18 + \u84b8\u6c7d", + "iot_wash_curtains_zelig": "\u7a97\u5e18", + "iot_wash_dark": "\u6df1\u8272\u8863\u7269", + "iot_wash_darks_and_coloured_44": "\u6df1\u8272\u4e0e\u5f69\u8272 44'", + "iot_wash_darks_and_coloured_59": "\u6df1\u8272\u4e0e\u5f69\u8272 59'", + "iot_wash_darks_and_coloured_xl": "\u6df1\u8272\u548c\u5f69\u8272 XL", + "iot_wash_dark_steam": "\u6df1\u8272\u7269\u54c1 + \u84b8\u6c7d", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "\u7cbe\u81f4\u8863\u7269", + "iot_wash_delicate_antiallergy": "\u7cbe\u81f4\u8863\u7269\u7684\u6297\u8fc7\u654f\u7a0b\u5e8f", + "iot_wash_delicate_antiallergy_steam": "\u6297\u8fc7\u654f\u7cbe\u81f4\u8863\u7269 + \u84b8\u6c7d", + "iot_wash_delicate_antiallergy_zelig": "\u7cbe\u81f4\u8863\u7269\u7684\u6297\u8fc7\u654f\u7a0b\u5e8f", + "iot_wash_delicate_colors": "\u989c\u8272\u7cbe\u81f4\u8863\u7269", + "iot_wash_delicate_colors_steam": "\u5f69\u8272 + \u84b8\u6c7d", + "iot_wash_delicate_dark": "\u7cbe\u81f4\u6df1\u8272", + "iot_wash_delicate_steam": "\u7cbe\u81f4\u8863\u7269 + \u84b8\u6c7d", + "iot_wash_delicate_tablecloths": "\u7cbe\u81f4\u684c\u5e03", + "iot_wash_delicate_tablecloths_steam": "\u7cbe\u81f4\u684c\u5e03 + \u84b8\u6c7d", + "iot_wash_delicate_whites": "\u7cbe\u81f4\u767d\u8272\u8863\u7269", + "iot_wash_denim_jeans": "\u725b\u4ed4\u5e03 - \u725b\u4ed4\u88e4", + "iot_wash_diving_suits": "\u6f5c\u6c34\u670d", + "iot_wash_diving_suits_zelig": "\u6f5c\u6c34\u670d", + "iot_wash_down_jackets": "\u7fbd\u7ed2\u670d", + "iot_wash_down_jackets_zelig": "\u7fbd\u7ed2\u670d", + "iot_wash_duvet": "\u7fbd\u7ed2\u670d", + "iot_wash_fruit_stains": "\u6c34\u679c\u6e0d", + "iot_wash_gym_fit": "\u8fd0\u52a8 - \u5065\u8eab\u8863\u7269", + "iot_wash_handwash": "\u624b\u6d17", + "iot_wash_handwash_colored": "\u5f69\u8272\u624b\u6d17", + "iot_wash_handwash_dark": "\u6df1\u8272\u624b\u6d17", + "iot_wash_lingerie": "\u5185\u8863", + "iot_wash_masks_refresh": "\u53e3\u7f69\u6e05\u6d17", + "iot_wash_masks_sanification": "\u53e3\u7f69\u6d88\u6bd2", + "iot_wash_masks_sanification_steam": "\u53e3\u7f69\u6d88\u6bd2 + \u84b8\u6c7d", + "iot_wash_mats": "\u5730\u6bef", + "iot_wash_men_s_trousers": "\u88e4\u5b50", + "iot_wash_mixed": "\u6df7\u5408\u6750\u8d28", + "iot_wash_mixed_steam": "\u6df7\u5408 + \u84b8\u6c7d", + "iot_wash_mix_and_coloured_44": "\u6df7\u5408\u6750\u8d28\u548c\u5f69\u8272 44'", + "iot_wash_mix_and_coloured_59": "\u6df7\u5408\u6750\u8d28\u548c\u5f69\u8272 59'", + "iot_wash_mix_and_coloured_xl": "\u6df7\u5408\u6750\u8d28\u548c\u5f69\u8272 XL", + "iot_wash_new_clothes": "\u65b0\u8863\u7269", + "iot_wash_perfect_white": "\u5b8c\u7f8e\u767d\u8272", + "iot_wash_perfect_white_steam": "\u5b8c\u7f8e\u767d\u8272 + \u84b8\u6c7d", + "iot_wash_pets": "\u5ba0\u7269\u7528\u54c1", + "iot_wash_pets_hair_removal": "\u5ba0\u7269\u6bdb\u53d1\u6e05\u9664", + "iot_wash_pets_odours_stains_removal": "\u5ba0\u7269\u5f02\u5473\u548c\u6c61\u6e0d\u6e05\u9664", + "iot_wash_pets_steam": "\u5ba0\u7269\u7528\u54c1", + "iot_wash_playsuits": "\u8fd0\u52a8\u88c5", + "iot_wash_playsuits_steam": "\u8fd0\u52a8\u88c5 + \u84b8\u6c7d", + "iot_wash_quick_drum_cleaner": "\u5feb\u901f\u6eda\u7b52\u6e05\u6d01\u5668", + "iot_wash_rapid_14": "\u5feb\u901f 14\u2019", + "iot_wash_rapid_30": "\u5feb\u901f 30\u2019", + "iot_wash_rapid_44": "\u5feb\u901f 44\u2019", + "iot_wash_rapid_59": "\u5feb\u901f 59\u2019", + "iot_wash_rapid_59_steam": "\u5feb\u901f 59' + \u84b8\u6c7d", + "iot_wash_refresh_14_min": "\u6e05\u65b0 14'", + "iot_wash_resistant_colored": "\u97e7\u6027\u5f69\u8272\u8863\u7269", + "iot_wash_resistant_dark": "\u97e7\u6027\u6df1\u8272\u8863\u7269", + "iot_wash_resistant_whites": "\u97e7\u6027\u767d\u8272\u8863\u7269", + "iot_wash_rinse": "\u6f02\u6d17", + "iot_wash_shirts": "\u886c\u886b", + "iot_wash_shirts_steam": "\u886c\u886b + \u84b8\u6c7d", + "iot_wash_silk": "\u4e1d\u7ef8", + "iot_wash_ski_suit": "\u6ed1\u96ea\u670d", + "iot_wash_ski_suit_zelig": "\u6ed1\u96ea\u670d", + "iot_wash_spin": "\u7529\u5e72", + "iot_wash_sport": "\u8fd0\u52a8\u88c5", + "iot_wash_sport_anti_odor": "\u9632\u4f53\u5473\u8fd0\u52a8\u670d", + "iot_wash_sport_anti_odor_zelig": "\u9632\u4f53\u5473\u8fd0\u52a8\u670d", + "iot_wash_stains_remover": "\u53bb\u6c61", + "iot_wash_swimsuits_and_bikinis": "\u6cf3\u8863", + "iot_wash_synthetic": "\u5408\u6210\u7ea4\u7ef4", + "iot_wash_synthetic_steam": "\u5408\u6210\u7ea4\u7ef4 + \u84b8\u6c7d", + "iot_wash_tablecloths": "\u684c\u5e03", + "iot_wash_tablecloths_steam": "\u684c\u5e03 + \u84b8\u6c7d", + "iot_wash_technical_fabrics": "\u5de5\u827a\u7ec7\u7269", + "iot_wash_technical_fabrics_zelig": "\u5de5\u827a\u7ec7\u7269", + "iot_wash_technical_jackets": "\u51b2\u950b\u8863", + "iot_wash_technical_jackets_zelig": "\u51b2\u950b\u8863", + "iot_wash_trainers": "\u8fd0\u52a8\u978b", + "iot_wash_whites": "\u767d\u8272\u8863\u7269", + "iot_wash_whites_44": "\u767d\u8272\u8863\u7269 44'", + "iot_wash_whites_59": "\u767d\u8272\u8863\u7269 59'", + "iot_wash_whites_xl": "\u767d\u8272\u8863\u7269 XL", + "iot_wash_wine_stains": "\u8461\u8404\u9152\u6e0d", + "iot_wash_wool": "\u7f8a\u6bdb\u8863\u7269", + "jeans": "\u725b\u4ed4\u88e4", + "jeans_60": "\u725b\u4ed4\u88e4", + "low_dry": "\u6df7\u5408\u6750\u8d28\u70d8\u5e72", + "mixed": "\u6df7\u5408\u6750\u8d28", + "mixed_and_colored_59": "\u6df7\u5408\u6750\u8d28\u548c\u5f69\u8272 59'", + "mixed_steam": "\u6df7\u5408 + \u84b8\u6c7d", + "mix_and_colour_59": "\u6df7\u5408\u548c\u5f69\u8272 59 \u5206", + "mix_and_colour_59_steam": "\u6df7\u5408\u6750\u8d28\u548c\u5f69\u8272 59' + \u84b8\u6c7d", + "night_and_day": "\u665a\u95f4\u548c\u65e5\u95f4", + "night_wash": "\u8fc7\u591c\u5faa\u73af", + "perfect_59": "\u5b8c\u7f8e 59'", + "perfect_cotton_59": "\u5b8c\u7f8e\u68c9\u8d28 59 \u5206", + "perfect_cotton_59_steam": "\u5b8c\u7f8e\u68c9\u8d28 59 \u5206", + "perfect_whites_59": "\u5b8c\u7f8e\u62a4\u8272 59'", + "rapid_14_min": "\u5feb\u6d1714\u5206\u949f", + "rapid_30_min": "30\u5206\u949f\u5feb\u6d17", + "rapid_44_min": "44\u5206\u949f\u5feb\u6d17", + "rapid_a_class_60": "\u5feb\u901f A \u7ea7 60", + "rapid_a_class_60_steam": "\u5feb\u901f A \u7ea7 60 + \u84b8\u6c7d", + "rapid_wash_and_dry_59_min": "\u6d17\u6da4\u5e76\u70d8\u5e72 59'", + "resistant_cotton": "\u68c9\u5e03", + "resistant_cotton_steam": "\u68c9\u8d28 + \u84b8\u6c7d", + "rinse": "\u6f02\u6d17", + "shirts_steam": "\u886c\u886b + \u84b8\u6c7d", + "silent_night": "\u8fc7\u591c\u5faa\u73af", + "single_item": "\u5355\u4ef6\u5546\u54c1", + "single_item_steam": "\u5355\u4ef6\u7269\u54c1 + \u84b8\u6c7d", + "smart_wash": "\u667a\u80fd\u6d17\u6da4", + "soft_care": "\u67d4\u8f6f\u4fdd\u517b", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "\u6bcf\u65e5 39 \u5206", + "special_39_full_load": "\u6bcf\u65e5 39 \u5206", + "special_39_full_load_steam": "\u4e13\u7528 39' + \u84b8\u6c7d", + "special_49": "\u4e13\u7528 49'", + "sport_39": "\u8fd0\u52a8\u88c5 39'", + "sport_plus_29": "\u8fd0\u52a8\u589e\u5f3a 29 \u5206", + "sport_plus_39": "\u8fd0\u52a8\u589e\u5f3a 39 \u5206", + "steam_39": "\u84b8\u6c7d 39'", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro - \u68c9", + "steam_care_pro_delicates": "Steam Care Pro - \u7cbe\u81f4\u8863\u7269", + "steam_care_pro_synthetic": "Steam Care Pro - \u5316\u7ea4", + "steam_hygiene_plus": "\u536b\u751f\u589e\u5f3a\u84b8\u6c7d ", + "synthetics": "\u5408\u6210\u7ea4\u7ef4", + "synthetic_and_coloured": "\u5408\u6210\u7ea4\u7ef4\u548c\u5f69\u8272\u8863\u7269", + "synthetic_and_coloured_steam": "\u5316\u7ea4\u548c\u5f69\u8272 + \u84b8\u6c7d", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "\u5168\u9762\u62a4\u7406", + "tumbling": "\u6eda\u7b52\u70d8\u5e72", + "wool": "\u7f8a\u6bdb\u8863\u7269", + "wool_and_delicates_49": "\u7f8a\u6bdb", + "wool_dry": "\u7f8a\u6bdb\u8863\u7269\u70d8\u5e72", + "wool_soft_care": "\u7f8a\u6bdb" + } + } } } } \ No newline at end of file diff --git a/scripts/generate_translation.py b/scripts/generate_translation.py index ae07d9a..9b12093 100644 --- a/scripts/generate_translation.py +++ b/scripts/generate_translation.py @@ -91,6 +91,14 @@ SENSOR = { "program_phases_dw": DISHWASHER_PR_PHASE, } +PROGRAMS = { + "programs_dw": "PROGRAMS.DW", + "programs_ih": "PROGRAMS.IH", + "programs_ov": "PROGRAMS.OV", + "programs_td": "PROGRAMS.TD", + "programs_wm": "PROGRAMS.WM_WD", +} + async def check_translation_files(translations): for language in LANGUAGES: @@ -136,6 +144,17 @@ def load_key(full_key, json_data, fallback=None): return result or "" +def load_keys(full_key, json_data): + blacklist = ["description", "\n", "_recipe_", "_guided_"] + first, last = full_key.split(".") + data = json_data.get(first, {}).get(last, {}) + return { + key.lower(): value + for key, value in data.items() + if not any(b in key.lower() for b in blacklist) + } + + def main(): hass = load_hass_translations() hon = load_hon_translations() @@ -150,6 +169,9 @@ def main(): state = sensor.setdefault(name, {}).setdefault("state", {}) if key := load_key(phase, original, fallback): state[str(number)] = key + for name, program in PROGRAMS.items(): + select = old.setdefault("entity", {}).setdefault("select", {}) + select.setdefault(name, {})["state"] = load_keys(program, original) save_json(base_path / f"{language}.json", old) -- 2.39.5 From d2cebfad678a0e1c753812fb9d7cf40bb04b3c13 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sat, 22 Apr 2023 21:33:49 +0200 Subject: [PATCH 056/205] Update readme for translations --- README.md | 23 +++++++++++++++++++ scripts/generate_translation.py | 39 +++++++++++++++++---------------- 2 files changed, 43 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 92d4e2c..c2e63d5 100644 --- a/README.md +++ b/README.md @@ -102,6 +102,29 @@ For every device exists a hidden button which can be used to log all info of you - Haier XIB 3B2SFS-80 - Haier XIB 6B2D3FB +## Supported Languages +Translation of internal names like programs are available for all languages which are official supported by the hOn app: +* Chinese +* Croatian +* Czech +* Dutch +* English +* French +* German +* Greek +* Hebrew +* Italian +* Polish +* Portuguese +* Romanian +* Russian +* Serbian +* Slovak +* Slovenian +* Spanish +* Turkish + + ## About this Repo The existing integrations missed some features from the app I liked to have in HomeAssistant. I tried to create a pull request, but in the structures of these existing repos, I find it hard to fit in my needs, so I basically rewrote everything. diff --git a/scripts/generate_translation.py b/scripts/generate_translation.py index 9b12093..cf81d1b 100644 --- a/scripts/generate_translation.py +++ b/scripts/generate_translation.py @@ -4,26 +4,27 @@ from pathlib import Path from pyhon import HonAPI +# These languages are official supported by hOn LANGUAGES = [ - "cs", - "de", - "el", - "en", - "es", - "fr", - "he", - "hr", - "it", - "nl", - "pl", - "pt", - "ro", - "ru", - "sk", - "sl", - "sr", - "tr", - "zh", + "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 = { -- 2.39.5 From 9c0b467d68d32dceb0bf26bb3758ba576d2c9337 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sat, 22 Apr 2023 21:42:16 +0200 Subject: [PATCH 057/205] Remove invalid translation keys --- custom_components/hon/translations/cs.json | 4 ---- custom_components/hon/translations/de.json | 4 ---- custom_components/hon/translations/el.json | 4 ---- custom_components/hon/translations/en.json | 5 +---- custom_components/hon/translations/es.json | 4 ---- custom_components/hon/translations/fr.json | 4 ---- custom_components/hon/translations/hr.json | 4 ---- custom_components/hon/translations/it.json | 4 ---- custom_components/hon/translations/nl.json | 4 ---- custom_components/hon/translations/pl.json | 4 ---- custom_components/hon/translations/pt.json | 4 ---- custom_components/hon/translations/ro.json | 4 ---- custom_components/hon/translations/ru.json | 4 ---- custom_components/hon/translations/sk.json | 4 ---- custom_components/hon/translations/sl.json | 4 ---- custom_components/hon/translations/sr.json | 4 ---- custom_components/hon/translations/tr.json | 4 ---- custom_components/hon/translations/zh.json | 4 ---- scripts/generate_translation.py | 4 +++- 19 files changed, 4 insertions(+), 73 deletions(-) diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index 030c7b8..4f85331 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -91,7 +91,6 @@ "eco_synch": "Eko 45 \u00b0C", "gentle_wash": "Gentle wash", "glass": "Sklo", - "glass _care": "Glass Care", "glassware": "Sklo 45 \u00b0C", "glass_care": "Glass Care", "hygiene": "Hygiena", @@ -127,8 +126,6 @@ "iot_pizza_menu_soil": "N\u00e1dob\u00ed na pizzu", "iot_plastic_tupperware": "Plastov\u00e9 n\u00e1dob\u00ed a Tupperware", "iot_porcelain": "Porcel\u00e1n", - "iot_pot_&_pans": "Hrnce a p\u00e1nve", - "iot_pot_&_pans_soil": "Hrnce a p\u00e1nve", "iot_power_mix_wash": "Power Mix Wash", "iot_power_mix_wash_soil": "Power Mix Wash", "iot_prewash": "P\u0159edp\u00edrka", @@ -470,7 +467,6 @@ "hygiene_60": "Hygienick\u00fd 60\u00b0", "hygiene_plus_59": "Hygienicky Plus 59'", "hygiene_plus_59_min": "Hygienicky Plus 59'", - "hygiene_pro _49_min": "Hygienick\u00fd Pro 49 '", "hygiene_pro_49_min": "Hygienick\u00fd Pro 49 min", "hygiene_pro_steam": "Hygiene Pro + p\u00e1ra", "intensive_40": "Intenzivn\u00ed 40\u00b0C", diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index 63bd206..1e2a90a 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -91,7 +91,6 @@ "eco_synch": "Eco 45\u00b0C", "gentle_wash": "Gentle wash", "glass": "Glas", - "glass _care": "Glass Care", "glassware": "Gl\u00e4ser 45 \u00b0C", "glass_care": "Glass Care", "hygiene": "Hygiene", @@ -127,8 +126,6 @@ "iot_pizza_menu_soil": "Pizzageschirr", "iot_plastic_tupperware": "Kunststoff & Tupperware", "iot_porcelain": "Porzellan", - "iot_pot_&_pans": "T\u00f6pfe & Pfannen", - "iot_pot_&_pans_soil": "T\u00f6pfe & Pfannen", "iot_power_mix_wash": "Power Mix Wash", "iot_power_mix_wash_soil": "Power Mix Wash", "iot_prewash": "Vorsp\u00fclen", @@ -470,7 +467,6 @@ "hygiene_60": "Hygiene 60\u00b0", "hygiene_plus_59": "Hygiene Plus 59'", "hygiene_plus_59_min": "Hygiene Plus 59'", - "hygiene_pro _49_min": "Hygiene Pro 49 '", "hygiene_pro_49_min": "Hygiene Pro 49 min", "hygiene_pro_steam": "Hygiene Pro + Dampf", "intensive_40": "Intensiv 40\u00b0C", diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index 5bede0e..47aac1e 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -91,7 +91,6 @@ "eco_synch": "ECO 45\u00b0C", "gentle_wash": "Gentle wash", "glass": "\u03a0\u03bf\u03c4\u03ae\u03c1\u03b9", - "glass _care": "Glass Care", "glassware": "\u03b3\u03c5\u03b1\u03bb\u03b9\u03ba\u03b1 45\u00b0C", "glass_care": "Glass Care", "hygiene": "\u03a5\u03b3\u03b9\u03b5\u03b9\u03bd\u03cc", @@ -127,8 +126,6 @@ "iot_pizza_menu_soil": "\u039c\u03b5\u03bd\u03bf\u03cd \u03a0\u03af\u03c4\u03c3\u03b1", "iot_plastic_tupperware": "\u03a0\u03bb\u03b1\u03c3\u03c4\u03b9\u03ba\u03ac & \u03a4\u03ac\u03c0\u03b5\u03c1", "iot_porcelain": "\u03a0\u03bf\u03c1\u03c3\u03b5\u03bb\u03ac\u03bd\u03b7", - "iot_pot_&_pans": "\u039a\u03b1\u03c4\u03c3\u03b1\u03c1\u03cc\u03bb\u03b5\u03c2 & \u03a4\u03b7\u03b3\u03ac\u03bd\u03b9\u03b1", - "iot_pot_&_pans_soil": "\u039a\u03b1\u03c4\u03c3\u03b1\u03c1\u03cc\u03bb\u03b5\u03c2 & \u03a4\u03b7\u03b3\u03ac\u03bd\u03b9\u03b1", "iot_power_mix_wash": "\u0399\u03c3\u03c7\u03c5\u03c1\u03ae \u03a0\u03bb\u03cd\u03c3\u03b7 \u03b3\u03b9\u03b1 \u039c\u03b9\u03ba\u03c4\u03ac", "iot_power_mix_wash_soil": "\u0399\u03c3\u03c7\u03c5\u03c1\u03ae \u03a0\u03bb\u03cd\u03c3\u03b7 \u03b3\u03b9\u03b1 \u039c\u03b9\u03ba\u03c4\u03ac", "iot_prewash": "\u03c0\u03c1\u03bf\u03c0\u03bb\u03c5\u03c3\u03b7", @@ -470,7 +467,6 @@ "hygiene_60": "\u03a5\u03b3\u03b9\u03b5\u03b9\u03bd\u03cc 60\u00b0", "hygiene_plus_59": "HYGIENE PLUS 59'", "hygiene_plus_59_min": "HYGIENE PLUS 59'", - "hygiene_pro _49_min": "Hygiene Pro 49 \u03bb\u03b5\u03c0\u03c4\u03ac", "hygiene_pro_49_min": "Hygiene Pro 49 \u03bb\u03b5\u03c0\u03c4\u03ac", "hygiene_pro_steam": "Hygiene Pro + \u0391\u03c4\u03bc\u03cc\u03c2", "intensive_40": "\u0395\u03bd\u03c4\u03b1\u03c4\u03b9\u03ba\u03cc 40\u00b0C", diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index f544d66..99a878e 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -175,7 +175,6 @@ "eco_synch": "Eco 45\u00b0C", "gentle_wash": "Gentle wash", "glass": "Glass", - "glass _care": "Glass Care", "glassware": "Glassware 45\u00b0C", "glass_care": "Glass Care", "hygiene": "Hygiene", @@ -211,8 +210,6 @@ "iot_pizza_menu_soil": "Pizza Menu", "iot_plastic_tupperware": "Plastic & Tupperware", "iot_porcelain": "Porcelain", - "iot_pot_&_pans": "Pot & Pans", - "iot_pot_&_pans_soil": "Pot & Pans", "iot_power_mix_wash": "Power Mix Wash", "iot_power_mix_wash_soil": "Power Mix Wash", "iot_prewash": "Pre-wash ", @@ -322,6 +319,7 @@ "iot_h20_clean": "h2O clean", "leavening": "Leavening", "light_fan": "Light Fan", + "light_fan\n": "Light Fan", "low_temp_cooking": "Low Temperature Cooking", "low_temp_cooking_fish": "Low Temperature Cooking - Fish", "low_temp_cooking_fish_steam": "Low Temperature Steam Cooking - Fish", @@ -559,7 +557,6 @@ "hygiene_60": "Hygiene 60\u00b0C", "hygiene_plus_59": "Hygiene Plus 59'", "hygiene_plus_59_min": "Hygiene Plus 59'", - "hygiene_pro _49_min": "Hygiene Pro 49'", "hygiene_pro_49_min": "Hygiene Pro 49'", "hygiene_pro_steam": "Hygiene Pro + Steam", "intensive_40": "Intensive 40\u00b0C", diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index dd3051c..a2fe490 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -91,7 +91,6 @@ "eco_synch": "Eco 45\u00b0C", "gentle_wash": "Gentle wash", "glass": "Cristal", - "glass _care": "Glass Care", "glassware": "Cristal 45 \u00b0C", "glass_care": "Glass Care", "hygiene": "Higiene", @@ -127,8 +126,6 @@ "iot_pizza_menu_soil": "Pizza Men\u00fa", "iot_plastic_tupperware": "Pl\u00e1stico y Tupperware", "iot_porcelain": "Porcelana", - "iot_pot_&_pans": "Ollas y Sartenes", - "iot_pot_&_pans_soil": "Ollas y Sartenes", "iot_power_mix_wash": "Power Mix Wash", "iot_power_mix_wash_soil": "Power Mix Wash", "iot_prewash": "Pre-lavado", @@ -470,7 +467,6 @@ "hygiene_60": "Higiene 60\u00b0 C", "hygiene_plus_59": "Higiene Plus 59'", "hygiene_plus_59_min": "Higiene Plus 59'", - "hygiene_pro _49_min": "Higiene Pro 49 '", "hygiene_pro_49_min": "Higiene Pro 49 min", "hygiene_pro_steam": "Higiene Pro + Vapor", "intensive_40": "Intensivo 40\u00b0C", diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index 5db951a..bc18fb4 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -91,7 +91,6 @@ "eco_synch": "Eco 45\u00b0C", "gentle_wash": "Gentle wash", "glass": "En verre", - "glass _care": "Glass Care", "glassware": "Verres 45 \u00b0C", "glass_care": "Glass Care", "hygiene": "Hygi\u00e8ne", @@ -127,8 +126,6 @@ "iot_pizza_menu_soil": "Menu Pizza", "iot_plastic_tupperware": "Plastique & Tupperware", "iot_porcelain": "Porcelaine", - "iot_pot_&_pans": "Casseroles & po\u00eales", - "iot_pot_&_pans_soil": "Casseroles & po\u00eales", "iot_power_mix_wash": "Power Mix Wash", "iot_power_mix_wash_soil": "Power Mix Wash", "iot_prewash": "Pr\u00e9lavage", @@ -470,7 +467,6 @@ "hygiene_60": "Hygi\u00e8ne 60\u00b0", "hygiene_plus_59": "Hygiene Plus 59'", "hygiene_plus_59_min": "Hygiene Plus 59'", - "hygiene_pro _49_min": "Hygiene Pro 49\u00a0'", "hygiene_pro_49_min": "Hygiene Pro 49\u00a0min", "hygiene_pro_steam": "Hygiene Pro + Vapeur", "intensive_40": "Intensif 40\u00b0C", diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index bb2fbe9..e632175 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -91,7 +91,6 @@ "eco_synch": "Eco 45\u00b0C", "gentle_wash": "Gentle wash", "glass": "Staklo", - "glass _care": "Glass Care", "glassware": "Glassware (Stakleno posu\u0111e) 45 \u00b0C", "glass_care": "Glass Care", "hygiene": "Hygiene", @@ -127,8 +126,6 @@ "iot_pizza_menu_soil": "Pizza", "iot_plastic_tupperware": "Plastika", "iot_porcelain": "Porculan", - "iot_pot_&_pans": "Lonci & tave", - "iot_pot_&_pans_soil": "Lonci & tave", "iot_power_mix_wash": "Power Mix Wash", "iot_power_mix_wash_soil": "Power Mix Wash", "iot_prewash": "Pretpranje", @@ -470,7 +467,6 @@ "hygiene_60": "Higijena 60\u00b0", "hygiene_plus_59": "Hygijenski Plus 59'", "hygiene_plus_59_min": "Hygijenski Plus 59'", - "hygiene_pro _49_min": "Hygiene Pro 49 '", "hygiene_pro_49_min": "Hygiene Pro 49 min", "hygiene_pro_steam": "Hygiene Pro + para", "intensive_40": "Intenzivno 40\u00b0C", diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index d12fe67..47cabf3 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -163,7 +163,6 @@ "eco_synch": "Eco 45\u00b0C", "gentle_wash": "Gentle wash", "glass": "Calici", - "glass _care": "Glass Care", "glassware": "Cristalli 45\u00b0C", "glass_care": "Glass Care", "hygiene": "Igiene", @@ -199,8 +198,6 @@ "iot_pizza_menu_soil": "Pizza Menu", "iot_plastic_tupperware": "Plastiche & Tupperware", "iot_porcelain": "Porcellane", - "iot_pot_&_pans": "Pentole & Padelle", - "iot_pot_&_pans_soil": "Pentole & Padelle", "iot_power_mix_wash": "Power Mix Wash", "iot_power_mix_wash_soil": "Power Mix Wash", "iot_prewash": "Prelavaggio", @@ -542,7 +539,6 @@ "hygiene_60": "Igiene 60\u00b0C", "hygiene_plus_59": "Igiene Plus 59'", "hygiene_plus_59_min": "Igiene Plus 59'", - "hygiene_pro _49_min": "Igiene Pro 49'", "hygiene_pro_49_min": "Igiene Pro 49'", "hygiene_pro_steam": "Hygiene Pro + Vapore", "intensive_40": "Intensivo 40\u00b0C", diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index 8df7bff..0760b98 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -91,7 +91,6 @@ "eco_synch": "Eco 45\u00b0C", "gentle_wash": "Gentle wash", "glass": "Glas", - "glass _care": "Glass Care", "glassware": "Glaswerk 45\u00b0C", "glass_care": "Glass Care", "hygiene": "Hygi\u00ebne", @@ -127,8 +126,6 @@ "iot_pizza_menu_soil": "Pizza Menu", "iot_plastic_tupperware": "Plastiek & Tupperware", "iot_porcelain": "Porcelein", - "iot_pot_&_pans": "Potten & Pannen", - "iot_pot_&_pans_soil": "Potten & Pannen", "iot_power_mix_wash": "Power Mix Was", "iot_power_mix_wash_soil": "Power Mix Was", "iot_prewash": "Voorwas", @@ -470,7 +467,6 @@ "hygiene_60": "Hygi\u00ebne 60 \u00b0C", "hygiene_plus_59": "Hygiene Plus 59'", "hygiene_plus_59_min": "Hygiene Plus 59'", - "hygiene_pro _49_min": "Hygiene Pro 49 '", "hygiene_pro_49_min": "Hygiene Pro 49 min", "hygiene_pro_steam": "Hygiene Pro + stoom", "intensive_40": "Intensief 40\u00b0C", diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index 49dce72..718810d 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -91,7 +91,6 @@ "eco_synch": "Eco 45\u00b0C", "gentle_wash": "Gentle wash", "glass": "Szk\u0142o", - "glass _care": "Glass Care", "glassware": "Szklane 45\u00b0C", "glass_care": "Glass Care", "hygiene": "Higiena", @@ -127,8 +126,6 @@ "iot_pizza_menu_soil": "Pizza", "iot_plastic_tupperware": "Plastik i pojemniki", "iot_porcelain": "Porcelana", - "iot_pot_&_pans": "Garnki i patelnie", - "iot_pot_&_pans_soil": "Garnki i patelnie", "iot_power_mix_wash": "Mieszanie zmywanie Power", "iot_power_mix_wash_soil": "Mieszanie zmywanie Power", "iot_prewash": "Mycie wst\u0119pne", @@ -470,7 +467,6 @@ "hygiene_60": "Higiena 60 \u00b0", "hygiene_plus_59": "Higiena Plus 59'", "hygiene_plus_59_min": "Higiena Plus 59'", - "hygiene_pro _49_min": "Hygiene Pro 49 '", "hygiene_pro_49_min": "Hygiene Pro 49 min", "hygiene_pro_steam": "Hygiene Pro + Para", "intensive_40": "Intensywne 40\u00b0C", diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index dc3fb38..2ccd0aa 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -91,7 +91,6 @@ "eco_synch": "Eco 45\u00b0C", "gentle_wash": "Gentle wash", "glass": "Vidro", - "glass _care": "Glass Care", "glassware": "Vidros 45 \u00b0C", "glass_care": "Glass Care", "hygiene": "Higiene", @@ -127,8 +126,6 @@ "iot_pizza_menu_soil": "Menu de Pizza", "iot_plastic_tupperware": "Pl\u00e1sticos e Tupperwares", "iot_porcelain": "Porcelana", - "iot_pot_&_pans": "Panelas e Tachos", - "iot_pot_&_pans_soil": "Panelas e Tachos", "iot_power_mix_wash": "Lavagem Power Mix", "iot_power_mix_wash_soil": "Lavagem Power Mix", "iot_prewash": "Pr\u00e9-lavagem", @@ -470,7 +467,6 @@ "hygiene_60": "Higiene 60\u00b0", "hygiene_plus_59": "Higiene Plus 59'", "hygiene_plus_59_min": "Higiene Plus 59'", - "hygiene_pro _49_min": "Hygiene Pro 49 '", "hygiene_pro_49_min": "Hygiene Pro 49 min", "hygiene_pro_steam": "Hygiene Pro + Vapor", "intensive_40": "Intensivo 40\u00b0C", diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index 01525a9..2e174cc 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -91,7 +91,6 @@ "eco_synch": "Eco 45\u00b0C", "gentle_wash": "Gentle wash", "glass": "Sticl\u0103", - "glass _care": "Glass Care", "glassware": "Sticl\u0103rie 45 \u00b0C", "glass_care": "Glass Care", "hygiene": "Igien\u0103", @@ -127,8 +126,6 @@ "iot_pizza_menu_soil": "Meniu Pizza", "iot_plastic_tupperware": "Recipiente din plastic", "iot_porcelain": "Por\u021belan", - "iot_pot_&_pans": "Oale & Tig\u0103i", - "iot_pot_&_pans_soil": "Oale & Tig\u0103i", "iot_power_mix_wash": "Sp\u0103lare Putere Mixt\u0103", "iot_power_mix_wash_soil": "Sp\u0103lare Putere Mixt\u0103", "iot_prewash": "Presp\u0103lare", @@ -470,7 +467,6 @@ "hygiene_60": "Igien\u0103 60\u00b0", "hygiene_plus_59": "Igiena Plus 59'", "hygiene_plus_59_min": "Igiena Plus 59'", - "hygiene_pro _49_min": "Igien\u0103 Pro 49 '", "hygiene_pro_49_min": "Igien\u0103 Pro 49 min", "hygiene_pro_steam": "Hygiene Pro + Abur", "intensive_40": "Intensiv 40\u00b0C", diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index 0d49717..1c0fdfe 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -91,7 +91,6 @@ "eco_synch": "\u044d\u043a\u043e 45\u00b0C", "gentle_wash": "Gentle wash", "glass": "\u0421\u0442\u0435\u043a\u043b\u043e", - "glass _care": "Glass Care", "glassware": "\u0441\u0442\u0435\u043a\u043b\u043e 45\u00b0C", "glass_care": "Glass Care", "hygiene": "\u0413\u0438\u0433\u0438\u0435\u043d\u0430", @@ -127,8 +126,6 @@ "iot_pizza_menu_soil": "\u041c\u0435\u043d\u044e \u043f\u0438\u0446\u0446\u0430", "iot_plastic_tupperware": "\u041f\u043b\u0430\u0441\u0442\u043c\u0430\u0441\u0441\u043e\u0432\u044b\u0435 \u043b\u043e\u0442\u043a\u0438 \u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b", "iot_porcelain": "\u0424\u0430\u0440\u0444\u043e\u0440", - "iot_pot_&_pans": "\u041a\u043e\u0442\u0435\u043b\u043a\u0438 \u0438 \u043a\u0430\u0441\u0442\u0440\u044e\u043b\u0438", - "iot_pot_&_pans_soil": "\u041a\u043e\u0442\u0435\u043b\u043a\u0438 \u0438 \u043a\u0430\u0441\u0442\u0440\u044e\u043b\u0438", "iot_power_mix_wash": "\u0418\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u043e\u0435 \u043c\u044b\u0442\u044c\u0435 \u0441\u043c\u0435\u0448\u0430\u043d\u043d\u043e\u0439 \u043f\u043e\u0441\u0443\u0434\u044b", "iot_power_mix_wash_soil": "\u0418\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u043e\u0435 \u043c\u044b\u0442\u044c\u0435 \u0441\u043c\u0435\u0448\u0430\u043d\u043d\u043e\u0439 \u043f\u043e\u0441\u0443\u0434\u044b", "iot_prewash": "\u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043c\u043e\u0439\u043a\u0430", @@ -470,7 +467,6 @@ "hygiene_60": "\u0413\u0438\u0433\u0438\u0435\u043d\u0438\u0447\u043d\u0430\u044f 60\u00b0", "hygiene_plus_59": "\u0413\u0418\u0413\u0418\u0415\u041d\u0418\u0427\u041d\u0410\u042f \u041f\u041b\u042e\u0421 59'", "hygiene_plus_59_min": "\u0413\u0418\u0413\u0418\u0415\u041d\u0418\u0427\u041d\u0410\u042f \u041f\u041b\u042e\u0421 59'", - "hygiene_pro _49_min": "Hygiene Pro 49 \u043c\u0438\u043d.", "hygiene_pro_49_min": "Hygiene Pro 49 \u043c\u0438\u043d.", "hygiene_pro_steam": "Hygiene Pro + \u041f\u0430\u0440", "intensive_40": "\u0418\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u0430\u044f 40\u00b0\u0421", diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index 994e718..17c708f 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -91,7 +91,6 @@ "eco_synch": "Eco 45\u00b0C", "gentle_wash": "Gentle wash", "glass": "Sklo", - "glass _care": "Glass Care", "glassware": "Sklo 45 \u00b0C", "glass_care": "Glass Care", "hygiene": "Hygiena", @@ -127,8 +126,6 @@ "iot_pizza_menu_soil": "Pizza Menu", "iot_plastic_tupperware": "Plastov\u00e9 riady a misky", "iot_porcelain": "Porcel\u00e1n", - "iot_pot_&_pans": "Hrnce a panvice", - "iot_pot_&_pans_soil": "Hrnce a panvice", "iot_power_mix_wash": "Power Mix Wash", "iot_power_mix_wash_soil": "Power Mix Wash", "iot_prewash": "Predum\u00fdvanie", @@ -470,7 +467,6 @@ "hygiene_60": "Hygiena 60\u00b0", "hygiene_plus_59": "Hygiena Plus 59'", "hygiene_plus_59_min": "Hygiena Plus 59'", - "hygiene_pro _49_min": "Hygiene Pro 49 '", "hygiene_pro_49_min": "Hygiene Pro 49 min", "hygiene_pro_steam": "Hygiene Pro + para", "intensive_40": "Intenz\u00edvne pranie 40\u00b0C", diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index 7a6f6b1..1dceaf3 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -91,7 +91,6 @@ "eco_synch": "Eko 45 \u00b0C", "gentle_wash": "Gentle wash", "glass": "Kozarci", - "glass _care": "Glass Care", "glassware": "Steklo 45 \u00b0C", "glass_care": "Glass Care", "hygiene": "Higiena", @@ -127,8 +126,6 @@ "iot_pizza_menu_soil": "Pica program", "iot_plastic_tupperware": "Plastika in posode za \u017eivila", "iot_porcelain": "Porcelan", - "iot_pot_&_pans": "Lonci in kozice", - "iot_pot_&_pans_soil": "Lonci in kozice", "iot_power_mix_wash": "Intenzivni za razli\u010dno posodo", "iot_power_mix_wash_soil": "Intenzivni za razli\u010dno posodo", "iot_prewash": "Predpranje", @@ -470,7 +467,6 @@ "hygiene_60": "Higiena 60'", "hygiene_plus_59": "Higiena Plus 59'", "hygiene_plus_59_min": "Higiena Plus 59'", - "hygiene_pro _49_min": "Higiena Pro 49 '", "hygiene_pro_49_min": "Higiena Pro 49 min", "hygiene_pro_steam": "Hygiene Pro + Para", "intensive_40": "Intenzivno 40\u00b0C", diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index c552160..58b9e72 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -91,7 +91,6 @@ "eco_synch": "Eco 45\u00b0C", "gentle_wash": "Gentle wash", "glass": "Staklo", - "glass _care": "Glass Care", "glassware": "Staklo 45\u00b0C", "glass_care": "Glass Care", "hygiene": "Higijena", @@ -127,8 +126,6 @@ "iot_pizza_menu_soil": "Pizza Meni", "iot_plastic_tupperware": "Plastika i Tupperware", "iot_porcelain": "Porcelan", - "iot_pot_&_pans": "\u0160erpe i Tiganji", - "iot_pot_&_pans_soil": "\u0160erpe i Tiganji", "iot_power_mix_wash": "Power Mix pranje", "iot_power_mix_wash_soil": "Power Mix pranje", "iot_prewash": "Predpranje", @@ -470,7 +467,6 @@ "hygiene_60": "Higijena 60\u00b0", "hygiene_plus_59": "Hygijenski Plus 59'", "hygiene_plus_59_min": "Hygijenski Plus 59'", - "hygiene_pro _49_min": "Hygiene Pro 49 '", "hygiene_pro_49_min": "Hygiene Pro 49 min", "hygiene_pro_steam": "Hygiene Pro + para", "intensive_40": "Intenzivno 40\u00b0C", diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index 2ccc3e6..cbd30f3 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -91,7 +91,6 @@ "eco_synch": "Eco 45\u00b0C", "gentle_wash": "Gentle wash", "glass": "Cam", - "glass _care": "Glass Care", "glassware": "Cam E\u015fya 45\u00b0C", "glass_care": "Glass Care", "hygiene": "Hijyen", @@ -127,8 +126,6 @@ "iot_pizza_menu_soil": "Pizza Men\u00fcs\u00fc", "iot_plastic_tupperware": "Plastik ve Tupperware", "iot_porcelain": "Porselen", - "iot_pot_&_pans": "Tencereler ve Tavalar", - "iot_pot_&_pans_soil": "Tencereler ve Tavalar", "iot_power_mix_wash": "Power Mix Y\u0131kama", "iot_power_mix_wash_soil": "Power Mix Y\u0131kama", "iot_prewash": "Pre-wash", @@ -470,7 +467,6 @@ "hygiene_60": "Hijyen 60\u00b0", "hygiene_plus_59": "Hijyen 59'", "hygiene_plus_59_min": "Hijyen 59'", - "hygiene_pro _49_min": "Hygiene Pro 49 '", "hygiene_pro_49_min": "Hygiene Pro 49 min", "hygiene_pro_steam": "Hygiene Pro + Buhar", "intensive_40": "Yo\u011fun 40\u00b0C", diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index 1a42639..836a97f 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -91,7 +91,6 @@ "eco_synch": "\u7ecf\u6d4e45\u2103", "gentle_wash": "Gentle wash", "glass": "\u73bb\u7483", - "glass _care": "Glass Care", "glassware": "\u73bb\u7483\u5668\u76bf45\u00b0C", "glass_care": "Glass Care", "hygiene": "\u536b\u751f", @@ -127,8 +126,6 @@ "iot_pizza_menu_soil": "Pizza\u9910\u5177", "iot_plastic_tupperware": "\u5851\u6599\u9910\u5177", "iot_porcelain": "\u74f7\u5668", - "iot_pot_&_pans": "\u9505\u7c7b", - "iot_pot_&_pans_soil": "\u9505\u7c7b", "iot_power_mix_wash": "\u6df7\u5408\u6d17\u6da4", "iot_power_mix_wash_soil": "\u6df7\u5408\u6d17\u6da4", "iot_prewash": "\u9884\u6d17", @@ -470,7 +467,6 @@ "hygiene_60": "\u536b\u751f 60\u00b0", "hygiene_plus_59": "\u536b\u751f\u589e\u5f3a 59 \u5206", "hygiene_plus_59_min": "\u536b\u751f\u589e\u5f3a 59 \u5206", - "hygiene_pro _49_min": "49 \u5206\u949f\u536b\u751f\u4e13\u5bb6", "hygiene_pro_49_min": "Hygiene Pro 49 min", "hygiene_pro_steam": "Hygiene Pro + \u84b8\u6c7d", "intensive_40": "\u52a0\u5f3a 40\u00b0C", diff --git a/scripts/generate_translation.py b/scripts/generate_translation.py index cf81d1b..f7696e5 100644 --- a/scripts/generate_translation.py +++ b/scripts/generate_translation.py @@ -1,5 +1,6 @@ import asyncio import json +import re from pathlib import Path from pyhon import HonAPI @@ -146,13 +147,14 @@ def load_key(full_key, json_data, fallback=None): def load_keys(full_key, json_data): - blacklist = ["description", "\n", "_recipe_", "_guided_"] + blacklist = ["description", "_recipe_", "_guided_"] first, last = full_key.split(".") data = json_data.get(first, {}).get(last, {}) return { key.lower(): value for key, value in data.items() if not any(b in key.lower() for b in blacklist) + and re.findall("^[a-z0-9-_]+$", key.lower()) } -- 2.39.5 From 2c93b86dfeb4ecf9eb495804fdea087ea067d8d8 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sat, 22 Apr 2023 21:52:49 +0200 Subject: [PATCH 058/205] Add flags --- README.md | 38 +++++++++++++++++++------------------- info.md | 22 ++++++++++++++++++++++ 2 files changed, 41 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index c2e63d5..7011535 100644 --- a/README.md +++ b/README.md @@ -104,25 +104,25 @@ For every device exists a hidden button which can be used to log all info of you ## Supported Languages Translation of internal names like programs are available for all languages which are official supported by the hOn app: -* Chinese -* Croatian -* Czech -* Dutch -* English -* French -* German -* Greek -* Hebrew -* Italian -* Polish -* Portuguese -* Romanian -* Russian -* Serbian -* Slovak -* Slovenian -* Spanish -* Turkish +* 🇨🇳 Chinese +* 🇭🇷 Croatian +* 🇨🇿 Czech +* 🇳🇱 Dutch +* 🇬🇧 English +* 🇫🇷 French +* 🇩🇪 German +* 🇬🇷 Greek +* 🇮🇱 Hebrew +* 🇮🇹 Italian +* 🇵🇱 Polish +* 🇵🇹 Portuguese +* 🇷🇴 Romanian +* 🇷🇺 Russian +* 🇷🇸 Serbian +* 🇸🇰 Slovak +* 🇸🇮 Slovenian +* 🇪🇸 Spanish +* 🇹🇷 Turkish ## About this Repo diff --git a/info.md b/info.md index c72d790..031620c 100644 --- a/info.md +++ b/info.md @@ -29,6 +29,28 @@ _If the integration is not in the list, you need to clear the browser cache._ Want to help us to support more appliances? Or add more sensors? Or help with translating? Or beautify some icons or captions? Check out the [project on GitHub](https://github.com/Andre0512/hon), every contribution is welcome! +## Supported Languages +Translation of internal names like programs are available for all languages which are official supported by the hOn app: +* 🇨🇳 Chinese +* 🇭🇷 Croatian +* 🇨🇿 Czech +* 🇳🇱 Dutch +* 🇬🇧 English +* 🇫🇷 French +* 🇩🇪 German +* 🇬🇷 Greek +* 🇮🇱 Hebrew +* 🇮🇹 Italian +* 🇵🇱 Polish +* 🇵🇹 Portuguese +* 🇷🇴 Romanian +* 🇷🇺 Russian +* 🇷🇸 Serbian +* 🇸🇰 Slovak +* 🇸🇮 Slovenian +* 🇪🇸 Spanish +* 🇹🇷 Turkish + ## Useful Links * [GitHub repository](https://github.com/Andre0512/hon) (please add a star if you like this integration!) * [pyhOn library](https://github.com/Andre0512/pyhOn) -- 2.39.5 From 13a23eb6e1bf67895d94b4a40d98522adc6528d3 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sat, 22 Apr 2023 23:09:57 +0200 Subject: [PATCH 059/205] Improve translation of dryer level --- custom_components/hon/number.py | 7 ---- custom_components/hon/select.py | 28 +++++++++----- custom_components/hon/sensor.py | 2 +- custom_components/hon/translations/bg.json | 14 ++++++- custom_components/hon/translations/cs.json | 26 +++++++++++++ custom_components/hon/translations/de.json | 26 +++++++++++++ custom_components/hon/translations/el.json | 26 +++++++++++++ custom_components/hon/translations/en.json | 43 ++++++++++++++-------- custom_components/hon/translations/es.json | 26 +++++++++++++ custom_components/hon/translations/fr.json | 26 +++++++++++++ custom_components/hon/translations/he.json | 26 +++++++++++++ custom_components/hon/translations/hr.json | 26 +++++++++++++ custom_components/hon/translations/it.json | 42 +++++++++++++-------- custom_components/hon/translations/nl.json | 26 +++++++++++++ custom_components/hon/translations/pl.json | 26 +++++++++++++ custom_components/hon/translations/pt.json | 26 +++++++++++++ custom_components/hon/translations/ro.json | 26 +++++++++++++ custom_components/hon/translations/ru.json | 26 +++++++++++++ custom_components/hon/translations/sk.json | 26 +++++++++++++ custom_components/hon/translations/sl.json | 26 +++++++++++++ custom_components/hon/translations/sr.json | 26 +++++++++++++ custom_components/hon/translations/tr.json | 26 +++++++++++++ custom_components/hon/translations/zh.json | 26 +++++++++++++ scripts/generate_translation.py | 31 +++++++++++++--- 24 files changed, 552 insertions(+), 57 deletions(-) diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index 1e5e4fc..e23bb01 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -46,13 +46,6 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { entity_category=EntityCategory.CONFIG, native_unit_of_measurement=UnitOfTime.MINUTES, ), - NumberEntityDescription( - key="startProgram.dryLevel", - name="Dry level", - entity_category=EntityCategory.CONFIG, - icon="mdi:hair-dryer", - translation_key="tumbledryerdrylevel", - ), NumberEntityDescription( key="startProgram.tempLevel", name="Temperature level", diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index b944631..fee0223 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -54,6 +54,13 @@ SELECTS = { icon="mdi:timer", unit_of_measurement=UnitOfTime.MINUTES, ), + SelectEntityDescription( + key="startProgram.dryLevel", + name="Dry level", + entity_category=EntityCategory.CONFIG, + icon="mdi:hair-dryer", + translation_key="dry_levels", + ), ), "WD": ( SelectEntityDescription( @@ -130,10 +137,10 @@ class HonSelectEntity(HonEntity, SelectEntity): @property def current_option(self) -> str | None: - value = self._device.settings[self.entity_description.key].value - if value is None or value not in self._attr_options: + value = self._device.settings.get(self.entity_description.key) + if value is None or value.value not in self._attr_options: return None - return value + return value.value async def async_select_option(self, option: str) -> None: self._device.settings[self.entity_description.key].value = option @@ -141,12 +148,13 @@ class HonSelectEntity(HonEntity, SelectEntity): @callback def _handle_coordinator_update(self): - setting = self._device.settings[self.entity_description.key] - if not isinstance( - self._device.settings[self.entity_description.key], HonParameterFixed - ): - self._attr_options: list[str] = setting.values + setting = self._device.settings.get(self.entity_description.key) + if setting is None: + self._attr_available = False + self._attr_options: list[str] = [] + self._attr_native_value = None else: - self._attr_options = [setting.value] - self._attr_native_value = setting.value + self._attr_available = True + self._attr_options: list[str] = setting.values + self._attr_native_value = setting.value self.async_write_ha_state() diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 20ec3b8..107696d 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -142,7 +142,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { key="dryLevel", name="Dry level", icon="mdi:hair-dryer", - translation_key="tumbledryerdrylevel", + translation_key="dry_levels", ), SensorEntityDescription( key="tempLevel", diff --git a/custom_components/hon/translations/bg.json b/custom_components/hon/translations/bg.json index 5bb855c..5926d22 100644 --- a/custom_components/hon/translations/bg.json +++ b/custom_components/hon/translations/bg.json @@ -49,7 +49,7 @@ "103": "Отдалечен" } }, - "tumbledryerprogramphase": { + "program_phases_td": { "state": { "0": "Изчаване", "2": "Сушене", @@ -65,7 +65,17 @@ "4": "Висока температура L-3" } }, - "tumbledryerdrylevel": { + "dry_levels": { + "state": { + "3": "Готови за съхранение", + "12": "Готови за гладене H-1", + "13": "Готови за съхранение H-2", + "14": "Екстра сухо H-3" + } + } + }, + "select": { + "dry_levels": { "state": { "3": "Готови за съхранение", "12": "Готови за гладене H-1", diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index 4f85331..00b8202 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -65,6 +65,19 @@ "5": "P\u0159ipraveno", "6": "Hot rinse" } + }, + "dry_levels": { + "state": { + "0": "Bez su\u0161en\u00ed", + "1": "\u017dehlen\u00ed", + "2": "Do sk\u0159\u00edn\u011b", + "3": "Do sk\u0159\u00edn\u011b", + "4": "Extra such\u00e9", + "12": "\u017dehlen\u00ed", + "13": "Do sk\u0159\u00edn\u011b", + "14": "P\u0159ipraveno k oble\u010den\u00ed", + "15": "Extra such\u00e9" + } } }, "select": { @@ -705,6 +718,19 @@ "wool_dry": "Vlna - such\u00e9", "wool_soft_care": "Vlna & M\u0115kk\u00e1 P\u00e9\u010de" } + }, + "dry_levels": { + "state": { + "0": "Bez su\u0161en\u00ed", + "1": "\u017dehlen\u00ed", + "2": "Do sk\u0159\u00edn\u011b", + "3": "Do sk\u0159\u00edn\u011b", + "4": "Extra such\u00e9", + "12": "\u017dehlen\u00ed", + "13": "Do sk\u0159\u00edn\u011b", + "14": "P\u0159ipraveno k oble\u010den\u00ed", + "15": "Extra such\u00e9" + } } } } diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index 1e2a90a..bc5c851 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -65,6 +65,19 @@ "5": "Bereit", "6": "Hot rinse" } + }, + "dry_levels": { + "state": { + "0": "Keine Trocknung", + "1": "B\u00fcgeln", + "2": "W\u00e4sche fertig", + "3": "W\u00e4sche fertig", + "4": "Extra trocken", + "12": "B\u00fcgeln", + "13": "W\u00e4sche fertig", + "14": "Bereit zum Anziehen", + "15": "Extra trocken" + } } }, "select": { @@ -705,6 +718,19 @@ "wool_dry": "Wolle trocknen", "wool_soft_care": "Wolle & Soft Care" } + }, + "dry_levels": { + "state": { + "0": "Keine Trocknung", + "1": "B\u00fcgeln", + "2": "W\u00e4sche fertig", + "3": "W\u00e4sche fertig", + "4": "Extra trocken", + "12": "B\u00fcgeln", + "13": "W\u00e4sche fertig", + "14": "Bereit zum Anziehen", + "15": "Extra trocken" + } } } } diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index 47aac1e..063942d 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -65,6 +65,19 @@ "5": "\u0395\u03c4\u03bf\u03b9\u03bc\u03bf\u03c2", "6": "Hot rinse" } + }, + "dry_levels": { + "state": { + "0": "\u03a7\u03c9\u03c1\u03af\u03c2 \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", + "1": "\u03a3\u03b9\u03b4\u03ad\u03c1\u03c9\u03bc\u03b1", + "2": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1 \u03b3\u03b9\u03b1 \u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 ", + "3": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1 \u03b3\u03b9\u03b1 \u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 ", + "4": "\u0395\u03c0\u03b9\u03c0\u03bb\u03ad\u03bf\u03bd \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", + "12": "\u03a3\u03b9\u03b4\u03ad\u03c1\u03c9\u03bc\u03b1", + "13": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1 \u03b3\u03b9\u03b1 \u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 ", + "14": "\u0395\u03c4\u03bf\u03b9\u03bc\u03bf \u03bd\u03b1 \u03c6\u03bf\u03c1\u03b5\u03b8\u03b5\u03af", + "15": "\u0395\u03c0\u03b9\u03c0\u03bb\u03ad\u03bf\u03bd \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1" + } } }, "select": { @@ -705,6 +718,19 @@ "wool_dry": "\u039c\u03ac\u03bb\u03bb\u03b9\u03bd\u03b1 \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", "wool_soft_care": "\u03bc\u03b1\u03bb\u03bb\u03b9\u03bd\u03b1 & Soft Care" } + }, + "dry_levels": { + "state": { + "0": "\u03a7\u03c9\u03c1\u03af\u03c2 \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", + "1": "\u03a3\u03b9\u03b4\u03ad\u03c1\u03c9\u03bc\u03b1", + "2": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1 \u03b3\u03b9\u03b1 \u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 ", + "3": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1 \u03b3\u03b9\u03b1 \u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 ", + "4": "\u0395\u03c0\u03b9\u03c0\u03bb\u03ad\u03bf\u03bd \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", + "12": "\u03a3\u03b9\u03b4\u03ad\u03c1\u03c9\u03bc\u03b1", + "13": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1 \u03b3\u03b9\u03b1 \u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 ", + "14": "\u0395\u03c4\u03bf\u03b9\u03bc\u03bf \u03bd\u03b1 \u03c6\u03bf\u03c1\u03b5\u03b8\u03b5\u03af", + "15": "\u0395\u03c0\u03b9\u03c0\u03bb\u03ad\u03bf\u03bd \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1" + } } } } diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 99a878e..937bbf7 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -49,14 +49,7 @@ "103": "Remote" } }, - "tumbledryerprogramphase": { - "state": { - "0": "Waiting", - "2": "Drying", - "3": "Cooldown", - "11": "11" - } - }, + "tumbledryertemplevel": { "state": { "1": "Cool", @@ -65,14 +58,6 @@ "4": "High temperature L-3" } }, - "tumbledryerdrylevel": { - "state": { - "3": "Cupboard dry", - "12": "Ready to Iron H-1", - "13": "Ready to Store H-2", - "14": "Extra Dry H-3" - } - }, "mode_dw": { "state": { "0": "Disconnected", @@ -147,9 +132,35 @@ "5": "Ready", "6": "Hot rinse" } + }, + "dry_levels": { + "state": { + "0": "No drying", + "1": "Iron dry", + "2": "Hang", + "3": "Cupboard Dry", + "4": "Extra dry", + "12": "Iron dry", + "13": "Cupboard Dry", + "14": "Ready to wear", + "15": "Extra dry" + } } }, "select": { + "dry_levels": { + "state": { + "0": "No drying", + "1": "Iron dry", + "2": "Hang", + "3": "Cupboard Dry", + "4": "Extra dry", + "12": "Iron dry", + "13": "Cupboard Dry", + "14": "Ready to wear", + "15": "Extra dry" + } + }, "programs_dw": { "state": { "59_min": "Rapid 59'", diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index a2fe490..55a94f4 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -65,6 +65,19 @@ "5": "Listo", "6": "Hot rinse" } + }, + "dry_levels": { + "state": { + "0": "Sin secado", + "1": "Planchar", + "2": "Listo para guardar", + "3": "Listo para guardar", + "4": "Extraseco", + "12": "Planchar", + "13": "Listo para guardar", + "14": "Listo para llevar", + "15": "Extraseco" + } } }, "select": { @@ -705,6 +718,19 @@ "wool_dry": "Secado lana", "wool_soft_care": "Lana & Soft Care" } + }, + "dry_levels": { + "state": { + "0": "Sin secado", + "1": "Planchar", + "2": "Listo para guardar", + "3": "Listo para guardar", + "4": "Extraseco", + "12": "Planchar", + "13": "Listo para guardar", + "14": "Listo para llevar", + "15": "Extraseco" + } } } } diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index bc18fb4..6b4f36f 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -65,6 +65,19 @@ "5": "Pr\u00eat", "6": "Hot rinse" } + }, + "dry_levels": { + "state": { + "0": "Pas de s\u00e9chage", + "1": "Fer", + "2": "Pr\u00eat \u00e0 ranger", + "3": "Pr\u00eat \u00e0 ranger", + "4": "Extra sec", + "12": "Fer", + "13": "Pr\u00eat \u00e0 ranger", + "14": "Pr\u00eat \u00e0 porter", + "15": "Extra sec" + } } }, "select": { @@ -705,6 +718,19 @@ "wool_dry": "S\u00e9chage de la laine", "wool_soft_care": "Laine & Soin Doux" } + }, + "dry_levels": { + "state": { + "0": "Pas de s\u00e9chage", + "1": "Fer", + "2": "Pr\u00eat \u00e0 ranger", + "3": "Pr\u00eat \u00e0 ranger", + "4": "Extra sec", + "12": "Fer", + "13": "Pr\u00eat \u00e0 ranger", + "14": "Pr\u00eat \u00e0 porter", + "15": "Extra sec" + } } } } diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index 0c38340..bb076af 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -65,6 +65,19 @@ "5": "\u05de\u05d5\u05bc\u05db\u05b8\u05df", "6": "Hot rinse" } + }, + "dry_levels": { + "state": { + "0": "\u05dc\u05dc\u05d0 \u05d9\u05d9\u05d1\u05d5\u05e9", + "1": "\u05d1\u05bc\u05b7\u05e8\u05d6\u05b6\u05dc", + "2": "\u05dc\u05d0 \u05dc\u05d9\u05d9\u05d1\u05e9 \u05d1\u05e8\u05d6\u05dc", + "3": "\u05d0\u05e8\u05d5\u05df \u05d9\u05d1\u05e9", + "4": "\u05d9\u05d1\u05e9 \u05d1\u05de\u05d9\u05d5\u05d7\u05d3", + "12": "\u05d1\u05bc\u05b7\u05e8\u05d6\u05b6\u05dc", + "13": "\u05d0\u05e8\u05d5\u05df \u05d9\u05d1\u05e9", + "14": "Ready to wear", + "15": "\u05d9\u05d1\u05e9 \u05d1\u05de\u05d9\u05d5\u05d7\u05d3" + } } }, "select": { @@ -303,6 +316,19 @@ "wool_dry": "\u05e6\u05de\u05e8 \u05d9\u05d1\u05e9", "wool_soft_care": "Wool & Soft Care" } + }, + "dry_levels": { + "state": { + "0": "\u05dc\u05dc\u05d0 \u05d9\u05d9\u05d1\u05d5\u05e9", + "1": "\u05d1\u05bc\u05b7\u05e8\u05d6\u05b6\u05dc", + "2": "\u05dc\u05d0 \u05dc\u05d9\u05d9\u05d1\u05e9 \u05d1\u05e8\u05d6\u05dc", + "3": "\u05d0\u05e8\u05d5\u05df \u05d9\u05d1\u05e9", + "4": "\u05d9\u05d1\u05e9 \u05d1\u05de\u05d9\u05d5\u05d7\u05d3", + "12": "\u05d1\u05bc\u05b7\u05e8\u05d6\u05b6\u05dc", + "13": "\u05d0\u05e8\u05d5\u05df \u05d9\u05d1\u05e9", + "14": "Ready to wear", + "15": "\u05d9\u05d1\u05e9 \u05d1\u05de\u05d9\u05d5\u05d7\u05d3" + } } } } diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index e632175..ebb1042 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -65,6 +65,19 @@ "5": "Spremno", "6": "Hot rinse" } + }, + "dry_levels": { + "state": { + "0": "Bez su\u0161enja", + "1": "Suho za gla\u010danje", + "2": "Suho za spremanje", + "3": "Suho za spremanje", + "4": "Potpuno suho", + "12": "Suho za gla\u010danje", + "13": "Suho za spremanje", + "14": "Spremno za no\u0161enje", + "15": "Potpuno suho" + } } }, "select": { @@ -705,6 +718,19 @@ "wool_dry": "Suha vuna", "wool_soft_care": "Vuna & Mekana Njega" } + }, + "dry_levels": { + "state": { + "0": "Bez su\u0161enja", + "1": "Suho za gla\u010danje", + "2": "Suho za spremanje", + "3": "Suho za spremanje", + "4": "Potpuno suho", + "12": "Suho za gla\u010danje", + "13": "Suho za spremanje", + "14": "Spremno za no\u0161enje", + "15": "Potpuno suho" + } } } } diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index 47cabf3..79fe39c 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -49,14 +49,6 @@ "103": "Controllo Remoto" } }, - "tumbledryerprogramphase": { - "state": { - "0": "In Attesa", - "2": "Asciugatura", - "3": "Raffreddamento", - "11": "11" - } - }, "tumbledryertemplevel": { "state": { "1": "Freddo", @@ -65,14 +57,6 @@ "4": "Alta temperature L-3" } }, - "tumbledryerdrylevel": { - "state": { - "3": "Armadio", - "12": "Pronto Stiro", - "13": "Pronto Armadio", - "14": "Extra Dry H-3" - } - }, "washing_modes": { "state": { "0": "Pronta", @@ -137,6 +121,19 @@ "5": "Pronta", "6": "Risciacquo caldo " } + }, + "dry_levels": { + "state": { + "0": "Nessuna asciugatura", + "1": "Stiro facile", + "2": "Appendere", + "3": "Armadio", + "4": "Extra asciutto", + "12": "Stiro facile", + "13": "Armadio", + "14": "Pronto da indossare", + "15": "Extra asciutto" + } } }, "select": { @@ -777,6 +774,19 @@ "wool_dry": "Asciugatura Lana", "wool_soft_care": "Lana e Soft Care" } + }, + "dry_levels": { + "state": { + "0": "Nessuna asciugatura", + "1": "Stiro facile", + "2": "Appendere", + "3": "Armadio", + "4": "Extra asciutto", + "12": "Stiro facile", + "13": "Armadio", + "14": "Pronto da indossare", + "15": "Extra asciutto" + } } } } diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index 0760b98..b96bcb6 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -65,6 +65,19 @@ "5": "Klaar", "6": "Hot rinse" } + }, + "dry_levels": { + "state": { + "0": "Niet drogen", + "1": "Strijken", + "2": "Kastdroog", + "3": "Kastdroog", + "4": "Extra droog", + "12": "Strijken", + "13": "Kastdroog", + "14": "Klaar om te dragen", + "15": "Extra droog" + } } }, "select": { @@ -705,6 +718,19 @@ "wool_dry": "Wol drogen", "wool_soft_care": "Wol & Soft Care" } + }, + "dry_levels": { + "state": { + "0": "Niet drogen", + "1": "Strijken", + "2": "Kastdroog", + "3": "Kastdroog", + "4": "Extra droog", + "12": "Strijken", + "13": "Kastdroog", + "14": "Klaar om te dragen", + "15": "Extra droog" + } } } } diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index 718810d..fafd123 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -65,6 +65,19 @@ "5": "Gotowe", "6": "Hot rinse" } + }, + "dry_levels": { + "state": { + "0": "Bez suszenia", + "1": "Prasowanie", + "2": "Gotowe do garderoby", + "3": "Gotowe do garderoby", + "4": "Ekstra suchy", + "12": "Prasowanie", + "13": "Gotowe do garderoby", + "14": "Gotowe do w\u0142o\u017cenia", + "15": "Ekstra suchy" + } } }, "select": { @@ -705,6 +718,19 @@ "wool_dry": "Suszenie we\u0142ny", "wool_soft_care": "We\u0142na & Soft Care" } + }, + "dry_levels": { + "state": { + "0": "Bez suszenia", + "1": "Prasowanie", + "2": "Gotowe do garderoby", + "3": "Gotowe do garderoby", + "4": "Ekstra suchy", + "12": "Prasowanie", + "13": "Gotowe do garderoby", + "14": "Gotowe do w\u0142o\u017cenia", + "15": "Ekstra suchy" + } } } } diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index 2ccd0aa..c5fadd5 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -65,6 +65,19 @@ "5": "Pronto", "6": "Hot rinse" } + }, + "dry_levels": { + "state": { + "0": "Sem secagem", + "1": "Engomar", + "2": "Guarda-Roupa pronto", + "3": "Guarda-Roupa pronto", + "4": "Extra seco", + "12": "Engomar", + "13": "Guarda-Roupa pronto", + "14": "Pronto a usar", + "15": "Extra seco" + } } }, "select": { @@ -705,6 +718,19 @@ "wool_dry": "Secagem de l\u00e3s", "wool_soft_care": "L\u00e3s & Cuidado Suavidade" } + }, + "dry_levels": { + "state": { + "0": "Sem secagem", + "1": "Engomar", + "2": "Guarda-Roupa pronto", + "3": "Guarda-Roupa pronto", + "4": "Extra seco", + "12": "Engomar", + "13": "Guarda-Roupa pronto", + "14": "Pronto a usar", + "15": "Extra seco" + } } } } diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index 2e174cc..d1175db 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -65,6 +65,19 @@ "5": "Preg\u0103tit", "6": "Hot rinse" } + }, + "dry_levels": { + "state": { + "0": "F\u0103r\u0103 uscare", + "1": "C\u0103lcare", + "2": "\u0218ifonier preg\u0103tit", + "3": "\u0218ifonier preg\u0103tit", + "4": "Uscare suplimentar\u0103", + "12": "C\u0103lcare", + "13": "\u0218ifonier preg\u0103tit", + "14": "Gata de purtat", + "15": "Uscare suplimentar\u0103" + } } }, "select": { @@ -705,6 +718,19 @@ "wool_dry": "Uscarea l\u00e2nii", "wool_soft_care": "L\u00e2n\u0103 & \u00cengrijire Bl\u00e2nd\u0103" } + }, + "dry_levels": { + "state": { + "0": "F\u0103r\u0103 uscare", + "1": "C\u0103lcare", + "2": "\u0218ifonier preg\u0103tit", + "3": "\u0218ifonier preg\u0103tit", + "4": "Uscare suplimentar\u0103", + "12": "C\u0103lcare", + "13": "\u0218ifonier preg\u0103tit", + "14": "Gata de purtat", + "15": "Uscare suplimentar\u0103" + } } } } diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index 1c0fdfe..8cc7728 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -65,6 +65,19 @@ "5": "\u0413\u043e\u0442\u043e\u0432\u043e", "6": "Hot rinse" } + }, + "dry_levels": { + "state": { + "0": "\u0411\u0435\u0437 \u0441\u0443\u0448\u043a\u0438", + "1": "\u041f\u043e\u0434 \u0443\u0442\u044e\u0433", + "2": "\u0412 \u0448\u043a\u0430\u0444", + "3": "\u0413\u043e\u0442\u043e\u0432\u043e \u0432 \u0448\u043a\u0430\u0444", + "4": "\u042d\u043a\u0441\u0442\u0440\u0430 \u0441\u0443\u0448\u043a\u0430", + "12": "\u041f\u043e\u0434 \u0443\u0442\u044e\u0433", + "13": "\u0413\u043e\u0442\u043e\u0432\u043e \u0432 \u0448\u043a\u0430\u0444", + "14": "\u0413\u043e\u0442\u043e\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0434\u0435\u0432\u0430\u043d\u0438\u044f", + "15": "\u042d\u043a\u0441\u0442\u0440\u0430 \u0441\u0443\u0448\u043a\u0430" + } } }, "select": { @@ -705,6 +718,19 @@ "wool_dry": "\u0421\u0443\u0448\u043a\u0430 \u0448\u0435\u0440\u0441\u0442\u0438", "wool_soft_care": "\u0448\u0435\u0440\u0441\u0442\u044c & \u0434\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0439 \u0443\u0445\u043e\u0434" } + }, + "dry_levels": { + "state": { + "0": "\u0411\u0435\u0437 \u0441\u0443\u0448\u043a\u0438", + "1": "\u041f\u043e\u0434 \u0443\u0442\u044e\u0433", + "2": "\u0412 \u0448\u043a\u0430\u0444", + "3": "\u0413\u043e\u0442\u043e\u0432\u043e \u0432 \u0448\u043a\u0430\u0444", + "4": "\u042d\u043a\u0441\u0442\u0440\u0430 \u0441\u0443\u0448\u043a\u0430", + "12": "\u041f\u043e\u0434 \u0443\u0442\u044e\u0433", + "13": "\u0413\u043e\u0442\u043e\u0432\u043e \u0432 \u0448\u043a\u0430\u0444", + "14": "\u0413\u043e\u0442\u043e\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0434\u0435\u0432\u0430\u043d\u0438\u044f", + "15": "\u042d\u043a\u0441\u0442\u0440\u0430 \u0441\u0443\u0448\u043a\u0430" + } } } } diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index 17c708f..d3dc9e3 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -65,6 +65,19 @@ "5": "Pripraven\u00e9", "6": "Hot rinse" } + }, + "dry_levels": { + "state": { + "0": "Bez su\u0161enia", + "1": "\u017dehlenie", + "2": "\u0160atn\u00edk pripraven\u00fd", + "3": "\u0160atn\u00edk pripraven\u00fd", + "4": "Extra su\u0161enie", + "12": "\u017dehlenie", + "13": "\u0160atn\u00edk pripraven\u00fd", + "14": "Hotov\u00e9 na nosenie", + "15": "Extra su\u0161enie" + } } }, "select": { @@ -705,6 +718,19 @@ "wool_dry": "Vlna such\u00e1", "wool_soft_care": "Vlna & M\u00e4kk\u00e1 starostlivost" } + }, + "dry_levels": { + "state": { + "0": "Bez su\u0161enia", + "1": "\u017dehlenie", + "2": "\u0160atn\u00edk pripraven\u00fd", + "3": "\u0160atn\u00edk pripraven\u00fd", + "4": "Extra su\u0161enie", + "12": "\u017dehlenie", + "13": "\u0160atn\u00edk pripraven\u00fd", + "14": "Hotov\u00e9 na nosenie", + "15": "Extra su\u0161enie" + } } } } diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index 1dceaf3..b863b95 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -65,6 +65,19 @@ "5": "Pripravljen", "6": "Hot rinse" } + }, + "dry_levels": { + "state": { + "0": "Brez su\u0161enja", + "1": "Likanje", + "2": "Suho za omaro", + "3": "Suho za omaro", + "4": "Zelo suho", + "12": "Likanje", + "13": "Suho za omaro", + "14": "Pripravljeno za uporabo", + "15": "Zelo suho" + } } }, "select": { @@ -705,6 +718,19 @@ "wool_dry": "Su\u0161enje volne", "wool_soft_care": "Volna & Nega Za Mehkobo" } + }, + "dry_levels": { + "state": { + "0": "Brez su\u0161enja", + "1": "Likanje", + "2": "Suho za omaro", + "3": "Suho za omaro", + "4": "Zelo suho", + "12": "Likanje", + "13": "Suho za omaro", + "14": "Pripravljeno za uporabo", + "15": "Zelo suho" + } } } } diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index 58b9e72..7f23ff6 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -65,6 +65,19 @@ "5": "Spremno", "6": "Hot rinse" } + }, + "dry_levels": { + "state": { + "0": "Bez su\u0161enja", + "1": "Peglanje", + "2": "Suvo za ormar", + "3": "Suvo za ormar", + "4": "Ekstra suvo", + "12": "Peglanje", + "13": "Suvo za ormar", + "14": "Spremno za no\u0161enje", + "15": "Ekstra suvo" + } } }, "select": { @@ -705,6 +718,19 @@ "wool_dry": "Su\u0161enje vune", "wool_soft_care": "Vuna & Blagi Tretman" } + }, + "dry_levels": { + "state": { + "0": "Bez su\u0161enja", + "1": "Peglanje", + "2": "Suvo za ormar", + "3": "Suvo za ormar", + "4": "Ekstra suvo", + "12": "Peglanje", + "13": "Suvo za ormar", + "14": "Spremno za no\u0161enje", + "15": "Ekstra suvo" + } } } } diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index cbd30f3..d4c23d2 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -65,6 +65,19 @@ "5": "Haz\u0131r", "6": "Hot rinse" } + }, + "dry_levels": { + "state": { + "0": "Kurutma yok", + "1": "\u00dct\u00fc", + "2": "Gard\u0131rop haz\u0131r", + "3": "Gard\u0131rop haz\u0131r", + "4": "Ekstra kurutma", + "12": "\u00dct\u00fc", + "13": "Gard\u0131rop haz\u0131r", + "14": "Giyilmeye haz\u0131r", + "15": "Ekstra kurutma" + } } }, "select": { @@ -705,6 +718,19 @@ "wool_dry": "Y\u00fcnl\u00fc kurutma", "wool_soft_care": "Y\u00fcnl\u00fc & Hassas" } + }, + "dry_levels": { + "state": { + "0": "Kurutma yok", + "1": "\u00dct\u00fc", + "2": "Gard\u0131rop haz\u0131r", + "3": "Gard\u0131rop haz\u0131r", + "4": "Ekstra kurutma", + "12": "\u00dct\u00fc", + "13": "Gard\u0131rop haz\u0131r", + "14": "Giyilmeye haz\u0131r", + "15": "Ekstra kurutma" + } } } } diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index 836a97f..27b8c54 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -65,6 +65,19 @@ "5": "\u5c31\u7eea", "6": "Hot rinse" } + }, + "dry_levels": { + "state": { + "0": "\u4e0d\u70d8\u5e72", + "1": "\u71a8\u70eb", + "2": "\u8863\u67dc\u5c31\u7eea", + "3": "\u8863\u67dc\u5c31\u7eea", + "4": "\u7279\u5e72", + "12": "\u71a8\u70eb", + "13": "\u8863\u67dc\u5c31\u7eea", + "14": "\u53ef\u7a7f", + "15": "\u7279\u5e72" + } } }, "select": { @@ -705,6 +718,19 @@ "wool_dry": "\u7f8a\u6bdb\u8863\u7269\u70d8\u5e72", "wool_soft_care": "\u7f8a\u6bdb" } + }, + "dry_levels": { + "state": { + "0": "\u4e0d\u70d8\u5e72", + "1": "\u71a8\u70eb", + "2": "\u8863\u67dc\u5c31\u7eea", + "3": "\u8863\u67dc\u5c31\u7eea", + "4": "\u7279\u5e72", + "12": "\u71a8\u70eb", + "13": "\u8863\u67dc\u5c31\u7eea", + "14": "\u53ef\u7a7f", + "15": "\u7279\u5e72" + } } } } diff --git a/scripts/generate_translation.py b/scripts/generate_translation.py index f7696e5..90079f5 100644 --- a/scripts/generate_translation.py +++ b/scripts/generate_translation.py @@ -86,13 +86,28 @@ DISHWASHER_PR_PHASE = { 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", +} + SENSOR = { "washing_modes": 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, } +SELECT = {"dry_levels": TUMBLE_DRYER_DRY_LEVEL} + PROGRAMS = { "programs_dw": "PROGRAMS.DW", "programs_ih": "PROGRAMS.IH", @@ -158,6 +173,14 @@ def load_keys(full_key, json_data): } +def add_data(old, original, fallback, data, name, entity="sensor"): + sensor = old.setdefault("entity", {}).setdefault(entity, {}) + for number, phase in data.items(): + state = sensor.setdefault(name, {}).setdefault("state", {}) + if key := load_key(phase, original, fallback): + state[str(number)] = key + + def main(): hass = load_hass_translations() hon = load_hon_translations() @@ -167,11 +190,9 @@ def main(): original = load_json(hon.get(language, "")) old = load_json(hass.get(language, "")) for name, data in SENSOR.items(): - sensor = old.setdefault("entity", {}).setdefault("sensor", {}) - for number, phase in data.items(): - state = sensor.setdefault(name, {}).setdefault("state", {}) - if key := load_key(phase, original, fallback): - state[str(number)] = key + 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) -- 2.39.5 From 4c3f6604d38332f2a629cce8dd1663d01738e18d Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sat, 22 Apr 2023 23:35:59 +0200 Subject: [PATCH 060/205] Change Sterilization and Anti-Crease to switch --- custom_components/hon/number.py | 13 ------------- custom_components/hon/switch.py | 12 ++++++++++++ custom_components/hon/translations/en.json | 1 - 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index e23bb01..614ff4f 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -53,19 +53,6 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { icon="mdi:thermometer", translation_key="tumbledryertemplevel", ), - NumberEntityDescription( - key="startProgram.antiCreaseTime", - name="Anti-Crease time", - entity_category=EntityCategory.CONFIG, - icon="mdi:timer", - native_unit_of_measurement=UnitOfTime.MINUTES, - ), - NumberEntityDescription( - key="startProgram.sterilizationStatus", - name="Sterilization status", - icon="mdi:clock-start", - entity_category=EntityCategory.CONFIG, - ), ), "WD": ( NumberEntityDescription( diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 82afab4..cfb543c 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -72,6 +72,18 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { turn_on_key="pauseProgram", turn_off_key="resumeProgram", ), + HonSwitchEntityDescription( + key="startProgram.sterilizationStatus", + name="Sterilization", + icon="mdi:clock-start", + entity_category=EntityCategory.CONFIG, + ), + HonSwitchEntityDescription( + key="startProgram.antiCreaseTime", + name="Anti-Crease", + entity_category=EntityCategory.CONFIG, + icon="mdi:timer", + ), ), "OV": ( HonSwitchEntityDescription( diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 937bbf7..946be76 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -49,7 +49,6 @@ "103": "Remote" } }, - "tumbledryertemplevel": { "state": { "1": "Cool", -- 2.39.5 From e24b48d672300dce4c9f125eaeb94bb6e4f955a8 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sat, 22 Apr 2023 23:36:19 +0200 Subject: [PATCH 061/205] Update readme --- README.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 7011535..75a8ed5 100644 --- a/README.md +++ b/README.md @@ -162,6 +162,7 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 | Door | | `binary_sensor` | `doorStatus` | | Error | `mdi:math-log` | `sensor` | `errors` | | Machine Status | `mdi:information` | `sensor` | `machMode` | +| Program Phase | `mdi:washing-machine` | `sensor` | `prPhase` | | Remaining Time | `mdi:timer` | `sensor` | `remainingTimeMM` | | Rinse Aid | `mdi:spray-bottle` | `binary_sensor` | `rinseAidStatus` | | Salt | `mdi:shaker-outline` | `binary_sensor` | `saltStatus` | @@ -224,11 +225,11 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 #### Configs | Name | Icon | Entity | Key | | --- | --- | --- | --- | -| Anti-Crease time | `mdi:timer` | `number` | `startProgram.antiCreaseTime` | +| Anti-Crease | `mdi:timer` | `switch` | `startProgram.antiCreaseTime` | | Delay time | `mdi:timer-plus` | `number` | `startProgram.delayTime` | -| Dry level | `mdi:hair-dryer` | `number` | `startProgram.dryLevel` | +| Dry level | `mdi:hair-dryer` | `select` | `startProgram.dryLevel` | | Program | | `select` | `startProgram.program` | -| Sterilization status | `mdi:clock-start` | `number` | `startProgram.sterilizationStatus` | +| Sterilization | `mdi:clock-start` | `switch` | `startProgram.sterilizationStatus` | | Temperature level | `mdi:thermometer` | `number` | `startProgram.tempLevel` | | Time | `mdi:timer` | `select` | `startProgram.dryTimeMM` | #### Sensors @@ -240,7 +241,7 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 | Error | `mdi:math-log` | `sensor` | `errors` | | Machine Status | `mdi:information` | `sensor` | `machMode` | | Program | `mdi:tumble-dryer` | `sensor` | `prCode` | -| Program Phase | `mdi:tumble-dryer` | `sensor` | `prPhase` | +| Program Phase | `mdi:washing-machine` | `sensor` | `prPhase` | | Remaining Time | `mdi:timer` | `sensor` | `remainingTimeMM` | | Start Time | `mdi:clock-start` | `sensor` | `delayTime` | | Temperature level | `mdi:thermometer` | `sensor` | `tempLevel` | @@ -274,7 +275,7 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 | Good Night Mode | | `binary_sensor` | `goodNight` | | Machine Status | `mdi:information` | `sensor` | `machMode` | | Pre Wash | | `binary_sensor` | `startProgram.prewash` | -| Program Phase | `mdi:tumble-dryer` | `sensor` | `prPhase` | +| Program Phase | `mdi:washing-machine` | `sensor` | `prPhase` | | Remaining Time | `mdi:timer` | `sensor` | `remainingTimeMM` | | Remote Control | `mdi:remote` | `binary_sensor` | `attributes.lastConnEvent.category` | | Spin Speed | `mdi:fast-forward-outline` | `sensor` | `spinSpeed` | @@ -310,6 +311,7 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 | Door Lock | | `binary_sensor` | `doorLockStatus` | | Error | `mdi:math-log` | `sensor` | `errors` | | Machine Status | `mdi:information` | `sensor` | `machMode` | +| Program Phase | `mdi:washing-machine` | `sensor` | `prPhase` | | Remaining Time | `mdi:timer` | `sensor` | `remainingTimeMM` | | Remote Control | `mdi:remote` | `binary_sensor` | `attributes.lastConnEvent.category` | | Spin Speed | `mdi:speedometer` | `sensor` | `spinSpeed` | -- 2.39.5 From 9370cf84b8b4cf472c3f941ca97720fefe08a894 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sat, 22 Apr 2023 23:36:31 +0200 Subject: [PATCH 062/205] Make scripts executable --- scripts/generate_translation.py | 2 ++ scripts/sensor_docs.py | 6 ++++++ 2 files changed, 8 insertions(+) mode change 100644 => 100755 scripts/generate_translation.py diff --git a/scripts/generate_translation.py b/scripts/generate_translation.py old mode 100644 new mode 100755 index 90079f5..976fcc3 --- a/scripts/generate_translation.py +++ b/scripts/generate_translation.py @@ -1,3 +1,5 @@ +#!/usr/bin/env python + import asyncio import json import re diff --git a/scripts/sensor_docs.py b/scripts/sensor_docs.py index f7dbafd..eded777 100755 --- a/scripts/sensor_docs.py +++ b/scripts/sensor_docs.py @@ -1,6 +1,12 @@ +#!/usr/bin/env python + import re +import sys from pathlib import Path +if __name__ == "__main__": + sys.path.insert(0, str(Path(__file__).parent.parent)) + from custom_components.hon.binary_sensor import BINARY_SENSORS from custom_components.hon.button import BUTTONS from custom_components.hon.number import NUMBERS -- 2.39.5 From 90e02428e8bb6edcc6805218d6cfbcc3e9738e22 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sun, 23 Apr 2023 02:01:14 +0200 Subject: [PATCH 063/205] start translation of entity names --- README.md | 314 ++++++++++----------- custom_components/hon/binary_sensor.py | 37 ++- custom_components/hon/button.py | 1 + custom_components/hon/number.py | 12 + custom_components/hon/select.py | 2 + custom_components/hon/sensor.py | 24 ++ custom_components/hon/switch.py | 17 ++ custom_components/hon/translations/cs.json | 212 +++++++++++++- custom_components/hon/translations/de.json | 212 +++++++++++++- custom_components/hon/translations/el.json | 212 +++++++++++++- custom_components/hon/translations/en.json | 209 +++++++++++++- custom_components/hon/translations/es.json | 212 +++++++++++++- custom_components/hon/translations/fr.json | 212 +++++++++++++- custom_components/hon/translations/he.json | 212 +++++++++++++- custom_components/hon/translations/hr.json | 212 +++++++++++++- custom_components/hon/translations/it.json | 212 +++++++++++++- custom_components/hon/translations/nl.json | 212 +++++++++++++- custom_components/hon/translations/pl.json | 212 +++++++++++++- custom_components/hon/translations/pt.json | 212 +++++++++++++- custom_components/hon/translations/ro.json | 212 +++++++++++++- custom_components/hon/translations/ru.json | 212 +++++++++++++- custom_components/hon/translations/sk.json | 212 +++++++++++++- custom_components/hon/translations/sl.json | 212 +++++++++++++- custom_components/hon/translations/sr.json | 212 +++++++++++++- custom_components/hon/translations/tr.json | 212 +++++++++++++- custom_components/hon/translations/zh.json | 212 +++++++++++++- scripts/generate_translation.py | 81 ++++++ scripts/sensor_docs.py | 16 +- 28 files changed, 4163 insertions(+), 366 deletions(-) diff --git a/README.md b/README.md index 75a8ed5..781a05a 100644 --- a/README.md +++ b/README.md @@ -134,187 +134,187 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 ### Dish washer #### Controls -| Name | Icon | Entity | Key | -| --- | --- | --- | --- | -| Dish Washer | `mdi:dishwasher` | `switch` | `startProgram` / `stopProgram` | +| Name | Icon | Entity | Key | Auto-Translation | +| --- | --- | --- | --- | --- | +| Dish Washer | `dishwasher` | `switch` | `startProgram` / `stopProgram` | ✔ | #### Configs -| Name | Icon | Entity | Key | -| --- | --- | --- | --- | -| Add Dish | `mdi:silverware-fork-knife` | `switch` | `startProgram.addDish` | -| Delay time | `mdi:timer-plus` | `number` | `startProgram.delayTime` | -| Eco Express | `mdi:sprout` | `switch` | `startProgram.ecoExpress` | -| Eco Index | `mdi:sprout` | `sensor` | `startProgram.ecoIndex` | -| Energy Label | `mdi:lightning-bolt-circle` | `sensor` | `startProgram.energyLabel` | -| Extra Dry | `mdi:hair-dryer` | `switch` | `startProgram.extraDry` | -| Half Load | `mdi:fraction-one-half` | `switch` | `startProgram.halfLoad` | -| Open Door | `mdi:door-open` | `switch` | `startProgram.openDoor` | -| Program | | `select` | `startProgram.program` | -| Temperature | `mdi:thermometer` | `sensor` | `startProgram.temp` | -| Three in One | `mdi:numeric-3-box-outline` | `switch` | `startProgram.threeInOne` | -| Time | `mdi:timer` | `sensor` | `startProgram.remainingTime` | -| Water Efficiency | `mdi:water` | `sensor` | `startProgram.waterEfficiency` | -| Water Saving | `mdi:water-percent` | `sensor` | `startProgram.waterSaving` | -| Water hard | `mdi:water` | `number` | `startProgram.waterHard` | +| Name | Icon | Entity | Key | Auto-Translation | +| --- | --- | --- | --- | --- | +| Add Dish | `silverware-fork-knife` | `switch` | `startProgram.addDish` | ✔ | +| Delay time | `timer-plus` | `number` | `startProgram.delayTime` | ✔ | +| Eco Express | `sprout` | `switch` | `startProgram.ecoExpress` | ✔ | +| Eco Index | `sprout` | `sensor` | `startProgram.ecoIndex` | ❌ | +| Energy Label | `lightning-bolt-circle` | `sensor` | `startProgram.energyLabel` | ❌ | +| Extra Dry | `hair-dryer` | `switch` | `startProgram.extraDry` | ✔ | +| Half Load | `fraction-one-half` | `switch` | `startProgram.halfLoad` | ✔ | +| Open Door | `door-open` | `switch` | `startProgram.openDoor` | ✔ | +| Program | | `select` | `startProgram.program` | ✔ | +| Temperature | `thermometer` | `sensor` | `startProgram.temp` | ✔ | +| Three in One | `numeric-3-box-outline` | `switch` | `startProgram.threeInOne` | ✔ | +| Time | `timer` | `sensor` | `startProgram.remainingTime` | ✔ | +| Water Efficiency | `water` | `sensor` | `startProgram.waterEfficiency` | ✔ | +| Water Saving | `water-percent` | `sensor` | `startProgram.waterSaving` | ✔ | +| Water hard | `water` | `number` | `startProgram.waterHard` | ✔ | #### Sensors -| Name | Icon | Entity | Key | -| --- | --- | --- | --- | -| Connection | | `binary_sensor` | `attributes.lastConnEvent.category` | -| Door | | `binary_sensor` | `doorStatus` | -| Error | `mdi:math-log` | `sensor` | `errors` | -| Machine Status | `mdi:information` | `sensor` | `machMode` | -| Program Phase | `mdi:washing-machine` | `sensor` | `prPhase` | -| Remaining Time | `mdi:timer` | `sensor` | `remainingTimeMM` | -| Rinse Aid | `mdi:spray-bottle` | `binary_sensor` | `rinseAidStatus` | -| Salt | `mdi:shaker-outline` | `binary_sensor` | `saltStatus` | +| Name | Icon | Entity | Key | Auto-Translation | +| --- | --- | --- | --- | --- | +| Connection | | `binary_sensor` | `attributes.lastConnEvent.category` | ✔ | +| Door | | `binary_sensor` | `doorStatus` | ✔ | +| Error | `math-log` | `sensor` | `errors` | ✔ | +| Machine Status | `information` | `sensor` | `machMode` | ✔ | +| Program Phase | `washing-machine` | `sensor` | `prPhase` | ✔ | +| Remaining Time | `timer` | `sensor` | `remainingTimeMM` | ✔ | +| Rinse Aid | `spray-bottle` | `binary_sensor` | `rinseAidStatus` | ✔ | +| Salt | `shaker-outline` | `binary_sensor` | `saltStatus` | ✔ | ### Hob #### Controls -| Name | Icon | Entity | Key | -| --- | --- | --- | --- | -| Start Program | `mdi:pot-steam` | `button` | `startProgram` | +| Name | Icon | Entity | Key | Auto-Translation | +| --- | --- | --- | --- | --- | +| Start Program | `pot-steam` | `button` | `startProgram` | ✔ | #### Configs -| Name | Icon | Entity | Key | -| --- | --- | --- | --- | -| Power Management | `mdi:timelapse` | `number` | `startProgram.powerManagement` | -| Program | | `select` | `startProgram.program` | -| Temperature | `mdi:thermometer` | `number` | `startProgram.temp` | +| Name | Icon | Entity | Key | Auto-Translation | +| --- | --- | --- | --- | --- | +| Power Management | `timelapse` | `number` | `startProgram.powerManagement` | ✔ | +| Program | | `select` | `startProgram.program` | ✔ | +| Temperature | `thermometer` | `number` | `startProgram.temp` | ✔ | #### Sensors -| Name | Icon | Entity | Key | -| --- | --- | --- | --- | -| Connection | `mdi:wifi` | `binary_sensor` | `attributes.lastConnEvent.category` | -| Error | `mdi:math-log` | `sensor` | `errors` | -| Hob Lock | | `binary_sensor` | `hobLockStatus` | -| Hot Status | | `binary_sensor` | `hotStatus` | -| On | `mdi:power-cycle` | `binary_sensor` | `attributes.parameters.onOffStatus` | -| Pan Status | `mdi:pot-mix` | `binary_sensor` | `panStatus` | -| Power | `mdi:lightning-bolt` | `sensor` | `power` | -| Remaining Time | `mdi:timer` | `sensor` | `remainingTimeMM` | -| Remote Control | `mdi:remote` | `binary_sensor` | `attributes.parameters.remoteCtrValid` | -| Temperature | `mdi:thermometer` | `sensor` | `temp` | +| Name | Icon | Entity | Key | Auto-Translation | +| --- | --- | --- | --- | --- | +| Connection | `wifi` | `binary_sensor` | `attributes.lastConnEvent.category` | ✔ | +| Error | `math-log` | `sensor` | `errors` | ❌ | +| Hob Lock | | `binary_sensor` | `hobLockStatus` | ❌ | +| Hot Status | | `binary_sensor` | `hotStatus` | ✔ | +| On | `power-cycle` | `binary_sensor` | `attributes.parameters.onOffStatus` | ❌ | +| Pan Status | `pot-mix` | `binary_sensor` | `panStatus` | ✔ | +| Power | `lightning-bolt` | `sensor` | `power` | ✔ | +| Remaining Time | `timer` | `sensor` | `remainingTimeMM` | ✔ | +| Remote Control | `remote` | `binary_sensor` | `attributes.parameters.remoteCtrValid` | ✔ | +| Temperature | `thermometer` | `sensor` | `temp` | ✔ | ### Oven #### Controls -| Name | Icon | Entity | Key | -| --- | --- | --- | --- | -| Oven | `mdi:toaster-oven` | `switch` | `startProgram` / `stopProgram` | +| Name | Icon | Entity | Key | Auto-Translation | +| --- | --- | --- | --- | --- | +| Oven | `toaster-oven` | `switch` | `startProgram` / `stopProgram` | ✔ | #### Configs -| Name | Icon | Entity | Key | -| --- | --- | --- | --- | -| Delay time | `mdi:timer-plus` | `number` | `startProgram.delayTime` | -| Preheat | `mdi:thermometer-chevron-up` | `switch` | `startProgram.preheatStatus` | -| Program | | `select` | `startProgram.program` | -| Program Duration | `mdi:timelapse` | `number` | `startProgram.prTime` | -| Target Temperature | `mdi:thermometer` | `number` | `startProgram.tempSel` | +| Name | Icon | Entity | Key | Auto-Translation | +| --- | --- | --- | --- | --- | +| Delay time | `timer-plus` | `number` | `startProgram.delayTime` | ✔ | +| Preheat | `thermometer-chevron-up` | `switch` | `startProgram.preheatStatus` | ✔ | +| Program | | `select` | `startProgram.program` | ✔ | +| Program Duration | `timelapse` | `number` | `startProgram.prTime` | ✔ | +| Target Temperature | `thermometer` | `number` | `startProgram.tempSel` | ✔ | #### Sensors -| Name | Icon | Entity | Key | -| --- | --- | --- | --- | -| Connection | `mdi:wifi` | `binary_sensor` | `attributes.lastConnEvent.category` | -| On | `mdi:power-cycle` | `binary_sensor` | `attributes.parameters.onOffStatus` | -| Remaining Time | `mdi:timer` | `sensor` | `remainingTimeMM` | -| Remote Control | `mdi:remote` | `binary_sensor` | `attributes.parameters.remoteCtrValid` | -| Start Time | `mdi:clock-start` | `sensor` | `delayTime` | -| Temperature | `mdi:thermometer` | `sensor` | `temp` | -| Temperature Selected | `mdi:thermometer` | `sensor` | `tempSel` | +| Name | Icon | Entity | Key | Auto-Translation | +| --- | --- | --- | --- | --- | +| Connection | `wifi` | `binary_sensor` | `attributes.lastConnEvent.category` | ✔ | +| On | `power-cycle` | `binary_sensor` | `attributes.parameters.onOffStatus` | ❌ | +| Remaining Time | `timer` | `sensor` | `remainingTimeMM` | ✔ | +| Remote Control | `remote` | `binary_sensor` | `attributes.parameters.remoteCtrValid` | ✔ | +| Start Time | `clock-start` | `sensor` | `delayTime` | ✔ | +| Temperature | `thermometer` | `sensor` | `temp` | ✔ | +| Temperature Selected | `thermometer` | `sensor` | `tempSel` | ✔ | ### Tumble dryer #### Controls -| Name | Icon | Entity | Key | -| --- | --- | --- | --- | -| Pause Tumble Dryer | `mdi:pause` | `switch` | `pauseProgram` / `resumeProgram` | -| Tumble Dryer | `mdi:tumble-dryer` | `switch` | `startProgram` / `stopProgram` | +| Name | Icon | Entity | Key | Auto-Translation | +| --- | --- | --- | --- | --- | +| Pause Tumble Dryer | `pause` | `switch` | `pauseProgram` / `resumeProgram` | ✔ | +| Tumble Dryer | `tumble-dryer` | `switch` | `startProgram` / `stopProgram` | ✔ | #### Configs -| Name | Icon | Entity | Key | -| --- | --- | --- | --- | -| Anti-Crease | `mdi:timer` | `switch` | `startProgram.antiCreaseTime` | -| Delay time | `mdi:timer-plus` | `number` | `startProgram.delayTime` | -| Dry level | `mdi:hair-dryer` | `select` | `startProgram.dryLevel` | -| Program | | `select` | `startProgram.program` | -| Sterilization | `mdi:clock-start` | `switch` | `startProgram.sterilizationStatus` | -| Temperature level | `mdi:thermometer` | `number` | `startProgram.tempLevel` | -| Time | `mdi:timer` | `select` | `startProgram.dryTimeMM` | +| Name | Icon | Entity | Key | Auto-Translation | +| --- | --- | --- | --- | --- | +| Anti-Crease | `timer` | `switch` | `startProgram.antiCreaseTime` | ✔ | +| Delay time | `timer-plus` | `number` | `startProgram.delayTime` | ✔ | +| Dry level | `hair-dryer` | `select` | `startProgram.dryLevel` | ✔ | +| Program | | `select` | `startProgram.program` | ✔ | +| Sterilization | `clock-start` | `switch` | `startProgram.sterilizationStatus` | ❌ | +| Temperature level | `thermometer` | `number` | `startProgram.tempLevel` | ✔ | +| Time | `timer` | `select` | `startProgram.dryTimeMM` | ❌ | #### Sensors -| Name | Icon | Entity | Key | -| --- | --- | --- | --- | -| Connection | | `binary_sensor` | `attributes.lastConnEvent.category` | -| Door | | `binary_sensor` | `doorStatus` | -| Dry level | `mdi:hair-dryer` | `sensor` | `dryLevel` | -| Error | `mdi:math-log` | `sensor` | `errors` | -| Machine Status | `mdi:information` | `sensor` | `machMode` | -| Program | `mdi:tumble-dryer` | `sensor` | `prCode` | -| Program Phase | `mdi:washing-machine` | `sensor` | `prPhase` | -| Remaining Time | `mdi:timer` | `sensor` | `remainingTimeMM` | -| Start Time | `mdi:clock-start` | `sensor` | `delayTime` | -| Temperature level | `mdi:thermometer` | `sensor` | `tempLevel` | +| Name | Icon | Entity | Key | Auto-Translation | +| --- | --- | --- | --- | --- | +| Connection | | `binary_sensor` | `attributes.lastConnEvent.category` | ✔ | +| Door | | `binary_sensor` | `doorStatus` | ❌ | +| Dry level | `hair-dryer` | `sensor` | `dryLevel` | ✔ | +| Error | `math-log` | `sensor` | `errors` | ✔ | +| Machine Status | `information` | `sensor` | `machMode` | ✔ | +| Program | `tumble-dryer` | `sensor` | `prCode` | ✔ | +| Program Phase | `washing-machine` | `sensor` | `prPhase` | ✔ | +| Remaining Time | `timer` | `sensor` | `remainingTimeMM` | ✔ | +| Start Time | `clock-start` | `sensor` | `delayTime` | ✔ | +| Temperature level | `thermometer` | `sensor` | `tempLevel` | ✔ | ### Washer dryer #### Controls -| Name | Icon | Entity | Key | -| --- | --- | --- | --- | -| Pause Washing Machine | `mdi:pause` | `switch` | `pauseProgram` / `resumeProgram` | -| Washing Machine | `mdi:washing-machine` | `switch` | `startProgram` / `stopProgram` | +| Name | Icon | Entity | Key | Auto-Translation | +| --- | --- | --- | --- | --- | +| Pause Washing Machine | `pause` | `switch` | `pauseProgram` / `resumeProgram` | ✔ | +| Washing Machine | `washing-machine` | `switch` | `startProgram` / `stopProgram` | ✔ | #### Configs -| Name | Icon | Entity | Key | -| --- | --- | --- | --- | -| Delay Time | `mdi:timer-plus` | `number` | `startProgram.delayTime` | -| Program | | `select` | `startProgram.program` | -| Suggested weight | `mdi:weight-kilogram` | `sensor` | `startProgram.weight` | +| Name | Icon | Entity | Key | Auto-Translation | +| --- | --- | --- | --- | --- | +| Delay Time | `timer-plus` | `number` | `startProgram.delayTime` | ✔ | +| Program | | `select` | `startProgram.program` | ✔ | +| Suggested weight | `weight-kilogram` | `sensor` | `startProgram.weight` | ❌ | #### Sensors -| Name | Icon | Entity | Key | -| --- | --- | --- | --- | -| Acqua Plus | | `binary_sensor` | `acquaplus` | -| Anti-Crease | | `binary_sensor` | `anticrease` | -| Current Electricity Used | `mdi:lightning-bolt` | `sensor` | `currentElectricityUsed` | -| Current Program | `mdi:tumble-dryer` | `sensor` | `prCode` | -| Current Temperature | `mdi:thermometer` | `sensor` | `temp` | -| Current Water Used | `mdi:water` | `sensor` | `currentWaterUsed` | -| Dirt level | `mdi:liquid-spot` | `sensor` | `dirtyLevel` | -| Dry level | `mdi:hair-dryer` | `sensor` | `dryLevel` | -| Extra Rinse 1 | | `binary_sensor` | `extraRinse1` | -| Extra Rinse 2 | | `binary_sensor` | `extraRinse2` | -| Extra Rinse 3 | | `binary_sensor` | `extraRinse3` | -| Good Night Mode | | `binary_sensor` | `goodNight` | -| Machine Status | `mdi:information` | `sensor` | `machMode` | -| Pre Wash | | `binary_sensor` | `startProgram.prewash` | -| Program Phase | `mdi:washing-machine` | `sensor` | `prPhase` | -| Remaining Time | `mdi:timer` | `sensor` | `remainingTimeMM` | -| Remote Control | `mdi:remote` | `binary_sensor` | `attributes.lastConnEvent.category` | -| Spin Speed | `mdi:fast-forward-outline` | `sensor` | `spinSpeed` | -| Steam level | `mdi:smoke` | `sensor` | `steamLevel` | -| Total Power | | `sensor` | `totalElectricityUsed` | -| Total Wash Cycle | `mdi:counter` | `sensor` | `totalWashCycle` | -| Total Water | | `sensor` | `totalWaterUsed` | +| Name | Icon | Entity | Key | Auto-Translation | +| --- | --- | --- | --- | --- | +| Acqua Plus | | `binary_sensor` | `acquaplus` | ✔ | +| Anti-Crease | | `binary_sensor` | `anticrease` | ✔ | +| Current Electricity Used | `lightning-bolt` | `sensor` | `currentElectricityUsed` | ❌ | +| Current Program | `tumble-dryer` | `sensor` | `prCode` | ❌ | +| Current Temperature | `thermometer` | `sensor` | `temp` | ✔ | +| Current Water Used | `water` | `sensor` | `currentWaterUsed` | ❌ | +| Dirt level | `liquid-spot` | `sensor` | `dirtyLevel` | ✔ | +| Dry level | `hair-dryer` | `sensor` | `dryLevel` | ✔ | +| Extra Rinse 1 | | `binary_sensor` | `extraRinse1` | ✔ | +| Extra Rinse 2 | | `binary_sensor` | `extraRinse2` | ✔ | +| Extra Rinse 3 | | `binary_sensor` | `extraRinse3` | ✔ | +| Good Night Mode | | `binary_sensor` | `goodNight` | ✔ | +| Machine Status | `information` | `sensor` | `machMode` | ✔ | +| Pre Wash | | `binary_sensor` | `startProgram.prewash` | ❌ | +| Program Phase | `washing-machine` | `sensor` | `prPhase` | ✔ | +| Remaining Time | `timer` | `sensor` | `remainingTimeMM` | ✔ | +| Remote Control | `remote` | `binary_sensor` | `attributes.lastConnEvent.category` | ✔ | +| Spin Speed | `fast-forward-outline` | `sensor` | `spinSpeed` | ✔ | +| Steam level | `smoke` | `sensor` | `steamLevel` | ✔ | +| Total Power | | `sensor` | `totalElectricityUsed` | ❌ | +| Total Wash Cycle | `counter` | `sensor` | `totalWashCycle` | ❌ | +| Total Water | | `sensor` | `totalWaterUsed` | ❌ | ### Washing machine #### Controls -| Name | Icon | Entity | Key | -| --- | --- | --- | --- | -| Pause Washing Machine | `mdi:pause` | `switch` | `pauseProgram` / `resumeProgram` | -| Washing Machine | `mdi:washing-machine` | `switch` | `startProgram` / `stopProgram` | +| Name | Icon | Entity | Key | Auto-Translation | +| --- | --- | --- | --- | --- | +| Pause Washing Machine | `pause` | `switch` | `pauseProgram` / `resumeProgram` | ✔ | +| Washing Machine | `washing-machine` | `switch` | `startProgram` / `stopProgram` | ✔ | #### Configs -| Name | Icon | Entity | Key | -| --- | --- | --- | --- | -| Delay Status | `mdi:timer-check` | `switch` | `startProgram.delayStatus` | -| Delay Time | `mdi:timer-plus` | `number` | `startProgram.delayTime` | -| Main Wash Time | `mdi:clock-start` | `number` | `startProgram.mainWashTime` | -| Program | | `select` | `startProgram.program` | -| Rinse Iterations | `mdi:rotate-right` | `number` | `startProgram.rinseIterations` | -| Soak Prewash Selection | `mdi:tshirt-crew` | `switch` | `startProgram.haier_SoakPrewashSelection` | -| Spin speed | `mdi:numeric` | `select` | `startProgram.spinSpeed` | -| Suggested weight | `mdi:weight-kilogram` | `sensor` | `startProgram.weight` | -| Temperature | `mdi:thermometer` | `select` | `startProgram.temp` | +| Name | Icon | Entity | Key | Auto-Translation | +| --- | --- | --- | --- | --- | +| Delay Status | `timer-check` | `switch` | `startProgram.delayStatus` | ❌ | +| Delay Time | `timer-plus` | `number` | `startProgram.delayTime` | ✔ | +| Main Wash Time | `clock-start` | `number` | `startProgram.mainWashTime` | ✔ | +| Program | | `select` | `startProgram.program` | ✔ | +| Rinse Iterations | `rotate-right` | `number` | `startProgram.rinseIterations` | ✔ | +| Soak Prewash Selection | `tshirt-crew` | `switch` | `startProgram.haier_SoakPrewashSelection` | ✔ | +| Spin speed | `numeric` | `select` | `startProgram.spinSpeed` | ✔ | +| Suggested weight | `weight-kilogram` | `sensor` | `startProgram.weight` | ❌ | +| Temperature | `thermometer` | `select` | `startProgram.temp` | ✔ | #### Sensors -| Name | Icon | Entity | Key | -| --- | --- | --- | --- | -| Current Electricity Used | `mdi:lightning-bolt` | `sensor` | `currentElectricityUsed` | -| Current Water Used | `mdi:water` | `sensor` | `currentWaterUsed` | -| Door | | `binary_sensor` | `doorStatus` | -| Door Lock | | `binary_sensor` | `doorLockStatus` | -| Error | `mdi:math-log` | `sensor` | `errors` | -| Machine Status | `mdi:information` | `sensor` | `machMode` | -| Program Phase | `mdi:washing-machine` | `sensor` | `prPhase` | -| Remaining Time | `mdi:timer` | `sensor` | `remainingTimeMM` | -| Remote Control | `mdi:remote` | `binary_sensor` | `attributes.lastConnEvent.category` | -| Spin Speed | `mdi:speedometer` | `sensor` | `spinSpeed` | -| Total Power | | `sensor` | `totalElectricityUsed` | -| Total Wash Cycle | `mdi:counter` | `sensor` | `totalWashCycle` | -| Total Water | | `sensor` | `totalWaterUsed` | +| Name | Icon | Entity | Key | Auto-Translation | +| --- | --- | --- | --- | --- | +| Current Electricity Used | `lightning-bolt` | `sensor` | `currentElectricityUsed` | ❌ | +| Current Water Used | `water` | `sensor` | `currentWaterUsed` | ❌ | +| Door | | `binary_sensor` | `doorStatus` | ❌ | +| Door Lock | | `binary_sensor` | `doorLockStatus` | ✔ | +| Error | `math-log` | `sensor` | `errors` | ✔ | +| Machine Status | `information` | `sensor` | `machMode` | ✔ | +| Program Phase | `washing-machine` | `sensor` | `prPhase` | ✔ | +| Remaining Time | `timer` | `sensor` | `remainingTimeMM` | ✔ | +| Remote Control | `remote` | `binary_sensor` | `attributes.lastConnEvent.category` | ✔ | +| Spin Speed | `speedometer` | `sensor` | `spinSpeed` | ✔ | +| Total Power | | `sensor` | `totalElectricityUsed` | ❌ | +| Total Wash Cycle | `counter` | `sensor` | `totalWashCycle` | ❌ | +| Total Water | | `sensor` | `totalWaterUsed` | ❌ | diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index 725259c..039123f 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -36,12 +36,14 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { device_class=BinarySensorDeviceClass.CONNECTIVITY, on_value="CONNECTED", icon="mdi:remote", + translation_key="remote_control", ), HonBinarySensorEntityDescription( key="doorLockStatus", name="Door Lock", device_class=BinarySensorDeviceClass.LOCK, on_value="0", + translation_key="door_lock", ), HonBinarySensorEntityDescription( key="doorStatus", @@ -56,6 +58,7 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { name="Connection", device_class=BinarySensorDeviceClass.CONNECTIVITY, on_value="CONNECTED", + translation_key="connection", ), HonBinarySensorEntityDescription( key="doorStatus", @@ -71,34 +74,29 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { device_class=BinarySensorDeviceClass.CONNECTIVITY, on_value="CONNECTED", icon="mdi:remote", + translation_key="remote_control", ), HonBinarySensorEntityDescription( key="startProgram.prewash", name="Pre Wash", ), HonBinarySensorEntityDescription( - key="extraRinse1", - name="Extra Rinse 1", + key="extraRinse1", name="Extra Rinse 1", translation_key="extra_rinse_1" ), HonBinarySensorEntityDescription( - key="extraRinse2", - name="Extra Rinse 2", + key="extraRinse2", name="Extra Rinse 2", translation_key="extra_rinse_2" ), HonBinarySensorEntityDescription( - key="extraRinse3", - name="Extra Rinse 3", + key="extraRinse3", name="Extra Rinse 3", translation_key="extra_rinse_3" ), HonBinarySensorEntityDescription( - key="goodNight", - name="Good Night Mode", + key="goodNight", name="Good Night Mode", translation_key="good_night" ), HonBinarySensorEntityDescription( - key="acquaplus", - name="Acqua Plus", + key="acquaplus", name="Acqua Plus", translation_key="aqua_plus" ), HonBinarySensorEntityDescription( - key="anticrease", - name="Anti-Crease", + key="anticrease", name="Anti-Crease", translation_key="anti_crease" ), ), "OV": ( @@ -108,6 +106,7 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { device_class=BinarySensorDeviceClass.CONNECTIVITY, on_value="CONNECTED", icon="mdi:wifi", + translation_key="connection", ), HonBinarySensorEntityDescription( key="attributes.parameters.remoteCtrValid", @@ -115,6 +114,7 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { device_class=BinarySensorDeviceClass.CONNECTIVITY, on_value="1", icon="mdi:remote", + translation_key="remote_control", ), HonBinarySensorEntityDescription( key="attributes.parameters.onOffStatus", @@ -131,6 +131,7 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { device_class=BinarySensorDeviceClass.CONNECTIVITY, on_value="CONNECTED", icon="mdi:wifi", + translation_key="connection", ), HonBinarySensorEntityDescription( key="attributes.parameters.remoteCtrValid", @@ -138,6 +139,7 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { device_class=BinarySensorDeviceClass.CONNECTIVITY, on_value="1", icon="mdi:remote", + translation_key="remote_control", ), HonBinarySensorEntityDescription( key="attributes.parameters.onOffStatus", @@ -151,9 +153,14 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { name="Hot Status", device_class=BinarySensorDeviceClass.HEAT, on_value="1", + translation_key="still_hot", ), HonBinarySensorEntityDescription( - key="panStatus", name="Pan Status", on_value="1", icon="mdi:pot-mix" + key="panStatus", + name="Pan Status", + on_value="1", + icon="mdi:pot-mix", + translation_key="pan_status", ), HonBinarySensorEntityDescription( key="hobLockStatus", @@ -169,6 +176,7 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { device_class=BinarySensorDeviceClass.PROBLEM, on_value="1", icon="mdi:shaker-outline", + translation_key="salt_level", ), HonBinarySensorEntityDescription( key="rinseAidStatus", @@ -176,18 +184,21 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { device_class=BinarySensorDeviceClass.PROBLEM, on_value="1", icon="mdi:spray-bottle", + translation_key="rinse_aid", ), HonBinarySensorEntityDescription( key="attributes.lastConnEvent.category", name="Connection", device_class=BinarySensorDeviceClass.CONNECTIVITY, on_value="CONNECTED", + translation_key="connection", ), HonBinarySensorEntityDescription( key="doorStatus", name="Door", device_class=BinarySensorDeviceClass.DOOR, on_value="1", + translation_key="door_open", ), ), } diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index 0fbecac..2227f58 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -19,6 +19,7 @@ BUTTONS: dict[str, tuple[ButtonEntityDescription, ...]] = { key="startProgram", name="Start Program", icon="mdi:pot-steam", + translation_key="induction_hob", ), ), } diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index 614ff4f..c5a6b13 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -23,12 +23,14 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { icon="mdi:timer-plus", entity_category=EntityCategory.CONFIG, native_unit_of_measurement=UnitOfTime.MINUTES, + translation_key="delay_time", ), NumberEntityDescription( key="startProgram.rinseIterations", name="Rinse Iterations", icon="mdi:rotate-right", entity_category=EntityCategory.CONFIG, + translation_key="rinse_iterations", ), NumberEntityDescription( key="startProgram.mainWashTime", @@ -36,6 +38,7 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { icon="mdi:clock-start", entity_category=EntityCategory.CONFIG, native_unit_of_measurement=UnitOfTime.MINUTES, + translation_key="wash_time", ), ), "TD": ( @@ -45,6 +48,7 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { icon="mdi:timer-plus", entity_category=EntityCategory.CONFIG, native_unit_of_measurement=UnitOfTime.MINUTES, + translation_key="delay_time", ), NumberEntityDescription( key="startProgram.tempLevel", @@ -61,6 +65,7 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { icon="mdi:timer-plus", entity_category=EntityCategory.CONFIG, native_unit_of_measurement=UnitOfTime.MINUTES, + translation_key="delay_time", ), ), "OV": ( @@ -70,6 +75,7 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { icon="mdi:timer-plus", entity_category=EntityCategory.CONFIG, native_unit_of_measurement=UnitOfTime.MINUTES, + translation_key="delay_time", ), NumberEntityDescription( key="startProgram.tempSel", @@ -77,6 +83,7 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { entity_category=EntityCategory.CONFIG, icon="mdi:thermometer", native_unit_of_measurement=UnitOfTemperature.CELSIUS, + translation_key="target_temperature", ), NumberEntityDescription( key="startProgram.prTime", @@ -84,6 +91,7 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { entity_category=EntityCategory.CONFIG, icon="mdi:timelapse", native_unit_of_measurement=UnitOfTime.MINUTES, + translation_key="program_duration", ), ), "IH": ( @@ -92,12 +100,14 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { name="Temperature", entity_category=EntityCategory.CONFIG, icon="mdi:thermometer", + translation_key="temperature", ), NumberEntityDescription( key="startProgram.powerManagement", name="Power Management", entity_category=EntityCategory.CONFIG, icon="mdi:timelapse", + translation_key="power_management", ), ), "DW": ( @@ -107,12 +117,14 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { icon="mdi:timer-plus", entity_category=EntityCategory.CONFIG, native_unit_of_measurement=UnitOfTime.MINUTES, + translation_key="delay_time", ), NumberEntityDescription( key="startProgram.waterHard", name="Water hard", icon="mdi:water", entity_category=EntityCategory.CONFIG, + translation_key="water_hard", ), ), } diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index fee0223..445094d 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -25,6 +25,7 @@ SELECTS = { entity_category=EntityCategory.CONFIG, icon="mdi:numeric", unit_of_measurement=REVOLUTIONS_PER_MINUTE, + translation_key="spin_speed", ), SelectEntityDescription( key="startProgram.temp", @@ -32,6 +33,7 @@ SELECTS = { entity_category=EntityCategory.CONFIG, icon="mdi:thermometer", unit_of_measurement=UnitOfTemperature.CELSIUS, + translation_key="temperature", ), SelectEntityDescription( key="startProgram.program", diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 107696d..fe9ce56 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -93,6 +93,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:timer", state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=UnitOfTime.MINUTES, + translation_key="remaining_time", ), SensorEntityDescription( key="spinSpeed", @@ -100,6 +101,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:speedometer", state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=UnitOfTime.MINUTES, + translation_key="spin_speed", ), ), "TD": ( @@ -118,6 +120,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:timer", state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=UnitOfTime.MINUTES, + translation_key="remaining_time", ), SensorEntityDescription( key="delayTime", @@ -125,6 +128,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:clock-start", state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=UnitOfTime.MINUTES, + translation_key="delay_time", ), SensorEntityDescription( key="prCode", @@ -206,6 +210,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:fast-forward-outline", state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=REVOLUTIONS_PER_MINUTE, + translation_key="spin_speed", ), SensorEntityDescription( key="remainingTimeMM", @@ -213,6 +218,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:timer", state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=UnitOfTime.MINUTES, + translation_key="remaining_time", ), SensorEntityDescription( key="prCode", @@ -229,16 +235,19 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { key="dryLevel", name="Dry level", icon="mdi:hair-dryer", + translation_key="dry_levels", ), SensorEntityDescription( key="dirtyLevel", name="Dirt level", icon="mdi:liquid-spot", + translation_key="dirt_level", ), SensorEntityDescription( key="steamLevel", name="Steam level", icon="mdi:smoke", + translation_key="steam_level", ), SensorEntityDescription( key="temp", @@ -246,6 +255,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:thermometer", state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=UnitOfTemperature.CELSIUS, + translation_key="temperature", ), ), "OV": ( @@ -254,21 +264,27 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { name="Remaining Time", icon="mdi:timer", native_unit_of_measurement=UnitOfTime.MINUTES, + translation_key="remaining_time", ), SensorEntityDescription( key="delayTime", name="Start Time", icon="mdi:clock-start", + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=UnitOfTime.MINUTES, + translation_key="delay_time", ), SensorEntityDescription( key="temp", name="Temperature", icon="mdi:thermometer", + translation_key="temperature", ), SensorEntityDescription( key="tempSel", name="Temperature Selected", icon="mdi:thermometer", + translation_key="target_temperature", ), ), "IH": ( @@ -277,6 +293,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { name="Remaining Time", icon="mdi:timer", native_unit_of_measurement=UnitOfTime.MINUTES, + translation_key="remaining_time", ), SensorEntityDescription( key="temp", @@ -284,6 +301,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:thermometer", state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=UnitOfTemperature.CELSIUS, + translation_key="temperature", ), SensorEntityDescription(key="errors", name="Error", icon="mdi:math-log"), SensorEntityDescription( @@ -291,6 +309,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { name="Power", icon="mdi:lightning-bolt", state_class=SensorStateClass.MEASUREMENT, + translation_key="power", ), ), "DW": ( @@ -307,6 +326,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:water", state_class=SensorStateClass.MEASUREMENT, entity_category=EntityCategory.CONFIG, + translation_key="water_efficiency", ), SensorEntityDescription( key="startProgram.waterSaving", @@ -315,6 +335,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=PERCENTAGE, entity_category=EntityCategory.CONFIG, + translation_key="water_saving", ), SensorEntityDescription( key="startProgram.temp", @@ -323,6 +344,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=UnitOfTemperature.CELSIUS, entity_category=EntityCategory.CONFIG, + translation_key="temperature", ), SensorEntityDescription( key="startProgram.energyLabel", @@ -338,6 +360,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=UnitOfTime.MINUTES, entity_category=EntityCategory.CONFIG, + translation_key="duration", ), SensorEntityDescription( key="machMode", @@ -354,6 +377,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:timer", state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=UnitOfTime.MINUTES, + translation_key="remaining_time", ), SensorEntityDescription( key="prPhase", diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index cfb543c..d93b034 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -36,6 +36,7 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { icon="mdi:washing-machine", turn_on_key="startProgram", turn_off_key="stopProgram", + translation_key="washing_machine", ), HonSwitchEntityDescription( key="pause", @@ -43,6 +44,7 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { icon="mdi:pause", turn_on_key="pauseProgram", turn_off_key="resumeProgram", + translation_key="pause", ), HonSwitchEntityDescription( key="startProgram.delayStatus", @@ -55,6 +57,7 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { name="Soak Prewash Selection", icon="mdi:tshirt-crew", entity_category=EntityCategory.CONFIG, + translation_key="prewash", ), ), "TD": ( @@ -64,6 +67,7 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { icon="mdi:tumble-dryer", turn_on_key="startProgram", turn_off_key="stopProgram", + translation_key="tumble_dryer", ), HonSwitchEntityDescription( key="pause", @@ -71,6 +75,7 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { icon="mdi:pause", turn_on_key="pauseProgram", turn_off_key="resumeProgram", + translation_key="pause", ), HonSwitchEntityDescription( key="startProgram.sterilizationStatus", @@ -83,6 +88,7 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { name="Anti-Crease", entity_category=EntityCategory.CONFIG, icon="mdi:timer", + translation_key="anti_crease", ), ), "OV": ( @@ -92,12 +98,14 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { icon="mdi:toaster-oven", turn_on_key="startProgram", turn_off_key="stopProgram", + translation_key="oven", ), HonSwitchEntityDescription( key="startProgram.preheatStatus", name="Preheat", icon="mdi:thermometer-chevron-up", entity_category=EntityCategory.CONFIG, + translation_key="preheat", ), ), "WD": ( @@ -107,6 +115,7 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { icon="mdi:washing-machine", turn_on_key="startProgram", turn_off_key="stopProgram", + translation_key="washer_dryer", ), HonSwitchEntityDescription( key="pause", @@ -114,6 +123,7 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { icon="mdi:pause", turn_on_key="pauseProgram", turn_off_key="resumeProgram", + translation_key="pause", ), ), "DW": ( @@ -123,42 +133,49 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { icon="mdi:dishwasher", turn_on_key="startProgram", turn_off_key="stopProgram", + translation_key="dish_washer", ), HonSwitchEntityDescription( key="startProgram.extraDry", name="Extra Dry", icon="mdi:hair-dryer", entity_category=EntityCategory.CONFIG, + translation_key="extra_dry", ), HonSwitchEntityDescription( key="startProgram.halfLoad", name="Half Load", icon="mdi:fraction-one-half", entity_category=EntityCategory.CONFIG, + translation_key="half_load", ), HonSwitchEntityDescription( key="startProgram.openDoor", name="Open Door", icon="mdi:door-open", entity_category=EntityCategory.CONFIG, + translation_key="open_door", ), HonSwitchEntityDescription( key="startProgram.threeInOne", name="Three in One", icon="mdi:numeric-3-box-outline", entity_category=EntityCategory.CONFIG, + translation_key="three_in_one", ), HonSwitchEntityDescription( key="startProgram.ecoExpress", name="Eco Express", icon="mdi:sprout", entity_category=EntityCategory.CONFIG, + translation_key="eco", ), HonSwitchEntityDescription( key="startProgram.addDish", name="Add Dish", icon="mdi:silverware-fork-knife", entity_category=EntityCategory.CONFIG, + translation_key="add_dish", ), ), } diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index 00b8202..c96cfc2 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -38,7 +38,8 @@ "25": "Pran\u00ed", "26": "Oh\u0159ev", "27": "Pran\u00ed" - } + }, + "name": "F\u00e1ze" }, "program_phases_td": { "state": { @@ -53,7 +54,8 @@ "18": "Keep Fresh", "19": "Su\u0161en\u00ed", "20": "Su\u0161en\u00ed" - } + }, + "name": "F\u00e1ze" }, "program_phases_dw": { "state": { @@ -64,7 +66,8 @@ "4": "Su\u0161en\u00ed", "5": "P\u0159ipraveno", "6": "Hot rinse" - } + }, + "name": "F\u00e1ze" }, "dry_levels": { "state": { @@ -77,7 +80,44 @@ "13": "Do sk\u0159\u00edn\u011b", "14": "P\u0159ipraveno k oble\u010den\u00ed", "15": "Extra such\u00e9" - } + }, + "name": "Su\u0161en\u00ed" + }, + "anti_crease": { + "name": "Proti poma\u010dk\u00e1n\u00ed" + }, + "power": { + "name": "Stupe\u0148 v\u00fdkonu" + }, + "remaining_time": { + "name": "Zb\u00fdvaj\u00edc\u00ed \u010das" + }, + "temperature": { + "name": "Teplota" + }, + "water_efficiency": { + "name": "Efektivn\u00ed vyu\u017e\u00edv\u00e1n\u00ed vody" + }, + "water_saving": { + "name": "\u00daspora vody" + }, + "duration": { + "name": "D\u00e9lka" + }, + "target_temperature": { + "name": "C\u00edlov\u00e1 teplota" + }, + "spin_speed": { + "name": "Odst\u0159e\u010fov\u00e1n\u00ed" + }, + "steam_leve": { + "name": "\u00darove\u0148 p\u00e1ry" + }, + "dirt_level": { + "name": "M\u00edra zne\u010di\u0161t\u011bn\u00ed" + }, + "delay_time": { + "name": "Napl\u00e1novat" } }, "select": { @@ -178,7 +218,8 @@ "universal": "Univerz\u00e1ln\u00ed 60 \u00b0C", "universal_plus": "Univerz\u00e1ln\u00ed Plus 70 \u00b0C", "zoom_39": "Zoom 39 min" - } + }, + "name": "Program" }, "programs_ih": { "state": { @@ -217,7 +258,8 @@ "iot_standard_keep_warm": "Udr\u017eov\u00e1n\u00ed tepla", "iot_standard_melting": "Rozpustit", "iot_standard_simmering": "Slab\u00e9 va\u0159en\u00ed" - } + }, + "name": "Program" }, "programs_ov": { "state": { @@ -272,7 +314,8 @@ "water_discharge": "Odtok vody", "white_meat": "B\u00edl\u00e9 maso", "white_meat_steam": "B\u00edl\u00e9 maso p\u0159ipravovan\u00e9 v p\u00e1\u0159e" - } + }, + "name": "Program" }, "programs_td": { "state": { @@ -408,7 +451,8 @@ "woolmark": "Woolmark", "xxl_load": "XXL n\u00e1pl\u0148", "zoom_59": "Zoom 59" - } + }, + "name": "Program" }, "programs_wm": { "state": { @@ -717,7 +761,8 @@ "wool_and_delicates_49": "Vlna/Jemn\u00e9 49'", "wool_dry": "Vlna - such\u00e9", "wool_soft_care": "Vlna & M\u0115kk\u00e1 P\u00e9\u010de" - } + }, + "name": "Program" }, "dry_levels": { "state": { @@ -730,7 +775,154 @@ "13": "Do sk\u0159\u00edn\u011b", "14": "P\u0159ipraveno k oble\u010den\u00ed", "15": "Extra such\u00e9" - } + }, + "name": "Su\u0161en\u00ed" + }, + "spin_speed": { + "name": "Odst\u0159e\u010fov\u00e1n\u00ed" + }, + "temperature": { + "name": "Teplota" + } + }, + "switch": { + "anti_crease": { + "name": "Proti poma\u010dk\u00e1n\u00ed" + }, + "add_dish": { + "name": "" + }, + "eco_express": { + "name": "Eco" + }, + "extra_dry": { + "name": "Extra such\u00e9" + }, + "half_load": { + "name": "Polovi\u010dn\u00ed n\u00e1pl\u0148" + }, + "open_door": { + "name": "Otev\u0159\u00edt dv\u00ed\u0159ka" + }, + "three_in_one": { + "name": "3 v 1" + }, + "preheat": { + "name": "P\u0159edeh\u0159ev" + }, + "dish_washer": { + "name": "My\u010dka" + }, + "tumble_dryer": { + "name": "Su\u0161i\u010dka" + }, + "washing_machine": { + "name": "Pra\u010dka" + }, + "washer_dryer": { + "name": "Pra\u010dka se su\u0161i\u010dkou" + }, + "oven": { + "name": "Trouba" + }, + "prewash": { + "name": "P\u0159edp\u00edrka\r\r\r\r\r\r\n" + }, + "pause": { + "name": "Pozastavit" + } + }, + "binary_sensor": { + "door_lock": { + "name": "Z\u00e1mek dv\u00ed\u0159ek" + }, + "extra_rinse_1": { + "name": "+1 m\u00e1ch\u00e1n\u00ed" + }, + "extra_rinse_2": { + "name": "+2 m\u00e1ch\u00e1n\u00ed" + }, + "extra_rinse_3": { + "name": "+3 m\u00e1ch\u00e1n\u00ed" + }, + "good_night": { + "name": "Dobrou noc" + }, + "anti_crease": { + "name": "Proti poma\u010dk\u00e1n\u00ed" + }, + "aqua_plus": { + "name": "Aquaplus" + }, + "spin_speed": { + "name": "Odst\u0159e\u010fov\u00e1n\u00ed" + }, + "programs_dw": { + "name": "Program" + }, + "programs_ih": { + "name": "Program" + }, + "programs_ov": { + "name": "Program" + }, + "programs_td": { + "name": "Program" + }, + "programs_wm": { + "name": "Program" + }, + "still_hot": { + "name": "St\u00e1le hork\u00e1" + }, + "pan_status": { + "name": "P\u00e1nev" + }, + "remote_control": { + "name": "D\u00e1lkov\u00e9 ovl\u00e1d\u00e1n\u00ed" + }, + "rinse_aid": { + "name": "Mno\u017estv\u00ed oplachovac\u00edho prost\u0159edku" + }, + "salt_level": { + "name": "Mno\u017estv\u00ed soli" + }, + "door_open": { + "name": "Otev\u0159en\u00e1 dv\u00ed\u0159ka" + }, + "connection": { + "name": "P\u0159ipojen\u00ed" + } + }, + "number": { + "power_management": { + "name": "\u0158\u00edzen\u00ed v\u00fdkonu" + }, + "temperature": { + "name": "Teplota" + }, + "delay_time": { + "name": "Napl\u00e1novat" + }, + "water_hard": { + "name": "Tvrdost vody" + }, + "program_duration": { + "name": "D\u00e9lka programu" + }, + "target_temperature": { + "name": "C\u00edlov\u00e1 teplota" + }, + "rinse_iterations": { + "name": "Po\u010det m\u00e1ch\u00e1n\u00ed" + }, + "wash_time": { + "name": "D\u00e9lka pran\u00ed" + } + }, + "button": { + "induction_hob": { + "name": "Induk\u010dn\u00ed varn\u00e1 deska" } } } diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index bc5c851..d52eb4f 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -38,7 +38,8 @@ "25": "Waschen", "26": "Heizung", "27": "Waschen" - } + }, + "name": "Phase" }, "program_phases_td": { "state": { @@ -53,7 +54,8 @@ "18": "Auffrischen", "19": "Trocknen", "20": "Trocknen" - } + }, + "name": "Phase" }, "program_phases_dw": { "state": { @@ -64,7 +66,8 @@ "4": "Trocknen", "5": "Bereit", "6": "Hot rinse" - } + }, + "name": "Phase" }, "dry_levels": { "state": { @@ -77,7 +80,44 @@ "13": "W\u00e4sche fertig", "14": "Bereit zum Anziehen", "15": "Extra trocken" - } + }, + "name": "Trocknen" + }, + "anti_crease": { + "name": "Knitterschutz" + }, + "power": { + "name": "Leistungsstufe" + }, + "remaining_time": { + "name": "Verbleibende Zeit" + }, + "temperature": { + "name": "Temperatur" + }, + "water_efficiency": { + "name": "Wasserverbrauch" + }, + "water_saving": { + "name": "Wasserersparnis" + }, + "duration": { + "name": "Dauer" + }, + "target_temperature": { + "name": "Zieltemperatur" + }, + "spin_speed": { + "name": "Schleudern" + }, + "steam_leve": { + "name": "Dampfstufe" + }, + "dirt_level": { + "name": "Verschmutzungsgrad" + }, + "delay_time": { + "name": "Zeitplan" } }, "select": { @@ -178,7 +218,8 @@ "universal": "Universal 60\u00b0C", "universal_plus": "Universal Plus 70 \u00b0C", "zoom_39": "Zoom 39 min" - } + }, + "name": "Programm" }, "programs_ih": { "state": { @@ -217,7 +258,8 @@ "iot_standard_keep_warm": "Warmhalten", "iot_standard_melting": "Schmelzen", "iot_standard_simmering": "Simmering" - } + }, + "name": "Programm" }, "programs_ov": { "state": { @@ -272,7 +314,8 @@ "water_discharge": "Wasserabfluss", "white_meat": "Wei\u00dfes Fleisch", "white_meat_steam": "Dampfgegartes wei\u00dfes Fleisch" - } + }, + "name": "Programm" }, "programs_td": { "state": { @@ -408,7 +451,8 @@ "woolmark": "Wolle", "xxl_load": "XXL-Beladung", "zoom_59": "Zoom 59" - } + }, + "name": "Programm" }, "programs_wm": { "state": { @@ -717,7 +761,8 @@ "wool_and_delicates_49": "Wolle/Feinw\u00e4sche 49'", "wool_dry": "Wolle trocknen", "wool_soft_care": "Wolle & Soft Care" - } + }, + "name": "Programm" }, "dry_levels": { "state": { @@ -730,7 +775,154 @@ "13": "W\u00e4sche fertig", "14": "Bereit zum Anziehen", "15": "Extra trocken" - } + }, + "name": "Trocknen" + }, + "spin_speed": { + "name": "Schleudern" + }, + "temperature": { + "name": "Temperatur" + } + }, + "switch": { + "anti_crease": { + "name": "Knitterschutz" + }, + "add_dish": { + "name": "" + }, + "eco_express": { + "name": "Eco" + }, + "extra_dry": { + "name": "Extra trocken" + }, + "half_load": { + "name": "Halbe Ladung" + }, + "open_door": { + "name": "T\u00fcr offen" + }, + "three_in_one": { + "name": "3-in-1" + }, + "preheat": { + "name": "Vorheizen" + }, + "dish_washer": { + "name": "Geschirrsp\u00fclmaschine" + }, + "tumble_dryer": { + "name": "Trockner" + }, + "washing_machine": { + "name": "Waschmaschine" + }, + "washer_dryer": { + "name": "Waschtrockner" + }, + "oven": { + "name": "Ofen" + }, + "prewash": { + "name": "Vorsp\u00fclen" + }, + "pause": { + "name": "Anhalten" + } + }, + "binary_sensor": { + "door_lock": { + "name": "T\u00fcrsperre" + }, + "extra_rinse_1": { + "name": "+1 Sp\u00fclgang" + }, + "extra_rinse_2": { + "name": "+2 Sp\u00fclg\u00e4nge" + }, + "extra_rinse_3": { + "name": "+3 Sp\u00fclg\u00e4nge" + }, + "good_night": { + "name": "Gute Nacht" + }, + "anti_crease": { + "name": "Knitterschutz" + }, + "aqua_plus": { + "name": "Acquaplus" + }, + "spin_speed": { + "name": "Schleudern" + }, + "programs_dw": { + "name": "Programm" + }, + "programs_ih": { + "name": "Programm" + }, + "programs_ov": { + "name": "Programm" + }, + "programs_td": { + "name": "Programm" + }, + "programs_wm": { + "name": "Programm" + }, + "still_hot": { + "name": "Noch hei\u00df" + }, + "pan_status": { + "name": "Pfanne" + }, + "remote_control": { + "name": "Fernsteuerung" + }, + "rinse_aid": { + "name": "Klarsp\u00fclerstand" + }, + "salt_level": { + "name": "Salz-F\u00fcllstand" + }, + "door_open": { + "name": "T\u00fcr offen" + }, + "connection": { + "name": "Verbinden" + } + }, + "number": { + "power_management": { + "name": "Energieverwaltung" + }, + "temperature": { + "name": "Temperatur" + }, + "delay_time": { + "name": "Zeitplan" + }, + "water_hard": { + "name": "Wasserh\u00e4rte" + }, + "program_duration": { + "name": "Programmdauer" + }, + "target_temperature": { + "name": "Zieltemperatur" + }, + "rinse_iterations": { + "name": "Anzahl Sp\u00fclg\u00e4nge" + }, + "wash_time": { + "name": "Waschdauer" + } + }, + "button": { + "induction_hob": { + "name": "Induktionskochfeld" } } } diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index 063942d..e32e40e 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -38,7 +38,8 @@ "25": "\u03a0\u03bb\u03cd\u03c3\u03b7", "26": "\u0398\u03ad\u03c1\u03bc\u03b1\u03bd\u03c3\u03b7", "27": "\u03a0\u03bb\u03cd\u03c3\u03b7" - } + }, + "name": "\u03a6\u03ac\u03c3\u03b7" }, "program_phases_td": { "state": { @@ -53,7 +54,8 @@ "18": "\u039a\u03c1\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 \u03c4\u03b7 \u03c6\u03c1\u03b5\u03c3\u03ba\u03ac\u03b4\u03b1", "19": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", "20": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1" - } + }, + "name": "\u03a6\u03ac\u03c3\u03b7" }, "program_phases_dw": { "state": { @@ -64,7 +66,8 @@ "4": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", "5": "\u0395\u03c4\u03bf\u03b9\u03bc\u03bf\u03c2", "6": "Hot rinse" - } + }, + "name": "\u03a6\u03ac\u03c3\u03b7" }, "dry_levels": { "state": { @@ -77,7 +80,44 @@ "13": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1 \u03b3\u03b9\u03b1 \u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 ", "14": "\u0395\u03c4\u03bf\u03b9\u03bc\u03bf \u03bd\u03b1 \u03c6\u03bf\u03c1\u03b5\u03b8\u03b5\u03af", "15": "\u0395\u03c0\u03b9\u03c0\u03bb\u03ad\u03bf\u03bd \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1" - } + }, + "name": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1" + }, + "anti_crease": { + "name": "\u039b\u03b9\u03b3\u03cc\u03c4\u03b5\u03c1\u03b5\u03c2 \u03b6\u03ac\u03c1\u03b5\u03c2" + }, + "power": { + "name": "\u0395\u03c0\u03af\u03c0\u03b5\u03b4\u03bf \u03b9\u03c3\u03c7\u03cd\u03bf\u03c2 \u03c1\u03b5\u03cd\u03bc\u03b1\u03c4\u03bf\u03c2" + }, + "remaining_time": { + "name": "\u03a7\u03c1\u03cc\u03bd\u03bf\u03c2 \u03c0\u03bf\u03c5 \u03b1\u03c0\u03bf\u03bc\u03ad\u03bd\u03b5\u03b9" + }, + "temperature": { + "name": "\u0398\u03b5\u03c1\u03bc\u03bf\u03ba\u03c1\u03b1\u03c3\u03af\u03b1" + }, + "water_efficiency": { + "name": "\u0391\u03c0\u03cc\u03b4\u03bf\u03c3\u03b7 \u03bd\u03b5\u03c1\u03bf\u03cd" + }, + "water_saving": { + "name": "\u0395\u03be\u03bf\u03b9\u03ba\u03bf\u03bd\u03cc\u03bc\u03b7\u03c3\u03b7 \u03bd\u03b5\u03c1\u03bf\u03cd" + }, + "duration": { + "name": "\u0394\u03b9\u03ac\u03c1\u03ba\u03b5\u03b9\u03b1" + }, + "target_temperature": { + "name": "\u03a3\u03c4\u03bf\u03c7\u03b5\u03c5\u03bc\u03ad\u03bd\u03b7 \u03b8\u03b5\u03c1\u03bc\u03bf\u03ba\u03c1\u03b1\u03c3\u03af\u03b1" + }, + "spin_speed": { + "name": "\u03a3\u03c4\u03cd\u03c8\u03b9\u03bc\u03bf" + }, + "steam_leve": { + "name": "\u0395\u03c0\u03af\u03c0\u03b5\u03b4\u03bf \u03b1\u03c4\u03bc\u03bf\u03cd" + }, + "dirt_level": { + "name": "\u0395\u03c0\u03af\u03c0\u03b5\u03b4\u03bf \u03b2\u03c1\u03c9\u03bc\u03b9\u03ac\u03c2" + }, + "delay_time": { + "name": "\u03a0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1" } }, "select": { @@ -178,7 +218,8 @@ "universal": "\u03b3\u03b5\u03bd\u03b9\u03ba\u03bf 60\u00b0C", "universal_plus": "\u03b3\u03b5\u03bd\u03b9\u03ba\u03bf Plus 70\u00b0C", "zoom_39": "Zoom 39 min" - } + }, + "name": "\u03a0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1" }, "programs_ih": { "state": { @@ -217,7 +258,8 @@ "iot_standard_keep_warm": "\u03a3\u03c5\u03bd\u03c4\u03ae\u03c1\u03b7\u03c3\u03b7", "iot_standard_melting": "\u039b\u03b9\u03ce\u03c3\u03b9\u03bc\u03bf", "iot_standard_simmering": "\u03a3\u03b9\u03b3\u03bf\u03b2\u03c1\u03ac\u03c3\u03b9\u03bc\u03bf" - } + }, + "name": "\u03a0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1" }, "programs_ov": { "state": { @@ -272,7 +314,8 @@ "water_discharge": "\u0391\u03c0\u03bf\u03c3\u03c4\u03c1\u03ac\u03b3\u03b3\u03b9\u03c3\u03b7 \u03bd\u03b5\u03c1\u03bf\u03cd", "white_meat": "\u039b\u03b5\u03c5\u03ba\u03cc \u03ba\u03c1\u03ad\u03b1\u03c2", "white_meat_steam": "\u039b\u03b5\u03c5\u03ba\u03cc \u03ba\u03c1\u03ad\u03b1\u03c2 \u03c3\u03c4\u03bf\u03bd \u03b1\u03c4\u03bc\u03cc" - } + }, + "name": "\u03a0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1" }, "programs_td": { "state": { @@ -408,7 +451,8 @@ "woolmark": "\u039c\u03b1\u03bb\u03bb\u03b9\u03bd\u03b1", "xxl_load": "XXL \u03a6\u03bf\u03c1\u03c4\u03b9\u03bf", "zoom_59": "Zoom 59" - } + }, + "name": "\u03a0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1" }, "programs_wm": { "state": { @@ -717,7 +761,8 @@ "wool_and_delicates_49": "\u03bc\u03b1\u03bb\u03bb\u03b9\u03bd\u03b1/\u03b5\u03c5\u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03b1 49'", "wool_dry": "\u039c\u03ac\u03bb\u03bb\u03b9\u03bd\u03b1 \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", "wool_soft_care": "\u03bc\u03b1\u03bb\u03bb\u03b9\u03bd\u03b1 & Soft Care" - } + }, + "name": "\u03a0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1" }, "dry_levels": { "state": { @@ -730,7 +775,154 @@ "13": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1 \u03b3\u03b9\u03b1 \u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 ", "14": "\u0395\u03c4\u03bf\u03b9\u03bc\u03bf \u03bd\u03b1 \u03c6\u03bf\u03c1\u03b5\u03b8\u03b5\u03af", "15": "\u0395\u03c0\u03b9\u03c0\u03bb\u03ad\u03bf\u03bd \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1" - } + }, + "name": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1" + }, + "spin_speed": { + "name": "\u03a3\u03c4\u03cd\u03c8\u03b9\u03bc\u03bf" + }, + "temperature": { + "name": "\u0398\u03b5\u03c1\u03bc\u03bf\u03ba\u03c1\u03b1\u03c3\u03af\u03b1" + } + }, + "switch": { + "anti_crease": { + "name": "\u039b\u03b9\u03b3\u03cc\u03c4\u03b5\u03c1\u03b5\u03c2 \u03b6\u03ac\u03c1\u03b5\u03c2" + }, + "add_dish": { + "name": "" + }, + "eco_express": { + "name": "\u039f\u03b9\u03ba\u03bf\u03bb\u03bf\u03b3\u03b9\u03ba\u03cc" + }, + "extra_dry": { + "name": "\u0395\u03c0\u03b9\u03c0\u03bb\u03ad\u03bf\u03bd \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1" + }, + "half_load": { + "name": "\u039c\u03b9\u03c3\u03bf\u03b3\u03b5\u03bc\u03ac\u03c4\u03bf \u03c6\u03bf\u03c1\u03c4\u03af\u03bf" + }, + "open_door": { + "name": "\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03c0\u03cc\u03c1\u03c4\u03b1\u03c2" + }, + "three_in_one": { + "name": "3 \u03c3\u03b5 1" + }, + "preheat": { + "name": "\u03a0\u03c1\u03bf\u03b8\u03ad\u03c1\u03bc\u03b1\u03bd\u03c3\u03b7" + }, + "dish_washer": { + "name": "\u03a0\u03bb\u03c5\u03bd\u03c4\u03ae\u03c1\u03b9\u03bf \u03c0\u03b9\u03ac\u03c4\u03c9\u03bd" + }, + "tumble_dryer": { + "name": "\u03a3\u03c4\u03b5\u03b3\u03bd\u03c9\u03c4\u03ae\u03c1\u03b9\u03bf" + }, + "washing_machine": { + "name": "\u03a0\u03bb\u03c5\u03bd\u03c4\u03ae\u03c1\u03b9\u03bf" + }, + "washer_dryer": { + "name": "\u03a3\u03c4\u03b5\u03b3\u03bd\u03c9\u03c4\u03ae\u03c1\u03b9\u03bf" + }, + "oven": { + "name": "\u03a6\u03bf\u03cd\u03c1\u03bd\u03bf\u03c2" + }, + "prewash": { + "name": "\u03c0\u03c1\u03bf\u03c0\u03bb\u03c5\u03c3\u03b7" + }, + "pause": { + "name": "\u03a0\u03b1\u03cd\u03c3\u03b7" + } + }, + "binary_sensor": { + "door_lock": { + "name": "\u039a\u03bb\u03b5\u03b9\u03b4\u03b1\u03c1\u03b9\u03ac \u03c4\u03b7\u03c2 \u03c0\u03cc\u03c1\u03c4\u03b1\u03c2" + }, + "extra_rinse_1": { + "name": "+1 \u039e\u03ad\u03b2\u03b3\u03b1\u03bb\u03bc\u03b1" + }, + "extra_rinse_2": { + "name": "+2 \u039e\u03b5\u03b2\u03b3\u03ac\u03bb\u03bc\u03b1\u03c4\u03b1" + }, + "extra_rinse_3": { + "name": "+3 \u039e\u03b5\u03b2\u03b3\u03ac\u03bb\u03bc\u03b1\u03c4\u03b1" + }, + "good_night": { + "name": "\u039a\u03b1\u03bb\u03b7\u03bd\u03c5\u03c7\u03c4\u03b1" + }, + "anti_crease": { + "name": "\u039b\u03b9\u03b3\u03cc\u03c4\u03b5\u03c1\u03b5\u03c2 \u03b6\u03ac\u03c1\u03b5\u03c2" + }, + "aqua_plus": { + "name": "Acquaplus (\u03c0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7 \u03bd\u03b5\u03c1\u03bf\u03cd)" + }, + "spin_speed": { + "name": "\u03a3\u03c4\u03cd\u03c8\u03b9\u03bc\u03bf" + }, + "programs_dw": { + "name": "\u03a0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1" + }, + "programs_ih": { + "name": "\u03a0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1" + }, + "programs_ov": { + "name": "\u03a0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1" + }, + "programs_td": { + "name": "\u03a0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1" + }, + "programs_wm": { + "name": "\u03a0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1" + }, + "still_hot": { + "name": "\u0391\u03ba\u03cc\u03bc\u03b1 \u03b6\u03b5\u03c3\u03c4\u03cc" + }, + "pan_status": { + "name": "\u03a4\u03b7\u03b3\u03ac\u03bd\u03b9" + }, + "remote_control": { + "name": "\u03a4\u03b7\u03bb\u03b5\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae\u03c1\u03b9\u03bf" + }, + "rinse_aid": { + "name": "\u0395\u03c0\u03af\u03c0\u03b5\u03b4\u03bf \u03bb\u03b1\u03bc\u03c0\u03c1\u03c5\u03bd\u03c4\u03b9\u03ba\u03bf\u03cd" + }, + "salt_level": { + "name": "\u0395\u03c0\u03af\u03c0\u03b5\u03b4\u03bf \u03b1\u03bb\u03b1\u03c4\u03b9\u03bf\u03cd" + }, + "door_open": { + "name": "\u03a0\u03cc\u03c1\u03c4\u03b1 \u03b1\u03bd\u03bf\u03b9\u03c7\u03c4\u03ae" + }, + "connection": { + "name": "\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7" + } + }, + "number": { + "power_management": { + "name": "\u0394\u03b9\u03b1\u03c7\u03b5\u03af\u03c1\u03b9\u03c3\u03b7 \u03b5\u03bd\u03ad\u03c1\u03b3\u03b5\u03b9\u03b1\u03c2" + }, + "temperature": { + "name": "\u0398\u03b5\u03c1\u03bc\u03bf\u03ba\u03c1\u03b1\u03c3\u03af\u03b1" + }, + "delay_time": { + "name": "\u03a0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1" + }, + "water_hard": { + "name": "\u03a3\u03ba\u03bb\u03b7\u03c1\u03cc\u03c4\u03b7\u03c4\u03b1 \u03bd\u03b5\u03c1\u03bf\u03cd" + }, + "program_duration": { + "name": "\u0394\u03b9\u03ac\u03c1\u03ba\u03b5\u03b9\u03b1 \u03c0\u03c1\u03bf\u03b3\u03c1\u03ac\u03bc\u03bc\u03b1\u03c4\u03bf\u03c2" + }, + "target_temperature": { + "name": "\u03a3\u03c4\u03bf\u03c7\u03b5\u03c5\u03bc\u03ad\u03bd\u03b7 \u03b8\u03b5\u03c1\u03bc\u03bf\u03ba\u03c1\u03b1\u03c3\u03af\u03b1" + }, + "rinse_iterations": { + "name": "\u0391\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2 \u03be\u03b5\u03c0\u03bb\u03c5\u03bc\u03ac\u03c4\u03c9\u03bd" + }, + "wash_time": { + "name": "\u03a7\u03c1\u03cc\u03bd\u03bf\u03c2 \u03c0\u03bb\u03cd\u03c3\u03b7\u03c2" + } + }, + "button": { + "induction_hob": { + "name": "\u0395\u03c0\u03b1\u03b3\u03c9\u03b3\u03b9\u03ba\u03ae \u03b5\u03c3\u03c4\u03af\u03b1" } } } diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 946be76..1b43ee3 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -104,7 +104,8 @@ "25": "Wash", "26": "Heating", "27": "Wash" - } + }, + "name": "Phase" }, "program_phases_td": { "state": { @@ -119,7 +120,8 @@ "18": "Keep Fresh", "19": "Drying", "20": "Drying" - } + }, + "name": "Phase" }, "program_phases_dw": { "state": { @@ -130,7 +132,8 @@ "4": "Drying", "5": "Ready", "6": "Hot rinse" - } + }, + "name": "Phase" }, "dry_levels": { "state": { @@ -143,7 +146,88 @@ "13": "Cupboard Dry", "14": "Ready to wear", "15": "Extra dry" - } + }, + "name": "Drying Type" + }, + "power": { + "name": "Power level" + }, + "remaining_time": { + "name": "Time remaining" + }, + "temperature": { + "name": "Temperature" + }, + "water_efficiency": { + "name": "Water efficiency" + }, + "water_saving": { + "name": "Water savings" + }, + "duration": { + "name": "Duration" + }, + "target_temperature": { + "name": "Target temperature" + }, + "spin_speed": { + "name": "Spin" + }, + "steam_leve": { + "name": "Steam Level" + }, + "dirt_level": { + "name": "Dirt level" + }, + "delay_time": { + "name": "Delay start" + } + }, + "switch": { + "anti_crease": { + "name": "Anticrease" + }, + "add_dish": { + "name": "" + }, + "eco_express": { + "name": "Eco" + }, + "extra_dry": { + "name": "Extra dry" + }, + "half_load": { + "name": "Half load" + }, + "open_door": { + "name": "Open door" + }, + "three_in_one": { + "name": "3 in 1" + }, + "preheat": { + "name": "Preheat" + }, + "dish_washer": { + "name": "Dish washer" + }, + "tumble_dryer": { + "name": "Tumble dryer" + }, + "washing_machine": { + "name": "Washing machine" + }, + "washer_dryer": { + "name": "Washer dryer" + }, + "oven": { + "name": "Oven" + }, + "prewash": { + "name": "Pre-wash " + }, + "pause": { + "name": "Pause" } }, "select": { @@ -158,7 +242,8 @@ "13": "Cupboard Dry", "14": "Ready to wear", "15": "Extra dry" - } + }, + "name": "Drying Type" }, "programs_dw": { "state": { @@ -262,7 +347,8 @@ "universal_plus": "Universal Plus 70\u00b0C", "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" - } + }, + "name": "Program" }, "programs_ih": { "state": { @@ -301,7 +387,8 @@ "iot_standard_keep_warm": "Keep Warm", "iot_standard_melting": "Melting", "iot_standard_simmering": "Simmering" - } + }, + "name": "Program" }, "programs_ov": { "state": { @@ -359,7 +446,8 @@ "water_discharge": "Water Drain", "white_meat": "White Meat", "white_meat_steam": "Steam-cooked white meat" - } + }, + "name": "Program" }, "programs_td": { "state": { @@ -495,7 +583,8 @@ "woolmark": "Wool", "xxl_load": "XXL Load", "zoom_59": "Zoom 59" - } + }, + "name": "Program" }, "programs_wm": { "state": { @@ -804,7 +893,107 @@ "wool_and_delicates_49": "Wool and Delicates 49'", "wool_dry": "Wool Dry", "wool_soft_care": "Wool and Soft Care" - } + }, + "name": "Program" + }, + "spin_speed": { + "name": "Spin" + }, + "temperature": { + "name": "Temperature" + } + }, + "binary_sensor": { + "door_lock": { + "name": "Door lock" + }, + "extra_rinse_1": { + "name": "+1 Rinse" + }, + "extra_rinse_2": { + "name": "+2 Rinses" + }, + "extra_rinse_3": { + "name": "+3 Rinses" + }, + "good_night": { + "name": "Good Night" + }, + "anti_crease": { + "name": "Anticrease" + }, + "aqua_plus": { + "name": "Acquaplus" + }, + "spin_speed": { + "name": "Spin" + }, + "programs_dw": { + "name": "Program" + }, + "programs_ih": { + "name": "Program" + }, + "programs_ov": { + "name": "Program" + }, + "programs_td": { + "name": "Program" + }, + "programs_wm": { + "name": "Program" + }, + "still_hot": { + "name": "Still hot" + }, + "pan_status": { + "name": "Pan" + }, + "remote_control": { + "name": "Remote control" + }, + "rinse_aid": { + "name": "Rinse Aid level" + }, + "salt_level": { + "name": "Salt level" + }, + "door_open": { + "name": "Door open" + }, + "connection": { + "name": "Connection" + } + }, + "number": { + "power_management": { + "name": "Power management" + }, + "temperature": { + "name": "Temperature" + }, + "delay_time": { + "name": "Delay start" + }, + "water_hard": { + "name": "Water hardness" + }, + "program_duration": { + "name": "Program duration" + }, + "target_temperature": { + "name": "Target temperature" + }, + "rinse_iterations": { + "name": "Number of rinses" + }, + "wash_time": { + "name": "Washing intensity" + } + }, + "button": { + "induction_hob": { + "name": "Induction Hob" } } } diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index 55a94f4..b3c9cd7 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -38,7 +38,8 @@ "25": "Lavado", "26": "Calentamiento", "27": "Lavado" - } + }, + "name": "Fase" }, "program_phases_td": { "state": { @@ -53,7 +54,8 @@ "18": "Ropa fresca", "19": "Secado", "20": "Secado" - } + }, + "name": "Fase" }, "program_phases_dw": { "state": { @@ -64,7 +66,8 @@ "4": "Secado", "5": "Listo", "6": "Hot rinse" - } + }, + "name": "Fase" }, "dry_levels": { "state": { @@ -77,7 +80,44 @@ "13": "Listo para guardar", "14": "Listo para llevar", "15": "Extraseco" - } + }, + "name": "Secado" + }, + "anti_crease": { + "name": "Antiarrugas" + }, + "power": { + "name": "Nivel de potencia" + }, + "remaining_time": { + "name": "Tiempo restante" + }, + "temperature": { + "name": "Temperatura" + }, + "water_efficiency": { + "name": "Eficiencia h\u00eddrica" + }, + "water_saving": { + "name": "Ahorro de agua" + }, + "duration": { + "name": "Duraci\u00f3n" + }, + "target_temperature": { + "name": "Temperatura deseada" + }, + "spin_speed": { + "name": "Centrifugado" + }, + "steam_leve": { + "name": "Nivel de vapor" + }, + "dirt_level": { + "name": "Nivel de suciedad" + }, + "delay_time": { + "name": "Programar" } }, "select": { @@ -178,7 +218,8 @@ "universal": "Universal 60 \u00b0C", "universal_plus": "Universal Plus 70 \u00b0C", "zoom_39": "Zoom 39 min" - } + }, + "name": "Programa" }, "programs_ih": { "state": { @@ -217,7 +258,8 @@ "iot_standard_keep_warm": "Keep Warm", "iot_standard_melting": "Fundir", "iot_standard_simmering": "Cocer a fuego lento" - } + }, + "name": "Programa" }, "programs_ov": { "state": { @@ -272,7 +314,8 @@ "water_discharge": "Drenaje del agua", "white_meat": "Carne blanca", "white_meat_steam": "Carne blanca al vapor" - } + }, + "name": "Programa" }, "programs_td": { "state": { @@ -408,7 +451,8 @@ "woolmark": "Woolmark", "xxl_load": "Carga XXL", "zoom_59": "Zoom 59" - } + }, + "name": "Programa" }, "programs_wm": { "state": { @@ -717,7 +761,8 @@ "wool_and_delicates_49": "Lana/Delicados 49'", "wool_dry": "Secado lana", "wool_soft_care": "Lana & Soft Care" - } + }, + "name": "Programa" }, "dry_levels": { "state": { @@ -730,7 +775,154 @@ "13": "Listo para guardar", "14": "Listo para llevar", "15": "Extraseco" - } + }, + "name": "Secado" + }, + "spin_speed": { + "name": "Centrifugado" + }, + "temperature": { + "name": "Temperatura" + } + }, + "switch": { + "anti_crease": { + "name": "Antiarrugas" + }, + "add_dish": { + "name": "" + }, + "eco_express": { + "name": "Eco" + }, + "extra_dry": { + "name": "Extraseco" + }, + "half_load": { + "name": "Media carga" + }, + "open_door": { + "name": "Puerta abierta" + }, + "three_in_one": { + "name": "3 en 1" + }, + "preheat": { + "name": "Precalentamiento" + }, + "dish_washer": { + "name": "Lavavajillas" + }, + "tumble_dryer": { + "name": "Secadora" + }, + "washing_machine": { + "name": "Lavadora" + }, + "washer_dryer": { + "name": "Lavadora secadora" + }, + "oven": { + "name": "Horno" + }, + "prewash": { + "name": "Pre-lavado" + }, + "pause": { + "name": "Pausa" + } + }, + "binary_sensor": { + "door_lock": { + "name": "Bloqueo de la puerta" + }, + "extra_rinse_1": { + "name": "+1 Aclarado" + }, + "extra_rinse_2": { + "name": "+2 Aclarados" + }, + "extra_rinse_3": { + "name": "+3 Aclarados" + }, + "good_night": { + "name": "Buenas noches" + }, + "anti_crease": { + "name": "Antiarrugas" + }, + "aqua_plus": { + "name": "Acquaplus" + }, + "spin_speed": { + "name": "Centrifugado" + }, + "programs_dw": { + "name": "Programa" + }, + "programs_ih": { + "name": "Programa" + }, + "programs_ov": { + "name": "Programa" + }, + "programs_td": { + "name": "Programa" + }, + "programs_wm": { + "name": "Programa" + }, + "still_hot": { + "name": "Todav\u00eda caliente" + }, + "pan_status": { + "name": "Sart\u00e9n" + }, + "remote_control": { + "name": "Control remoto" + }, + "rinse_aid": { + "name": "Nivel del agente de enjuague" + }, + "salt_level": { + "name": "Nivel de sal" + }, + "door_open": { + "name": "Puerta abierta" + }, + "connection": { + "name": "Conexi\u00f3n" + } + }, + "number": { + "power_management": { + "name": "Control de la energ\u00eda" + }, + "temperature": { + "name": "Temperatura" + }, + "delay_time": { + "name": "Programar" + }, + "water_hard": { + "name": "Dureza del agua" + }, + "program_duration": { + "name": "Duraci\u00f3n del programa" + }, + "target_temperature": { + "name": "Temperatura deseada" + }, + "rinse_iterations": { + "name": "N\u00famero de enjuagues" + }, + "wash_time": { + "name": "Tiempo de lavado" + } + }, + "button": { + "induction_hob": { + "name": "Placa de inducci\u00f3n" } } } diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index 6b4f36f..6707124 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -38,7 +38,8 @@ "25": "Lavage", "26": "Chauffage", "27": "Lavage" - } + }, + "name": "Phase" }, "program_phases_td": { "state": { @@ -53,7 +54,8 @@ "18": "Keep Fresh", "19": "S\u00e9chage", "20": "S\u00e9chage" - } + }, + "name": "Phase" }, "program_phases_dw": { "state": { @@ -64,7 +66,8 @@ "4": "S\u00e9chage", "5": "Pr\u00eat", "6": "Hot rinse" - } + }, + "name": "Phase" }, "dry_levels": { "state": { @@ -77,7 +80,44 @@ "13": "Pr\u00eat \u00e0 ranger", "14": "Pr\u00eat \u00e0 porter", "15": "Extra sec" - } + }, + "name": "S\u00e9chage" + }, + "anti_crease": { + "name": "Anti-pli" + }, + "power": { + "name": "Niveau de puissance" + }, + "remaining_time": { + "name": "Temps restant" + }, + "temperature": { + "name": "Temp\u00e9rature" + }, + "water_efficiency": { + "name": "Efficacit\u00e9 en eau" + }, + "water_saving": { + "name": "\u00c9conomies d'eau" + }, + "duration": { + "name": "Dur\u00e9e" + }, + "target_temperature": { + "name": "Temp\u00e9rature souhait\u00e9e" + }, + "spin_speed": { + "name": "Essorage" + }, + "steam_leve": { + "name": "Niveau de vapeur" + }, + "dirt_level": { + "name": "Niveau de salet\u00e9" + }, + "delay_time": { + "name": "Planifiez" } }, "select": { @@ -178,7 +218,8 @@ "universal": "Universel 60 \u00b0C", "universal_plus": "Universel Plus 70 \u00b0C", "zoom_39": "Zoom 39 min" - } + }, + "name": "Programme" }, "programs_ih": { "state": { @@ -217,7 +258,8 @@ "iot_standard_keep_warm": "Maintien au chaud", "iot_standard_melting": "Fondre", "iot_standard_simmering": "Mijoter" - } + }, + "name": "Programme" }, "programs_ov": { "state": { @@ -272,7 +314,8 @@ "water_discharge": "Vidange de l\u2019eau", "white_meat": "Viande blanche", "white_meat_steam": "Viande blanche cuite \u00e0 la vapeur" - } + }, + "name": "Programme" }, "programs_td": { "state": { @@ -408,7 +451,8 @@ "woolmark": "Woolmark", "xxl_load": "Charge XXL", "zoom_59": "Zoom 59" - } + }, + "name": "Programme" }, "programs_wm": { "state": { @@ -717,7 +761,8 @@ "wool_and_delicates_49": "Laine/D\u00e9licat 49'", "wool_dry": "S\u00e9chage de la laine", "wool_soft_care": "Laine & Soin Doux" - } + }, + "name": "Programme" }, "dry_levels": { "state": { @@ -730,7 +775,154 @@ "13": "Pr\u00eat \u00e0 ranger", "14": "Pr\u00eat \u00e0 porter", "15": "Extra sec" - } + }, + "name": "S\u00e9chage" + }, + "spin_speed": { + "name": "Essorage" + }, + "temperature": { + "name": "Temp\u00e9rature" + } + }, + "switch": { + "anti_crease": { + "name": "Anti-pli" + }, + "add_dish": { + "name": "" + }, + "eco_express": { + "name": "\u00c9co" + }, + "extra_dry": { + "name": "Extra sec" + }, + "half_load": { + "name": "Demi-charge" + }, + "open_door": { + "name": "Ouvrez la porte" + }, + "three_in_one": { + "name": "3-en-1" + }, + "preheat": { + "name": "Pr\u00e9chauffage" + }, + "dish_washer": { + "name": "Lave-vaisselle" + }, + "tumble_dryer": { + "name": "S\u00e8che-linge" + }, + "washing_machine": { + "name": "Lave-linge" + }, + "washer_dryer": { + "name": "Lave-linge s\u00e9chant" + }, + "oven": { + "name": "Four" + }, + "prewash": { + "name": "Pr\u00e9lavage" + }, + "pause": { + "name": "Pause" + } + }, + "binary_sensor": { + "door_lock": { + "name": "Loquet de la porte" + }, + "extra_rinse_1": { + "name": "+1 rin\u00e7age" + }, + "extra_rinse_2": { + "name": "+2 rin\u00e7ages" + }, + "extra_rinse_3": { + "name": "+3 rin\u00e7ages" + }, + "good_night": { + "name": "Bonne nuit" + }, + "anti_crease": { + "name": "Anti-pli" + }, + "aqua_plus": { + "name": "Acquaplus" + }, + "spin_speed": { + "name": "Essorage" + }, + "programs_dw": { + "name": "Programme" + }, + "programs_ih": { + "name": "Programme" + }, + "programs_ov": { + "name": "Programme" + }, + "programs_td": { + "name": "Programme" + }, + "programs_wm": { + "name": "Programme" + }, + "still_hot": { + "name": "Encore chaud" + }, + "pan_status": { + "name": "Casserole" + }, + "remote_control": { + "name": "Contr\u00f4le \u00e0 distance" + }, + "rinse_aid": { + "name": "Niveau d'aide de rin\u00e7age" + }, + "salt_level": { + "name": "Niveau de sel" + }, + "door_open": { + "name": "Porte ouverte" + }, + "connection": { + "name": "Connexion" + } + }, + "number": { + "power_management": { + "name": "Gestion de la puissance" + }, + "temperature": { + "name": "Temp\u00e9rature" + }, + "delay_time": { + "name": "Planifiez" + }, + "water_hard": { + "name": "Duret\u00e9 de l'eau" + }, + "program_duration": { + "name": "Dur\u00e9e du programme" + }, + "target_temperature": { + "name": "Temp\u00e9rature souhait\u00e9e" + }, + "rinse_iterations": { + "name": "Nombre de rin\u00e7ages" + }, + "wash_time": { + "name": "Dur\u00e9e de lavage" + } + }, + "button": { + "induction_hob": { + "name": "Table de cuisson \u00e0 induction" } } } diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index bb076af..d5bf4bb 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -38,7 +38,8 @@ "25": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3", "26": "Heating", "27": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3" - } + }, + "name": "\u05e9\u05dc\u05d1" }, "program_phases_td": { "state": { @@ -53,7 +54,8 @@ "18": "Keep Fresh", "19": "\u05d9\u05b4\u05d1\u05bc\u05d5\u05bc\u05e9\u05c1", "20": "\u05d9\u05b4\u05d1\u05bc\u05d5\u05bc\u05e9\u05c1" - } + }, + "name": "\u05e9\u05dc\u05d1" }, "program_phases_dw": { "state": { @@ -64,7 +66,8 @@ "4": "\u05d9\u05b4\u05d1\u05bc\u05d5\u05bc\u05e9\u05c1", "5": "\u05de\u05d5\u05bc\u05db\u05b8\u05df", "6": "Hot rinse" - } + }, + "name": "\u05e9\u05dc\u05d1" }, "dry_levels": { "state": { @@ -77,7 +80,44 @@ "13": "\u05d0\u05e8\u05d5\u05df \u05d9\u05d1\u05e9", "14": "Ready to wear", "15": "\u05d9\u05d1\u05e9 \u05d1\u05de\u05d9\u05d5\u05d7\u05d3" - } + }, + "name": "\u05d9\u05b4\u05d1\u05bc\u05d5\u05bc\u05e9\u05c1" + }, + "anti_crease": { + "name": "Anticrease" + }, + "power": { + "name": "Power level" + }, + "remaining_time": { + "name": "\u05d6\u05de\u05df \u05e9\u05e0\u05d5\u05ea\u05e8" + }, + "temperature": { + "name": "Temperature" + }, + "water_efficiency": { + "name": "Water efficiency" + }, + "water_saving": { + "name": "Water savings" + }, + "duration": { + "name": "\u05de\u05b6\u05e9\u05c1\u05b6\u05da" + }, + "target_temperature": { + "name": "Target temperature" + }, + "spin_speed": { + "name": "\u05e1\u05d9\u05d1\u05d5\u05d1" + }, + "steam_leve": { + "name": "\u05de\u05e4\u05dc\u05e1 \u05e7\u05d9\u05d8\u05d5\u05e8" + }, + "dirt_level": { + "name": "\u05e8\u05de\u05ea \u05e2\u05e4\u05e8" + }, + "delay_time": { + "name": "\u05dc\u05d5\u05d7 \u05d6\u05de\u05e0\u05d9\u05dd" } }, "select": { @@ -90,19 +130,22 @@ "iot_jar_quick_cycle": "Jar Quick", "iot_yes_quick_cycle": "Yes Quick", "smart_ai": "Smart AI" - } + }, + "name": "Program" }, "programs_ih": { "state": { "iot_special_grilled_vegetables": "Grilled vegetables" - } + }, + "name": "Program" }, "programs_ov": { "state": { "iot_h20_clean": "h2O clean", "pizza": "Pizza", "tailor_bake": "Tailor bake" - } + }, + "name": "Program" }, "programs_td": { "state": { @@ -119,7 +162,8 @@ "hqd_warm_up": "Warm up", "hqd_working_suit": "Working suit", "iot_dry_synthetic_dry": "\u05e1\u05d9\u05e0\u05ea\u05d8\u05d9 \u05d9\u05d1\u05e9" - } + }, + "name": "Program" }, "programs_wm": { "state": { @@ -315,7 +359,8 @@ "wool_and_delicates_49": "Wool/Delicates 49'", "wool_dry": "\u05e6\u05de\u05e8 \u05d9\u05d1\u05e9", "wool_soft_care": "Wool & Soft Care" - } + }, + "name": "Program" }, "dry_levels": { "state": { @@ -328,7 +373,154 @@ "13": "\u05d0\u05e8\u05d5\u05df \u05d9\u05d1\u05e9", "14": "Ready to wear", "15": "\u05d9\u05d1\u05e9 \u05d1\u05de\u05d9\u05d5\u05d7\u05d3" - } + }, + "name": "\u05d9\u05b4\u05d1\u05bc\u05d5\u05bc\u05e9\u05c1" + }, + "spin_speed": { + "name": "\u05e1\u05d9\u05d1\u05d5\u05d1" + }, + "temperature": { + "name": "Temperature" + } + }, + "switch": { + "anti_crease": { + "name": "Anticrease" + }, + "add_dish": { + "name": "" + }, + "eco_express": { + "name": "Eco" + }, + "extra_dry": { + "name": "Extra dry" + }, + "half_load": { + "name": "Half load" + }, + "open_door": { + "name": "Open door" + }, + "three_in_one": { + "name": "3 in 1" + }, + "preheat": { + "name": "Preheat" + }, + "dish_washer": { + "name": "Dish washer" + }, + "tumble_dryer": { + "name": "Tumble dryer" + }, + "washing_machine": { + "name": "Washing machine" + }, + "washer_dryer": { + "name": "Washer dryer" + }, + "oven": { + "name": "Oven" + }, + "prewash": { + "name": "\u05e9\u05d8\u05d9\u05e4\u05d4 \u05de\u05e8\u05d0\u05e9" + }, + "pause": { + "name": "Pause" + } + }, + "binary_sensor": { + "door_lock": { + "name": "\u05de\u05e0\u05e2\u05d5\u05dc \u05d3\u05dc\u05ea" + }, + "extra_rinse_1": { + "name": "+1 \u05e9\u05d8\u05d9\u05e4\u05d4" + }, + "extra_rinse_2": { + "name": "+2 \u05e9\u05d8\u05d9\u05e4\u05d5\u05ea" + }, + "extra_rinse_3": { + "name": "+3 \u05e9\u05d8\u05d9\u05e4\u05d5\u05ea" + }, + "good_night": { + "name": "\u05dc\u05d9\u05dc\u05d4 \u05d8\u05d5\u05d1" + }, + "anti_crease": { + "name": "Anticrease" + }, + "aqua_plus": { + "name": "Acquaplus" + }, + "spin_speed": { + "name": "\u05e1\u05d9\u05d1\u05d5\u05d1" + }, + "programs_dw": { + "name": "Program" + }, + "programs_ih": { + "name": "Program" + }, + "programs_ov": { + "name": "Program" + }, + "programs_td": { + "name": "Program" + }, + "programs_wm": { + "name": "Program" + }, + "still_hot": { + "name": "Still hot" + }, + "pan_status": { + "name": "Pan" + }, + "remote_control": { + "name": "Remote control" + }, + "rinse_aid": { + "name": "Rinse Aid level" + }, + "salt_level": { + "name": "Salt level" + }, + "door_open": { + "name": "Door open" + }, + "connection": { + "name": "\u05d7\u05d9\u05d1\u05d5\u05e8" + } + }, + "number": { + "power_management": { + "name": "Power management" + }, + "temperature": { + "name": "Temperature" + }, + "delay_time": { + "name": "\u05dc\u05d5\u05d7 \u05d6\u05de\u05e0\u05d9\u05dd" + }, + "water_hard": { + "name": "\u05e7\u05e9\u05d9\u05d5\u05ea \u05de\u05d9\u05dd" + }, + "program_duration": { + "name": "Program duration" + }, + "target_temperature": { + "name": "Target temperature" + }, + "rinse_iterations": { + "name": "Number of rinses" + }, + "wash_time": { + "name": "Washing intensity" + } + }, + "button": { + "induction_hob": { + "name": "Induction Hob" } } } diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index ebb1042..53dfea6 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -38,7 +38,8 @@ "25": "Pranje", "26": "Grijanje", "27": "Pranje" - } + }, + "name": "Faza" }, "program_phases_td": { "state": { @@ -53,7 +54,8 @@ "18": "Odr\u017ei svje\u017eim", "19": "Su\u0161enje", "20": "Su\u0161enje" - } + }, + "name": "Faza" }, "program_phases_dw": { "state": { @@ -64,7 +66,8 @@ "4": "Su\u0161enje", "5": "Spremno", "6": "Hot rinse" - } + }, + "name": "Faza" }, "dry_levels": { "state": { @@ -77,7 +80,44 @@ "13": "Suho za spremanje", "14": "Spremno za no\u0161enje", "15": "Potpuno suho" - } + }, + "name": "Su\u0161enje" + }, + "anti_crease": { + "name": "Spre\u010davanje gu\u017evanja" + }, + "power": { + "name": "Razina napajanja" + }, + "remaining_time": { + "name": "Preostalo vrijeme" + }, + "temperature": { + "name": "Temperatura" + }, + "water_efficiency": { + "name": "U\u010dinkovitost vode" + }, + "water_saving": { + "name": "U\u0161teda na vodi" + }, + "duration": { + "name": "Trajanje" + }, + "target_temperature": { + "name": "Ciljana temperatura" + }, + "spin_speed": { + "name": "Centrifuga" + }, + "steam_leve": { + "name": "Razina pare" + }, + "dirt_level": { + "name": "Stupanj zaprljanosti" + }, + "delay_time": { + "name": "Zaka\u017ei" } }, "select": { @@ -178,7 +218,8 @@ "universal": "Universal (Univerzalni) 60 \u00b0C", "universal_plus": "Universal Plus (Univerzalni plus) 70 \u00b0C", "zoom_39": "Zoom 39 min" - } + }, + "name": "Program" }, "programs_ih": { "state": { @@ -217,7 +258,8 @@ "iot_standard_keep_warm": "Odr\u017eite toplinu", "iot_standard_melting": "Otapanje", "iot_standard_simmering": "Simmering (Pirjanje)" - } + }, + "name": "Program" }, "programs_ov": { "state": { @@ -272,7 +314,8 @@ "water_discharge": "Odvod vode", "white_meat": "Bijelo meso", "white_meat_steam": "Bijelo meso kuhano na pari" - } + }, + "name": "Program" }, "programs_td": { "state": { @@ -408,7 +451,8 @@ "woolmark": "Woolmark", "xxl_load": "XXL kapacitet", "zoom_59": "Zoom\u00a059" - } + }, + "name": "Program" }, "programs_wm": { "state": { @@ -717,7 +761,8 @@ "wool_and_delicates_49": "Vuna/Osjetljivo 49'", "wool_dry": "Suha vuna", "wool_soft_care": "Vuna & Mekana Njega" - } + }, + "name": "Program" }, "dry_levels": { "state": { @@ -730,7 +775,154 @@ "13": "Suho za spremanje", "14": "Spremno za no\u0161enje", "15": "Potpuno suho" - } + }, + "name": "Su\u0161enje" + }, + "spin_speed": { + "name": "Centrifuga" + }, + "temperature": { + "name": "Temperatura" + } + }, + "switch": { + "anti_crease": { + "name": "Spre\u010davanje gu\u017evanja" + }, + "add_dish": { + "name": "" + }, + "eco_express": { + "name": "Ekolo\u0161ki" + }, + "extra_dry": { + "name": "Iznimno suho" + }, + "half_load": { + "name": "Polovi\u010dno popunjeno" + }, + "open_door": { + "name": "Otvori vrata" + }, + "three_in_one": { + "name": "3 u 1" + }, + "preheat": { + "name": "Predgrij" + }, + "dish_washer": { + "name": "Perilica posu\u0111a" + }, + "tumble_dryer": { + "name": "Bubnjasta su\u0161ilica" + }, + "washing_machine": { + "name": "Perilica rublja" + }, + "washer_dryer": { + "name": "Perilica su\u0161ilica rublja" + }, + "oven": { + "name": "Pe\u0107nica" + }, + "prewash": { + "name": "Pretpranje" + }, + "pause": { + "name": "Stanka" + } + }, + "binary_sensor": { + "door_lock": { + "name": "Brava na vratima" + }, + "extra_rinse_1": { + "name": "+1 ispiranje " + }, + "extra_rinse_2": { + "name": "+2 ispiranja " + }, + "extra_rinse_3": { + "name": "+3 ispiranja " + }, + "good_night": { + "name": "Good Night" + }, + "anti_crease": { + "name": "Spre\u010davanje gu\u017evanja" + }, + "aqua_plus": { + "name": "Aquaplus" + }, + "spin_speed": { + "name": "Centrifuga" + }, + "programs_dw": { + "name": "Program" + }, + "programs_ih": { + "name": "Program" + }, + "programs_ov": { + "name": "Program" + }, + "programs_td": { + "name": "Program" + }, + "programs_wm": { + "name": "Program" + }, + "still_hot": { + "name": "Jo\u0161 vru\u0107e" + }, + "pan_status": { + "name": "Tava" + }, + "remote_control": { + "name": "Upravljanje na daljinu" + }, + "rinse_aid": { + "name": "Razina sredstva za ispiranje" + }, + "salt_level": { + "name": "Razina soli" + }, + "door_open": { + "name": "Otvorena vrata" + }, + "connection": { + "name": "Povezivanje" + } + }, + "number": { + "power_management": { + "name": "Energetski u\u010dinkovito upravljanje" + }, + "temperature": { + "name": "Temperatura" + }, + "delay_time": { + "name": "Zaka\u017ei" + }, + "water_hard": { + "name": "Tvrdo\u0107a vode" + }, + "program_duration": { + "name": "Trajanje programa" + }, + "target_temperature": { + "name": "Ciljana temperatura" + }, + "rinse_iterations": { + "name": "Broj ispiranja" + }, + "wash_time": { + "name": "Vrijeme pranja" + } + }, + "button": { + "induction_hob": { + "name": "Indukcijska plo\u010da za kuhanje" } } } diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index 79fe39c..0cde1ea 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -94,7 +94,8 @@ "25": "Lavaggio", "26": "Riscaldamento", "27": "Lavaggio" - } + }, + "name": "Fase" }, "program_phases_td": { "state": { @@ -109,7 +110,8 @@ "18": "Keep Fresh", "19": "Asciugatura", "20": "Asciugatura" - } + }, + "name": "Fase" }, "program_phases_dw": { "state": { @@ -120,7 +122,8 @@ "4": "Asciugatura", "5": "Pronta", "6": "Risciacquo caldo " - } + }, + "name": "Fase" }, "dry_levels": { "state": { @@ -133,7 +136,44 @@ "13": "Armadio", "14": "Pronto da indossare", "15": "Extra asciutto" - } + }, + "name": "Tipo Asciugatura" + }, + "anti_crease": { + "name": "Antipieghe " + }, + "power": { + "name": "Livello di potenza" + }, + "remaining_time": { + "name": "Tempo rimanente" + }, + "temperature": { + "name": "Temperatura" + }, + "water_efficiency": { + "name": "Efficienza idrica" + }, + "water_saving": { + "name": "Risparmio acqua" + }, + "duration": { + "name": "Durata" + }, + "target_temperature": { + "name": "Temperatura terget" + }, + "spin_speed": { + "name": "Centrifuga" + }, + "steam_leve": { + "name": "Livello vapore" + }, + "dirt_level": { + "name": "Livello di sporco" + }, + "delay_time": { + "name": "Ritarda avvio" } }, "select": { @@ -234,7 +274,8 @@ "universal": "Universale 60\u00b0C", "universal_plus": "Universale Plus 70\u00b0C", "zoom_39": "Zoom 39 min" - } + }, + "name": "Programma" }, "programs_ih": { "state": { @@ -273,7 +314,8 @@ "iot_standard_keep_warm": "Mantenimento", "iot_standard_melting": "Fusione", "iot_standard_simmering": "Ebollizione Lenta" - } + }, + "name": "Programma" }, "programs_ov": { "state": { @@ -328,7 +370,8 @@ "water_discharge": "Scarico d'acqua", "white_meat": "Carne bianca", "white_meat_steam": "Carne bianca a vapore" - } + }, + "name": "Programma" }, "programs_td": { "state": { @@ -464,7 +507,8 @@ "woolmark": "Lana", "xxl_load": "Carico XXL", "zoom_59": "Zoom 59" - } + }, + "name": "Programma" }, "programs_wm": { "state": { @@ -773,7 +817,8 @@ "wool_and_delicates_49": "Lana e Delicati 49'", "wool_dry": "Asciugatura Lana", "wool_soft_care": "Lana e Soft Care" - } + }, + "name": "Programma" }, "dry_levels": { "state": { @@ -786,7 +831,154 @@ "13": "Armadio", "14": "Pronto da indossare", "15": "Extra asciutto" - } + }, + "name": "Tipo Asciugatura" + }, + "spin_speed": { + "name": "Centrifuga" + }, + "temperature": { + "name": "Temperatura" + } + }, + "switch": { + "anti_crease": { + "name": "Antipieghe " + }, + "add_dish": { + "name": "" + }, + "eco_express": { + "name": "Eco" + }, + "extra_dry": { + "name": "Extra asciutto" + }, + "half_load": { + "name": "Mezzo carico" + }, + "open_door": { + "name": "Apri porta" + }, + "three_in_one": { + "name": "3 in 1" + }, + "preheat": { + "name": "Preriscaldo" + }, + "dish_washer": { + "name": "Lavastoviglie" + }, + "tumble_dryer": { + "name": "Asciugatrice" + }, + "washing_machine": { + "name": "Lavatrice" + }, + "washer_dryer": { + "name": "Lavasciuga" + }, + "oven": { + "name": "Forno" + }, + "prewash": { + "name": "Prelavaggio" + }, + "pause": { + "name": "Pausa" + } + }, + "binary_sensor": { + "door_lock": { + "name": "Dispositivo blocco porta" + }, + "extra_rinse_1": { + "name": "+1 Risciacquo" + }, + "extra_rinse_2": { + "name": "+2 Risciacqui" + }, + "extra_rinse_3": { + "name": "+3 Risciacqui" + }, + "good_night": { + "name": "Buona notte" + }, + "anti_crease": { + "name": "Antipieghe " + }, + "aqua_plus": { + "name": "Acquaplus" + }, + "spin_speed": { + "name": "Centrifuga" + }, + "programs_dw": { + "name": "Programma" + }, + "programs_ih": { + "name": "Programma" + }, + "programs_ov": { + "name": "Programma" + }, + "programs_td": { + "name": "Programma" + }, + "programs_wm": { + "name": "Programma" + }, + "still_hot": { + "name": "Ancora caldo" + }, + "pan_status": { + "name": "Pentola" + }, + "remote_control": { + "name": "Controllo remoto" + }, + "rinse_aid": { + "name": "Livello Brillantante" + }, + "salt_level": { + "name": "Livello Sale" + }, + "door_open": { + "name": "Porta aperta" + }, + "connection": { + "name": "Connessione" + } + }, + "number": { + "power_management": { + "name": "Power management" + }, + "temperature": { + "name": "Temperatura" + }, + "delay_time": { + "name": "Ritarda avvio" + }, + "water_hard": { + "name": "Durezza acqua" + }, + "program_duration": { + "name": "Durata programma" + }, + "target_temperature": { + "name": "Temperatura terget" + }, + "rinse_iterations": { + "name": "Numero risciacqui" + }, + "wash_time": { + "name": "Intensit\u00e0 di lavaggio" + } + }, + "button": { + "induction_hob": { + "name": "Piano cottura a induzione" } } } diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index b96bcb6..0daa84d 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -38,7 +38,8 @@ "25": "Wassen", "26": "Verwarming", "27": "Wassen" - } + }, + "name": "Fase" }, "program_phases_td": { "state": { @@ -53,7 +54,8 @@ "18": "Fris houden", "19": "Drogen", "20": "Drogen" - } + }, + "name": "Fase" }, "program_phases_dw": { "state": { @@ -64,7 +66,8 @@ "4": "Drogen", "5": "Klaar", "6": "Hot rinse" - } + }, + "name": "Fase" }, "dry_levels": { "state": { @@ -77,7 +80,44 @@ "13": "Kastdroog", "14": "Klaar om te dragen", "15": "Extra droog" - } + }, + "name": "Drogen" + }, + "anti_crease": { + "name": "Kreukherstellend" + }, + "power": { + "name": "Vermogensniveau" + }, + "remaining_time": { + "name": "Resterende tijd" + }, + "temperature": { + "name": "Temperatuur" + }, + "water_efficiency": { + "name": "Effici\u00ebnt waterverbruik" + }, + "water_saving": { + "name": "Waterbesparing" + }, + "duration": { + "name": "Duur" + }, + "target_temperature": { + "name": "Doeltemperatuur" + }, + "spin_speed": { + "name": "Centrifugeren" + }, + "steam_leve": { + "name": "Stoomniveau" + }, + "dirt_level": { + "name": "Vuilheid" + }, + "delay_time": { + "name": "Plannen" } }, "select": { @@ -178,7 +218,8 @@ "universal": "Universeel 60\u00b0C", "universal_plus": "Universeel Plus 70\u00b0C", "zoom_39": "Zoom 39 min" - } + }, + "name": "Programma" }, "programs_ih": { "state": { @@ -217,7 +258,8 @@ "iot_standard_keep_warm": "Warm houden", "iot_standard_melting": "Smelten", "iot_standard_simmering": "Simmering" - } + }, + "name": "Programma" }, "programs_ov": { "state": { @@ -272,7 +314,8 @@ "water_discharge": "Waterafvoer", "white_meat": "Wit vlees", "white_meat_steam": "Gestoomd wit vlees" - } + }, + "name": "Programma" }, "programs_td": { "state": { @@ -408,7 +451,8 @@ "woolmark": "Wol", "xxl_load": "XXL Lading", "zoom_59": "Zoom\u00a059" - } + }, + "name": "Programma" }, "programs_wm": { "state": { @@ -717,7 +761,8 @@ "wool_and_delicates_49": "Wol/Fijne was 49'", "wool_dry": "Wol drogen", "wool_soft_care": "Wol & Soft Care" - } + }, + "name": "Programma" }, "dry_levels": { "state": { @@ -730,7 +775,154 @@ "13": "Kastdroog", "14": "Klaar om te dragen", "15": "Extra droog" - } + }, + "name": "Drogen" + }, + "spin_speed": { + "name": "Centrifugeren" + }, + "temperature": { + "name": "Temperatuur" + } + }, + "switch": { + "anti_crease": { + "name": "Kreukherstellend" + }, + "add_dish": { + "name": "" + }, + "eco_express": { + "name": "Eco" + }, + "extra_dry": { + "name": "Extra droog" + }, + "half_load": { + "name": "Halve lading" + }, + "open_door": { + "name": "Open deur" + }, + "three_in_one": { + "name": "3 in 1" + }, + "preheat": { + "name": "Voorverwarmen" + }, + "dish_washer": { + "name": "Vaatwasser" + }, + "tumble_dryer": { + "name": "Droogtrommel" + }, + "washing_machine": { + "name": "Wasmachine" + }, + "washer_dryer": { + "name": "Was-droogcombinatie" + }, + "oven": { + "name": "Oven" + }, + "prewash": { + "name": "Voorwas" + }, + "pause": { + "name": "Pauze" + } + }, + "binary_sensor": { + "door_lock": { + "name": "Deurvergrendeling" + }, + "extra_rinse_1": { + "name": "+1 keer spoelen" + }, + "extra_rinse_2": { + "name": "+2 keer spoelen" + }, + "extra_rinse_3": { + "name": "+3 keer spoelen" + }, + "good_night": { + "name": "Goede nacht" + }, + "anti_crease": { + "name": "Kreukherstellend" + }, + "aqua_plus": { + "name": "Acquaplus" + }, + "spin_speed": { + "name": "Centrifugeren" + }, + "programs_dw": { + "name": "Programma" + }, + "programs_ih": { + "name": "Programma" + }, + "programs_ov": { + "name": "Programma" + }, + "programs_td": { + "name": "Programma" + }, + "programs_wm": { + "name": "Programma" + }, + "still_hot": { + "name": "Nog heet" + }, + "pan_status": { + "name": "Pan" + }, + "remote_control": { + "name": "Afstandsbediening" + }, + "rinse_aid": { + "name": "Niveau glansspoelmiddel" + }, + "salt_level": { + "name": "Niveau zout" + }, + "door_open": { + "name": "Deur open" + }, + "connection": { + "name": "Verbinding" + } + }, + "number": { + "power_management": { + "name": "Vermogensbeheer" + }, + "temperature": { + "name": "Temperatuur" + }, + "delay_time": { + "name": "Plannen" + }, + "water_hard": { + "name": "Waterhardheid" + }, + "program_duration": { + "name": "Programmaduur" + }, + "target_temperature": { + "name": "Doeltemperatuur" + }, + "rinse_iterations": { + "name": "Aantal spoelbeurten" + }, + "wash_time": { + "name": "Wastijd" + } + }, + "button": { + "induction_hob": { + "name": "Inductiekookplaat" } } } diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index fafd123..4c2cd00 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -38,7 +38,8 @@ "25": "Pranie", "26": "Ogrzewanie", "27": "Pranie" - } + }, + "name": "Faza" }, "program_phases_td": { "state": { @@ -53,7 +54,8 @@ "18": "Utrzymaj \u015bwie\u017co\u015b\u0107", "19": "Suszenie", "20": "Suszenie" - } + }, + "name": "Faza" }, "program_phases_dw": { "state": { @@ -64,7 +66,8 @@ "4": "Suszenie", "5": "Gotowe", "6": "Hot rinse" - } + }, + "name": "Faza" }, "dry_levels": { "state": { @@ -77,7 +80,44 @@ "13": "Gotowe do garderoby", "14": "Gotowe do w\u0142o\u017cenia", "15": "Ekstra suchy" - } + }, + "name": "Suszenie" + }, + "anti_crease": { + "name": "Przeciw gnieceniu" + }, + "power": { + "name": "Poziom mocy" + }, + "remaining_time": { + "name": "Pozosta\u0142y czas" + }, + "temperature": { + "name": "Temperatura" + }, + "water_efficiency": { + "name": "Wydajno\u015b\u0107 zu\u017cycia wody" + }, + "water_saving": { + "name": "Oszcz\u0119dno\u015b\u0107 wody" + }, + "duration": { + "name": "Czas trwania" + }, + "target_temperature": { + "name": "Temperatura docelowa" + }, + "spin_speed": { + "name": "Wirowanie" + }, + "steam_leve": { + "name": "Poziom pary" + }, + "dirt_level": { + "name": "Stopie\u0144 zabrudzenia" + }, + "delay_time": { + "name": "Zaplanuj" } }, "select": { @@ -178,7 +218,8 @@ "universal": "Uniwersalne 60\u00b0C", "universal_plus": "Uniwersalne Plus 70\u00b0C", "zoom_39": "Zoom 39 min" - } + }, + "name": "Program" }, "programs_ih": { "state": { @@ -217,7 +258,8 @@ "iot_standard_keep_warm": "Podtrzymanie ciep\u0142a", "iot_standard_melting": "Roztapianie", "iot_standard_simmering": "Duszenie" - } + }, + "name": "Program" }, "programs_ov": { "state": { @@ -272,7 +314,8 @@ "water_discharge": "Odp\u0142yw wody", "white_meat": "Bia\u0142e mi\u0119so", "white_meat_steam": "Bia\u0142e mi\u0119so gotowane na parze" - } + }, + "name": "Program" }, "programs_td": { "state": { @@ -408,7 +451,8 @@ "woolmark": "Woolmark", "xxl_load": "XXL Load", "zoom_59": "Zoom 59" - } + }, + "name": "Program" }, "programs_wm": { "state": { @@ -717,7 +761,8 @@ "wool_and_delicates_49": "We\u0142na/Delikatne 49'", "wool_dry": "Suszenie we\u0142ny", "wool_soft_care": "We\u0142na & Soft Care" - } + }, + "name": "Program" }, "dry_levels": { "state": { @@ -730,7 +775,154 @@ "13": "Gotowe do garderoby", "14": "Gotowe do w\u0142o\u017cenia", "15": "Ekstra suchy" - } + }, + "name": "Suszenie" + }, + "spin_speed": { + "name": "Wirowanie" + }, + "temperature": { + "name": "Temperatura" + } + }, + "switch": { + "anti_crease": { + "name": "Przeciw gnieceniu" + }, + "add_dish": { + "name": "" + }, + "eco_express": { + "name": "Eco" + }, + "extra_dry": { + "name": "Ekstra suchy" + }, + "half_load": { + "name": "Po\u0142owa wsadu" + }, + "open_door": { + "name": "Otw\u00f3rz drzwi" + }, + "three_in_one": { + "name": "3 w 1" + }, + "preheat": { + "name": "Wst\u0119pne nagrzewanie" + }, + "dish_washer": { + "name": "Zmywarka" + }, + "tumble_dryer": { + "name": "Suszarka b\u0119bnowa" + }, + "washing_machine": { + "name": "Pralka" + }, + "washer_dryer": { + "name": "Pralkosuszarka" + }, + "oven": { + "name": "Piekarnik" + }, + "prewash": { + "name": "Mycie wst\u0119pne" + }, + "pause": { + "name": "Pauza" + } + }, + "binary_sensor": { + "door_lock": { + "name": "Drzwi s\u0105 zablokowane" + }, + "extra_rinse_1": { + "name": "+1 p\u0142ukanie" + }, + "extra_rinse_2": { + "name": "+2 p\u0142ukania" + }, + "extra_rinse_3": { + "name": "+3 p\u0142ukania" + }, + "good_night": { + "name": "Dobranoc" + }, + "anti_crease": { + "name": "Przeciw gnieceniu" + }, + "aqua_plus": { + "name": "Acquaplus" + }, + "spin_speed": { + "name": "Wirowanie" + }, + "programs_dw": { + "name": "Program" + }, + "programs_ih": { + "name": "Program" + }, + "programs_ov": { + "name": "Program" + }, + "programs_td": { + "name": "Program" + }, + "programs_wm": { + "name": "Program" + }, + "still_hot": { + "name": "Nadal gor\u0105ce" + }, + "pan_status": { + "name": "Patelnia" + }, + "remote_control": { + "name": "Zdalne sterowanie" + }, + "rinse_aid": { + "name": "Poziom nab\u0142yszczacza" + }, + "salt_level": { + "name": "Poziom soli" + }, + "door_open": { + "name": "Drzwi otwarte" + }, + "connection": { + "name": "Po\u0142\u0105czenie" + } + }, + "number": { + "power_management": { + "name": "Zarz\u0105dzanie zasilaniem" + }, + "temperature": { + "name": "Temperatura" + }, + "delay_time": { + "name": "Zaplanuj" + }, + "water_hard": { + "name": "Twardo\u015b\u0107 wody" + }, + "program_duration": { + "name": "Czas trwania programu" + }, + "target_temperature": { + "name": "Temperatura docelowa" + }, + "rinse_iterations": { + "name": "Ilo\u015b\u0107 p\u0142uka\u0144" + }, + "wash_time": { + "name": "Czas prania" + } + }, + "button": { + "induction_hob": { + "name": "P\u0142yta indukcyjna" } } } diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index c5fadd5..97c67b4 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -38,7 +38,8 @@ "25": "Lavar", "26": "Aquecimento", "27": "Lavar" - } + }, + "name": "Fase" }, "program_phases_td": { "state": { @@ -53,7 +54,8 @@ "18": "Manter Fresco", "19": "Secagem", "20": "Secagem" - } + }, + "name": "Fase" }, "program_phases_dw": { "state": { @@ -64,7 +66,8 @@ "4": "Secagem", "5": "Pronto", "6": "Hot rinse" - } + }, + "name": "Fase" }, "dry_levels": { "state": { @@ -77,7 +80,44 @@ "13": "Guarda-Roupa pronto", "14": "Pronto a usar", "15": "Extra seco" - } + }, + "name": "Secagem" + }, + "anti_crease": { + "name": "Anti-vincos" + }, + "power": { + "name": "N\u00edvel de pot\u00eancia" + }, + "remaining_time": { + "name": "Tempo restante" + }, + "temperature": { + "name": "Temperatura" + }, + "water_efficiency": { + "name": "Efici\u00eancia da \u00e1gua" + }, + "water_saving": { + "name": "Poupan\u00e7a de \u00e1gua" + }, + "duration": { + "name": "Dura\u00e7\u00e3o" + }, + "target_temperature": { + "name": "Temperatura alvo" + }, + "spin_speed": { + "name": "Centrifugar" + }, + "steam_leve": { + "name": "N\u00edvel de vapor" + }, + "dirt_level": { + "name": "N\u00edvel de sujidade" + }, + "delay_time": { + "name": "Agendar" } }, "select": { @@ -178,7 +218,8 @@ "universal": "Universal 60 \u00b0C", "universal_plus": "Universal plus 70 \u00b0C", "zoom_39": "Zoom 39 min" - } + }, + "name": "Programa" }, "programs_ih": { "state": { @@ -217,7 +258,8 @@ "iot_standard_keep_warm": "Manter quente", "iot_standard_melting": "Derreter", "iot_standard_simmering": "Simmering" - } + }, + "name": "Programa" }, "programs_ov": { "state": { @@ -272,7 +314,8 @@ "water_discharge": "Drenagem de \u00e1gua", "white_meat": "Carne branca", "white_meat_steam": "Carne branca cozinhada a vapor" - } + }, + "name": "Programa" }, "programs_td": { "state": { @@ -408,7 +451,8 @@ "woolmark": "Woolmark", "xxl_load": "Carga XXL", "zoom_59": "Zoom 59" - } + }, + "name": "Programa" }, "programs_wm": { "state": { @@ -717,7 +761,8 @@ "wool_and_delicates_49": "L\u00e3s/Delicados 49'", "wool_dry": "Secagem de l\u00e3s", "wool_soft_care": "L\u00e3s & Cuidado Suavidade" - } + }, + "name": "Programa" }, "dry_levels": { "state": { @@ -730,7 +775,154 @@ "13": "Guarda-Roupa pronto", "14": "Pronto a usar", "15": "Extra seco" - } + }, + "name": "Secagem" + }, + "spin_speed": { + "name": "Centrifugar" + }, + "temperature": { + "name": "Temperatura" + } + }, + "switch": { + "anti_crease": { + "name": "Anti-vincos" + }, + "add_dish": { + "name": "" + }, + "eco_express": { + "name": "Eco" + }, + "extra_dry": { + "name": "Extra seco" + }, + "half_load": { + "name": "Meia carga" + }, + "open_door": { + "name": "Abrir porta" + }, + "three_in_one": { + "name": "3 em 1" + }, + "preheat": { + "name": "Pr\u00e9-aquecimento" + }, + "dish_washer": { + "name": "M\u00e1quina de lavar loi\u00e7a" + }, + "tumble_dryer": { + "name": "M\u00e1quina de secar" + }, + "washing_machine": { + "name": "M\u00e1quina de lavar" + }, + "washer_dryer": { + "name": "M\u00e1quina de lavar e secar" + }, + "oven": { + "name": "Forno" + }, + "prewash": { + "name": "Pr\u00e9-lavagem" + }, + "pause": { + "name": "Pausa" + } + }, + "binary_sensor": { + "door_lock": { + "name": "Fecho da porta" + }, + "extra_rinse_1": { + "name": "+1 enxaguamento" + }, + "extra_rinse_2": { + "name": "+2 enxaguamentos" + }, + "extra_rinse_3": { + "name": "+3 enxaguamentos" + }, + "good_night": { + "name": "Boa Noite" + }, + "anti_crease": { + "name": "Anti-vincos" + }, + "aqua_plus": { + "name": "Acquaplus" + }, + "spin_speed": { + "name": "Centrifugar" + }, + "programs_dw": { + "name": "Programa" + }, + "programs_ih": { + "name": "Programa" + }, + "programs_ov": { + "name": "Programa" + }, + "programs_td": { + "name": "Programa" + }, + "programs_wm": { + "name": "Programa" + }, + "still_hot": { + "name": "Ainda quente" + }, + "pan_status": { + "name": "Frigideira" + }, + "remote_control": { + "name": "Controlo remoto" + }, + "rinse_aid": { + "name": "N\u00edvel de Abrilhantador" + }, + "salt_level": { + "name": "N\u00edvel de sal" + }, + "door_open": { + "name": "Porta aberta" + }, + "connection": { + "name": "Conex\u00e3o" + } + }, + "number": { + "power_management": { + "name": "Gest\u00e3o de energia" + }, + "temperature": { + "name": "Temperatura" + }, + "delay_time": { + "name": "Agendar" + }, + "water_hard": { + "name": "Dureza da \u00e1gua" + }, + "program_duration": { + "name": "Dura\u00e7\u00e3o do programa" + }, + "target_temperature": { + "name": "Temperatura alvo" + }, + "rinse_iterations": { + "name": "N\u00famero de enxaguamentos" + }, + "wash_time": { + "name": "Tempo de lavagem" + } + }, + "button": { + "induction_hob": { + "name": "Placa de indu\u00e7\u00e3o" } } } diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index d1175db..36669d9 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -38,7 +38,8 @@ "25": "Sp\u0103lare", "26": "\u00cenc\u0103lzire", "27": "Sp\u0103lare" - } + }, + "name": "Faz\u0103" }, "program_phases_td": { "state": { @@ -53,7 +54,8 @@ "18": "Men\u021binere prospe\u021bime", "19": "Uscare", "20": "Uscare" - } + }, + "name": "Faz\u0103" }, "program_phases_dw": { "state": { @@ -64,7 +66,8 @@ "4": "Uscare", "5": "Preg\u0103tit", "6": "Hot rinse" - } + }, + "name": "Faz\u0103" }, "dry_levels": { "state": { @@ -77,7 +80,44 @@ "13": "\u0218ifonier preg\u0103tit", "14": "Gata de purtat", "15": "Uscare suplimentar\u0103" - } + }, + "name": "Uscare" + }, + "anti_crease": { + "name": "Anti\u0219ifonare" + }, + "power": { + "name": "Nivel de putere" + }, + "remaining_time": { + "name": "Timp r\u0103mas" + }, + "temperature": { + "name": "Temperatur\u0103" + }, + "water_efficiency": { + "name": "Eficien\u021ba apei" + }, + "water_saving": { + "name": "Economii de ap\u0103" + }, + "duration": { + "name": "Durat\u0103" + }, + "target_temperature": { + "name": "Temperatur\u0103 vizat\u0103" + }, + "spin_speed": { + "name": "Stoarcere" + }, + "steam_leve": { + "name": "Nivel abur" + }, + "dirt_level": { + "name": "Nivel de murd\u0103rie" + }, + "delay_time": { + "name": "Programare" } }, "select": { @@ -178,7 +218,8 @@ "universal": "Universal 60 \u00b0C", "universal_plus": "Universal Plus 70 \u00b0C", "zoom_39": "Zoom 39 min" - } + }, + "name": "Program" }, "programs_ih": { "state": { @@ -217,7 +258,8 @@ "iot_standard_keep_warm": "Men\u021binere la cald", "iot_standard_melting": "Topire", "iot_standard_simmering": "Fierbere \u00een\u0103bu\u0219it\u0103" - } + }, + "name": "Program" }, "programs_ov": { "state": { @@ -272,7 +314,8 @@ "water_discharge": "Scurgerea apei", "white_meat": "Carne alb\u0103", "white_meat_steam": "Carne alb\u0103 g\u0103tit\u0103 la abur" - } + }, + "name": "Program" }, "programs_td": { "state": { @@ -408,7 +451,8 @@ "woolmark": "Woolmark", "xxl_load": "\u00cenc\u0103rcare XXL", "zoom_59": "Zoom 59" - } + }, + "name": "Program" }, "programs_wm": { "state": { @@ -717,7 +761,8 @@ "wool_and_delicates_49": "L\u00e2n\u0103/Delicate 49'", "wool_dry": "Uscarea l\u00e2nii", "wool_soft_care": "L\u00e2n\u0103 & \u00cengrijire Bl\u00e2nd\u0103" - } + }, + "name": "Program" }, "dry_levels": { "state": { @@ -730,7 +775,154 @@ "13": "\u0218ifonier preg\u0103tit", "14": "Gata de purtat", "15": "Uscare suplimentar\u0103" - } + }, + "name": "Uscare" + }, + "spin_speed": { + "name": "Stoarcere" + }, + "temperature": { + "name": "Temperatur\u0103" + } + }, + "switch": { + "anti_crease": { + "name": "Anti\u0219ifonare" + }, + "add_dish": { + "name": "" + }, + "eco_express": { + "name": "Eco" + }, + "extra_dry": { + "name": "Uscare suplimentar\u0103" + }, + "half_load": { + "name": "\u00cenc\u0103rcare pe jum\u0103tate" + }, + "open_door": { + "name": "Deschide u\u0219a" + }, + "three_in_one": { + "name": "3 \u00een 1" + }, + "preheat": { + "name": "Pre\u00eenc\u0103lzire" + }, + "dish_washer": { + "name": "Ma\u0219in\u0103 de sp\u0103lat vase" + }, + "tumble_dryer": { + "name": "Usc\u0103tor de rufe" + }, + "washing_machine": { + "name": "Ma\u0219in\u0103 de sp\u0103lat" + }, + "washer_dryer": { + "name": "Ma\u0219in\u0103 de sp\u0103lat cu usc\u0103tor \u00eencorporat" + }, + "oven": { + "name": "Cuptor" + }, + "prewash": { + "name": "Presp\u0103lare" + }, + "pause": { + "name": "Pauz\u0103" + } + }, + "binary_sensor": { + "door_lock": { + "name": "Blocaj u\u0219\u0103" + }, + "extra_rinse_1": { + "name": "+1 cl\u0103tire" + }, + "extra_rinse_2": { + "name": "+2 cl\u0103tiri" + }, + "extra_rinse_3": { + "name": "+3 cl\u0103tiri" + }, + "good_night": { + "name": "Noapte bun\u0103" + }, + "anti_crease": { + "name": "Anti\u0219ifonare" + }, + "aqua_plus": { + "name": "Acquaplus" + }, + "spin_speed": { + "name": "Stoarcere" + }, + "programs_dw": { + "name": "Program" + }, + "programs_ih": { + "name": "Program" + }, + "programs_ov": { + "name": "Program" + }, + "programs_td": { + "name": "Program" + }, + "programs_wm": { + "name": "Program" + }, + "still_hot": { + "name": "\u00cenc\u0103 fierbinte" + }, + "pan_status": { + "name": "Tigaie" + }, + "remote_control": { + "name": "Control la distan\u021b\u0103" + }, + "rinse_aid": { + "name": "Nivel de agent de cl\u0103tire" + }, + "salt_level": { + "name": "Nivel de sare" + }, + "door_open": { + "name": "U\u0219\u0103 deschis\u0103" + }, + "connection": { + "name": "Conectare" + } + }, + "number": { + "power_management": { + "name": "Administrarea puterii" + }, + "temperature": { + "name": "Temperatur\u0103" + }, + "delay_time": { + "name": "Programare" + }, + "water_hard": { + "name": "Duritate ap\u0103" + }, + "program_duration": { + "name": "Durat\u0103 program" + }, + "target_temperature": { + "name": "Temperatur\u0103 vizat\u0103" + }, + "rinse_iterations": { + "name": "Num\u0103rul de cl\u0103tiri" + }, + "wash_time": { + "name": "Timp de sp\u0103lare" + } + }, + "button": { + "induction_hob": { + "name": "Plita cu induc\u021bie" } } } diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index 8cc7728..568a5b3 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -38,7 +38,8 @@ "25": "\u0421\u0442\u0438\u0440\u043a\u0430", "26": "\u041d\u0430\u0433\u0440\u0435\u0432", "27": "\u0421\u0442\u0438\u0440\u043a\u0430" - } + }, + "name": "\u0424\u0430\u0437\u0430" }, "program_phases_td": { "state": { @@ -53,7 +54,8 @@ "18": "Keep Fresh (\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u0432\u0435\u0436\u0435\u0441\u0442\u0438)", "19": "\u0421\u0443\u0448\u043a\u0430", "20": "\u0421\u0443\u0448\u043a\u0430" - } + }, + "name": "\u0424\u0430\u0437\u0430" }, "program_phases_dw": { "state": { @@ -64,7 +66,8 @@ "4": "\u0421\u0443\u0448\u043a\u0430", "5": "\u0413\u043e\u0442\u043e\u0432\u043e", "6": "Hot rinse" - } + }, + "name": "\u0424\u0430\u0437\u0430" }, "dry_levels": { "state": { @@ -77,7 +80,44 @@ "13": "\u0413\u043e\u0442\u043e\u0432\u043e \u0432 \u0448\u043a\u0430\u0444", "14": "\u0413\u043e\u0442\u043e\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0434\u0435\u0432\u0430\u043d\u0438\u044f", "15": "\u042d\u043a\u0441\u0442\u0440\u0430 \u0441\u0443\u0448\u043a\u0430" - } + }, + "name": "\u0421\u0443\u0448\u043a\u0430" + }, + "anti_crease": { + "name": "\u041f\u0440\u043e\u0442\u0438\u0432\u043e\u0441\u043c\u0438\u043d\u0430\u043d\u0438\u0435" + }, + "power": { + "name": "\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438" + }, + "remaining_time": { + "name": "\u041e\u0441\u0442\u0430\u0432\u0448\u0435\u0435\u0441\u044f \u0432\u0440\u0435\u043c\u044f" + }, + "temperature": { + "name": "\u0422\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430" + }, + "water_efficiency": { + "name": "\u042d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0441\u0445\u043e\u0434\u0430 \u0432\u043e\u0434\u044b" + }, + "water_saving": { + "name": "\u042d\u043a\u043e\u043d\u043e\u043c\u0438\u044f \u0432\u043e\u0434\u044b" + }, + "duration": { + "name": "\u0414\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c" + }, + "target_temperature": { + "name": "\u0417\u0430\u0434\u0430\u043d\u043d\u0430\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430" + }, + "spin_speed": { + "name": "\u041e\u0442\u0436\u0438\u043c" + }, + "steam_leve": { + "name": "\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u043f\u0430\u0440\u0430" + }, + "dirt_level": { + "name": "\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u0437\u0430\u0433\u0440\u044f\u0437\u043d\u0435\u043d\u0438\u044f" + }, + "delay_time": { + "name": "\u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c" } }, "select": { @@ -178,7 +218,8 @@ "universal": "\u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f 60\u00b0C", "universal_plus": "\u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043b\u044e\u0441 70\u00b0C", "zoom_39": "Zoom 39 min" - } + }, + "name": "\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430" }, "programs_ih": { "state": { @@ -217,7 +258,8 @@ "iot_standard_keep_warm": "\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0431\u043b\u044e\u0434 \u0432 \u0442\u0435\u043f\u043b\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438", "iot_standard_melting": "\u041f\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435", "iot_standard_simmering": "\u041f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e\u043c \u043e\u0433\u043d\u0435" - } + }, + "name": "\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430" }, "programs_ov": { "state": { @@ -272,7 +314,8 @@ "water_discharge": "\u0412\u043e\u0434\u043e\u043e\u0442\u0432\u043e\u0434", "white_meat": "\u0411\u0435\u043b\u043e\u0435 \u043c\u044f\u0441\u043e", "white_meat_steam": "\u0411\u0435\u043b\u043e\u0435 \u043c\u044f\u0441\u043e, \u043f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u043d\u0430 \u043f\u0430\u0440\u0443" - } + }, + "name": "\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430" }, "programs_td": { "state": { @@ -408,7 +451,8 @@ "woolmark": "\u0428\u0435\u0440\u0441\u0442\u044c", "xxl_load": "\u041e\u0431\u044a\u0435\u043c\u043d\u044b\u0435 \u0432\u0435\u0449\u0438", "zoom_59": "Zoom 59 (\u0417\u0443\u043c 59)" - } + }, + "name": "\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430" }, "programs_wm": { "state": { @@ -717,7 +761,8 @@ "wool_and_delicates_49": "\u0448\u0435\u0440\u0441\u0442\u044c/\u0434\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 49'", "wool_dry": "\u0421\u0443\u0448\u043a\u0430 \u0448\u0435\u0440\u0441\u0442\u0438", "wool_soft_care": "\u0448\u0435\u0440\u0441\u0442\u044c & \u0434\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0439 \u0443\u0445\u043e\u0434" - } + }, + "name": "\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430" }, "dry_levels": { "state": { @@ -730,7 +775,154 @@ "13": "\u0413\u043e\u0442\u043e\u0432\u043e \u0432 \u0448\u043a\u0430\u0444", "14": "\u0413\u043e\u0442\u043e\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0434\u0435\u0432\u0430\u043d\u0438\u044f", "15": "\u042d\u043a\u0441\u0442\u0440\u0430 \u0441\u0443\u0448\u043a\u0430" - } + }, + "name": "\u0421\u0443\u0448\u043a\u0430" + }, + "spin_speed": { + "name": "\u041e\u0442\u0436\u0438\u043c" + }, + "temperature": { + "name": "\u0422\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430" + } + }, + "switch": { + "anti_crease": { + "name": "\u041f\u0440\u043e\u0442\u0438\u0432\u043e\u0441\u043c\u0438\u043d\u0430\u043d\u0438\u0435" + }, + "add_dish": { + "name": "" + }, + "eco_express": { + "name": "\u042d\u043a\u043e" + }, + "extra_dry": { + "name": "\u0421\u0443\u043f\u0435\u0440\u0441\u0443\u0448\u043a\u0430" + }, + "half_load": { + "name": "\u041f\u043e\u043b\u043e\u0432\u0438\u043d\u043d\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430" + }, + "open_door": { + "name": "\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0434\u0432\u0435\u0440\u0446\u0443" + }, + "three_in_one": { + "name": "3 \u0432 1" + }, + "preheat": { + "name": "\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043e\u0433\u0440\u0435\u0432" + }, + "dish_washer": { + "name": "\u041f\u043e\u0441\u0443\u0434\u043e\u043c\u043e\u0435\u0447\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430" + }, + "tumble_dryer": { + "name": "\u0421\u0443\u0448\u0438\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430" + }, + "washing_machine": { + "name": "\u0421\u0442\u0438\u0440\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430" + }, + "washer_dryer": { + "name": "\u0421\u0442\u0438\u0440\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u0441 \u0441\u0443\u0448\u043a\u043e\u0439" + }, + "oven": { + "name": "\u0414\u0443\u0445\u043e\u0432\u043e\u0439 \u0448\u043a\u0430\u0444" + }, + "prewash": { + "name": "\u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043c\u043e\u0439\u043a\u0430" + }, + "pause": { + "name": "\u041f\u0430\u0443\u0437\u0430" + } + }, + "binary_sensor": { + "door_lock": { + "name": "\u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u0434\u0432\u0435\u0440\u0446\u044b" + }, + "extra_rinse_1": { + "name": "+1 \u043f\u043e\u043b\u043e\u0441\u043a\u0430\u043d\u0438\u0435" + }, + "extra_rinse_2": { + "name": "+2 \u043f\u043e\u043b\u043e\u0441\u043a\u0430\u043d\u0438\u044f" + }, + "extra_rinse_3": { + "name": "+3 \u043f\u043e\u043b\u043e\u0441\u043a\u0430\u043d\u0438\u044f" + }, + "good_night": { + "name": "\u0421\u043f\u043e\u043a\u043e\u0439\u043d\u043e\u0439 \u043d\u043e\u0447\u0438" + }, + "anti_crease": { + "name": "\u041f\u0440\u043e\u0442\u0438\u0432\u043e\u0441\u043c\u0438\u043d\u0430\u043d\u0438\u0435" + }, + "aqua_plus": { + "name": "\u0410\u043a\u0432\u0430\u043f\u043b\u044e\u0441" + }, + "spin_speed": { + "name": "\u041e\u0442\u0436\u0438\u043c" + }, + "programs_dw": { + "name": "\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430" + }, + "programs_ih": { + "name": "\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430" + }, + "programs_ov": { + "name": "\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430" + }, + "programs_td": { + "name": "\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430" + }, + "programs_wm": { + "name": "\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430" + }, + "still_hot": { + "name": "\u0415\u0449\u0435 \u0433\u043e\u0440\u044f\u0447\u0438\u0439" + }, + "pan_status": { + "name": "\u041f\u043e\u0441\u0443\u0434\u0430" + }, + "remote_control": { + "name": "\u0414\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u043e\u043d\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435" + }, + "rinse_aid": { + "name": "\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u043e\u043f\u043e\u043b\u0430\u0441\u043a\u0438\u0432\u0430\u0442\u0435\u043b\u044f" + }, + "salt_level": { + "name": "\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u0441\u043e\u043b\u0438" + }, + "door_open": { + "name": "\u0414\u0432\u0435\u0440\u0446\u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u0430" + }, + "connection": { + "name": "\u0421\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435" + } + }, + "number": { + "power_management": { + "name": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043f\u0438\u0442\u0430\u043d\u0438\u0435\u043c" + }, + "temperature": { + "name": "\u0422\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430" + }, + "delay_time": { + "name": "\u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c" + }, + "water_hard": { + "name": "\u0416\u0435\u0441\u0442\u043a\u043e\u0441\u0442\u044c \u0432\u043e\u0434\u044b" + }, + "program_duration": { + "name": "\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b" + }, + "target_temperature": { + "name": "\u0417\u0430\u0434\u0430\u043d\u043d\u0430\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430" + }, + "rinse_iterations": { + "name": "\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u043e\u0441\u043a\u0430\u043d\u0438\u0439" + }, + "wash_time": { + "name": "\u0412\u0440\u0435\u043c\u044f \u0441\u0442\u0438\u0440\u043a\u0438" + } + }, + "button": { + "induction_hob": { + "name": "\u0418\u043d\u0434\u0443\u043a\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0432\u0430\u0440\u043e\u0447\u043d\u0430\u044f \u043f\u0430\u043d\u0435\u043b\u044c" } } } diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index d3dc9e3..9e43fea 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -38,7 +38,8 @@ "25": "Pranie", "26": "Ohrev", "27": "Pranie" - } + }, + "name": "F\u00e1za" }, "program_phases_td": { "state": { @@ -53,7 +54,8 @@ "18": "Uchova\u0165 svie\u017ee", "19": "Su\u0161enie", "20": "Su\u0161enie" - } + }, + "name": "F\u00e1za" }, "program_phases_dw": { "state": { @@ -64,7 +66,8 @@ "4": "Su\u0161enie", "5": "Pripraven\u00e9", "6": "Hot rinse" - } + }, + "name": "F\u00e1za" }, "dry_levels": { "state": { @@ -77,7 +80,44 @@ "13": "\u0160atn\u00edk pripraven\u00fd", "14": "Hotov\u00e9 na nosenie", "15": "Extra su\u0161enie" - } + }, + "name": "Su\u0161enie" + }, + "anti_crease": { + "name": "Proti pokr\u010deniu" + }, + "power": { + "name": "\u00darove\u0148 v\u00fdkonu" + }, + "remaining_time": { + "name": "Zost\u00e1vaj\u00faci \u010das" + }, + "temperature": { + "name": "Teplota" + }, + "water_efficiency": { + "name": "\u00da\u010dinnos\u0165 vody" + }, + "water_saving": { + "name": "\u00daspora vody" + }, + "duration": { + "name": "Trvanie" + }, + "target_temperature": { + "name": "Cie\u013eov\u00e1 teplota" + }, + "spin_speed": { + "name": "Odstre\u010fovanie" + }, + "steam_leve": { + "name": "\u00darove\u0148 nastavenia pary" + }, + "dirt_level": { + "name": "\u00darove\u0148 zne\u010distenia" + }, + "delay_time": { + "name": "Napl\u00e1nova\u0165" } }, "select": { @@ -178,7 +218,8 @@ "universal": "Univerz\u00e1lne 60 \u00b0C", "universal_plus": "Univerz\u00e1lne Plus 70 \u00b0C", "zoom_39": "Zoom 39 min" - } + }, + "name": "Program" }, "programs_ih": { "state": { @@ -217,7 +258,8 @@ "iot_standard_keep_warm": "Udr\u017eiavanie tepla", "iot_standard_melting": "Topi\u0165", "iot_standard_simmering": "Slab\u00e9 vrenie" - } + }, + "name": "Program" }, "programs_ov": { "state": { @@ -272,7 +314,8 @@ "water_discharge": "Odtok vody", "white_meat": "Biele m\u00e4so", "white_meat_steam": "Biele m\u00e4so varen\u00e9 v pare" - } + }, + "name": "Program" }, "programs_td": { "state": { @@ -408,7 +451,8 @@ "woolmark": "Woolmark", "xxl_load": "XXL n\u00e1pl\u0148", "zoom_59": "Zoom 59" - } + }, + "name": "Program" }, "programs_wm": { "state": { @@ -717,7 +761,8 @@ "wool_and_delicates_49": "Vlna/Jemn\u00e9 49'", "wool_dry": "Vlna such\u00e1", "wool_soft_care": "Vlna & M\u00e4kk\u00e1 starostlivost" - } + }, + "name": "Program" }, "dry_levels": { "state": { @@ -730,7 +775,154 @@ "13": "\u0160atn\u00edk pripraven\u00fd", "14": "Hotov\u00e9 na nosenie", "15": "Extra su\u0161enie" - } + }, + "name": "Su\u0161enie" + }, + "spin_speed": { + "name": "Odstre\u010fovanie" + }, + "temperature": { + "name": "Teplota" + } + }, + "switch": { + "anti_crease": { + "name": "Proti pokr\u010deniu" + }, + "add_dish": { + "name": "" + }, + "eco_express": { + "name": "Eko" + }, + "extra_dry": { + "name": "Extra su\u0161enie" + }, + "half_load": { + "name": "Polovi\u010dn\u00e9 naplnenie" + }, + "open_door": { + "name": "Otvori\u0165 dvere" + }, + "three_in_one": { + "name": "3\u00a0v\u00a01" + }, + "preheat": { + "name": "Predhria\u0165" + }, + "dish_washer": { + "name": "Um\u00fdva\u010dka riadu" + }, + "tumble_dryer": { + "name": "Bubnov\u00e1 su\u0161i\u010dka" + }, + "washing_machine": { + "name": "Pr\u00e1\u010dka" + }, + "washer_dryer": { + "name": "Pr\u00e1\u010dka so su\u0161i\u010dkou" + }, + "oven": { + "name": "R\u00fara na pe\u010denie" + }, + "prewash": { + "name": "Predum\u00fdvanie" + }, + "pause": { + "name": "Pozastavi\u0165" + } + }, + "binary_sensor": { + "door_lock": { + "name": "Uzamknutie dver\u00ed" + }, + "extra_rinse_1": { + "name": "+ 1 oplachovanie" + }, + "extra_rinse_2": { + "name": "+ 2 oplachovania" + }, + "extra_rinse_3": { + "name": "+ 3 oplachovania" + }, + "good_night": { + "name": "Dobr\u00fa noc" + }, + "anti_crease": { + "name": "Proti pokr\u010deniu" + }, + "aqua_plus": { + "name": "Aquaplus" + }, + "spin_speed": { + "name": "Odstre\u010fovanie" + }, + "programs_dw": { + "name": "Program" + }, + "programs_ih": { + "name": "Program" + }, + "programs_ov": { + "name": "Program" + }, + "programs_td": { + "name": "Program" + }, + "programs_wm": { + "name": "Program" + }, + "still_hot": { + "name": "St\u00e1le hor\u00face" + }, + "pan_status": { + "name": "Panvica" + }, + "remote_control": { + "name": "Dia\u013ekov\u00e9 ovl\u00e1danie" + }, + "rinse_aid": { + "name": "\u00darove\u0148 prostriedku na oplachovanie" + }, + "salt_level": { + "name": "\u00darove\u0148 soli" + }, + "door_open": { + "name": "Otvoren\u00e9 dvere" + }, + "connection": { + "name": "Pripojenie" + } + }, + "number": { + "power_management": { + "name": "Spr\u00e1va v\u00fdkonu" + }, + "temperature": { + "name": "Teplota" + }, + "delay_time": { + "name": "Napl\u00e1nova\u0165" + }, + "water_hard": { + "name": "Tvrdos\u0165 vody" + }, + "program_duration": { + "name": "Trvanie programu" + }, + "target_temperature": { + "name": "Cie\u013eov\u00e1 teplota" + }, + "rinse_iterations": { + "name": "Po\u010det pl\u00e1kan\u00ed" + }, + "wash_time": { + "name": "\u010cas prania" + } + }, + "button": { + "induction_hob": { + "name": "Induk\u010dn\u00e1 varn\u00e1 doska" } } } diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index b863b95..54b043d 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -38,7 +38,8 @@ "25": "Pranje", "26": "Ogrevanje", "27": "Pranje" - } + }, + "name": "Faza" }, "program_phases_td": { "state": { @@ -53,7 +54,8 @@ "18": "Ohrani sve\u017ee", "19": "Su\u0161enje", "20": "Su\u0161enje" - } + }, + "name": "Faza" }, "program_phases_dw": { "state": { @@ -64,7 +66,8 @@ "4": "Su\u0161enje", "5": "Pripravljen", "6": "Hot rinse" - } + }, + "name": "Faza" }, "dry_levels": { "state": { @@ -77,7 +80,44 @@ "13": "Suho za omaro", "14": "Pripravljeno za uporabo", "15": "Zelo suho" - } + }, + "name": "Su\u0161enje" + }, + "anti_crease": { + "name": "Proti me\u010dkanju" + }, + "power": { + "name": "Stopnja mo\u010di" + }, + "remaining_time": { + "name": "Time remaining" + }, + "temperature": { + "name": "Temperatura" + }, + "water_efficiency": { + "name": "U\u010dinkovita raba vode" + }, + "water_saving": { + "name": "Privar\u010devana voda" + }, + "duration": { + "name": "Trajanje" + }, + "target_temperature": { + "name": "Ciljna temperatura" + }, + "spin_speed": { + "name": "O\u017eemanje" + }, + "steam_leve": { + "name": "Koli\u010dina pare" + }, + "dirt_level": { + "name": "Stopnja umazanije" + }, + "delay_time": { + "name": "Urnik" } }, "select": { @@ -178,7 +218,8 @@ "universal": "Univerzalno 60 \u00b0C", "universal_plus": "Univerzalni Plus 70 \u00b0C", "zoom_39": "Zoom 39 min" - } + }, + "name": "Program" }, "programs_ih": { "state": { @@ -217,7 +258,8 @@ "iot_standard_keep_warm": "Ohranjanje toplote", "iot_standard_melting": "Taljenje", "iot_standard_simmering": "Rahlo vretje" - } + }, + "name": "Program" }, "programs_ov": { "state": { @@ -272,7 +314,8 @@ "water_discharge": "Odtok za vodo", "white_meat": "Belo meso", "white_meat_steam": "Soparjeno belo meso" - } + }, + "name": "Program" }, "programs_td": { "state": { @@ -408,7 +451,8 @@ "woolmark": "Woolmark", "xxl_load": "Zelo veliki kosi perila", "zoom_59": "Zoom 59" - } + }, + "name": "Program" }, "programs_wm": { "state": { @@ -717,7 +761,8 @@ "wool_and_delicates_49": "Volna/Ob\u010dutljive tkanine 49'", "wool_dry": "Su\u0161enje volne", "wool_soft_care": "Volna & Nega Za Mehkobo" - } + }, + "name": "Program" }, "dry_levels": { "state": { @@ -730,7 +775,154 @@ "13": "Suho za omaro", "14": "Pripravljeno za uporabo", "15": "Zelo suho" - } + }, + "name": "Su\u0161enje" + }, + "spin_speed": { + "name": "O\u017eemanje" + }, + "temperature": { + "name": "Temperatura" + } + }, + "switch": { + "anti_crease": { + "name": "Proti me\u010dkanju" + }, + "add_dish": { + "name": "" + }, + "eco_express": { + "name": "Var\u010dno" + }, + "extra_dry": { + "name": "Zelo suho" + }, + "half_load": { + "name": "Napolnjeno do polovice" + }, + "open_door": { + "name": "Odpri vrata" + }, + "three_in_one": { + "name": "3 v 1" + }, + "preheat": { + "name": "Predhodno segrevanje" + }, + "dish_washer": { + "name": "Pomivalni stroj" + }, + "tumble_dryer": { + "name": "Su\u0161ilni stroj" + }, + "washing_machine": { + "name": "Pralni stroj" + }, + "washer_dryer": { + "name": "Pralno-su\u0161ilni stroj" + }, + "oven": { + "name": "Pe\u010dica" + }, + "prewash": { + "name": "Predpranje" + }, + "pause": { + "name": "Premor" + } + }, + "binary_sensor": { + "door_lock": { + "name": "Zaklepanje vrat" + }, + "extra_rinse_1": { + "name": " + 1 izpiranje" + }, + "extra_rinse_2": { + "name": " + 2 izpiranji" + }, + "extra_rinse_3": { + "name": " + 3 izpiranja" + }, + "good_night": { + "name": "Lahko no\u010d" + }, + "anti_crease": { + "name": "Proti me\u010dkanju" + }, + "aqua_plus": { + "name": "Acquaplus" + }, + "spin_speed": { + "name": "O\u017eemanje" + }, + "programs_dw": { + "name": "Program" + }, + "programs_ih": { + "name": "Program" + }, + "programs_ov": { + "name": "Program" + }, + "programs_td": { + "name": "Program" + }, + "programs_wm": { + "name": "Program" + }, + "still_hot": { + "name": "\u0160e vedno vro\u010de" + }, + "pan_status": { + "name": "Posoda" + }, + "remote_control": { + "name": "Daljinsko upravljanje" + }, + "rinse_aid": { + "name": "Nivo sredstva za sijaj" + }, + "salt_level": { + "name": "Nivo soli" + }, + "door_open": { + "name": "Door open" + }, + "connection": { + "name": "Connection" + } + }, + "number": { + "power_management": { + "name": "Upravljanje mo\u010di" + }, + "temperature": { + "name": "Temperatura" + }, + "delay_time": { + "name": "Urnik" + }, + "water_hard": { + "name": "Trdota vode" + }, + "program_duration": { + "name": "\u010cas trajanja programa" + }, + "target_temperature": { + "name": "Ciljna temperatura" + }, + "rinse_iterations": { + "name": "\u0160tevilo izpiranj" + }, + "wash_time": { + "name": "\u010cas pranja" + } + }, + "button": { + "induction_hob": { + "name": "Indukcijska kuhalna plo\u0161\u010da" } } } diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index 7f23ff6..f94bf56 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -38,7 +38,8 @@ "25": "Pranje", "26": "Grejanje", "27": "Pranje" - } + }, + "name": "Faza" }, "program_phases_td": { "state": { @@ -53,7 +54,8 @@ "18": "O\u010duvanje sve\u017eine", "19": "Su\u0161enje", "20": "Su\u0161enje" - } + }, + "name": "Faza" }, "program_phases_dw": { "state": { @@ -64,7 +66,8 @@ "4": "Su\u0161enje", "5": "Spremno", "6": "Hot rinse" - } + }, + "name": "Faza" }, "dry_levels": { "state": { @@ -77,7 +80,44 @@ "13": "Suvo za ormar", "14": "Spremno za no\u0161enje", "15": "Ekstra suvo" - } + }, + "name": "Su\u0161enje" + }, + "anti_crease": { + "name": "Protiv gu\u017evanja" + }, + "power": { + "name": "Ja\u010dina" + }, + "remaining_time": { + "name": "Preostalo vreme" + }, + "temperature": { + "name": "Temperatura" + }, + "water_efficiency": { + "name": "Efikasnost vode" + }, + "water_saving": { + "name": "U\u0161teda vode" + }, + "duration": { + "name": "Trajanje" + }, + "target_temperature": { + "name": "\u017deljena temperatura" + }, + "spin_speed": { + "name": "Centrifuga" + }, + "steam_leve": { + "name": "Nivo pare" + }, + "dirt_level": { + "name": "Nivo zaprljanosti" + }, + "delay_time": { + "name": "Raspored" } }, "select": { @@ -178,7 +218,8 @@ "universal": "Univerzalni 60\u00b0C", "universal_plus": "Univerzalni plus 70\u00b0C", "zoom_39": "Zoom 39 min" - } + }, + "name": "Program" }, "programs_ih": { "state": { @@ -217,7 +258,8 @@ "iot_standard_keep_warm": "Odr\u017eite toplinu", "iot_standard_melting": "Topljenje", "iot_standard_simmering": "Simmering" - } + }, + "name": "Program" }, "programs_ov": { "state": { @@ -272,7 +314,8 @@ "water_discharge": "Odvod vode", "white_meat": "Belo meso", "white_meat_steam": "Belo meso kuvano na pari" - } + }, + "name": "Program" }, "programs_td": { "state": { @@ -408,7 +451,8 @@ "woolmark": "Woolmark", "xxl_load": "XXL ve\u0161", "zoom_59": "Zoom 59" - } + }, + "name": "Program" }, "programs_wm": { "state": { @@ -717,7 +761,8 @@ "wool_and_delicates_49": "Vuna/Delikatni 49'", "wool_dry": "Su\u0161enje vune", "wool_soft_care": "Vuna & Blagi Tretman" - } + }, + "name": "Program" }, "dry_levels": { "state": { @@ -730,7 +775,154 @@ "13": "Suvo za ormar", "14": "Spremno za no\u0161enje", "15": "Ekstra suvo" - } + }, + "name": "Su\u0161enje" + }, + "spin_speed": { + "name": "Centrifuga" + }, + "temperature": { + "name": "Temperatura" + } + }, + "switch": { + "anti_crease": { + "name": "Protiv gu\u017evanja" + }, + "add_dish": { + "name": "" + }, + "eco_express": { + "name": "Eko" + }, + "extra_dry": { + "name": "Jako suvo" + }, + "half_load": { + "name": "Pola optere\u0107enja" + }, + "open_door": { + "name": "Otvorena vrata" + }, + "three_in_one": { + "name": "3 u 1" + }, + "preheat": { + "name": "Zagrevanje" + }, + "dish_washer": { + "name": "Ma\u0161ina za pranje sudova" + }, + "tumble_dryer": { + "name": "Ma\u0161ina za su\u0161enje" + }, + "washing_machine": { + "name": "Ma\u0161ina za pranje ve\u0161a" + }, + "washer_dryer": { + "name": "Ma\u0161ina za pranje i su\u0161enje" + }, + "oven": { + "name": "Rerna" + }, + "prewash": { + "name": "Predpranje" + }, + "pause": { + "name": "Pauza" + } + }, + "binary_sensor": { + "door_lock": { + "name": "Vrata su zaklju\u010dana" + }, + "extra_rinse_1": { + "name": "+1 ispiranje" + }, + "extra_rinse_2": { + "name": "+2 ispiranja" + }, + "extra_rinse_3": { + "name": "+3 ispiranja" + }, + "good_night": { + "name": "Laku no\u0107" + }, + "anti_crease": { + "name": "Protiv gu\u017evanja" + }, + "aqua_plus": { + "name": "Vi\u0161i nivo vode" + }, + "spin_speed": { + "name": "Centrifuga" + }, + "programs_dw": { + "name": "Program" + }, + "programs_ih": { + "name": "Program" + }, + "programs_ov": { + "name": "Program" + }, + "programs_td": { + "name": "Program" + }, + "programs_wm": { + "name": "Program" + }, + "still_hot": { + "name": "Jo\u0161 uvek vru\u0107e" + }, + "pan_status": { + "name": "Tiganj" + }, + "remote_control": { + "name": "Daljinsko upravljanje" + }, + "rinse_aid": { + "name": "Nivo sredstva za ispiranje" + }, + "salt_level": { + "name": "Nivo soli" + }, + "door_open": { + "name": "Vrata su otvorena" + }, + "connection": { + "name": "Konekcija" + } + }, + "number": { + "power_management": { + "name": "Upravljanje napajanjem" + }, + "temperature": { + "name": "Temperatura" + }, + "delay_time": { + "name": "Raspored" + }, + "water_hard": { + "name": "Tvrdo\u0107a vode" + }, + "program_duration": { + "name": "Trajanje programa" + }, + "target_temperature": { + "name": "\u017deljena temperatura" + }, + "rinse_iterations": { + "name": "Broj ispiranja" + }, + "wash_time": { + "name": "Vreme pranja" + } + }, + "button": { + "induction_hob": { + "name": "Indukciona plo\u010da" } } } diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index d4c23d2..bc58eed 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -38,7 +38,8 @@ "25": "Y\u0131kama", "26": "Is\u0131tma", "27": "Y\u0131kama" - } + }, + "name": "A\u015fama" }, "program_phases_td": { "state": { @@ -53,7 +54,8 @@ "18": "Tazeleme", "19": "Kurutma", "20": "Kurutma" - } + }, + "name": "A\u015fama" }, "program_phases_dw": { "state": { @@ -64,7 +66,8 @@ "4": "Kurutma", "5": "Haz\u0131r", "6": "Hot rinse" - } + }, + "name": "A\u015fama" }, "dry_levels": { "state": { @@ -77,7 +80,44 @@ "13": "Gard\u0131rop haz\u0131r", "14": "Giyilmeye haz\u0131r", "15": "Ekstra kurutma" - } + }, + "name": "Kurutma" + }, + "anti_crease": { + "name": "K\u0131r\u0131\u015f\u0131k a\u00e7ma" + }, + "power": { + "name": "G\u00fc\u00e7 seviyesi" + }, + "remaining_time": { + "name": "Kalan s\u00fcre" + }, + "temperature": { + "name": "S\u0131cakl\u0131k" + }, + "water_efficiency": { + "name": "Su verimlili\u011fi" + }, + "water_saving": { + "name": "Su tasarrufu" + }, + "duration": { + "name": "S\u00fcre" + }, + "target_temperature": { + "name": "Hedef s\u0131cakl\u0131k" + }, + "spin_speed": { + "name": "S\u0131kma" + }, + "steam_leve": { + "name": "Buhar Seviyesi" + }, + "dirt_level": { + "name": "Kir seviyesi" + }, + "delay_time": { + "name": "Planla" } }, "select": { @@ -178,7 +218,8 @@ "universal": "\u00c7ok Ama\u00e7l\u0131 60\u00b0C", "universal_plus": "\u00c7ok Ama\u00e7l\u0131 Art\u0131 70\u00b0C", "zoom_39": "Zoom 39 min" - } + }, + "name": "Program" }, "programs_ih": { "state": { @@ -217,7 +258,8 @@ "iot_standard_keep_warm": "S\u0131cak Tut", "iot_standard_melting": "Erit", "iot_standard_simmering": "\u0130\u00e7ten \u0130\u00e7e Kaynama" - } + }, + "name": "Program" }, "programs_ov": { "state": { @@ -272,7 +314,8 @@ "water_discharge": "Su Drenaj\u0131", "white_meat": "Beyaz Et", "white_meat_steam": "Buharda pi\u015fmi\u015f beyaz et" - } + }, + "name": "Program" }, "programs_td": { "state": { @@ -408,7 +451,8 @@ "woolmark": "Saf y\u00fcn markas\u0131", "xxl_load": "XXL \u00c7ama\u015f\u0131r", "zoom_59": "Yak\u0131nla\u015ft\u0131r 59" - } + }, + "name": "Program" }, "programs_wm": { "state": { @@ -717,7 +761,8 @@ "wool_and_delicates_49": "Y\u00fcnl\u00fc/Hassas 49'", "wool_dry": "Y\u00fcnl\u00fc kurutma", "wool_soft_care": "Y\u00fcnl\u00fc & Hassas" - } + }, + "name": "Program" }, "dry_levels": { "state": { @@ -730,7 +775,154 @@ "13": "Gard\u0131rop haz\u0131r", "14": "Giyilmeye haz\u0131r", "15": "Ekstra kurutma" - } + }, + "name": "Kurutma" + }, + "spin_speed": { + "name": "S\u0131kma" + }, + "temperature": { + "name": "S\u0131cakl\u0131k" + } + }, + "switch": { + "anti_crease": { + "name": "K\u0131r\u0131\u015f\u0131k a\u00e7ma" + }, + "add_dish": { + "name": "" + }, + "eco_express": { + "name": "Eko" + }, + "extra_dry": { + "name": "Ekstra kurutma" + }, + "half_load": { + "name": "Yar\u0131m y\u00fck" + }, + "open_door": { + "name": "Kap\u0131y\u0131 a\u00e7" + }, + "three_in_one": { + "name": "3\u2019\u00fc 1 arada" + }, + "preheat": { + "name": "\u00d6n \u0131s\u0131tma yap" + }, + "dish_washer": { + "name": "Bula\u015f\u0131k makinesi" + }, + "tumble_dryer": { + "name": "Tamburlu kurutucu" + }, + "washing_machine": { + "name": "\u00c7ama\u015f\u0131r Makinesi" + }, + "washer_dryer": { + "name": "Kurutmal\u0131 \u00e7ama\u015f\u0131r makinesi" + }, + "oven": { + "name": "F\u0131r\u0131n" + }, + "prewash": { + "name": "Pre-wash" + }, + "pause": { + "name": "Duraklat" + } + }, + "binary_sensor": { + "door_lock": { + "name": "Kapak kilitlendi" + }, + "extra_rinse_1": { + "name": "+1 Durulama" + }, + "extra_rinse_2": { + "name": "+2 Durulama" + }, + "extra_rinse_3": { + "name": "+3 Durulama" + }, + "good_night": { + "name": "\u0130yi Geceler" + }, + "anti_crease": { + "name": "K\u0131r\u0131\u015f\u0131k a\u00e7ma" + }, + "aqua_plus": { + "name": "Acquaplus" + }, + "spin_speed": { + "name": "S\u0131kma" + }, + "programs_dw": { + "name": "Program" + }, + "programs_ih": { + "name": "Program" + }, + "programs_ov": { + "name": "Program" + }, + "programs_td": { + "name": "Program" + }, + "programs_wm": { + "name": "Program" + }, + "still_hot": { + "name": "Hala s\u0131cak" + }, + "pan_status": { + "name": "Tava" + }, + "remote_control": { + "name": "Uzaktan kumanda" + }, + "rinse_aid": { + "name": "Parlat\u0131c\u0131 seviyesi" + }, + "salt_level": { + "name": "Tuz seviyesi" + }, + "door_open": { + "name": "Kap\u0131 a\u00e7\u0131k" + }, + "connection": { + "name": "Ba\u011flant\u0131" + } + }, + "number": { + "power_management": { + "name": "Power management" + }, + "temperature": { + "name": "S\u0131cakl\u0131k" + }, + "delay_time": { + "name": "Planla" + }, + "water_hard": { + "name": "Su sertli\u011fi" + }, + "program_duration": { + "name": "Program s\u00fcresi" + }, + "target_temperature": { + "name": "Hedef s\u0131cakl\u0131k" + }, + "rinse_iterations": { + "name": "Durulama say\u0131s\u0131" + }, + "wash_time": { + "name": "Y\u0131kama s\u00fcresi" + } + }, + "button": { + "induction_hob": { + "name": "\u0130nd\u00fcksiyonlu Ocak" } } } diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index 27b8c54..193e5ea 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -38,7 +38,8 @@ "25": "\u6d17\u6da4", "26": "\u52a0\u70ed", "27": "\u6d17\u6da4" - } + }, + "name": "\u9636\u6bb5" }, "program_phases_td": { "state": { @@ -53,7 +54,8 @@ "18": "\u4fdd\u6301\u6e05\u65b0", "19": "\u70d8\u5e72", "20": "\u70d8\u5e72" - } + }, + "name": "\u9636\u6bb5" }, "program_phases_dw": { "state": { @@ -64,7 +66,8 @@ "4": "\u70d8\u5e72", "5": "\u5c31\u7eea", "6": "Hot rinse" - } + }, + "name": "\u9636\u6bb5" }, "dry_levels": { "state": { @@ -77,7 +80,44 @@ "13": "\u8863\u67dc\u5c31\u7eea", "14": "\u53ef\u7a7f", "15": "\u7279\u5e72" - } + }, + "name": "\u70d8\u5e72" + }, + "anti_crease": { + "name": "\u6297\u76b1" + }, + "power": { + "name": "\u529f\u7387\u7ea7" + }, + "remaining_time": { + "name": "\u5269\u4f59\u65f6\u95f4" + }, + "temperature": { + "name": "\u6e29\u5ea6" + }, + "water_efficiency": { + "name": "\u7528\u6c34\u6548\u7387" + }, + "water_saving": { + "name": "\u8282\u6c34" + }, + "duration": { + "name": "\u6301\u7eed\u65f6\u95f4" + }, + "target_temperature": { + "name": "\u76ee\u6807\u6e29\u5ea6" + }, + "spin_speed": { + "name": "\u7529\u5e72" + }, + "steam_leve": { + "name": "\u84b8\u6c7d\u6863\u4f4d" + }, + "dirt_level": { + "name": "\u810f\u6c61\u7a0b\u5ea6" + }, + "delay_time": { + "name": "\u8ba1\u5212" } }, "select": { @@ -178,7 +218,8 @@ "universal": "\u901a\u752860\u00b0C", "universal_plus": "\u901a\u7528+ 70\u00b0C", "zoom_39": "Zoom 39 min" - } + }, + "name": "\u7a0b\u5e8f" }, "programs_ih": { "state": { @@ -217,7 +258,8 @@ "iot_standard_keep_warm": "\u4fdd\u6e29", "iot_standard_melting": "\u878d\u5316", "iot_standard_simmering": "Simmering" - } + }, + "name": "\u7a0b\u5e8f" }, "programs_ov": { "state": { @@ -272,7 +314,8 @@ "water_discharge": "\u6392\u6c34", "white_meat": "\u767d\u8089", "white_meat_steam": "\u84b8\u716e\u7684\u767d\u8089" - } + }, + "name": "\u7a0b\u5e8f" }, "programs_td": { "state": { @@ -408,7 +451,8 @@ "woolmark": "Woolmark", "xxl_load": "XXL Load", "zoom_59": "\u7f29\u653e 59" - } + }, + "name": "\u7a0b\u5e8f" }, "programs_wm": { "state": { @@ -717,7 +761,8 @@ "wool_and_delicates_49": "\u7f8a\u6bdb", "wool_dry": "\u7f8a\u6bdb\u8863\u7269\u70d8\u5e72", "wool_soft_care": "\u7f8a\u6bdb" - } + }, + "name": "\u7a0b\u5e8f" }, "dry_levels": { "state": { @@ -730,7 +775,154 @@ "13": "\u8863\u67dc\u5c31\u7eea", "14": "\u53ef\u7a7f", "15": "\u7279\u5e72" - } + }, + "name": "\u70d8\u5e72" + }, + "spin_speed": { + "name": "\u7529\u5e72" + }, + "temperature": { + "name": "\u6e29\u5ea6" + } + }, + "switch": { + "anti_crease": { + "name": "\u6297\u76b1" + }, + "add_dish": { + "name": "" + }, + "eco_express": { + "name": "\u8282\u80fd" + }, + "extra_dry": { + "name": "\u7279\u5e72" + }, + "half_load": { + "name": "\u534a\u8f7d" + }, + "open_door": { + "name": "\u5f00\u95e8" + }, + "three_in_one": { + "name": "\u4e09\u5408\u4e00" + }, + "preheat": { + "name": "\u9884\u70ed" + }, + "dish_washer": { + "name": "\u6d17\u7897\u673a" + }, + "tumble_dryer": { + "name": "\u6eda\u7b52\u70d8\u5e72\u673a" + }, + "washing_machine": { + "name": "\u6d17\u8863\u673a" + }, + "washer_dryer": { + "name": "\u6d17\u8863\u70d8\u5e72\u4e24\u7528\u673a" + }, + "oven": { + "name": "\u70e4\u7089" + }, + "prewash": { + "name": "\u9884\u6d17" + }, + "pause": { + "name": "\u6682\u505c" + } + }, + "binary_sensor": { + "door_lock": { + "name": "\u95e8\u9501" + }, + "extra_rinse_1": { + "name": "+1 \u6b21\u6f02\u6d17" + }, + "extra_rinse_2": { + "name": "+2 \u6b21\u6f02\u6d17" + }, + "extra_rinse_3": { + "name": "+3 \u6b21\u6f02\u6d17" + }, + "good_night": { + "name": "\u665a\u5b89" + }, + "anti_crease": { + "name": "\u6297\u76b1" + }, + "aqua_plus": { + "name": "Acquaplus" + }, + "spin_speed": { + "name": "\u7529\u5e72" + }, + "programs_dw": { + "name": "\u7a0b\u5e8f" + }, + "programs_ih": { + "name": "\u7a0b\u5e8f" + }, + "programs_ov": { + "name": "\u7a0b\u5e8f" + }, + "programs_td": { + "name": "\u7a0b\u5e8f" + }, + "programs_wm": { + "name": "\u7a0b\u5e8f" + }, + "still_hot": { + "name": "\u4ecd\u7136\u70ed" + }, + "pan_status": { + "name": "\u70e4\u76d8" + }, + "remote_control": { + "name": "\u8fdc\u7a0b\u63a7\u5236" + }, + "rinse_aid": { + "name": "\u6f02\u6d17\u52a9\u5242\u6db2\u4f4d" + }, + "salt_level": { + "name": "\u76d0\u6c34\u5e73" + }, + "door_open": { + "name": "\u95e8\u6253\u5f00" + }, + "connection": { + "name": "\u8fde\u63a5" + } + }, + "number": { + "power_management": { + "name": "\u7535\u6e90\u7ba1\u7406" + }, + "temperature": { + "name": "\u6e29\u5ea6" + }, + "delay_time": { + "name": "\u8ba1\u5212" + }, + "water_hard": { + "name": "\u6c34\u7684\u786c\u5ea6" + }, + "program_duration": { + "name": "\u7a0b\u5e8f\u6301\u7eed\u65f6\u95f4" + }, + "target_temperature": { + "name": "\u76ee\u6807\u6e29\u5ea6" + }, + "rinse_iterations": { + "name": "\u6f02\u6d17\u6b21\u6570" + }, + "wash_time": { + "name": "\u6e05\u6d17\u65f6\u95f4" + } + }, + "button": { + "induction_hob": { + "name": "\u7535\u78c1\u7089" } } } diff --git a/scripts/generate_translation.py b/scripts/generate_translation.py index 976fcc3..2c8518b 100755 --- a/scripts/generate_translation.py +++ b/scripts/generate_translation.py @@ -118,6 +118,83 @@ PROGRAMS = { "programs_wm": "PROGRAMS.WM_WD", } +NAMES = { + "switch": { + "anti_crease": "HDRY_CMD&CTRL.PROGRAM_CYCLE_DETAIL.ANTICREASE_TITLE", + "add_dish": "DW_CMD&CTRL.c.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", + "open_door": "DW_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.OPEN_DOOR", + "three_in_one": "DW_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.THREE_IN_ONE", + "preheat": "OV.PROGRAM_DETAIL.PREHEAT", + "dish_washer": "GLOBALS.APPLIANCES_NAME.DW", + "tumble_dryer": "GLOBALS.APPLIANCES_NAME.TD", + "washing_machine": "GLOBALS.APPLIANCES_NAME.WM", + "washer_dryer": "GLOBALS.APPLIANCES_NAME.WD", + "oven": "GLOBALS.APPLIANCES_NAME.OV", + "prewash": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.PREWASH", + "pause": "GENERAL.PAUSE_PROGRAM", + }, + "binary_sensor": { + "door_lock": "WASHING_CMD&CTRL.CHECK_UP_RESULTS.DOOR_LOCK", + "extra_rinse_1": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.EXTRARINSE1", + "extra_rinse_2": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.EXTRARINSE2", + "extra_rinse_3": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.EXTRARINSE3", + "good_night": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.GOODNIGHT", + "anti_crease": "HDRY_CMD&CTRL.PROGRAM_CYCLE_DETAIL.ANTICREASE_TITLE", + "aqua_plus": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.ACQUAPLUS", + "spin_speed": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.SPINSPEED", + "still_hot": "IH.COILS_STATUS.STILL_HOT", + "pan_status": "IH.COILS_STATUS.PAN", + "remote_control": "OV.SUPPORT.REMOTE_CONTROL", + "rinse_aid": "DW_CMD&CTRL.MAINTENANCE.CONSUMABLE_LEVELS_ICON_RINSE_AID", + "salt_level": "DW_CMD&CTRL.MAINTENANCE.CONSUMABLE_LEVELS_ICON_SALT", + "door_open": "GLOBALS.APPLIANCE_STATUS.DOOR_OPEN", + "connection": "GLOBALS.GENERAL.CONNECT", + }, + "button": { + "induction_hob": "GLOBALS.APPLIANCES_NAME.IH", + }, + "select": { + "dry_levels": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.DRYING", + "spin_speed": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.SPINSPEED", + "temperature": "IH.COMMON.TEMPERATURE", + "programs_dw": "WC.SET_PROGRAM.PROGRAM", + "programs_ih": "WC.SET_PROGRAM.PROGRAM", + "programs_ov": "WC.SET_PROGRAM.PROGRAM", + "programs_td": "WC.SET_PROGRAM.PROGRAM", + "programs_wm": "WC.SET_PROGRAM.PROGRAM", + }, + "sensor": { + "dry_levels": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.DRYING", + "power": "OV.RECIPE_DETAIL.POWER_LEVEL", + "remaining_time": "ENROLLMENT_COMMON.GENERAL.REMAINING_TIME", + "temperature": "IH.COMMON.TEMPERATURE", + "water_efficiency": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_RESULT.WATER_EFFICIENCY", + "water_saving": "STATISTICS.SMART_AI_CYCLE.WATER_SAVING", + "duration": "WASHING_CMD&CTRL.DRAWER_PROGRAM_FILTERS.DURATION", + "target_temperature": "IH.COOKING_DETAIL.TEMPERATURE_TARGETING", + "spin_speed": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.SPINSPEED", + "steam_leve": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.STEAM_LEVEL", + "dirt_level": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.DIRTY_LEVEL", + "program_phases_wm": "WASHING_CMD&CTRL.STATISTICS_GRAPHIC_INSTANT_CONSUMPTION.PHASE", + "program_phases_td": "WASHING_CMD&CTRL.STATISTICS_GRAPHIC_INSTANT_CONSUMPTION.PHASE", + "program_phases_dw": "WASHING_CMD&CTRL.STATISTICS_GRAPHIC_INSTANT_CONSUMPTION.PHASE", + "delay_time": "WASHING_CMD&CTRL.COMMANDS.SCHEDULE", + }, + "number": { + "power_management": "HINTS.COOKING_WITH_INDUCTION.POWER_MANAGEMENT", + "temperature": "IH.COMMON.TEMPERATURE", + "delay_time": "WASHING_CMD&CTRL.COMMANDS.SCHEDULE", + "water_hard": "WASHING_CMD&CTRL.DASHBOARD_MENU_MORE_SETTINGS_WATER.TITLE", + "program_duration": "OV.PROGRAM_DETAIL.PROGRAM_DURATION", + "target_temperature": "IH.COOKING_DETAIL.TEMPERATURE_TARGETING", + "rinse_iterations": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL.DRAWER_HEADER_RINSE", + "wash_time": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL.WASHING_TIME", + }, +} + async def check_translation_files(translations): for language in LANGUAGES: @@ -198,6 +275,10 @@ def main(): for name, program in PROGRAMS.items(): select = old.setdefault("entity", {}).setdefault("select", {}) 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, {}) + select.setdefault(name, {})["name"] = load_key(key, original, fallback) save_json(base_path / f"{language}.json", old) diff --git a/scripts/sensor_docs.py b/scripts/sensor_docs.py index eded777..ec2c7e5 100755 --- a/scripts/sensor_docs.py +++ b/scripts/sensor_docs.py @@ -54,7 +54,8 @@ for entity_type, appliances in entities.items(): key = f"{entity.turn_on_key}` / `{entity.turn_off_key}" else: key = entity.key - attributes = (key, entity.name, entity.icon, entity_type) + translation = bool(entity.translation_key) + attributes = (key, entity.name, entity.icon, entity_type, translation) category = "control" if entity_type in ["switch", "button"] else "sensor" result.setdefault(appliance, {}).setdefault( entity.entity_category or category, [] @@ -65,11 +66,14 @@ for appliance, categories in sorted(result.items()): categories = {k: categories[k] for k in ENTITY_CATEGORY_SORT if k in categories} for category, data in categories.items(): text += f"#### {str(category).capitalize()}s\n" - text += "| Name | Icon | Entity | Key |\n" - text += "| --- | --- | --- | --- |\n" - for key, name, icon, entity_type in sorted(data, key=lambda d: d[1]): - icon = f"`{icon}`" if icon else "" - text += f"| {name} | {icon} | `{entity_type}` | `{key}` |\n" + text += "| Name | Icon | Entity | Key | Auto-Translation |\n" + text += "| --- | --- | --- | --- | --- |\n" + for key, name, icon, entity_type, translation in sorted( + data, key=lambda d: d[1] + ): + icon = f"`{icon.replace('mdi:', '')}`" if icon else "" + translation = "✔" if translation else "❌" + text += f"| {name} | {icon} | `{entity_type}` | `{key}` | {translation} |\n" with open(Path(__file__).parent.parent / "README.md", "r") as file: readme = file.read() -- 2.39.5 From e49841608dcf43e7b751eee45b95339e2f272798 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sun, 23 Apr 2023 03:40:23 +0200 Subject: [PATCH 064/205] Bump version --- custom_components/hon/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 7375099..4e368ca 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -6,6 +6,6 @@ "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn==0.8.1"], - "version": "0.6.1" + "requirements": ["pyhOn==0.8.2"], + "version": "0.7.0-beta.1" } -- 2.39.5 From c89521f169576c7046d6f56010f3cae405310349 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sun, 23 Apr 2023 14:42:55 +0200 Subject: [PATCH 065/205] Bump pyhon version --- custom_components/hon/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 4e368ca..198a90c 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -6,6 +6,6 @@ "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn==0.8.2"], - "version": "0.7.0-beta.1" + "requirements": ["pyhOn==0.8.3"], + "version": "0.7.0-beta.2" } -- 2.39.5 From c60d94a170069941d2bc3eba42611064c55bdb40 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sun, 23 Apr 2023 16:24:30 +0200 Subject: [PATCH 066/205] Improve translations and sensors for td and wm --- README.md | 19 ++++++---- custom_components/hon/binary_sensor.py | 2 ++ custom_components/hon/manifest.json | 4 +-- custom_components/hon/number.py | 6 ++++ custom_components/hon/select.py | 3 +- custom_components/hon/sensor.py | 41 ++++++++++++++++++++++ custom_components/hon/switch.py | 7 ++++ custom_components/hon/translations/cs.json | 34 +++++++++++++++--- custom_components/hon/translations/de.json | 34 +++++++++++++++--- custom_components/hon/translations/el.json | 34 +++++++++++++++--- custom_components/hon/translations/en.json | 34 +++++++++++++++--- custom_components/hon/translations/es.json | 34 +++++++++++++++--- custom_components/hon/translations/fr.json | 34 +++++++++++++++--- custom_components/hon/translations/he.json | 34 +++++++++++++++--- custom_components/hon/translations/hr.json | 34 +++++++++++++++--- custom_components/hon/translations/it.json | 34 +++++++++++++++--- custom_components/hon/translations/nl.json | 34 +++++++++++++++--- custom_components/hon/translations/pl.json | 34 +++++++++++++++--- custom_components/hon/translations/pt.json | 34 +++++++++++++++--- custom_components/hon/translations/ro.json | 34 +++++++++++++++--- custom_components/hon/translations/ru.json | 34 +++++++++++++++--- custom_components/hon/translations/sk.json | 34 +++++++++++++++--- custom_components/hon/translations/sl.json | 34 +++++++++++++++--- custom_components/hon/translations/sr.json | 34 +++++++++++++++--- custom_components/hon/translations/tr.json | 34 +++++++++++++++--- custom_components/hon/translations/zh.json | 34 +++++++++++++++--- scripts/generate_translation.py | 18 +++++++--- 27 files changed, 637 insertions(+), 109 deletions(-) diff --git a/README.md b/README.md index 781a05a..9705a44 100644 --- a/README.md +++ b/README.md @@ -144,7 +144,7 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 | Delay time | `timer-plus` | `number` | `startProgram.delayTime` | ✔ | | Eco Express | `sprout` | `switch` | `startProgram.ecoExpress` | ✔ | | Eco Index | `sprout` | `sensor` | `startProgram.ecoIndex` | ❌ | -| Energy Label | `lightning-bolt-circle` | `sensor` | `startProgram.energyLabel` | ❌ | +| Energy Label | `lightning-bolt-circle` | `sensor` | `startProgram.energyLabel` | ✔ | | Extra Dry | `hair-dryer` | `switch` | `startProgram.extraDry` | ✔ | | Half Load | `fraction-one-half` | `switch` | `startProgram.halfLoad` | ✔ | | Open Door | `door-open` | `switch` | `startProgram.openDoor` | ✔ | @@ -227,16 +227,19 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 | --- | --- | --- | --- | --- | | Anti-Crease | `timer` | `switch` | `startProgram.antiCreaseTime` | ✔ | | Delay time | `timer-plus` | `number` | `startProgram.delayTime` | ✔ | +| Dry Time | | `number` | `startProgram.dryTime` | ✔ | +| Dry Time | `timer` | `select` | `startProgram.dryTimeMM` | ✔ | | Dry level | `hair-dryer` | `select` | `startProgram.dryLevel` | ✔ | +| Energy Label | `lightning-bolt-circle` | `sensor` | `startProgram.energyLabel` | ✔ | | Program | | `select` | `startProgram.program` | ✔ | | Sterilization | `clock-start` | `switch` | `startProgram.sterilizationStatus` | ❌ | +| Suggested Load | `weight-kilogram` | `sensor` | `startProgram.suggestedLoadD` | ✔ | | Temperature level | `thermometer` | `number` | `startProgram.tempLevel` | ✔ | -| Time | `timer` | `select` | `startProgram.dryTimeMM` | ❌ | #### Sensors | Name | Icon | Entity | Key | Auto-Translation | | --- | --- | --- | --- | --- | | Connection | | `binary_sensor` | `attributes.lastConnEvent.category` | ✔ | -| Door | | `binary_sensor` | `doorStatus` | ❌ | +| Door | | `binary_sensor` | `doorStatus` | ✔ | | Dry level | `hair-dryer` | `sensor` | `dryLevel` | ✔ | | Error | `math-log` | `sensor` | `errors` | ✔ | | Machine Status | `information` | `sensor` | `machMode` | ✔ | @@ -257,7 +260,7 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 | --- | --- | --- | --- | --- | | Delay Time | `timer-plus` | `number` | `startProgram.delayTime` | ✔ | | Program | | `select` | `startProgram.program` | ✔ | -| Suggested weight | `weight-kilogram` | `sensor` | `startProgram.weight` | ❌ | +| Suggested weight | `weight-kilogram` | `sensor` | `startProgram.weight` | ✔ | #### Sensors | Name | Icon | Entity | Key | Auto-Translation | | --- | --- | --- | --- | --- | @@ -295,19 +298,23 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 | --- | --- | --- | --- | --- | | Delay Status | `timer-check` | `switch` | `startProgram.delayStatus` | ❌ | | Delay Time | `timer-plus` | `number` | `startProgram.delayTime` | ✔ | +| Energy Label | `lightning-bolt-circle` | `sensor` | `startProgram.energyLabel` | ✔ | +| Keep Fresh | `refresh-circle` | `switch` | `startProgram.autoSoftenerStatus` | ✔ | +| Liquid Detergent Dose | `cup-water` | `sensor` | `startProgram.liquidDetergentDose` | ✔ | | Main Wash Time | `clock-start` | `number` | `startProgram.mainWashTime` | ✔ | +| Powder Detergent Dose | `cup` | `sensor` | `startProgram.powderDetergentDose` | ✔ | | Program | | `select` | `startProgram.program` | ✔ | | Rinse Iterations | `rotate-right` | `number` | `startProgram.rinseIterations` | ✔ | | Soak Prewash Selection | `tshirt-crew` | `switch` | `startProgram.haier_SoakPrewashSelection` | ✔ | | Spin speed | `numeric` | `select` | `startProgram.spinSpeed` | ✔ | -| Suggested weight | `weight-kilogram` | `sensor` | `startProgram.weight` | ❌ | +| Suggested weight | `weight-kilogram` | `sensor` | `startProgram.weight` | ✔ | | Temperature | `thermometer` | `select` | `startProgram.temp` | ✔ | #### Sensors | Name | Icon | Entity | Key | Auto-Translation | | --- | --- | --- | --- | --- | | Current Electricity Used | `lightning-bolt` | `sensor` | `currentElectricityUsed` | ❌ | | Current Water Used | `water` | `sensor` | `currentWaterUsed` | ❌ | -| Door | | `binary_sensor` | `doorStatus` | ❌ | +| Door | | `binary_sensor` | `doorStatus` | ✔ | | Door Lock | | `binary_sensor` | `doorLockStatus` | ✔ | | Error | `math-log` | `sensor` | `errors` | ✔ | | Machine Status | `information` | `sensor` | `machMode` | ✔ | diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index 039123f..680fcc8 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -50,6 +50,7 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { name="Door", device_class=BinarySensorDeviceClass.DOOR, on_value="1", + translation_key="door_open", ), ), "TD": ( @@ -65,6 +66,7 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { name="Door", device_class=BinarySensorDeviceClass.DOOR, on_value="1", + translation_key="door_open", ), ), "WD": ( diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 198a90c..c9b9d6d 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -6,6 +6,6 @@ "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn==0.8.3"], - "version": "0.7.0-beta.2" + "requirements": ["pyhOn==0.8.4"], + "version": "0.7.0-beta.3" } diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index c5a6b13..11d5868 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -57,6 +57,12 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { icon="mdi:thermometer", translation_key="tumbledryertemplevel", ), + NumberEntityDescription( + key="startProgram.dryTime", + name="Dry Time", + entity_category=EntityCategory.CONFIG, + translation_key="dry_time", + ), ), "WD": ( NumberEntityDescription( diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index 445094d..cf6e903 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -51,10 +51,11 @@ SELECTS = { ), SelectEntityDescription( key="startProgram.dryTimeMM", - name="Time", + name="Dry Time", entity_category=EntityCategory.CONFIG, icon="mdi:timer", unit_of_measurement=UnitOfTime.MINUTES, + translation_key="dry_time", ), SelectEntityDescription( key="startProgram.dryLevel", diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index fe9ce56..295f225 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -77,6 +77,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { entity_category=EntityCategory.CONFIG, native_unit_of_measurement=UnitOfMass.KILOGRAMS, icon="mdi:weight-kilogram", + translation_key="suggested_load", ), SensorEntityDescription( key="machMode", @@ -103,6 +104,28 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { native_unit_of_measurement=UnitOfTime.MINUTES, translation_key="spin_speed", ), + SensorEntityDescription( + key="startProgram.energyLabel", + name="Energy Label", + icon="mdi:lightning-bolt-circle", + state_class=SensorStateClass.MEASUREMENT, + entity_category=EntityCategory.CONFIG, + translation_key="energy_label", + ), + SensorEntityDescription( + key="startProgram.liquidDetergentDose", + name="Liquid Detergent Dose", + icon="mdi:cup-water", + entity_category=EntityCategory.CONFIG, + translation_key="det_liquid", + ), + SensorEntityDescription( + key="startProgram.powderDetergentDose", + name="Powder Detergent Dose", + icon="mdi:cup", + entity_category=EntityCategory.CONFIG, + translation_key="det_dust", + ), ), "TD": ( SensorEntityDescription( @@ -154,6 +177,22 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:thermometer", translation_key="tumbledryertemplevel", ), + SensorEntityDescription( + key="startProgram.suggestedLoadD", + name="Suggested Load", + icon="mdi:weight-kilogram", + entity_category=EntityCategory.CONFIG, + native_unit_of_measurement=UnitOfMass.KILOGRAMS, + translation_key="suggested_load", + ), + SensorEntityDescription( + key="startProgram.energyLabel", + name="Energy Label", + icon="mdi:lightning-bolt-circle", + state_class=SensorStateClass.MEASUREMENT, + entity_category=EntityCategory.CONFIG, + translation_key="energy_label", + ), ), "WD": ( SensorEntityDescription( @@ -197,6 +236,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { entity_category=EntityCategory.CONFIG, native_unit_of_measurement=UnitOfMass.KILOGRAMS, icon="mdi:weight-kilogram", + translation_key="suggested_load", ), SensorEntityDescription( key="machMode", @@ -352,6 +392,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:lightning-bolt-circle", state_class=SensorStateClass.MEASUREMENT, entity_category=EntityCategory.CONFIG, + translation_key="energy_label", ), SensorEntityDescription( key="startProgram.remainingTime", diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index d93b034..1647998 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -59,6 +59,13 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { entity_category=EntityCategory.CONFIG, translation_key="prewash", ), + HonSwitchEntityDescription( + key="startProgram.autoSoftenerStatus", + name="Keep Fresh", + entity_category=EntityCategory.CONFIG, + icon="mdi:refresh-circle", + translation_key="keep_fresh", + ), ), "TD": ( HonSwitchEntityDescription( diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index c96cfc2..2ae21ad 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -81,7 +81,7 @@ "14": "P\u0159ipraveno k oble\u010den\u00ed", "15": "Extra such\u00e9" }, - "name": "Su\u0161en\u00ed" + "name": "\u00darove\u0148 su\u0161en\u00ed" }, "anti_crease": { "name": "Proti poma\u010dk\u00e1n\u00ed" @@ -117,7 +117,22 @@ "name": "M\u00edra zne\u010di\u0161t\u011bn\u00ed" }, "delay_time": { - "name": "Napl\u00e1novat" + "name": "Odlo\u017een\u00e9 spu\u0161t\u011bn\u00ed" + }, + "dry_time": { + "name": "Doba su\u0161en\u00ed" + }, + "suggested_load": { + "name": "Kapacita n\u00e1pln\u011b" + }, + "energy_label": { + "name": "Energetick\u00e1 \u00fa\u010dinnost" + }, + "det_dust": { + "name": "Pr\u00e1\u0161ky" + }, + "det_liquid": { + "name": "Tekut\u00e9 prost\u0159edky" } }, "select": { @@ -776,13 +791,16 @@ "14": "P\u0159ipraveno k oble\u010den\u00ed", "15": "Extra such\u00e9" }, - "name": "Su\u0161en\u00ed" + "name": "\u00darove\u0148 su\u0161en\u00ed" }, "spin_speed": { "name": "Odst\u0159e\u010fov\u00e1n\u00ed" }, "temperature": { "name": "Teplota" + }, + "dry_time": { + "name": "Doba su\u0161en\u00ed" } }, "switch": { @@ -830,6 +848,9 @@ }, "pause": { "name": "Pozastavit" + }, + "keep_fresh": { + "name": "Keep Fresh" } }, "binary_sensor": { @@ -891,7 +912,7 @@ "name": "Otev\u0159en\u00e1 dv\u00ed\u0159ka" }, "connection": { - "name": "P\u0159ipojen\u00ed" + "name": "P\u0159ipojen\u00ed spot\u0159ebi\u010de" } }, "number": { @@ -902,7 +923,7 @@ "name": "Teplota" }, "delay_time": { - "name": "Napl\u00e1novat" + "name": "Odlo\u017een\u00e9 spu\u0161t\u011bn\u00ed" }, "water_hard": { "name": "Tvrdost vody" @@ -918,6 +939,9 @@ }, "wash_time": { "name": "D\u00e9lka pran\u00ed" + }, + "dry_time": { + "name": "Doba su\u0161en\u00ed" } }, "button": { diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index d52eb4f..d393552 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -81,7 +81,7 @@ "14": "Bereit zum Anziehen", "15": "Extra trocken" }, - "name": "Trocknen" + "name": "Trocknungsstufe" }, "anti_crease": { "name": "Knitterschutz" @@ -117,7 +117,22 @@ "name": "Verschmutzungsgrad" }, "delay_time": { - "name": "Zeitplan" + "name": "Einschaltverz\u00f6gerung" + }, + "dry_time": { + "name": "Trocknungsdauer" + }, + "suggested_load": { + "name": "Ladekapazit\u00e4t" + }, + "energy_label": { + "name": "Energieeffizienz" + }, + "det_dust": { + "name": "Pulver" + }, + "det_liquid": { + "name": "Fl\u00fcssigwaschmittel" } }, "select": { @@ -776,13 +791,16 @@ "14": "Bereit zum Anziehen", "15": "Extra trocken" }, - "name": "Trocknen" + "name": "Trocknungsstufe" }, "spin_speed": { "name": "Schleudern" }, "temperature": { "name": "Temperatur" + }, + "dry_time": { + "name": "Trocknungsdauer" } }, "switch": { @@ -830,6 +848,9 @@ }, "pause": { "name": "Anhalten" + }, + "keep_fresh": { + "name": "Keep Fresh" } }, "binary_sensor": { @@ -891,7 +912,7 @@ "name": "T\u00fcr offen" }, "connection": { - "name": "Verbinden" + "name": "Ger\u00e4teverbindung" } }, "number": { @@ -902,7 +923,7 @@ "name": "Temperatur" }, "delay_time": { - "name": "Zeitplan" + "name": "Einschaltverz\u00f6gerung" }, "water_hard": { "name": "Wasserh\u00e4rte" @@ -918,6 +939,9 @@ }, "wash_time": { "name": "Waschdauer" + }, + "dry_time": { + "name": "Trocknungsdauer" } }, "button": { diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index e32e40e..0fe000f 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -81,7 +81,7 @@ "14": "\u0395\u03c4\u03bf\u03b9\u03bc\u03bf \u03bd\u03b1 \u03c6\u03bf\u03c1\u03b5\u03b8\u03b5\u03af", "15": "\u0395\u03c0\u03b9\u03c0\u03bb\u03ad\u03bf\u03bd \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1" }, - "name": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1" + "name": "\u0395\u03c0\u03af\u03c0\u03b5\u03b4\u03bf \u03c3\u03c4\u03b5\u03b3\u03bd\u03ce\u03bc\u03b1\u03c4\u03bf\u03c2" }, "anti_crease": { "name": "\u039b\u03b9\u03b3\u03cc\u03c4\u03b5\u03c1\u03b5\u03c2 \u03b6\u03ac\u03c1\u03b5\u03c2" @@ -117,7 +117,22 @@ "name": "\u0395\u03c0\u03af\u03c0\u03b5\u03b4\u03bf \u03b2\u03c1\u03c9\u03bc\u03b9\u03ac\u03c2" }, "delay_time": { - "name": "\u03a0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1" + "name": "\u039a\u03b1\u03b8\u03c5\u03c3\u03c4\u03b5\u03c1\u03b7\u03bc\u03ad\u03bd\u03b7 \u03ad\u03bd\u03b1\u03c1\u03be\u03b7" + }, + "dry_time": { + "name": "\u03a7\u03c1\u03cc\u03bd\u03bf\u03c2 \u03c3\u03c4\u03b5\u03b3\u03bd\u03ce\u03bc\u03b1\u03c4\u03bf\u03c2" + }, + "suggested_load": { + "name": "\u03a7\u03c9\u03c1\u03b7\u03c4\u03b9\u03ba\u03cc\u03c4\u03b7\u03c4\u03b1 \u03c6\u03bf\u03c1\u03c4\u03af\u03bf\u03c5" + }, + "energy_label": { + "name": "\u0395\u03bd\u03b5\u03c1\u03b3\u03b5\u03b9\u03b1\u03ba\u03ae \u03b1\u03c0\u03cc\u03b4\u03bf\u03c3\u03b7" + }, + "det_dust": { + "name": "\u03a3\u03ba\u03cc\u03bd\u03b7" + }, + "det_liquid": { + "name": "\u03a5\u03b3\u03c1\u03cc" } }, "select": { @@ -776,13 +791,16 @@ "14": "\u0395\u03c4\u03bf\u03b9\u03bc\u03bf \u03bd\u03b1 \u03c6\u03bf\u03c1\u03b5\u03b8\u03b5\u03af", "15": "\u0395\u03c0\u03b9\u03c0\u03bb\u03ad\u03bf\u03bd \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1" }, - "name": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1" + "name": "\u0395\u03c0\u03af\u03c0\u03b5\u03b4\u03bf \u03c3\u03c4\u03b5\u03b3\u03bd\u03ce\u03bc\u03b1\u03c4\u03bf\u03c2" }, "spin_speed": { "name": "\u03a3\u03c4\u03cd\u03c8\u03b9\u03bc\u03bf" }, "temperature": { "name": "\u0398\u03b5\u03c1\u03bc\u03bf\u03ba\u03c1\u03b1\u03c3\u03af\u03b1" + }, + "dry_time": { + "name": "\u03a7\u03c1\u03cc\u03bd\u03bf\u03c2 \u03c3\u03c4\u03b5\u03b3\u03bd\u03ce\u03bc\u03b1\u03c4\u03bf\u03c2" } }, "switch": { @@ -830,6 +848,9 @@ }, "pause": { "name": "\u03a0\u03b1\u03cd\u03c3\u03b7" + }, + "keep_fresh": { + "name": "Keep Fresh" } }, "binary_sensor": { @@ -891,7 +912,7 @@ "name": "\u03a0\u03cc\u03c1\u03c4\u03b1 \u03b1\u03bd\u03bf\u03b9\u03c7\u03c4\u03ae" }, "connection": { - "name": "\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7" + "name": "\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae\u03c2" } }, "number": { @@ -902,7 +923,7 @@ "name": "\u0398\u03b5\u03c1\u03bc\u03bf\u03ba\u03c1\u03b1\u03c3\u03af\u03b1" }, "delay_time": { - "name": "\u03a0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1" + "name": "\u039a\u03b1\u03b8\u03c5\u03c3\u03c4\u03b5\u03c1\u03b7\u03bc\u03ad\u03bd\u03b7 \u03ad\u03bd\u03b1\u03c1\u03be\u03b7" }, "water_hard": { "name": "\u03a3\u03ba\u03bb\u03b7\u03c1\u03cc\u03c4\u03b7\u03c4\u03b1 \u03bd\u03b5\u03c1\u03bf\u03cd" @@ -918,6 +939,9 @@ }, "wash_time": { "name": "\u03a7\u03c1\u03cc\u03bd\u03bf\u03c2 \u03c0\u03bb\u03cd\u03c3\u03b7\u03c2" + }, + "dry_time": { + "name": "\u03a7\u03c1\u03cc\u03bd\u03bf\u03c2 \u03c3\u03c4\u03b5\u03b3\u03bd\u03ce\u03bc\u03b1\u03c4\u03bf\u03c2" } }, "button": { diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 1b43ee3..89cec15 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -147,7 +147,7 @@ "14": "Ready to wear", "15": "Extra dry" }, - "name": "Drying Type" + "name": "Drying level" }, "power": { "name": "Power level" @@ -180,7 +180,22 @@ "name": "Dirt level" }, "delay_time": { - "name": "Delay start" + "name": "Delay Start" + }, + "dry_time": { + "name": "Drying time" + }, + "suggested_load": { + "name": "Load capacity" + }, + "energy_label": { + "name": "Energy efficiency" + }, + "det_dust": { + "name": "Powder detergent" + }, + "det_liquid": { + "name": "Liquid detergent" } }, "switch": { @@ -228,6 +243,9 @@ }, "pause": { "name": "Pause" + }, + "keep_fresh": { + "name": "Keep Fresh" } }, "select": { @@ -243,7 +261,7 @@ "14": "Ready to wear", "15": "Extra dry" }, - "name": "Drying Type" + "name": "Drying level" }, "programs_dw": { "state": { @@ -901,6 +919,9 @@ }, "temperature": { "name": "Temperature" + }, + "dry_time": { + "name": "Drying time" } }, "binary_sensor": { @@ -962,7 +983,7 @@ "name": "Door open" }, "connection": { - "name": "Connection" + "name": "Appliance connection" } }, "number": { @@ -973,7 +994,7 @@ "name": "Temperature" }, "delay_time": { - "name": "Delay start" + "name": "Delay Start" }, "water_hard": { "name": "Water hardness" @@ -989,6 +1010,9 @@ }, "wash_time": { "name": "Washing intensity" + }, + "dry_time": { + "name": "Drying time" } }, "button": { diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index b3c9cd7..accd86c 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -81,7 +81,7 @@ "14": "Listo para llevar", "15": "Extraseco" }, - "name": "Secado" + "name": "Nivel de secado" }, "anti_crease": { "name": "Antiarrugas" @@ -117,7 +117,22 @@ "name": "Nivel de suciedad" }, "delay_time": { - "name": "Programar" + "name": "Inicio Diferido" + }, + "dry_time": { + "name": "Tiempo de secado" + }, + "suggested_load": { + "name": "Capacidad de carga" + }, + "energy_label": { + "name": "Eficiencia energ\u00e9tica" + }, + "det_dust": { + "name": "Polvo" + }, + "det_liquid": { + "name": "L\u00edquido" } }, "select": { @@ -776,13 +791,16 @@ "14": "Listo para llevar", "15": "Extraseco" }, - "name": "Secado" + "name": "Nivel de secado" }, "spin_speed": { "name": "Centrifugado" }, "temperature": { "name": "Temperatura" + }, + "dry_time": { + "name": "Tiempo de secado" } }, "switch": { @@ -830,6 +848,9 @@ }, "pause": { "name": "Pausa" + }, + "keep_fresh": { + "name": "Keep Fresh" } }, "binary_sensor": { @@ -891,7 +912,7 @@ "name": "Puerta abierta" }, "connection": { - "name": "Conexi\u00f3n" + "name": "Conexi\u00f3n del electrodom\u00e9stico" } }, "number": { @@ -902,7 +923,7 @@ "name": "Temperatura" }, "delay_time": { - "name": "Programar" + "name": "Inicio Diferido" }, "water_hard": { "name": "Dureza del agua" @@ -918,6 +939,9 @@ }, "wash_time": { "name": "Tiempo de lavado" + }, + "dry_time": { + "name": "Tiempo de secado" } }, "button": { diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index 6707124..0f8c285 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -81,7 +81,7 @@ "14": "Pr\u00eat \u00e0 porter", "15": "Extra sec" }, - "name": "S\u00e9chage" + "name": "Niveau de s\u00e9chage" }, "anti_crease": { "name": "Anti-pli" @@ -117,7 +117,22 @@ "name": "Niveau de salet\u00e9" }, "delay_time": { - "name": "Planifiez" + "name": "D\u00e9marrage Diff\u00e9r\u00e9" + }, + "dry_time": { + "name": "Temps de s\u00e9chage" + }, + "suggested_load": { + "name": "Capacit\u00e9 de charge" + }, + "energy_label": { + "name": "Efficacit\u00e9 \u00e9nerg\u00e9tique" + }, + "det_dust": { + "name": "Poudre" + }, + "det_liquid": { + "name": "Liquide" } }, "select": { @@ -776,13 +791,16 @@ "14": "Pr\u00eat \u00e0 porter", "15": "Extra sec" }, - "name": "S\u00e9chage" + "name": "Niveau de s\u00e9chage" }, "spin_speed": { "name": "Essorage" }, "temperature": { "name": "Temp\u00e9rature" + }, + "dry_time": { + "name": "Temps de s\u00e9chage" } }, "switch": { @@ -830,6 +848,9 @@ }, "pause": { "name": "Pause" + }, + "keep_fresh": { + "name": "Garder la fra\u00eecheur" } }, "binary_sensor": { @@ -891,7 +912,7 @@ "name": "Porte ouverte" }, "connection": { - "name": "Connexion" + "name": "Connexion de l\u2019appareil" } }, "number": { @@ -902,7 +923,7 @@ "name": "Temp\u00e9rature" }, "delay_time": { - "name": "Planifiez" + "name": "D\u00e9marrage Diff\u00e9r\u00e9" }, "water_hard": { "name": "Duret\u00e9 de l'eau" @@ -918,6 +939,9 @@ }, "wash_time": { "name": "Dur\u00e9e de lavage" + }, + "dry_time": { + "name": "Temps de s\u00e9chage" } }, "button": { diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index d5bf4bb..2e97feb 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -81,7 +81,7 @@ "14": "Ready to wear", "15": "\u05d9\u05d1\u05e9 \u05d1\u05de\u05d9\u05d5\u05d7\u05d3" }, - "name": "\u05d9\u05b4\u05d1\u05bc\u05d5\u05bc\u05e9\u05c1" + "name": "\u05e8\u05de\u05ea \u05d9\u05d9\u05d1\u05d5\u05e9" }, "anti_crease": { "name": "Anticrease" @@ -117,7 +117,22 @@ "name": "\u05e8\u05de\u05ea \u05e2\u05e4\u05e8" }, "delay_time": { - "name": "\u05dc\u05d5\u05d7 \u05d6\u05de\u05e0\u05d9\u05dd" + "name": "Delay Start" + }, + "dry_time": { + "name": "\u05d6\u05de\u05df \u05d9\u05d9\u05d1\u05d5\u05e9" + }, + "suggested_load": { + "name": "\u05d9\u05db\u05d5\u05dc\u05ea \u05e2\u05d5\u05de\u05e1" + }, + "energy_label": { + "name": "\u05d7\u05e1\u05db\u05d5\u05df \u05d1\u05d0\u05e0\u05e8\u05d2\u05d9\u05d4" + }, + "det_dust": { + "name": "Powder detergent" + }, + "det_liquid": { + "name": "Liquid detergent" } }, "select": { @@ -374,13 +389,16 @@ "14": "Ready to wear", "15": "\u05d9\u05d1\u05e9 \u05d1\u05de\u05d9\u05d5\u05d7\u05d3" }, - "name": "\u05d9\u05b4\u05d1\u05bc\u05d5\u05bc\u05e9\u05c1" + "name": "\u05e8\u05de\u05ea \u05d9\u05d9\u05d1\u05d5\u05e9" }, "spin_speed": { "name": "\u05e1\u05d9\u05d1\u05d5\u05d1" }, "temperature": { "name": "Temperature" + }, + "dry_time": { + "name": "\u05d6\u05de\u05df \u05d9\u05d9\u05d1\u05d5\u05e9" } }, "switch": { @@ -428,6 +446,9 @@ }, "pause": { "name": "Pause" + }, + "keep_fresh": { + "name": "Keep Fresh" } }, "binary_sensor": { @@ -489,7 +510,7 @@ "name": "Door open" }, "connection": { - "name": "\u05d7\u05d9\u05d1\u05d5\u05e8" + "name": "Appliance connection" } }, "number": { @@ -500,7 +521,7 @@ "name": "Temperature" }, "delay_time": { - "name": "\u05dc\u05d5\u05d7 \u05d6\u05de\u05e0\u05d9\u05dd" + "name": "Delay Start" }, "water_hard": { "name": "\u05e7\u05e9\u05d9\u05d5\u05ea \u05de\u05d9\u05dd" @@ -516,6 +537,9 @@ }, "wash_time": { "name": "Washing intensity" + }, + "dry_time": { + "name": "\u05d6\u05de\u05df \u05d9\u05d9\u05d1\u05d5\u05e9" } }, "button": { diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index 53dfea6..540f693 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -81,7 +81,7 @@ "14": "Spremno za no\u0161enje", "15": "Potpuno suho" }, - "name": "Su\u0161enje" + "name": "Stupanj suho\u0107e" }, "anti_crease": { "name": "Spre\u010davanje gu\u017evanja" @@ -117,7 +117,22 @@ "name": "Stupanj zaprljanosti" }, "delay_time": { - "name": "Zaka\u017ei" + "name": "Odgoda po\u010detka" + }, + "dry_time": { + "name": "Trajanje su\u0161enja" + }, + "suggested_load": { + "name": "Kapacitet rublja" + }, + "energy_label": { + "name": "Energetska u\u010dinkovitost" + }, + "det_dust": { + "name": "Pra\u0161ak" + }, + "det_liquid": { + "name": "Teku\u0107ina" } }, "select": { @@ -776,13 +791,16 @@ "14": "Spremno za no\u0161enje", "15": "Potpuno suho" }, - "name": "Su\u0161enje" + "name": "Stupanj suho\u0107e" }, "spin_speed": { "name": "Centrifuga" }, "temperature": { "name": "Temperatura" + }, + "dry_time": { + "name": "Trajanje su\u0161enja" } }, "switch": { @@ -830,6 +848,9 @@ }, "pause": { "name": "Stanka" + }, + "keep_fresh": { + "name": "Keep Fresh" } }, "binary_sensor": { @@ -891,7 +912,7 @@ "name": "Otvorena vrata" }, "connection": { - "name": "Povezivanje" + "name": "Priklju\u010dak ure\u0111aja" } }, "number": { @@ -902,7 +923,7 @@ "name": "Temperatura" }, "delay_time": { - "name": "Zaka\u017ei" + "name": "Odgoda po\u010detka" }, "water_hard": { "name": "Tvrdo\u0107a vode" @@ -918,6 +939,9 @@ }, "wash_time": { "name": "Vrijeme pranja" + }, + "dry_time": { + "name": "Trajanje su\u0161enja" } }, "button": { diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index 0cde1ea..c0c8fe2 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -137,7 +137,7 @@ "14": "Pronto da indossare", "15": "Extra asciutto" }, - "name": "Tipo Asciugatura" + "name": "Livello Asciugatura" }, "anti_crease": { "name": "Antipieghe " @@ -173,7 +173,22 @@ "name": "Livello di sporco" }, "delay_time": { - "name": "Ritarda avvio" + "name": "Utilizzo nelle ore notturne" + }, + "dry_time": { + "name": "Tempo asciugatura" + }, + "suggested_load": { + "name": "Capacit\u00e0 di carico" + }, + "energy_label": { + "name": "Efficienza energetica" + }, + "det_dust": { + "name": "Detersivo in polvere" + }, + "det_liquid": { + "name": "Detersivo liquido" } }, "select": { @@ -832,13 +847,16 @@ "14": "Pronto da indossare", "15": "Extra asciutto" }, - "name": "Tipo Asciugatura" + "name": "Livello Asciugatura" }, "spin_speed": { "name": "Centrifuga" }, "temperature": { "name": "Temperatura" + }, + "dry_time": { + "name": "Tempo asciugatura" } }, "switch": { @@ -886,6 +904,9 @@ }, "pause": { "name": "Pausa" + }, + "keep_fresh": { + "name": "Keep Fresh" } }, "binary_sensor": { @@ -947,7 +968,7 @@ "name": "Porta aperta" }, "connection": { - "name": "Connessione" + "name": "Connessione dell'elettrodomestico" } }, "number": { @@ -958,7 +979,7 @@ "name": "Temperatura" }, "delay_time": { - "name": "Ritarda avvio" + "name": "Utilizzo nelle ore notturne" }, "water_hard": { "name": "Durezza acqua" @@ -974,6 +995,9 @@ }, "wash_time": { "name": "Intensit\u00e0 di lavaggio" + }, + "dry_time": { + "name": "Tempo asciugatura" } }, "button": { diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index 0daa84d..f6a6c99 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -81,7 +81,7 @@ "14": "Klaar om te dragen", "15": "Extra droog" }, - "name": "Drogen" + "name": "Droogniveau" }, "anti_crease": { "name": "Kreukherstellend" @@ -117,7 +117,22 @@ "name": "Vuilheid" }, "delay_time": { - "name": "Plannen" + "name": "Vertraag Start" + }, + "dry_time": { + "name": "Droogtijd" + }, + "suggested_load": { + "name": "Laadvermogen" + }, + "energy_label": { + "name": "Energie-effici\u00ebntie" + }, + "det_dust": { + "name": "Poeder" + }, + "det_liquid": { + "name": "Vloeibaar" } }, "select": { @@ -776,13 +791,16 @@ "14": "Klaar om te dragen", "15": "Extra droog" }, - "name": "Drogen" + "name": "Droogniveau" }, "spin_speed": { "name": "Centrifugeren" }, "temperature": { "name": "Temperatuur" + }, + "dry_time": { + "name": "Droogtijd" } }, "switch": { @@ -830,6 +848,9 @@ }, "pause": { "name": "Pauze" + }, + "keep_fresh": { + "name": "Keep Fresh" } }, "binary_sensor": { @@ -891,7 +912,7 @@ "name": "Deur open" }, "connection": { - "name": "Verbinding" + "name": "Het apparaat verbinden" } }, "number": { @@ -902,7 +923,7 @@ "name": "Temperatuur" }, "delay_time": { - "name": "Plannen" + "name": "Vertraag Start" }, "water_hard": { "name": "Waterhardheid" @@ -918,6 +939,9 @@ }, "wash_time": { "name": "Wastijd" + }, + "dry_time": { + "name": "Droogtijd" } }, "button": { diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index 4c2cd00..be111e0 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -81,7 +81,7 @@ "14": "Gotowe do w\u0142o\u017cenia", "15": "Ekstra suchy" }, - "name": "Suszenie" + "name": "Poziom suszenia" }, "anti_crease": { "name": "Przeciw gnieceniu" @@ -117,7 +117,22 @@ "name": "Stopie\u0144 zabrudzenia" }, "delay_time": { - "name": "Zaplanuj" + "name": "Op\u00f3\u017aniony Start" + }, + "dry_time": { + "name": "Czas suszenia" + }, + "suggested_load": { + "name": "\u0141adowno\u015b\u0107" + }, + "energy_label": { + "name": "Efektywno\u015b\u0107 energetyczna" + }, + "det_dust": { + "name": "Proszek" + }, + "det_liquid": { + "name": "P\u0142yn" } }, "select": { @@ -776,13 +791,16 @@ "14": "Gotowe do w\u0142o\u017cenia", "15": "Ekstra suchy" }, - "name": "Suszenie" + "name": "Poziom suszenia" }, "spin_speed": { "name": "Wirowanie" }, "temperature": { "name": "Temperatura" + }, + "dry_time": { + "name": "Czas suszenia" } }, "switch": { @@ -830,6 +848,9 @@ }, "pause": { "name": "Pauza" + }, + "keep_fresh": { + "name": "Keep Fresh" } }, "binary_sensor": { @@ -891,7 +912,7 @@ "name": "Drzwi otwarte" }, "connection": { - "name": "Po\u0142\u0105czenie" + "name": "Pod\u0142\u0105czenie urz\u0105dzenia" } }, "number": { @@ -902,7 +923,7 @@ "name": "Temperatura" }, "delay_time": { - "name": "Zaplanuj" + "name": "Op\u00f3\u017aniony Start" }, "water_hard": { "name": "Twardo\u015b\u0107 wody" @@ -918,6 +939,9 @@ }, "wash_time": { "name": "Czas prania" + }, + "dry_time": { + "name": "Czas suszenia" } }, "button": { diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index 97c67b4..64571eb 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -81,7 +81,7 @@ "14": "Pronto a usar", "15": "Extra seco" }, - "name": "Secagem" + "name": "N\u00edvel de secagem" }, "anti_crease": { "name": "Anti-vincos" @@ -117,7 +117,22 @@ "name": "N\u00edvel de sujidade" }, "delay_time": { - "name": "Agendar" + "name": "In\u00edcio adiado" + }, + "dry_time": { + "name": "Tempo de secagem" + }, + "suggested_load": { + "name": "Capacidade de carga" + }, + "energy_label": { + "name": "Efici\u00eancia energ\u00e9tica" + }, + "det_dust": { + "name": "P\u00f3" + }, + "det_liquid": { + "name": "L\u00edquido" } }, "select": { @@ -776,13 +791,16 @@ "14": "Pronto a usar", "15": "Extra seco" }, - "name": "Secagem" + "name": "N\u00edvel de secagem" }, "spin_speed": { "name": "Centrifugar" }, "temperature": { "name": "Temperatura" + }, + "dry_time": { + "name": "Tempo de secagem" } }, "switch": { @@ -830,6 +848,9 @@ }, "pause": { "name": "Pausa" + }, + "keep_fresh": { + "name": "Keep Fresh" } }, "binary_sensor": { @@ -891,7 +912,7 @@ "name": "Porta aberta" }, "connection": { - "name": "Conex\u00e3o" + "name": "Liga\u00e7\u00e3o do aparelho" } }, "number": { @@ -902,7 +923,7 @@ "name": "Temperatura" }, "delay_time": { - "name": "Agendar" + "name": "In\u00edcio adiado" }, "water_hard": { "name": "Dureza da \u00e1gua" @@ -918,6 +939,9 @@ }, "wash_time": { "name": "Tempo de lavagem" + }, + "dry_time": { + "name": "Tempo de secagem" } }, "button": { diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index 36669d9..cde6326 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -81,7 +81,7 @@ "14": "Gata de purtat", "15": "Uscare suplimentar\u0103" }, - "name": "Uscare" + "name": "Nivel de uscare" }, "anti_crease": { "name": "Anti\u0219ifonare" @@ -117,7 +117,22 @@ "name": "Nivel de murd\u0103rie" }, "delay_time": { - "name": "Programare" + "name": "Pornire \u00eent\u00e2rziat\u0103" + }, + "dry_time": { + "name": "Timp de uscare" + }, + "suggested_load": { + "name": "Capacitate de \u00eenc\u0103rcare" + }, + "energy_label": { + "name": "Eficien\u021b\u0103 energetic\u0103" + }, + "det_dust": { + "name": "Pudr\u0103" + }, + "det_liquid": { + "name": "Lichid" } }, "select": { @@ -776,13 +791,16 @@ "14": "Gata de purtat", "15": "Uscare suplimentar\u0103" }, - "name": "Uscare" + "name": "Nivel de uscare" }, "spin_speed": { "name": "Stoarcere" }, "temperature": { "name": "Temperatur\u0103" + }, + "dry_time": { + "name": "Timp de uscare" } }, "switch": { @@ -830,6 +848,9 @@ }, "pause": { "name": "Pauz\u0103" + }, + "keep_fresh": { + "name": "Keep Fresh" } }, "binary_sensor": { @@ -891,7 +912,7 @@ "name": "U\u0219\u0103 deschis\u0103" }, "connection": { - "name": "Conectare" + "name": "Conectarea aparatului" } }, "number": { @@ -902,7 +923,7 @@ "name": "Temperatur\u0103" }, "delay_time": { - "name": "Programare" + "name": "Pornire \u00eent\u00e2rziat\u0103" }, "water_hard": { "name": "Duritate ap\u0103" @@ -918,6 +939,9 @@ }, "wash_time": { "name": "Timp de sp\u0103lare" + }, + "dry_time": { + "name": "Timp de uscare" } }, "button": { diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index 568a5b3..fbdcee6 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -81,7 +81,7 @@ "14": "\u0413\u043e\u0442\u043e\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0434\u0435\u0432\u0430\u043d\u0438\u044f", "15": "\u042d\u043a\u0441\u0442\u0440\u0430 \u0441\u0443\u0448\u043a\u0430" }, - "name": "\u0421\u0443\u0448\u043a\u0430" + "name": "\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u0441\u0443\u0445\u043e\u0441\u0442\u0438" }, "anti_crease": { "name": "\u041f\u0440\u043e\u0442\u0438\u0432\u043e\u0441\u043c\u0438\u043d\u0430\u043d\u0438\u0435" @@ -117,7 +117,22 @@ "name": "\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u0437\u0430\u0433\u0440\u044f\u0437\u043d\u0435\u043d\u0438\u044f" }, "delay_time": { - "name": "\u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c" + "name": "\u041e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u043f\u0443\u0441\u043a" + }, + "dry_time": { + "name": "\u0412\u0440\u0435\u043c\u044f \u0441\u0443\u0448\u043a\u0438" + }, + "suggested_load": { + "name": "\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430" + }, + "energy_label": { + "name": "\u042d\u043d\u0435\u0440\u0433\u043e\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c" + }, + "det_dust": { + "name": "\u0421\u0442\u0438\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u043e\u0448\u043e\u043a" + }, + "det_liquid": { + "name": "\u0416\u0438\u0434\u043a\u043e\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e" } }, "select": { @@ -776,13 +791,16 @@ "14": "\u0413\u043e\u0442\u043e\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0434\u0435\u0432\u0430\u043d\u0438\u044f", "15": "\u042d\u043a\u0441\u0442\u0440\u0430 \u0441\u0443\u0448\u043a\u0430" }, - "name": "\u0421\u0443\u0448\u043a\u0430" + "name": "\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u0441\u0443\u0445\u043e\u0441\u0442\u0438" }, "spin_speed": { "name": "\u041e\u0442\u0436\u0438\u043c" }, "temperature": { "name": "\u0422\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430" + }, + "dry_time": { + "name": "\u0412\u0440\u0435\u043c\u044f \u0441\u0443\u0448\u043a\u0438" } }, "switch": { @@ -830,6 +848,9 @@ }, "pause": { "name": "\u041f\u0430\u0443\u0437\u0430" + }, + "keep_fresh": { + "name": "Keep Fresh (\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u0432\u0435\u0436\u0435\u0441\u0442\u0438)" } }, "binary_sensor": { @@ -891,7 +912,7 @@ "name": "\u0414\u0432\u0435\u0440\u0446\u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u0430" }, "connection": { - "name": "\u0421\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435" + "name": "\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f" } }, "number": { @@ -902,7 +923,7 @@ "name": "\u0422\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430" }, "delay_time": { - "name": "\u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c" + "name": "\u041e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u043f\u0443\u0441\u043a" }, "water_hard": { "name": "\u0416\u0435\u0441\u0442\u043a\u043e\u0441\u0442\u044c \u0432\u043e\u0434\u044b" @@ -918,6 +939,9 @@ }, "wash_time": { "name": "\u0412\u0440\u0435\u043c\u044f \u0441\u0442\u0438\u0440\u043a\u0438" + }, + "dry_time": { + "name": "\u0412\u0440\u0435\u043c\u044f \u0441\u0443\u0448\u043a\u0438" } }, "button": { diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index 9e43fea..5199fc6 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -81,7 +81,7 @@ "14": "Hotov\u00e9 na nosenie", "15": "Extra su\u0161enie" }, - "name": "Su\u0161enie" + "name": "\u00darove\u0148 su\u0161enia" }, "anti_crease": { "name": "Proti pokr\u010deniu" @@ -117,7 +117,22 @@ "name": "\u00darove\u0148 zne\u010distenia" }, "delay_time": { - "name": "Napl\u00e1nova\u0165" + "name": "Odlo\u017een\u00fd \u0161tart" + }, + "dry_time": { + "name": "\u010cas su\u0161enia" + }, + "suggested_load": { + "name": "Kapacita naplnenia" + }, + "energy_label": { + "name": "Energetick\u00e1 \u00fa\u010dinnos\u0165" + }, + "det_dust": { + "name": "Pr\u00e1\u0161ok" + }, + "det_liquid": { + "name": "Kvapaln\u00e9 pracie prostriedky" } }, "select": { @@ -776,13 +791,16 @@ "14": "Hotov\u00e9 na nosenie", "15": "Extra su\u0161enie" }, - "name": "Su\u0161enie" + "name": "\u00darove\u0148 su\u0161enia" }, "spin_speed": { "name": "Odstre\u010fovanie" }, "temperature": { "name": "Teplota" + }, + "dry_time": { + "name": "\u010cas su\u0161enia" } }, "switch": { @@ -830,6 +848,9 @@ }, "pause": { "name": "Pozastavi\u0165" + }, + "keep_fresh": { + "name": "Keep Fresh" } }, "binary_sensor": { @@ -891,7 +912,7 @@ "name": "Otvoren\u00e9 dvere" }, "connection": { - "name": "Pripojenie" + "name": "Pripojenie spotrebi\u010da" } }, "number": { @@ -902,7 +923,7 @@ "name": "Teplota" }, "delay_time": { - "name": "Napl\u00e1nova\u0165" + "name": "Odlo\u017een\u00fd \u0161tart" }, "water_hard": { "name": "Tvrdos\u0165 vody" @@ -918,6 +939,9 @@ }, "wash_time": { "name": "\u010cas prania" + }, + "dry_time": { + "name": "\u010cas su\u0161enia" } }, "button": { diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index 54b043d..c8c4193 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -81,7 +81,7 @@ "14": "Pripravljeno za uporabo", "15": "Zelo suho" }, - "name": "Su\u0161enje" + "name": "Stopnja su\u0161enja" }, "anti_crease": { "name": "Proti me\u010dkanju" @@ -117,7 +117,22 @@ "name": "Stopnja umazanije" }, "delay_time": { - "name": "Urnik" + "name": "S funkcijo Zamik vklopa je mo\u017eno odlo\u017eiti za\u010detek su\u0161ilnega cikla od 1 do 24 ur. Na zaslonu se prika\u017ee izbrana zakasnitev. Da bi videli kako se zmanj\u0161uje iz ure v uro, pritisnite ZA\u010cETEK. Na ta na\u010din bo perilo suho takrat, ko boste to \u017eeleli, in zagnali cikel, ko vam to najbolj ustreza, celo pono\u010di." + }, + "dry_time": { + "name": "\u010cas su\u0161enja" + }, + "suggested_load": { + "name": "Zmogljivost pranja" + }, + "energy_label": { + "name": "Energijska u\u010dinkovitost" + }, + "det_dust": { + "name": "Pra\u0161ek" + }, + "det_liquid": { + "name": "Teko\u010dina" } }, "select": { @@ -776,13 +791,16 @@ "14": "Pripravljeno za uporabo", "15": "Zelo suho" }, - "name": "Su\u0161enje" + "name": "Stopnja su\u0161enja" }, "spin_speed": { "name": "O\u017eemanje" }, "temperature": { "name": "Temperatura" + }, + "dry_time": { + "name": "\u010cas su\u0161enja" } }, "switch": { @@ -830,6 +848,9 @@ }, "pause": { "name": "Premor" + }, + "keep_fresh": { + "name": "Keep Fresh" } }, "binary_sensor": { @@ -891,7 +912,7 @@ "name": "Door open" }, "connection": { - "name": "Connection" + "name": "Povezava aparata" } }, "number": { @@ -902,7 +923,7 @@ "name": "Temperatura" }, "delay_time": { - "name": "Urnik" + "name": "S funkcijo Zamik vklopa je mo\u017eno odlo\u017eiti za\u010detek su\u0161ilnega cikla od 1 do 24 ur. Na zaslonu se prika\u017ee izbrana zakasnitev. Da bi videli kako se zmanj\u0161uje iz ure v uro, pritisnite ZA\u010cETEK. Na ta na\u010din bo perilo suho takrat, ko boste to \u017eeleli, in zagnali cikel, ko vam to najbolj ustreza, celo pono\u010di." }, "water_hard": { "name": "Trdota vode" @@ -918,6 +939,9 @@ }, "wash_time": { "name": "\u010cas pranja" + }, + "dry_time": { + "name": "\u010cas su\u0161enja" } }, "button": { diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index f94bf56..63f021e 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -81,7 +81,7 @@ "14": "Spremno za no\u0161enje", "15": "Ekstra suvo" }, - "name": "Su\u0161enje" + "name": "Nivo su\u0161enja" }, "anti_crease": { "name": "Protiv gu\u017evanja" @@ -117,7 +117,22 @@ "name": "Nivo zaprljanosti" }, "delay_time": { - "name": "Raspored" + "name": "Odlo\u017eeni start" + }, + "dry_time": { + "name": "Vreme su\u0161enja" + }, + "suggested_load": { + "name": "Kapacitet punjenja" + }, + "energy_label": { + "name": "Energetska efikasnost" + }, + "det_dust": { + "name": "Pra\u0161ak" + }, + "det_liquid": { + "name": "Te\u010dni" } }, "select": { @@ -776,13 +791,16 @@ "14": "Spremno za no\u0161enje", "15": "Ekstra suvo" }, - "name": "Su\u0161enje" + "name": "Nivo su\u0161enja" }, "spin_speed": { "name": "Centrifuga" }, "temperature": { "name": "Temperatura" + }, + "dry_time": { + "name": "Vreme su\u0161enja" } }, "switch": { @@ -830,6 +848,9 @@ }, "pause": { "name": "Pauza" + }, + "keep_fresh": { + "name": "Keep Fresh" } }, "binary_sensor": { @@ -891,7 +912,7 @@ "name": "Vrata su otvorena" }, "connection": { - "name": "Konekcija" + "name": "Povezivanje ure\u0111aja" } }, "number": { @@ -902,7 +923,7 @@ "name": "Temperatura" }, "delay_time": { - "name": "Raspored" + "name": "Odlo\u017eeni start" }, "water_hard": { "name": "Tvrdo\u0107a vode" @@ -918,6 +939,9 @@ }, "wash_time": { "name": "Vreme pranja" + }, + "dry_time": { + "name": "Vreme su\u0161enja" } }, "button": { diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index bc58eed..f7108e1 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -81,7 +81,7 @@ "14": "Giyilmeye haz\u0131r", "15": "Ekstra kurutma" }, - "name": "Kurutma" + "name": "Kurutma seviyesi" }, "anti_crease": { "name": "K\u0131r\u0131\u015f\u0131k a\u00e7ma" @@ -117,7 +117,22 @@ "name": "Kir seviyesi" }, "delay_time": { - "name": "Planla" + "name": "Gecikmeli Ba\u015flatma" + }, + "dry_time": { + "name": "Kurutma zaman\u0131" + }, + "suggested_load": { + "name": "Y\u00fck kapasitesi" + }, + "energy_label": { + "name": "Enerji verimlili\u011fi" + }, + "det_dust": { + "name": "Toz" + }, + "det_liquid": { + "name": "S\u0131v\u0131" } }, "select": { @@ -776,13 +791,16 @@ "14": "Giyilmeye haz\u0131r", "15": "Ekstra kurutma" }, - "name": "Kurutma" + "name": "Kurutma seviyesi" }, "spin_speed": { "name": "S\u0131kma" }, "temperature": { "name": "S\u0131cakl\u0131k" + }, + "dry_time": { + "name": "Kurutma zaman\u0131" } }, "switch": { @@ -830,6 +848,9 @@ }, "pause": { "name": "Duraklat" + }, + "keep_fresh": { + "name": "Keep Fresh" } }, "binary_sensor": { @@ -891,7 +912,7 @@ "name": "Kap\u0131 a\u00e7\u0131k" }, "connection": { - "name": "Ba\u011flant\u0131" + "name": "Cihaz ba\u011flant\u0131s\u0131" } }, "number": { @@ -902,7 +923,7 @@ "name": "S\u0131cakl\u0131k" }, "delay_time": { - "name": "Planla" + "name": "Gecikmeli Ba\u015flatma" }, "water_hard": { "name": "Su sertli\u011fi" @@ -918,6 +939,9 @@ }, "wash_time": { "name": "Y\u0131kama s\u00fcresi" + }, + "dry_time": { + "name": "Kurutma zaman\u0131" } }, "button": { diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index 193e5ea..69b0dbb 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -81,7 +81,7 @@ "14": "\u53ef\u7a7f", "15": "\u7279\u5e72" }, - "name": "\u70d8\u5e72" + "name": "\u70d8\u5e72\u6c34\u5e73" }, "anti_crease": { "name": "\u6297\u76b1" @@ -117,7 +117,22 @@ "name": "\u810f\u6c61\u7a0b\u5ea6" }, "delay_time": { - "name": "\u8ba1\u5212" + "name": "\u5ef6\u65f6\u542f\u52a8" + }, + "dry_time": { + "name": "\u70d8\u5e72\u65f6\u95f4" + }, + "suggested_load": { + "name": "\u8d1f\u8f7d\u80fd\u529b" + }, + "energy_label": { + "name": "\u80fd\u6548" + }, + "det_dust": { + "name": "\u6d17\u8863\u7c89" + }, + "det_liquid": { + "name": "\u6d17\u8863\u6db2" } }, "select": { @@ -776,13 +791,16 @@ "14": "\u53ef\u7a7f", "15": "\u7279\u5e72" }, - "name": "\u70d8\u5e72" + "name": "\u70d8\u5e72\u6c34\u5e73" }, "spin_speed": { "name": "\u7529\u5e72" }, "temperature": { "name": "\u6e29\u5ea6" + }, + "dry_time": { + "name": "\u70d8\u5e72\u65f6\u95f4" } }, "switch": { @@ -830,6 +848,9 @@ }, "pause": { "name": "\u6682\u505c" + }, + "keep_fresh": { + "name": "Keep Fresh" } }, "binary_sensor": { @@ -891,7 +912,7 @@ "name": "\u95e8\u6253\u5f00" }, "connection": { - "name": "\u8fde\u63a5" + "name": "\u8bbe\u5907\u8fde\u63a5" } }, "number": { @@ -902,7 +923,7 @@ "name": "\u6e29\u5ea6" }, "delay_time": { - "name": "\u8ba1\u5212" + "name": "\u5ef6\u65f6\u542f\u52a8" }, "water_hard": { "name": "\u6c34\u7684\u786c\u5ea6" @@ -918,6 +939,9 @@ }, "wash_time": { "name": "\u6e05\u6d17\u65f6\u95f4" + }, + "dry_time": { + "name": "\u70d8\u5e72\u65f6\u95f4" } }, "button": { diff --git a/scripts/generate_translation.py b/scripts/generate_translation.py index 2c8518b..647c2d3 100755 --- a/scripts/generate_translation.py +++ b/scripts/generate_translation.py @@ -135,6 +135,7 @@ NAMES = { "oven": "GLOBALS.APPLIANCES_NAME.OV", "prewash": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.PREWASH", "pause": "GENERAL.PAUSE_PROGRAM", + "keep_fresh": "GLOBALS.APPLIANCE_STATUS.TUMBLING", }, "binary_sensor": { "door_lock": "WASHING_CMD&CTRL.CHECK_UP_RESULTS.DOOR_LOCK", @@ -151,13 +152,14 @@ NAMES = { "rinse_aid": "DW_CMD&CTRL.MAINTENANCE.CONSUMABLE_LEVELS_ICON_RINSE_AID", "salt_level": "DW_CMD&CTRL.MAINTENANCE.CONSUMABLE_LEVELS_ICON_SALT", "door_open": "GLOBALS.APPLIANCE_STATUS.DOOR_OPEN", - "connection": "GLOBALS.GENERAL.CONNECT", + "connection": "ENROLLMENT_COMMON.HEADER_NAME.STEP_APPLIANCE_CONNECTION", }, "button": { "induction_hob": "GLOBALS.APPLIANCES_NAME.IH", }, "select": { - "dry_levels": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.DRYING", + "dry_levels": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_LEVEL", + "dry_time": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_TIME", "spin_speed": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.SPINSPEED", "temperature": "IH.COMMON.TEMPERATURE", "programs_dw": "WC.SET_PROGRAM.PROGRAM", @@ -167,7 +169,8 @@ NAMES = { "programs_wm": "WC.SET_PROGRAM.PROGRAM", }, "sensor": { - "dry_levels": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.DRYING", + "dry_levels": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_LEVEL", + "dry_time": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_TIME", "power": "OV.RECIPE_DETAIL.POWER_LEVEL", "remaining_time": "ENROLLMENT_COMMON.GENERAL.REMAINING_TIME", "temperature": "IH.COMMON.TEMPERATURE", @@ -181,17 +184,22 @@ NAMES = { "program_phases_wm": "WASHING_CMD&CTRL.STATISTICS_GRAPHIC_INSTANT_CONSUMPTION.PHASE", "program_phases_td": "WASHING_CMD&CTRL.STATISTICS_GRAPHIC_INSTANT_CONSUMPTION.PHASE", "program_phases_dw": "WASHING_CMD&CTRL.STATISTICS_GRAPHIC_INSTANT_CONSUMPTION.PHASE", - "delay_time": "WASHING_CMD&CTRL.COMMANDS.SCHEDULE", + "delay_time": "HINTS.TIPS_TIME_ENERGY_SAVING.TIPS_USE_AT_NIGHT_TITLE", + "suggested_load": "WASHING_CMD&CTRL.DRAWER_PROGRAM_FILTERS.LOAD_CAPACITY", + "energy_label": "WASHING_CMD&CTRL.DRAWER_PROGRAM_FILTERS.ENERGY_EFFICIENCY", + "det_dust": "HUBS.WIDGET.STAINS_WIDGET.STAINS.SUGGESTED_DET_DUST", + "det_liquid": "HUBS.WIDGET.STAINS_WIDGET.STAINS.SUGGESTED_DET_LIQUID", }, "number": { "power_management": "HINTS.COOKING_WITH_INDUCTION.POWER_MANAGEMENT", "temperature": "IH.COMMON.TEMPERATURE", - "delay_time": "WASHING_CMD&CTRL.COMMANDS.SCHEDULE", + "delay_time": "HINTS.TIPS_TIME_ENERGY_SAVING.TIPS_USE_AT_NIGHT_TITLE", "water_hard": "WASHING_CMD&CTRL.DASHBOARD_MENU_MORE_SETTINGS_WATER.TITLE", "program_duration": "OV.PROGRAM_DETAIL.PROGRAM_DURATION", "target_temperature": "IH.COOKING_DETAIL.TEMPERATURE_TARGETING", "rinse_iterations": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL.DRAWER_HEADER_RINSE", "wash_time": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL.WASHING_TIME", + "dry_time": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_TIME", }, } -- 2.39.5 From 1143c47fd390402c823c01dd7921e9bbd48de839 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sun, 23 Apr 2023 19:29:50 +0200 Subject: [PATCH 067/205] Bump pyhon version --- custom_components/hon/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index c9b9d6d..fa7f7fc 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -6,6 +6,6 @@ "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn==0.8.4"], - "version": "0.7.0-beta.3" + "requirements": ["pyhOn==0.8.5"], + "version": "0.7.0-beta.4" } -- 2.39.5 From 616f7babdba31f590c3b55befa914e53a0047278 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sun, 23 Apr 2023 20:04:19 +0200 Subject: [PATCH 068/205] Faster refresh when changing configs --- custom_components/hon/number.py | 2 +- custom_components/hon/select.py | 2 +- custom_components/hon/switch.py | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index 11d5868..ee14e91 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -180,7 +180,7 @@ class HonNumberEntity(HonEntity, NumberEntity): async def async_set_native_value(self, value: float) -> None: self._device.settings[self.entity_description.key].value = value - await self.coordinator.async_request_refresh() + await self.coordinator.async_refresh() @callback def _handle_coordinator_update(self): diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index cf6e903..8d614e1 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -147,7 +147,7 @@ class HonSelectEntity(HonEntity, SelectEntity): async def async_select_option(self, option: str) -> None: self._device.settings[self.entity_description.key].value = option - await self.coordinator.async_request_refresh() + await self.coordinator.async_refresh() @callback def _handle_coordinator_update(self): diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 1647998..277e5ab 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -253,6 +253,7 @@ class HonSwitchEntity(HonEntity, SwitchEntity): setting.max if isinstance(setting, HonParameterRange) else "1" ) self.async_write_ha_state() + await self.coordinator.async_refresh() else: await self._device.commands[self.entity_description.turn_on_key].send() @@ -263,5 +264,6 @@ class HonSwitchEntity(HonEntity, SwitchEntity): setting.min if isinstance(setting, HonParameterRange) else "0" ) self.async_write_ha_state() + await self.coordinator.async_refresh() else: await self._device.commands[self.entity_description.turn_off_key].send() -- 2.39.5 From 8c1bba2468d40682125229027a3772785a78d473 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sun, 23 Apr 2023 20:18:00 +0200 Subject: [PATCH 069/205] Bump pyhon version --- custom_components/hon/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index fa7f7fc..ec53fad 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -6,6 +6,6 @@ "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn==0.8.5"], - "version": "0.7.0-beta.4" + "requirements": ["pyhOn==0.8.6"], + "version": "0.7.0-beta.5" } -- 2.39.5 From f1e16312ff4701b6059a58f0f23bf824b0e2fe60 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 24 Apr 2023 04:36:14 +0200 Subject: [PATCH 070/205] Fix some bugs for hoover appliances, fix #31 --- README.md | 1 + custom_components/hon/manifest.json | 4 ++-- custom_components/hon/number.py | 8 +++++++- custom_components/hon/sensor.py | 15 ++++++++++++--- custom_components/hon/switch.py | 7 +++++++ 5 files changed, 29 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 9705a44..dfcb877 100644 --- a/README.md +++ b/README.md @@ -226,6 +226,7 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 | Name | Icon | Entity | Key | Auto-Translation | | --- | --- | --- | --- | --- | | Anti-Crease | `timer` | `switch` | `startProgram.antiCreaseTime` | ✔ | +| Anti-Crease | `timer` | `switch` | `startProgram.anticrease` | ✔ | | Delay time | `timer-plus` | `number` | `startProgram.delayTime` | ✔ | | Dry Time | | `number` | `startProgram.dryTime` | ✔ | | Dry Time | `timer` | `select` | `startProgram.dryTimeMM` | ✔ | diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index ec53fad..08b0332 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -6,6 +6,6 @@ "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn==0.8.6"], - "version": "0.7.0-beta.5" + "requirements": ["pyhOn==0.9.0"], + "version": "0.7.0-beta.6" } diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index ee14e91..c80f5fe 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -1,6 +1,8 @@ from __future__ import annotations from pyhon import Hon +from pyhon.parameter.base import HonParameter +from pyhon.parameter.fixed import HonParameterFixed from pyhon.parameter.range import HonParameterRange from homeassistant.components.number import ( @@ -179,7 +181,11 @@ class HonNumberEntity(HonEntity, NumberEntity): return self._device.get(self.entity_description.key) async def async_set_native_value(self, value: float) -> None: - self._device.settings[self.entity_description.key].value = value + setting = self._device.settings[self.entity_description.key] + if not ( + isinstance(setting, HonParameter) or isinstance(setting, HonParameterFixed) + ): + setting.value = value await self.coordinator.async_refresh() @callback diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 295f225..eedcdfd 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -182,6 +182,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { name="Suggested Load", icon="mdi:weight-kilogram", entity_category=EntityCategory.CONFIG, + state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=UnitOfMass.KILOGRAMS, translation_key="suggested_load", ), @@ -444,7 +445,9 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non if descriptions := SENSORS.get(device.appliance_type): for description in descriptions: - if not device.get(description.key): + if not device.get(description.key) and not device.settings.get( + description.key + ): _LOGGER.warning( "[%s] Can't setup %s", device.appliance_type, description.key ) @@ -467,9 +470,15 @@ class HonSensorEntity(HonEntity, SensorEntity): @property def native_value(self) -> StateType: - return self._device.get(self.entity_description.key, "") + value = self._device.get(self.entity_description.key, "") + if not value and self.entity_description.state_class is not None: + return 0 + return value @callback def _handle_coordinator_update(self): - self._attr_native_value = self._device.get(self.entity_description.key, "") + value = self._device.get(self.entity_description.key, "") + if not value and self.entity_description.state_class is not None: + self._attr_native_value = 0 + self._attr_native_value = value self.async_write_ha_state() diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 277e5ab..7b76dc9 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -97,6 +97,13 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { icon="mdi:timer", translation_key="anti_crease", ), + HonSwitchEntityDescription( + key="startProgram.anticrease", + name="Anti-Crease", + entity_category=EntityCategory.CONFIG, + icon="mdi:timer", + translation_key="anti_crease", + ), ), "OV": ( HonSwitchEntityDescription( -- 2.39.5 From 5bff5d214314b74099eeb04c1c4969824e5a4f79 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 24 Apr 2023 21:38:05 +0200 Subject: [PATCH 071/205] Add more translation keys --- README.md | 330 ++++++++++----------- custom_components/hon/binary_sensor.py | 6 +- custom_components/hon/sensor.py | 15 +- custom_components/hon/switch.py | 1 + custom_components/hon/translations/bg.json | 2 +- custom_components/hon/translations/cs.json | 33 +++ custom_components/hon/translations/de.json | 33 +++ custom_components/hon/translations/el.json | 33 +++ custom_components/hon/translations/en.json | 35 ++- custom_components/hon/translations/es.json | 33 +++ custom_components/hon/translations/fr.json | 33 +++ custom_components/hon/translations/he.json | 33 +++ custom_components/hon/translations/hr.json | 33 +++ custom_components/hon/translations/it.json | 35 ++- custom_components/hon/translations/nl.json | 33 +++ custom_components/hon/translations/pl.json | 33 +++ custom_components/hon/translations/pt.json | 33 +++ custom_components/hon/translations/ro.json | 33 +++ custom_components/hon/translations/ru.json | 33 +++ custom_components/hon/translations/sk.json | 33 +++ custom_components/hon/translations/sl.json | 33 +++ custom_components/hon/translations/sr.json | 33 +++ custom_components/hon/translations/tr.json | 33 +++ custom_components/hon/translations/zh.json | 33 +++ scripts/generate_translation.py | 30 ++ scripts/sensor_docs.py | 14 +- 26 files changed, 845 insertions(+), 184 deletions(-) diff --git a/README.md b/README.md index dfcb877..3d6bc30 100644 --- a/README.md +++ b/README.md @@ -134,195 +134,195 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 ### Dish washer #### Controls -| Name | Icon | Entity | Key | Auto-Translation | -| --- | --- | --- | --- | --- | -| Dish Washer | `dishwasher` | `switch` | `startProgram` / `stopProgram` | ✔ | +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Dish Washer | `dishwasher` | `switch` | `startProgram` / `stopProgram` | #### Configs -| Name | Icon | Entity | Key | Auto-Translation | -| --- | --- | --- | --- | --- | -| Add Dish | `silverware-fork-knife` | `switch` | `startProgram.addDish` | ✔ | -| Delay time | `timer-plus` | `number` | `startProgram.delayTime` | ✔ | -| Eco Express | `sprout` | `switch` | `startProgram.ecoExpress` | ✔ | -| Eco Index | `sprout` | `sensor` | `startProgram.ecoIndex` | ❌ | -| Energy Label | `lightning-bolt-circle` | `sensor` | `startProgram.energyLabel` | ✔ | -| Extra Dry | `hair-dryer` | `switch` | `startProgram.extraDry` | ✔ | -| Half Load | `fraction-one-half` | `switch` | `startProgram.halfLoad` | ✔ | -| Open Door | `door-open` | `switch` | `startProgram.openDoor` | ✔ | -| Program | | `select` | `startProgram.program` | ✔ | -| Temperature | `thermometer` | `sensor` | `startProgram.temp` | ✔ | -| Three in One | `numeric-3-box-outline` | `switch` | `startProgram.threeInOne` | ✔ | -| Time | `timer` | `sensor` | `startProgram.remainingTime` | ✔ | -| Water Efficiency | `water` | `sensor` | `startProgram.waterEfficiency` | ✔ | -| Water Saving | `water-percent` | `sensor` | `startProgram.waterSaving` | ✔ | -| Water hard | `water` | `number` | `startProgram.waterHard` | ✔ | +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Add Dish | `silverware-fork-knife` | `switch` | `startProgram.addDish` | +| Delay time | `timer-plus` | `number` | `startProgram.delayTime` | +| Eco Express | `sprout` | `switch` | `startProgram.ecoExpress` | +| Eco Index | `sprout` | `sensor` | `startProgram.ecoIndex` | +| Energy Label | `lightning-bolt-circle` | `sensor` | `startProgram.energyLabel` | +| Extra Dry | `hair-dryer` | `switch` | `startProgram.extraDry` | +| Half Load | `fraction-one-half` | `switch` | `startProgram.halfLoad` | +| Open Door | `door-open` | `switch` | `startProgram.openDoor` | +| Program | | `select` | `startProgram.program` | +| Temperature | `thermometer` | `sensor` | `startProgram.temp` | +| Three in One | `numeric-3-box-outline` | `switch` | `startProgram.threeInOne` | +| Time | `timer` | `sensor` | `startProgram.remainingTime` | +| Water Efficiency | `water` | `sensor` | `startProgram.waterEfficiency` | +| Water Saving | `water-percent` | `sensor` | `startProgram.waterSaving` | +| Water hard | `water` | `number` | `startProgram.waterHard` | #### Sensors -| Name | Icon | Entity | Key | Auto-Translation | -| --- | --- | --- | --- | --- | -| Connection | | `binary_sensor` | `attributes.lastConnEvent.category` | ✔ | -| Door | | `binary_sensor` | `doorStatus` | ✔ | -| Error | `math-log` | `sensor` | `errors` | ✔ | -| Machine Status | `information` | `sensor` | `machMode` | ✔ | -| Program Phase | `washing-machine` | `sensor` | `prPhase` | ✔ | -| Remaining Time | `timer` | `sensor` | `remainingTimeMM` | ✔ | -| Rinse Aid | `spray-bottle` | `binary_sensor` | `rinseAidStatus` | ✔ | -| Salt | `shaker-outline` | `binary_sensor` | `saltStatus` | ✔ | +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Connection | | `binary_sensor` | `attributes.lastConnEvent.category` | +| Door | | `binary_sensor` | `doorStatus` | +| Error | `math-log` | `sensor` | `errors` | +| Machine Status | `information` | `sensor` | `machMode` | +| Program Phase | `washing-machine` | `sensor` | `prPhase` | +| Remaining Time | `timer` | `sensor` | `remainingTimeMM` | +| Rinse Aid | `spray-bottle` | `binary_sensor` | `rinseAidStatus` | +| Salt | `shaker-outline` | `binary_sensor` | `saltStatus` | ### Hob #### Controls -| Name | Icon | Entity | Key | Auto-Translation | -| --- | --- | --- | --- | --- | -| Start Program | `pot-steam` | `button` | `startProgram` | ✔ | +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Start Program | `pot-steam` | `button` | `startProgram` | #### Configs -| Name | Icon | Entity | Key | Auto-Translation | -| --- | --- | --- | --- | --- | -| Power Management | `timelapse` | `number` | `startProgram.powerManagement` | ✔ | -| Program | | `select` | `startProgram.program` | ✔ | -| Temperature | `thermometer` | `number` | `startProgram.temp` | ✔ | +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Power Management | `timelapse` | `number` | `startProgram.powerManagement` | +| Program | | `select` | `startProgram.program` | +| Temperature | `thermometer` | `number` | `startProgram.temp` | #### Sensors -| Name | Icon | Entity | Key | Auto-Translation | -| --- | --- | --- | --- | --- | -| Connection | `wifi` | `binary_sensor` | `attributes.lastConnEvent.category` | ✔ | -| Error | `math-log` | `sensor` | `errors` | ❌ | -| Hob Lock | | `binary_sensor` | `hobLockStatus` | ❌ | -| Hot Status | | `binary_sensor` | `hotStatus` | ✔ | -| On | `power-cycle` | `binary_sensor` | `attributes.parameters.onOffStatus` | ❌ | -| Pan Status | `pot-mix` | `binary_sensor` | `panStatus` | ✔ | -| Power | `lightning-bolt` | `sensor` | `power` | ✔ | -| Remaining Time | `timer` | `sensor` | `remainingTimeMM` | ✔ | -| Remote Control | `remote` | `binary_sensor` | `attributes.parameters.remoteCtrValid` | ✔ | -| Temperature | `thermometer` | `sensor` | `temp` | ✔ | +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Connection | `wifi` | `binary_sensor` | `attributes.lastConnEvent.category` | +| Error | `math-log` | `sensor` | `errors` | +| Hob Lock | | `binary_sensor` | `hobLockStatus` | +| Hot Status | | `binary_sensor` | `hotStatus` | +| On | `power-cycle` | `binary_sensor` | `attributes.parameters.onOffStatus` | +| Pan Status | `pot-mix` | `binary_sensor` | `panStatus` | +| Power | `lightning-bolt` | `sensor` | `power` | +| Remaining Time | `timer` | `sensor` | `remainingTimeMM` | +| Remote Control | `remote` | `binary_sensor` | `attributes.parameters.remoteCtrValid` | +| Temperature | `thermometer` | `sensor` | `temp` | ### Oven #### Controls -| Name | Icon | Entity | Key | Auto-Translation | -| --- | --- | --- | --- | --- | -| Oven | `toaster-oven` | `switch` | `startProgram` / `stopProgram` | ✔ | +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Oven | `toaster-oven` | `switch` | `startProgram` / `stopProgram` | #### Configs -| Name | Icon | Entity | Key | Auto-Translation | -| --- | --- | --- | --- | --- | -| Delay time | `timer-plus` | `number` | `startProgram.delayTime` | ✔ | -| Preheat | `thermometer-chevron-up` | `switch` | `startProgram.preheatStatus` | ✔ | -| Program | | `select` | `startProgram.program` | ✔ | -| Program Duration | `timelapse` | `number` | `startProgram.prTime` | ✔ | -| Target Temperature | `thermometer` | `number` | `startProgram.tempSel` | ✔ | +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Delay time | `timer-plus` | `number` | `startProgram.delayTime` | +| Preheat | `thermometer-chevron-up` | `switch` | `startProgram.preheatStatus` | +| Program | | `select` | `startProgram.program` | +| Program Duration | `timelapse` | `number` | `startProgram.prTime` | +| Target Temperature | `thermometer` | `number` | `startProgram.tempSel` | #### Sensors -| Name | Icon | Entity | Key | Auto-Translation | -| --- | --- | --- | --- | --- | -| Connection | `wifi` | `binary_sensor` | `attributes.lastConnEvent.category` | ✔ | -| On | `power-cycle` | `binary_sensor` | `attributes.parameters.onOffStatus` | ❌ | -| Remaining Time | `timer` | `sensor` | `remainingTimeMM` | ✔ | -| Remote Control | `remote` | `binary_sensor` | `attributes.parameters.remoteCtrValid` | ✔ | -| Start Time | `clock-start` | `sensor` | `delayTime` | ✔ | -| Temperature | `thermometer` | `sensor` | `temp` | ✔ | -| Temperature Selected | `thermometer` | `sensor` | `tempSel` | ✔ | +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Connection | `wifi` | `binary_sensor` | `attributes.lastConnEvent.category` | +| On | `power-cycle` | `binary_sensor` | `attributes.parameters.onOffStatus` | +| Remaining Time | `timer` | `sensor` | `remainingTimeMM` | +| Remote Control | `remote` | `binary_sensor` | `attributes.parameters.remoteCtrValid` | +| Start Time | `clock-start` | `sensor` | `delayTime` | +| Temperature | `thermometer` | `sensor` | `temp` | +| Temperature Selected | `thermometer` | `sensor` | `tempSel` | ### Tumble dryer #### Controls -| Name | Icon | Entity | Key | Auto-Translation | -| --- | --- | --- | --- | --- | -| Pause Tumble Dryer | `pause` | `switch` | `pauseProgram` / `resumeProgram` | ✔ | -| Tumble Dryer | `tumble-dryer` | `switch` | `startProgram` / `stopProgram` | ✔ | +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Pause Tumble Dryer | `pause` | `switch` | `pauseProgram` / `resumeProgram` | +| Tumble Dryer | `tumble-dryer` | `switch` | `startProgram` / `stopProgram` | #### Configs -| Name | Icon | Entity | Key | Auto-Translation | -| --- | --- | --- | --- | --- | -| Anti-Crease | `timer` | `switch` | `startProgram.antiCreaseTime` | ✔ | -| Anti-Crease | `timer` | `switch` | `startProgram.anticrease` | ✔ | -| Delay time | `timer-plus` | `number` | `startProgram.delayTime` | ✔ | -| Dry Time | | `number` | `startProgram.dryTime` | ✔ | -| Dry Time | `timer` | `select` | `startProgram.dryTimeMM` | ✔ | -| Dry level | `hair-dryer` | `select` | `startProgram.dryLevel` | ✔ | -| Energy Label | `lightning-bolt-circle` | `sensor` | `startProgram.energyLabel` | ✔ | -| Program | | `select` | `startProgram.program` | ✔ | -| Sterilization | `clock-start` | `switch` | `startProgram.sterilizationStatus` | ❌ | -| Suggested Load | `weight-kilogram` | `sensor` | `startProgram.suggestedLoadD` | ✔ | -| Temperature level | `thermometer` | `number` | `startProgram.tempLevel` | ✔ | +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Anti-Crease | `timer` | `switch` | `startProgram.antiCreaseTime` | +| Anti-Crease | `timer` | `switch` | `startProgram.anticrease` | +| Delay time | `timer-plus` | `number` | `startProgram.delayTime` | +| Dry Time | | `number` | `startProgram.dryTime` | +| Dry Time | `timer` | `select` | `startProgram.dryTimeMM` | +| Dry level | `hair-dryer` | `select` | `startProgram.dryLevel` | +| Energy Label | `lightning-bolt-circle` | `sensor` | `startProgram.energyLabel` | +| Program | | `select` | `startProgram.program` | +| Sterilization | `clock-start` | `switch` | `startProgram.sterilizationStatus` | +| Suggested Load | `weight-kilogram` | `sensor` | `startProgram.suggestedLoadD` | +| Temperature level | `thermometer` | `number` | `startProgram.tempLevel` | #### Sensors -| Name | Icon | Entity | Key | Auto-Translation | -| --- | --- | --- | --- | --- | -| Connection | | `binary_sensor` | `attributes.lastConnEvent.category` | ✔ | -| Door | | `binary_sensor` | `doorStatus` | ✔ | -| Dry level | `hair-dryer` | `sensor` | `dryLevel` | ✔ | -| Error | `math-log` | `sensor` | `errors` | ✔ | -| Machine Status | `information` | `sensor` | `machMode` | ✔ | -| Program | `tumble-dryer` | `sensor` | `prCode` | ✔ | -| Program Phase | `washing-machine` | `sensor` | `prPhase` | ✔ | -| Remaining Time | `timer` | `sensor` | `remainingTimeMM` | ✔ | -| Start Time | `clock-start` | `sensor` | `delayTime` | ✔ | -| Temperature level | `thermometer` | `sensor` | `tempLevel` | ✔ | +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Connection | | `binary_sensor` | `attributes.lastConnEvent.category` | +| Door | | `binary_sensor` | `doorStatus` | +| Dry level | `hair-dryer` | `sensor` | `dryLevel` | +| Error | `math-log` | `sensor` | `errors` | +| Machine Status | `information` | `sensor` | `machMode` | +| Program | `tumble-dryer` | `sensor` | `prCode` | +| Program Phase | `washing-machine` | `sensor` | `prPhase` | +| Remaining Time | `timer` | `sensor` | `remainingTimeMM` | +| Start Time | `clock-start` | `sensor` | `delayTime` | +| Temperature level | `thermometer` | `sensor` | `tempLevel` | ### Washer dryer #### Controls -| Name | Icon | Entity | Key | Auto-Translation | -| --- | --- | --- | --- | --- | -| Pause Washing Machine | `pause` | `switch` | `pauseProgram` / `resumeProgram` | ✔ | -| Washing Machine | `washing-machine` | `switch` | `startProgram` / `stopProgram` | ✔ | +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Pause Washing Machine | `pause` | `switch` | `pauseProgram` / `resumeProgram` | +| Washing Machine | `washing-machine` | `switch` | `startProgram` / `stopProgram` | #### Configs -| Name | Icon | Entity | Key | Auto-Translation | -| --- | --- | --- | --- | --- | -| Delay Time | `timer-plus` | `number` | `startProgram.delayTime` | ✔ | -| Program | | `select` | `startProgram.program` | ✔ | -| Suggested weight | `weight-kilogram` | `sensor` | `startProgram.weight` | ✔ | +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Delay Time | `timer-plus` | `number` | `startProgram.delayTime` | +| Program | | `select` | `startProgram.program` | +| Suggested weight | `weight-kilogram` | `sensor` | `startProgram.weight` | #### Sensors -| Name | Icon | Entity | Key | Auto-Translation | -| --- | --- | --- | --- | --- | -| Acqua Plus | | `binary_sensor` | `acquaplus` | ✔ | -| Anti-Crease | | `binary_sensor` | `anticrease` | ✔ | -| Current Electricity Used | `lightning-bolt` | `sensor` | `currentElectricityUsed` | ❌ | -| Current Program | `tumble-dryer` | `sensor` | `prCode` | ❌ | -| Current Temperature | `thermometer` | `sensor` | `temp` | ✔ | -| Current Water Used | `water` | `sensor` | `currentWaterUsed` | ❌ | -| Dirt level | `liquid-spot` | `sensor` | `dirtyLevel` | ✔ | -| Dry level | `hair-dryer` | `sensor` | `dryLevel` | ✔ | -| Extra Rinse 1 | | `binary_sensor` | `extraRinse1` | ✔ | -| Extra Rinse 2 | | `binary_sensor` | `extraRinse2` | ✔ | -| Extra Rinse 3 | | `binary_sensor` | `extraRinse3` | ✔ | -| Good Night Mode | | `binary_sensor` | `goodNight` | ✔ | -| Machine Status | `information` | `sensor` | `machMode` | ✔ | -| Pre Wash | | `binary_sensor` | `startProgram.prewash` | ❌ | -| Program Phase | `washing-machine` | `sensor` | `prPhase` | ✔ | -| Remaining Time | `timer` | `sensor` | `remainingTimeMM` | ✔ | -| Remote Control | `remote` | `binary_sensor` | `attributes.lastConnEvent.category` | ✔ | -| Spin Speed | `fast-forward-outline` | `sensor` | `spinSpeed` | ✔ | -| Steam level | `smoke` | `sensor` | `steamLevel` | ✔ | -| Total Power | | `sensor` | `totalElectricityUsed` | ❌ | -| Total Wash Cycle | `counter` | `sensor` | `totalWashCycle` | ❌ | -| Total Water | | `sensor` | `totalWaterUsed` | ❌ | +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Acqua Plus | | `binary_sensor` | `acquaplus` | +| Anti-Crease | | `binary_sensor` | `anticrease` | +| Current Electricity Used | `lightning-bolt` | `sensor` | `currentElectricityUsed` | +| Current Program | `tumble-dryer` | `sensor` | `prCode` | +| Current Temperature | `thermometer` | `sensor` | `temp` | +| Current Water Used | `water` | `sensor` | `currentWaterUsed` | +| Dirt level | `liquid-spot` | `sensor` | `dirtyLevel` | +| Dry level | `hair-dryer` | `sensor` | `dryLevel` | +| Extra Rinse 1 | | `binary_sensor` | `extraRinse1` | +| Extra Rinse 2 | | `binary_sensor` | `extraRinse2` | +| Extra Rinse 3 | | `binary_sensor` | `extraRinse3` | +| Good Night Mode | | `binary_sensor` | `goodNight` | +| Machine Status | `information` | `sensor` | `machMode` | +| Pre Wash | | `binary_sensor` | `startProgram.prewash` | +| Program Phase | `washing-machine` | `sensor` | `prPhase` | +| Remaining Time | `timer` | `sensor` | `remainingTimeMM` | +| Remote Control | `remote` | `binary_sensor` | `attributes.lastConnEvent.category` | +| Spin Speed | `fast-forward-outline` | `sensor` | `spinSpeed` | +| Steam level | `smoke` | `sensor` | `steamLevel` | +| Total Power | | `sensor` | `totalElectricityUsed` | +| Total Wash Cycle | `counter` | `sensor` | `totalWashCycle` | +| Total Water | | `sensor` | `totalWaterUsed` | ### Washing machine #### Controls -| Name | Icon | Entity | Key | Auto-Translation | -| --- | --- | --- | --- | --- | -| Pause Washing Machine | `pause` | `switch` | `pauseProgram` / `resumeProgram` | ✔ | -| Washing Machine | `washing-machine` | `switch` | `startProgram` / `stopProgram` | ✔ | +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Pause Washing Machine | `pause` | `switch` | `pauseProgram` / `resumeProgram` | +| Washing Machine | `washing-machine` | `switch` | `startProgram` / `stopProgram` | #### Configs -| Name | Icon | Entity | Key | Auto-Translation | -| --- | --- | --- | --- | --- | -| Delay Status | `timer-check` | `switch` | `startProgram.delayStatus` | ❌ | -| Delay Time | `timer-plus` | `number` | `startProgram.delayTime` | ✔ | -| Energy Label | `lightning-bolt-circle` | `sensor` | `startProgram.energyLabel` | ✔ | -| Keep Fresh | `refresh-circle` | `switch` | `startProgram.autoSoftenerStatus` | ✔ | -| Liquid Detergent Dose | `cup-water` | `sensor` | `startProgram.liquidDetergentDose` | ✔ | -| Main Wash Time | `clock-start` | `number` | `startProgram.mainWashTime` | ✔ | -| Powder Detergent Dose | `cup` | `sensor` | `startProgram.powderDetergentDose` | ✔ | -| Program | | `select` | `startProgram.program` | ✔ | -| Rinse Iterations | `rotate-right` | `number` | `startProgram.rinseIterations` | ✔ | -| Soak Prewash Selection | `tshirt-crew` | `switch` | `startProgram.haier_SoakPrewashSelection` | ✔ | -| Spin speed | `numeric` | `select` | `startProgram.spinSpeed` | ✔ | -| Suggested weight | `weight-kilogram` | `sensor` | `startProgram.weight` | ✔ | -| Temperature | `thermometer` | `select` | `startProgram.temp` | ✔ | +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Delay Status | `timer-check` | `switch` | `startProgram.delayStatus` | +| Delay Time | `timer-plus` | `number` | `startProgram.delayTime` | +| Energy Label | `lightning-bolt-circle` | `sensor` | `startProgram.energyLabel` | +| Keep Fresh | `refresh-circle` | `switch` | `startProgram.autoSoftenerStatus` | +| Liquid Detergent Dose | `cup-water` | `sensor` | `startProgram.liquidDetergentDose` | +| Main Wash Time | `clock-start` | `number` | `startProgram.mainWashTime` | +| Powder Detergent Dose | `cup` | `sensor` | `startProgram.powderDetergentDose` | +| Program | | `select` | `startProgram.program` | +| Rinse Iterations | `rotate-right` | `number` | `startProgram.rinseIterations` | +| Soak Prewash Selection | `tshirt-crew` | `switch` | `startProgram.haier_SoakPrewashSelection` | +| Spin speed | `numeric` | `select` | `startProgram.spinSpeed` | +| Suggested weight | `weight-kilogram` | `sensor` | `startProgram.weight` | +| Temperature | `thermometer` | `select` | `startProgram.temp` | #### Sensors -| Name | Icon | Entity | Key | Auto-Translation | -| --- | --- | --- | --- | --- | -| Current Electricity Used | `lightning-bolt` | `sensor` | `currentElectricityUsed` | ❌ | -| Current Water Used | `water` | `sensor` | `currentWaterUsed` | ❌ | -| Door | | `binary_sensor` | `doorStatus` | ✔ | -| Door Lock | | `binary_sensor` | `doorLockStatus` | ✔ | -| Error | `math-log` | `sensor` | `errors` | ✔ | -| Machine Status | `information` | `sensor` | `machMode` | ✔ | -| Program Phase | `washing-machine` | `sensor` | `prPhase` | ✔ | -| Remaining Time | `timer` | `sensor` | `remainingTimeMM` | ✔ | -| Remote Control | `remote` | `binary_sensor` | `attributes.lastConnEvent.category` | ✔ | -| Spin Speed | `speedometer` | `sensor` | `spinSpeed` | ✔ | -| Total Power | | `sensor` | `totalElectricityUsed` | ❌ | -| Total Wash Cycle | `counter` | `sensor` | `totalWashCycle` | ❌ | -| Total Water | | `sensor` | `totalWaterUsed` | ❌ | +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Current Electricity Used | `lightning-bolt` | `sensor` | `currentElectricityUsed` | +| Current Water Used | `water` | `sensor` | `currentWaterUsed` | +| Door | | `binary_sensor` | `doorStatus` | +| Door Lock | | `binary_sensor` | `doorLockStatus` | +| Error | `math-log` | `sensor` | `errors` | +| Machine Status | `information` | `sensor` | `machMode` | +| Program Phase | `washing-machine` | `sensor` | `prPhase` | +| Remaining Time | `timer` | `sensor` | `remainingTimeMM` | +| Remote Control | `remote` | `binary_sensor` | `attributes.lastConnEvent.category` | +| Spin Speed | `speedometer` | `sensor` | `spinSpeed` | +| Total Power | | `sensor` | `totalElectricityUsed` | +| Total Wash Cycle | `counter` | `sensor` | `totalWashCycle` | +| Total Water | | `sensor` | `totalWaterUsed` | diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index 680fcc8..7550f27 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -79,8 +79,7 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { translation_key="remote_control", ), HonBinarySensorEntityDescription( - key="startProgram.prewash", - name="Pre Wash", + key="startProgram.prewash", name="Pre Wash", translation_key="prewash" ), HonBinarySensorEntityDescription( key="extraRinse1", name="Extra Rinse 1", translation_key="extra_rinse_1" @@ -124,6 +123,7 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { device_class=BinarySensorDeviceClass.RUNNING, on_value="1", icon="mdi:power-cycle", + translation_key="on", ), ), "IH": ( @@ -149,6 +149,7 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { device_class=BinarySensorDeviceClass.RUNNING, on_value="1", icon="mdi:power-cycle", + translation_key="on", ), HonBinarySensorEntityDescription( key="hotStatus", @@ -169,6 +170,7 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { name="Hob Lock", device_class=BinarySensorDeviceClass.LOCK, on_value="0", + translation_key="child_lock", ), ), "DW": ( diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index eedcdfd..a04b5ba 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -42,6 +42,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { device_class=SensorDeviceClass.ENERGY, state_class=SensorStateClass.TOTAL_INCREASING, native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, + translation_key="energy_total", ), SensorEntityDescription( key="totalWaterUsed", @@ -49,12 +50,14 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { device_class=SensorDeviceClass.WATER, state_class=SensorStateClass.TOTAL_INCREASING, native_unit_of_measurement=UnitOfVolume.LITERS, + translation_key="water_total", ), SensorEntityDescription( key="totalWashCycle", name="Total Wash Cycle", state_class=SensorStateClass.TOTAL_INCREASING, icon="mdi:counter", + translation_key="cycles_total", ), SensorEntityDescription( key="currentElectricityUsed", @@ -63,12 +66,14 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { device_class=SensorDeviceClass.POWER, native_unit_of_measurement=UnitOfPower.KILO_WATT, icon="mdi:lightning-bolt", + translation_key="energy_current", ), SensorEntityDescription( key="currentWaterUsed", name="Current Water Used", state_class=SensorStateClass.MEASUREMENT, icon="mdi:water", + translation_key="water_current", ), SensorEntityDescription( key="startProgram.weight", @@ -202,6 +207,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { device_class=SensorDeviceClass.ENERGY, state_class=SensorStateClass.TOTAL_INCREASING, native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, + translation_key="energy_total", ), SensorEntityDescription( key="totalWaterUsed", @@ -209,12 +215,14 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { device_class=SensorDeviceClass.WATER, state_class=SensorStateClass.TOTAL_INCREASING, native_unit_of_measurement=UnitOfVolume.LITERS, + translation_key="water_total", ), SensorEntityDescription( key="totalWashCycle", name="Total Wash Cycle", state_class=SensorStateClass.TOTAL_INCREASING, icon="mdi:counter", + translation_key="cycles_total", ), SensorEntityDescription( key="currentElectricityUsed", @@ -223,12 +231,14 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { device_class=SensorDeviceClass.POWER, native_unit_of_measurement=UnitOfPower.KILO_WATT, icon="mdi:lightning-bolt", + translation_key="energy_current", ), SensorEntityDescription( key="currentWaterUsed", name="Current Water Used", state_class=SensorStateClass.MEASUREMENT, icon="mdi:water", + translation_key="water_current", ), SensorEntityDescription( key="startProgram.weight", @@ -265,6 +275,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { key="prCode", name="Current Program", icon="mdi:tumble-dryer", + translation_key="programs", ), SensorEntityDescription( key="prPhase", @@ -344,7 +355,9 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { native_unit_of_measurement=UnitOfTemperature.CELSIUS, translation_key="temperature", ), - SensorEntityDescription(key="errors", name="Error", icon="mdi:math-log"), + SensorEntityDescription( + key="errors", name="Error", icon="mdi:math-log", translation_key="errors" + ), SensorEntityDescription( key="power", name="Power", diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 7b76dc9..412c744 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -51,6 +51,7 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { name="Delay Status", icon="mdi:timer-check", entity_category=EntityCategory.CONFIG, + translation_key="delay_time", ), HonSwitchEntityDescription( key="startProgram.haier_SoakPrewashSelection", diff --git a/custom_components/hon/translations/bg.json b/custom_components/hon/translations/bg.json index 5926d22..b457373 100644 --- a/custom_components/hon/translations/bg.json +++ b/custom_components/hon/translations/bg.json @@ -30,7 +30,7 @@ "8000000000000": "E4: Провери подаването на вода" } }, - "tumbledryerprogram": { + "programs": { "state": { "0": "Стандартна", "62": "Памук", diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index 2ae21ad..d44ead8 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -133,6 +133,27 @@ }, "det_liquid": { "name": "Tekut\u00e9 prost\u0159edky" + }, + "errors": { + "name": "Chyba" + }, + "programs": { + "name": "Aktu\u00e1ln\u00ed program" + }, + "cycles_total": { + "name": "Cykly Celkem" + }, + "energy_total": { + "name": "Spot\u0159eba energie Celkem" + }, + "water_total": { + "name": "Efektivn\u00ed vyu\u017e\u00edv\u00e1n\u00ed vody Celkem" + }, + "energy_current": { + "name": "Spot\u0159eba energie Aktu\u00e1ln\u00ed" + }, + "water_current": { + "name": "Efektivn\u00ed vyu\u017e\u00edv\u00e1n\u00ed vody Aktu\u00e1ln\u00ed" } }, "select": { @@ -851,6 +872,9 @@ }, "keep_fresh": { "name": "Keep Fresh" + }, + "delay_time": { + "name": "Odlo\u017een\u00e9 spu\u0161t\u011bn\u00ed" } }, "binary_sensor": { @@ -913,6 +937,15 @@ }, "connection": { "name": "P\u0159ipojen\u00ed spot\u0159ebi\u010de" + }, + "child_lock": { + "name": "D\u011btsk\u00fd z\u00e1mek" + }, + "on": { + "name": "Zapnout" + }, + "prewash": { + "name": "P\u0159edp\u00edrka\r\r\r\r\r\r\n" } }, "number": { diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index d393552..7667627 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -133,6 +133,27 @@ }, "det_liquid": { "name": "Fl\u00fcssigwaschmittel" + }, + "errors": { + "name": "Fehler" + }, + "programs": { + "name": "Aktuelles Programm" + }, + "cycles_total": { + "name": "Waschg\u00e4nge Insgesamt" + }, + "energy_total": { + "name": "Energieverbrauch Insgesamt" + }, + "water_total": { + "name": "Wasserverbrauch Insgesamt" + }, + "energy_current": { + "name": "Energieverbrauch Aktuell" + }, + "water_current": { + "name": "Wasserverbrauch Aktuell" } }, "select": { @@ -851,6 +872,9 @@ }, "keep_fresh": { "name": "Keep Fresh" + }, + "delay_time": { + "name": "Einschaltverz\u00f6gerung" } }, "binary_sensor": { @@ -913,6 +937,15 @@ }, "connection": { "name": "Ger\u00e4teverbindung" + }, + "child_lock": { + "name": "Kindersicherung" + }, + "on": { + "name": "An" + }, + "prewash": { + "name": "Vorsp\u00fclen" } }, "number": { diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index 0fe000f..ce55ba3 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -133,6 +133,27 @@ }, "det_liquid": { "name": "\u03a5\u03b3\u03c1\u03cc" + }, + "errors": { + "name": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1" + }, + "programs": { + "name": "\u03a4\u03c1\u03ad\u03c7\u03c9\u03bd \u03c0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1" + }, + "cycles_total": { + "name": "\u039a\u03cd\u03ba\u03bb\u03bf\u03b9 \u03a3\u03cd\u03bd\u03bf\u03bb\u03bf" + }, + "energy_total": { + "name": "\u039a\u03b1\u03c4\u03b1\u03bd\u03ac\u03bb\u03c9\u03c3\u03b7 \u03b5\u03bd\u03ad\u03c1\u03b3\u03b5\u03b9\u03b1\u03c2 \u03a3\u03cd\u03bd\u03bf\u03bb\u03bf" + }, + "water_total": { + "name": "\u0391\u03c0\u03cc\u03b4\u03bf\u03c3\u03b7 \u03bd\u03b5\u03c1\u03bf\u03cd \u03a3\u03cd\u03bd\u03bf\u03bb\u03bf" + }, + "energy_current": { + "name": "\u039a\u03b1\u03c4\u03b1\u03bd\u03ac\u03bb\u03c9\u03c3\u03b7 \u03b5\u03bd\u03ad\u03c1\u03b3\u03b5\u03b9\u03b1\u03c2 Current" + }, + "water_current": { + "name": "\u0391\u03c0\u03cc\u03b4\u03bf\u03c3\u03b7 \u03bd\u03b5\u03c1\u03bf\u03cd Current" } }, "select": { @@ -851,6 +872,9 @@ }, "keep_fresh": { "name": "Keep Fresh" + }, + "delay_time": { + "name": "\u039a\u03b1\u03b8\u03c5\u03c3\u03c4\u03b5\u03c1\u03b7\u03bc\u03ad\u03bd\u03b7 \u03ad\u03bd\u03b1\u03c1\u03be\u03b7" } }, "binary_sensor": { @@ -913,6 +937,15 @@ }, "connection": { "name": "\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae\u03c2" + }, + "child_lock": { + "name": "\u039a\u03bb\u03b5\u03af\u03b4\u03c9\u03bc\u03b1 \u03b3\u03b9\u03b1 \u03c0\u03b1\u03b9\u03b4\u03b9\u03ac" + }, + "on": { + "name": "\u0395\u03bd\u03b5\u03c1\u03b3\u03cc" + }, + "prewash": { + "name": "\u03c0\u03c1\u03bf\u03c0\u03bb\u03c5\u03c3\u03b7" } }, "number": { diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 89cec15..0c40ca4 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -28,9 +28,10 @@ "00": "No error", "100000000000": "E2: Check if the door is closed", "8000000000000": "E4: Check the water supply" - } + }, + "name": "Error" }, - "tumbledryerprogram": { + "programs": { "state": { "0": "Default", "62": "Cotton", @@ -47,7 +48,8 @@ "85": "Quick Dry", "92": "Delicate", "103": "Remote" - } + }, + "name": "Current program" }, "tumbledryertemplevel": { "state": { @@ -196,6 +198,21 @@ }, "det_liquid": { "name": "Liquid detergent" + }, + "cycles_total": { + "name": "Cycles Total" + }, + "energy_total": { + "name": "Energy Consumption Total" + }, + "water_total": { + "name": "Water efficiency Total" + }, + "energy_current": { + "name": "Energy Consumption Current" + }, + "water_current": { + "name": "Water efficiency Current" } }, "switch": { @@ -246,6 +263,9 @@ }, "keep_fresh": { "name": "Keep Fresh" + }, + "delay_time": { + "name": "Delay Start" } }, "select": { @@ -984,6 +1004,15 @@ }, "connection": { "name": "Appliance connection" + }, + "child_lock": { + "name": "Child Lock" + }, + "on": { + "name": "On" + }, + "prewash": { + "name": "Pre-wash " } }, "number": { diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index accd86c..f51cea8 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -133,6 +133,27 @@ }, "det_liquid": { "name": "L\u00edquido" + }, + "errors": { + "name": "Error" + }, + "programs": { + "name": "Programa actual" + }, + "cycles_total": { + "name": "Ciclos Total" + }, + "energy_total": { + "name": "Consumo de energ\u00eda Total" + }, + "water_total": { + "name": "Eficiencia h\u00eddrica Total" + }, + "energy_current": { + "name": "Consumo de energ\u00eda Actual" + }, + "water_current": { + "name": "Eficiencia h\u00eddrica Actual" } }, "select": { @@ -851,6 +872,9 @@ }, "keep_fresh": { "name": "Keep Fresh" + }, + "delay_time": { + "name": "Inicio Diferido" } }, "binary_sensor": { @@ -913,6 +937,15 @@ }, "connection": { "name": "Conexi\u00f3n del electrodom\u00e9stico" + }, + "child_lock": { + "name": "Bloqueo infantil" + }, + "on": { + "name": "Activado" + }, + "prewash": { + "name": "Pre-lavado" } }, "number": { diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index 0f8c285..47d1a92 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -133,6 +133,27 @@ }, "det_liquid": { "name": "Liquide" + }, + "errors": { + "name": "Erreur" + }, + "programs": { + "name": "Programme actuel" + }, + "cycles_total": { + "name": "Cycles Total" + }, + "energy_total": { + "name": "Consommation d\u2019\u00e9nergie Total" + }, + "water_total": { + "name": "Efficacit\u00e9 en eau Total" + }, + "energy_current": { + "name": "Consommation d\u2019\u00e9nergie Actuel" + }, + "water_current": { + "name": "Efficacit\u00e9 en eau Actuel" } }, "select": { @@ -851,6 +872,9 @@ }, "keep_fresh": { "name": "Garder la fra\u00eecheur" + }, + "delay_time": { + "name": "D\u00e9marrage Diff\u00e9r\u00e9" } }, "binary_sensor": { @@ -913,6 +937,15 @@ }, "connection": { "name": "Connexion de l\u2019appareil" + }, + "child_lock": { + "name": "S\u00e9curit\u00e9 enfants" + }, + "on": { + "name": "Marche" + }, + "prewash": { + "name": "Pr\u00e9lavage" } }, "number": { diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index 2e97feb..27f06c7 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -133,6 +133,27 @@ }, "det_liquid": { "name": "Liquid detergent" + }, + "errors": { + "name": "Error" + }, + "programs": { + "name": "Current program" + }, + "cycles_total": { + "name": "\u05de\u05d7\u05d6\u05d5\u05e8\u05d9\u05dd Total" + }, + "energy_total": { + "name": "Energy Consumption Total" + }, + "water_total": { + "name": "Water efficiency Total" + }, + "energy_current": { + "name": "Energy Consumption Current" + }, + "water_current": { + "name": "Water efficiency Current" } }, "select": { @@ -449,6 +470,9 @@ }, "keep_fresh": { "name": "Keep Fresh" + }, + "delay_time": { + "name": "Delay Start" } }, "binary_sensor": { @@ -511,6 +535,15 @@ }, "connection": { "name": "Appliance connection" + }, + "child_lock": { + "name": "Child Lock" + }, + "on": { + "name": "\u05e2\u05b7\u05dc" + }, + "prewash": { + "name": "\u05e9\u05d8\u05d9\u05e4\u05d4 \u05de\u05e8\u05d0\u05e9" } }, "number": { diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index 540f693..9555445 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -133,6 +133,27 @@ }, "det_liquid": { "name": "Teku\u0107ina" + }, + "errors": { + "name": "Gre\u0161ka" + }, + "programs": { + "name": "Trenuta\u010dni program" + }, + "cycles_total": { + "name": "Programi Ukupno" + }, + "energy_total": { + "name": "Potro\u0161nja energije Ukupno" + }, + "water_total": { + "name": "U\u010dinkovitost vode Ukupno" + }, + "energy_current": { + "name": "Potro\u0161nja energije Current" + }, + "water_current": { + "name": "U\u010dinkovitost vode Current" } }, "select": { @@ -851,6 +872,9 @@ }, "keep_fresh": { "name": "Keep Fresh" + }, + "delay_time": { + "name": "Odgoda po\u010detka" } }, "binary_sensor": { @@ -913,6 +937,15 @@ }, "connection": { "name": "Priklju\u010dak ure\u0111aja" + }, + "child_lock": { + "name": "Zaklju\u010davanje za za\u0161titu djece" + }, + "on": { + "name": "Uklju\u010deno" + }, + "prewash": { + "name": "Pretpranje" } }, "number": { diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index c0c8fe2..0db4f4d 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -28,9 +28,10 @@ "00": "Nessun Errore", "100000000000": "E2: Controllare se la porta \u00e8 chiusa correttamente", "8000000000000": "E4: Controllare l'approvvigionamento idrico" - } + }, + "name": "Errore" }, - "tumbledryerprogram": { + "programs": { "state": { "0": "Default", "62": "Cotone", @@ -47,7 +48,8 @@ "85": "Asciugatura Rapida", "92": "Delicati", "103": "Controllo Remoto" - } + }, + "name": "Programma attuale" }, "tumbledryertemplevel": { "state": { @@ -189,6 +191,21 @@ }, "det_liquid": { "name": "Detersivo liquido" + }, + "cycles_total": { + "name": "Cicli Totale" + }, + "energy_total": { + "name": "Consumo energetico Totale" + }, + "water_total": { + "name": "Efficienza idrica Totale" + }, + "energy_current": { + "name": "Consumo energetico Odierna" + }, + "water_current": { + "name": "Efficienza idrica Odierna" } }, "select": { @@ -907,6 +924,9 @@ }, "keep_fresh": { "name": "Keep Fresh" + }, + "delay_time": { + "name": "Utilizzo nelle ore notturne" } }, "binary_sensor": { @@ -969,6 +989,15 @@ }, "connection": { "name": "Connessione dell'elettrodomestico" + }, + "child_lock": { + "name": "Child Lock" + }, + "on": { + "name": "On" + }, + "prewash": { + "name": "Prelavaggio" } }, "number": { diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index f6a6c99..881bea1 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -133,6 +133,27 @@ }, "det_liquid": { "name": "Vloeibaar" + }, + "errors": { + "name": "Fout" + }, + "programs": { + "name": "Huidig programma" + }, + "cycles_total": { + "name": "Programma's Totaal" + }, + "energy_total": { + "name": "Energieverbruik Totaal" + }, + "water_total": { + "name": "Effici\u00ebnt waterverbruik Totaal" + }, + "energy_current": { + "name": "Energieverbruik Huidige" + }, + "water_current": { + "name": "Effici\u00ebnt waterverbruik Huidige" } }, "select": { @@ -851,6 +872,9 @@ }, "keep_fresh": { "name": "Keep Fresh" + }, + "delay_time": { + "name": "Vertraag Start" } }, "binary_sensor": { @@ -913,6 +937,15 @@ }, "connection": { "name": "Het apparaat verbinden" + }, + "child_lock": { + "name": "Kinderslot" + }, + "on": { + "name": "Aan" + }, + "prewash": { + "name": "Voorwas" } }, "number": { diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index be111e0..5f862df 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -133,6 +133,27 @@ }, "det_liquid": { "name": "P\u0142yn" + }, + "errors": { + "name": "B\u0142\u0105d" + }, + "programs": { + "name": "Aktualny program" + }, + "cycles_total": { + "name": "Cykle Suma" + }, + "energy_total": { + "name": "Zu\u017cycie energii Suma" + }, + "water_total": { + "name": "Wydajno\u015b\u0107 zu\u017cycia wody Suma" + }, + "energy_current": { + "name": "Zu\u017cycie energii Aktualne" + }, + "water_current": { + "name": "Wydajno\u015b\u0107 zu\u017cycia wody Aktualne" } }, "select": { @@ -851,6 +872,9 @@ }, "keep_fresh": { "name": "Keep Fresh" + }, + "delay_time": { + "name": "Op\u00f3\u017aniony Start" } }, "binary_sensor": { @@ -913,6 +937,15 @@ }, "connection": { "name": "Pod\u0142\u0105czenie urz\u0105dzenia" + }, + "child_lock": { + "name": "Blokada rodzicielska" + }, + "on": { + "name": "W\u0142." + }, + "prewash": { + "name": "Mycie wst\u0119pne" } }, "number": { diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index 64571eb..2475271 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -133,6 +133,27 @@ }, "det_liquid": { "name": "L\u00edquido" + }, + "errors": { + "name": "Erro" + }, + "programs": { + "name": "Programa atual" + }, + "cycles_total": { + "name": "Ciclos Total" + }, + "energy_total": { + "name": "Consumo de energia Total" + }, + "water_total": { + "name": "Efici\u00eancia da \u00e1gua Total" + }, + "energy_current": { + "name": "Consumo de energia Data" + }, + "water_current": { + "name": "Efici\u00eancia da \u00e1gua Data" } }, "select": { @@ -851,6 +872,9 @@ }, "keep_fresh": { "name": "Keep Fresh" + }, + "delay_time": { + "name": "In\u00edcio adiado" } }, "binary_sensor": { @@ -913,6 +937,15 @@ }, "connection": { "name": "Liga\u00e7\u00e3o do aparelho" + }, + "child_lock": { + "name": "Trinco para Crian\u00e7as" + }, + "on": { + "name": "On" + }, + "prewash": { + "name": "Pr\u00e9-lavagem" } }, "number": { diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index cde6326..9859f53 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -133,6 +133,27 @@ }, "det_liquid": { "name": "Lichid" + }, + "errors": { + "name": "Eroare" + }, + "programs": { + "name": "Program actual" + }, + "cycles_total": { + "name": "Cicluri Total" + }, + "energy_total": { + "name": "Consumul de energie Total" + }, + "water_total": { + "name": "Eficien\u021ba apei Total" + }, + "energy_current": { + "name": "Consumul de energie Current" + }, + "water_current": { + "name": "Eficien\u021ba apei Current" } }, "select": { @@ -851,6 +872,9 @@ }, "keep_fresh": { "name": "Keep Fresh" + }, + "delay_time": { + "name": "Pornire \u00eent\u00e2rziat\u0103" } }, "binary_sensor": { @@ -913,6 +937,15 @@ }, "connection": { "name": "Conectarea aparatului" + }, + "child_lock": { + "name": "Blocare acces copii" + }, + "on": { + "name": "Pornit" + }, + "prewash": { + "name": "Presp\u0103lare" } }, "number": { diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index fbdcee6..d40f878 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -133,6 +133,27 @@ }, "det_liquid": { "name": "\u0416\u0438\u0434\u043a\u043e\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e" + }, + "errors": { + "name": "\u041e\u0448\u0438\u0431\u043a\u0430" + }, + "programs": { + "name": "\u0422\u0435\u043a\u0443\u0449\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430" + }, + "cycles_total": { + "name": "\u0426\u0438\u043a\u043b\u044b \u0418\u0442\u043e\u0433\u043e" + }, + "energy_total": { + "name": "\u041f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u044d\u043d\u0435\u0440\u0433\u0438\u0438 \u0418\u0442\u043e\u0433\u043e" + }, + "water_total": { + "name": "\u042d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0441\u0445\u043e\u0434\u0430 \u0432\u043e\u0434\u044b \u0418\u0442\u043e\u0433\u043e" + }, + "energy_current": { + "name": "\u041f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u044d\u043d\u0435\u0440\u0433\u0438\u0438 \u0422\u0435\u043a\u0443\u0449\u0438\u0439" + }, + "water_current": { + "name": "\u042d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0441\u0445\u043e\u0434\u0430 \u0432\u043e\u0434\u044b \u0422\u0435\u043a\u0443\u0449\u0438\u0439" } }, "select": { @@ -851,6 +872,9 @@ }, "keep_fresh": { "name": "Keep Fresh (\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u0432\u0435\u0436\u0435\u0441\u0442\u0438)" + }, + "delay_time": { + "name": "\u041e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u043f\u0443\u0441\u043a" } }, "binary_sensor": { @@ -913,6 +937,15 @@ }, "connection": { "name": "\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f" + }, + "child_lock": { + "name": "\u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u043e\u0442 \u0434\u0435\u0442\u0435\u0439" + }, + "on": { + "name": "\u0412\u043a\u043b." + }, + "prewash": { + "name": "\u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043c\u043e\u0439\u043a\u0430" } }, "number": { diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index 5199fc6..fa143fc 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -133,6 +133,27 @@ }, "det_liquid": { "name": "Kvapaln\u00e9 pracie prostriedky" + }, + "errors": { + "name": "Chyba" + }, + "programs": { + "name": "Aktu\u00e1lny program" + }, + "cycles_total": { + "name": "Cykly S\u00fa\u010det" + }, + "energy_total": { + "name": "Spotreba energie S\u00fa\u010det" + }, + "water_total": { + "name": "\u00da\u010dinnos\u0165 vody S\u00fa\u010det" + }, + "energy_current": { + "name": "Spotreba energie Current" + }, + "water_current": { + "name": "\u00da\u010dinnos\u0165 vody Current" } }, "select": { @@ -851,6 +872,9 @@ }, "keep_fresh": { "name": "Keep Fresh" + }, + "delay_time": { + "name": "Odlo\u017een\u00fd \u0161tart" } }, "binary_sensor": { @@ -913,6 +937,15 @@ }, "connection": { "name": "Pripojenie spotrebi\u010da" + }, + "child_lock": { + "name": "Detsk\u00e1 poistka" + }, + "on": { + "name": "Zap." + }, + "prewash": { + "name": "Predum\u00fdvanie" } }, "number": { diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index c8c4193..52cb002 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -133,6 +133,27 @@ }, "det_liquid": { "name": "Teko\u010dina" + }, + "errors": { + "name": "Napaka" + }, + "programs": { + "name": "Trenutni program" + }, + "cycles_total": { + "name": "Programi Skupaj" + }, + "energy_total": { + "name": "Poraba energije Skupaj" + }, + "water_total": { + "name": "U\u010dinkovita raba vode Skupaj" + }, + "energy_current": { + "name": "Poraba energije Current" + }, + "water_current": { + "name": "U\u010dinkovita raba vode Current" } }, "select": { @@ -851,6 +872,9 @@ }, "keep_fresh": { "name": "Keep Fresh" + }, + "delay_time": { + "name": "S funkcijo Zamik vklopa je mo\u017eno odlo\u017eiti za\u010detek su\u0161ilnega cikla od 1 do 24 ur. Na zaslonu se prika\u017ee izbrana zakasnitev. Da bi videli kako se zmanj\u0161uje iz ure v uro, pritisnite ZA\u010cETEK. Na ta na\u010din bo perilo suho takrat, ko boste to \u017eeleli, in zagnali cikel, ko vam to najbolj ustreza, celo pono\u010di." } }, "binary_sensor": { @@ -913,6 +937,15 @@ }, "connection": { "name": "Povezava aparata" + }, + "child_lock": { + "name": "Varnostni zaklep" + }, + "on": { + "name": "On" + }, + "prewash": { + "name": "Predpranje" } }, "number": { diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index 63f021e..58d130f 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -133,6 +133,27 @@ }, "det_liquid": { "name": "Te\u010dni" + }, + "errors": { + "name": "Gre\u0161ka" + }, + "programs": { + "name": "Trenutni program" + }, + "cycles_total": { + "name": "Ciklusi Ukupno" + }, + "energy_total": { + "name": "Potro\u0161nja energije Ukupno" + }, + "water_total": { + "name": "Efikasnost vode Ukupno" + }, + "energy_current": { + "name": "Potro\u0161nja energije Current" + }, + "water_current": { + "name": "Efikasnost vode Current" } }, "select": { @@ -851,6 +872,9 @@ }, "keep_fresh": { "name": "Keep Fresh" + }, + "delay_time": { + "name": "Odlo\u017eeni start" } }, "binary_sensor": { @@ -913,6 +937,15 @@ }, "connection": { "name": "Povezivanje ure\u0111aja" + }, + "child_lock": { + "name": "Blokada tastera za decu" + }, + "on": { + "name": "Uklju\u010deno" + }, + "prewash": { + "name": "Predpranje" } }, "number": { diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index f7108e1..a65b47b 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -133,6 +133,27 @@ }, "det_liquid": { "name": "S\u0131v\u0131" + }, + "errors": { + "name": "Hata" + }, + "programs": { + "name": "Ge\u00e7erli program" + }, + "cycles_total": { + "name": "Programlar Toplam" + }, + "energy_total": { + "name": "Enerji T\u00fcketimi Toplam" + }, + "water_total": { + "name": "Su verimlili\u011fi Toplam" + }, + "energy_current": { + "name": "Enerji T\u00fcketimi Current" + }, + "water_current": { + "name": "Su verimlili\u011fi Current" } }, "select": { @@ -851,6 +872,9 @@ }, "keep_fresh": { "name": "Keep Fresh" + }, + "delay_time": { + "name": "Gecikmeli Ba\u015flatma" } }, "binary_sensor": { @@ -913,6 +937,15 @@ }, "connection": { "name": "Cihaz ba\u011flant\u0131s\u0131" + }, + "child_lock": { + "name": "\u00c7ocuk Kilidi" + }, + "on": { + "name": "A\u00e7\u0131k" + }, + "prewash": { + "name": "Pre-wash" } }, "number": { diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index 69b0dbb..fcfc665 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -133,6 +133,27 @@ }, "det_liquid": { "name": "\u6d17\u8863\u6db2" + }, + "errors": { + "name": "\u9519\u8bef" + }, + "programs": { + "name": "\u5f53\u524d\u7a0b\u5e8f" + }, + "cycles_total": { + "name": "\u5faa\u73af \u603b\u8ba1" + }, + "energy_total": { + "name": "\u80fd\u8017 \u603b\u8ba1" + }, + "water_total": { + "name": "\u7528\u6c34\u6548\u7387 \u603b\u8ba1" + }, + "energy_current": { + "name": "\u80fd\u8017 Current" + }, + "water_current": { + "name": "\u7528\u6c34\u6548\u7387 Current" } }, "select": { @@ -851,6 +872,9 @@ }, "keep_fresh": { "name": "Keep Fresh" + }, + "delay_time": { + "name": "\u5ef6\u65f6\u542f\u52a8" } }, "binary_sensor": { @@ -913,6 +937,15 @@ }, "connection": { "name": "\u8bbe\u5907\u8fde\u63a5" + }, + "child_lock": { + "name": "\u513f\u7ae5\u9501" + }, + "on": { + "name": "\u6253\u5f00" + }, + "prewash": { + "name": "\u9884\u6d17" } }, "number": { diff --git a/scripts/generate_translation.py b/scripts/generate_translation.py index 647c2d3..6fe384c 100755 --- a/scripts/generate_translation.py +++ b/scripts/generate_translation.py @@ -136,6 +136,7 @@ NAMES = { "prewash": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.PREWASH", "pause": "GENERAL.PAUSE_PROGRAM", "keep_fresh": "GLOBALS.APPLIANCE_STATUS.TUMBLING", + "delay_time": "HINTS.TIPS_TIME_ENERGY_SAVING.TIPS_USE_AT_NIGHT_TITLE", }, "binary_sensor": { "door_lock": "WASHING_CMD&CTRL.CHECK_UP_RESULTS.DOOR_LOCK", @@ -153,6 +154,9 @@ NAMES = { "salt_level": "DW_CMD&CTRL.MAINTENANCE.CONSUMABLE_LEVELS_ICON_SALT", "door_open": "GLOBALS.APPLIANCE_STATUS.DOOR_OPEN", "connection": "ENROLLMENT_COMMON.HEADER_NAME.STEP_APPLIANCE_CONNECTION", + "child_lock": "AP.FOOTER_MENU_MORE.SECURITY_LOCK_TITLE", + "on": "GLOBALS.GENERAL.ON", + "prewash": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.PREWASH", }, "button": { "induction_hob": "GLOBALS.APPLIANCES_NAME.IH", @@ -189,6 +193,28 @@ NAMES = { "energy_label": "WASHING_CMD&CTRL.DRAWER_PROGRAM_FILTERS.ENERGY_EFFICIENCY", "det_dust": "HUBS.WIDGET.STAINS_WIDGET.STAINS.SUGGESTED_DET_DUST", "det_liquid": "HUBS.WIDGET.STAINS_WIDGET.STAINS.SUGGESTED_DET_LIQUID", + "errors": "ROBOT_CMD&CTRL.PHASE_ERROR.TITLE", + "programs": "OV.TABS.CURRENT_PROGRAM", + "cycles_total": [ + "WASHING_CMD&CTRL.GENERAL.CYCLES", + "WC.VIRTUAL_WINE_STATS_COUNTRY.TOTAL", + ], + "energy_total": [ + "MISE.ENERGY_CONSUMPTION.TITLE", + "WC.VIRTUAL_WINE_STATS_COUNTRY.TOTAL", + ], + "water_total": [ + "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_RESULT.WATER_EFFICIENCY", + "WC.VIRTUAL_WINE_STATS_COUNTRY.TOTAL", + ], + "energy_current": [ + "MISE.ENERGY_CONSUMPTION.TITLE", + "CUBE90_GLOBAL.GENERAL.CURRENT", + ], + "water_current": [ + "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_RESULT.WATER_EFFICIENCY", + "CUBE90_GLOBAL.GENERAL.CURRENT", + ], }, "number": { "power_management": "HINTS.COOKING_WITH_INDUCTION.POWER_MANAGEMENT", @@ -240,6 +266,10 @@ def save_json(path, keys): def load_key(full_key, json_data, fallback=None): + if isinstance(full_key, list): + return " ".join( + [load_key(item, json_data, fallback).strip() for item in full_key] + ) result = json_data.copy() for key in full_key.split("."): result = result.get(key, {}) diff --git a/scripts/sensor_docs.py b/scripts/sensor_docs.py index ec2c7e5..2c125f8 100755 --- a/scripts/sensor_docs.py +++ b/scripts/sensor_docs.py @@ -54,8 +54,7 @@ for entity_type, appliances in entities.items(): key = f"{entity.turn_on_key}` / `{entity.turn_off_key}" else: key = entity.key - translation = bool(entity.translation_key) - attributes = (key, entity.name, entity.icon, entity_type, translation) + attributes = (key, entity.name, entity.icon, entity_type) category = "control" if entity_type in ["switch", "button"] else "sensor" result.setdefault(appliance, {}).setdefault( entity.entity_category or category, [] @@ -66,14 +65,11 @@ for appliance, categories in sorted(result.items()): categories = {k: categories[k] for k in ENTITY_CATEGORY_SORT if k in categories} for category, data in categories.items(): text += f"#### {str(category).capitalize()}s\n" - text += "| Name | Icon | Entity | Key | Auto-Translation |\n" - text += "| --- | --- | --- | --- | --- |\n" - for key, name, icon, entity_type, translation in sorted( - data, key=lambda d: d[1] - ): + text += "| Name | Icon | Entity | Key |\n" + text += "| --- | --- | --- | --- |\n" + for key, name, icon, entity_type in sorted(data, key=lambda d: d[1]): icon = f"`{icon.replace('mdi:', '')}`" if icon else "" - translation = "✔" if translation else "❌" - text += f"| {name} | {icon} | `{entity_type}` | `{key}` | {translation} |\n" + text += f"| {name} | {icon} | `{entity_type}` | `{key}` |\n" with open(Path(__file__).parent.parent / "README.md", "r") as file: readme = file.read() -- 2.39.5 From e35a6ce751a5d46c295cfa7a4db7246661e5a94e Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 24 Apr 2023 21:53:37 +0200 Subject: [PATCH 072/205] Bump pyhon version --- custom_components/hon/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 08b0332..0545a37 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -6,6 +6,6 @@ "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn==0.9.0"], - "version": "0.7.0-beta.6" + "requirements": ["pyhOn==0.9.1"], + "version": "0.7.0-beta.7" } -- 2.39.5 From e56f2c99c09bae07cf9be4df802a9bfc4f5a36a5 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 24 Apr 2023 22:07:58 +0200 Subject: [PATCH 073/205] Don't escape unicode in json files --- custom_components/hon/translations/cs.json | 1167 ++++++++-------- custom_components/hon/translations/de.json | 429 +++--- custom_components/hon/translations/el.json | 1403 ++++++++++--------- custom_components/hon/translations/en.json | 79 +- custom_components/hon/translations/es.json | 443 +++--- custom_components/hon/translations/fr.json | 655 +++++---- custom_components/hon/translations/he.json | 494 +++---- custom_components/hon/translations/hr.json | 597 ++++---- custom_components/hon/translations/it.json | 85 +- custom_components/hon/translations/nl.json | 131 +- custom_components/hon/translations/pl.json | 557 ++++---- custom_components/hon/translations/pt.json | 509 ++++--- custom_components/hon/translations/ro.json | 765 ++++++----- custom_components/hon/translations/ru.json | 1427 ++++++++++---------- custom_components/hon/translations/sk.json | 1063 ++++++++------- custom_components/hon/translations/sl.json | 675 +++++---- custom_components/hon/translations/sr.json | 571 ++++---- custom_components/hon/translations/tr.json | 829 ++++++------ custom_components/hon/translations/zh.json | 1385 ++++++++++--------- scripts/generate_translation.py | 4 +- 20 files changed, 6625 insertions(+), 6643 deletions(-) diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index d44ead8..db77f07 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -3,830 +3,829 @@ "sensor": { "washing_modes": { "state": { - "0": "P\u0159ipraveno", - "1": "P\u0159ipraveno", + "0": "Připraveno", + "1": "Připraveno", "3": "Pozastavit", - "4": "Napl\u00e1nov\u00e1no", - "5": "Napl\u00e1nov\u00e1no", + "4": "Naplánováno", + "5": "Naplánováno", "6": "Chyba", - "7": "P\u0159ipraveno" + "7": "Připraveno" } }, "program_phases_wm": { "state": { - "0": "P\u0159ipraveno", - "1": "Pran\u00ed", - "2": "Pran\u00ed", - "3": "Odst\u0159e\u010fov\u00e1n\u00ed", - "4": "M\u00e1ch\u00e1n\u00ed", - "5": "M\u00e1ch\u00e1n\u00ed", - "6": "M\u00e1ch\u00e1n\u00ed", - "7": "Su\u0161en\u00ed", - "9": "P\u00e1ra", - "10": "P\u0159ipraveno", - "11": "Odst\u0159e\u010fov\u00e1n\u00ed", - "12": "V\u00e1\u017een\u00ed ", - "13": "V\u00e1\u017een\u00ed ", - "14": "Pran\u00ed", - "15": "Pran\u00ed", - "16": "Pran\u00ed", - "17": "M\u00e1ch\u00e1n\u00ed", - "18": "M\u00e1ch\u00e1n\u00ed", - "19": "Napl\u00e1nov\u00e1no", + "0": "Připraveno", + "1": "Praní", + "2": "Praní", + "3": "Odstřeďování", + "4": "Máchání", + "5": "Máchání", + "6": "Máchání", + "7": "Sušení", + "9": "Pára", + "10": "Připraveno", + "11": "Odstřeďování", + "12": "Vážení ", + "13": "Vážení ", + "14": "Praní", + "15": "Praní", + "16": "Praní", + "17": "Máchání", + "18": "Máchání", + "19": "Naplánováno", "20": "Keep Fresh", - "24": "Osv\u011b\u017een\u00ed", - "25": "Pran\u00ed", - "26": "Oh\u0159ev", - "27": "Pran\u00ed" + "24": "Osvěžení", + "25": "Praní", + "26": "Ohřev", + "27": "Praní" }, - "name": "F\u00e1ze" + "name": "Fáze" }, "program_phases_td": { "state": { - "0": "P\u0159ipraveno", - "1": "Su\u0161en\u00ed", - "2": "Su\u0161en\u00ed", - "3": "Vychladnut\u00ed", - "13": "Vychladnut\u00ed", - "14": "Su\u0161en\u00ed", - "15": "Su\u0161en\u00ed", - "16": "Vychladnut\u00ed", + "0": "Připraveno", + "1": "Sušení", + "2": "Sušení", + "3": "Vychladnutí", + "13": "Vychladnutí", + "14": "Sušení", + "15": "Sušení", + "16": "Vychladnutí", "18": "Keep Fresh", - "19": "Su\u0161en\u00ed", - "20": "Su\u0161en\u00ed" + "19": "Sušení", + "20": "Sušení" }, - "name": "F\u00e1ze" + "name": "Fáze" }, "program_phases_dw": { "state": { - "0": "P\u0159ipraveno", - "1": "P\u0159edp\u00edrka", - "2": "Pran\u00ed", - "3": "M\u00e1ch\u00e1n\u00ed", - "4": "Su\u0161en\u00ed", - "5": "P\u0159ipraveno", + "0": "Připraveno", + "1": "Předpírka", + "2": "Praní", + "3": "Máchání", + "4": "Sušení", + "5": "Připraveno", "6": "Hot rinse" }, - "name": "F\u00e1ze" + "name": "Fáze" }, "dry_levels": { "state": { - "0": "Bez su\u0161en\u00ed", - "1": "\u017dehlen\u00ed", - "2": "Do sk\u0159\u00edn\u011b", - "3": "Do sk\u0159\u00edn\u011b", - "4": "Extra such\u00e9", - "12": "\u017dehlen\u00ed", - "13": "Do sk\u0159\u00edn\u011b", - "14": "P\u0159ipraveno k oble\u010den\u00ed", - "15": "Extra such\u00e9" + "0": "Bez sušení", + "1": "Žehlení", + "2": "Do skříně", + "3": "Do skříně", + "4": "Extra suché", + "12": "Žehlení", + "13": "Do skříně", + "14": "Připraveno k oblečení", + "15": "Extra suché" }, - "name": "\u00darove\u0148 su\u0161en\u00ed" + "name": "Úroveň sušení" }, "anti_crease": { - "name": "Proti poma\u010dk\u00e1n\u00ed" + "name": "Proti pomačkání" }, "power": { - "name": "Stupe\u0148 v\u00fdkonu" + "name": "Stupeň výkonu" }, "remaining_time": { - "name": "Zb\u00fdvaj\u00edc\u00ed \u010das" + "name": "Zbývající čas" }, "temperature": { "name": "Teplota" }, "water_efficiency": { - "name": "Efektivn\u00ed vyu\u017e\u00edv\u00e1n\u00ed vody" + "name": "Efektivní využívání vody" }, "water_saving": { - "name": "\u00daspora vody" + "name": "Úspora vody" }, "duration": { - "name": "D\u00e9lka" + "name": "Délka" }, "target_temperature": { - "name": "C\u00edlov\u00e1 teplota" + "name": "Cílová teplota" }, "spin_speed": { - "name": "Odst\u0159e\u010fov\u00e1n\u00ed" + "name": "Odstřeďování" }, "steam_leve": { - "name": "\u00darove\u0148 p\u00e1ry" + "name": "Úroveň páry" }, "dirt_level": { - "name": "M\u00edra zne\u010di\u0161t\u011bn\u00ed" + "name": "Míra znečištění" }, "delay_time": { - "name": "Odlo\u017een\u00e9 spu\u0161t\u011bn\u00ed" + "name": "Odložené spuštění" }, "dry_time": { - "name": "Doba su\u0161en\u00ed" + "name": "Doba sušení" }, "suggested_load": { - "name": "Kapacita n\u00e1pln\u011b" + "name": "Kapacita náplně" }, "energy_label": { - "name": "Energetick\u00e1 \u00fa\u010dinnost" + "name": "Energetická účinnost" }, "det_dust": { - "name": "Pr\u00e1\u0161ky" + "name": "Prášky" }, "det_liquid": { - "name": "Tekut\u00e9 prost\u0159edky" + "name": "Tekuté prostředky" }, "errors": { "name": "Chyba" }, "programs": { - "name": "Aktu\u00e1ln\u00ed program" + "name": "Aktuální program" }, "cycles_total": { "name": "Cykly Celkem" }, "energy_total": { - "name": "Spot\u0159eba energie Celkem" + "name": "Spotřeba energie Celkem" }, "water_total": { - "name": "Efektivn\u00ed vyu\u017e\u00edv\u00e1n\u00ed vody Celkem" + "name": "Efektivní využívání vody Celkem" }, "energy_current": { - "name": "Spot\u0159eba energie Aktu\u00e1ln\u00ed" + "name": "Spotřeba energie Aktuální" }, "water_current": { - "name": "Efektivn\u00ed vyu\u017e\u00edv\u00e1n\u00ed vody Aktu\u00e1ln\u00ed" + "name": "Efektivní využívání vody Aktuální" } }, "select": { "programs_dw": { "state": { - "59_min": "Rychl\u00fd 59'", + "59_min": "Rychlý 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", "auto_plus": "AutoPlus", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Auto univerz\u00e1ln\u00ed 50 -60\u00b0C", - "auto_universal_plus": "Auto univerz\u00e1ln\u00ed plus 65 - 75\u00b0C", - "auto_universal_plus_soil": "Auto univerz\u00e1ln\u00ed plus 65 - 75\u00b0C", - "auto_universal_soil": "Auto univerz\u00e1ln\u00ed 50 -60\u00b0C", - "auto_wash": "Automatick\u00e9 pran\u00ed", - "auto_wash_soil": "Automatick\u00e9 pran\u00ed", - "classe_a_59": "A t\u0159\u00edda 1 h 65\u00b0C", - "delicate": "Jemn\u00fd 45\u00b0C", - "dishwasher_care": "Cyklus odstra\u0148ov\u00e1n\u00ed vodn\u00edho kamene", + "auto_universal": "Auto univerzální 50 -60°C", + "auto_universal_plus": "Auto univerzální plus 65 - 75°C", + "auto_universal_plus_soil": "Auto univerzální plus 65 - 75°C", + "auto_universal_soil": "Auto univerzální 50 -60°C", + "auto_wash": "Automatické praní", + "auto_wash_soil": "Automatické praní", + "classe_a_59": "A třída 1 h 65°C", + "delicate": "Jemný 45°C", + "dishwasher_care": "Cyklus odstraňování vodního kamene", "eco": "Eco", - "eco_asynch": "Eko 45 \u00b0C", - "eco_bldc": "Eko 45 \u00b0C", - "eco_synch": "Eko 45 \u00b0C", + "eco_asynch": "Eko 45 °C", + "eco_bldc": "Eko 45 °C", + "eco_synch": "Eko 45 °C", "gentle_wash": "Gentle wash", "glass": "Sklo", - "glassware": "Sklo 45 \u00b0C", + "glassware": "Sklo 45 °C", "glass_care": "Glass Care", "hygiene": "Hygiena", - "hygiene_plus": "Hygienick\u00fd+ 75 \u00b0C", - "intensive": "Intenzivn\u00ed", - "intensive_rapid": "intenzivn\u00ed rychl\u00fd", + "hygiene_plus": "Hygienický+ 75 °C", + "intensive": "Intenzivní", + "intensive_rapid": "intenzivní rychlý", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Auto univerz\u00e1ln\u00ed 50 -60\u00b0C", - "iot_auto_wash_soil": "Automatick\u00e9 pran\u00ed", - "iot_baby_care": "P\u00e9\u010de o d\u011bti", - "iot_breakfast": "Sn\u00eddan\u011b", + "iot_auto_universal_soil": "Auto univerzální 50 -60°C", + "iot_auto_wash_soil": "Automatické praní", + "iot_baby_care": "Péče o děti", + "iot_breakfast": "Snídaně", "iot_checkup": "Kontrola", - "iot_china_crystals": "\u010c\u00ednsk\u00fd k\u0159i\u0161\u0165\u00e1l", - "iot_classe_a_59": "Rychl\u00fd 59'", - "iot_cocktail_glasses": "Koktejlov\u00e9 sklenice", - "iot_cocktail_glasses_soil": "Koktejlov\u00e9 sklenice", - "iot_daily_care": "Ka\u017edodenn\u00ed p\u00e9\u010de", - "iot_daily_care_soil": "Ka\u017edodenn\u00ed p\u00e9\u010de", - "iot_delicate": "Jemn\u00fd 45\u00b0C", - "iot_dinner_for_two": "Ve\u010de\u0159e pro 2", - "iot_dinner_for_two_soil": "Ve\u010de\u0159e pro 2", + "iot_china_crystals": "Čínský křišťál", + "iot_classe_a_59": "Rychlý 59'", + "iot_cocktail_glasses": "Koktejlové sklenice", + "iot_cocktail_glasses_soil": "Koktejlové sklenice", + "iot_daily_care": "Každodenní péče", + "iot_daily_care_soil": "Každodenní péče", + "iot_delicate": "Jemný 45°C", + "iot_dinner_for_two": "Večeře pro 2", + "iot_dinner_for_two_soil": "Večeře pro 2", "iot_dreft_quick_cycle": "Dreft Quick", - "iot_eco_asynch": "Eko 45 \u00b0C", - "iot_eco_bldc": "Eko 45 \u00b0C", - "iot_eco_synch": "Eko 45 \u00b0C", + "iot_eco_asynch": "Eko 45 °C", + "iot_eco_bldc": "Eko 45 °C", + "iot_eco_synch": "Eko 45 °C", "iot_extra_hygiene": "Hygiena extra", "iot_fairy_quick_cycle": "Fairy Quick", "iot_happy_hour": "Happy Hour", "iot_jar_quick_cycle": "Jar Quick", "iot_party": "Party", "iot_party_soil": "Party", - "iot_pizza_menu": "N\u00e1dob\u00ed na pizzu", - "iot_pizza_menu_soil": "N\u00e1dob\u00ed na pizzu", - "iot_plastic_tupperware": "Plastov\u00e9 n\u00e1dob\u00ed a Tupperware", - "iot_porcelain": "Porcel\u00e1n", + "iot_pizza_menu": "Nádobí na pizzu", + "iot_pizza_menu_soil": "Nádobí na pizzu", + "iot_plastic_tupperware": "Plastové nádobí a Tupperware", + "iot_porcelain": "Porcelán", "iot_power_mix_wash": "Power Mix Wash", "iot_power_mix_wash_soil": "Power Mix Wash", - "iot_prewash": "P\u0159edp\u00edrka", - "iot_pyrex_and_glassware": "Pyrex a sklen\u011bn\u00e9 n\u00e1dob\u00ed", + "iot_prewash": "Předpírka", + "iot_pyrex_and_glassware": "Pyrex a skleněné nádobí", "iot_rapid_29": "Rychly 29'", - "iot_rapid_39": "Rychl\u00fd 39' 60 \u00b0C", + "iot_rapid_39": "Rychlý 39' 60 °C", "iot_single": "Jedna osoba", - "iot_steam": "Parn\u00ed 75 \u00b0C", - "iot_super_flash": "Super rychl\u00fd", - "iot_super_wash": "Super myt\u00ed", + "iot_steam": "Parní 75 °C", + "iot_super_flash": "Super rychlý", + "iot_super_wash": "Super mytí", "iot_turbopower": "TurboPower", - "iot_universal": "Univerz\u00e1ln\u00ed 60 \u00b0C", - "iot_wok_grids_maxi_pans": "Speci\u00e1ln\u00ed p\u00e1nve (Woky \u2013 m\u0159\u00ed\u017eky a velik\u00e9 p\u00e1nve)", - "iot_wok_grids_maxi_pans_soil": "Speci\u00e1ln\u00ed p\u00e1nve (Woky \u2013 m\u0159\u00ed\u017eky a velik\u00e9 p\u00e1nve)", + "iot_universal": "Univerzální 60 °C", + "iot_wok_grids_maxi_pans": "Speciální pánve (Woky – mřížky a veliké pánve)", + "iot_wok_grids_maxi_pans_soil": "Speciální pánve (Woky – mřížky a veliké pánve)", "iot_yes_quick_cycle": "Yes Quick", - "night": "Ultra tich\u00fd 55\u00b0C", - "prewash": "P\u0159edp\u00edrka", - "rapid_20": "Rychl\u00fd 20'", + "night": "Ultra tichý 55°C", + "prewash": "Předpírka", + "rapid_20": "Rychlý 20'", "rapid_24": "Rychly 24'", - "rapid_29": "Rychly 29' 50\u00b0C", + "rapid_29": "Rychly 29' 50°C", "rapid_35": "Wash&Dry 35'", - "rapid_39": "Rychl\u00fd 39' 60 \u00b0C", - "rapid_49": "Rychl\u00fd 49'", - "rapid_59": "Rychl\u00fd 59'", + "rapid_39": "Rychlý 39' 60 °C", + "rapid_49": "Rychlý 49'", + "rapid_59": "Rychlý 59'", "sanitising": "Dezinfekce", "silence": "Silence", "silent": "Noc", "silent_care": "Silent Care", "smart_ai": "Smart AI", - "special": "speci\u00e1ln\u00ed", - "special_pw_prz": "speci\u00e1ln\u00ed", - "steam": "Parn\u00ed 75 \u00b0C", - "steam_plus": "P\u00e1ra plus 75\u00a0\u00b0C", - "total_care": "Total Care 50\u00b0C", - "ultra_silence": "Ultra tich\u00fd 55\u00b0C", - "ultra_silent": "Ultra tich\u00fd 55\u00b0C", - "universal": "Univerz\u00e1ln\u00ed 60 \u00b0C", - "universal_plus": "Univerz\u00e1ln\u00ed Plus 70 \u00b0C", + "special": "speciální", + "special_pw_prz": "speciální", + "steam": "Parní 75 °C", + "steam_plus": "Pára plus 75 °C", + "total_care": "Total Care 50°C", + "ultra_silence": "Ultra tichý 55°C", + "ultra_silent": "Ultra tichý 55°C", + "universal": "Univerzální 60 °C", + "universal_plus": "Univerzální Plus 70 °C", "zoom_39": "Zoom 39 min" }, "name": "Program" }, "programs_ih": { "state": { - "iot_special_ash_brown": "Bramborov\u00e1 placka", - "iot_special_beef_fillet": "Sv\u00ed\u010dkov\u00e1", - "iot_special_beef_veal_stew": "Du\u0161en\u00e9 hov\u011bz\u00ed a telec\u00ed maso", - "iot_special_boiled_rice": "Va\u0159en\u00e1 r\u00fd\u017ee", - "iot_special_chicken_breast": "Ku\u0159ec\u00ed prsa", - "iot_special_chicken_legs": "Ku\u0159ec\u00ed stehna", - "iot_special_chocolate_pudding": "\u010cokol\u00e1dov\u00fd pudink", - "iot_special_entrecote": "Ro\u0161t\u011bn\u00e1", - "iot_special_fresh_tuna": "\u010cerstv\u00fd tu\u0148\u00e1k", - "iot_special_grilled_vegetables": "Grilovan\u00e1 zelenina", - "iot_special_lamb_cutlet": "Jehn\u011b\u010d\u00ed kotletka", - "iot_special_meatballs": "Masov\u00e9 kuli\u010dky", + "iot_special_ash_brown": "Bramborová placka", + "iot_special_beef_fillet": "Svíčková", + "iot_special_beef_veal_stew": "Dušené hovězí a telecí maso", + "iot_special_boiled_rice": "Vařená rýže", + "iot_special_chicken_breast": "Kuřecí prsa", + "iot_special_chicken_legs": "Kuřecí stehna", + "iot_special_chocolate_pudding": "Čokoládový pudink", + "iot_special_entrecote": "Roštěná", + "iot_special_fresh_tuna": "Čerstvý tuňák", + "iot_special_grilled_vegetables": "Grilovaná zelenina", + "iot_special_lamb_cutlet": "Jehněčí kotletka", + "iot_special_meatballs": "Masové kuličky", "iot_special_minestrone": "Minestrone", - "iot_special_mussels": "Sl\u00e1vky", + "iot_special_mussels": "Slávky", "iot_special_omelette": "Omeleta", - "iot_special_pancakes": "Pala\u010dinka", - "iot_special_paris_style_peas": "Hr\u00e1\u0161ek po pa\u0159\u00ed\u017esku", - "iot_special_poached_eggs": "S\u00e1zen\u00e1 vejce", - "iot_special_pork_fillet": "Vep\u0159ov\u00fd pl\u00e1tek", - "iot_special_pork_ribs": "Vep\u0159ov\u00e1 \u017eebra", + "iot_special_pancakes": "Palačinka", + "iot_special_paris_style_peas": "Hrášek po pařížsku", + "iot_special_poached_eggs": "Sázená vejce", + "iot_special_pork_fillet": "Vepřový plátek", + "iot_special_pork_ribs": "Vepřová žebra", "iot_special_prawns": "Krevety", "iot_special_quinoa": "Quinoa", "iot_special_ratatouille": "Ratatouille", "iot_special_salmon_fillet": "Filet z lososa", - "iot_special_saute_potatoes": "Restovan\u00e9 brambory", + "iot_special_saute_potatoes": "Restované brambory", "iot_special_scallops": "Lastury", - "iot_special_scrambled_eggs": "Sma\u017een\u00e1 vaj\u00ed\u010dka", - "iot_special_spelt": "\u0160palda", - "iot_special_veggy_noodles": "Vegetari\u00e1nsk\u00e9 nudle", - "iot_special_white_fish_fillet": "Filety z b\u00edl\u00fdch ryb", - "iot_standard_boiling": "Va\u0159en\u00ed", - "iot_standard_frying": "Sma\u017eit", - "iot_standard_keep_warm": "Udr\u017eov\u00e1n\u00ed tepla", + "iot_special_scrambled_eggs": "Smažená vajíčka", + "iot_special_spelt": "Špalda", + "iot_special_veggy_noodles": "Vegetariánské nudle", + "iot_special_white_fish_fillet": "Filety z bílých ryb", + "iot_standard_boiling": "Vaření", + "iot_standard_frying": "Smažit", + "iot_standard_keep_warm": "Udržování tepla", "iot_standard_melting": "Rozpustit", - "iot_standard_simmering": "Slab\u00e9 va\u0159en\u00ed" + "iot_standard_simmering": "Slabé vaření" }, "name": "Program" }, "programs_ov": { "state": { - "bakery": "T\u011bstoviny a pe\u010divo", - "bakery_steam": "Chl\u00e9b pe\u010den\u00fd v p\u00e1\u0159e", - "bottom_heating": "Spodn\u00ed oh\u0159ev", - "bottom_heating_fan": "Spodn\u00ed oh\u0159ev + ventil\u00e1tor", - "bread": "Chl\u00e9b", - "bread_steam": "Pe\u010divo pe\u010den\u00e9 v p\u00e1\u0159e", - "convection_fan": "Statick\u00fd + ventil\u00e1tor", - "convection_fan_turnspit": "Konvekce + ventil\u00e1tor + ro\u017ee\u0148", - "conventional": "Statick\u00fd", - "conventional_turnspit": "Konvek\u010dn\u00ed + ro\u017ee\u0148", - "defrost": "Rozmrazov\u00e1n\u00ed", - "descaling": "Odstra\u0148ov\u00e1n\u00ed vodn\u00edho kamene", + "bakery": "Těstoviny a pečivo", + "bakery_steam": "Chléb pečený v páře", + "bottom_heating": "Spodní ohřev", + "bottom_heating_fan": "Spodní ohřev + ventilátor", + "bread": "Chléb", + "bread_steam": "Pečivo pečené v páře", + "convection_fan": "Statický + ventilátor", + "convection_fan_turnspit": "Konvekce + ventilátor + rožeň", + "conventional": "Statický", + "conventional_turnspit": "Konvekční + rožeň", + "defrost": "Rozmrazování", + "descaling": "Odstraňování vodního kamene", "fish": "Ryby", - "fish_steam": "Ryby p\u0159ipravovan\u00e9 v p\u00e1\u0159e", + "fish_steam": "Ryby připravované v páře", "grill_cata": "Gril", - "grill_fan_cata": "Ventil\u00e1tor grilu", - "grill_fan_pyro": "Gril + ventil\u00e1tor", + "grill_fan_cata": "Ventilátor grilu", + "grill_fan_pyro": "Gril + ventilátor", "grill_pyro": "Gril", "h20_clean": "H2O-Clean", - "iot_bread": "Chl\u00e9b", + "iot_bread": "Chléb", "iot_h20_clean": "h2O clean", - "leavening": "Kynut\u00ed", - "low_temp_cooking": "P\u0159\u00edprava p\u0159i n\u00edzk\u00fdch teplot\u00e1ch", - "low_temp_cooking_fish": "P\u0159\u00edprava ryb p\u0159i n\u00edzk\u00fdch teplot\u00e1ch", - "low_temp_cooking_fish_steam": "P\u0159\u00edprava ryb v p\u00e1\u0159e p\u0159i n\u00edzk\u00fdch teplot\u00e1ch", - "low_temp_cooking_meat": "P\u0159\u00edprava masa p\u0159i n\u00edzk\u00fdch teplot\u00e1ch", - "low_temp_cooking_meat_steam": "P\u0159\u00edprava masa v p\u00e1\u0159e p\u0159i n\u00edzk\u00fdch teplot\u00e1ch", - "low_temp_cooking_steam": "P\u0159\u00edprava v p\u00e1\u0159e p\u0159i n\u00edzk\u00fdch teplot\u00e1ch", + "leavening": "Kynutí", + "low_temp_cooking": "Příprava při nízkých teplotách", + "low_temp_cooking_fish": "Příprava ryb při nízkých teplotách", + "low_temp_cooking_fish_steam": "Příprava ryb v páře při nízkých teplotách", + "low_temp_cooking_meat": "Příprava masa při nízkých teplotách", + "low_temp_cooking_meat_steam": "Příprava masa v páře při nízkých teplotách", + "low_temp_cooking_steam": "Příprava v páře při nízkých teplotách", "meat": "Maso", - "meat_steam": "Maso p\u0159ipravovan\u00e9 v p\u00e1\u0159e", - "multi_level": "V\u00edce\u00farov\u0148ov\u00e9", + "meat_steam": "Maso připravované v páře", + "multi_level": "Víceúrovňové", "paella": "Paella", - "pasta_and_bakery": "T\u011bstoviny a pe\u010divo", + "pasta_and_bakery": "Těstoviny a pečivo", "pizza": "Pizza", - "pyrolysis": "Pyrol\u00fdza", - "pyrolysis_plus": "Pyrol\u00fdza +", - "red_meat": "Tmav\u00e9 maso", - "red_meat_steam": "\u010cerven\u00e9 maso p\u0159ipravovan\u00e9 v p\u00e1\u0159e", + "pyrolysis": "Pyrolýza", + "pyrolysis_plus": "Pyrolýza +", + "red_meat": "Tmavé maso", + "red_meat_steam": "Červené maso připravované v páře", "regenerate": "Regenerace", "soft_plus": "Soft +", "super_grill": "Super gril", "tailor_bake": "Tailor bake", "tailor_bake_cata": "Tailor Bake", - "tailor_bake_desctiption": "Tato funkce je ide\u00e1ln\u00ed pro p\u0159\u00edpravu pokrm\u016f, kter\u00e9 jsou uvnit\u0159 m\u011bkk\u00e9 a na povrchu k\u0159upav\u00e9.\r\r\r\r\r\r\r\r\r\nTato funkce sni\u017euje pot\u0159ebn\u00e9 mno\u017estv\u00ed tuku nebo oleje pro zdravou dietu.\r\r\r\r\r\r\r\r\r\nKombinace topn\u00fdch t\u011bles s cyklem pulzuj\u00edc\u00edho vzduchu zaru\u010duje dokonal\u00e9 v\u00fdsledky pe\u010den\u00ed.", "tailor_bake_pyro": "Tailor Bake", "vegetables": "Zelenina", "vegetables_cata": "Zelenina", "vegetables_pyro": "Zelenina", "water_discharge": "Odtok vody", - "white_meat": "B\u00edl\u00e9 maso", - "white_meat_steam": "B\u00edl\u00e9 maso p\u0159ipravovan\u00e9 v p\u00e1\u0159e" + "white_meat": "Bílé maso", + "white_meat_steam": "Bílé maso připravované v páře" }, "name": "Program" }, "programs_td": { "state": { - "active_dry": "Aktivn\u00ed su\u0161en\u00ed", - "allergy_care": "Antialergick\u00fd", + "active_dry": "Aktivní sušení", + "allergy_care": "Antialergický", "all_in_one": "All in One", - "antiallergy": "Antialergick\u00fd", - "anti_odours": "Proti z\u00e1pachu", - "auto_care": "Automatick\u00e1 p\u00e9\u010de", - "baby": "D\u011btsk\u00e9", - "bed_quilt": "Lo\u017en\u00ed p\u0159ikr\u00fdvka", - "care_30": "P\u00e9\u010de 30", - "care_45": "P\u00e9\u010de 45", - "care_59": "P\u00e9\u010de 59", - "coloured": "Barevn\u00e9", + "antiallergy": "Antialergický", + "anti_odours": "Proti zápachu", + "auto_care": "Automatická péče", + "baby": "Dětské", + "bed_quilt": "Ložní přikrývka", + "care_30": "Péče 30", + "care_45": "Péče 45", + "care_59": "Péče 59", + "coloured": "Barevné", "daily_45_min": "DENNI 45'", "daily_perfect_59_min": "DENNI PERFEKTNI 59'", - "darks_and_coloured": "Tmav\u00e9 a barevn\u00e9", - "delicates": "Jemn\u00e9", - "duvet": "P\u0159ikr\u00fdvky", + "darks_and_coloured": "Tmavé a barevné", + "delicates": "Jemné", + "duvet": "Přikrývky", "eco": "Eco bavlna", "ecospeed_cottons": "Ecospeed bavlna", "ecospeed_delicates": "Eco rychly - jemne", - "ecospeed_mixed": "Ecospeed sm\u011bsn\u00e9", + "ecospeed_mixed": "Ecospeed směsné", "extra_hygiene": "HYGIENA EXTRA", - "fitness": "Cvi\u010den\u00ed", - "fresh_care": "Sv\u011b\u017e\u00ed p\u00e9\u010de", + "fitness": "Cvičení", + "fresh_care": "Svěží péče", "genius": "Genius", "hqd_baby_care": "Baby Care", - "hqd_bath_towel": "Ru\u010dn\u00edky", - "hqd_bed_sheets": "Povle\u010den\u00ed", - "hqd_bulky": "Objemn\u00e9 kusy", + "hqd_bath_towel": "Ručníky", + "hqd_bed_sheets": "Povlečení", + "hqd_bulky": "Objemné kusy", "hqd_casual": "Casual", - "hqd_cold_wind_30": "Chladn\u00fd v\u00e1nek 30\u00a0minut", - "hqd_cold_wind_timing": "Chladn\u00fd v\u00e1nek ", + "hqd_cold_wind_30": "Chladný vánek 30 minut", + "hqd_cold_wind_timing": "Chladný vánek ", "hqd_cotton": "Bavlna", - "hqd_curtain": "Z\u00e1clony", - "hqd_delicate": "Jemn\u00e9", + "hqd_curtain": "Záclony", + "hqd_delicate": "Jemné", "hqd_diaper": "Pleny", - "hqd_duvet": "P\u0159ikr\u00fdvky", - "hqd_feather": "Pro\u0161\u00edvan\u00e9 bundy", - "hqd_hot_wind_timing": "Hork\u00fd vzduch", + "hqd_duvet": "Přikrývky", + "hqd_feather": "Prošívané bundy", + "hqd_hot_wind_timing": "Horký vzduch", "hqd_hygienic": "Dezinfekce", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", "hqd_jacket": "Bundy", - "hqd_jeans": "D\u017e\u00edny", - "hqd_luxury": "Luxusn\u00ed", - "hqd_mix": "Sm\u011bsn\u00e9", - "hqd_night_dry": "Su\u0161en\u00ed p\u0159es noc", + "hqd_jeans": "Džíny", + "hqd_luxury": "Luxusní", + "hqd_mix": "Směsné", + "hqd_night_dry": "Sušení přes noc", "hqd_outdoor": "Outdoor", "hqd_precious_cure": "Precious cure", - "hqd_quick_20": "Rychl\u00fd 20", - "hqd_quick_30": "Rychl\u00fd 30", - "hqd_quick_dry": "Rychl\u00e9 su\u0161en\u00ed", + "hqd_quick_20": "Rychlý 20", + "hqd_quick_30": "Rychlý 30", + "hqd_quick_dry": "Rychlé sušení", "hqd_quilt": "Deky", - "hqd_refresh": "Osv\u011b\u017een\u00ed", - "hqd_school_uniform": "\u0160koln\u00ed uniformy", - "hqd_shirt": "Ko\u0161ile", + "hqd_refresh": "Osvěžení", + "hqd_school_uniform": "Školní uniformy", + "hqd_shirt": "Košile", "hqd_shoes": "Obuv", - "hqd_silk": "Hedv\u00e1b\u00ed", - "hqd_sports": "Sportovn\u00ed", + "hqd_silk": "Hedvábí", + "hqd_sports": "Sportovní", "hqd_synthetics": "Syntetika", - "hqd_timer": "Na\u010dasov\u00e1no", - "hqd_towel": "Ru\u010dn\u00edky", - "hqd_underwear": "Spodn\u00ed pr\u00e1dlo", - "hqd_warm_up": "Oh\u0159\u00e1t\u00ed", + "hqd_timer": "Načasováno", + "hqd_towel": "Ručníky", + "hqd_underwear": "Spodní prádlo", + "hqd_warm_up": "Ohřátí", "hqd_wool": "Vlna", - "hqd_working_suit": "Pracovn\u00ed od\u011bvy", + "hqd_working_suit": "Pracovní oděvy", "hygiene": "Hygiena", "iot_checkup": "Kontrola", - "iot_dry_anti_mites": "Proti rozto\u010d\u016fm", - "iot_dry_baby": "D\u011btsk\u00e9", + "iot_dry_anti_mites": "Proti roztočům", + "iot_dry_baby": "Dětské", "iot_dry_backpacks": "Batohy", - "iot_dry_bathrobe": "\u017dupany", - "iot_dry_bed_linen": "Lo\u017en\u00ed pr\u00e1dlo", - "iot_dry_bed_quilt": "Lo\u017en\u00ed p\u0159ikr\u00fdvka", + "iot_dry_bathrobe": "Župany", + "iot_dry_bed_linen": "Ložní prádlo", + "iot_dry_bed_quilt": "Ložní přikrývka", "iot_dry_cotton": "Bavlna", - "iot_dry_cuddly_toys": "Ply\u0161ov\u00e9 hra\u010dky", - "iot_dry_curtains": "Z\u00e1v\u011bsy", - "iot_dry_dehumidifier": "Odstra\u0148ova\u010d vlhkosti", - "iot_dry_delicates": "Jemn\u00e9 pr\u00e1dlo", - "iot_dry_delicate_tablecloths": "Jemn\u00e9 ubrusy", - "iot_dry_denim_jeans": "D\u017e\u00ednovina - d\u017e\u00edny", + "iot_dry_cuddly_toys": "Plyšové hračky", + "iot_dry_curtains": "Závěsy", + "iot_dry_dehumidifier": "Odstraňovač vlhkosti", + "iot_dry_delicates": "Jemné prádlo", + "iot_dry_delicate_tablecloths": "Jemné ubrusy", + "iot_dry_denim_jeans": "Džínovina - džíny", "iot_dry_down_jacket": "Jacket", - "iot_dry_duvet": "P\u0159ikr\u00fdvky", - "iot_dry_easy_iron_cotton": "Super snadn\u00e9 \u017eehlen\u00ed", - "iot_dry_easy_iron_synthetics": "Velmi snadn\u00e9 \u017eehlen\u00ed - syntetika", - "iot_dry_gym_fit": "Sportovn\u00ed oble\u010den\u00ed", - "iot_dry_lingerie": "Spodn\u00ed pr\u00e1dlo", - "iot_dry_mixed": "Sm\u00ed\u0161en\u00e9", - "iot_dry_playsuits": "Tepl\u00e1ky", + "iot_dry_duvet": "Přikrývky", + "iot_dry_easy_iron_cotton": "Super snadné žehlení", + "iot_dry_easy_iron_synthetics": "Velmi snadné žehlení - syntetika", + "iot_dry_gym_fit": "Sportovní oblečení", + "iot_dry_lingerie": "Spodní prádlo", + "iot_dry_mixed": "Smíšené", + "iot_dry_playsuits": "Tepláky", "iot_dry_rapid_30": "Rapid 30", - "iot_dry_rapid_59": "Rychl\u00fd 59'.", - "iot_dry_refresh": "Osv\u011b\u017een\u00ed", - "iot_dry_regenerates_waterproof": "O\u017eiven\u00ed nepromokav\u00fdch tkanin", - "iot_dry_relax_creases": "Uvoln\u011bn\u00ed z\u00e1hyb\u016f", - "iot_dry_shirts": "Ko\u0161ile", - "iot_dry_small_load": "Mal\u00e1 n\u00e1pl\u0148", + "iot_dry_rapid_59": "Rychlý 59'.", + "iot_dry_refresh": "Osvěžení", + "iot_dry_regenerates_waterproof": "Oživení nepromokavých tkanin", + "iot_dry_relax_creases": "Uvolnění záhybů", + "iot_dry_shirts": "Košile", + "iot_dry_small_load": "Malá náplň", "iot_dry_swimsuits_and_bikinis": "Plavky", "iot_dry_synthetics": "Syntetika", - "iot_dry_synthetic_dry": "Syntetika - such\u00e9", + "iot_dry_synthetic_dry": "Syntetika - suché", "iot_dry_tablecloths": "Ubrusy", - "iot_dry_technical_fabrics": "Technick\u00e9 tkaniny", - "iot_dry_warm_embrace": "D\u011btsk\u00e1 zavinova\u010dka", + "iot_dry_technical_fabrics": "Technické tkaniny", + "iot_dry_warm_embrace": "Dětská zavinovačka", "iot_dry_wool": "Woolmark", - "jeans": "D\u017e\u00edny", - "mix_and_dry": "Mix a such\u00e9", - "pets": "Zv\u00ed\u0159ata", - "pre_iron": "P\u0159ed \u017eehlen\u00edm", + "jeans": "Džíny", + "mix_and_dry": "Mix a suché", + "pets": "Zvířata", + "pre_iron": "Před žehlením", "rapid_30": "Rapid 30", - "rapid_45": "Rychl\u00fd 45 min", - "rapid_59": "Perfektn\u011b rychl\u00fd 59 min", - "refresh": "Osv\u011b\u017een\u00ed", - "relax_creases": "Uvoln\u011bn\u00ed z\u00e1hyb\u016f", + "rapid_45": "Rychlý 45 min", + "rapid_59": "Perfektně rychlý 59 min", + "refresh": "Osvěžení", + "relax_creases": "Uvolnění záhybů", "saving_30_min": "USPORNY 30'", - "shirts": "Ko\u0161ile", + "shirts": "Košile", "shoes": "Obuv", - "small_load": "Mal\u00e1 n\u00e1pl\u0148", - "soft_care": "M\u011bkk\u00e1 p\u00e9\u010de", + "small_load": "Malá náplň", + "soft_care": "Měkká péče", "sport_plus": "Sport", - "super_easy_iron_misti": "Velmi snadn\u00e9 \u017eehlen\u00ed \u2013 sm\u00ed\u0161en\u00e9", - "super_easy_iron_xxl": "Velmi snadn\u00e9 \u017eehlen\u00ed \u2013 XXL", - "super_fast_cottons": "Super rychl\u00fd bavlna", - "super_fast_delicates": "Super rychl\u00fd jemn\u00e9", + "super_easy_iron_misti": "Velmi snadné žehlení – smíšené", + "super_easy_iron_xxl": "Velmi snadné žehlení – XXL", + "super_fast_cottons": "Super rychlý bavlna", + "super_fast_delicates": "Super rychlý jemné", "synthetics": "Syntetika", "total_care": "Total Care", - "trainers": "Sportovn\u00ed obuv", + "trainers": "Sportovní obuv", "ultra_care": "Ultra Care", - "waterproof_revitalize": "Obnoven\u00ed vod\u011bodolnosti", - "whites": "B\u00edl\u00e9 pr\u00e1dlo", - "wool": "Su\u0161en\u00ed vlny", + "waterproof_revitalize": "Obnovení voděodolnosti", + "whites": "Bílé prádlo", + "wool": "Sušení vlny", "woolmark": "Woolmark", - "xxl_load": "XXL n\u00e1pl\u0148", + "xxl_load": "XXL náplň", "zoom_59": "Zoom 59" }, "name": "Program" }, "programs_wm": { "state": { - "20_degrees_coloured_cottons": "20\u00b0 barevn\u00e9 a bavln\u011bn\u00e9 l\u00e1tky", - "20_degrees_new_energy_label": "20 \u00b0C", - "active_steam": "P\u00e1ra", - "active_wash": "Aktivn\u00ed pran\u00ed", - "active_wash_steam": "Aktivn\u00ed pran\u00ed", - "allergy_care": "Antialergick\u00e1 p\u00e9\u010de", - "allergy_care_pro": "Antialergick\u00e1 p\u00e9\u010de Pro", - "all_in_one_49": "V\u0161e v jednom 49'.", - "all_in_one_59": "V\u0161e v jednom 59'.", - "all_in_one_59_steam": "Aktivn\u00ed pran\u00ed + p\u00e1ra", + "20_degrees_coloured_cottons": "20° barevné a bavlněné látky", + "20_degrees_new_energy_label": "20 °C", + "active_steam": "Pára", + "active_wash": "Aktivní praní", + "active_wash_steam": "Aktivní praní", + "allergy_care": "Antialergická péče", + "allergy_care_pro": "Antialergická péče Pro", + "all_in_one_49": "Vše v jednom 49'.", + "all_in_one_59": "Vše v jednom 59'.", + "all_in_one_59_steam": "Aktivní praní + pára", "autocare": "Autocare", - "autoclean": "\u010ci\u0161t\u011bn\u00ed bubnu", - "baby_60": "V\u0161echno d\u011btsk\u00e9 60\u00b0C", + "autoclean": "Čištění bubnu", + "baby_60": "Všechno dětské 60°C", "care_14": "Rapid care 14'", "care_30": "Rapid care 30'", "care_44": "Rapid Care 44'", "checkup": "Kontrola", - "colour_59": "Barevn\u00e9 59'", - "colour_59_steam": "Barevn\u00e9 59'' + p\u00e1ra", + "colour_59": "Barevné 59'", + "colour_59_steam": "Barevné 59'' + pára", "cottons": "Bavlna", - "cottons_prewash": "Bavlna + p\u0159edp\u00edrka", - "cottons_steam": "Bavlna + P\u00e1ra", + "cottons_prewash": "Bavlna + předpírka", + "cottons_steam": "Bavlna + Pára", "cotton_care_59": "Cotton Care 59'", - "delicate_59": "Jemn\u00e9 59'", - "delicate_silk": "Jemn\u00e9 hedv\u00e1b\u00ed", - "delicate_silk_steam": "Jemn\u00e9 hedv\u00e1b\u00ed + p\u00e1ra", - "delicati_59": "Jemn\u00e9 59'", - "delicati_59_steam": "Jemn\u00e9 59'", - "drain_spin": "Od\u010derp\u00e1n\u00ed + odst\u0159ed\u011bn\u00ed", - "easy_iron": "Snadn\u00e9 \u017eehlen\u00ed", + "delicate_59": "Jemné 59'", + "delicate_silk": "Jemné hedvábí", + "delicate_silk_steam": "Jemné hedvábí + pára", + "delicati_59": "Jemné 59'", + "delicati_59_steam": "Jemné 59'", + "drain_spin": "Odčerpání + odstředění", + "easy_iron": "Snadné žehlení", "eco_40_60_new_energy_label": "Eco 40-60", - "extra_care": "Extra P\u00e9\u010de", - "fitness": "Cvi\u010den\u00ed P\u00e9\u010de", - "fitness_care": "Cvi\u010den\u00ed P\u00e9\u010de", - "fresh_care": "Sv\u011b\u017e\u00ed p\u00e9\u010de", - "fresh_care_steam": "Sv\u011b\u017e\u00ed p\u00e9\u010de + p\u00e1ra", - "handwash_wool": "Ru\u010dn\u00ed pran\u00ed a vlna", - "high_dry": "Bavlna - such\u00e9", - "hqd_20_degrees": "Bavlna 20\u00a0\u2103", - "hqd_allergy": "Antialergick\u00e1 p\u00e9\u010de", - "hqd_autoclean": "\u010ci\u0161t\u011bn\u00ed bubnu", - "hqd_babycare": "P\u00e9\u010de o d\u011bti", + "extra_care": "Extra Péče", + "fitness": "Cvičení Péče", + "fitness_care": "Cvičení Péče", + "fresh_care": "Svěží péče", + "fresh_care_steam": "Svěží péče + pára", + "handwash_wool": "Ruční praní a vlna", + "high_dry": "Bavlna - suché", + "hqd_20_degrees": "Bavlna 20 ℃", + "hqd_allergy": "Antialergická péče", + "hqd_autoclean": "Čištění bubnu", + "hqd_babycare": "Péče o děti", "hqd_checkup": "Kontrola", "hqd_cottons": "Bavlna", - "hqd_delicate": "Jemn\u00e9", - "hqd_delicate_cradle": "Jemn\u00e9", - "hqd_dry": "Bavlna - such\u00e9", - "hqd_dry_synthetics": "Sm\u011bsn\u00e9 - such\u00e9", - "hqd_duvet": "P\u0159ikr\u00fdvky", + "hqd_delicate": "Jemné", + "hqd_delicate_cradle": "Jemné", + "hqd_dry": "Bavlna - suché", + "hqd_dry_synthetics": "Směsné - suché", + "hqd_duvet": "Přikrývky", "hqd_eco_40_60_degrees": "Eco 40-60", "hqd_handwash_wool": "Vlna", "hqd_i_refresh": "i-Refresh", - "hqd_mix": "Sm\u00ed\u0161en\u00e9", - "hqd_quick_15": "Rychl\u00fd 15'", - "hqd_quick_wash_57": "Rychl\u00e9 pran\u00ed 57 min", - "hqd_rapid_wash_and_dry": "Pran\u00ed a su\u0161en\u00ed", - "hqd_refresh": "Osv\u011b\u017een\u00ed", - "hqd_rinse": "M\u00e1ch\u00e1n\u00ed", - "hqd_shirts": "Ko\u0161ile", + "hqd_mix": "Smíšené", + "hqd_quick_15": "Rychlý 15'", + "hqd_quick_wash_57": "Rychlé praní 57 min", + "hqd_rapid_wash_and_dry": "Praní a sušení", + "hqd_refresh": "Osvěžení", + "hqd_rinse": "Máchání", + "hqd_shirts": "Košile", "hqd_smart": "Smart A.I.", - "hqd_spin": "Odst\u0159e\u010fov\u00e1n\u00ed", - "hqd_sport": "Sportovn\u00ed", - "hqd_super_fast": "Rychl\u00fd 39\u2019", + "hqd_spin": "Odstřeďování", + "hqd_sport": "Sportovní", + "hqd_super_fast": "Rychlý 39’", "hqd_synthetic_and_coloured": "Syntetika", "hygiene_59": "Hygienicky Plus 59'", - "hygiene_60": "Hygienick\u00fd 60\u00b0", + "hygiene_60": "Hygienický 60°", "hygiene_plus_59": "Hygienicky Plus 59'", "hygiene_plus_59_min": "Hygienicky Plus 59'", - "hygiene_pro_49_min": "Hygienick\u00fd Pro 49 min", - "hygiene_pro_steam": "Hygiene Pro + p\u00e1ra", - "intensive_40": "Intenzivn\u00ed 40\u00b0C", - "intensive_40_steam": "Intenzivn\u00ed 40\u00b0C + p\u00e1ra", - "iot_active_steam": "P\u00e1ra", - "iot_active_wash_steam": "Aktivn\u00ed pran\u00ed", - "iot_allergy_care_pro": "Antialergick\u00e1 p\u00e9\u010de Pro", - "iot_all_in_one_59_steam": "Aktivn\u00ed pran\u00ed + p\u00e1ra", + "hygiene_pro_49_min": "Hygienický Pro 49 min", + "hygiene_pro_steam": "Hygiene Pro + pára", + "intensive_40": "Intenzivní 40°C", + "intensive_40_steam": "Intenzivní 40°C + pára", + "iot_active_steam": "Pára", + "iot_active_wash_steam": "Aktivní praní", + "iot_allergy_care_pro": "Antialergická péče Pro", + "iot_all_in_one_59_steam": "Aktivní praní + pára", "iot_checkup": "Kontrola", - "iot_colour_59_steam": "Barevn\u00e9 59'' + p\u00e1ra", - "iot_cottons_steam": "Bavlna + P\u00e1ra", - "iot_delicate_silk_steam": "Jemn\u00e9 hedv\u00e1b\u00ed + p\u00e1ra", - "iot_delicati_59_steam": "Jemn\u00e9 59'", - "iot_dry_air_refresh": "Osv\u011b\u017een\u00ed", - "iot_dry_anti_mites": "Proti rozto\u010d\u016fm", - "iot_dry_baby": "D\u011btsk\u00e9", + "iot_colour_59_steam": "Barevné 59'' + pára", + "iot_cottons_steam": "Bavlna + Pára", + "iot_delicate_silk_steam": "Jemné hedvábí + pára", + "iot_delicati_59_steam": "Jemné 59'", + "iot_dry_air_refresh": "Osvěžení", + "iot_dry_anti_mites": "Proti roztočům", + "iot_dry_baby": "Dětské", "iot_dry_backpacks": "Batohy", - "iot_dry_bathrobe": "\u017dupany a por\u00e9zn\u00ed tkaniny", - "iot_dry_bed_linen": "Lo\u017en\u00ed pr\u00e1dlo", - "iot_dry_cotton_dry": "Bavlna - such\u00e9", - "iot_dry_cuddly_toys": "Ply\u0161ov\u00e9 hra\u010dky", - "iot_dry_curtains": "Z\u00e1clony", - "iot_dry_dehumidifier": "Odstra\u0148ova\u010d vlhkosti", - "iot_dry_delicates_antiallergy": "Jemn\u00e9 - antialergenn\u00ed", - "iot_dry_delicate_tablecloths": "Jemn\u00e9 ubrusy", - "iot_dry_denim_jeans": "D\u017e\u00ednovina - d\u017e\u00edny", - "iot_dry_easy_iron_cotton": "Snadn\u00e9 \u017eehlen\u00ed - bavlna", - "iot_dry_easy_iron_synthetics": "Snadn\u00e9 \u017eehlen\u00ed - syntetika", - "iot_dry_gym_fit": "Od\u011bvy na cvi\u010den\u00ed", - "iot_dry_lingerie": "Spodn\u00ed pr\u00e1dlo", - "iot_dry_mixed_dry": "Sm\u011bsn\u00e9 - such\u00e9", - "iot_dry_rapid_60_min_delicates": "Rychl\u00fd 60' - jemn\u00e9", - "iot_dry_shirts": "Ko\u0161ile", + "iot_dry_bathrobe": "Župany a porézní tkaniny", + "iot_dry_bed_linen": "Ložní prádlo", + "iot_dry_cotton_dry": "Bavlna - suché", + "iot_dry_cuddly_toys": "Plyšové hračky", + "iot_dry_curtains": "Záclony", + "iot_dry_dehumidifier": "Odstraňovač vlhkosti", + "iot_dry_delicates_antiallergy": "Jemné - antialergenní", + "iot_dry_delicate_tablecloths": "Jemné ubrusy", + "iot_dry_denim_jeans": "Džínovina - džíny", + "iot_dry_easy_iron_cotton": "Snadné žehlení - bavlna", + "iot_dry_easy_iron_synthetics": "Snadné žehlení - syntetika", + "iot_dry_gym_fit": "Oděvy na cvičení", + "iot_dry_lingerie": "Spodní prádlo", + "iot_dry_mixed_dry": "Směsné - suché", + "iot_dry_rapid_60_min_delicates": "Rychlý 60' - jemné", + "iot_dry_shirts": "Košile", "iot_dry_swimsuits_and_bikinis": "Plavky", - "iot_dry_synthetics": "Syntetika - such\u00e9", - "iot_dry_synthetic_dry": "Syntetika - such\u00e9", + "iot_dry_synthetics": "Syntetika - suché", + "iot_dry_synthetic_dry": "Syntetika - suché", "iot_dry_tablecloths": "Ubrusy", - "iot_dry_technical_fabrics": "Technick\u00e9 tkaniny", - "iot_dry_warm_embrace": "H\u0159ejiv\u00e9 pr\u00e1dlo", - "iot_dry_wool_dry": "Vlna - such\u00e9", - "iot_easy_iron": "Snadn\u00e9 \u017eehlen\u00ed", - "iot_fresh_care_steam": "Sv\u011b\u017e\u00ed p\u00e9\u010de + p\u00e1ra", - "iot_hygiene_pro_steam": "Hygiene Pro + p\u00e1ra", - "iot_intensive_40_steam": "Intenzivn\u00ed 40\u00b0C + p\u00e1ra", - "iot_mixed_steam": "Sm\u00ed\u0161en\u00e9 + P\u00e1ra", - "iot_mix_and_colour_59_steam": "Sm\u00ed\u0161en\u00e9 a barevn\u00e9 59' + p\u00e1ra", + "iot_dry_technical_fabrics": "Technické tkaniny", + "iot_dry_warm_embrace": "Hřejivé prádlo", + "iot_dry_wool_dry": "Vlna - suché", + "iot_easy_iron": "Snadné žehlení", + "iot_fresh_care_steam": "Svěží péče + pára", + "iot_hygiene_pro_steam": "Hygiene Pro + pára", + "iot_intensive_40_steam": "Intenzivní 40°C + pára", + "iot_mixed_steam": "Smíšené + Pára", + "iot_mix_and_colour_59_steam": "Smíšené a barevné 59' + pára", "iot_perfect_cotton_59_steam": "Perfektni Bavlna 59'", - "iot_rapid_a_class_60_steam": "Rychl\u00e1 t\u0159\u00edda A 60 + p\u00e1ra", - "iot_resistant_cotton_steam": "Bavlna + P\u00e1ra", - "iot_shirts_steam": "Ko\u0161ile + p\u00e1ra", - "iot_single_item_steam": "Jedna polo\u017eka + p\u00e1ra", - "iot_smart_wash": "Chytr\u00e9 pran\u00ed", + "iot_rapid_a_class_60_steam": "Rychlá třída A 60 + pára", + "iot_resistant_cotton_steam": "Bavlna + Pára", + "iot_shirts_steam": "Košile + pára", + "iot_single_item_steam": "Jedna položka + pára", + "iot_smart_wash": "Chytré praní", "iot_soft_care_steam": "Soft Care + Steam", - "iot_special_39_full_load_steam": "Speci\u00e1ln\u00ed 39' + p\u00e1ra", - "iot_steam_hygiene_plus": "Hygiena plus p\u00e1ra ", - "iot_synthetic_and_coloured_steam": "Syntetika a barevn\u00e9 + p\u00e1ra", - "iot_wash_and_dry": "Pran\u00ed a su\u0161en\u00ed", - "iot_wash_anti_mites": "Proti rozto\u010d\u016fm", - "iot_wash_anti_odor": "Protiz\u00e1pachov\u00fd", + "iot_special_39_full_load_steam": "Speciální 39' + pára", + "iot_steam_hygiene_plus": "Hygiena plus pára ", + "iot_synthetic_and_coloured_steam": "Syntetika a barevné + pára", + "iot_wash_and_dry": "Praní a sušení", + "iot_wash_anti_mites": "Proti roztočům", + "iot_wash_anti_odor": "Protizápachový", "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", "iot_wash_baby_sanitizer": "Dezinfekce", - "iot_wash_baby_sanitizer_steam": "D\u011btsk\u00e1 dezinfekce + p\u00e1ra", + "iot_wash_baby_sanitizer_steam": "Dětská dezinfekce + pára", "iot_wash_backpacks": "Batohy", "iot_wash_backpacks_zelig": "Batohy", - "iot_wash_bathrobe": "\u017dupany a ru\u010dn\u00edky", - "iot_wash_bathrobe_steam": "\u017dupany + P\u00e1ra", - "iot_wash_bed_linen": "Lo\u017en\u00ed pr\u00e1dlo", - "iot_wash_bed_linen_steam": "Lo\u017en\u00ed pr\u00e1dlo + P\u00e1ra", - "iot_wash_bed_linen_zelig": "Lo\u017en\u00ed pr\u00e1dlo", - "iot_wash_big_single_load": "Jeden velk\u00fd kus", - "iot_wash_bleaching": "B\u011blen\u00ed", + "iot_wash_bathrobe": "Župany a ručníky", + "iot_wash_bathrobe_steam": "Župany + Pára", + "iot_wash_bed_linen": "Ložní prádlo", + "iot_wash_bed_linen_steam": "Ložní prádlo + Pára", + "iot_wash_bed_linen_zelig": "Ložní prádlo", + "iot_wash_big_single_load": "Jeden velký kus", + "iot_wash_bleaching": "Bělení", "iot_wash_blood_stains": "Skvrny od krve", - "iot_wash_cashmere": "Ka\u0161m\u00edr", - "iot_wash_chocolate_stains": "\u010cokol\u00e1dov\u00e9 skvrny", - "iot_wash_cold_wash": "Pran\u00ed za studena", - "iot_wash_colored": "Barevn\u00e9", - "iot_wash_colored_anti_stain": "Odstra\u0148ov\u00e1n\u00ed skvrn pro barevn\u00e9 pr\u00e1dlo", - "iot_wash_colored_delicate": "Barevn\u00e9 jemn\u00e9", - "iot_wash_coloured": "Barevn\u00e9", - "iot_wash_coloured_bed_linen": "Barevn\u00e9 lo\u017en\u00ed pr\u00e1dlo", - "iot_wash_coloured_bed_linen_steam": "Barevn\u00e9 lo\u017en\u00ed pr\u00e1dlo + p\u00e1ra", - "iot_wash_coloured_curtains": "Barevn\u00e9 z\u00e1clony", - "iot_wash_coloured_shirts": "Barevn\u00e9 ko\u0161ile", - "iot_wash_coloured_shirts_steam": "Barevn\u00e9 ko\u0161ile + p\u00e1ra", - "iot_wash_coloured_steam": "Barevn\u00e9 + P\u00e1ra", - "iot_wash_coloured_tableclothes": "Barevn\u00e9 ubrusy", - "iot_wash_coloured_tableclothes_steam": "Barevn\u00e9 ubrusy + p\u00e1ra", + "iot_wash_cashmere": "Kašmír", + "iot_wash_chocolate_stains": "Čokoládové skvrny", + "iot_wash_cold_wash": "Praní za studena", + "iot_wash_colored": "Barevné", + "iot_wash_colored_anti_stain": "Odstraňování skvrn pro barevné prádlo", + "iot_wash_colored_delicate": "Barevné jemné", + "iot_wash_coloured": "Barevné", + "iot_wash_coloured_bed_linen": "Barevné ložní prádlo", + "iot_wash_coloured_bed_linen_steam": "Barevné ložní prádlo + pára", + "iot_wash_coloured_curtains": "Barevné záclony", + "iot_wash_coloured_shirts": "Barevné košile", + "iot_wash_coloured_shirts_steam": "Barevné košile + pára", + "iot_wash_coloured_steam": "Barevné + Pára", + "iot_wash_coloured_tableclothes": "Barevné ubrusy", + "iot_wash_coloured_tableclothes_steam": "Barevné ubrusy + pára", "iot_wash_cotton": "Bavlna", - "iot_wash_cotton_steam": "Bavlna + P\u00e1ra", - "iot_wash_cuddly_toys": "Ply\u0161ov\u00e9 hra\u010dky", - "iot_wash_curtains": "Z\u00e1clony", - "iot_wash_curtains_steam": "Z\u00e1clony + P\u00e1ra", - "iot_wash_curtains_zelig": "Z\u00e1clony", - "iot_wash_dark": "Tmav\u00e9 pr\u00e1dlo", - "iot_wash_darks_and_coloured_44": "Tmav\u00e9 a barevn\u00e9 44'", - "iot_wash_darks_and_coloured_59": "Tmav\u00e9 a barevn\u00e9 59'", - "iot_wash_darks_and_coloured_xl": "Tmav\u00e9 a barevn\u00e9 XL", - "iot_wash_dark_steam": "Tmav\u00e9 pr\u00e1dlo + P\u00e1ra", + "iot_wash_cotton_steam": "Bavlna + Pára", + "iot_wash_cuddly_toys": "Plyšové hračky", + "iot_wash_curtains": "Záclony", + "iot_wash_curtains_steam": "Záclony + Pára", + "iot_wash_curtains_zelig": "Záclony", + "iot_wash_dark": "Tmavé prádlo", + "iot_wash_darks_and_coloured_44": "Tmavé a barevné 44'", + "iot_wash_darks_and_coloured_59": "Tmavé a barevné 59'", + "iot_wash_darks_and_coloured_xl": "Tmavé a barevné XL", + "iot_wash_dark_steam": "Tmavé prádlo + Pára", "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", "iot_wash_dash_cold_cycle": "Dash Cold Clean", "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", - "iot_wash_delicate": "Jemn\u00e9", - "iot_wash_delicate_antiallergy": "Antialergenn\u00ed pro jemn\u00e9 pr\u00e1dlo", - "iot_wash_delicate_antiallergy_steam": "Antialergenn\u00ed pro jemn\u00e9 pr\u00e1dlo + P\u00e1ra", - "iot_wash_delicate_antiallergy_zelig": "Antialergenn\u00ed pro jemn\u00e9 pr\u00e1dlo", - "iot_wash_delicate_colors": "Barevn\u00e9 jemn\u00e9", - "iot_wash_delicate_colors_steam": "Barevn\u00e9 + p\u00e1ra", - "iot_wash_delicate_dark": "Jemn\u00e9 tmav\u00e9", - "iot_wash_delicate_steam": "Jemn\u00e9 + P\u00e1ra", - "iot_wash_delicate_tablecloths": "Jemn\u00e9 ubrusy", - "iot_wash_delicate_tablecloths_steam": "Jemn\u00e9 ubrusy + P\u00e1ra", - "iot_wash_delicate_whites": "Jemn\u00e9 b\u00edl\u00e9", - "iot_wash_denim_jeans": "D\u017e\u00ednovina - d\u017e\u00edny", - "iot_wash_diving_suits": "Pot\u00e1p\u011b\u010dsk\u00e9 obleky", - "iot_wash_diving_suits_zelig": "Pot\u00e1p\u011b\u010dsk\u00e9 obleky", - "iot_wash_down_jackets": "Pro\u0161\u00edvan\u00e9 bundy", - "iot_wash_down_jackets_zelig": "Pro\u0161\u00edvan\u00e9 bundy", - "iot_wash_duvet": "P\u0159ikr\u00fdvky", + "iot_wash_delicate": "Jemné", + "iot_wash_delicate_antiallergy": "Antialergenní pro jemné prádlo", + "iot_wash_delicate_antiallergy_steam": "Antialergenní pro jemné prádlo + Pára", + "iot_wash_delicate_antiallergy_zelig": "Antialergenní pro jemné prádlo", + "iot_wash_delicate_colors": "Barevné jemné", + "iot_wash_delicate_colors_steam": "Barevné + pára", + "iot_wash_delicate_dark": "Jemné tmavé", + "iot_wash_delicate_steam": "Jemné + Pára", + "iot_wash_delicate_tablecloths": "Jemné ubrusy", + "iot_wash_delicate_tablecloths_steam": "Jemné ubrusy + Pára", + "iot_wash_delicate_whites": "Jemné bílé", + "iot_wash_denim_jeans": "Džínovina - džíny", + "iot_wash_diving_suits": "Potápěčské obleky", + "iot_wash_diving_suits_zelig": "Potápěčské obleky", + "iot_wash_down_jackets": "Prošívané bundy", + "iot_wash_down_jackets_zelig": "Prošívané bundy", + "iot_wash_duvet": "Přikrývky", "iot_wash_fruit_stains": "Skvrny od ovoce", - "iot_wash_gym_fit": "Od\u011bvy na cvi\u010den\u00ed", - "iot_wash_handwash": "Ru\u010dn\u00ed pran\u00ed", - "iot_wash_handwash_colored": "Ru\u010dn\u00ed pran\u00ed - barevn\u00e9", - "iot_wash_handwash_dark": "Ru\u010dn\u00ed pran\u00ed - tmav\u00e9", - "iot_wash_lingerie": "Spodn\u00ed pr\u00e1dlo", - "iot_wash_masks_refresh": "Osv\u011b\u017een\u00ed masek", - "iot_wash_masks_sanification": "Dezinfikov\u00e1n\u00ed masek", - "iot_wash_masks_sanification_steam": "Dezinfikov\u00e1n\u00ed masek + P\u00e1ra", - "iot_wash_mats": "P\u0159edlo\u017eky", + "iot_wash_gym_fit": "Oděvy na cvičení", + "iot_wash_handwash": "Ruční praní", + "iot_wash_handwash_colored": "Ruční praní - barevné", + "iot_wash_handwash_dark": "Ruční praní - tmavé", + "iot_wash_lingerie": "Spodní prádlo", + "iot_wash_masks_refresh": "Osvěžení masek", + "iot_wash_masks_sanification": "Dezinfikování masek", + "iot_wash_masks_sanification_steam": "Dezinfikování masek + Pára", + "iot_wash_mats": "Předložky", "iot_wash_men_s_trousers": "Kalhoty", - "iot_wash_mixed": "Sm\u011bsn\u00e9", - "iot_wash_mixed_steam": "Sm\u00ed\u0161en\u00e9 + P\u00e1ra", - "iot_wash_mix_and_coloured_44": "Sm\u011bsn\u00e9 a barevn\u00e9 44'", - "iot_wash_mix_and_coloured_59": "Sm\u011bsn\u00e9 a barevn\u00e9 59'", - "iot_wash_mix_and_coloured_xl": "Sm\u011bsn\u00e9 a barevn\u00e9 XL", - "iot_wash_new_clothes": "Nov\u00e9 oble\u010den\u00ed", - "iot_wash_perfect_white": "Dokonale b\u00edl\u00e9", - "iot_wash_perfect_white_steam": "Dokonale b\u00edl\u00e9 + P\u00e1ra", - "iot_wash_pets": "P\u0159\u00edslu\u0161enstv\u00ed pro dom\u00e1c\u00ed zv\u00ed\u0159ata", - "iot_wash_pets_hair_removal": "Odstra\u0148ov\u00e1n\u00ed chlup\u016f dom\u00e1c\u00edch mazl\u00ed\u010dk\u016f", - "iot_wash_pets_odours_stains_removal": "Odstra\u0148ov\u00e1n\u00ed z\u00e1pachu a skvrn po dom\u00e1c\u00edch mazl\u00ed\u010dc\u00edch", - "iot_wash_pets_steam": "P\u0159\u00edslu\u0161enstv\u00ed pro dom\u00e1c\u00ed zv\u00ed\u0159ata", - "iot_wash_playsuits": "Dupa\u010dky", - "iot_wash_playsuits_steam": "Dupa\u010dky + P\u00e1ra", - "iot_wash_quick_drum_cleaner": "Rychl\u00fd \u010disti\u010d bubnu", - "iot_wash_rapid_14": "Rychl\u00fd 14\u2019", - "iot_wash_rapid_30": "Rychl\u00fd 30\u2019", - "iot_wash_rapid_44": "Rychl\u00fd 44'", - "iot_wash_rapid_59": "Rychl\u00fd 59'", - "iot_wash_rapid_59_steam": "Rychl\u00fd 59' + p\u00e1ra", - "iot_wash_refresh_14_min": "Osv\u011b\u017een\u00ed 14'", - "iot_wash_resistant_colored": "Odoln\u00e9 barevn\u00e9", - "iot_wash_resistant_dark": "Odoln\u00e9 tmav\u00e9", - "iot_wash_resistant_whites": "Odoln\u00e9 b\u00edl\u00e9", - "iot_wash_rinse": "M\u00e1ch\u00e1n\u00ed", - "iot_wash_shirts": "Ko\u0161ile", - "iot_wash_shirts_steam": "Ko\u0161ile + P\u00e1ra", - "iot_wash_silk": "Hedv\u00e1b\u00ed", - "iot_wash_ski_suit": "Ly\u017ea\u0159sk\u00e9 oble\u010den\u00ed", - "iot_wash_ski_suit_zelig": "Ly\u017ea\u0159sk\u00e9 oble\u010den\u00ed", - "iot_wash_spin": "Odst\u0159e\u010fov\u00e1n\u00ed", - "iot_wash_sport": "Sportovn\u00ed", - "iot_wash_sport_anti_odor": "Sportovn\u00ed oble\u010den\u00ed s efektem proti z\u00e1pachu", - "iot_wash_sport_anti_odor_zelig": "Sportovn\u00ed oble\u010den\u00ed s efektem proti z\u00e1pachu", - "iot_wash_stains_remover": "Odstra\u0148ov\u00e1n\u00ed skvrn", + "iot_wash_mixed": "Směsné", + "iot_wash_mixed_steam": "Smíšené + Pára", + "iot_wash_mix_and_coloured_44": "Směsné a barevné 44'", + "iot_wash_mix_and_coloured_59": "Směsné a barevné 59'", + "iot_wash_mix_and_coloured_xl": "Směsné a barevné XL", + "iot_wash_new_clothes": "Nové oblečení", + "iot_wash_perfect_white": "Dokonale bílé", + "iot_wash_perfect_white_steam": "Dokonale bílé + Pára", + "iot_wash_pets": "Příslušenství pro domácí zvířata", + "iot_wash_pets_hair_removal": "Odstraňování chlupů domácích mazlíčků", + "iot_wash_pets_odours_stains_removal": "Odstraňování zápachu a skvrn po domácích mazlíčcích", + "iot_wash_pets_steam": "Příslušenství pro domácí zvířata", + "iot_wash_playsuits": "Dupačky", + "iot_wash_playsuits_steam": "Dupačky + Pára", + "iot_wash_quick_drum_cleaner": "Rychlý čistič bubnu", + "iot_wash_rapid_14": "Rychlý 14’", + "iot_wash_rapid_30": "Rychlý 30’", + "iot_wash_rapid_44": "Rychlý 44'", + "iot_wash_rapid_59": "Rychlý 59'", + "iot_wash_rapid_59_steam": "Rychlý 59' + pára", + "iot_wash_refresh_14_min": "Osvěžení 14'", + "iot_wash_resistant_colored": "Odolné barevné", + "iot_wash_resistant_dark": "Odolné tmavé", + "iot_wash_resistant_whites": "Odolné bílé", + "iot_wash_rinse": "Máchání", + "iot_wash_shirts": "Košile", + "iot_wash_shirts_steam": "Košile + Pára", + "iot_wash_silk": "Hedvábí", + "iot_wash_ski_suit": "Lyžařské oblečení", + "iot_wash_ski_suit_zelig": "Lyžařské oblečení", + "iot_wash_spin": "Odstřeďování", + "iot_wash_sport": "Sportovní", + "iot_wash_sport_anti_odor": "Sportovní oblečení s efektem proti zápachu", + "iot_wash_sport_anti_odor_zelig": "Sportovní oblečení s efektem proti zápachu", + "iot_wash_stains_remover": "Odstraňování skvrn", "iot_wash_swimsuits_and_bikinis": "Plavky", "iot_wash_synthetic": "Syntetika", - "iot_wash_synthetic_steam": "Syntetika + P\u00e1ra", + "iot_wash_synthetic_steam": "Syntetika + Pára", "iot_wash_tablecloths": "Ubrusy", - "iot_wash_tablecloths_steam": "Ubrusy + P\u00e1ra", - "iot_wash_technical_fabrics": "Technick\u00e9 tkaniny", - "iot_wash_technical_fabrics_zelig": "Technick\u00e9 tkaniny", - "iot_wash_technical_jackets": "Technick\u00e9 bundy", - "iot_wash_technical_jackets_zelig": "Technick\u00e9 bundy", - "iot_wash_trainers": "Sportovn\u00ed obuv", - "iot_wash_whites": "B\u00edl\u00e9", - "iot_wash_whites_44": "B\u00edl\u00e9 44'", - "iot_wash_whites_59": "B\u00edl\u00e9 59'", - "iot_wash_whites_xl": "B\u00edl\u00e9 XL", - "iot_wash_wine_stains": "Skvrny od v\u00edna", + "iot_wash_tablecloths_steam": "Ubrusy + Pára", + "iot_wash_technical_fabrics": "Technické tkaniny", + "iot_wash_technical_fabrics_zelig": "Technické tkaniny", + "iot_wash_technical_jackets": "Technické bundy", + "iot_wash_technical_jackets_zelig": "Technické bundy", + "iot_wash_trainers": "Sportovní obuv", + "iot_wash_whites": "Bílé", + "iot_wash_whites_44": "Bílé 44'", + "iot_wash_whites_59": "Bílé 59'", + "iot_wash_whites_xl": "Bílé XL", + "iot_wash_wine_stains": "Skvrny od vína", "iot_wash_wool": "Vlna", - "jeans": "D\u017e\u00edny", - "jeans_60": "D\u017e\u00edny", - "low_dry": "Sm\u011bsn\u00e9 - such\u00e9", - "mixed": "Sm\u00ed\u0161en\u00e9", - "mixed_and_colored_59": "Sm\u011bsn\u00e9 a barevn\u00e9 59'", - "mixed_steam": "Sm\u00ed\u0161en\u00e9 + P\u00e1ra", + "jeans": "Džíny", + "jeans_60": "Džíny", + "low_dry": "Směsné - suché", + "mixed": "Smíšené", + "mixed_and_colored_59": "Směsné a barevné 59'", + "mixed_steam": "Smíšené + Pára", "mix_and_colour_59": "Smisene a Barevne 59'", - "mix_and_colour_59_steam": "Sm\u00ed\u0161en\u00e9 a barevn\u00e9 59' + p\u00e1ra", + "mix_and_colour_59_steam": "Smíšené a barevné 59' + pára", "night_and_day": "Noc a den", - "night_wash": "No\u010dn\u00ed cyklus", - "perfect_59": "Perfektn\u00ed 59'", + "night_wash": "Noční cyklus", + "perfect_59": "Perfektní 59'", "perfect_cotton_59": "Perfektni Bavlna 59'", "perfect_cotton_59_steam": "Perfektni Bavlna 59'", - "perfect_whites_59": "Dokonale b\u00edl\u00e9 59'", - "rapid_14_min": "Rychl\u00fd 14'", - "rapid_30_min": "Rychl\u00fd 30'", - "rapid_44_min": "Rychl\u00fd 44'", - "rapid_a_class_60": "Rychl\u00e1 t\u0159\u00edda A 60", - "rapid_a_class_60_steam": "Rychl\u00e1 t\u0159\u00edda A 60 + p\u00e1ra", - "rapid_wash_and_dry_59_min": "Pran\u00ed a su\u0161en\u00ed 59'.", + "perfect_whites_59": "Dokonale bílé 59'", + "rapid_14_min": "Rychlý 14'", + "rapid_30_min": "Rychlý 30'", + "rapid_44_min": "Rychlý 44'", + "rapid_a_class_60": "Rychlá třída A 60", + "rapid_a_class_60_steam": "Rychlá třída A 60 + pára", + "rapid_wash_and_dry_59_min": "Praní a sušení 59'.", "resistant_cotton": "Bavlna", - "resistant_cotton_steam": "Bavlna + P\u00e1ra", - "rinse": "M\u00e1ch\u00e1n\u00ed", - "shirts_steam": "Ko\u0161ile + p\u00e1ra", - "silent_night": "No\u010dn\u00ed cyklus", - "single_item": "Jedna polo\u017eka", - "single_item_steam": "Jedna polo\u017eka + p\u00e1ra", - "smart_wash": "Chytr\u00e9 pran\u00ed", - "soft_care": "M\u011bkk\u00e1 p\u00e9\u010de", + "resistant_cotton_steam": "Bavlna + Pára", + "rinse": "Máchání", + "shirts_steam": "Košile + pára", + "silent_night": "Noční cyklus", + "single_item": "Jedna položka", + "single_item_steam": "Jedna položka + pára", + "smart_wash": "Chytré praní", + "soft_care": "Měkká péče", "soft_care_steam": "Soft Care + Steam", "soft_care_steam_title": "Soft Care + Steam", "special_39": "Specialni 39'", "special_39_full_load": "Specialni 39'", - "special_39_full_load_steam": "Speci\u00e1ln\u00ed 39' + p\u00e1ra", - "special_49": "Speci\u00e1ln\u00ed 49'", - "sport_39": "Sportovn\u00ed 39'", + "special_39_full_load_steam": "Speciální 39' + pára", + "special_49": "Speciální 49'", + "sport_39": "Sportovní 39'", "sport_plus_29": "Sportovni Plus 29\"", "sport_plus_39": "Sportovni Plus 39'", - "steam_39": "P\u00e1ra 39'", + "steam_39": "Pára 39'", "steam_care_pro": "Steam Care Pro", - "steam_care_pro_cotton": "Steam Care Pro \u2013 bavlna", - "steam_care_pro_delicates": "Steam Care Pro \u2013 jemn\u00e9", - "steam_care_pro_synthetic": "Steam Care Pro \u2013 syntetika", - "steam_hygiene_plus": "Hygiena plus p\u00e1ra ", + "steam_care_pro_cotton": "Steam Care Pro – bavlna", + "steam_care_pro_delicates": "Steam Care Pro – jemné", + "steam_care_pro_synthetic": "Steam Care Pro – syntetika", + "steam_hygiene_plus": "Hygiena plus pára ", "synthetics": "Syntetika", - "synthetic_and_coloured": "Syntetika a barevn\u00e9", - "synthetic_and_coloured_steam": "Syntetika a barevn\u00e9 + p\u00e1ra", + "synthetic_and_coloured": "Syntetika a barevné", + "synthetic_and_coloured_steam": "Syntetika a barevné + pára", "tailored_resistant_cotton": "Tailored Resistant Cotton", "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", "total_care": "Total Care", - "tumbling": "Pomal\u00e9 ot\u00e1\u010den\u00ed", + "tumbling": "Pomalé otáčení", "wool": "Vlna", - "wool_and_delicates_49": "Vlna/Jemn\u00e9 49'", - "wool_dry": "Vlna - such\u00e9", - "wool_soft_care": "Vlna & M\u0115kk\u00e1 P\u00e9\u010de" + "wool_and_delicates_49": "Vlna/Jemné 49'", + "wool_dry": "Vlna - suché", + "wool_soft_care": "Vlna & Mĕkká Péče" }, "name": "Program" }, "dry_levels": { "state": { - "0": "Bez su\u0161en\u00ed", - "1": "\u017dehlen\u00ed", - "2": "Do sk\u0159\u00edn\u011b", - "3": "Do sk\u0159\u00edn\u011b", - "4": "Extra such\u00e9", - "12": "\u017dehlen\u00ed", - "13": "Do sk\u0159\u00edn\u011b", - "14": "P\u0159ipraveno k oble\u010den\u00ed", - "15": "Extra such\u00e9" + "0": "Bez sušení", + "1": "Žehlení", + "2": "Do skříně", + "3": "Do skříně", + "4": "Extra suché", + "12": "Žehlení", + "13": "Do skříně", + "14": "Připraveno k oblečení", + "15": "Extra suché" }, - "name": "\u00darove\u0148 su\u0161en\u00ed" + "name": "Úroveň sušení" }, "spin_speed": { - "name": "Odst\u0159e\u010fov\u00e1n\u00ed" + "name": "Odstřeďování" }, "temperature": { "name": "Teplota" }, "dry_time": { - "name": "Doba su\u0161en\u00ed" + "name": "Doba sušení" } }, "switch": { "anti_crease": { - "name": "Proti poma\u010dk\u00e1n\u00ed" + "name": "Proti pomačkání" }, "add_dish": { "name": "" @@ -835,37 +834,37 @@ "name": "Eco" }, "extra_dry": { - "name": "Extra such\u00e9" + "name": "Extra suché" }, "half_load": { - "name": "Polovi\u010dn\u00ed n\u00e1pl\u0148" + "name": "Poloviční náplň" }, "open_door": { - "name": "Otev\u0159\u00edt dv\u00ed\u0159ka" + "name": "Otevřít dvířka" }, "three_in_one": { "name": "3 v 1" }, "preheat": { - "name": "P\u0159edeh\u0159ev" + "name": "Předehřev" }, "dish_washer": { - "name": "My\u010dka" + "name": "Myčka" }, "tumble_dryer": { - "name": "Su\u0161i\u010dka" + "name": "Sušička" }, "washing_machine": { - "name": "Pra\u010dka" + "name": "Pračka" }, "washer_dryer": { - "name": "Pra\u010dka se su\u0161i\u010dkou" + "name": "Pračka se sušičkou" }, "oven": { "name": "Trouba" }, "prewash": { - "name": "P\u0159edp\u00edrka\r\r\r\r\r\r\n" + "name": "Předpírka\r\r\r\r\r\r\n" }, "pause": { "name": "Pozastavit" @@ -874,33 +873,33 @@ "name": "Keep Fresh" }, "delay_time": { - "name": "Odlo\u017een\u00e9 spu\u0161t\u011bn\u00ed" + "name": "Odložené spuštění" } }, "binary_sensor": { "door_lock": { - "name": "Z\u00e1mek dv\u00ed\u0159ek" + "name": "Zámek dvířek" }, "extra_rinse_1": { - "name": "+1 m\u00e1ch\u00e1n\u00ed" + "name": "+1 máchání" }, "extra_rinse_2": { - "name": "+2 m\u00e1ch\u00e1n\u00ed" + "name": "+2 máchání" }, "extra_rinse_3": { - "name": "+3 m\u00e1ch\u00e1n\u00ed" + "name": "+3 máchání" }, "good_night": { "name": "Dobrou noc" }, "anti_crease": { - "name": "Proti poma\u010dk\u00e1n\u00ed" + "name": "Proti pomačkání" }, "aqua_plus": { "name": "Aquaplus" }, "spin_speed": { - "name": "Odst\u0159e\u010fov\u00e1n\u00ed" + "name": "Odstřeďování" }, "programs_dw": { "name": "Program" @@ -918,68 +917,68 @@ "name": "Program" }, "still_hot": { - "name": "St\u00e1le hork\u00e1" + "name": "Stále horká" }, "pan_status": { - "name": "P\u00e1nev" + "name": "Pánev" }, "remote_control": { - "name": "D\u00e1lkov\u00e9 ovl\u00e1d\u00e1n\u00ed" + "name": "Dálkové ovládání" }, "rinse_aid": { - "name": "Mno\u017estv\u00ed oplachovac\u00edho prost\u0159edku" + "name": "Množství oplachovacího prostředku" }, "salt_level": { - "name": "Mno\u017estv\u00ed soli" + "name": "Množství soli" }, "door_open": { - "name": "Otev\u0159en\u00e1 dv\u00ed\u0159ka" + "name": "Otevřená dvířka" }, "connection": { - "name": "P\u0159ipojen\u00ed spot\u0159ebi\u010de" + "name": "Připojení spotřebiče" }, "child_lock": { - "name": "D\u011btsk\u00fd z\u00e1mek" + "name": "Dětský zámek" }, "on": { "name": "Zapnout" }, "prewash": { - "name": "P\u0159edp\u00edrka\r\r\r\r\r\r\n" + "name": "Předpírka\r\r\r\r\r\r\n" } }, "number": { "power_management": { - "name": "\u0158\u00edzen\u00ed v\u00fdkonu" + "name": "Řízení výkonu" }, "temperature": { "name": "Teplota" }, "delay_time": { - "name": "Odlo\u017een\u00e9 spu\u0161t\u011bn\u00ed" + "name": "Odložené spuštění" }, "water_hard": { "name": "Tvrdost vody" }, "program_duration": { - "name": "D\u00e9lka programu" + "name": "Délka programu" }, "target_temperature": { - "name": "C\u00edlov\u00e1 teplota" + "name": "Cílová teplota" }, "rinse_iterations": { - "name": "Po\u010det m\u00e1ch\u00e1n\u00ed" + "name": "Počet máchání" }, "wash_time": { - "name": "D\u00e9lka pran\u00ed" + "name": "Délka praní" }, "dry_time": { - "name": "Doba su\u0161en\u00ed" + "name": "Doba sušení" } }, "button": { "induction_hob": { - "name": "Induk\u010dn\u00ed varn\u00e1 deska" + "name": "Indukční varná deska" } } } diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index 7667627..3e20842 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -18,9 +18,9 @@ "1": "Waschen", "2": "Waschen", "3": "Schleudern", - "4": "Sp\u00fclen", - "5": "Sp\u00fclen", - "6": "Sp\u00fclen", + "4": "Spülen", + "5": "Spülen", + "6": "Spülen", "7": "Trocknen", "9": "Dampf", "10": "Bereit", @@ -30,8 +30,8 @@ "14": "Waschen", "15": "Waschen", "16": "Waschen", - "17": "Sp\u00fclen", - "18": "Sp\u00fclen", + "17": "Spülen", + "18": "Spülen", "19": "Geplant", "20": "Auffrischen", "24": "Auffrischen", @@ -46,11 +46,11 @@ "0": "Bereit", "1": "Trocknen", "2": "Trocknen", - "3": "Abk\u00fchlen", - "13": "Abk\u00fchlen", + "3": "Abkühlen", + "13": "Abkühlen", "14": "Trocknen", "15": "Trocknen", - "16": "Abk\u00fchlen", + "16": "Abkühlen", "18": "Auffrischen", "19": "Trocknen", "20": "Trocknen" @@ -62,7 +62,7 @@ "0": "Bereit", "1": "Vorwaschen", "2": "Waschen", - "3": "Sp\u00fclen", + "3": "Spülen", "4": "Trocknen", "5": "Bereit", "6": "Hot rinse" @@ -72,12 +72,12 @@ "dry_levels": { "state": { "0": "Keine Trocknung", - "1": "B\u00fcgeln", - "2": "W\u00e4sche fertig", - "3": "W\u00e4sche fertig", + "1": "Bügeln", + "2": "Wäsche fertig", + "3": "Wäsche fertig", "4": "Extra trocken", - "12": "B\u00fcgeln", - "13": "W\u00e4sche fertig", + "12": "Bügeln", + "13": "Wäsche fertig", "14": "Bereit zum Anziehen", "15": "Extra trocken" }, @@ -117,13 +117,13 @@ "name": "Verschmutzungsgrad" }, "delay_time": { - "name": "Einschaltverz\u00f6gerung" + "name": "Einschaltverzögerung" }, "dry_time": { "name": "Trocknungsdauer" }, "suggested_load": { - "name": "Ladekapazit\u00e4t" + "name": "Ladekapazität" }, "energy_label": { "name": "Energieeffizienz" @@ -132,7 +132,7 @@ "name": "Pulver" }, "det_liquid": { - "name": "Fl\u00fcssigwaschmittel" + "name": "Flüssigwaschmittel" }, "errors": { "name": "Fehler" @@ -141,7 +141,7 @@ "name": "Aktuelles Programm" }, "cycles_total": { - "name": "Waschg\u00e4nge Insgesamt" + "name": "Waschgänge Insgesamt" }, "energy_total": { "name": "Energieverbrauch Insgesamt" @@ -165,46 +165,46 @@ "auto_plus": "AutoPlus", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "AutoUniversal 50-60\u00b0C", - "auto_universal_plus": "AutoUniversalPlus 65-75\u00b0C", - "auto_universal_plus_soil": "AutoUniversalPlus 65-75\u00b0C", - "auto_universal_soil": "AutoUniversal 50-60\u00b0C", + "auto_universal": "AutoUniversal 50-60°C", + "auto_universal_plus": "AutoUniversalPlus 65-75°C", + "auto_universal_plus_soil": "AutoUniversalPlus 65-75°C", + "auto_universal_soil": "AutoUniversal 50-60°C", "auto_wash": "Auto Wash", "auto_wash_soil": "Auto Wash", - "classe_a_59": "A Class 59' 65\u00b0C", - "delicate": "Delicate 45\u00b0C", + "classe_a_59": "A Class 59' 65°C", + "delicate": "Delicate 45°C", "dishwasher_care": "Entkalkungsprogramm", "eco": "Eco", - "eco_asynch": "Eco 45\u00b0C", - "eco_bldc": "Eco 45\u00b0C", - "eco_synch": "Eco 45\u00b0C", + "eco_asynch": "Eco 45°C", + "eco_bldc": "Eco 45°C", + "eco_synch": "Eco 45°C", "gentle_wash": "Gentle wash", "glass": "Glas", - "glassware": "Gl\u00e4ser 45 \u00b0C", + "glassware": "Gläser 45 °C", "glass_care": "Glass Care", "hygiene": "Hygiene", - "hygiene_plus": "Hygiene 75 \u00b0C", + "hygiene_plus": "Hygiene 75 °C", "intensive": "Intensiv ", - "intensive_rapid": "Intensiv-Schnellsp\u00fclgang", + "intensive_rapid": "Intensiv-Schnellspülgang", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "AutoUniversal 50-60\u00b0C", + "iot_auto_universal_soil": "AutoUniversal 50-60°C", "iot_auto_wash_soil": "Auto Wash", "iot_baby_care": "Baby Care", - "iot_breakfast": "Fr\u00fchst\u00fcck", + "iot_breakfast": "Frühstück", "iot_checkup": "Check-Up", "iot_china_crystals": "Kristall", "iot_classe_a_59": "Rapid 59'", - "iot_cocktail_glasses": "Cocktail-Gl\u00e4ser", - "iot_cocktail_glasses_soil": "Cocktail-Gl\u00e4ser", - "iot_daily_care": "T\u00e4glicher Einsatz", - "iot_daily_care_soil": "T\u00e4glicher Einsatz", - "iot_delicate": "Delicate 45\u00b0C", + "iot_cocktail_glasses": "Cocktail-Gläser", + "iot_cocktail_glasses_soil": "Cocktail-Gläser", + "iot_daily_care": "Täglicher Einsatz", + "iot_daily_care_soil": "Täglicher Einsatz", + "iot_delicate": "Delicate 45°C", "iot_dinner_for_two": "Dinner for 2", "iot_dinner_for_two_soil": "Dinner for 2", "iot_dreft_quick_cycle": "Dreft Quick", - "iot_eco_asynch": "Eco 45\u00b0C", - "iot_eco_bldc": "Eco 45\u00b0C", - "iot_eco_synch": "Eco 45\u00b0C", + "iot_eco_asynch": "Eco 45°C", + "iot_eco_bldc": "Eco 45°C", + "iot_eco_synch": "Eco 45°C", "iot_extra_hygiene": "Extra Hygiene", "iot_fairy_quick_cycle": "Fairy Quick", "iot_happy_hour": "Happy Hour", @@ -217,26 +217,26 @@ "iot_porcelain": "Porzellan", "iot_power_mix_wash": "Power Mix Wash", "iot_power_mix_wash_soil": "Power Mix Wash", - "iot_prewash": "Vorsp\u00fclen", + "iot_prewash": "Vorspülen", "iot_pyrex_and_glassware": "Pyrex & Glas", "iot_rapid_29": "Rapid 29'", - "iot_rapid_39": "Schnellw\u00e4sche 39' 60 \u00b0C", + "iot_rapid_39": "Schnellwäsche 39' 60 °C", "iot_single": "Single", - "iot_steam": "Dampf 75 \u00b0C", + "iot_steam": "Dampf 75 °C", "iot_super_flash": "Super Flash", "iot_super_wash": "Super Wash", "iot_turbopower": "TurboPower", - "iot_universal": "Universal 60\u00b0C", + "iot_universal": "Universal 60°C", "iot_wok_grids_maxi_pans": "Pfannen Spezial (Wok - Grillpfannen & Maxi-Pfannen)", "iot_wok_grids_maxi_pans_soil": "Pfannen Spezial (Wok - Grillpfannen & Maxi-Pfannen)", "iot_yes_quick_cycle": "Yes Quick", - "night": "Nacht 55\u00b0C", - "prewash": "Vorsp\u00fclen", + "night": "Nacht 55°C", + "prewash": "Vorspülen", "rapid_20": "Rapid 20'", "rapid_24": "Rapid 24'", - "rapid_29": "Rapid 29' 50\u00b0C", + "rapid_29": "Rapid 29' 50°C", "rapid_35": "Wash&Dry 35'", - "rapid_39": "Schnellw\u00e4sche 39' 60 \u00b0C", + "rapid_39": "Schnellwäsche 39' 60 °C", "rapid_49": "Rapid 49'", "rapid_59": "Rapid 59'", "sanitising": "Desinfektion", @@ -246,13 +246,13 @@ "smart_ai": "Smart AI", "special": "spezial", "special_pw_prz": "spezial", - "steam": "Dampf 75 \u00b0C", - "steam_plus": "Dampf Plus 75\u00b0C", - "total_care": "Total Care 50\u00b0C", - "ultra_silence": "Nacht 55\u00b0C", - "ultra_silent": "Nacht 55\u00b0C", - "universal": "Universal 60\u00b0C", - "universal_plus": "Universal Plus 70 \u00b0C", + "steam": "Dampf 75 °C", + "steam_plus": "Dampf Plus 75°C", + "total_care": "Total Care 50°C", + "ultra_silence": "Nacht 55°C", + "ultra_silent": "Nacht 55°C", + "universal": "Universal 60°C", + "universal_plus": "Universal Plus 70 °C", "zoom_39": "Zoom 39 min" }, "name": "Programm" @@ -263,14 +263,14 @@ "iot_special_beef_fillet": "Rinderfilet", "iot_special_beef_veal_stew": "Rindfleischeintopf", "iot_special_boiled_rice": "Gekochter Reis", - "iot_special_chicken_breast": "H\u00e4hnchenbrust", - "iot_special_chicken_legs": "H\u00e4hnchenschenkel", + "iot_special_chicken_breast": "Hähnchenbrust", + "iot_special_chicken_legs": "Hähnchenschenkel", "iot_special_chocolate_pudding": "Schokoladenpudding", - "iot_special_entrecote": "Entrec\u00f4te", + "iot_special_entrecote": "Entrecôte", "iot_special_fresh_tuna": "Frischer Thunfisch", - "iot_special_grilled_vegetables": "Gegrilltes Gem\u00fcse", + "iot_special_grilled_vegetables": "Gegrilltes Gemüse", "iot_special_lamb_cutlet": "Lammkotelett", - "iot_special_meatballs": "Fleischb\u00e4llchen", + "iot_special_meatballs": "Fleischbällchen", "iot_special_minestrone": "Eintopf", "iot_special_mussels": "Muscheln", "iot_special_omelette": "Omelett", @@ -285,10 +285,10 @@ "iot_special_salmon_fillet": "Seelachsfilet", "iot_special_saute_potatoes": "Bratkartoffeln", "iot_special_scallops": "Jakobsmuscheln", - "iot_special_scrambled_eggs": "R\u00fchrei", + "iot_special_scrambled_eggs": "Rührei", "iot_special_spelt": "Dinkel", "iot_special_veggy_noodles": "Vegetarische Nudeln", - "iot_special_white_fish_fillet": "Wei\u00dffischfilet", + "iot_special_white_fish_fillet": "Weißfischfilet", "iot_standard_boiling": "Boiling", "iot_standard_frying": "Braten", "iot_standard_keep_warm": "Warmhalten", @@ -304,11 +304,11 @@ "bottom_heating": "Unterhitze", "bottom_heating_fan": "Unterhitze + Umluft", "bread": "Brot", - "bread_steam": "Mit Dampf gebackenes Geb\u00e4ck", + "bread_steam": "Mit Dampf gebackenes Gebäck", "convection_fan": "Umluft", - "convection_fan_turnspit": "Hei\u00dfluft + Drehspie\u00df", + "convection_fan_turnspit": "Heißluft + Drehspieß", "conventional": "Ober-Unterhitze", - "conventional_turnspit": "Ober-&Unterhitze + Bratspie\u00df", + "conventional_turnspit": "Ober-&Unterhitze + Bratspieß", "defrost": "Auftauen", "descaling": "Entkalkung", "fish": "Fisch", @@ -342,14 +342,13 @@ "super_grill": "Super Grill", "tailor_bake": "Tailor bake", "tailor_bake_cata": "Tailor Bake", - "tailor_bake_desctiption": "Diese Funktion ist ideal, damit Lebensmittel innen weich und au\u00dfen knusprig werden.\r\r\r\nDa bei dieser Funktion die ben\u00f6tigte Menge an Fett oder \u00d6l reduziert werden kann, ist sie besonders f\u00fcr eine gesunde Ern\u00e4hrung geeignet.\r\r\r\nDie Kombination der Heizelemente mit einem pulsierenden Luftzug gew\u00e4hrleistet gleichm\u00e4\u00dfige Backresultate.", "tailor_bake_pyro": "Tailor Bake", - "vegetables": "Gem\u00fcse", - "vegetables_cata": "Gem\u00fcse", - "vegetables_pyro": "Gem\u00fcse", + "vegetables": "Gemüse", + "vegetables_cata": "Gemüse", + "vegetables_pyro": "Gemüse", "water_discharge": "Wasserabfluss", - "white_meat": "Wei\u00dfes Fleisch", - "white_meat_steam": "Dampfgegartes wei\u00dfes Fleisch" + "white_meat": "Weißes Fleisch", + "white_meat_steam": "Dampfgegartes weißes Fleisch" }, "name": "Programm" }, @@ -366,34 +365,34 @@ "care_30": "Pflege 30", "care_45": "Pflege 45", "care_59": "Pflege 59", - "coloured": "Buntw\u00e4sche", + "coloured": "Buntwäsche", "daily_45_min": "DAILY 45'", "daily_perfect_59_min": "DAILY PERFECT 59'", - "darks_and_coloured": "Dunkles & Buntw\u00e4sche", - "delicates": "Feinw\u00e4sche", + "darks_and_coloured": "Dunkles & Buntwäsche", + "delicates": "Feinwäsche", "duvet": "Oberbetten", "eco": "Eco-Baumwolle", "ecospeed_cottons": "Ecospeed Baumwolle", "ecospeed_delicates": "Ecospeed Feinwaesche", - "ecospeed_mixed": "Ecospeed Mischw\u00e4sche", + "ecospeed_mixed": "Ecospeed Mischwäsche", "extra_hygiene": "Extra Hygiene", "fitness": "Fitness", "fresh_care": "Fresh Care", "genius": "Genius", "hqd_baby_care": "Baby Care", - "hqd_bath_towel": "Handt\u00fccher", - "hqd_bed_sheets": "Bettw\u00e4sche", + "hqd_bath_towel": "Handtücher", + "hqd_bed_sheets": "Bettwäsche", "hqd_bulky": "Schwere Textilien", "hqd_casual": "Casual", - "hqd_cold_wind_30": "K\u00fchle Brise 30 Minuten", - "hqd_cold_wind_timing": "K\u00fchle Brise ", + "hqd_cold_wind_30": "Kühle Brise 30 Minuten", + "hqd_cold_wind_timing": "Kühle Brise ", "hqd_cotton": "Baumwolle", - "hqd_curtain": "Vorh\u00e4nge", - "hqd_delicate": "Feinw\u00e4sche", + "hqd_curtain": "Vorhänge", + "hqd_delicate": "Feinwäsche", "hqd_diaper": "Windeln", "hqd_duvet": "Bettdecke", "hqd_feather": "Daunenjacken", - "hqd_hot_wind_timing": "Hei\u00dfe Luft", + "hqd_hot_wind_timing": "Heiße Luft", "hqd_hygienic": "Desinfektion", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -401,7 +400,7 @@ "hqd_jeans": "Jeans", "hqd_luxury": "Luxury", "hqd_mix": "Gemischt", - "hqd_night_dry": "Trocknung \u00fcber Nacht", + "hqd_night_dry": "Trocknung über Nacht", "hqd_outdoor": "Outdoor", "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Schnell 20", @@ -416,42 +415,42 @@ "hqd_sports": "Sport", "hqd_synthetics": "Synthetik", "hqd_timer": "Zeitgesteuert", - "hqd_towel": "Handt\u00fccher", - "hqd_underwear": "Unterw\u00e4sche", - "hqd_warm_up": "Erw\u00e4rmen", + "hqd_towel": "Handtücher", + "hqd_underwear": "Unterwäsche", + "hqd_warm_up": "Erwärmen", "hqd_wool": "Wolle", "hqd_working_suit": "Arbeitskleidung", "hygiene": "Hygiene", "iot_checkup": "Check-up", "iot_dry_anti_mites": "Anti-Milben-Programm", "iot_dry_baby": "Baby", - "iot_dry_backpacks": "Rucks\u00e4cke", - "iot_dry_bathrobe": "Badem\u00e4ntel", - "iot_dry_bed_linen": "Bettw\u00e4sche", + "iot_dry_backpacks": "Rucksäcke", + "iot_dry_bathrobe": "Bademäntel", + "iot_dry_bed_linen": "Bettwäsche", "iot_dry_bed_quilt": "Bettdecken", "iot_dry_cotton": "Baumwolle", "iot_dry_cuddly_toys": "Stofftiere", - "iot_dry_curtains": "Vorh\u00e4nge", + "iot_dry_curtains": "Vorhänge", "iot_dry_dehumidifier": "Entfeuchter", - "iot_dry_delicates": "Feinw\u00e4sche", + "iot_dry_delicates": "Feinwäsche", "iot_dry_delicate_tablecloths": "Empfindliche Tischdecken", "iot_dry_denim_jeans": "Denim - Jeans", "iot_dry_down_jacket": "Jacket", "iot_dry_duvet": "Oberbetten", - "iot_dry_easy_iron_cotton": "Superleichtes B\u00fcgeln", - "iot_dry_easy_iron_synthetics": "Super Leichtb\u00fcgeln Synthetik", - "iot_dry_gym_fit": "Gymnastik & Fitness \u2013 Sportkleidung", - "iot_dry_lingerie": "Unterw\u00e4sche", + "iot_dry_easy_iron_cotton": "Superleichtes Bügeln", + "iot_dry_easy_iron_synthetics": "Super Leichtbügeln Synthetik", + "iot_dry_gym_fit": "Gymnastik & Fitness – Sportkleidung", + "iot_dry_lingerie": "Unterwäsche", "iot_dry_mixed": "Gemischt", "iot_dry_playsuits": "Jumpsuits", "iot_dry_rapid_30": "Rapid 30", "iot_dry_rapid_59": "Rapid 59'.", "iot_dry_refresh": "Auffrischen", - "iot_dry_regenerates_waterproof": "Auffrischung \u2013 wasserdichte Kleidung", - "iot_dry_relax_creases": "Falten gl\u00e4tten", + "iot_dry_regenerates_waterproof": "Auffrischung – wasserdichte Kleidung", + "iot_dry_relax_creases": "Falten glätten", "iot_dry_shirts": "Hemden", "iot_dry_small_load": "Kleine Beladung", - "iot_dry_swimsuits_and_bikinis": "Badeanz\u00fcge", + "iot_dry_swimsuits_and_bikinis": "Badeanzüge", "iot_dry_synthetics": "Synthetische", "iot_dry_synthetic_dry": "Synthetik trocken", "iot_dry_tablecloths": "Tischdecken", @@ -461,28 +460,28 @@ "jeans": "Jeans", "mix_and_dry": "Mix&Dry", "pets": "Haustiere", - "pre_iron": "Vorb\u00fcgeln", + "pre_iron": "Vorbügeln", "rapid_30": "Rapid 30", "rapid_45": "Schnell 45 Min", "rapid_59": "Perfekt Schnellwaschgang 59 Min.", "refresh": "Auffrischen", - "relax_creases": "Falten gl\u00e4tten", + "relax_creases": "Falten glätten", "saving_30_min": "ECO 30'", "shirts": "Hemden", "shoes": "Schuhe", "small_load": "Kleine Beladung", "soft_care": "Sanfte Pflege", "sport_plus": "Sports", - "super_easy_iron_misti": "Super Leichtb\u00fcgeln Gemischt", - "super_easy_iron_xxl": "Super Leichtb\u00fcgeln XXL", + "super_easy_iron_misti": "Super Leichtbügeln Gemischt", + "super_easy_iron_xxl": "Super Leichtbügeln XXL", "super_fast_cottons": "Superschnell Baumwolle", - "super_fast_delicates": "Superschnell Feinw\u00e4sche", + "super_fast_delicates": "Superschnell Feinwäsche", "synthetics": "Synthetische", "total_care": "Total Care", "trainers": "Turnschuhe", "ultra_care": "Ultra Care", "waterproof_revitalize": "Auffrischen wasserdichter Stoffe", - "whites": "Wei\u00dfen", + "whites": "Weißen", "wool": "Wolle Trocknen", "woolmark": "Wolle", "xxl_load": "XXL-Beladung", @@ -492,8 +491,8 @@ }, "programs_wm": { "state": { - "20_degrees_coloured_cottons": "20\u00b0 Buntes und Baumwolle", - "20_degrees_new_energy_label": "20\u00b0C", + "20_degrees_coloured_cottons": "20° Buntes und Baumwolle", + "20_degrees_new_energy_label": "20°C", "active_steam": "Dampf", "active_wash": "Active Wash", "active_wash_steam": "Active Wash", @@ -504,15 +503,15 @@ "all_in_one_59_steam": "Active Wash + Dampf", "autocare": "Autocare", "autoclean": "Reinigung der Trommel", - "baby_60": "Alles Baby 60 \u00b0C", + "baby_60": "Alles Baby 60 °C", "care_14": "Rapid Care 14'", "care_30": "Rapid Care 30'", "care_44": "Rapid Care 44'", "checkup": "Check-up", - "colour_59": "Buntw\u00e4sche 59'", + "colour_59": "Buntwäsche 59'", "colour_59_steam": "Buntes 59' + Dampf", "cottons": "Baumwolle", - "cottons_prewash": "Baumwolle + Vorw\u00e4sche", + "cottons_prewash": "Baumwolle + Vorwäsche", "cottons_steam": "Baumwolle + Dampf", "cotton_care_59": "Cotton Care 59 Min", "delicate_59": "Feines 59'", @@ -521,23 +520,23 @@ "delicati_59": "Feines 59'", "delicati_59_steam": "Feines 59'", "drain_spin": "Abpumpen und Schleudern", - "easy_iron": "B\u00fcgeltrocken", + "easy_iron": "Bügeltrocken", "eco_40_60_new_energy_label": "ECO 40-60", "extra_care": "Extra Care", "fitness": "Fitness Care", "fitness_care": "Fitness Care", "fresh_care": "Fresh Care", "fresh_care_steam": "Fresh Care + Dampf", - "handwash_wool": "Handw\u00e4sche und Wolle", + "handwash_wool": "Handwäsche und Wolle", "high_dry": "Baumwolle trocken", - "hqd_20_degrees": "Baumwolle 20\u2103", + "hqd_20_degrees": "Baumwolle 20℃", "hqd_allergy": "Allergy Care", "hqd_autoclean": "Reinigung der Trommel", "hqd_babycare": "Baby Care", "hqd_checkup": "Check-up", "hqd_cottons": "Baumwolle", - "hqd_delicate": "Feinw\u00e4sche", - "hqd_delicate_cradle": "Feinw\u00e4sche", + "hqd_delicate": "Feinwäsche", + "hqd_delicate_cradle": "Feinwäsche", "hqd_dry": "Baumwolle trocken", "hqd_dry_synthetics": "Trocknen gemischt", "hqd_duvet": "Oberbetten", @@ -546,24 +545,24 @@ "hqd_i_refresh": "i-Refresh", "hqd_mix": "Gemischt", "hqd_quick_15": "Rapid 15'", - "hqd_quick_wash_57": "Schnellw\u00e4sche 57 min", + "hqd_quick_wash_57": "Schnellwäsche 57 min", "hqd_rapid_wash_and_dry": "Waschen und trocknen", "hqd_refresh": "Auffrischen", - "hqd_rinse": "Sp\u00fclen", + "hqd_rinse": "Spülen", "hqd_shirts": "Hemden", "hqd_smart": "Smart A.I.", "hqd_spin": "Schleudern", "hqd_sport": "Sport", - "hqd_super_fast": "Rapid 39\u2019", + "hqd_super_fast": "Rapid 39’", "hqd_synthetic_and_coloured": "Synthetik", "hygiene_59": "Hygiene Plus 59'", - "hygiene_60": "Hygiene 60\u00b0", + "hygiene_60": "Hygiene 60°", "hygiene_plus_59": "Hygiene Plus 59'", "hygiene_plus_59_min": "Hygiene Plus 59'", "hygiene_pro_49_min": "Hygiene Pro 49 min", "hygiene_pro_steam": "Hygiene Pro + Dampf", - "intensive_40": "Intensiv 40\u00b0C", - "intensive_40_steam": "Intensiv 40\u00b0C + Dampf", + "intensive_40": "Intensiv 40°C", + "intensive_40_steam": "Intensiv 40°C + Dampf", "iot_active_steam": "Dampf", "iot_active_wash_steam": "Active Wash", "iot_allergy_care_pro": "Allergy Care Pro", @@ -574,38 +573,38 @@ "iot_delicate_silk_steam": "Empfindliche Seide + Dampf", "iot_delicati_59_steam": "Feines 59'", "iot_dry_air_refresh": "Luftauffrischung", - "iot_dry_anti_mites": "Milbenbek\u00e4mpfung", + "iot_dry_anti_mites": "Milbenbekämpfung", "iot_dry_baby": "Baby", - "iot_dry_backpacks": "Rucks\u00e4cke", - "iot_dry_bathrobe": "Badem\u00e4ntel und saugf\u00e4higes Gewebe", - "iot_dry_bed_linen": "Bettw\u00e4sche", + "iot_dry_backpacks": "Rucksäcke", + "iot_dry_bathrobe": "Bademäntel und saugfähiges Gewebe", + "iot_dry_bed_linen": "Bettwäsche", "iot_dry_cotton_dry": "Baumwolle trocken", "iot_dry_cuddly_toys": "Stofftiere", - "iot_dry_curtains": "Vorh\u00e4nge", + "iot_dry_curtains": "Vorhänge", "iot_dry_dehumidifier": "Entfeuchter", - "iot_dry_delicates_antiallergy": "Feinw\u00e4sche - Anti-Allergie", + "iot_dry_delicates_antiallergy": "Feinwäsche - Anti-Allergie", "iot_dry_delicate_tablecloths": "Empfindliche Tischdecken", "iot_dry_denim_jeans": "Denim - Jeans", - "iot_dry_easy_iron_cotton": "Leichtes B\u00fcgeln - Baumwolle", - "iot_dry_easy_iron_synthetics": "Leichtes B\u00fcgeln - Synthetik", + "iot_dry_easy_iron_cotton": "Leichtes Bügeln - Baumwolle", + "iot_dry_easy_iron_synthetics": "Leichtes Bügeln - Synthetik", "iot_dry_gym_fit": "Fitness-Studio - Fitness-Kleidung", "iot_dry_lingerie": "Dessous", "iot_dry_mixed_dry": "Trocknen gemischt", "iot_dry_rapid_60_min_delicates": "Rapid 60' - Feines", "iot_dry_shirts": "Hemden", - "iot_dry_swimsuits_and_bikinis": "Badeanz\u00fcge", + "iot_dry_swimsuits_and_bikinis": "Badeanzüge", "iot_dry_synthetics": "Synthetik trocken", "iot_dry_synthetic_dry": "Synthetik trocken", "iot_dry_tablecloths": "Tischdecken", "iot_dry_technical_fabrics": "Technische Textilien", "iot_dry_warm_embrace": "Warm trocknen", "iot_dry_wool_dry": "Wolle trocknen", - "iot_easy_iron": "B\u00fcgeltrocken", + "iot_easy_iron": "Bügeltrocken", "iot_fresh_care_steam": "Fresh Care + Dampf", "iot_hygiene_pro_steam": "Hygiene Pro + Dampf", - "iot_intensive_40_steam": "Intensiv 40\u00b0C + Dampf", + "iot_intensive_40_steam": "Intensiv 40°C + Dampf", "iot_mixed_steam": "Gemischt + Dampf", - "iot_mix_and_colour_59_steam": "Misch- und Buntw\u00e4sche 59' + Dampf", + "iot_mix_and_colour_59_steam": "Misch- und Buntwäsche 59' + Dampf", "iot_perfect_cotton_59_steam": "Baumwolle Perfekt 59'", "iot_rapid_a_class_60_steam": "Rapid Klasse A 60 + Dampf", "iot_resistant_cotton_steam": "Baumwolle + Dampf", @@ -617,74 +616,74 @@ "iot_steam_hygiene_plus": "Hygiene Plus Dampf ", "iot_synthetic_and_coloured_steam": "Synthetik und Farben + Dampf", "iot_wash_and_dry": "Waschen und trocknen", - "iot_wash_anti_mites": "Milbenbek\u00e4mpfung", + "iot_wash_anti_mites": "Milbenbekämpfung", "iot_wash_anti_odor": "Anti-Geruch", "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", "iot_wash_baby_sanitizer": "Desinfektion", - "iot_wash_baby_sanitizer_steam": "Babyw\u00e4sche-Desinfektion + Dampf", - "iot_wash_backpacks": "Rucks\u00e4cke", - "iot_wash_backpacks_zelig": "Rucks\u00e4cke", - "iot_wash_bathrobe": "Badem\u00e4ntel und Handt\u00fccher", + "iot_wash_baby_sanitizer_steam": "Babywäsche-Desinfektion + Dampf", + "iot_wash_backpacks": "Rucksäcke", + "iot_wash_backpacks_zelig": "Rucksäcke", + "iot_wash_bathrobe": "Bademäntel und Handtücher", "iot_wash_bathrobe_steam": "Bademantel + Dampf", - "iot_wash_bed_linen": "Bettw\u00e4sche", - "iot_wash_bed_linen_steam": "Bettw\u00e4sche + Dampf", - "iot_wash_bed_linen_zelig": "Bettw\u00e4sche", - "iot_wash_big_single_load": "Gro\u00dfe Einzelladung", + "iot_wash_bed_linen": "Bettwäsche", + "iot_wash_bed_linen_steam": "Bettwäsche + Dampf", + "iot_wash_bed_linen_zelig": "Bettwäsche", + "iot_wash_big_single_load": "Große Einzelladung", "iot_wash_bleaching": "Bleichen", "iot_wash_blood_stains": "Blutflecken", "iot_wash_cashmere": "Kaschmir", "iot_wash_chocolate_stains": "Schokoladenflecken", - "iot_wash_cold_wash": "Kaltw\u00e4sche", + "iot_wash_cold_wash": "Kaltwäsche", "iot_wash_colored": "Bunt", "iot_wash_colored_anti_stain": "Fleckenentfernung bei farbigen Textilien", - "iot_wash_colored_delicate": "Bunte Feinw\u00e4sche", + "iot_wash_colored_delicate": "Bunte Feinwäsche", "iot_wash_coloured": "Buntes", - "iot_wash_coloured_bed_linen": "Bunte Bettw\u00e4sche", - "iot_wash_coloured_bed_linen_steam": "Bunte Bettw\u00e4sche + Dampf", - "iot_wash_coloured_curtains": "Bunte Vorh\u00e4nge", + "iot_wash_coloured_bed_linen": "Bunte Bettwäsche", + "iot_wash_coloured_bed_linen_steam": "Bunte Bettwäsche + Dampf", + "iot_wash_coloured_curtains": "Bunte Vorhänge", "iot_wash_coloured_shirts": "Farbige Hemden", "iot_wash_coloured_shirts_steam": "Farbige Hemden + Dampf", "iot_wash_coloured_steam": "Buntes + Dampf", - "iot_wash_coloured_tableclothes": "Farbige Tischt\u00fccher", - "iot_wash_coloured_tableclothes_steam": "Farbige Tischt\u00fccher + Dampf", + "iot_wash_coloured_tableclothes": "Farbige Tischtücher", + "iot_wash_coloured_tableclothes_steam": "Farbige Tischtücher + Dampf", "iot_wash_cotton": "Baumwolle", "iot_wash_cotton_steam": "Baumwolle + Dampf", "iot_wash_cuddly_toys": "Stofftiere", - "iot_wash_curtains": "Vorh\u00e4nge", - "iot_wash_curtains_steam": "Vorh\u00e4nge+Dampf", - "iot_wash_curtains_zelig": "Vorh\u00e4nge", - "iot_wash_dark": "Dunkle Kleidungsst\u00fccke", + "iot_wash_curtains": "Vorhänge", + "iot_wash_curtains_steam": "Vorhänge+Dampf", + "iot_wash_curtains_zelig": "Vorhänge", + "iot_wash_dark": "Dunkle Kleidungsstücke", "iot_wash_darks_and_coloured_44": "Dunkles und Buntes 44'", "iot_wash_darks_and_coloured_59": "Dunkles und Buntes 59'", "iot_wash_darks_and_coloured_xl": "Dunkles und Buntes XL", - "iot_wash_dark_steam": "Dunkle Kleidungsst\u00fccke + Dampf", + "iot_wash_dark_steam": "Dunkle Kleidungsstücke + Dampf", "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", "iot_wash_dash_cold_cycle": "Dash Cold Clean", "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", - "iot_wash_delicate": "Feinw\u00e4sche", - "iot_wash_delicate_antiallergy": "Allergenarmes Programm f\u00fcr Feines", - "iot_wash_delicate_antiallergy_steam": "Allergenarmes Programm f\u00fcr Feines + Dampf", - "iot_wash_delicate_antiallergy_zelig": "Allergenarmes Programm f\u00fcr Feines", - "iot_wash_delicate_colors": "Bunte Feinw\u00e4sche", + "iot_wash_delicate": "Feinwäsche", + "iot_wash_delicate_antiallergy": "Allergenarmes Programm für Feines", + "iot_wash_delicate_antiallergy_steam": "Allergenarmes Programm für Feines + Dampf", + "iot_wash_delicate_antiallergy_zelig": "Allergenarmes Programm für Feines", + "iot_wash_delicate_colors": "Bunte Feinwäsche", "iot_wash_delicate_colors_steam": "Buntes + Dampf", - "iot_wash_delicate_dark": "Dunkle Feinw\u00e4sche", - "iot_wash_delicate_steam": "Feinw\u00e4sche + Dampf", + "iot_wash_delicate_dark": "Dunkle Feinwäsche", + "iot_wash_delicate_steam": "Feinwäsche + Dampf", "iot_wash_delicate_tablecloths": "Empfindliche Tischdecken", "iot_wash_delicate_tablecloths_steam": "Empfindliche Tischdecken + Dampf", - "iot_wash_delicate_whites": "Wei\u00dfe Feinw\u00e4sche", + "iot_wash_delicate_whites": "Weiße Feinwäsche", "iot_wash_denim_jeans": "Denim - Jeans", - "iot_wash_diving_suits": "Tauchanz\u00fcge", - "iot_wash_diving_suits_zelig": "Tauchanz\u00fcge", + "iot_wash_diving_suits": "Tauchanzüge", + "iot_wash_diving_suits_zelig": "Tauchanzüge", "iot_wash_down_jackets": "Daunenjacken", "iot_wash_down_jackets_zelig": "Daunenjacken", "iot_wash_duvet": "Oberbetten", "iot_wash_fruit_stains": "Obstflecken", "iot_wash_gym_fit": "Fitness-Studio - Fitness-Kleidung", - "iot_wash_handwash": "Handw\u00e4sche", - "iot_wash_handwash_colored": "Bunte Handw\u00e4sche", - "iot_wash_handwash_dark": "Dunkle Handw\u00e4sche", + "iot_wash_handwash": "Handwäsche", + "iot_wash_handwash_colored": "Bunte Handwäsche", + "iot_wash_handwash_dark": "Dunkle Handwäsche", "iot_wash_lingerie": "Dessous", "iot_wash_masks_refresh": "Mundschutz-Auffrischung", "iot_wash_masks_sanification": "Mundschutz-Desinfektion", @@ -697,36 +696,36 @@ "iot_wash_mix_and_coloured_59": "Gemischt und Farben 59'", "iot_wash_mix_and_coloured_xl": "Gemischt und Farben XL", "iot_wash_new_clothes": "Neue Kleidung", - "iot_wash_perfect_white": "Perfektes Wei\u00df", - "iot_wash_perfect_white_steam": "Perfektes Wei\u00df + Dampf", - "iot_wash_pets": "Textilien f\u00fcr Haustiere", + "iot_wash_perfect_white": "Perfektes Weiß", + "iot_wash_perfect_white_steam": "Perfektes Weiß + Dampf", + "iot_wash_pets": "Textilien für Haustiere", "iot_wash_pets_hair_removal": "Haustierhaare auswaschen", "iot_wash_pets_odours_stains_removal": "Haustiere Geruchs- und Fleckenentfernung", - "iot_wash_pets_steam": "Textilien f\u00fcr Haustiere", - "iot_wash_playsuits": "Strampelanz\u00fcge", - "iot_wash_playsuits_steam": "Strampelanz\u00fcge + Dampf", - "iot_wash_quick_drum_cleaner": "Schnellreinigung f\u00fcr Waschmaschinentrommeln", - "iot_wash_rapid_14": "Rapid 14\u2019", - "iot_wash_rapid_30": "Rapid 30\u2019", + "iot_wash_pets_steam": "Textilien für Haustiere", + "iot_wash_playsuits": "Strampelanzüge", + "iot_wash_playsuits_steam": "Strampelanzüge + Dampf", + "iot_wash_quick_drum_cleaner": "Schnellreinigung für Waschmaschinentrommeln", + "iot_wash_rapid_14": "Rapid 14’", + "iot_wash_rapid_30": "Rapid 30’", "iot_wash_rapid_44": "Rapid 44'", "iot_wash_rapid_59": "Rapid 59'", "iot_wash_rapid_59_steam": "Rapid 59' + Dampf", "iot_wash_refresh_14_min": "Auffrischen 14'", - "iot_wash_resistant_colored": "Strapazierf\u00e4hige Buntw\u00e4sche", - "iot_wash_resistant_dark": "Strapazierf\u00e4hige dunkle W\u00e4sche", - "iot_wash_resistant_whites": "Strapazierf\u00e4hige wei\u00dfe W\u00e4sche", - "iot_wash_rinse": "Sp\u00fclen", + "iot_wash_resistant_colored": "Strapazierfähige Buntwäsche", + "iot_wash_resistant_dark": "Strapazierfähige dunkle Wäsche", + "iot_wash_resistant_whites": "Strapazierfähige weiße Wäsche", + "iot_wash_rinse": "Spülen", "iot_wash_shirts": "Hemden", "iot_wash_shirts_steam": "Hemden + Dampf", "iot_wash_silk": "Seide", - "iot_wash_ski_suit": "Skianz\u00fcge", - "iot_wash_ski_suit_zelig": "Skianz\u00fcge", + "iot_wash_ski_suit": "Skianzüge", + "iot_wash_ski_suit_zelig": "Skianzüge", "iot_wash_spin": "Schleudern", "iot_wash_sport": "Sport", "iot_wash_sport_anti_odor": "Anti-Geruch Sportbekleidung", "iot_wash_sport_anti_odor_zelig": "Anti-Geruch Sportbekleidung", "iot_wash_stains_remover": "Fleckenentferner", - "iot_wash_swimsuits_and_bikinis": "Badeanz\u00fcge", + "iot_wash_swimsuits_and_bikinis": "Badeanzüge", "iot_wash_synthetic": "Synthetik", "iot_wash_synthetic_steam": "Synthetik + Dampf", "iot_wash_tablecloths": "Tischdecken", @@ -736,10 +735,10 @@ "iot_wash_technical_jackets": "Jacken aus technischen Textilien", "iot_wash_technical_jackets_zelig": "Jacken aus technischen Textilien", "iot_wash_trainers": "Turnschuhe", - "iot_wash_whites": "Wei\u00df", - "iot_wash_whites_44": "Wei\u00df 44'", - "iot_wash_whites_59": "Wei\u00df 59'", - "iot_wash_whites_xl": "Wei\u00df XL", + "iot_wash_whites": "Weiß", + "iot_wash_whites_44": "Weiß 44'", + "iot_wash_whites_59": "Weiß 59'", + "iot_wash_whites_xl": "Weiß XL", "iot_wash_wine_stains": "Weinflecken", "iot_wash_wool": "Wolle", "jeans": "Jeans", @@ -749,13 +748,13 @@ "mixed_and_colored_59": "Gemischt und Farben 59'", "mixed_steam": "Gemischt + Dampf", "mix_and_colour_59": "Misch + Buntwaesche 59'", - "mix_and_colour_59_steam": "Misch- und Buntw\u00e4sche 59' + Dampf", + "mix_and_colour_59_steam": "Misch- und Buntwäsche 59' + Dampf", "night_and_day": "Nacht und Tag", - "night_wash": "Zyklus \u00fcber Nacht", + "night_wash": "Zyklus über Nacht", "perfect_59": "Perfekt 59'", "perfect_cotton_59": "Baumwolle Perfekt 59'", "perfect_cotton_59_steam": "Baumwolle Perfekt 59'", - "perfect_whites_59": "Bl\u00fctenwei\u00df 59'", + "perfect_whites_59": "Blütenweiß 59'", "rapid_14_min": "14'uten Kurzprogramm", "rapid_30_min": "Schnellwaschgang 30'", "rapid_44_min": "Schnellwaschgang 44'", @@ -764,9 +763,9 @@ "rapid_wash_and_dry_59_min": "Waschen und trocknen 59'", "resistant_cotton": "Baumwolle", "resistant_cotton_steam": "Baumwolle + Dampf", - "rinse": "Sp\u00fclen", + "rinse": "Spülen", "shirts_steam": "Hemden + Dampf", - "silent_night": "Zyklus \u00fcber Nacht", + "silent_night": "Zyklus über Nacht", "single_item": "Einzelner Gegenstand", "single_item_steam": "Einzelner Gegenstand + Dampf", "smart_wash": "Smart Wash", @@ -783,7 +782,7 @@ "steam_39": "Dampf 39'", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - Baumwolle", - "steam_care_pro_delicates": "Steam Care Pro - Feinw\u00e4sche", + "steam_care_pro_delicates": "Steam Care Pro - Feinwäsche", "steam_care_pro_synthetic": "Steam Care Pro - Synthetik", "steam_hygiene_plus": "Hygiene Plus Dampf ", "synthetics": "Synthetik", @@ -794,7 +793,7 @@ "total_care": "Total Care", "tumbling": "Trocknen", "wool": "Wolle", - "wool_and_delicates_49": "Wolle/Feinw\u00e4sche 49'", + "wool_and_delicates_49": "Wolle/Feinwäsche 49'", "wool_dry": "Wolle trocknen", "wool_soft_care": "Wolle & Soft Care" }, @@ -803,12 +802,12 @@ "dry_levels": { "state": { "0": "Keine Trocknung", - "1": "B\u00fcgeln", - "2": "W\u00e4sche fertig", - "3": "W\u00e4sche fertig", + "1": "Bügeln", + "2": "Wäsche fertig", + "3": "Wäsche fertig", "4": "Extra trocken", - "12": "B\u00fcgeln", - "13": "W\u00e4sche fertig", + "12": "Bügeln", + "13": "Wäsche fertig", "14": "Bereit zum Anziehen", "15": "Extra trocken" }, @@ -841,7 +840,7 @@ "name": "Halbe Ladung" }, "open_door": { - "name": "T\u00fcr offen" + "name": "Tür offen" }, "three_in_one": { "name": "3-in-1" @@ -850,7 +849,7 @@ "name": "Vorheizen" }, "dish_washer": { - "name": "Geschirrsp\u00fclmaschine" + "name": "Geschirrspülmaschine" }, "tumble_dryer": { "name": "Trockner" @@ -865,7 +864,7 @@ "name": "Ofen" }, "prewash": { - "name": "Vorsp\u00fclen" + "name": "Vorspülen" }, "pause": { "name": "Anhalten" @@ -874,21 +873,21 @@ "name": "Keep Fresh" }, "delay_time": { - "name": "Einschaltverz\u00f6gerung" + "name": "Einschaltverzögerung" } }, "binary_sensor": { "door_lock": { - "name": "T\u00fcrsperre" + "name": "Türsperre" }, "extra_rinse_1": { - "name": "+1 Sp\u00fclgang" + "name": "+1 Spülgang" }, "extra_rinse_2": { - "name": "+2 Sp\u00fclg\u00e4nge" + "name": "+2 Spülgänge" }, "extra_rinse_3": { - "name": "+3 Sp\u00fclg\u00e4nge" + "name": "+3 Spülgänge" }, "good_night": { "name": "Gute Nacht" @@ -918,7 +917,7 @@ "name": "Programm" }, "still_hot": { - "name": "Noch hei\u00df" + "name": "Noch heiß" }, "pan_status": { "name": "Pfanne" @@ -927,16 +926,16 @@ "name": "Fernsteuerung" }, "rinse_aid": { - "name": "Klarsp\u00fclerstand" + "name": "Klarspülerstand" }, "salt_level": { - "name": "Salz-F\u00fcllstand" + "name": "Salz-Füllstand" }, "door_open": { - "name": "T\u00fcr offen" + "name": "Tür offen" }, "connection": { - "name": "Ger\u00e4teverbindung" + "name": "Geräteverbindung" }, "child_lock": { "name": "Kindersicherung" @@ -945,7 +944,7 @@ "name": "An" }, "prewash": { - "name": "Vorsp\u00fclen" + "name": "Vorspülen" } }, "number": { @@ -956,10 +955,10 @@ "name": "Temperatur" }, "delay_time": { - "name": "Einschaltverz\u00f6gerung" + "name": "Einschaltverzögerung" }, "water_hard": { - "name": "Wasserh\u00e4rte" + "name": "Wasserhärte" }, "program_duration": { "name": "Programmdauer" @@ -968,7 +967,7 @@ "name": "Zieltemperatur" }, "rinse_iterations": { - "name": "Anzahl Sp\u00fclg\u00e4nge" + "name": "Anzahl Spülgänge" }, "wash_time": { "name": "Waschdauer" diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index ce55ba3..ae770f8 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -3,983 +3,982 @@ "sensor": { "washing_modes": { "state": { - "0": "\u0395\u03c4\u03bf\u03b9\u03bc\u03bf\u03c2", - "1": "\u0395\u03c4\u03bf\u03b9\u03bc\u03bf\u03c2", - "3": "\u03a0\u03b1\u03cd\u03c3\u03b7", - "4": "\u03a0\u03c1\u03bf\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf\u03c2", - "5": "\u03a0\u03c1\u03bf\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf\u03c2", - "6": "\u039b\u03ac\u03b8\u03bf\u03c2", - "7": "\u0395\u03c4\u03bf\u03b9\u03bc\u03bf\u03c2" + "0": "Ετοιμος", + "1": "Ετοιμος", + "3": "Παύση", + "4": "Προγραμματισμένος", + "5": "Προγραμματισμένος", + "6": "Λάθος", + "7": "Ετοιμος" } }, "program_phases_wm": { "state": { - "0": "\u0395\u03c4\u03bf\u03b9\u03bc\u03bf\u03c2", - "1": "\u03a0\u03bb\u03cd\u03c3\u03b7", - "2": "\u03a0\u03bb\u03cd\u03c3\u03b7", - "3": "\u03a3\u03c4\u03cd\u03c8\u03b9\u03bc\u03bf", - "4": "\u039e\u03ad\u03b2\u03b3\u03b1\u03bb\u03bc\u03b1", - "5": "\u039e\u03ad\u03b2\u03b3\u03b1\u03bb\u03bc\u03b1", - "6": "\u039e\u03ad\u03b2\u03b3\u03b1\u03bb\u03bc\u03b1", - "7": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", - "9": "\u0391\u03c4\u03bc\u03cc\u03c2", - "10": "\u0395\u03c4\u03bf\u03b9\u03bc\u03bf\u03c2", - "11": "\u03a3\u03c4\u03cd\u03c8\u03b9\u03bc\u03bf", - "12": "\u0396\u03cd\u03b3\u03b9\u03c3\u03bc\u03b1 ", - "13": "\u0396\u03cd\u03b3\u03b9\u03c3\u03bc\u03b1 ", - "14": "\u03a0\u03bb\u03cd\u03c3\u03b7", - "15": "\u03a0\u03bb\u03cd\u03c3\u03b7", - "16": "\u03a0\u03bb\u03cd\u03c3\u03b7", - "17": "\u039e\u03ad\u03b2\u03b3\u03b1\u03bb\u03bc\u03b1", - "18": "\u039e\u03ad\u03b2\u03b3\u03b1\u03bb\u03bc\u03b1", - "19": "\u03a0\u03c1\u03bf\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf\u03c2", - "20": "\u039a\u03c1\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 \u03c4\u03b7 \u03c6\u03c1\u03b5\u03c3\u03ba\u03ac\u03b4\u03b1", - "24": "\u03a6\u03c1\u03b5\u03c3\u03ba\u03ac\u03c1\u03b9\u03c3\u03bc\u03b1", - "25": "\u03a0\u03bb\u03cd\u03c3\u03b7", - "26": "\u0398\u03ad\u03c1\u03bc\u03b1\u03bd\u03c3\u03b7", - "27": "\u03a0\u03bb\u03cd\u03c3\u03b7" + "0": "Ετοιμος", + "1": "Πλύση", + "2": "Πλύση", + "3": "Στύψιμο", + "4": "Ξέβγαλμα", + "5": "Ξέβγαλμα", + "6": "Ξέβγαλμα", + "7": "Στέγνωμα", + "9": "Ατμός", + "10": "Ετοιμος", + "11": "Στύψιμο", + "12": "Ζύγισμα ", + "13": "Ζύγισμα ", + "14": "Πλύση", + "15": "Πλύση", + "16": "Πλύση", + "17": "Ξέβγαλμα", + "18": "Ξέβγαλμα", + "19": "Προγραμματισμένος", + "20": "Κρατήστε τη φρεσκάδα", + "24": "Φρεσκάρισμα", + "25": "Πλύση", + "26": "Θέρμανση", + "27": "Πλύση" }, - "name": "\u03a6\u03ac\u03c3\u03b7" + "name": "Φάση" }, "program_phases_td": { "state": { - "0": "\u0395\u03c4\u03bf\u03b9\u03bc\u03bf\u03c2", - "1": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", - "2": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", - "3": "\u03a0\u03b5\u03c1\u03af\u03bf\u03b4\u03bf\u03c2 \u03b1\u03bd\u03b1\u03bc\u03bf\u03bd\u03ae\u03c2", - "13": "\u03a0\u03b5\u03c1\u03af\u03bf\u03b4\u03bf\u03c2 \u03b1\u03bd\u03b1\u03bc\u03bf\u03bd\u03ae\u03c2", - "14": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", - "15": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", - "16": "\u03a0\u03b5\u03c1\u03af\u03bf\u03b4\u03bf\u03c2 \u03b1\u03bd\u03b1\u03bc\u03bf\u03bd\u03ae\u03c2", - "18": "\u039a\u03c1\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 \u03c4\u03b7 \u03c6\u03c1\u03b5\u03c3\u03ba\u03ac\u03b4\u03b1", - "19": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", - "20": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1" + "0": "Ετοιμος", + "1": "Στέγνωμα", + "2": "Στέγνωμα", + "3": "Περίοδος αναμονής", + "13": "Περίοδος αναμονής", + "14": "Στέγνωμα", + "15": "Στέγνωμα", + "16": "Περίοδος αναμονής", + "18": "Κρατήστε τη φρεσκάδα", + "19": "Στέγνωμα", + "20": "Στέγνωμα" }, - "name": "\u03a6\u03ac\u03c3\u03b7" + "name": "Φάση" }, "program_phases_dw": { "state": { - "0": "\u0395\u03c4\u03bf\u03b9\u03bc\u03bf\u03c2", - "1": "\u03a0\u03c1\u03cc\u03c0\u03bb\u03c5\u03c3\u03b7", - "2": "\u03a0\u03bb\u03cd\u03c3\u03b7", - "3": "\u039e\u03ad\u03b2\u03b3\u03b1\u03bb\u03bc\u03b1", - "4": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", - "5": "\u0395\u03c4\u03bf\u03b9\u03bc\u03bf\u03c2", + "0": "Ετοιμος", + "1": "Πρόπλυση", + "2": "Πλύση", + "3": "Ξέβγαλμα", + "4": "Στέγνωμα", + "5": "Ετοιμος", "6": "Hot rinse" }, - "name": "\u03a6\u03ac\u03c3\u03b7" + "name": "Φάση" }, "dry_levels": { "state": { - "0": "\u03a7\u03c9\u03c1\u03af\u03c2 \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", - "1": "\u03a3\u03b9\u03b4\u03ad\u03c1\u03c9\u03bc\u03b1", - "2": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1 \u03b3\u03b9\u03b1 \u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 ", - "3": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1 \u03b3\u03b9\u03b1 \u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 ", - "4": "\u0395\u03c0\u03b9\u03c0\u03bb\u03ad\u03bf\u03bd \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", - "12": "\u03a3\u03b9\u03b4\u03ad\u03c1\u03c9\u03bc\u03b1", - "13": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1 \u03b3\u03b9\u03b1 \u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 ", - "14": "\u0395\u03c4\u03bf\u03b9\u03bc\u03bf \u03bd\u03b1 \u03c6\u03bf\u03c1\u03b5\u03b8\u03b5\u03af", - "15": "\u0395\u03c0\u03b9\u03c0\u03bb\u03ad\u03bf\u03bd \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1" + "0": "Χωρίς στέγνωμα", + "1": "Σιδέρωμα", + "2": "Στέγνωμα για Αποθήκευση ", + "3": "Στέγνωμα για Αποθήκευση ", + "4": "Επιπλέον στέγνωμα", + "12": "Σιδέρωμα", + "13": "Στέγνωμα για Αποθήκευση ", + "14": "Ετοιμο να φορεθεί", + "15": "Επιπλέον στέγνωμα" }, - "name": "\u0395\u03c0\u03af\u03c0\u03b5\u03b4\u03bf \u03c3\u03c4\u03b5\u03b3\u03bd\u03ce\u03bc\u03b1\u03c4\u03bf\u03c2" + "name": "Επίπεδο στεγνώματος" }, "anti_crease": { - "name": "\u039b\u03b9\u03b3\u03cc\u03c4\u03b5\u03c1\u03b5\u03c2 \u03b6\u03ac\u03c1\u03b5\u03c2" + "name": "Λιγότερες ζάρες" }, "power": { - "name": "\u0395\u03c0\u03af\u03c0\u03b5\u03b4\u03bf \u03b9\u03c3\u03c7\u03cd\u03bf\u03c2 \u03c1\u03b5\u03cd\u03bc\u03b1\u03c4\u03bf\u03c2" + "name": "Επίπεδο ισχύος ρεύματος" }, "remaining_time": { - "name": "\u03a7\u03c1\u03cc\u03bd\u03bf\u03c2 \u03c0\u03bf\u03c5 \u03b1\u03c0\u03bf\u03bc\u03ad\u03bd\u03b5\u03b9" + "name": "Χρόνος που απομένει" }, "temperature": { - "name": "\u0398\u03b5\u03c1\u03bc\u03bf\u03ba\u03c1\u03b1\u03c3\u03af\u03b1" + "name": "Θερμοκρασία" }, "water_efficiency": { - "name": "\u0391\u03c0\u03cc\u03b4\u03bf\u03c3\u03b7 \u03bd\u03b5\u03c1\u03bf\u03cd" + "name": "Απόδοση νερού" }, "water_saving": { - "name": "\u0395\u03be\u03bf\u03b9\u03ba\u03bf\u03bd\u03cc\u03bc\u03b7\u03c3\u03b7 \u03bd\u03b5\u03c1\u03bf\u03cd" + "name": "Εξοικονόμηση νερού" }, "duration": { - "name": "\u0394\u03b9\u03ac\u03c1\u03ba\u03b5\u03b9\u03b1" + "name": "Διάρκεια" }, "target_temperature": { - "name": "\u03a3\u03c4\u03bf\u03c7\u03b5\u03c5\u03bc\u03ad\u03bd\u03b7 \u03b8\u03b5\u03c1\u03bc\u03bf\u03ba\u03c1\u03b1\u03c3\u03af\u03b1" + "name": "Στοχευμένη θερμοκρασία" }, "spin_speed": { - "name": "\u03a3\u03c4\u03cd\u03c8\u03b9\u03bc\u03bf" + "name": "Στύψιμο" }, "steam_leve": { - "name": "\u0395\u03c0\u03af\u03c0\u03b5\u03b4\u03bf \u03b1\u03c4\u03bc\u03bf\u03cd" + "name": "Επίπεδο ατμού" }, "dirt_level": { - "name": "\u0395\u03c0\u03af\u03c0\u03b5\u03b4\u03bf \u03b2\u03c1\u03c9\u03bc\u03b9\u03ac\u03c2" + "name": "Επίπεδο βρωμιάς" }, "delay_time": { - "name": "\u039a\u03b1\u03b8\u03c5\u03c3\u03c4\u03b5\u03c1\u03b7\u03bc\u03ad\u03bd\u03b7 \u03ad\u03bd\u03b1\u03c1\u03be\u03b7" + "name": "Καθυστερημένη έναρξη" }, "dry_time": { - "name": "\u03a7\u03c1\u03cc\u03bd\u03bf\u03c2 \u03c3\u03c4\u03b5\u03b3\u03bd\u03ce\u03bc\u03b1\u03c4\u03bf\u03c2" + "name": "Χρόνος στεγνώματος" }, "suggested_load": { - "name": "\u03a7\u03c9\u03c1\u03b7\u03c4\u03b9\u03ba\u03cc\u03c4\u03b7\u03c4\u03b1 \u03c6\u03bf\u03c1\u03c4\u03af\u03bf\u03c5" + "name": "Χωρητικότητα φορτίου" }, "energy_label": { - "name": "\u0395\u03bd\u03b5\u03c1\u03b3\u03b5\u03b9\u03b1\u03ba\u03ae \u03b1\u03c0\u03cc\u03b4\u03bf\u03c3\u03b7" + "name": "Ενεργειακή απόδοση" }, "det_dust": { - "name": "\u03a3\u03ba\u03cc\u03bd\u03b7" + "name": "Σκόνη" }, "det_liquid": { - "name": "\u03a5\u03b3\u03c1\u03cc" + "name": "Υγρό" }, "errors": { - "name": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1" + "name": "Σφάλμα" }, "programs": { - "name": "\u03a4\u03c1\u03ad\u03c7\u03c9\u03bd \u03c0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1" + "name": "Τρέχων πρόγραμμα" }, "cycles_total": { - "name": "\u039a\u03cd\u03ba\u03bb\u03bf\u03b9 \u03a3\u03cd\u03bd\u03bf\u03bb\u03bf" + "name": "Κύκλοι Σύνολο" }, "energy_total": { - "name": "\u039a\u03b1\u03c4\u03b1\u03bd\u03ac\u03bb\u03c9\u03c3\u03b7 \u03b5\u03bd\u03ad\u03c1\u03b3\u03b5\u03b9\u03b1\u03c2 \u03a3\u03cd\u03bd\u03bf\u03bb\u03bf" + "name": "Κατανάλωση ενέργειας Σύνολο" }, "water_total": { - "name": "\u0391\u03c0\u03cc\u03b4\u03bf\u03c3\u03b7 \u03bd\u03b5\u03c1\u03bf\u03cd \u03a3\u03cd\u03bd\u03bf\u03bb\u03bf" + "name": "Απόδοση νερού Σύνολο" }, "energy_current": { - "name": "\u039a\u03b1\u03c4\u03b1\u03bd\u03ac\u03bb\u03c9\u03c3\u03b7 \u03b5\u03bd\u03ad\u03c1\u03b3\u03b5\u03b9\u03b1\u03c2 Current" + "name": "Κατανάλωση ενέργειας Current" }, "water_current": { - "name": "\u0391\u03c0\u03cc\u03b4\u03bf\u03c3\u03b7 \u03bd\u03b5\u03c1\u03bf\u03cd Current" + "name": "Απόδοση νερού Current" } }, "select": { "programs_dw": { "state": { - "59_min": "\u0393\u03c1\u03b7\u03b3\u03bf\u03c1\u03bf 59'", + "59_min": "Γρηγορο 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", "auto_plus": "AutoPlus", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "\u03b1\u03c5\u03c4\u03bf\u03bc\u03b1\u03c4\u03bf Universal 50 - 60\u00b0C", - "auto_universal_plus": "\u03b1\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03bf Universal Plus 65 - 75\u00b0C", - "auto_universal_plus_soil": "\u03b1\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03bf Universal Plus 65 - 75\u00b0C", - "auto_universal_soil": "\u03b1\u03c5\u03c4\u03bf\u03bc\u03b1\u03c4\u03bf Universal 50 - 60\u00b0C", - "auto_wash": "\u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03c0\u03bb\u03cd\u03c3\u03b7", - "auto_wash_soil": "\u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03c0\u03bb\u03cd\u03c3\u03b7", - "classe_a_59": "\u0391 Class 59' 65\u00b0C", - "delicate": "\u03b5\u03c5\u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03b1 45\u00b0C", - "dishwasher_care": "\u039a\u03cd\u03ba\u03bb\u03bf\u03c2 \u03ba\u03b1\u03b8\u03b1\u03c1\u03b9\u03c3\u03bc\u03bf\u03cd \u03ba\u03bb\u03af\u03bc\u03b1\u03ba\u03b1\u03c2 \u03c3\u03c4\u03c1\u03ce\u03bc\u03b1\u03c4\u03bf\u03c2 \u03b1\u03bb\u03ac\u03c4\u03c9\u03bd", - "eco": "\u039f\u03b9\u03ba\u03bf\u03bb\u03bf\u03b3\u03b9\u03ba\u03cc", - "eco_asynch": "ECO 45\u00b0C", - "eco_bldc": "ECO 45\u00b0C", - "eco_synch": "ECO 45\u00b0C", + "auto_universal": "αυτοματο Universal 50 - 60°C", + "auto_universal_plus": "αυτόματο Universal Plus 65 - 75°C", + "auto_universal_plus_soil": "αυτόματο Universal Plus 65 - 75°C", + "auto_universal_soil": "αυτοματο Universal 50 - 60°C", + "auto_wash": "Αυτόματη πλύση", + "auto_wash_soil": "Αυτόματη πλύση", + "classe_a_59": "Α Class 59' 65°C", + "delicate": "ευαισθητα 45°C", + "dishwasher_care": "Κύκλος καθαρισμού κλίμακας στρώματος αλάτων", + "eco": "Οικολογικό", + "eco_asynch": "ECO 45°C", + "eco_bldc": "ECO 45°C", + "eco_synch": "ECO 45°C", "gentle_wash": "Gentle wash", - "glass": "\u03a0\u03bf\u03c4\u03ae\u03c1\u03b9", - "glassware": "\u03b3\u03c5\u03b1\u03bb\u03b9\u03ba\u03b1 45\u00b0C", + "glass": "Ποτήρι", + "glassware": "γυαλικα 45°C", "glass_care": "Glass Care", - "hygiene": "\u03a5\u03b3\u03b9\u03b5\u03b9\u03bd\u03cc", - "hygiene_plus": "Hygiene+ 75\u00b0C", - "intensive": "\u0395\u03bd\u03c4\u03b1\u03c4\u03b9\u03ba\u03cc ", - "intensive_rapid": "\u03b4\u03c5\u03bd\u03b1\u03c4\u03bf \u03b3\u03c1\u03b7\u03b3\u03bf\u03c1\u03bf", + "hygiene": "Υγιεινό", + "hygiene_plus": "Hygiene+ 75°C", + "intensive": "Εντατικό ", + "intensive_rapid": "δυνατο γρηγορο", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "\u03b1\u03c5\u03c4\u03bf\u03bc\u03b1\u03c4\u03bf Universal 50 - 60\u00b0C", - "iot_auto_wash_soil": "\u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03c0\u03bb\u03cd\u03c3\u03b7", - "iot_baby_care": "\u03a6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1 \u039c\u03c9\u03c1\u03bf\u03cd", - "iot_breakfast": "\u03a0\u03c1\u03c9\u03b9\u03bd\u03cc", - "iot_checkup": "\u0388\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2", - "iot_china_crystals": "\u039a\u03b9\u03bd\u03ad\u03b6\u03b9\u03ba\u03b1 \u039a\u03c1\u03cd\u03c3\u03c4\u03b1\u03bb\u03bb\u03b1", - "iot_classe_a_59": "\u0393\u03c1\u03b7\u03b3\u03bf\u03c1\u03bf 59'", - "iot_cocktail_glasses": "\u03a0\u03bf\u03c4\u03ae\u03c1\u03b9\u03b1 \u039a\u03bf\u03ba\u03c4\u03ad\u03b9\u03bb", - "iot_cocktail_glasses_soil": "\u03a0\u03bf\u03c4\u03ae\u03c1\u03b9\u03b1 \u039a\u03bf\u03ba\u03c4\u03ad\u03b9\u03bb", - "iot_daily_care": "\u039a\u03b1\u03b8\u03b7\u03bc\u03b5\u03c1\u03b9\u03bd\u03ae \u03a6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1", - "iot_daily_care_soil": "\u039a\u03b1\u03b8\u03b7\u03bc\u03b5\u03c1\u03b9\u03bd\u03ae \u03a6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1", - "iot_delicate": "\u03b5\u03c5\u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03b1 45\u00b0C", - "iot_dinner_for_two": "\u0394\u03b5\u03af\u03c0\u03bd\u03bf \u03b3\u03b9\u03b1 2", - "iot_dinner_for_two_soil": "\u0394\u03b5\u03af\u03c0\u03bd\u03bf \u03b3\u03b9\u03b1 2", + "iot_auto_universal_soil": "αυτοματο Universal 50 - 60°C", + "iot_auto_wash_soil": "Αυτόματη πλύση", + "iot_baby_care": "Φροντίδα Μωρού", + "iot_breakfast": "Πρωινό", + "iot_checkup": "Έλεγχος", + "iot_china_crystals": "Κινέζικα Κρύσταλλα", + "iot_classe_a_59": "Γρηγορο 59'", + "iot_cocktail_glasses": "Ποτήρια Κοκτέιλ", + "iot_cocktail_glasses_soil": "Ποτήρια Κοκτέιλ", + "iot_daily_care": "Καθημερινή Φροντίδα", + "iot_daily_care_soil": "Καθημερινή Φροντίδα", + "iot_delicate": "ευαισθητα 45°C", + "iot_dinner_for_two": "Δείπνο για 2", + "iot_dinner_for_two_soil": "Δείπνο για 2", "iot_dreft_quick_cycle": "Dreft Quick", - "iot_eco_asynch": "ECO 45\u00b0C", - "iot_eco_bldc": "ECO 45\u00b0C", - "iot_eco_synch": "ECO 45\u00b0C", - "iot_extra_hygiene": "\u0395\u03c0\u03b9\u03c0\u03bb\u03ad\u03bf\u03bd \u03a5\u03b3\u03b9\u03b5\u03b9\u03bd\u03ae", + "iot_eco_asynch": "ECO 45°C", + "iot_eco_bldc": "ECO 45°C", + "iot_eco_synch": "ECO 45°C", + "iot_extra_hygiene": "Επιπλέον Υγιεινή", "iot_fairy_quick_cycle": "Fairy Quick", "iot_happy_hour": "Happy Hour", "iot_jar_quick_cycle": "Jar Quick", - "iot_party": "\u03a0\u03ac\u03c1\u03c4\u03b9", - "iot_party_soil": "\u03a0\u03ac\u03c1\u03c4\u03b9", - "iot_pizza_menu": "\u039c\u03b5\u03bd\u03bf\u03cd \u03a0\u03af\u03c4\u03c3\u03b1", - "iot_pizza_menu_soil": "\u039c\u03b5\u03bd\u03bf\u03cd \u03a0\u03af\u03c4\u03c3\u03b1", - "iot_plastic_tupperware": "\u03a0\u03bb\u03b1\u03c3\u03c4\u03b9\u03ba\u03ac & \u03a4\u03ac\u03c0\u03b5\u03c1", - "iot_porcelain": "\u03a0\u03bf\u03c1\u03c3\u03b5\u03bb\u03ac\u03bd\u03b7", - "iot_power_mix_wash": "\u0399\u03c3\u03c7\u03c5\u03c1\u03ae \u03a0\u03bb\u03cd\u03c3\u03b7 \u03b3\u03b9\u03b1 \u039c\u03b9\u03ba\u03c4\u03ac", - "iot_power_mix_wash_soil": "\u0399\u03c3\u03c7\u03c5\u03c1\u03ae \u03a0\u03bb\u03cd\u03c3\u03b7 \u03b3\u03b9\u03b1 \u039c\u03b9\u03ba\u03c4\u03ac", - "iot_prewash": "\u03c0\u03c1\u03bf\u03c0\u03bb\u03c5\u03c3\u03b7", - "iot_pyrex_and_glassware": "\u03a0\u03c5\u03c1\u03ad\u03be & \u0393\u03c5\u03ac\u03bb\u03b9\u03bd\u03b1 \u0395\u03af\u03b4\u03b7", - "iot_rapid_29": "\u03b3\u03c1\u03b7\u03b3\u03bf\u03c1\u03bf 29'", - "iot_rapid_39": "\u03b3\u03c1\u03b7\u03b3\u03bf\u03c1\u03bf 39' 60\u00b0C", - "iot_single": "\u0391\u03c4\u03bf\u03bc\u03b9\u03ba\u03cc", - "iot_steam": "\u03b1\u03c4\u03bc\u03bf\u03c2 75\u00b0C", - "iot_super_flash": "\u0395\u03be\u03b1\u03b9\u03c1\u03b5\u03c4\u03b9\u03ba\u03ac \u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf", - "iot_super_wash": "\u0395\u03be\u03b1\u03b9\u03c1\u03b5\u03c4\u03b9\u03ba\u03ae \u03a0\u03bb\u03cd\u03c3\u03b7", - "iot_turbopower": "\u039c\u03b5\u03b3\u03ac\u03bb\u03b7 \u0399\u03c3\u03c7\u03cd\u03c2", - "iot_universal": "\u03b3\u03b5\u03bd\u03b9\u03ba\u03bf 60\u00b0C", - "iot_wok_grids_maxi_pans": "\u0395\u03b9\u03b4\u03b9\u03ba\u03ac \u03a4\u03b7\u03b3\u03ac\u03bd\u03b9\u03b1 (\u0393\u03bf\u03c5\u03cc\u03ba - \u03a3\u03c7\u03ac\u03c1\u03b5\u03c2 \u03ba\u03b1\u03b9 \u039c\u03b5\u03b3\u03ac\u03bb\u03b1 \u03a4\u03b7\u03b3\u03ac\u03bd\u03b9\u03b1)", - "iot_wok_grids_maxi_pans_soil": "\u0395\u03b9\u03b4\u03b9\u03ba\u03ac \u03a4\u03b7\u03b3\u03ac\u03bd\u03b9\u03b1 (\u0393\u03bf\u03c5\u03cc\u03ba - \u03a3\u03c7\u03ac\u03c1\u03b5\u03c2 \u03ba\u03b1\u03b9 \u039c\u03b5\u03b3\u03ac\u03bb\u03b1 \u03a4\u03b7\u03b3\u03ac\u03bd\u03b9\u03b1)", + "iot_party": "Πάρτι", + "iot_party_soil": "Πάρτι", + "iot_pizza_menu": "Μενού Πίτσα", + "iot_pizza_menu_soil": "Μενού Πίτσα", + "iot_plastic_tupperware": "Πλαστικά & Τάπερ", + "iot_porcelain": "Πορσελάνη", + "iot_power_mix_wash": "Ισχυρή Πλύση για Μικτά", + "iot_power_mix_wash_soil": "Ισχυρή Πλύση για Μικτά", + "iot_prewash": "προπλυση", + "iot_pyrex_and_glassware": "Πυρέξ & Γυάλινα Είδη", + "iot_rapid_29": "γρηγορο 29'", + "iot_rapid_39": "γρηγορο 39' 60°C", + "iot_single": "Ατομικό", + "iot_steam": "ατμος 75°C", + "iot_super_flash": "Εξαιρετικά Γρήγορο", + "iot_super_wash": "Εξαιρετική Πλύση", + "iot_turbopower": "Μεγάλη Ισχύς", + "iot_universal": "γενικο 60°C", + "iot_wok_grids_maxi_pans": "Ειδικά Τηγάνια (Γουόκ - Σχάρες και Μεγάλα Τηγάνια)", + "iot_wok_grids_maxi_pans_soil": "Ειδικά Τηγάνια (Γουόκ - Σχάρες και Μεγάλα Τηγάνια)", "iot_yes_quick_cycle": "Yes Quick", - "night": "Ultra Silent 55\u00b0C", - "prewash": "\u03c0\u03c1\u03bf\u03c0\u03bb\u03c5\u03c3\u03b7", - "rapid_20": "\u0393\u03c1\u03b7\u03b3\u03bf\u03c1\u03bf 20'", - "rapid_24": "\u03b3\u03c1\u03b7\u03b3\u03bf\u03c1\u03bf 24'", - "rapid_29": "\u03b3\u03c1\u03b7\u03b3\u03bf\u03c1\u03bf 29' 50\u00b0C", + "night": "Ultra Silent 55°C", + "prewash": "προπλυση", + "rapid_20": "Γρηγορο 20'", + "rapid_24": "γρηγορο 24'", + "rapid_29": "γρηγορο 29' 50°C", "rapid_35": "Wash&Dry 35'", - "rapid_39": "\u03b3\u03c1\u03b7\u03b3\u03bf\u03c1\u03bf 39' 60\u00b0C", - "rapid_49": "\u0393\u03c1\u03b7\u03b3\u03bf\u03c1\u03bf 49'", - "rapid_59": "\u0393\u03c1\u03b7\u03b3\u03bf\u03c1\u03bf 59'", - "sanitising": "\u0391\u03c0\u03bf\u03bb\u03cd\u03bc\u03b1\u03bd\u03c3\u03b7", + "rapid_39": "γρηγορο 39' 60°C", + "rapid_49": "Γρηγορο 49'", + "rapid_59": "Γρηγορο 59'", + "sanitising": "Απολύμανση", "silence": "Silence", - "silent": "\u039d\u03cd\u03c7\u03c4\u03b1", + "silent": "Νύχτα", "silent_care": "Silent Care", "smart_ai": "Smart AI", - "special": "\u03c3\u03c0\u03b5\u03c3\u03b9\u03b1\u03bb", - "special_pw_prz": "\u03c3\u03c0\u03b5\u03c3\u03b9\u03b1\u03bb", - "steam": "\u03b1\u03c4\u03bc\u03bf\u03c2 75\u00b0C", - "steam_plus": "\u0395\u03c0\u03b9\u03c0\u03bb\u03ad\u03bf\u03bd \u03b1\u03c4\u03bc\u03cc\u03c2 75\u00b0 C", - "total_care": "Total Care 50\u00b0C", - "ultra_silence": "Ultra Silent 55\u00b0C", - "ultra_silent": "Ultra Silent 55\u00b0C", - "universal": "\u03b3\u03b5\u03bd\u03b9\u03ba\u03bf 60\u00b0C", - "universal_plus": "\u03b3\u03b5\u03bd\u03b9\u03ba\u03bf Plus 70\u00b0C", + "special": "σπεσιαλ", + "special_pw_prz": "σπεσιαλ", + "steam": "ατμος 75°C", + "steam_plus": "Επιπλέον ατμός 75° C", + "total_care": "Total Care 50°C", + "ultra_silence": "Ultra Silent 55°C", + "ultra_silent": "Ultra Silent 55°C", + "universal": "γενικο 60°C", + "universal_plus": "γενικο Plus 70°C", "zoom_39": "Zoom 39 min" }, - "name": "\u03a0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1" + "name": "Πρόγραμμα" }, "programs_ih": { "state": { - "iot_special_ash_brown": "\u039a\u03b1\u03c6\u03ad \u03c6\u03bb\u03b1\u03bc\u03bf\u03c5\u03c1\u03b9\u03ac", - "iot_special_beef_fillet": "\u03a6\u03b9\u03bb\u03ad\u03c4\u03bf \u03b2\u03bf\u03b4\u03b9\u03bd\u03bf\u03cd", - "iot_special_beef_veal_stew": "\u0392\u03bf\u03b4\u03b9\u03bd\u03cc \u03ba\u03b1\u03b9 \u03bc\u03bf\u03c3\u03c7\u03b1\u03c1\u03af\u03c3\u03b9\u03bf \u03c1\u03b1\u03b3\u03bf\u03cd", - "iot_special_boiled_rice": "\u0392\u03c1\u03b1\u03c3\u03c4\u03cc \u03c1\u03cd\u03b6\u03b9", - "iot_special_chicken_breast": "\u03a3\u03c4\u03ae\u03b8\u03bf\u03c2 \u03ba\u03bf\u03c4\u03cc\u03c0\u03bf\u03c5\u03bb\u03bf\u03c5", - "iot_special_chicken_legs": "\u039c\u03c0\u03bf\u03cd\u03c4\u03b9\u03b1 \u03ba\u03bf\u03c4\u03cc\u03c0\u03bf\u03c5\u03bb\u03bf\u03c5", - "iot_special_chocolate_pudding": "\u03a0\u03bf\u03c5\u03c4\u03af\u03b3\u03ba\u03b1 \u03c3\u03bf\u03ba\u03bf\u03bb\u03ac\u03c4\u03b1\u03c2", - "iot_special_entrecote": "\u0395\u03bd\u03c4\u03c1\u03b5\u03ba\u03cc\u03c4", - "iot_special_fresh_tuna": "\u039d\u03c9\u03c0\u03cc\u03c2 \u03c4\u03cc\u03bd\u03bf\u03c2", - "iot_special_grilled_vegetables": "\u03a8\u03b7\u03c4\u03ac \u03bb\u03b1\u03c7\u03b1\u03bd\u03b9\u03ba\u03ac", - "iot_special_lamb_cutlet": "\u039a\u03bf\u03c4\u03bf\u03bb\u03ad\u03c4\u03b5\u03c2 \u03b1\u03c1\u03bd\u03b9\u03bf\u03cd", - "iot_special_meatballs": "\u039a\u03b5\u03c6\u03c4\u03ad\u03b4\u03b5\u03c2 \u03b1\u03c0\u03cc \u03ba\u03c1\u03ad\u03b1\u03c2", - "iot_special_minestrone": "\u039c\u03b9\u03bd\u03b5\u03c3\u03c4\u03c1\u03cc\u03bd\u03b7", - "iot_special_mussels": "\u039c\u03cd\u03b4\u03b9\u03b1", - "iot_special_omelette": "\u039f\u03bc\u03b5\u03bb\u03ad\u03c4\u03b1", - "iot_special_pancakes": "\u03a4\u03b7\u03b3\u03b1\u03bd\u03af\u03c4\u03b1", - "iot_special_paris_style_peas": "\u039c\u03c0\u03b9\u03b6\u03ad\u03bb\u03b9\u03b1 \u03c4\u03bf\u03c5 \u03a0\u03b1\u03c1\u03b9\u03c3\u03b9\u03bf\u03cd", - "iot_special_poached_eggs": "\u0391\u03c5\u03b3\u03ac \u03c0\u03bf\u03c3\u03ad", - "iot_special_pork_fillet": "\u03a6\u03b9\u03bb\u03ad\u03c4\u03bf \u03a7\u03bf\u03b9\u03c1\u03b9\u03bd\u03bf\u03cd", - "iot_special_pork_ribs": "\u03a7\u03bf\u03b9\u03c1\u03b9\u03bd\u03ac \u03c0\u03b1\u03ca\u03b4\u03ac\u03ba\u03b9\u03b1", - "iot_special_prawns": "\u0393\u03b1\u03c1\u03af\u03b4\u03b5\u03c2", - "iot_special_quinoa": "\u039a\u03b9\u03bd\u03cc\u03b1", + "iot_special_ash_brown": "Καφέ φλαμουριά", + "iot_special_beef_fillet": "Φιλέτο βοδινού", + "iot_special_beef_veal_stew": "Βοδινό και μοσχαρίσιο ραγού", + "iot_special_boiled_rice": "Βραστό ρύζι", + "iot_special_chicken_breast": "Στήθος κοτόπουλου", + "iot_special_chicken_legs": "Μπούτια κοτόπουλου", + "iot_special_chocolate_pudding": "Πουτίγκα σοκολάτας", + "iot_special_entrecote": "Εντρεκότ", + "iot_special_fresh_tuna": "Νωπός τόνος", + "iot_special_grilled_vegetables": "Ψητά λαχανικά", + "iot_special_lamb_cutlet": "Κοτολέτες αρνιού", + "iot_special_meatballs": "Κεφτέδες από κρέας", + "iot_special_minestrone": "Μινεστρόνη", + "iot_special_mussels": "Μύδια", + "iot_special_omelette": "Ομελέτα", + "iot_special_pancakes": "Τηγανίτα", + "iot_special_paris_style_peas": "Μπιζέλια του Παρισιού", + "iot_special_poached_eggs": "Αυγά ποσέ", + "iot_special_pork_fillet": "Φιλέτο Χοιρινού", + "iot_special_pork_ribs": "Χοιρινά παϊδάκια", + "iot_special_prawns": "Γαρίδες", + "iot_special_quinoa": "Κινόα", "iot_special_ratatouille": "Ratatouille", - "iot_special_salmon_fillet": "\u03a3\u03bf\u03bb\u03c9\u03bc\u03cc\u03c2 \u03c6\u03b9\u03bb\u03ad\u03c4\u03bf", - "iot_special_saute_potatoes": "\u03a0\u03b1\u03c4\u03ac\u03c4\u03b5\u03c2 \u03c3\u03c9\u03c4\u03ad", - "iot_special_scallops": "\u03a7\u03c4\u03ad\u03bd\u03b9\u03b1", - "iot_special_scrambled_eggs": "\u0391\u03c5\u03b3\u03ac \u03bf\u03bc\u03b5\u03bb\u03ad\u03c4\u03b1", - "iot_special_spelt": "\u038c\u03bb\u03c5\u03c1\u03b1", - "iot_special_veggy_noodles": "\u039b\u03b1\u03c7\u03b1\u03bd\u03b9\u03ba\u03ac \u03bd\u03bf\u03c5\u03bd\u03c4\u03bb\u03c2", - "iot_special_white_fish_fillet": "\u03a6\u03b9\u03bb\u03ad\u03c4\u03bf \u03bb\u03b5\u03c5\u03ba\u03cc\u03c8\u03b1\u03c1\u03bf\u03c5", - "iot_standard_boiling": "\u0392\u03c1\u03b1\u03c3\u03bc\u03cc\u03c2", - "iot_standard_frying": "\u03a4\u03b7\u03b3\u03ac\u03bd\u03b9\u03c3\u03bc\u03b1", - "iot_standard_keep_warm": "\u03a3\u03c5\u03bd\u03c4\u03ae\u03c1\u03b7\u03c3\u03b7", - "iot_standard_melting": "\u039b\u03b9\u03ce\u03c3\u03b9\u03bc\u03bf", - "iot_standard_simmering": "\u03a3\u03b9\u03b3\u03bf\u03b2\u03c1\u03ac\u03c3\u03b9\u03bc\u03bf" + "iot_special_salmon_fillet": "Σολωμός φιλέτο", + "iot_special_saute_potatoes": "Πατάτες σωτέ", + "iot_special_scallops": "Χτένια", + "iot_special_scrambled_eggs": "Αυγά ομελέτα", + "iot_special_spelt": "Όλυρα", + "iot_special_veggy_noodles": "Λαχανικά νουντλς", + "iot_special_white_fish_fillet": "Φιλέτο λευκόψαρου", + "iot_standard_boiling": "Βρασμός", + "iot_standard_frying": "Τηγάνισμα", + "iot_standard_keep_warm": "Συντήρηση", + "iot_standard_melting": "Λιώσιμο", + "iot_standard_simmering": "Σιγοβράσιμο" }, - "name": "\u03a0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1" + "name": "Πρόγραμμα" }, "programs_ov": { "state": { - "bakery": "\u0396\u03c5\u03bc\u03b1\u03c1\u03b9\u03ba\u03ac \u03ba\u03b1\u03b9 \u03b1\u03c1\u03c4\u03bf\u03c0\u03bf\u03b9\u03ae\u03bc\u03b1\u03c4\u03b1", - "bakery_steam": "\u03a8\u03c9\u03bc\u03af \u03b1\u03c4\u03bc\u03bf\u03cd", - "bottom_heating": "\u039a\u03ac\u03c4\u03c9 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf", - "bottom_heating_fan": "\u039a\u03ac\u03c4\u03c9 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf + \u03b1\u03bd\u03b5\u03bc\u03b9\u03c3\u03c4\u03ae\u03c1\u03b1\u03c2", - "bread": "\u03a8\u03c9\u03bc\u03af", - "bread_steam": "\u0391\u03c1\u03c4\u03bf\u03c3\u03ba\u03b5\u03c5\u03ac\u03c3\u03bc\u03b1\u03c4\u03b1 \u03b1\u03c4\u03bc\u03bf\u03cd", - "convection_fan": "\u0398\u03b5\u03c1\u03bc\u03bf\u03c3 \u03b1\u03b5\u03c1\u03b1\u03c3", - "convection_fan_turnspit": "\u0398\u03b5\u03c1\u03bc\u03cc\u03c2 \u03b1\u03ad\u03c1\u03b1\u03c2 + \u0391\u03bd\u03b5\u03bc\u03b9\u03c3\u03c4\u03ae\u03c1\u03b1\u03c2 + \u03a3\u03bf\u03cd\u03b2\u03bb\u03b1", - "conventional": "\u0391\u03bd\u03c9 - \u03ba\u03b1\u03c4\u03c9 \u03b8\u03b5\u03c1\u03bc\u03b1\u03bd\u03c3\u03b7", - "conventional_turnspit": "\u0398\u03b5\u03c1\u03bc\u03cc\u03c2 \u03b1\u03ad\u03c1\u03b1\u03c2 + \u03a3\u03bf\u03cd\u03b2\u03bb\u03b1", - "defrost": "\u0391\u03c0\u03cc\u03c8\u03c5\u03be\u03b7", - "descaling": "\u0391\u03c6\u03b1\u03bb\u03ac\u03c4\u03c9\u03c3\u03b7", - "fish": "\u03a8\u03ac\u03c1\u03b9\u03b1", - "fish_steam": "\u03a8\u03ac\u03c1\u03b9 \u03c3\u03c4\u03bf\u03bd \u03b1\u03c4\u03bc\u03cc", - "grill_cata": "\u0393\u03ba\u03c1\u03b9\u03bb", - "grill_fan_cata": "\u0391\u03bd\u03b5\u03bc\u03b9\u03c3\u03c4\u03ae\u03c1\u03b1\u03c2 \u03b3\u03ba\u03c1\u03b9\u03bb", - "grill_fan_pyro": "\u0393\u03ba\u03c1\u03b9\u03bb + \u03b1\u03bd\u03b5\u03bc\u03b9\u03c3\u03c4\u03ae\u03c1\u03b1\u03c2", - "grill_pyro": "\u0393\u03ba\u03c1\u03b9\u03bb", + "bakery": "Ζυμαρικά και αρτοποιήματα", + "bakery_steam": "Ψωμί ατμού", + "bottom_heating": "Κάτω στοιχείο", + "bottom_heating_fan": "Κάτω στοιχείο + ανεμιστήρας", + "bread": "Ψωμί", + "bread_steam": "Αρτοσκευάσματα ατμού", + "convection_fan": "Θερμοσ αερασ", + "convection_fan_turnspit": "Θερμός αέρας + Ανεμιστήρας + Σούβλα", + "conventional": "Ανω - κατω θερμανση", + "conventional_turnspit": "Θερμός αέρας + Σούβλα", + "defrost": "Απόψυξη", + "descaling": "Αφαλάτωση", + "fish": "Ψάρια", + "fish_steam": "Ψάρι στον ατμό", + "grill_cata": "Γκριλ", + "grill_fan_cata": "Ανεμιστήρας γκριλ", + "grill_fan_pyro": "Γκριλ + ανεμιστήρας", + "grill_pyro": "Γκριλ", "h20_clean": "H2O-Clean", - "iot_bread": "\u03a8\u03c9\u03bc\u03af", + "iot_bread": "Ψωμί", "iot_h20_clean": "h2O clean", - "leavening": "\u0396\u03c5\u03bc\u03c9\u03c3\u03b7", - "low_temp_cooking": "\u039c\u03b1\u03b3\u03b5\u03af\u03c1\u03b5\u03bc\u03b1 \u03c3\u03b5 \u03c7\u03b1\u03bc\u03b7\u03bb\u03ae \u03b8\u03b5\u03c1\u03bc\u03bf\u03ba\u03c1\u03b1\u03c3\u03af\u03b1", - "low_temp_cooking_fish": "\u039c\u03b1\u03b3\u03b5\u03af\u03c1\u03b5\u03bc\u03b1 \u03c3\u03b5 \u03c7\u03b1\u03bc\u03b7\u03bb\u03ae \u03b8\u03b5\u03c1\u03bc\u03bf\u03ba\u03c1\u03b1\u03c3\u03af\u03b1 - \u03a8\u03ac\u03c1\u03b9", - "low_temp_cooking_fish_steam": "\u039c\u03b1\u03b3\u03b5\u03af\u03c1\u03b5\u03bc\u03b1 \u03bc\u03b5 \u03b1\u03c4\u03bc\u03cc \u03c3\u03b5 \u03c7\u03b1\u03bc\u03b7\u03bb\u03ae \u03b8\u03b5\u03c1\u03bc\u03bf\u03ba\u03c1\u03b1\u03c3\u03af\u03b1 - \u03a8\u03ac\u03c1\u03b9", - "low_temp_cooking_meat": "\u039c\u03b1\u03b3\u03b5\u03af\u03c1\u03b5\u03bc\u03b1 \u03c3\u03b5 \u03c7\u03b1\u03bc\u03b7\u03bb\u03ae \u03b8\u03b5\u03c1\u03bc\u03bf\u03ba\u03c1\u03b1\u03c3\u03af\u03b1 - \u039a\u03c1\u03ad\u03b1\u03c2", - "low_temp_cooking_meat_steam": "\u039c\u03b1\u03b3\u03b5\u03af\u03c1\u03b5\u03bc\u03b1 \u03bc\u03b5 \u03b1\u03c4\u03bc\u03cc \u03c3\u03b5 \u03c7\u03b1\u03bc\u03b7\u03bb\u03ae \u03b8\u03b5\u03c1\u03bc\u03bf\u03ba\u03c1\u03b1\u03c3\u03af\u03b1 - \u039a\u03c1\u03ad\u03b1\u03c2", - "low_temp_cooking_steam": "\u039c\u03b1\u03b3\u03b5\u03af\u03c1\u03b5\u03bc\u03b1 \u03bc\u03b5 \u03b1\u03c4\u03bc\u03cc \u03c3\u03b5 \u03c7\u03b1\u03bc\u03b7\u03bb\u03ae \u03b8\u03b5\u03c1\u03bc\u03bf\u03ba\u03c1\u03b1\u03c3\u03af\u03b1", - "meat": "\u039a\u03c1\u03ad\u03b1\u03c2", - "meat_steam": "\u039a\u03c1\u03ad\u03b1\u03c2 \u03c3\u03c4\u03bf\u03bd \u03b1\u03c4\u03bc\u03cc", - "multi_level": "\u03a0\u03bf\u03bb\u03bb\u03b1\u03c0\u03bb\u03c9\u03bd \u0395\u03c0\u03b9\u03c0\u03b5\u03b4\u03c9\u03bd", + "leavening": "Ζυμωση", + "low_temp_cooking": "Μαγείρεμα σε χαμηλή θερμοκρασία", + "low_temp_cooking_fish": "Μαγείρεμα σε χαμηλή θερμοκρασία - Ψάρι", + "low_temp_cooking_fish_steam": "Μαγείρεμα με ατμό σε χαμηλή θερμοκρασία - Ψάρι", + "low_temp_cooking_meat": "Μαγείρεμα σε χαμηλή θερμοκρασία - Κρέας", + "low_temp_cooking_meat_steam": "Μαγείρεμα με ατμό σε χαμηλή θερμοκρασία - Κρέας", + "low_temp_cooking_steam": "Μαγείρεμα με ατμό σε χαμηλή θερμοκρασία", + "meat": "Κρέας", + "meat_steam": "Κρέας στον ατμό", + "multi_level": "Πολλαπλων Επιπεδων", "paella": "Paella", - "pasta_and_bakery": "\u0396\u03c5\u03bc\u03b1\u03c1\u03b9\u03ba\u03ac \u03ba\u03b1\u03b9 \u03b1\u03c1\u03c4\u03bf\u03c0\u03bf\u03b9\u03ae\u03bc\u03b1\u03c4\u03b1", + "pasta_and_bakery": "Ζυμαρικά και αρτοποιήματα", "pizza": "Pizza", - "pyrolysis": "\u03a0\u03c5\u03c1\u03cc\u03bb\u03c5\u03c3\u03b7", - "pyrolysis_plus": "\u03a0\u03c5\u03c1\u03cc\u03bb\u03c5\u03c3\u03b7 +", - "red_meat": "\u039a\u03cc\u03ba\u03ba\u03b9\u03bd\u03bf \u03ba\u03c1\u03ad\u03b1\u03c2", - "red_meat_steam": "\u039a\u03cc\u03ba\u03ba\u03b9\u03bd\u03bf \u03ba\u03c1\u03ad\u03b1\u03c2 \u03c3\u03c4\u03bf\u03bd \u03b1\u03c4\u03bc\u03cc", - "regenerate": "\u0391\u03bd\u03b1\u03b6\u03c9\u03bf\u03b3\u03cc\u03bd\u03b7\u03c3\u03b7", - "soft_plus": "\u039c\u03b1\u03bb\u03b1\u03ba\u03cc +", - "super_grill": "\u03a3\u03bf\u03cd\u03c0\u03b5\u03c1 \u03b3\u03ba\u03c1\u03b9\u03bb", + "pyrolysis": "Πυρόλυση", + "pyrolysis_plus": "Πυρόλυση +", + "red_meat": "Κόκκινο κρέας", + "red_meat_steam": "Κόκκινο κρέας στον ατμό", + "regenerate": "Αναζωογόνηση", + "soft_plus": "Μαλακό +", + "super_grill": "Σούπερ γκριλ", "tailor_bake": "Tailor bake", "tailor_bake_cata": "Tailor Bake", - "tailor_bake_desctiption": "\u0391\u03c5\u03c4\u03ae \u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b9\u03b4\u03b1\u03bd\u03b9\u03ba\u03ae \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b4\u03b9\u03b1\u03c4\u03b7\u03c1\u03b5\u03af \u03c4\u03bf \u03c6\u03b1\u03b3\u03b7\u03c4\u03cc \u03b1\u03c0\u03b1\u03bb\u03cc \u03bc\u03ad\u03c3\u03b1 \u03ba\u03b1\u03b9 \u03c4\u03c1\u03b1\u03b3\u03b1\u03bd\u03cc \u03ad\u03be\u03c9.\r\r\r\r\r\n\u0391\u03c5\u03c4\u03ae \u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03bc\u03b5\u03b9\u03ce\u03bd\u03b5\u03b9 \u03c4\u03b7\u03bd \u03c0\u03bf\u03c3\u03cc\u03c4\u03b7\u03c4\u03b1 \u03bb\u03af\u03c0\u03bf\u03c5\u03c2 \u03ae \u03b5\u03bb\u03b1\u03af\u03bf\u03c5 \u03c0\u03bf\u03c5 \u03b1\u03c0\u03b1\u03b9\u03c4\u03b5\u03af\u03c4\u03b1\u03b9, \u03b3\u03b9\u03b1 \u03bc\u03b9\u03b1 \u03c5\u03b3\u03b9\u03b5\u03b9\u03bd\u03ae \u03b4\u03b9\u03b1\u03c4\u03c1\u03bf\u03c6\u03ae.\r\r\r\r\r\n\u039f \u03c3\u03c5\u03bd\u03b4\u03c5\u03b1\u03c3\u03bc\u03cc\u03c2 \u03b8\u03b5\u03c1\u03bc\u03b1\u03bd\u03c4\u03b9\u03ba\u03ce\u03bd \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03c9\u03bd \u03bc\u03b5 \u03c0\u03b1\u03bb\u03bb\u03cc\u03bc\u03b5\u03bd\u03bf \u03ba\u03cd\u03ba\u03bb\u03bf \u03b1\u03ad\u03c1\u03b1\r\r\r\r\r\n\u03b5\u03be\u03b1\u03c3\u03c6\u03b1\u03bb\u03af\u03b6\u03b5\u03b9 \u03bf\u03bc\u03bf\u03b9\u03cc\u03bc\u03bf\u03c1\u03c6\u03b1 \u03b1\u03c0\u03bf\u03c4\u03b5\u03bb\u03ad\u03c3\u03bc\u03b1\u03c4\u03b1 \u03c8\u03b7\u03c3\u03af\u03bc\u03b1\u03c4\u03bf\u03c2.", "tailor_bake_pyro": "Tailor Bake", - "vegetables": "\u039b\u03b1\u03c7\u03b1\u03bd\u03b9\u03ba\u03ac", - "vegetables_cata": "\u039b\u03b1\u03c7\u03b1\u03bd\u03b9\u03ba\u03ac", - "vegetables_pyro": "\u039b\u03b1\u03c7\u03b1\u03bd\u03b9\u03ba\u03ac", - "water_discharge": "\u0391\u03c0\u03bf\u03c3\u03c4\u03c1\u03ac\u03b3\u03b3\u03b9\u03c3\u03b7 \u03bd\u03b5\u03c1\u03bf\u03cd", - "white_meat": "\u039b\u03b5\u03c5\u03ba\u03cc \u03ba\u03c1\u03ad\u03b1\u03c2", - "white_meat_steam": "\u039b\u03b5\u03c5\u03ba\u03cc \u03ba\u03c1\u03ad\u03b1\u03c2 \u03c3\u03c4\u03bf\u03bd \u03b1\u03c4\u03bc\u03cc" + "vegetables": "Λαχανικά", + "vegetables_cata": "Λαχανικά", + "vegetables_pyro": "Λαχανικά", + "water_discharge": "Αποστράγγιση νερού", + "white_meat": "Λευκό κρέας", + "white_meat_steam": "Λευκό κρέας στον ατμό" }, - "name": "\u03a0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1" + "name": "Πρόγραμμα" }, "programs_td": { "state": { - "active_dry": "\u0395\u03bd\u03b5\u03c1\u03b3\u03cc \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", - "allergy_care": "\u0391\u03bd\u03c4\u03b9\u03b1\u03bb\u03bb\u03b5\u03c1\u03b3\u03b9\u03ba\u03bf", - "all_in_one": "\u039f\u03bb\u03b1 \u03c3\u03b5 \u03b5\u03bd\u03b1", - "antiallergy": "\u0391\u03bd\u03c4\u03b9\u03b1\u03bb\u03bb\u03b5\u03c1\u03b3\u03b9\u03ba\u03bf", - "anti_odours": "\u0395\u03bd\u03b1\u03bd\u03c4\u03b9\u03b1 \u03c3\u03c4\u03b9ws", - "auto_care": "\u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03c6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1", - "baby": "\u039c\u03c9\u03c1\u03bf\u03c5\u03b4\u03b9\u03b1\u03ba\u03ac", - "bed_quilt": "\u039a\u03b1\u03bb\u03c5\u03bc\u03bc\u03b1\u03c4\u03b1 \u03ba\u03c1\u03b5\u03b2\u03b1\u03c4\u03b9\u03bf\u03c5", - "care_30": "\u03a6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1 30", - "care_45": "\u03a6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1 45", - "care_59": "\u03a6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1 59", - "coloured": "\u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03b1", - "daily_45_min": "\u039a\u0391\u0398\u0397\u039c\u0395\u03a1\u0399\u039d\u039f 45'", - "daily_perfect_59_min": "\u039a\u0391\u0398\u0397\u039c\u0395\u03a1\u0399\u039d\u039f \u0399\u0394\u0391\u039d\u0399\u039a\u039f 59'", - "darks_and_coloured": "\u039c\u03b1\u03c5\u03c1\u03b1 & \u03a7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03b1", - "delicates": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1", - "duvet": "\u03a0\u03b1\u03c0\u03bb\u03ce\u03bc\u03b1\u03c4\u03b1", - "eco": "\u0392\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03ac \u03bf\u03b9\u03ba\u03bf\u03bb\u03bf\u03b3\u03b9\u03ba\u03ac", - "ecospeed_cottons": "Ecospeed \u03b2\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03b1", - "ecospeed_delicates": "Ecospeed \u03b5\u03c5\u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03b1", - "ecospeed_mixed": "Ecospeed \u03b1\u03bd\u03b1\u03bc\u03b5\u03b9\u03ba\u03c4\u03b1", - "extra_hygiene": "\u0395\u03a0\u0399\u03a0\u039b\u0395\u039f\u039d \u03a5\u0393\u0399\u0395\u0399\u039d\u0397", - "fitness": "\u039a\u03b1\u03c4\u03b1\u03bb\u03bb\u03b7\u03bb\u03cc\u03c4\u03b7\u03c4\u03b1", - "fresh_care": "\u03a6\u03c1\u03ad\u03c3\u03ba\u03b9\u03b1 \u03c6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1", + "active_dry": "Ενεργό στέγνωμα", + "allergy_care": "Αντιαλλεργικο", + "all_in_one": "Ολα σε ενα", + "antiallergy": "Αντιαλλεργικο", + "anti_odours": "Εναντια στιws", + "auto_care": "Αυτόματη φροντίδα", + "baby": "Μωρουδιακά", + "bed_quilt": "Καλυμματα κρεβατιου", + "care_30": "Φροντίδα 30", + "care_45": "Φροντίδα 45", + "care_59": "Φροντίδα 59", + "coloured": "χρωματιστα", + "daily_45_min": "ΚΑΘΗΜΕΡΙΝΟ 45'", + "daily_perfect_59_min": "ΚΑΘΗΜΕΡΙΝΟ ΙΔΑΝΙΚΟ 59'", + "darks_and_coloured": "Μαυρα & Χρωματιστα", + "delicates": "Ευαίσθητα", + "duvet": "Παπλώματα", + "eco": "Βαμβακερά οικολογικά", + "ecospeed_cottons": "Ecospeed βαμβακερα", + "ecospeed_delicates": "Ecospeed ευαισθητα", + "ecospeed_mixed": "Ecospeed αναμεικτα", + "extra_hygiene": "ΕΠΙΠΛΕΟΝ ΥΓΙΕΙΝΗ", + "fitness": "Καταλληλότητα", + "fresh_care": "Φρέσκια φροντίδα", "genius": "Genius", "hqd_baby_care": "Baby Care", - "hqd_bath_towel": "\u03a0\u03b5\u03c4\u03c3\u03ad\u03c4\u03b5\u03c2", - "hqd_bed_sheets": "\u03a3\u03b5\u03bd\u03c4\u03cc\u03bd\u03b9\u03b1 \u03ba\u03c1\u03b5\u03b2\u03b1\u03c4\u03b9\u03bf\u03cd", - "hqd_bulky": "\u039f\u03b3\u03ba\u03ce\u03b4\u03b7 \u03b1\u03bd\u03c4\u03b9\u03ba\u03b5\u03af\u03bc\u03b5\u03bd\u03b1", - "hqd_casual": "\u039a\u03b1\u03b8\u03b7\u03bc\u03b5\u03c1\u03b9\u03bd\u03ac \u03c1\u03bf\u03cd\u03c7\u03b1", - "hqd_cold_wind_30": "\u0394\u03c1\u03bf\u03c3\u03b5\u03c1\u03cc \u03b1\u03b5\u03c1\u03ac\u03ba\u03b9 30 \u03bb\u03b5\u03c0\u03c4\u03ac", - "hqd_cold_wind_timing": "\u0394\u03c1\u03bf\u03c3\u03b5\u03c1\u03cc \u03b1\u03b5\u03c1\u03ac\u03ba\u03b9 ", - "hqd_cotton": "\u0392\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03cc", - "hqd_curtain": "\u039a\u03bf\u03c5\u03c1\u03c4\u03af\u03bd\u03b5\u03c2", - "hqd_delicate": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1", - "hqd_diaper": "\u03a0\u03ac\u03bd\u03b5\u03c2", - "hqd_duvet": "\u03a0\u03ac\u03c0\u03bb\u03c9\u03bc\u03b1", - "hqd_feather": "\u03a6\u03bf\u03c5\u03c3\u03ba\u03c9\u03c4\u03ac \u03bc\u03c0\u03bf\u03c5\u03c6\u03ac\u03bd", - "hqd_hot_wind_timing": "\u0396\u03b5\u03c3\u03c4\u03cc\u03c2 \u03b1\u03ad\u03c1\u03b1\u03c2", - "hqd_hygienic": "\u03a5\u03b3\u03b9\u03b5\u03b9\u03bd\u03ae", + "hqd_bath_towel": "Πετσέτες", + "hqd_bed_sheets": "Σεντόνια κρεβατιού", + "hqd_bulky": "Ογκώδη αντικείμενα", + "hqd_casual": "Καθημερινά ρούχα", + "hqd_cold_wind_30": "Δροσερό αεράκι 30 λεπτά", + "hqd_cold_wind_timing": "Δροσερό αεράκι ", + "hqd_cotton": "Βαμβακερό", + "hqd_curtain": "Κουρτίνες", + "hqd_delicate": "Ευαίσθητα", + "hqd_diaper": "Πάνες", + "hqd_duvet": "Πάπλωμα", + "hqd_feather": "Φουσκωτά μπουφάν", + "hqd_hot_wind_timing": "Ζεστός αέρας", + "hqd_hygienic": "Υγιεινή", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", - "hqd_jacket": "\u0396\u03b1\u03ba\u03ad\u03c4\u03b5\u03c2", - "hqd_jeans": "\u03a4\u03b6\u03b9\u03bd \u03c0\u03b1\u03bd\u03c4\u03b5\u03bb\u03bf\u03bd\u03b9\u03b1", + "hqd_jacket": "Ζακέτες", + "hqd_jeans": "Τζιν παντελονια", "hqd_luxury": "Luxury", - "hqd_mix": "\u039c\u03b9\u03ba\u03c4\u03ac", - "hqd_night_dry": "\u039f\u03bb\u03bf\u03bd\u03cd\u03ba\u03c4\u03b9\u03bf \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", + "hqd_mix": "Μικτά", + "hqd_night_dry": "Ολονύκτιο στέγνωμα", "hqd_outdoor": "Outdoor", "hqd_precious_cure": "Precious cure", - "hqd_quick_20": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03b1 20", - "hqd_quick_30": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03b1 30", - "hqd_quick_dry": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", - "hqd_quilt": "\u03a0\u03b1\u03c0\u03bb\u03ce\u03bc\u03b1\u03c4\u03b1", - "hqd_refresh": "\u03a6\u03c1\u03b5\u03c3\u03ba\u03ac\u03c1\u03b9\u03c3\u03bc\u03b1", - "hqd_school_uniform": "\u03a3\u03c7\u03bf\u03bb\u03b9\u03ba\u03ae \u03c3\u03c4\u03bf\u03bb\u03ae", - "hqd_shirt": "\u03a0\u03bf\u03c5\u03ba\u03ac\u03bc\u03b9\u03c3\u03b1", - "hqd_shoes": "\u03a0\u03b1\u03c0\u03bf\u03cd\u03c4\u03c3\u03b9\u03b1", - "hqd_silk": "\u039c\u03b5\u03c4\u03b1\u03be\u03c9\u03c4\u03ac", - "hqd_sports": "\u0391\u03b8\u03bb\u03b7\u03c4\u03b9\u03ba\u03ac", - "hqd_synthetics": "\u03a3\u03c5\u03bd\u03b8\u03b5\u03c4\u03b9\u03ba\u03ac", - "hqd_timer": "\u03a7\u03c1\u03bf\u03bd\u03bf\u03bc\u03b5\u03c4\u03c1\u03b7\u03bc\u03ad\u03bd\u03bf", - "hqd_towel": "\u03a0\u03b5\u03c4\u03c3\u03ad\u03c4\u03b5\u03c2", - "hqd_underwear": "\u0395\u03c3\u03ce\u03c1\u03bf\u03c5\u03c7\u03b1", - "hqd_warm_up": "\u0396\u03ad\u03c3\u03c4\u03b1\u03bc\u03b1", - "hqd_wool": "\u039c\u03ac\u03bb\u03bb\u03b9\u03bd\u03b1", - "hqd_working_suit": "\u0395\u03bd\u03b4\u03cd\u03bc\u03b1\u03c4\u03b1 \u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1\u03c2", - "hygiene": "\u03a5\u03b3\u03b9\u03b5\u03b9\u03bd\u03ae", - "iot_checkup": "\u0388\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2", - "iot_dry_anti_mites": "\u0395\u03bd\u03ac\u03bd\u03c4\u03b9\u03b1 \u03c3\u03c4\u03b1 \u03b1\u03ba\u03ac\u03c1\u03b5\u03b1", - "iot_dry_baby": "\u039c\u03c9\u03c1\u03bf\u03c5\u03b4\u03b9\u03b1\u03ba\u03ac", - "iot_dry_backpacks": "\u03a3\u03b1\u03ba\u03af\u03b4\u03b9\u03b1 \u03c0\u03bb\u03ac\u03c4\u03b7\u03c2", - "iot_dry_bathrobe": "\u039c\u03c0\u03bf\u03c5\u03c1\u03bd\u03bf\u03cd\u03b6\u03b9", - "iot_dry_bed_linen": "\u039a\u03bb\u03b9\u03bd\u03bf\u03c3\u03ba\u03b5\u03c0\u03ac\u03c3\u03bc\u03b1\u03c4\u03b1", - "iot_dry_bed_quilt": "\u039a\u03b1\u03bb\u03c5\u03bc\u03bc\u03b1\u03c4\u03b1 \u03ba\u03c1\u03b5\u03b2\u03b1\u03c4\u03b9\u03bf\u03c5", - "iot_dry_cotton": "\u0392\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03cc", - "iot_dry_cuddly_toys": "\u039b\u03bf\u03cd\u03c4\u03c1\u03b9\u03bd\u03b1 \u0391\u03c1\u03ba\u03bf\u03c5\u03b4\u03ac\u03ba\u03b9\u03b1", - "iot_dry_curtains": "\u039a\u03bf\u03c5\u03c1\u03c4\u03af\u03bd\u03b5\u03c2", - "iot_dry_dehumidifier": "\u0391\u03c6\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 \u03c5\u03b3\u03c1\u03b1\u03c3\u03af\u03b1\u03c2", - "iot_dry_delicates": "\u0395\u03c5\u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03b1", - "iot_dry_delicate_tablecloths": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1 \u03c4\u03c1\u03b1\u03c0\u03b5\u03b6\u03bf\u03bc\u03ac\u03bd\u03c4\u03b7\u03bb\u03b1", - "iot_dry_denim_jeans": "\u039d\u03c4\u03ad\u03bd\u03b9\u03bc - \u03c4\u03b6\u03b9\u03bd", + "hqd_quick_20": "Γρήγορα 20", + "hqd_quick_30": "Γρήγορα 30", + "hqd_quick_dry": "Γρήγορο στέγνωμα", + "hqd_quilt": "Παπλώματα", + "hqd_refresh": "Φρεσκάρισμα", + "hqd_school_uniform": "Σχολική στολή", + "hqd_shirt": "Πουκάμισα", + "hqd_shoes": "Παπούτσια", + "hqd_silk": "Μεταξωτά", + "hqd_sports": "Αθλητικά", + "hqd_synthetics": "Συνθετικά", + "hqd_timer": "Χρονομετρημένο", + "hqd_towel": "Πετσέτες", + "hqd_underwear": "Εσώρουχα", + "hqd_warm_up": "Ζέσταμα", + "hqd_wool": "Μάλλινα", + "hqd_working_suit": "Ενδύματα εργασίας", + "hygiene": "Υγιεινή", + "iot_checkup": "Έλεγχος", + "iot_dry_anti_mites": "Ενάντια στα ακάρεα", + "iot_dry_baby": "Μωρουδιακά", + "iot_dry_backpacks": "Σακίδια πλάτης", + "iot_dry_bathrobe": "Μπουρνούζι", + "iot_dry_bed_linen": "Κλινοσκεπάσματα", + "iot_dry_bed_quilt": "Καλυμματα κρεβατιου", + "iot_dry_cotton": "Βαμβακερό", + "iot_dry_cuddly_toys": "Λούτρινα Αρκουδάκια", + "iot_dry_curtains": "Κουρτίνες", + "iot_dry_dehumidifier": "Αφαίρεση υγρασίας", + "iot_dry_delicates": "Ευαισθητα", + "iot_dry_delicate_tablecloths": "Ευαίσθητα τραπεζομάντηλα", + "iot_dry_denim_jeans": "Ντένιμ - τζιν", "iot_dry_down_jacket": "Jacket", - "iot_dry_duvet": "\u03a0\u03b1\u03c0\u03bb\u03ce\u03bc\u03b1\u03c4\u03b1", + "iot_dry_duvet": "Παπλώματα", "iot_dry_easy_iron_cotton": "Super Easy Iron", - "iot_dry_easy_iron_synthetics": "\u0395\u03be\u03b1\u03b9\u03c1\u03b5\u03c4\u03b9\u03ba\u03ac \u03b5\u03cd\u03ba\u03bf\u03bb\u03bf \u03c3\u03b9\u03b4\u03ad\u03c1\u03c9\u03bc\u03b1 - \u03a3\u03c5\u03bd\u03b8\u03b5\u03c4\u03b9\u03ba\u03ac", - "iot_dry_gym_fit": "\u0393\u03c5\u03bc\u03bd\u03b1\u03c3\u03c4\u03ae\u03c1\u03b9\u03bf", - "iot_dry_lingerie": "\u0395\u03c3\u03ce\u03c1\u03bf\u03c5\u03c7\u03b1", - "iot_dry_mixed": "\u039c\u03b9\u03ba\u03c4\u03ac", - "iot_dry_playsuits": "\u03a3\u03c4\u03bf\u03bb\u03ad\u03c2", + "iot_dry_easy_iron_synthetics": "Εξαιρετικά εύκολο σιδέρωμα - Συνθετικά", + "iot_dry_gym_fit": "Γυμναστήριο", + "iot_dry_lingerie": "Εσώρουχα", + "iot_dry_mixed": "Μικτά", + "iot_dry_playsuits": "Στολές", "iot_dry_rapid_30": "Rapid 30", - "iot_dry_rapid_59": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf 59'.", + "iot_dry_rapid_59": "Γρήγορο 59'.", "iot_dry_refresh": "Refresh", - "iot_dry_regenerates_waterproof": "\u0391\u03bd\u03b1\u03bd\u03ad\u03c9\u03c3\u03b7 \u03b1\u03b4\u03b9\u03ac\u03b2\u03c1\u03bf\u03c7\u03c9\u03bd", - "iot_dry_relax_creases": "\u03a7\u0391\u039b\u0391\u03a1\u03a9\u03a3\u0397", - "iot_dry_shirts": "\u03a0\u03bf\u03c5\u03ba\u03ac\u03bc\u03b9\u03c3\u03b1", - "iot_dry_small_load": "\u039c\u0399\u039a\u03a1\u039f \u03a6\u039f\u03a1\u03a4\u0399\u039f", - "iot_dry_swimsuits_and_bikinis": "\u039c\u03b1\u03b3\u03b9\u03cc", - "iot_dry_synthetics": "\u03a3\u03c5\u03bd\u03b8\u03b5\u03c4\u03b9\u03ba\u03b1", - "iot_dry_synthetic_dry": "\u03a3\u03c5\u03bd\u03b8\u03b5\u03c4\u03b9\u03ba\u03ac \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", - "iot_dry_tablecloths": "\u03a4\u03c1\u03b1\u03c0\u03b5\u03b6\u03bf\u03bc\u03ac\u03bd\u03c4\u03b7\u03bb\u03b1", - "iot_dry_technical_fabrics": "\u03a4\u03b5\u03c7\u03bd\u03b9\u03ba\u03ac \u03c5\u03c6\u03ac\u03c3\u03bc\u03b1\u03c4\u03b1", - "iot_dry_warm_embrace": "\u0396\u03b5\u03c3\u03c4\u03ae \u0391\u03b3\u03ba\u03b1\u03bb\u03b9\u03ac", - "iot_dry_wool": "\u039c\u03b1\u03bb\u03bb\u03b9\u03bd\u03b1", - "jeans": "\u03c4\u03b6\u03b9\u03bd", - "mix_and_dry": "\u039c\u03b9\u03ba\u03c4\u03ac & \u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", - "pets": "\u039a\u03b1\u03c4\u03bf\u03b9\u03ba\u03af\u03b4\u03b9\u03b1", - "pre_iron": "\u03a0\u03c1\u03bf-\u03c3\u03b9\u03b4\u03b5\u03c1\u03c9\u03bc\u03b1", + "iot_dry_regenerates_waterproof": "Ανανέωση αδιάβροχων", + "iot_dry_relax_creases": "ΧΑΛΑΡΩΣΗ", + "iot_dry_shirts": "Πουκάμισα", + "iot_dry_small_load": "ΜΙΚΡΟ ΦΟΡΤΙΟ", + "iot_dry_swimsuits_and_bikinis": "Μαγιό", + "iot_dry_synthetics": "Συνθετικα", + "iot_dry_synthetic_dry": "Συνθετικά στέγνωμα", + "iot_dry_tablecloths": "Τραπεζομάντηλα", + "iot_dry_technical_fabrics": "Τεχνικά υφάσματα", + "iot_dry_warm_embrace": "Ζεστή Αγκαλιά", + "iot_dry_wool": "Μαλλινα", + "jeans": "τζιν", + "mix_and_dry": "Μικτά & Στέγνωμα", + "pets": "Κατοικίδια", + "pre_iron": "Προ-σιδερωμα", "rapid_30": "Rapid 30", "rapid_45": "Rapid 45 min", - "rapid_59": "\u03a4\u03ad\u03bb\u03b5\u03b9\u03bf \u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf 59 \u03bb\u03b5\u03c0\u03c4\u03ac", - "refresh": "\u03a6\u03c1\u03b5\u03c3\u03ba\u03ac\u03c1\u03b9\u03c3\u03bc\u03b1", - "relax_creases": "\u03a7\u0391\u039b\u0391\u03a1\u03a9\u03a3\u0397", - "saving_30_min": "\u0395\u039e\u039f\u0399\u039a\u039f\u039d\u039f\u039c\u0397\u03a3\u0397 30'", - "shirts": "\u03a0\u03bf\u03c5\u03ba\u03ac\u03bc\u03b9\u03c3\u03b1", - "shoes": "\u03a0\u03b1\u03c0\u03bf\u03cd\u03c4\u03c3\u03b9\u03b1", - "small_load": "\u039c\u0399\u039a\u03a1\u039f \u03a6\u039f\u03a1\u03a4\u0399\u039f", - "soft_care": "\u0391\u03c0\u03b1\u03bb\u03ae \u03c6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1", - "sport_plus": "\u03a3\u03a0\u039f\u03a1", - "super_easy_iron_misti": "\u0395\u03be\u03b1\u03b9\u03c1\u03b5\u03c4\u03b9\u03ba\u03ac \u03b5\u03cd\u03ba\u03bf\u03bb\u03bf \u03c3\u03b9\u03b4\u03ad\u03c1\u03c9\u03bc\u03b1 \u03b3\u03b9\u03b1 \u03b1\u03bd\u03ac\u03bc\u03b5\u03b9\u03ba\u03c4\u03b1", - "super_easy_iron_xxl": "\u0395\u03be\u03b1\u03b9\u03c1\u03b5\u03c4\u03b9\u03ba\u03ac \u03b5\u03cd\u03ba\u03bf\u03bb\u03bf \u03c3\u03b9\u03b4\u03ad\u03c1\u03c9\u03bc\u03b1 \u03b3\u03b9\u03b1 XXL", - "super_fast_cottons": "\u0395\u03be\u03b1\u03b9\u03c1\u03b5\u03c4\u03b9\u03ba\u03b1 \u0393\u03a1\u0397\u0393\u039f\u03a1\u039f \u03b2\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03b1", - "super_fast_delicates": "\u0395\u03be\u03b1\u03b9\u03c1\u03b5\u03c4\u03b9\u03ba\u03b1 \u0393\u03a1\u0397\u0393\u039f\u03a1\u039f \u03b5\u03c5\u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03b1", - "synthetics": "\u03a3\u03c5\u03bd\u03b8\u03b5\u03c4\u03b9\u03ba\u03b1", - "total_care": "\u039f\u03bb\u03b9\u03ba\u03b7 \u03a6\u03c1\u03bf\u03bd\u03c4\u03b9\u03b4\u03b1", - "trainers": "\u0391\u03b8\u03bb\u03b7\u03c4\u03b9\u03ba\u03ac \u03c0\u03b1\u03c0\u03bf\u03cd\u03c4\u03c3\u03b9\u03b1", + "rapid_59": "Τέλειο Γρήγορο 59 λεπτά", + "refresh": "Φρεσκάρισμα", + "relax_creases": "ΧΑΛΑΡΩΣΗ", + "saving_30_min": "ΕΞΟΙΚΟΝΟΜΗΣΗ 30'", + "shirts": "Πουκάμισα", + "shoes": "Παπούτσια", + "small_load": "ΜΙΚΡΟ ΦΟΡΤΙΟ", + "soft_care": "Απαλή φροντίδα", + "sport_plus": "ΣΠΟΡ", + "super_easy_iron_misti": "Εξαιρετικά εύκολο σιδέρωμα για ανάμεικτα", + "super_easy_iron_xxl": "Εξαιρετικά εύκολο σιδέρωμα για XXL", + "super_fast_cottons": "Εξαιρετικα ΓΡΗΓΟΡΟ βαμβακερα", + "super_fast_delicates": "Εξαιρετικα ΓΡΗΓΟΡΟ ευαισθητα", + "synthetics": "Συνθετικα", + "total_care": "Ολικη Φροντιδα", + "trainers": "Αθλητικά παπούτσια", "ultra_care": "Ultra Care", - "waterproof_revitalize": "\u0391\u03bd\u03b1\u03b6\u03c9\u03bf\u03b3\u03bf\u03bd\u03b7\u03c3\u03b7 \u03b1\u03b4\u03b9\u03b1\u03b2\u03c1\u03bf\u03c7\u03c9\u03bd", - "whites": "\u039b\u03b5\u03c5\u03ba\u03ac", - "wool": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1 \u039c\u03ac\u03bb\u03bb\u03b9\u03bd\u03c9\u03bd", - "woolmark": "\u039c\u03b1\u03bb\u03bb\u03b9\u03bd\u03b1", - "xxl_load": "XXL \u03a6\u03bf\u03c1\u03c4\u03b9\u03bf", + "waterproof_revitalize": "Αναζωογονηση αδιαβροχων", + "whites": "Λευκά", + "wool": "Στέγνωμα Μάλλινων", + "woolmark": "Μαλλινα", + "xxl_load": "XXL Φορτιο", "zoom_59": "Zoom 59" }, - "name": "\u03a0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1" + "name": "Πρόγραμμα" }, "programs_wm": { "state": { - "20_degrees_coloured_cottons": "20\u00b0 \u03a7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac \u03ba\u03b1\u03b9 \u0392\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03ac", - "20_degrees_new_energy_label": "20\u00b0C", - "active_steam": "\u0391\u03c4\u03bc\u03cc\u03c2", - "active_wash": "\u0395\u03bd\u03b5\u03c1\u03b3\u03cc \u03c0\u03bb\u03cd\u03c3\u03b9\u03bc\u03bf", - "active_wash_steam": "\u0395\u03bd\u03b5\u03c1\u03b3\u03cc \u03c0\u03bb\u03cd\u03c3\u03b9\u03bc\u03bf", - "allergy_care": "\u03a6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1 \u03b1\u03bb\u03bb\u03b5\u03c1\u03b3\u03af\u03b1\u03c2", - "allergy_care_pro": "Allergy Care \u0395\u03c0\u03b1\u03b3\u03b3\u03b5\u03bb\u03bc\u03b1\u03c4\u03b9\u03ba\u03cc", - "all_in_one_49": "\u038c\u03bb\u03b1 \u03c3\u03b5 \u0388\u03bd\u03b1 49'.", - "all_in_one_59": "\u038c\u03bb\u03b1 \u03c3\u03b5 \u0388\u03bd\u03b1 59'.", - "all_in_one_59_steam": "\u0395\u03bd\u03b5\u03c1\u03b3\u03ae \u03c0\u03bb\u03cd\u03c3\u03b7 + \u0391\u03c4\u03bc\u03cc\u03c2", - "autocare": "\u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03c6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1", - "autoclean": "\u039a\u03b1\u03b8\u03b1\u03c1\u03b9\u03c3\u03bc\u03cc\u03c2 \u03ba\u03ac\u03b4\u03bf\u03c5", - "baby_60": "\u039c\u03c9\u03c1\u03bf\u03c5\u03b4\u03b9\u03b1\u03ba\u03ac 60\u00b0C", + "20_degrees_coloured_cottons": "20° Χρωματιστά και Βαμβακερά", + "20_degrees_new_energy_label": "20°C", + "active_steam": "Ατμός", + "active_wash": "Ενεργό πλύσιμο", + "active_wash_steam": "Ενεργό πλύσιμο", + "allergy_care": "Φροντίδα αλλεργίας", + "allergy_care_pro": "Allergy Care Επαγγελματικό", + "all_in_one_49": "Όλα σε Ένα 49'.", + "all_in_one_59": "Όλα σε Ένα 59'.", + "all_in_one_59_steam": "Ενεργή πλύση + Ατμός", + "autocare": "Αυτόματη φροντίδα", + "autoclean": "Καθαρισμός κάδου", + "baby_60": "Μωρουδιακά 60°C", "care_14": "Rapid Care 14'", "care_30": "Rapid Care 30'", "care_44": "Rapid Care 44'", - "checkup": "\u0388\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2", - "colour_59": "\u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03b1 59'", - "colour_59_steam": "\u03a7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac 59' + \u03b1\u03c4\u03bc\u03cc\u03c2", - "cottons": "\u0392\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03cc", - "cottons_prewash": "\u03b2\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03b1 + \u03c0\u03c1\u03bf\u03c0\u03bb\u03c5\u03c3\u03b7", - "cottons_steam": "\u0392\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03cc + \u0391\u03c4\u03bc\u03cc\u03c2", - "cotton_care_59": "\u03b2\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03b1 59 \u03bb\u03b5\u03c0\u03c4\u03b1", - "delicate_59": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1 59'", - "delicate_silk": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1 \u03bc\u03b5\u03c4\u03b1\u03be\u03c9\u03c4\u03ac", - "delicate_silk_steam": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1 \u03bc\u03b5\u03c4\u03b1\u03be\u03c9\u03c4\u03ac + \u03b1\u03c4\u03bc\u03cc\u03c2", - "delicati_59": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1 59'", - "delicati_59_steam": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1 59'", - "drain_spin": "\u03a3\u03c4\u03c1\u03b1\u03b3\u03b3\u03af\u03c3\u03c4\u03b5 + \u03ba\u03b1\u03b9 \u03c0\u03b5\u03c1\u03b9\u03c3\u03c4\u03c1\u03ad\u03c8\u03c4\u03b5", - "easy_iron": "\u03b5\u03c5\u03ba\u03bf\u03bb\u03bf \u03c3\u03b9\u03b4\u03b5\u03c1\u03c9\u03bc\u03b1", - "eco_40_60_new_energy_label": "Eco (\u03bf\u03b9\u03ba\u03bf\u03bb\u03bf\u03b3\u03b9\u03ba\u03cc) 40-60", + "checkup": "Έλεγχος", + "colour_59": "χρωματιστα 59'", + "colour_59_steam": "Χρωματιστά 59' + ατμός", + "cottons": "Βαμβακερό", + "cottons_prewash": "βαμβακερα + προπλυση", + "cottons_steam": "Βαμβακερό + Ατμός", + "cotton_care_59": "βαμβακερα 59 λεπτα", + "delicate_59": "Ευαίσθητα 59'", + "delicate_silk": "Ευαίσθητα μεταξωτά", + "delicate_silk_steam": "Ευαίσθητα μεταξωτά + ατμός", + "delicati_59": "Ευαίσθητα 59'", + "delicati_59_steam": "Ευαίσθητα 59'", + "drain_spin": "Στραγγίστε + και περιστρέψτε", + "easy_iron": "ευκολο σιδερωμα", + "eco_40_60_new_energy_label": "Eco (οικολογικό) 40-60", "extra_care": "EXTRA CARE", "fitness": "FITNESS CARE", "fitness_care": "FITNESS CARE", - "fresh_care": "\u03a6\u03c1\u03ad\u03c3\u03ba\u03b9\u03b1 \u03c6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1", - "fresh_care_steam": "\u03a6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1 \u03c6\u03c1\u03b5\u03c3\u03ba\u03ac\u03b4\u03b1\u03c2 + \u0391\u03c4\u03bc\u03cc\u03c2", - "handwash_wool": "\u03a0\u03bb\u03cd\u03c3\u03b9\u03bc\u03bf \u03c3\u03c4\u03bf \u03c7\u03ad\u03c1\u03b9 \u03ba\u03b1\u03b9 \u03bc\u03b1\u03bb\u03bb\u03af", - "high_dry": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1 \u03b2\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03ce\u03bd", - "hqd_20_degrees": "\u0392\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03cc 20\u2103", - "hqd_allergy": "\u03a6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1 \u03b1\u03bb\u03bb\u03b5\u03c1\u03b3\u03af\u03b1\u03c2", - "hqd_autoclean": "\u039a\u03b1\u03b8\u03b1\u03c1\u03b9\u03c3\u03bc\u03cc\u03c2 \u03ba\u03ac\u03b4\u03bf\u03c5", - "hqd_babycare": "\u03a6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1 \u039c\u03c9\u03c1\u03bf\u03cd", - "hqd_checkup": "\u0388\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2", - "hqd_cottons": "\u0392\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03cc", - "hqd_delicate": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1", - "hqd_delicate_cradle": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1", - "hqd_dry": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1 \u03b2\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03ce\u03bd", - "hqd_dry_synthetics": "\u039c\u03b9\u03ba\u03c4\u03ac \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", - "hqd_duvet": "\u03a0\u03b1\u03c0\u03bb\u03ce\u03bc\u03b1\u03c4\u03b1", - "hqd_eco_40_60_degrees": "Eco (\u03bf\u03b9\u03ba\u03bf\u03bb\u03bf\u03b3\u03b9\u03ba\u03cc) 40-60", - "hqd_handwash_wool": "\u039c\u03ac\u03bb\u03bb\u03b9\u03bd\u03b1", + "fresh_care": "Φρέσκια φροντίδα", + "fresh_care_steam": "Φροντίδα φρεσκάδας + Ατμός", + "handwash_wool": "Πλύσιμο στο χέρι και μαλλί", + "high_dry": "Στέγνωμα βαμβακερών", + "hqd_20_degrees": "Βαμβακερό 20℃", + "hqd_allergy": "Φροντίδα αλλεργίας", + "hqd_autoclean": "Καθαρισμός κάδου", + "hqd_babycare": "Φροντίδα Μωρού", + "hqd_checkup": "Έλεγχος", + "hqd_cottons": "Βαμβακερό", + "hqd_delicate": "Ευαίσθητα", + "hqd_delicate_cradle": "Ευαίσθητα", + "hqd_dry": "Στέγνωμα βαμβακερών", + "hqd_dry_synthetics": "Μικτά στέγνωμα", + "hqd_duvet": "Παπλώματα", + "hqd_eco_40_60_degrees": "Eco (οικολογικό) 40-60", + "hqd_handwash_wool": "Μάλλινα", "hqd_i_refresh": "i-Refresh", - "hqd_mix": "\u039c\u03b5\u03af\u03b3\u03bc\u03b1", - "hqd_quick_15": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf 15'", - "hqd_quick_wash_57": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf \u03c0\u03bb\u03cd\u03c3\u03b9\u03bc\u03bf 57 \u03bb\u03b5\u03c0\u03c4\u03ac", - "hqd_rapid_wash_and_dry": "\u03a0\u03bb\u03cd\u03c3\u03b9\u03bc\u03bf & \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", + "hqd_mix": "Μείγμα", + "hqd_quick_15": "Γρήγορο 15'", + "hqd_quick_wash_57": "Γρήγορο πλύσιμο 57 λεπτά", + "hqd_rapid_wash_and_dry": "Πλύσιμο & στέγνωμα", "hqd_refresh": "Refresh", - "hqd_rinse": "\u039e\u03ad\u03c0\u03bb\u03c5\u03bc\u03b1", - "hqd_shirts": "\u03a0\u03bf\u03c5\u03ba\u03ac\u03bc\u03b9\u03c3\u03b1", + "hqd_rinse": "Ξέπλυμα", + "hqd_shirts": "Πουκάμισα", "hqd_smart": "Smart A.I.", - "hqd_spin": "\u03a3\u03c4\u03cd\u03c8\u03b9\u03bc\u03bf", - "hqd_sport": "\u0391\u03b8\u03bb\u03b7\u03c4\u03b9\u03ba\u03ac", - "hqd_super_fast": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf 39\u2019", - "hqd_synthetic_and_coloured": "\u03a3\u03c5\u03bd\u03b8\u03b5\u03c4\u03b9\u03ba\u03ac", + "hqd_spin": "Στύψιμο", + "hqd_sport": "Αθλητικά", + "hqd_super_fast": "Γρήγορο 39’", + "hqd_synthetic_and_coloured": "Συνθετικά", "hygiene_59": "HYGIENE PLUS 59'", - "hygiene_60": "\u03a5\u03b3\u03b9\u03b5\u03b9\u03bd\u03cc 60\u00b0", + "hygiene_60": "Υγιεινό 60°", "hygiene_plus_59": "HYGIENE PLUS 59'", "hygiene_plus_59_min": "HYGIENE PLUS 59'", - "hygiene_pro_49_min": "Hygiene Pro 49 \u03bb\u03b5\u03c0\u03c4\u03ac", - "hygiene_pro_steam": "Hygiene Pro + \u0391\u03c4\u03bc\u03cc\u03c2", - "intensive_40": "\u0395\u03bd\u03c4\u03b1\u03c4\u03b9\u03ba\u03cc 40\u00b0C", - "intensive_40_steam": "\u0395\u03bd\u03c4\u03b1\u03c4\u03b9\u03ba\u03cc 40\u00b0C + \u03b1\u03c4\u03bc\u03cc\u03c2", - "iot_active_steam": "\u0391\u03c4\u03bc\u03cc\u03c2", - "iot_active_wash_steam": "\u0395\u03bd\u03b5\u03c1\u03b3\u03cc \u03c0\u03bb\u03cd\u03c3\u03b9\u03bc\u03bf", - "iot_allergy_care_pro": "Allergy Care \u0395\u03c0\u03b1\u03b3\u03b3\u03b5\u03bb\u03bc\u03b1\u03c4\u03b9\u03ba\u03cc", - "iot_all_in_one_59_steam": "\u0395\u03bd\u03b5\u03c1\u03b3\u03ae \u03c0\u03bb\u03cd\u03c3\u03b7 + \u0391\u03c4\u03bc\u03cc\u03c2", - "iot_checkup": "\u0388\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2", - "iot_colour_59_steam": "\u03a7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac 59' + \u03b1\u03c4\u03bc\u03cc\u03c2", - "iot_cottons_steam": "\u0392\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03cc + \u0391\u03c4\u03bc\u03cc\u03c2", - "iot_delicate_silk_steam": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1 \u03bc\u03b5\u03c4\u03b1\u03be\u03c9\u03c4\u03ac + \u03b1\u03c4\u03bc\u03cc\u03c2", - "iot_delicati_59_steam": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1 59'", - "iot_dry_air_refresh": "\u0391\u03bd\u03b1\u03bd\u03ad\u03c9\u03c3\u03b7 \u03b1\u03ad\u03c1\u03b1", - "iot_dry_anti_mites": "\u0391\u03bd\u03c4\u03b9-\u03b1\u03ba\u03ac\u03c1\u03b5\u03b1", - "iot_dry_baby": "\u039c\u03c9\u03c1\u03bf\u03c5\u03b4\u03b9\u03b1\u03ba\u03ac", - "iot_dry_backpacks": "\u03a3\u03b1\u03ba\u03af\u03b4\u03b9\u03b1", - "iot_dry_bathrobe": "\u039c\u03c0\u03bf\u03c5\u03c1\u03bd\u03bf\u03cd\u03b6\u03b9\u03b1 \u03ba\u03b1\u03b9 \u03c0\u03bf\u03c1\u03ce\u03b4\u03b7 \u03c5\u03c6\u03ac\u03c3\u03bc\u03b1\u03c4\u03b1", - "iot_dry_bed_linen": "\u039a\u03bb\u03b9\u03bd\u03bf\u03c3\u03ba\u03b5\u03c0\u03ac\u03c3\u03bc\u03b1\u03c4\u03b1", - "iot_dry_cotton_dry": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1 \u03b2\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03ce\u03bd", - "iot_dry_cuddly_toys": "\u039b\u03bf\u03cd\u03c4\u03c1\u03b9\u03bd\u03b1 \u03b6\u03c9\u03ac\u03ba\u03b9\u03b1", - "iot_dry_curtains": "\u039a\u03bf\u03c5\u03c1\u03c4\u03af\u03bd\u03b5\u03c2", - "iot_dry_dehumidifier": "\u0391\u03c6\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 \u03c5\u03b3\u03c1\u03b1\u03c3\u03af\u03b1\u03c2", - "iot_dry_delicates_antiallergy": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1 \u03ba\u03b1\u03b9 \u03bb\u03b5\u03c0\u03c4\u03ac \u2013 \u03b1\u03bd\u03c4\u03b9-\u03b1\u03bb\u03bb\u03b5\u03c1\u03b3\u03b9\u03bf\u03b3\u03cc\u03bd\u03b1", - "iot_dry_delicate_tablecloths": "\u039b\u03b5\u03c0\u03c4\u03ac \u03c4\u03c1\u03b1\u03c0\u03b5\u03b6\u03bf\u03bc\u03ac\u03bd\u03c4\u03b9\u03bb\u03b1", - "iot_dry_denim_jeans": "\u039d\u03c4\u03ad\u03bd\u03b9\u03bc - \u03a4\u03b6\u03b9\u03bd", - "iot_dry_easy_iron_cotton": "\u0395\u03cd\u03ba\u03bf\u03bb\u03bf \u03c3\u03b9\u03b4\u03ad\u03c1\u03c9\u03bc\u03b1 - \u03b2\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03ac", - "iot_dry_easy_iron_synthetics": "\u0395\u03cd\u03ba\u03bf\u03bb\u03bf \u03c3\u03b9\u03b4\u03ad\u03c1\u03c9\u03bc\u03b1 - \u03a3\u03c5\u03bd\u03b8\u03b5\u03c4\u03b9\u03ba\u03ac", - "iot_dry_gym_fit": "\u03a6\u03cc\u03c1\u03bc\u03b5\u03c2 - \u03c1\u03bf\u03cd\u03c7\u03b1 \u03b3\u03c5\u03bc\u03bd\u03b1\u03c3\u03c4\u03b9\u03ba\u03ae\u03c2", - "iot_dry_lingerie": "\u0395\u03c3\u03ce\u03c1\u03bf\u03c5\u03c7\u03b1", - "iot_dry_mixed_dry": "\u039c\u03b9\u03ba\u03c4\u03ac \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", - "iot_dry_rapid_60_min_delicates": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf 60' - \u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1", - "iot_dry_shirts": "\u03a0\u03bf\u03c5\u03ba\u03ac\u03bc\u03b9\u03c3\u03b1", - "iot_dry_swimsuits_and_bikinis": "\u039c\u03b1\u03b3\u03b9\u03cc", - "iot_dry_synthetics": "\u03a3\u03c5\u03bd\u03b8\u03b5\u03c4\u03b9\u03ba\u03ac \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", - "iot_dry_synthetic_dry": "\u03a3\u03c5\u03bd\u03b8\u03b5\u03c4\u03b9\u03ba\u03ac \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", - "iot_dry_tablecloths": "\u03a4\u03c1\u03b1\u03c0\u03b5\u03b6\u03bf\u03bc\u03ac\u03bd\u03c4\u03b7\u03bb\u03b1", - "iot_dry_technical_fabrics": "\u03a4\u03b5\u03c7\u03bd\u03b9\u03ba\u03ac \u03c5\u03c6\u03ac\u03c3\u03bc\u03b1\u03c4\u03b1", - "iot_dry_warm_embrace": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1 \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", - "iot_dry_wool_dry": "\u039c\u03ac\u03bb\u03bb\u03b9\u03bd\u03b1 \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", - "iot_easy_iron": "\u03b5\u03c5\u03ba\u03bf\u03bb\u03bf \u03c3\u03b9\u03b4\u03b5\u03c1\u03c9\u03bc\u03b1", - "iot_fresh_care_steam": "\u03a6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1 \u03c6\u03c1\u03b5\u03c3\u03ba\u03ac\u03b4\u03b1\u03c2 + \u0391\u03c4\u03bc\u03cc\u03c2", - "iot_hygiene_pro_steam": "Hygiene Pro + \u0391\u03c4\u03bc\u03cc\u03c2", - "iot_intensive_40_steam": "\u0395\u03bd\u03c4\u03b1\u03c4\u03b9\u03ba\u03cc 40\u00b0C + \u03b1\u03c4\u03bc\u03cc\u03c2", - "iot_mixed_steam": "\u039c\u03b9\u03ba\u03c4\u03ac + \u0391\u03c4\u03bc\u03cc\u03c2", - "iot_mix_and_colour_59_steam": "\u039c\u03b9\u03ba\u03c4\u03ac \u03ba\u03b1\u03b9 \u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac 59' + \u0391\u03c4\u03bc\u03cc\u03c2", - "iot_perfect_cotton_59_steam": "\u03a4\u0395\u039b\u0395\u0399\u0391 \u0392\u0391\u039c\u0392\u0391\u039a\u0395\u03a1\u0391 59'", - "iot_rapid_a_class_60_steam": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf \u03ba\u03b1\u03c4\u03b7\u03b3\u03bf\u03c1\u03af\u03b1\u03c2 A 60 + \u03b1\u03c4\u03bc\u03cc\u03c2", - "iot_resistant_cotton_steam": "\u0392\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03cc + \u0391\u03c4\u03bc\u03cc\u03c2", - "iot_shirts_steam": "\u03a0\u03bf\u03c5\u03ba\u03ac\u03bc\u03b9\u03c3\u03b1 + \u0391\u03c4\u03bc\u03cc\u03c2", - "iot_single_item_steam": "\u0388\u03bd\u03b1 \u03c4\u03b5\u03bc\u03ac\u03c7\u03b9\u03bf + \u0391\u03c4\u03bc\u03cc\u03c2", - "iot_smart_wash": "\u0388\u03be\u03c5\u03c0\u03bd\u03b7 \u03c0\u03bb\u03cd\u03c3\u03b7", + "hygiene_pro_49_min": "Hygiene Pro 49 λεπτά", + "hygiene_pro_steam": "Hygiene Pro + Ατμός", + "intensive_40": "Εντατικό 40°C", + "intensive_40_steam": "Εντατικό 40°C + ατμός", + "iot_active_steam": "Ατμός", + "iot_active_wash_steam": "Ενεργό πλύσιμο", + "iot_allergy_care_pro": "Allergy Care Επαγγελματικό", + "iot_all_in_one_59_steam": "Ενεργή πλύση + Ατμός", + "iot_checkup": "Έλεγχος", + "iot_colour_59_steam": "Χρωματιστά 59' + ατμός", + "iot_cottons_steam": "Βαμβακερό + Ατμός", + "iot_delicate_silk_steam": "Ευαίσθητα μεταξωτά + ατμός", + "iot_delicati_59_steam": "Ευαίσθητα 59'", + "iot_dry_air_refresh": "Ανανέωση αέρα", + "iot_dry_anti_mites": "Αντι-ακάρεα", + "iot_dry_baby": "Μωρουδιακά", + "iot_dry_backpacks": "Σακίδια", + "iot_dry_bathrobe": "Μπουρνούζια και πορώδη υφάσματα", + "iot_dry_bed_linen": "Κλινοσκεπάσματα", + "iot_dry_cotton_dry": "Στέγνωμα βαμβακερών", + "iot_dry_cuddly_toys": "Λούτρινα ζωάκια", + "iot_dry_curtains": "Κουρτίνες", + "iot_dry_dehumidifier": "Αφαίρεση υγρασίας", + "iot_dry_delicates_antiallergy": "Ευαίσθητα και λεπτά – αντι-αλλεργιογόνα", + "iot_dry_delicate_tablecloths": "Λεπτά τραπεζομάντιλα", + "iot_dry_denim_jeans": "Ντένιμ - Τζιν", + "iot_dry_easy_iron_cotton": "Εύκολο σιδέρωμα - βαμβακερά", + "iot_dry_easy_iron_synthetics": "Εύκολο σιδέρωμα - Συνθετικά", + "iot_dry_gym_fit": "Φόρμες - ρούχα γυμναστικής", + "iot_dry_lingerie": "Εσώρουχα", + "iot_dry_mixed_dry": "Μικτά στέγνωμα", + "iot_dry_rapid_60_min_delicates": "Γρήγορο 60' - Ευαίσθητα", + "iot_dry_shirts": "Πουκάμισα", + "iot_dry_swimsuits_and_bikinis": "Μαγιό", + "iot_dry_synthetics": "Συνθετικά στέγνωμα", + "iot_dry_synthetic_dry": "Συνθετικά στέγνωμα", + "iot_dry_tablecloths": "Τραπεζομάντηλα", + "iot_dry_technical_fabrics": "Τεχνικά υφάσματα", + "iot_dry_warm_embrace": "Ευαίσθητα στέγνωμα", + "iot_dry_wool_dry": "Μάλλινα στέγνωμα", + "iot_easy_iron": "ευκολο σιδερωμα", + "iot_fresh_care_steam": "Φροντίδα φρεσκάδας + Ατμός", + "iot_hygiene_pro_steam": "Hygiene Pro + Ατμός", + "iot_intensive_40_steam": "Εντατικό 40°C + ατμός", + "iot_mixed_steam": "Μικτά + Ατμός", + "iot_mix_and_colour_59_steam": "Μικτά και χρωματιστά 59' + Ατμός", + "iot_perfect_cotton_59_steam": "ΤΕΛΕΙΑ ΒΑΜΒΑΚΕΡΑ 59'", + "iot_rapid_a_class_60_steam": "Γρήγορο κατηγορίας A 60 + ατμός", + "iot_resistant_cotton_steam": "Βαμβακερό + Ατμός", + "iot_shirts_steam": "Πουκάμισα + Ατμός", + "iot_single_item_steam": "Ένα τεμάχιο + Ατμός", + "iot_smart_wash": "Έξυπνη πλύση", "iot_soft_care_steam": "Soft Care + Steam", - "iot_special_39_full_load_steam": "\u0395\u03b9\u03b4\u03b9\u03ba\u03cc 39' + \u0391\u03c4\u03bc\u03cc\u03c2", - "iot_steam_hygiene_plus": "\u0391\u03c4\u03bc\u03cc\u03c2 \u03b3\u03b9\u03b1 \u03c0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03bf \u03c5\u03b3\u03b9\u03b5\u03b9\u03bd\u03cc \u03c6\u03b1\u03b3\u03b7\u03c4\u03cc ", - "iot_synthetic_and_coloured_steam": "\u03a3\u03c5\u03bd\u03b8\u03b5\u03c4\u03b9\u03ba\u03ac \u03ba\u03b1\u03b9 \u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac + \u0391\u03c4\u03bc\u03cc\u03c2", - "iot_wash_and_dry": "\u03a0\u03bb\u03cd\u03c3\u03b9\u03bc\u03bf & \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", - "iot_wash_anti_mites": "\u0391\u03bd\u03c4\u03b9-\u03b1\u03ba\u03ac\u03c1\u03b5\u03b1", - "iot_wash_anti_odor": "\u039a\u03b1\u03c4\u03ac \u03c4\u03c9\u03bd \u03bf\u03c3\u03bc\u03ce\u03bd", + "iot_special_39_full_load_steam": "Ειδικό 39' + Ατμός", + "iot_steam_hygiene_plus": "Ατμός για περισσότερο υγιεινό φαγητό ", + "iot_synthetic_and_coloured_steam": "Συνθετικά και χρωματιστά + Ατμός", + "iot_wash_and_dry": "Πλύσιμο & στέγνωμα", + "iot_wash_anti_mites": "Αντι-ακάρεα", + "iot_wash_anti_odor": "Κατά των οσμών", "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", - "iot_wash_baby_sanitizer": "\u0391\u03c0\u03bf\u03bb\u03cd\u03bc\u03b1\u03bd\u03c3\u03b7", - "iot_wash_baby_sanitizer_steam": "\u0391\u03c0\u03bf\u03bb\u03cd\u03bc\u03b1\u03bd\u03c3\u03b7 \u03bc\u03c9\u03c1\u03bf\u03c5\u03b4\u03b9\u03b1\u03ba\u03ce\u03bd + \u03b1\u03c4\u03bc\u03cc\u03c2", - "iot_wash_backpacks": "\u03a3\u03b1\u03ba\u03af\u03b4\u03b9\u03b1", - "iot_wash_backpacks_zelig": "\u03a3\u03b1\u03ba\u03af\u03b4\u03b9\u03b1 \u03c0\u03bb\u03ac\u03c4\u03b7\u03c2", - "iot_wash_bathrobe": "\u039c\u03c0\u03bf\u03c5\u03c1\u03bd\u03bf\u03cd\u03b6\u03b9\u03b1 \u03ba\u03b1\u03b9 \u03c0\u03b5\u03c4\u03c3\u03ad\u03c4\u03b5\u03c2", - "iot_wash_bathrobe_steam": "\u039c\u03c0\u03bf\u03c5\u03c1\u03bd\u03bf\u03cd\u03b6\u03b9 + \u0391\u03c4\u03bc\u03cc\u03c2", - "iot_wash_bed_linen": "\u039a\u03bb\u03b9\u03bd\u03bf\u03c3\u03ba\u03b5\u03c0\u03ac\u03c3\u03bc\u03b1\u03c4\u03b1", - "iot_wash_bed_linen_steam": "\u039a\u03bb\u03b9\u03bd\u03bf\u03c3\u03ba\u03b5\u03c0\u03ac\u03c3\u03bc\u03b1\u03c4\u03b1 + \u0391\u03c4\u03bc\u03cc\u03c2", - "iot_wash_bed_linen_zelig": "\u039a\u03bb\u03b9\u03bd\u03bf\u03c3\u03ba\u03b5\u03c0\u03ac\u03c3\u03bc\u03b1\u03c4\u03b1", - "iot_wash_big_single_load": "\u039c\u03b5\u03b3\u03ac\u03bb\u03bf \u03bc\u03b5\u03bc\u03bf\u03bd\u03c9\u03bc\u03ad\u03bd\u03bf \u03c6\u03bf\u03c1\u03c4\u03af\u03bf", - "iot_wash_bleaching": "\u039b\u03b5\u03cd\u03ba\u03b1\u03bd\u03c3\u03b7", - "iot_wash_blood_stains": "\u039b\u03b5\u03ba\u03ad\u03b4\u03b5\u03c2 \u03b1\u03af\u03bc\u03b1\u03c4\u03bf\u03c2", - "iot_wash_cashmere": "\u039a\u03b1\u03c3\u03bc\u03af\u03c1\u03b9", - "iot_wash_chocolate_stains": "\u039b\u03b5\u03ba\u03ad\u03b4\u03b5\u03c2 \u03b1\u03c0\u03cc \u03c3\u03bf\u03ba\u03bf\u03bb\u03ac\u03c4\u03b1", - "iot_wash_cold_wash": "\u039a\u03c1\u03cd\u03b1 \u03c0\u03bb\u03cd\u03c3\u03b7", - "iot_wash_colored": "\u03a7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac", - "iot_wash_colored_anti_stain": "\u0391\u03c6\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 \u03bb\u03b5\u03ba\u03ad\u03b4\u03c9\u03bd \u03b3\u03b9\u03b1 \u03c7\u03c1\u03ce\u03bc\u03b1\u03c4\u03b1", - "iot_wash_colored_delicate": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1 \u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac", - "iot_wash_coloured": "\u03a7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac", - "iot_wash_coloured_bed_linen": "\u03a7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac \u03ba\u03bb\u03b9\u03bd\u03bf\u03c3\u03ba\u03b5\u03c0\u03ac\u03c3\u03bc\u03b1\u03c4\u03b1", - "iot_wash_coloured_bed_linen_steam": "\u03a7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac \u03ba\u03bb\u03b9\u03bd\u03bf\u03c3\u03ba\u03b5\u03c0\u03ac\u03c3\u03bc\u03b1\u03c4\u03b1 + \u03b1\u03c4\u03bc\u03cc\u03c2", - "iot_wash_coloured_curtains": "\u03a7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ad\u03c2 \u03ba\u03bf\u03c5\u03c1\u03c4\u03af\u03bd\u03b5\u03c2", - "iot_wash_coloured_shirts": "\u03a7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac \u03c0\u03bf\u03c5\u03ba\u03ac\u03bc\u03b9\u03c3\u03b1", - "iot_wash_coloured_shirts_steam": "\u03a7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac \u03c0\u03bf\u03c5\u03ba\u03ac\u03bc\u03b9\u03c3\u03b1 + \u03b1\u03c4\u03bc\u03cc\u03c2", - "iot_wash_coloured_steam": "\u03a7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac + \u0391\u03c4\u03bc\u03cc\u03c2", - "iot_wash_coloured_tableclothes": "\u03a7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac \u03c4\u03c1\u03b1\u03c0\u03b5\u03b6\u03bf\u03bc\u03ac\u03bd\u03c4\u03b7\u03bb\u03b1", - "iot_wash_coloured_tableclothes_steam": "\u03a7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac \u03c4\u03c1\u03b1\u03c0\u03b5\u03b6\u03bf\u03bc\u03ac\u03bd\u03c4\u03b9\u03bb\u03b1 + \u0391\u03c4\u03bc\u03cc\u03c2", - "iot_wash_cotton": "\u0392\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03cc", - "iot_wash_cotton_steam": "\u0392\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03cc + \u0391\u03c4\u03bc\u03cc\u03c2", - "iot_wash_cuddly_toys": "\u039b\u03bf\u03cd\u03c4\u03c1\u03b9\u03bd\u03b1 \u03b6\u03c9\u03ac\u03ba\u03b9\u03b1", - "iot_wash_curtains": "\u039a\u03bf\u03c5\u03c1\u03c4\u03af\u03bd\u03b5\u03c2", - "iot_wash_curtains_steam": "\u039a\u03bf\u03c5\u03c1\u03c4\u03af\u03bd\u03b5\u03c2 + \u0391\u03c4\u03bc\u03cc\u03c2", - "iot_wash_curtains_zelig": "\u039a\u03bf\u03c5\u03c1\u03c4\u03af\u03bd\u03b5\u03c2", - "iot_wash_dark": "\u03a3\u03ba\u03bf\u03cd\u03c1\u03b1 \u03c1\u03bf\u03cd\u03c7\u03b1", - "iot_wash_darks_and_coloured_44": "\u03a3\u03ba\u03bf\u03cd\u03c1\u03b1 \u03ba\u03b1\u03b9 \u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac 44'", - "iot_wash_darks_and_coloured_59": "\u03a3\u03ba\u03bf\u03cd\u03c1\u03b1 \u03ba\u03b1\u03b9 \u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac 59'", - "iot_wash_darks_and_coloured_xl": "\u03a3\u03ba\u03bf\u03cd\u03c1\u03b1 \u03ba\u03b1\u03b9 \u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac XL", - "iot_wash_dark_steam": "\u03a3\u03ba\u03bf\u03cd\u03c1\u03b1 \u03c1\u03bf\u03cd\u03c7\u03b1 + \u0391\u03c4\u03bc\u03cc\u03c2", + "iot_wash_baby_sanitizer": "Απολύμανση", + "iot_wash_baby_sanitizer_steam": "Απολύμανση μωρουδιακών + ατμός", + "iot_wash_backpacks": "Σακίδια", + "iot_wash_backpacks_zelig": "Σακίδια πλάτης", + "iot_wash_bathrobe": "Μπουρνούζια και πετσέτες", + "iot_wash_bathrobe_steam": "Μπουρνούζι + Ατμός", + "iot_wash_bed_linen": "Κλινοσκεπάσματα", + "iot_wash_bed_linen_steam": "Κλινοσκεπάσματα + Ατμός", + "iot_wash_bed_linen_zelig": "Κλινοσκεπάσματα", + "iot_wash_big_single_load": "Μεγάλο μεμονωμένο φορτίο", + "iot_wash_bleaching": "Λεύκανση", + "iot_wash_blood_stains": "Λεκέδες αίματος", + "iot_wash_cashmere": "Κασμίρι", + "iot_wash_chocolate_stains": "Λεκέδες από σοκολάτα", + "iot_wash_cold_wash": "Κρύα πλύση", + "iot_wash_colored": "Χρωματιστά", + "iot_wash_colored_anti_stain": "Αφαίρεση λεκέδων για χρώματα", + "iot_wash_colored_delicate": "Ευαίσθητα χρωματιστά", + "iot_wash_coloured": "Χρωματιστά", + "iot_wash_coloured_bed_linen": "Χρωματιστά κλινοσκεπάσματα", + "iot_wash_coloured_bed_linen_steam": "Χρωματιστά κλινοσκεπάσματα + ατμός", + "iot_wash_coloured_curtains": "Χρωματιστές κουρτίνες", + "iot_wash_coloured_shirts": "Χρωματιστά πουκάμισα", + "iot_wash_coloured_shirts_steam": "Χρωματιστά πουκάμισα + ατμός", + "iot_wash_coloured_steam": "Χρωματιστά + Ατμός", + "iot_wash_coloured_tableclothes": "Χρωματιστά τραπεζομάντηλα", + "iot_wash_coloured_tableclothes_steam": "Χρωματιστά τραπεζομάντιλα + Ατμός", + "iot_wash_cotton": "Βαμβακερό", + "iot_wash_cotton_steam": "Βαμβακερό + Ατμός", + "iot_wash_cuddly_toys": "Λούτρινα ζωάκια", + "iot_wash_curtains": "Κουρτίνες", + "iot_wash_curtains_steam": "Κουρτίνες + Ατμός", + "iot_wash_curtains_zelig": "Κουρτίνες", + "iot_wash_dark": "Σκούρα ρούχα", + "iot_wash_darks_and_coloured_44": "Σκούρα και χρωματιστά 44'", + "iot_wash_darks_and_coloured_59": "Σκούρα και χρωματιστά 59'", + "iot_wash_darks_and_coloured_xl": "Σκούρα και χρωματιστά XL", + "iot_wash_dark_steam": "Σκούρα ρούχα + Ατμός", "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", "iot_wash_dash_cold_cycle": "Dash Cold Clean", "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", - "iot_wash_delicate": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1", - "iot_wash_delicate_antiallergy": "\u0391\u03bd\u03c4\u03b9-\u03b1\u03bb\u03bb\u03b5\u03c1\u03b3\u03b9\u03ba\u03cc \u03b3\u03b9\u03b1 \u03bb\u03b9\u03c0\u03b1\u03c1\u03ad\u03c2 \u03bf\u03c5\u03c3\u03af\u03b5\u03c2", - "iot_wash_delicate_antiallergy_steam": "\u0391\u03bd\u03c4\u03b9-\u03b1\u03bb\u03bb\u03b5\u03c1\u03b3\u03b9\u03ba\u03cc \u03b3\u03b9\u03b1 \u03bb\u03b9\u03c0\u03b1\u03c1\u03ad\u03c2 \u03bf\u03c5\u03c3\u03af\u03b5\u03c2 + \u0391\u03c4\u03bc\u03cc\u03c2", - "iot_wash_delicate_antiallergy_zelig": "\u0391\u03bd\u03c4\u03b9-\u03b1\u03bb\u03bb\u03b5\u03c1\u03b3\u03b9\u03ba\u03cc \u03b3\u03b9\u03b1 \u03bb\u03b9\u03c0\u03b1\u03c1\u03ad\u03c2 \u03bf\u03c5\u03c3\u03af\u03b5\u03c2", - "iot_wash_delicate_colors": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1 \u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac", - "iot_wash_delicate_colors_steam": "\u03a7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac + \u03b1\u03c4\u03bc\u03cc\u03c2", - "iot_wash_delicate_dark": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1 \u03c3\u03ba\u03bf\u03cd\u03c1\u03b1", - "iot_wash_delicate_steam": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1 + \u0391\u03c4\u03bc\u03cc\u03c2", - "iot_wash_delicate_tablecloths": "\u039b\u03b5\u03c0\u03c4\u03ac \u03c4\u03c1\u03b1\u03c0\u03b5\u03b6\u03bf\u03bc\u03ac\u03bd\u03c4\u03b9\u03bb\u03b1", - "iot_wash_delicate_tablecloths_steam": "\u039b\u03b5\u03c0\u03c4\u03ac \u03c4\u03c1\u03b1\u03c0\u03b5\u03b6\u03bf\u03bc\u03ac\u03bd\u03c4\u03b9\u03bb\u03b1 + \u0391\u03c4\u03bc\u03cc\u03c2", - "iot_wash_delicate_whites": "\u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1 \u03bb\u03b5\u03c5\u03ba\u03ac", - "iot_wash_denim_jeans": "\u039d\u03c4\u03ad\u03bd\u03b9\u03bc - \u03c4\u03b6\u03b9\u03bd", - "iot_wash_diving_suits": "\u03a3\u03c4\u03bf\u03bb\u03b5\u03c2 \u03ba\u03b1\u03c4\u03ac\u03b4\u03c5\u03c3\u03b7\u03c2", - "iot_wash_diving_suits_zelig": "\u03a3\u03c4\u03bf\u03bb\u03b5\u03c2 \u03ba\u03b1\u03c4\u03ac\u03b4\u03c5\u03c3\u03b7\u03c2", - "iot_wash_down_jackets": "\u03a6\u03bf\u03c5\u03c3\u03ba\u03c9\u03c4\u03ac \u03bc\u03c0\u03bf\u03c5\u03c6\u03ac\u03bd", - "iot_wash_down_jackets_zelig": "\u03a6\u03bf\u03c5\u03c3\u03ba\u03c9\u03c4\u03ac \u03bc\u03c0\u03bf\u03c5\u03c6\u03ac\u03bd", - "iot_wash_duvet": "\u03a0\u03b1\u03c0\u03bb\u03ce\u03bc\u03b1\u03c4\u03b1", - "iot_wash_fruit_stains": "\u039b\u03b5\u03ba\u03ad\u03b4\u03b5\u03c2 \u03c6\u03c1\u03bf\u03cd\u03c4\u03c9\u03bd", - "iot_wash_gym_fit": "\u03a6\u03cc\u03c1\u03bc\u03b5\u03c2 - \u03c1\u03bf\u03cd\u03c7\u03b1 \u03b3\u03c5\u03bc\u03bd\u03b1\u03c3\u03c4\u03b9\u03ba\u03ae\u03c2", - "iot_wash_handwash": "\u03a0\u03bb\u03cd\u03c3\u03b9\u03bc\u03bf \u03c3\u03c4\u03bf \u03c7\u03ad\u03c1\u03b9", - "iot_wash_handwash_colored": "\u03a0\u03bb\u03cd\u03c3\u03b9\u03bc\u03bf \u03c3\u03c4\u03bf \u03c7\u03ad\u03c1\u03b9 \u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac", - "iot_wash_handwash_dark": "\u03a0\u03bb\u03cd\u03c3\u03b9\u03bc\u03bf \u03c3\u03c4\u03bf \u03c7\u03ad\u03c1\u03b9 \u03c3\u03ba\u03bf\u03cd\u03c1\u03b1", - "iot_wash_lingerie": "\u0395\u03c3\u03ce\u03c1\u03bf\u03c5\u03c7\u03b1", - "iot_wash_masks_refresh": "\u03a6\u03c1\u03b5\u03c3\u03ba\u03ac\u03c1\u03b9\u03c3\u03bc\u03b1 \u03bc\u03b1\u03c3\u03ba\u03ce\u03bd", - "iot_wash_masks_sanification": "\u0391\u03c0\u03bf\u03bb\u03cd\u03bc\u03b1\u03bd\u03c3\u03b7 \u03bc\u03b1\u03c3\u03ba\u03ce\u03bd", - "iot_wash_masks_sanification_steam": "\u0391\u03c0\u03bf\u03bb\u03cd\u03bc\u03b1\u03bd\u03c3\u03b7 \u03bc\u03b1\u03c3\u03ba\u03ce\u03bd + \u0391\u03c4\u03bc\u03cc\u03c2", - "iot_wash_mats": "\u03a7\u03b1\u03bb\u03b9\u03ac", - "iot_wash_men_s_trousers": "\u03c0\u03b1\u03bd\u03c4\u03b5\u03bb\u03bf\u03bd\u03b9\u03b1", - "iot_wash_mixed": "\u039c\u03b9\u03ba\u03c4\u03ac", - "iot_wash_mixed_steam": "\u039c\u03b9\u03ba\u03c4\u03ac + \u0391\u03c4\u03bc\u03cc\u03c2", - "iot_wash_mix_and_coloured_44": "\u039c\u03b9\u03ba\u03c4\u03ac \u03ba\u03b1\u03b9 \u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac 44'", - "iot_wash_mix_and_coloured_59": "\u039c\u03b9\u03ba\u03c4\u03ac \u03ba\u03b1\u03b9 \u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac 59'", - "iot_wash_mix_and_coloured_xl": "\u039c\u03b9\u03ba\u03c4\u03ac \u03ba\u03b1\u03b9 \u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac XL", - "iot_wash_new_clothes": "\u039d\u03ad\u03b1 \u03c1\u03bf\u03cd\u03c7\u03b1", - "iot_wash_perfect_white": "\u03a4\u03ad\u03bb\u03b5\u03b9\u03bf \u03bb\u03b5\u03c5\u03ba\u03cc", - "iot_wash_perfect_white_steam": "\u03a4\u03ad\u03bb\u03b5\u03b9\u03bf \u03bb\u03b5\u03c5\u03ba\u03cc + \u0391\u03c4\u03bc\u03cc\u03c2", - "iot_wash_pets": "\u0391\u03be\u03b5\u03c3\u03bf\u03c5\u03ac\u03c1 \u03ba\u03b1\u03c4\u03bf\u03b9\u03ba\u03af\u03b4\u03b9\u03c9\u03bd", - "iot_wash_pets_hair_removal": "\u0391\u03c6\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 \u03c4\u03c9\u03bd \u03c4\u03c1\u03b9\u03c7\u03ce\u03bd \u03ba\u03b1\u03c4\u03bf\u03b9\u03ba\u03af\u03b4\u03b9\u03c9\u03bd \u03b6\u03ce\u03c9\u03bd", - "iot_wash_pets_odours_stains_removal": "\u0391\u03c6\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 \u03bf\u03c3\u03bc\u03ce\u03bd \u03ba\u03b1\u03b9 \u03bb\u03b5\u03ba\u03ad\u03b4\u03c9\u03bd \u03b1\u03c0\u03cc \u03c4\u03b1 \u03ba\u03b1\u03c4\u03bf\u03b9\u03ba\u03af\u03b4\u03b9\u03b1 \u03b6\u03ce\u03b1", - "iot_wash_pets_steam": "\u0391\u03be\u03b5\u03c3\u03bf\u03c5\u03ac\u03c1 \u03ba\u03b1\u03c4\u03bf\u03b9\u03ba\u03af\u03b4\u03b9\u03c9\u03bd", - "iot_wash_playsuits": "\u0391\u03b8\u03bb\u03b7\u03c4\u03b9\u03ba\u03ad\u03c2 \u03c6\u03cc\u03c1\u03bc\u03b5\u03c2", - "iot_wash_playsuits_steam": "\u0391\u03b8\u03bb\u03b7\u03c4\u03b9\u03ba\u03ad\u03c2 \u03c6\u03cc\u03c1\u03bc\u03b5\u03c2 + \u0391\u03c4\u03bc\u03cc\u03c2", - "iot_wash_quick_drum_cleaner": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf\u03c2 \u03ba\u03b1\u03b8\u03b1\u03c1\u03b9\u03c3\u03bc\u03cc\u03c2 \u03ba\u03ac\u03b4\u03bf\u03c5", - "iot_wash_rapid_14": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf 14\u2019", - "iot_wash_rapid_30": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf 30\u2019", - "iot_wash_rapid_44": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf 44'", - "iot_wash_rapid_59": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf 59'", - "iot_wash_rapid_59_steam": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf 59' + \u03b1\u03c4\u03bc\u03cc\u03c2", - "iot_wash_refresh_14_min": "\u0391\u03bd\u03b1\u03bd\u03ad\u03c9\u03c3\u03b7 14'", - "iot_wash_resistant_colored": "\u0391\u03bd\u03b8\u03b5\u03ba\u03c4\u03b9\u03ba\u03ac \u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac", - "iot_wash_resistant_dark": "\u0391\u03bd\u03b8\u03b5\u03ba\u03c4\u03b9\u03ba\u03ac \u03c3\u03ba\u03bf\u03cd\u03c1\u03b1", - "iot_wash_resistant_whites": "\u0391\u03bd\u03b8\u03b5\u03ba\u03c4\u03b9\u03ba\u03ac \u03bb\u03b5\u03c5\u03ba\u03ac", - "iot_wash_rinse": "\u039e\u03ad\u03c0\u03bb\u03c5\u03bc\u03b1", - "iot_wash_shirts": "\u03a0\u03bf\u03c5\u03ba\u03ac\u03bc\u03b9\u03c3\u03b1", - "iot_wash_shirts_steam": "\u03a0\u03bf\u03c5\u03ba\u03ac\u03bc\u03b9\u03c3\u03b1 + \u0391\u03c4\u03bc\u03cc\u03c2", - "iot_wash_silk": "\u039c\u03b5\u03c4\u03b1\u03be\u03c9\u03c4\u03ac", - "iot_wash_ski_suit": "\u03a3\u03c4\u03bf\u03bb\u03ad\u03c2 \u03c3\u03ba\u03b9", - "iot_wash_ski_suit_zelig": "\u03a3\u03c4\u03bf\u03bb\u03ad\u03c2 \u03c3\u03ba\u03b9", - "iot_wash_spin": "\u03a3\u03c4\u03cd\u03c8\u03b9\u03bc\u03bf", - "iot_wash_sport": "\u0391\u03b8\u03bb\u03b7\u03c4\u03b9\u03ba\u03ac", - "iot_wash_sport_anti_odor": "\u039a\u03b1\u03c4\u03ac \u03c4\u03b7\u03c2 \u03bf\u03c3\u03bc\u03ae\u03c2 \u03c4\u03c9\u03bd \u03b1\u03b8\u03bb\u03b7\u03c4\u03b9\u03ba\u03ce\u03bd \u03c1\u03bf\u03cd\u03c7\u03c9\u03bd", - "iot_wash_sport_anti_odor_zelig": "\u039a\u03b1\u03c4\u03ac \u03c4\u03b7\u03c2 \u03bf\u03c3\u03bc\u03ae\u03c2 \u03c4\u03c9\u03bd \u03b1\u03b8\u03bb\u03b7\u03c4\u03b9\u03ba\u03ce\u03bd \u03c1\u03bf\u03cd\u03c7\u03c9\u03bd", - "iot_wash_stains_remover": "\u0391\u03c6\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 \u03bb\u03b5\u03ba\u03ad\u03b4\u03c9\u03bd", - "iot_wash_swimsuits_and_bikinis": "\u039c\u03b1\u03b3\u03b9\u03cc", - "iot_wash_synthetic": "\u03a3\u03c5\u03bd\u03b8\u03b5\u03c4\u03b9\u03ba\u03ac", - "iot_wash_synthetic_steam": "\u03a3\u03c5\u03bd\u03b8\u03b5\u03c4\u03b9\u03ba\u03ac + \u0391\u03c4\u03bc\u03cc\u03c2", - "iot_wash_tablecloths": "\u03a4\u03c1\u03b1\u03c0\u03b5\u03b6\u03bf\u03bc\u03ac\u03bd\u03c4\u03b7\u03bb\u03b1", - "iot_wash_tablecloths_steam": "\u03a4\u03c1\u03b1\u03c0\u03b5\u03b6\u03bf\u03bc\u03ac\u03bd\u03c4\u03b7\u03bb\u03b1 + \u0391\u03c4\u03bc\u03cc\u03c2", - "iot_wash_technical_fabrics": "\u03a4\u03b5\u03c7\u03bd\u03b9\u03ba\u03ac \u03c5\u03c6\u03ac\u03c3\u03bc\u03b1\u03c4\u03b1", - "iot_wash_technical_fabrics_zelig": "\u03a4\u03b5\u03c7\u03bd\u03b9\u03ba\u03ac \u03c5\u03c6\u03ac\u03c3\u03bc\u03b1\u03c4\u03b1", - "iot_wash_technical_jackets": "\u03a4\u03b5\u03c7\u03bd\u03b9\u03ba\u03ac \u03bc\u03c0\u03bf\u03c5\u03c6\u03ac\u03bd", - "iot_wash_technical_jackets_zelig": "\u03a4\u03b5\u03c7\u03bd\u03b9\u03ba\u03ac \u03bc\u03c0\u03bf\u03c5\u03c6\u03ac\u03bd", - "iot_wash_trainers": "\u0391\u03b8\u03bb\u03b7\u03c4\u03b9\u03ba\u03ac \u03c0\u03b1\u03c0\u03bf\u03cd\u03c4\u03c3\u03b9\u03b1", - "iot_wash_whites": "\u039b\u03b5\u03c5\u03ba\u03ac", - "iot_wash_whites_44": "\u039b\u03b5\u03c5\u03ba\u03ac 44'", - "iot_wash_whites_59": "\u039b\u03b5\u03c5\u03ba\u03ac 59'", - "iot_wash_whites_xl": "\u039b\u03b5\u03c5\u03ba\u03ac XL", - "iot_wash_wine_stains": "\u039b\u03b5\u03ba\u03ad\u03b4\u03b5\u03c2 \u03ba\u03c1\u03b1\u03c3\u03b9\u03bf\u03cd", - "iot_wash_wool": "\u039c\u03ac\u03bb\u03bb\u03b9\u03bd\u03b1", - "jeans": "\u03a4\u03b6\u03b9\u03bd \u03c0\u03b1\u03bd\u03c4\u03b5\u03bb\u03bf\u03bd\u03b9\u03b1", - "jeans_60": "\u03c4\u03b6\u03b9\u03bd", - "low_dry": "\u039c\u03b9\u03ba\u03c4\u03ac \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", - "mixed": "\u039c\u03b9\u03ba\u03c4\u03ac", - "mixed_and_colored_59": "\u039c\u03b9\u03ba\u03c4\u03ac \u03ba\u03b1\u03b9 \u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac 59'", - "mixed_steam": "\u039c\u03b9\u03ba\u03c4\u03ac + \u0391\u03c4\u03bc\u03cc\u03c2", - "mix_and_colour_59": "\u039c\u0399\u039a\u03a4\u0391 + \u03a7\u03a1\u03a9\u039c\u0391\u03a4\u0399\u03a3\u03a4\u0391 59'", - "mix_and_colour_59_steam": "\u039c\u03b9\u03ba\u03c4\u03ac \u03ba\u03b1\u03b9 \u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac 59' + \u0391\u03c4\u03bc\u03cc\u03c2", - "night_and_day": "\u039d\u03cd\u03c7\u03c4\u03b1 \u03ba\u03b1\u03b9 \u03b7\u03bc\u03ad\u03c1\u03b1", - "night_wash": "\u039f\u03bb\u03bf\u03bd\u03cd\u03ba\u03c4\u03b9\u03bf\u03c2 \u03ba\u03cd\u03ba\u03bb\u03bf\u03c2", - "perfect_59": "\u03a4\u03ad\u03bb\u03b5\u03b9\u03bf 59'", - "perfect_cotton_59": "\u03a4\u0395\u039b\u0395\u0399\u0391 \u0392\u0391\u039c\u0392\u0391\u039a\u0395\u03a1\u0391 59'", - "perfect_cotton_59_steam": "\u03a4\u0395\u039b\u0395\u0399\u0391 \u0392\u0391\u039c\u0392\u0391\u039a\u0395\u03a1\u0391 59'", - "perfect_whites_59": "\u03c4\u03b5\u03bb\u03b5\u03b9\u03b1 \u03bb\u03b5\u03c5\u03ba\u03b1 59'", - "rapid_14_min": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf 14 \u03bb\u03b5\u03c0\u03c4\u03ce\u03bd", - "rapid_30_min": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf 30\u03bb\u03b5\u03c0.", - "rapid_44_min": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf 44\u03bb\u03b5\u03c0.", - "rapid_a_class_60": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf \u03ba\u03b1\u03c4\u03b7\u03b3\u03bf\u03c1\u03af\u03b1\u03c2 A 60", - "rapid_a_class_60_steam": "\u0393\u03c1\u03ae\u03b3\u03bf\u03c1\u03bf \u03ba\u03b1\u03c4\u03b7\u03b3\u03bf\u03c1\u03af\u03b1\u03c2 A 60 + \u03b1\u03c4\u03bc\u03cc\u03c2", - "rapid_wash_and_dry_59_min": "\u03a0\u03bb\u03cd\u03c3\u03b9\u03bc\u03bf \u03ba\u03b1\u03b9 \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1 59'.", - "resistant_cotton": "\u0392\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03cc", - "resistant_cotton_steam": "\u0392\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03cc + \u0391\u03c4\u03bc\u03cc\u03c2", - "rinse": "\u039e\u03ad\u03c0\u03bb\u03c5\u03bc\u03b1", - "shirts_steam": "\u03a0\u03bf\u03c5\u03ba\u03ac\u03bc\u03b9\u03c3\u03b1 + \u0391\u03c4\u03bc\u03cc\u03c2", - "silent_night": "\u039f\u03bb\u03bf\u03bd\u03cd\u03ba\u03c4\u03b9\u03bf\u03c2 \u03ba\u03cd\u03ba\u03bb\u03bf\u03c2", - "single_item": "\u0395\u03bd\u03b9\u03b1\u03af\u03bf \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf", - "single_item_steam": "\u0388\u03bd\u03b1 \u03c4\u03b5\u03bc\u03ac\u03c7\u03b9\u03bf + \u0391\u03c4\u03bc\u03cc\u03c2", - "smart_wash": "\u0388\u03be\u03c5\u03c0\u03bd\u03b7 \u03c0\u03bb\u03cd\u03c3\u03b7", - "soft_care": "\u0391\u03c0\u03b1\u03bb\u03ae \u03c6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1", + "iot_wash_delicate": "Ευαίσθητα", + "iot_wash_delicate_antiallergy": "Αντι-αλλεργικό για λιπαρές ουσίες", + "iot_wash_delicate_antiallergy_steam": "Αντι-αλλεργικό για λιπαρές ουσίες + Ατμός", + "iot_wash_delicate_antiallergy_zelig": "Αντι-αλλεργικό για λιπαρές ουσίες", + "iot_wash_delicate_colors": "Ευαίσθητα χρωματιστά", + "iot_wash_delicate_colors_steam": "Χρωματιστά + ατμός", + "iot_wash_delicate_dark": "Ευαίσθητα σκούρα", + "iot_wash_delicate_steam": "Ευαίσθητα + Ατμός", + "iot_wash_delicate_tablecloths": "Λεπτά τραπεζομάντιλα", + "iot_wash_delicate_tablecloths_steam": "Λεπτά τραπεζομάντιλα + Ατμός", + "iot_wash_delicate_whites": "Ευαίσθητα λευκά", + "iot_wash_denim_jeans": "Ντένιμ - τζιν", + "iot_wash_diving_suits": "Στολες κατάδυσης", + "iot_wash_diving_suits_zelig": "Στολες κατάδυσης", + "iot_wash_down_jackets": "Φουσκωτά μπουφάν", + "iot_wash_down_jackets_zelig": "Φουσκωτά μπουφάν", + "iot_wash_duvet": "Παπλώματα", + "iot_wash_fruit_stains": "Λεκέδες φρούτων", + "iot_wash_gym_fit": "Φόρμες - ρούχα γυμναστικής", + "iot_wash_handwash": "Πλύσιμο στο χέρι", + "iot_wash_handwash_colored": "Πλύσιμο στο χέρι χρωματιστά", + "iot_wash_handwash_dark": "Πλύσιμο στο χέρι σκούρα", + "iot_wash_lingerie": "Εσώρουχα", + "iot_wash_masks_refresh": "Φρεσκάρισμα μασκών", + "iot_wash_masks_sanification": "Απολύμανση μασκών", + "iot_wash_masks_sanification_steam": "Απολύμανση μασκών + Ατμός", + "iot_wash_mats": "Χαλιά", + "iot_wash_men_s_trousers": "παντελονια", + "iot_wash_mixed": "Μικτά", + "iot_wash_mixed_steam": "Μικτά + Ατμός", + "iot_wash_mix_and_coloured_44": "Μικτά και χρωματιστά 44'", + "iot_wash_mix_and_coloured_59": "Μικτά και χρωματιστά 59'", + "iot_wash_mix_and_coloured_xl": "Μικτά και χρωματιστά XL", + "iot_wash_new_clothes": "Νέα ρούχα", + "iot_wash_perfect_white": "Τέλειο λευκό", + "iot_wash_perfect_white_steam": "Τέλειο λευκό + Ατμός", + "iot_wash_pets": "Αξεσουάρ κατοικίδιων", + "iot_wash_pets_hair_removal": "Αφαίρεση των τριχών κατοικίδιων ζώων", + "iot_wash_pets_odours_stains_removal": "Αφαίρεση οσμών και λεκέδων από τα κατοικίδια ζώα", + "iot_wash_pets_steam": "Αξεσουάρ κατοικίδιων", + "iot_wash_playsuits": "Αθλητικές φόρμες", + "iot_wash_playsuits_steam": "Αθλητικές φόρμες + Ατμός", + "iot_wash_quick_drum_cleaner": "Γρήγορος καθαρισμός κάδου", + "iot_wash_rapid_14": "Γρήγορο 14’", + "iot_wash_rapid_30": "Γρήγορο 30’", + "iot_wash_rapid_44": "Γρήγορο 44'", + "iot_wash_rapid_59": "Γρήγορο 59'", + "iot_wash_rapid_59_steam": "Γρήγορο 59' + ατμός", + "iot_wash_refresh_14_min": "Ανανέωση 14'", + "iot_wash_resistant_colored": "Ανθεκτικά χρωματιστά", + "iot_wash_resistant_dark": "Ανθεκτικά σκούρα", + "iot_wash_resistant_whites": "Ανθεκτικά λευκά", + "iot_wash_rinse": "Ξέπλυμα", + "iot_wash_shirts": "Πουκάμισα", + "iot_wash_shirts_steam": "Πουκάμισα + Ατμός", + "iot_wash_silk": "Μεταξωτά", + "iot_wash_ski_suit": "Στολές σκι", + "iot_wash_ski_suit_zelig": "Στολές σκι", + "iot_wash_spin": "Στύψιμο", + "iot_wash_sport": "Αθλητικά", + "iot_wash_sport_anti_odor": "Κατά της οσμής των αθλητικών ρούχων", + "iot_wash_sport_anti_odor_zelig": "Κατά της οσμής των αθλητικών ρούχων", + "iot_wash_stains_remover": "Αφαίρεση λεκέδων", + "iot_wash_swimsuits_and_bikinis": "Μαγιό", + "iot_wash_synthetic": "Συνθετικά", + "iot_wash_synthetic_steam": "Συνθετικά + Ατμός", + "iot_wash_tablecloths": "Τραπεζομάντηλα", + "iot_wash_tablecloths_steam": "Τραπεζομάντηλα + Ατμός", + "iot_wash_technical_fabrics": "Τεχνικά υφάσματα", + "iot_wash_technical_fabrics_zelig": "Τεχνικά υφάσματα", + "iot_wash_technical_jackets": "Τεχνικά μπουφάν", + "iot_wash_technical_jackets_zelig": "Τεχνικά μπουφάν", + "iot_wash_trainers": "Αθλητικά παπούτσια", + "iot_wash_whites": "Λευκά", + "iot_wash_whites_44": "Λευκά 44'", + "iot_wash_whites_59": "Λευκά 59'", + "iot_wash_whites_xl": "Λευκά XL", + "iot_wash_wine_stains": "Λεκέδες κρασιού", + "iot_wash_wool": "Μάλλινα", + "jeans": "Τζιν παντελονια", + "jeans_60": "τζιν", + "low_dry": "Μικτά στέγνωμα", + "mixed": "Μικτά", + "mixed_and_colored_59": "Μικτά και χρωματιστά 59'", + "mixed_steam": "Μικτά + Ατμός", + "mix_and_colour_59": "ΜΙΚΤΑ + ΧΡΩΜΑΤΙΣΤΑ 59'", + "mix_and_colour_59_steam": "Μικτά και χρωματιστά 59' + Ατμός", + "night_and_day": "Νύχτα και ημέρα", + "night_wash": "Ολονύκτιος κύκλος", + "perfect_59": "Τέλειο 59'", + "perfect_cotton_59": "ΤΕΛΕΙΑ ΒΑΜΒΑΚΕΡΑ 59'", + "perfect_cotton_59_steam": "ΤΕΛΕΙΑ ΒΑΜΒΑΚΕΡΑ 59'", + "perfect_whites_59": "τελεια λευκα 59'", + "rapid_14_min": "Γρήγορο 14 λεπτών", + "rapid_30_min": "Γρήγορο 30λεπ.", + "rapid_44_min": "Γρήγορο 44λεπ.", + "rapid_a_class_60": "Γρήγορο κατηγορίας A 60", + "rapid_a_class_60_steam": "Γρήγορο κατηγορίας A 60 + ατμός", + "rapid_wash_and_dry_59_min": "Πλύσιμο και στέγνωμα 59'.", + "resistant_cotton": "Βαμβακερό", + "resistant_cotton_steam": "Βαμβακερό + Ατμός", + "rinse": "Ξέπλυμα", + "shirts_steam": "Πουκάμισα + Ατμός", + "silent_night": "Ολονύκτιος κύκλος", + "single_item": "Ενιαίο στοιχείο", + "single_item_steam": "Ένα τεμάχιο + Ατμός", + "smart_wash": "Έξυπνη πλύση", + "soft_care": "Απαλή φροντίδα", "soft_care_steam": "Soft Care + Steam", "soft_care_steam_title": "Soft Care + Steam", - "special_39": "E\u03b9\u03b4\u03b9\u03ba\u03bf\u03c2 39'", - "special_39_full_load": "E\u03b9\u03b4\u03b9\u03ba\u03bf\u03c2 39'", - "special_39_full_load_steam": "\u0395\u03b9\u03b4\u03b9\u03ba\u03cc 39' + \u0391\u03c4\u03bc\u03cc\u03c2", - "special_49": "\u0395\u03b9\u03b4\u03b9\u03ba\u03cc 49'", - "sport_39": "\u03a3\u03c0\u03bf\u03c1 39'", + "special_39": "Eιδικος 39'", + "special_39_full_load": "Eιδικος 39'", + "special_39_full_load_steam": "Ειδικό 39' + Ατμός", + "special_49": "Ειδικό 49'", + "sport_39": "Σπορ 39'", "sport_plus_29": "SPORT PLUS 39\"", "sport_plus_39": "SPORT PLUS 39'", - "steam_39": "\u0391\u03c4\u03bc\u03cc\u03c2 39'", + "steam_39": "Ατμός 39'", "steam_care_pro": "Steam Care Pro", - "steam_care_pro_cotton": "Steam Care Pro - \u0392\u03b1\u03bc\u03b2\u03b1\u03ba\u03b5\u03c1\u03ac", - "steam_care_pro_delicates": "Steam Care Pro - \u0395\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b1", - "steam_care_pro_synthetic": "Steam Care Pro - \u03a3\u03c5\u03bd\u03b8\u03b5\u03c4\u03b9\u03ba\u03ac", - "steam_hygiene_plus": "\u0391\u03c4\u03bc\u03cc\u03c2 \u03b3\u03b9\u03b1 \u03c0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03bf \u03c5\u03b3\u03b9\u03b5\u03b9\u03bd\u03cc \u03c6\u03b1\u03b3\u03b7\u03c4\u03cc ", - "synthetics": "\u03a3\u03c5\u03bd\u03b8\u03b5\u03c4\u03b9\u03ba\u03ac", - "synthetic_and_coloured": "\u03a3\u03c5\u03bd\u03b8\u03b5\u03c4\u03b9\u03ba\u03ac \u03ba\u03b1\u03b9 \u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac", - "synthetic_and_coloured_steam": "\u03a3\u03c5\u03bd\u03b8\u03b5\u03c4\u03b9\u03ba\u03ac \u03ba\u03b1\u03b9 \u03c7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ac + \u0391\u03c4\u03bc\u03cc\u03c2", + "steam_care_pro_cotton": "Steam Care Pro - Βαμβακερά", + "steam_care_pro_delicates": "Steam Care Pro - Ευαίσθητα", + "steam_care_pro_synthetic": "Steam Care Pro - Συνθετικά", + "steam_hygiene_plus": "Ατμός για περισσότερο υγιεινό φαγητό ", + "synthetics": "Συνθετικά", + "synthetic_and_coloured": "Συνθετικά και χρωματιστά", + "synthetic_and_coloured_steam": "Συνθετικά και χρωματιστά + Ατμός", "tailored_resistant_cotton": "Tailored Resistant Cotton", "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", - "total_care": "\u039f\u03bb\u03b9\u03ba\u03ae \u03c6\u03c1\u03bf\u03bd\u03c4\u03af\u03b4\u03b1", - "tumbling": "\u039a\u03b1\u03c4\u03c1\u03b1\u03ba\u03cd\u03bb\u03b9\u03c3\u03bc\u03b1", - "wool": "\u039c\u03ac\u03bb\u03bb\u03b9\u03bd\u03b1", - "wool_and_delicates_49": "\u03bc\u03b1\u03bb\u03bb\u03b9\u03bd\u03b1/\u03b5\u03c5\u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03b1 49'", - "wool_dry": "\u039c\u03ac\u03bb\u03bb\u03b9\u03bd\u03b1 \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", - "wool_soft_care": "\u03bc\u03b1\u03bb\u03bb\u03b9\u03bd\u03b1 & Soft Care" + "total_care": "Ολική φροντίδα", + "tumbling": "Κατρακύλισμα", + "wool": "Μάλλινα", + "wool_and_delicates_49": "μαλλινα/ευαισθητα 49'", + "wool_dry": "Μάλλινα στέγνωμα", + "wool_soft_care": "μαλλινα & Soft Care" }, - "name": "\u03a0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1" + "name": "Πρόγραμμα" }, "dry_levels": { "state": { - "0": "\u03a7\u03c9\u03c1\u03af\u03c2 \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", - "1": "\u03a3\u03b9\u03b4\u03ad\u03c1\u03c9\u03bc\u03b1", - "2": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1 \u03b3\u03b9\u03b1 \u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 ", - "3": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1 \u03b3\u03b9\u03b1 \u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 ", - "4": "\u0395\u03c0\u03b9\u03c0\u03bb\u03ad\u03bf\u03bd \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1", - "12": "\u03a3\u03b9\u03b4\u03ad\u03c1\u03c9\u03bc\u03b1", - "13": "\u03a3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1 \u03b3\u03b9\u03b1 \u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 ", - "14": "\u0395\u03c4\u03bf\u03b9\u03bc\u03bf \u03bd\u03b1 \u03c6\u03bf\u03c1\u03b5\u03b8\u03b5\u03af", - "15": "\u0395\u03c0\u03b9\u03c0\u03bb\u03ad\u03bf\u03bd \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1" + "0": "Χωρίς στέγνωμα", + "1": "Σιδέρωμα", + "2": "Στέγνωμα για Αποθήκευση ", + "3": "Στέγνωμα για Αποθήκευση ", + "4": "Επιπλέον στέγνωμα", + "12": "Σιδέρωμα", + "13": "Στέγνωμα για Αποθήκευση ", + "14": "Ετοιμο να φορεθεί", + "15": "Επιπλέον στέγνωμα" }, - "name": "\u0395\u03c0\u03af\u03c0\u03b5\u03b4\u03bf \u03c3\u03c4\u03b5\u03b3\u03bd\u03ce\u03bc\u03b1\u03c4\u03bf\u03c2" + "name": "Επίπεδο στεγνώματος" }, "spin_speed": { - "name": "\u03a3\u03c4\u03cd\u03c8\u03b9\u03bc\u03bf" + "name": "Στύψιμο" }, "temperature": { - "name": "\u0398\u03b5\u03c1\u03bc\u03bf\u03ba\u03c1\u03b1\u03c3\u03af\u03b1" + "name": "Θερμοκρασία" }, "dry_time": { - "name": "\u03a7\u03c1\u03cc\u03bd\u03bf\u03c2 \u03c3\u03c4\u03b5\u03b3\u03bd\u03ce\u03bc\u03b1\u03c4\u03bf\u03c2" + "name": "Χρόνος στεγνώματος" } }, "switch": { "anti_crease": { - "name": "\u039b\u03b9\u03b3\u03cc\u03c4\u03b5\u03c1\u03b5\u03c2 \u03b6\u03ac\u03c1\u03b5\u03c2" + "name": "Λιγότερες ζάρες" }, "add_dish": { "name": "" }, "eco_express": { - "name": "\u039f\u03b9\u03ba\u03bf\u03bb\u03bf\u03b3\u03b9\u03ba\u03cc" + "name": "Οικολογικό" }, "extra_dry": { - "name": "\u0395\u03c0\u03b9\u03c0\u03bb\u03ad\u03bf\u03bd \u03c3\u03c4\u03ad\u03b3\u03bd\u03c9\u03bc\u03b1" + "name": "Επιπλέον στέγνωμα" }, "half_load": { - "name": "\u039c\u03b9\u03c3\u03bf\u03b3\u03b5\u03bc\u03ac\u03c4\u03bf \u03c6\u03bf\u03c1\u03c4\u03af\u03bf" + "name": "Μισογεμάτο φορτίο" }, "open_door": { - "name": "\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03c0\u03cc\u03c1\u03c4\u03b1\u03c2" + "name": "Άνοιγμα πόρτας" }, "three_in_one": { - "name": "3 \u03c3\u03b5 1" + "name": "3 σε 1" }, "preheat": { - "name": "\u03a0\u03c1\u03bf\u03b8\u03ad\u03c1\u03bc\u03b1\u03bd\u03c3\u03b7" + "name": "Προθέρμανση" }, "dish_washer": { - "name": "\u03a0\u03bb\u03c5\u03bd\u03c4\u03ae\u03c1\u03b9\u03bf \u03c0\u03b9\u03ac\u03c4\u03c9\u03bd" + "name": "Πλυντήριο πιάτων" }, "tumble_dryer": { - "name": "\u03a3\u03c4\u03b5\u03b3\u03bd\u03c9\u03c4\u03ae\u03c1\u03b9\u03bf" + "name": "Στεγνωτήριο" }, "washing_machine": { - "name": "\u03a0\u03bb\u03c5\u03bd\u03c4\u03ae\u03c1\u03b9\u03bf" + "name": "Πλυντήριο" }, "washer_dryer": { - "name": "\u03a3\u03c4\u03b5\u03b3\u03bd\u03c9\u03c4\u03ae\u03c1\u03b9\u03bf" + "name": "Στεγνωτήριο" }, "oven": { - "name": "\u03a6\u03bf\u03cd\u03c1\u03bd\u03bf\u03c2" + "name": "Φούρνος" }, "prewash": { - "name": "\u03c0\u03c1\u03bf\u03c0\u03bb\u03c5\u03c3\u03b7" + "name": "προπλυση" }, "pause": { - "name": "\u03a0\u03b1\u03cd\u03c3\u03b7" + "name": "Παύση" }, "keep_fresh": { "name": "Keep Fresh" }, "delay_time": { - "name": "\u039a\u03b1\u03b8\u03c5\u03c3\u03c4\u03b5\u03c1\u03b7\u03bc\u03ad\u03bd\u03b7 \u03ad\u03bd\u03b1\u03c1\u03be\u03b7" + "name": "Καθυστερημένη έναρξη" } }, "binary_sensor": { "door_lock": { - "name": "\u039a\u03bb\u03b5\u03b9\u03b4\u03b1\u03c1\u03b9\u03ac \u03c4\u03b7\u03c2 \u03c0\u03cc\u03c1\u03c4\u03b1\u03c2" + "name": "Κλειδαριά της πόρτας" }, "extra_rinse_1": { - "name": "+1 \u039e\u03ad\u03b2\u03b3\u03b1\u03bb\u03bc\u03b1" + "name": "+1 Ξέβγαλμα" }, "extra_rinse_2": { - "name": "+2 \u039e\u03b5\u03b2\u03b3\u03ac\u03bb\u03bc\u03b1\u03c4\u03b1" + "name": "+2 Ξεβγάλματα" }, "extra_rinse_3": { - "name": "+3 \u039e\u03b5\u03b2\u03b3\u03ac\u03bb\u03bc\u03b1\u03c4\u03b1" + "name": "+3 Ξεβγάλματα" }, "good_night": { - "name": "\u039a\u03b1\u03bb\u03b7\u03bd\u03c5\u03c7\u03c4\u03b1" + "name": "Καληνυχτα" }, "anti_crease": { - "name": "\u039b\u03b9\u03b3\u03cc\u03c4\u03b5\u03c1\u03b5\u03c2 \u03b6\u03ac\u03c1\u03b5\u03c2" + "name": "Λιγότερες ζάρες" }, "aqua_plus": { - "name": "Acquaplus (\u03c0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7 \u03bd\u03b5\u03c1\u03bf\u03cd)" + "name": "Acquaplus (προσθήκη νερού)" }, "spin_speed": { - "name": "\u03a3\u03c4\u03cd\u03c8\u03b9\u03bc\u03bf" + "name": "Στύψιμο" }, "programs_dw": { - "name": "\u03a0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1" + "name": "Πρόγραμμα" }, "programs_ih": { - "name": "\u03a0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1" + "name": "Πρόγραμμα" }, "programs_ov": { - "name": "\u03a0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1" + "name": "Πρόγραμμα" }, "programs_td": { - "name": "\u03a0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1" + "name": "Πρόγραμμα" }, "programs_wm": { - "name": "\u03a0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1" + "name": "Πρόγραμμα" }, "still_hot": { - "name": "\u0391\u03ba\u03cc\u03bc\u03b1 \u03b6\u03b5\u03c3\u03c4\u03cc" + "name": "Ακόμα ζεστό" }, "pan_status": { - "name": "\u03a4\u03b7\u03b3\u03ac\u03bd\u03b9" + "name": "Τηγάνι" }, "remote_control": { - "name": "\u03a4\u03b7\u03bb\u03b5\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae\u03c1\u03b9\u03bf" + "name": "Τηλεχειριστήριο" }, "rinse_aid": { - "name": "\u0395\u03c0\u03af\u03c0\u03b5\u03b4\u03bf \u03bb\u03b1\u03bc\u03c0\u03c1\u03c5\u03bd\u03c4\u03b9\u03ba\u03bf\u03cd" + "name": "Επίπεδο λαμπρυντικού" }, "salt_level": { - "name": "\u0395\u03c0\u03af\u03c0\u03b5\u03b4\u03bf \u03b1\u03bb\u03b1\u03c4\u03b9\u03bf\u03cd" + "name": "Επίπεδο αλατιού" }, "door_open": { - "name": "\u03a0\u03cc\u03c1\u03c4\u03b1 \u03b1\u03bd\u03bf\u03b9\u03c7\u03c4\u03ae" + "name": "Πόρτα ανοιχτή" }, "connection": { - "name": "\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae\u03c2" + "name": "Σύνδεση συσκευής" }, "child_lock": { - "name": "\u039a\u03bb\u03b5\u03af\u03b4\u03c9\u03bc\u03b1 \u03b3\u03b9\u03b1 \u03c0\u03b1\u03b9\u03b4\u03b9\u03ac" + "name": "Κλείδωμα για παιδιά" }, "on": { - "name": "\u0395\u03bd\u03b5\u03c1\u03b3\u03cc" + "name": "Ενεργό" }, "prewash": { - "name": "\u03c0\u03c1\u03bf\u03c0\u03bb\u03c5\u03c3\u03b7" + "name": "προπλυση" } }, "number": { "power_management": { - "name": "\u0394\u03b9\u03b1\u03c7\u03b5\u03af\u03c1\u03b9\u03c3\u03b7 \u03b5\u03bd\u03ad\u03c1\u03b3\u03b5\u03b9\u03b1\u03c2" + "name": "Διαχείριση ενέργειας" }, "temperature": { - "name": "\u0398\u03b5\u03c1\u03bc\u03bf\u03ba\u03c1\u03b1\u03c3\u03af\u03b1" + "name": "Θερμοκρασία" }, "delay_time": { - "name": "\u039a\u03b1\u03b8\u03c5\u03c3\u03c4\u03b5\u03c1\u03b7\u03bc\u03ad\u03bd\u03b7 \u03ad\u03bd\u03b1\u03c1\u03be\u03b7" + "name": "Καθυστερημένη έναρξη" }, "water_hard": { - "name": "\u03a3\u03ba\u03bb\u03b7\u03c1\u03cc\u03c4\u03b7\u03c4\u03b1 \u03bd\u03b5\u03c1\u03bf\u03cd" + "name": "Σκληρότητα νερού" }, "program_duration": { - "name": "\u0394\u03b9\u03ac\u03c1\u03ba\u03b5\u03b9\u03b1 \u03c0\u03c1\u03bf\u03b3\u03c1\u03ac\u03bc\u03bc\u03b1\u03c4\u03bf\u03c2" + "name": "Διάρκεια προγράμματος" }, "target_temperature": { - "name": "\u03a3\u03c4\u03bf\u03c7\u03b5\u03c5\u03bc\u03ad\u03bd\u03b7 \u03b8\u03b5\u03c1\u03bc\u03bf\u03ba\u03c1\u03b1\u03c3\u03af\u03b1" + "name": "Στοχευμένη θερμοκρασία" }, "rinse_iterations": { - "name": "\u0391\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2 \u03be\u03b5\u03c0\u03bb\u03c5\u03bc\u03ac\u03c4\u03c9\u03bd" + "name": "Αριθμός ξεπλυμάτων" }, "wash_time": { - "name": "\u03a7\u03c1\u03cc\u03bd\u03bf\u03c2 \u03c0\u03bb\u03cd\u03c3\u03b7\u03c2" + "name": "Χρόνος πλύσης" }, "dry_time": { - "name": "\u03a7\u03c1\u03cc\u03bd\u03bf\u03c2 \u03c3\u03c4\u03b5\u03b3\u03bd\u03ce\u03bc\u03b1\u03c4\u03bf\u03c2" + "name": "Χρόνος στεγνώματος" } }, "button": { "induction_hob": { - "name": "\u0395\u03c0\u03b1\u03b3\u03c9\u03b3\u03b9\u03ba\u03ae \u03b5\u03c3\u03c4\u03af\u03b1" + "name": "Επαγωγική εστία" } } } diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 0c40ca4..f4b385e 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -293,29 +293,29 @@ "auto_rapid": "Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Auto Universal 50 - 60\u00b0C", - "auto_universal_plus": "Auto Universal+ 65 - 75\u00b0C", - "auto_universal_plus_soil": "Auto Universal+ 65 - 75\u00b0C", - "auto_universal_soil": "Auto Universal 50 - 60\u00b0C", + "auto_universal": "Auto Universal 50 - 60°C", + "auto_universal_plus": "Auto Universal+ 65 - 75°C", + "auto_universal_plus_soil": "Auto Universal+ 65 - 75°C", + "auto_universal_soil": "Auto Universal 50 - 60°C", "auto_wash": "Auto Wash", "auto_wash_soil": "Auto Wash", - "classe_a_59": "A Wash 59' 65\u00b0C", - "delicate": "Delicate 45\u00b0C", + "classe_a_59": "A Wash 59' 65°C", + "delicate": "Delicate 45°C", "dishwasher_care": "Limescale cleaning", "eco": "Eco", - "eco_asynch": "Eco 45\u00b0C", - "eco_bldc": "Eco 45\u00b0C", - "eco_synch": "Eco 45\u00b0C", + "eco_asynch": "Eco 45°C", + "eco_bldc": "Eco 45°C", + "eco_synch": "Eco 45°C", "gentle_wash": "Gentle wash", "glass": "Glass", - "glassware": "Glassware 45\u00b0C", + "glassware": "Glassware 45°C", "glass_care": "Glass Care", "hygiene": "Hygiene", - "hygiene_plus": "Hygiene+ 75\u00b0C", + "hygiene_plus": "Hygiene+ 75°C", "intensive": "Intensive ", "intensive_rapid": "Intensive Rapid", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Auto Universal 50 - 60\u00b0C", + "iot_auto_universal_soil": "Auto Universal 50 - 60°C", "iot_auto_wash_soil": "Auto Wash", "iot_baby_care": "Baby Care", "iot_breakfast": "Breakfast", @@ -326,13 +326,13 @@ "iot_cocktail_glasses_soil": "Coktail Glasses", "iot_daily_care": "Daily Care", "iot_daily_care_soil": "Daily Care", - "iot_delicate": "Delicate 45\u00b0C", + "iot_delicate": "Delicate 45°C", "iot_dinner_for_two": "Dinner for 2", "iot_dinner_for_two_soil": "Dinner for 2", "iot_dreft_quick_cycle": "Dreft Quick", - "iot_eco_asynch": "Eco 45\u00b0C", - "iot_eco_bldc": "Eco 45\u00b0C", - "iot_eco_synch": "Eco 45\u00b0C", + "iot_eco_asynch": "Eco 45°C", + "iot_eco_bldc": "Eco 45°C", + "iot_eco_synch": "Eco 45°C", "iot_extra_hygiene": "Extra Hygiene", "iot_fairy_quick_cycle": "Fairy Short", "iot_happy_hour": "Happy Hour", @@ -348,23 +348,23 @@ "iot_prewash": "Pre-wash ", "iot_pyrex_and_glassware": "Pyrex & Glassware", "iot_rapid_29": "Rapid 29'", - "iot_rapid_39": "Rapid 39' 60\u00b0C", + "iot_rapid_39": "Rapid 39' 60°C", "iot_single": "Single", - "iot_steam": "Steam 75\u00b0C", + "iot_steam": "Steam 75°C", "iot_super_flash": "Super Flash", "iot_super_wash": "Super Wash", "iot_turbopower": "TurboPower", - "iot_universal": "Universal 60\u00b0C", + "iot_universal": "Universal 60°C", "iot_wok_grids_maxi_pans": "Special Pans (Wok, Grids & Maxi Pans)", "iot_wok_grids_maxi_pans_soil": "Special Pans (Wok, Grids & Maxi Pans)", "iot_yes_quick_cycle": "Yes Quick", - "night": "Night 55\u00b0C", + "night": "Night 55°C", "prewash": "Pre-wash ", "rapid_20": "Rapid 20'", "rapid_24": "Rapid 24'", - "rapid_29": "Rapid 29' 50\u00b0C", + "rapid_29": "Rapid 29' 50°C", "rapid_35": "Wash&Dry 35'", - "rapid_39": "Rapid 39' 60\u00b0C", + "rapid_39": "Rapid 39' 60°C", "rapid_49": "Rapid 49'", "rapid_59": "Rapid 59'", "sanitising": "Sanitising", @@ -376,13 +376,13 @@ "smart_ai_rapid": "Smart AI Rapid", "special": "Special", "special_pw_prz": "Special", - "steam": "Steam 75\u00b0C", - "steam_plus": "Steam Plus 75\u00b0C", - "total_care": "Total Care 50\u00b0C", - "ultra_silence": "Ultra Silence 55\u00b0C", - "ultra_silent": "Ultra Silent 55\u00b0C", - "universal": "Universal 60\u00b0C", - "universal_plus": "Universal Plus 70\u00b0C", + "steam": "Steam 75°C", + "steam_plus": "Steam Plus 75°C", + "total_care": "Total Care 50°C", + "ultra_silence": "Ultra Silence 55°C", + "ultra_silent": "Ultra Silent 55°C", + "universal": "Universal 60°C", + "universal_plus": "Universal Plus 70°C", "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, @@ -476,7 +476,6 @@ "super_grill": "Super Grill", "tailor_bake": "Tailor bake", "tailor_bake_cata": "Tailor Bake", - "tailor_bake_desctiption": "This function is ideal to keep food soft inside and crunchy outside. This function reduces the amount of fat or oil required, for a healthy diet. The combination of heating elements with a pulsating cycle of air ensures even baking results.", "tailor_bake_pyro": "Tailor Bake", "vegetables": "Vegetables", "vegetables_cata": "Vegetables", @@ -626,8 +625,8 @@ }, "programs_wm": { "state": { - "20_degrees_coloured_cottons": "20\u00b0 Colored and Cottons", - "20_degrees_new_energy_label": "20\u00b0C", + "20_degrees_coloured_cottons": "20° Colored and Cottons", + "20_degrees_new_energy_label": "20°C", "active_steam": "Steam", "active_wash": "Active Wash", "active_wash_steam": "Active Wash + Steam", @@ -638,7 +637,7 @@ "all_in_one_59_steam": "Active Wash + Steam", "autocare": "Autocare", "autoclean": "Drum Cleaning", - "baby_60": "All Baby 60\u00b0C", + "baby_60": "All Baby 60°C", "care_14": "Rapid Care 14'", "care_30": "Rapid Care 30'", "care_44": "Rapid Care 44'", @@ -664,7 +663,7 @@ "fresh_care_steam": "Fresh Care + Steam", "handwash_wool": "Hand Wash + Wool", "high_dry": "High Heat Dry", - "hqd_20_degrees": "Cotton 20\u2103", + "hqd_20_degrees": "Cotton 20℃", "hqd_allergy": "Allergy Care", "hqd_autoclean": "Drum Cleaning", "hqd_babycare": "Baby Care", @@ -691,13 +690,13 @@ "hqd_super_fast": "Super Fast 39'", "hqd_synthetic_and_coloured": "Synthetics", "hygiene_59": "Hygiene Plus 59'", - "hygiene_60": "Hygiene 60\u00b0C", + "hygiene_60": "Hygiene 60°C", "hygiene_plus_59": "Hygiene Plus 59'", "hygiene_plus_59_min": "Hygiene Plus 59'", "hygiene_pro_49_min": "Hygiene Pro 49'", "hygiene_pro_steam": "Hygiene Pro + Steam", - "intensive_40": "Intensive 40\u00b0C", - "intensive_40_steam": "Intensive 40\u00b0C + Steam", + "intensive_40": "Intensive 40°C", + "intensive_40_steam": "Intensive 40°C + Steam", "iot_active_steam": "Steam", "iot_active_wash_steam": "Active Wash + Steam", "iot_allergy_care_pro": "Allergy Care Pro", @@ -737,7 +736,7 @@ "iot_easy_iron": "Easy Iron", "iot_fresh_care_steam": "Fresh Care + Steam", "iot_hygiene_pro_steam": "Hygiene Pro + Steam", - "iot_intensive_40_steam": "Intensive 40\u00b0C + Steam", + "iot_intensive_40_steam": "Intensive 40°C + Steam", "iot_mixed_steam": "Mixed + Steam", "iot_mix_and_colour_59_steam": "Mixed and Coloured 59' + Steam", "iot_perfect_cotton_59_steam": "Perfect Cotton 59' + Steam", @@ -840,8 +839,8 @@ "iot_wash_playsuits": "Playsuits", "iot_wash_playsuits_steam": "Playsuits + Steam", "iot_wash_quick_drum_cleaner": "Quick drum cleaner", - "iot_wash_rapid_14": "Rapid 14\u2019", - "iot_wash_rapid_30": "Rapid 30\u2019", + "iot_wash_rapid_14": "Rapid 14’", + "iot_wash_rapid_30": "Rapid 30’", "iot_wash_rapid_44": "Rapid 44'", "iot_wash_rapid_59": "Rapid 59'", "iot_wash_rapid_59_steam": "Rapid 59' + Steam", diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index f51cea8..4b46965 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -96,13 +96,13 @@ "name": "Temperatura" }, "water_efficiency": { - "name": "Eficiencia h\u00eddrica" + "name": "Eficiencia hídrica" }, "water_saving": { "name": "Ahorro de agua" }, "duration": { - "name": "Duraci\u00f3n" + "name": "Duración" }, "target_temperature": { "name": "Temperatura deseada" @@ -126,13 +126,13 @@ "name": "Capacidad de carga" }, "energy_label": { - "name": "Eficiencia energ\u00e9tica" + "name": "Eficiencia energética" }, "det_dust": { "name": "Polvo" }, "det_liquid": { - "name": "L\u00edquido" + "name": "Líquido" }, "errors": { "name": "Error" @@ -144,101 +144,101 @@ "name": "Ciclos Total" }, "energy_total": { - "name": "Consumo de energ\u00eda Total" + "name": "Consumo de energía Total" }, "water_total": { - "name": "Eficiencia h\u00eddrica Total" + "name": "Eficiencia hídrica Total" }, "energy_current": { - "name": "Consumo de energ\u00eda Actual" + "name": "Consumo de energía Actual" }, "water_current": { - "name": "Eficiencia h\u00eddrica Actual" + "name": "Eficiencia hídrica Actual" } }, "select": { "programs_dw": { "state": { - "59_min": "R\u00e1pido 59'", + "59_min": "Rápido 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", "auto_plus": "AutoPlus", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Auto Universal 50 - 60\u00b0C", - "auto_universal_plus": "Auto Universal Plus 65 - 75\u00b0C", - "auto_universal_plus_soil": "Auto Universal Plus 65 - 75\u00b0C", - "auto_universal_soil": "Auto Universal 50 - 60\u00b0C", - "auto_wash": "Lavado autom\u00e1tico", - "auto_wash_soil": "Lavado autom\u00e1tico", - "classe_a_59": "Clase A 59' 65\u00b0C", - "delicate": "Delicado 45\u00b0C", + "auto_universal": "Auto Universal 50 - 60°C", + "auto_universal_plus": "Auto Universal Plus 65 - 75°C", + "auto_universal_plus_soil": "Auto Universal Plus 65 - 75°C", + "auto_universal_soil": "Auto Universal 50 - 60°C", + "auto_wash": "Lavado automático", + "auto_wash_soil": "Lavado automático", + "classe_a_59": "Clase A 59' 65°C", + "delicate": "Delicado 45°C", "dishwasher_care": "Ciclo de limpieza antical", "eco": "Eco", - "eco_asynch": "Eco 45\u00b0C", - "eco_bldc": "Eco 45\u00b0C", - "eco_synch": "Eco 45\u00b0C", + "eco_asynch": "Eco 45°C", + "eco_bldc": "Eco 45°C", + "eco_synch": "Eco 45°C", "gentle_wash": "Gentle wash", "glass": "Cristal", - "glassware": "Cristal 45 \u00b0C", + "glassware": "Cristal 45 °C", "glass_care": "Glass Care", "hygiene": "Higiene", - "hygiene_plus": "Higiene+ 75 \u00b0C", + "hygiene_plus": "Higiene+ 75 °C", "intensive": "Intensivo ", - "intensive_rapid": "Fuerte r\u00e1pido", + "intensive_rapid": "Fuerte rápido", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Auto Universal 50 - 60\u00b0C", - "iot_auto_wash_soil": "Lavado autom\u00e1tico", + "iot_auto_universal_soil": "Auto Universal 50 - 60°C", + "iot_auto_wash_soil": "Lavado automático", "iot_baby_care": "Baby Care", "iot_breakfast": "Desayuno", - "iot_checkup": "Revisi\u00f3n", + "iot_checkup": "Revisión", "iot_china_crystals": "Cristal", - "iot_classe_a_59": "R\u00e1pido 59'", - "iot_cocktail_glasses": "Copas de c\u00f3ctel", - "iot_cocktail_glasses_soil": "Copas de c\u00f3ctel", + "iot_classe_a_59": "Rápido 59'", + "iot_cocktail_glasses": "Copas de cóctel", + "iot_cocktail_glasses_soil": "Copas de cóctel", "iot_daily_care": "Diario", "iot_daily_care_soil": "Diario", - "iot_delicate": "Delicado 45\u00b0C", + "iot_delicate": "Delicado 45°C", "iot_dinner_for_two": "Cena para 2", "iot_dinner_for_two_soil": "Cena para 2", "iot_dreft_quick_cycle": "Dreft Quick", - "iot_eco_asynch": "Eco 45\u00b0C", - "iot_eco_bldc": "Eco 45\u00b0C", - "iot_eco_synch": "Eco 45\u00b0C", + "iot_eco_asynch": "Eco 45°C", + "iot_eco_bldc": "Eco 45°C", + "iot_eco_synch": "Eco 45°C", "iot_extra_hygiene": "Ciclo Higienizante", "iot_fairy_quick_cycle": "Fairy Quick", "iot_happy_hour": "Happy Hour", "iot_jar_quick_cycle": "Jar Quick", "iot_party": "Party", "iot_party_soil": "Party", - "iot_pizza_menu": "Pizza Men\u00fa", - "iot_pizza_menu_soil": "Pizza Men\u00fa", - "iot_plastic_tupperware": "Pl\u00e1stico y Tupperware", + "iot_pizza_menu": "Pizza Menú", + "iot_pizza_menu_soil": "Pizza Menú", + "iot_plastic_tupperware": "Plástico y Tupperware", "iot_porcelain": "Porcelana", "iot_power_mix_wash": "Power Mix Wash", "iot_power_mix_wash_soil": "Power Mix Wash", "iot_prewash": "Pre-lavado", "iot_pyrex_and_glassware": "Pyrex & Glassware", "iot_rapid_29": "Rapido 29'", - "iot_rapid_39": "R\u00e1pido 39' 60\u00b0C", + "iot_rapid_39": "Rápido 39' 60°C", "iot_single": "Solo para 1", - "iot_steam": "Vapor 75 \u00b0C", + "iot_steam": "Vapor 75 °C", "iot_super_flash": "Super Flash", "iot_super_wash": "Lavado Super", "iot_turbopower": "TurboPower", - "iot_universal": "Universal 60 \u00b0C", + "iot_universal": "Universal 60 °C", "iot_wok_grids_maxi_pans": "Especial Ollas (Wok - Parrilas y Ollas)", "iot_wok_grids_maxi_pans_soil": "Especial Ollas (Wok - Parrilas y Ollas)", "iot_yes_quick_cycle": "Yes Quick", - "night": "Ultra Silencioso 55\u00b0C", + "night": "Ultra Silencioso 55°C", "prewash": "Pre-lavado", - "rapid_20": "R\u00e1pido 20'", + "rapid_20": "Rápido 20'", "rapid_24": "Rapido 24'", - "rapid_29": "Rapido 29' 50\u00b0C", + "rapid_29": "Rapido 29' 50°C", "rapid_35": "Wash&Dry 35'", - "rapid_39": "R\u00e1pido 39' 60\u00b0C", - "rapid_49": "R\u00e1pido 49'", - "rapid_59": "R\u00e1pido 59'", + "rapid_39": "Rápido 39' 60°C", + "rapid_49": "Rápido 49'", + "rapid_59": "Rápido 59'", "sanitising": "Higienizante", "silence": "Silence", "silent": "Noche", @@ -246,13 +246,13 @@ "smart_ai": "Smart AI", "special": "Especial", "special_pw_prz": "Especial", - "steam": "Vapor 75 \u00b0C", - "steam_plus": "Vapor Plus 75 \u00b0C", - "total_care": "Total Care 50\u00b0C", - "ultra_silence": "Ultra Silencioso 55\u00b0C", - "ultra_silent": "Ultra Silencioso 55\u00b0C", - "universal": "Universal 60 \u00b0C", - "universal_plus": "Universal Plus 70 \u00b0C", + "steam": "Vapor 75 °C", + "steam_plus": "Vapor Plus 75 °C", + "total_care": "Total Care 50°C", + "ultra_silence": "Ultra Silencioso 55°C", + "ultra_silent": "Ultra Silencioso 55°C", + "universal": "Universal 60 °C", + "universal_plus": "Universal Plus 70 °C", "zoom_39": "Zoom 39 min" }, "name": "Programa" @@ -265,12 +265,12 @@ "iot_special_boiled_rice": "Arroz hervido", "iot_special_chicken_breast": "Pechuga de pollo", "iot_special_chicken_legs": "Muslos de pollo", - "iot_special_chocolate_pudding": "Pud\u00edn de chocolate", + "iot_special_chocolate_pudding": "Pudín de chocolate", "iot_special_entrecote": "Entrecot", - "iot_special_fresh_tuna": "At\u00fan fresco", + "iot_special_fresh_tuna": "Atún fresco", "iot_special_grilled_vegetables": "Verduras a la parrilla", "iot_special_lamb_cutlet": "Chuletillas de cordero", - "iot_special_meatballs": "Alb\u00f3ndigas", + "iot_special_meatballs": "Albóndigas", "iot_special_minestrone": "Minestrone", "iot_special_mussels": "Mejillones", "iot_special_omelette": "Tortilla", @@ -282,7 +282,7 @@ "iot_special_prawns": "Gambas", "iot_special_quinoa": "Quinoa", "iot_special_ratatouille": "Pisto", - "iot_special_salmon_fillet": "Filete de salm\u00f3n", + "iot_special_salmon_fillet": "Filete de salmón", "iot_special_saute_potatoes": "Patatas salteadas", "iot_special_scallops": "Vieiras", "iot_special_scrambled_eggs": "Huevos revueltos", @@ -290,7 +290,7 @@ "iot_special_veggy_noodles": "Fideos con verdura", "iot_special_white_fish_fillet": "Filete de pescado blanco", "iot_standard_boiling": "Hervir", - "iot_standard_frying": "Fre\u00edr", + "iot_standard_frying": "Freír", "iot_standard_keep_warm": "Keep Warm", "iot_standard_melting": "Fundir", "iot_standard_simmering": "Cocer a fuego lento" @@ -299,18 +299,18 @@ }, "programs_ov": { "state": { - "bakery": "Pasta y Panader\u00eda", + "bakery": "Pasta y Panadería", "bakery_steam": "Pan al vapor", "bottom_heating": "Calentamiento Inferior", "bottom_heating_fan": "Calentamiento Inferior + Ventilador", "bread": "Pan", - "bread_steam": "Boller\u00eda al vapor", - "convection_fan": "Convecci\u00f3n + Ventilador", - "convection_fan_turnspit": "Convecci\u00f3n + Ventilador + Rustepollos", - "conventional": "Convecci\u00f3n", - "conventional_turnspit": "Convecci\u00f3n + Rustepollos", - "defrost": "Descongelaci\u00f3n", - "descaling": "Descalcificaci\u00f3n", + "bread_steam": "Bollería al vapor", + "convection_fan": "Convección + Ventilador", + "convection_fan_turnspit": "Convección + Ventilador + Rustepollos", + "conventional": "Convección", + "conventional_turnspit": "Convección + Rustepollos", + "defrost": "Descongelación", + "descaling": "Descalcificación", "fish": "Pescado", "fish_steam": "Pescado al vapor", "grill_cata": "Grill", @@ -320,29 +320,28 @@ "h20_clean": "H2O-Clean", "iot_bread": "Pan", "iot_h20_clean": "h2O clean", - "leavening": "Fermentaci\u00f3n", - "low_temp_cooking": "Cocci\u00f3n a baja temperatura", - "low_temp_cooking_fish": "Cocci\u00f3n a baja temperatura - Pescado", - "low_temp_cooking_fish_steam": "Cocci\u00f3n al vapor a baja temperatura - Pescado", - "low_temp_cooking_meat": "Cocci\u00f3n a baja temperatura - Carne", - "low_temp_cooking_meat_steam": "Cocci\u00f3n al vapor a baja temperatura - Carne", - "low_temp_cooking_steam": "Cocci\u00f3n al vapor a baja temperatura", + "leavening": "Fermentación", + "low_temp_cooking": "Cocción a baja temperatura", + "low_temp_cooking_fish": "Cocción a baja temperatura - Pescado", + "low_temp_cooking_fish_steam": "Cocción al vapor a baja temperatura - Pescado", + "low_temp_cooking_meat": "Cocción a baja temperatura - Carne", + "low_temp_cooking_meat_steam": "Cocción al vapor a baja temperatura - Carne", + "low_temp_cooking_steam": "Cocción al vapor a baja temperatura", "meat": "Carne", "meat_steam": "Carne al vapor", - "multi_level": "M\u00faltiples niveles", + "multi_level": "Múltiples niveles", "paella": "Paella", - "pasta_and_bakery": "Pasta y Panader\u00eda", + "pasta_and_bakery": "Pasta y Panadería", "pizza": "Pizza", - "pyrolysis": "Pir\u00f3lisis", - "pyrolysis_plus": "Pir\u00f3lisis +", + "pyrolysis": "Pirólisis", + "pyrolysis_plus": "Pirólisis +", "red_meat": "Carne roja", "red_meat_steam": "Carne roja al vapor", - "regenerate": "Regeneraci\u00f3n", + "regenerate": "Regeneración", "soft_plus": "Soft+", "super_grill": "Super Grill", "tailor_bake": "Tailor bake", "tailor_bake_cata": "Tailor Bake", - "tailor_bake_desctiption": "Esta funci\u00f3n es ideal para mantener la comida blanda por dentro y crujiente por fuera.\r\r\r\nEsta funci\u00f3n reduce la cantidad de grasa o aceite requeridos, para una dieta saludable.\r\r\r\nLa combinaci\u00f3n de elementos de calentamiento con un ciclo de aire intermitente garantiza un horneado uniforme.", "tailor_bake_pyro": "Tailor Bake", "vegetables": "Verduras", "vegetables_cata": "Verduras", @@ -356,13 +355,13 @@ "programs_td": { "state": { "active_dry": "Secado activo", - "allergy_care": "Antialerg\u00e9nico", + "allergy_care": "Antialergénico", "all_in_one": "All in One", - "antiallergy": "Antialerg\u00e9nico", + "antiallergy": "Antialergénico", "anti_odours": "Anti-olor", "auto_care": "Autocuidado", "baby": "Baby", - "bed_quilt": "Edred\u00f3n", + "bed_quilt": "Edredón", "care_30": "Cuidado 30", "care_45": "Cuidado 45", "care_59": "Cuidado 59", @@ -371,9 +370,9 @@ "daily_perfect_59_min": "DIARIO PERFECTO 59'", "darks_and_coloured": "Oscuro & Color", "delicates": "Delicados", - "duvet": "Edred\u00f3n", - "eco": "Algod\u00f3n Eco", - "ecospeed_cottons": "Ecospeed Algod\u00f3n", + "duvet": "Edredón", + "eco": "Algodón Eco", + "ecospeed_cottons": "Ecospeed Algodón", "ecospeed_delicates": "Ecospeed Delicados", "ecospeed_mixed": "Ecospeed Mixtos", "extra_hygiene": "Higiene Extra", @@ -382,17 +381,17 @@ "genius": "Genius", "hqd_baby_care": "Baby Care", "hqd_bath_towel": "Toallas", - "hqd_bed_sheets": "S\u00e1banas", + "hqd_bed_sheets": "Sábanas", "hqd_bulky": "Objetos voluminosos", "hqd_casual": "Casual", "hqd_cold_wind_30": "Brisa fresca 30 minutos", "hqd_cold_wind_timing": "Brisa fresca ", - "hqd_cotton": "Algod\u00f3n", + "hqd_cotton": "Algodón", "hqd_curtain": "Cortinas", "hqd_delicate": "Ropa delicada", - "hqd_diaper": "Pa\u00f1ales", + "hqd_diaper": "Pañales", "hqd_duvet": "Edredones", - "hqd_feather": "Plum\u00edferos", + "hqd_feather": "Plumíferos", "hqd_hot_wind_timing": "Aire caliente", "hqd_hygienic": "Higienizar", "hqd_i_refresh": "I-Refresh", @@ -404,9 +403,9 @@ "hqd_night_dry": "Secado nocturno", "hqd_outdoor": "Outdoor", "hqd_precious_cure": "Precious cure", - "hqd_quick_20": "R\u00e1pido 20", - "hqd_quick_30": "R\u00e1pido 30", - "hqd_quick_dry": "Secado r\u00e1pido", + "hqd_quick_20": "Rápido 20", + "hqd_quick_30": "Rápido 30", + "hqd_quick_dry": "Secado rápido", "hqd_quilt": "Colchas", "hqd_refresh": "Refrescar", "hqd_school_uniform": "Uniformes escolares", @@ -414,7 +413,7 @@ "hqd_shoes": "Zapatos", "hqd_silk": "Seda", "hqd_sports": "Deporte", - "hqd_synthetics": "Sint\u00e9ticos", + "hqd_synthetics": "Sintéticos", "hqd_timer": "Temporizado", "hqd_towel": "Toallas", "hqd_underwear": "Ropa interior", @@ -422,62 +421,62 @@ "hqd_wool": "Lana", "hqd_working_suit": "Ropa de trabajo", "hygiene": "Higiene", - "iot_checkup": "Revisi\u00f3n", - "iot_dry_anti_mites": "Anti\u00e1caros", + "iot_checkup": "Revisión", + "iot_dry_anti_mites": "Antiácaros", "iot_dry_baby": "Baby", "iot_dry_backpacks": "Mochilas", - "iot_dry_bathrobe": "Ropa de Ba\u00f1o", + "iot_dry_bathrobe": "Ropa de Baño", "iot_dry_bed_linen": "Ropa de Cama", - "iot_dry_bed_quilt": "Edred\u00f3n", - "iot_dry_cotton": "Algod\u00f3n", + "iot_dry_bed_quilt": "Edredón", + "iot_dry_cotton": "Algodón", "iot_dry_cuddly_toys": "Peluches", "iot_dry_curtains": "Cortinas", "iot_dry_dehumidifier": "Eliminador de humedad", "iot_dry_delicates": "Delicados", - "iot_dry_delicate_tablecloths": "Manteler\u00eda Delicada", + "iot_dry_delicate_tablecloths": "Mantelería Delicada", "iot_dry_denim_jeans": "Denim - Vaqueros", "iot_dry_down_jacket": "Jacket", - "iot_dry_duvet": "Edred\u00f3n", - "iot_dry_easy_iron_cotton": "Planchado S\u00faper F\u00e1cil", - "iot_dry_easy_iron_synthetics": "Planchado muy f\u00e1cil - Sint\u00e9ticos", + "iot_dry_duvet": "Edredón", + "iot_dry_easy_iron_cotton": "Planchado Súper Fácil", + "iot_dry_easy_iron_synthetics": "Planchado muy fácil - Sintéticos", "iot_dry_gym_fit": "Ropa de Deporte - Fitness", - "iot_dry_lingerie": "Lencer\u00eda", + "iot_dry_lingerie": "Lencería", "iot_dry_mixed": "Ropa mixta", "iot_dry_playsuits": "Prendas de una pieza - Mono", - "iot_dry_rapid_30": "R\u00e1pido 30\u2019", - "iot_dry_rapid_59": "R\u00e1pido 59\u2019", + "iot_dry_rapid_30": "Rápido 30’", + "iot_dry_rapid_59": "Rápido 59’", "iot_dry_refresh": "Refresh", - "iot_dry_regenerates_waterproof": "Regeneraci\u00f3n Tejidos Impermeables", - "iot_dry_relax_creases": "Reducci\u00f3n Arrugas", + "iot_dry_regenerates_waterproof": "Regeneración Tejidos Impermeables", + "iot_dry_relax_creases": "Reducción Arrugas", "iot_dry_shirts": "Camisas", "iot_dry_small_load": "Carga reducida", - "iot_dry_swimsuits_and_bikinis": "Trajes de ba\u00f1o", - "iot_dry_synthetics": "Sint\u00e9ticos", - "iot_dry_synthetic_dry": "Secado de prendas sint\u00e9ticas", - "iot_dry_tablecloths": "Manteler\u00eda", - "iot_dry_technical_fabrics": "Tejidos T\u00e9cnicos", - "iot_dry_warm_embrace": "Abrazo c\u00e1lido", + "iot_dry_swimsuits_and_bikinis": "Trajes de baño", + "iot_dry_synthetics": "Sintéticos", + "iot_dry_synthetic_dry": "Secado de prendas sintéticas", + "iot_dry_tablecloths": "Mantelería", + "iot_dry_technical_fabrics": "Tejidos Técnicos", + "iot_dry_warm_embrace": "Abrazo cálido", "iot_dry_wool": "Woolmark", "jeans": "Vaqueros", "mix_and_dry": "Mix&Dry", "pets": "Mascotas", "pre_iron": "Pre-Planchado", - "rapid_30": "R\u00e1pido 30 min", - "rapid_45": "R\u00e1pido 45 min", - "rapid_59": "Perfecto R\u00e1pido 59 Min", + "rapid_30": "Rápido 30 min", + "rapid_45": "Rápido 45 min", + "rapid_59": "Perfecto Rápido 59 Min", "refresh": "Refresh", - "relax_creases": "Reducci\u00f3n Arrugas", + "relax_creases": "Reducción Arrugas", "saving_30_min": "ECO 30'", "shirts": "Camisas", "shoes": "Zapatos", "small_load": "Carga reducida", "soft_care": "Cuidado suave", "sport_plus": "Deporte", - "super_easy_iron_misti": "Planchado muy f\u00e1cil ropa mixta", - "super_easy_iron_xxl": "Planchado muy f\u00e1cil XXL", - "super_fast_cottons": "Algod\u00f3n S\u00faper R\u00e1pido", - "super_fast_delicates": "Delicados S\u00faper R\u00e1pidos", - "synthetics": "Sint\u00e9ticos", + "super_easy_iron_misti": "Planchado muy fácil ropa mixta", + "super_easy_iron_xxl": "Planchado muy fácil XXL", + "super_fast_cottons": "Algodón Súper Rápido", + "super_fast_delicates": "Delicados Súper Rápidos", + "synthetics": "Sintéticos", "total_care": "Total Care", "trainers": "Calzado Deportivo", "ultra_care": "Ultra Care", @@ -492,36 +491,36 @@ }, "programs_wm": { "state": { - "20_degrees_coloured_cottons": "Color y algod\u00f3n 20 \u00b0C", - "20_degrees_new_energy_label": "20\u00b0C", + "20_degrees_coloured_cottons": "Color y algodón 20 °C", + "20_degrees_new_energy_label": "20°C", "active_steam": "Vapor", "active_wash": "Lavado activo", "active_wash_steam": "Lavado activo", "allergy_care": "Antialergias", "allergy_care_pro": "Allergy Care Pro", - "all_in_one_49": "Todo en uno 49\u2019", - "all_in_one_59": "Todo en uno 59\u2019", + "all_in_one_49": "Todo en uno 49’", + "all_in_one_59": "Todo en uno 59’", "all_in_one_59_steam": "Lavado activo + Vapor", "autocare": "Autocare", "autoclean": "Limpieza del tambor", - "baby_60": "All Baby 60\u00b0C", + "baby_60": "All Baby 60°C", "care_14": "Rapid Care 14'", "care_30": "Rapid Care 30'", "care_44": "Rapid Care 44'", - "checkup": "Revisi\u00f3n", + "checkup": "Revisión", "colour_59": "Color 59'", "colour_59_steam": "Colores 59' + vapor", - "cottons": "Algod\u00f3n", + "cottons": "Algodón", "cottons_prewash": "Ropa Blanca + Prelavado", - "cottons_steam": "Algod\u00f3n + Vapor", + "cottons_steam": "Algodón + Vapor", "cotton_care_59": "Cotton Care 59 Min", "delicate_59": "Delicado 59'", "delicate_silk": "Seda delicada", "delicate_silk_steam": "Seda delicada + vapor", "delicati_59": "Delicado 59'", "delicati_59_steam": "Delicado 59'", - "drain_spin": "Desag\u00fce + centrifugado", - "easy_iron": "Planchado f\u00e1cil", + "drain_spin": "Desagüe + centrifugado", + "easy_iron": "Planchado fácil", "eco_40_60_new_energy_label": "Eco 40-60", "extra_care": "Cuidado extra", "fitness": "Deporte", @@ -529,24 +528,24 @@ "fresh_care": "Cuidado y frescor", "fresh_care_steam": "Cuidado y frescor + Vapor", "handwash_wool": "Lana y lavado a mano", - "high_dry": "Secado algod\u00f3n", - "hqd_20_degrees": "Algod\u00f3n 20\u2103", + "high_dry": "Secado algodón", + "hqd_20_degrees": "Algodón 20℃", "hqd_allergy": "Antialergias", "hqd_autoclean": "Limpieza del tambor", "hqd_babycare": "Baby Care", - "hqd_checkup": "Revisi\u00f3n", - "hqd_cottons": "Algod\u00f3n", + "hqd_checkup": "Revisión", + "hqd_cottons": "Algodón", "hqd_delicate": "Ropa delicada", "hqd_delicate_cradle": "Ropa delicada", - "hqd_dry": "Secado algod\u00f3n", + "hqd_dry": "Secado algodón", "hqd_dry_synthetics": "Secado de ropa mixta", - "hqd_duvet": "Edred\u00f3n", + "hqd_duvet": "Edredón", "hqd_eco_40_60_degrees": "Eco 40-60", "hqd_handwash_wool": "Lana", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Mixta", - "hqd_quick_15": "R\u00e1pido 15'", - "hqd_quick_wash_57": "Lavado r\u00e1pido 57 min", + "hqd_quick_15": "Rápido 15'", + "hqd_quick_wash_57": "Lavado rápido 57 min", "hqd_rapid_wash_and_dry": "Lavar y secar", "hqd_refresh": "Refresh", "hqd_rinse": "Aclarado", @@ -554,76 +553,76 @@ "hqd_smart": "Smart A.I.", "hqd_spin": "Centrifugado", "hqd_sport": "Deporte", - "hqd_super_fast": "R\u00e1pido 39\u2019", - "hqd_synthetic_and_coloured": "Ropa sint\u00e9tica", + "hqd_super_fast": "Rápido 39’", + "hqd_synthetic_and_coloured": "Ropa sintética", "hygiene_59": "Higiene Plus 59'", - "hygiene_60": "Higiene 60\u00b0 C", + "hygiene_60": "Higiene 60° C", "hygiene_plus_59": "Higiene Plus 59'", "hygiene_plus_59_min": "Higiene Plus 59'", "hygiene_pro_49_min": "Higiene Pro 49 min", "hygiene_pro_steam": "Higiene Pro + Vapor", - "intensive_40": "Intensivo 40\u00b0C", - "intensive_40_steam": "Intensivo 40\u00b0C + vapor", + "intensive_40": "Intensivo 40°C", + "intensive_40_steam": "Intensivo 40°C + vapor", "iot_active_steam": "Vapor", "iot_active_wash_steam": "Lavado activo", "iot_allergy_care_pro": "Allergy Care Pro", "iot_all_in_one_59_steam": "Lavado activo + Vapor", - "iot_checkup": "Revisi\u00f3n", + "iot_checkup": "Revisión", "iot_colour_59_steam": "Colores 59' + vapor", - "iot_cottons_steam": "Algod\u00f3n + Vapor", + "iot_cottons_steam": "Algodón + Vapor", "iot_delicate_silk_steam": "Seda delicada + vapor", "iot_delicati_59_steam": "Delicado 59'", "iot_dry_air_refresh": "Air Refresh", - "iot_dry_anti_mites": "Anti\u00e1caros", - "iot_dry_baby": "Beb\u00e9", + "iot_dry_anti_mites": "Antiácaros", + "iot_dry_baby": "Bebé", "iot_dry_backpacks": "Mochilas", "iot_dry_bathrobe": "Albornoces y telas porosas", "iot_dry_bed_linen": "Ropa de cama", - "iot_dry_cotton_dry": "Secado algod\u00f3n", + "iot_dry_cotton_dry": "Secado algodón", "iot_dry_cuddly_toys": "Peluches", "iot_dry_curtains": "Cortinas", "iot_dry_dehumidifier": "Eliminador de humedad", "iot_dry_delicates_antiallergy": "Ropa delicada - Antialergias", "iot_dry_delicate_tablecloths": "Manteles delicados", "iot_dry_denim_jeans": "Denim - Vaqueros", - "iot_dry_easy_iron_cotton": "Planchado f\u00e1cil - Algod\u00f3n", - "iot_dry_easy_iron_synthetics": "Planchado f\u00e1cil - Sint\u00e9ticos", + "iot_dry_easy_iron_cotton": "Planchado fácil - Algodón", + "iot_dry_easy_iron_synthetics": "Planchado fácil - Sintéticos", "iot_dry_gym_fit": "Gimnasio - Ropa de deporte", - "iot_dry_lingerie": "Lencer\u00eda", + "iot_dry_lingerie": "Lencería", "iot_dry_mixed_dry": "Secado de ropa mixta", - "iot_dry_rapid_60_min_delicates": "R\u00e1pido 60' - Delicados", + "iot_dry_rapid_60_min_delicates": "Rápido 60' - Delicados", "iot_dry_shirts": "Camisas", - "iot_dry_swimsuits_and_bikinis": "Trajes de ba\u00f1o", - "iot_dry_synthetics": "Secado de prendas sint\u00e9ticas", - "iot_dry_synthetic_dry": "Secado de prendas sint\u00e9ticas", + "iot_dry_swimsuits_and_bikinis": "Trajes de baño", + "iot_dry_synthetics": "Secado de prendas sintéticas", + "iot_dry_synthetic_dry": "Secado de prendas sintéticas", "iot_dry_tablecloths": "Manteles", - "iot_dry_technical_fabrics": "Tejidos t\u00e9cnicos", - "iot_dry_warm_embrace": "C\u00e1lido abrazo", + "iot_dry_technical_fabrics": "Tejidos técnicos", + "iot_dry_warm_embrace": "Cálido abrazo", "iot_dry_wool_dry": "Secado lana", - "iot_easy_iron": "Planchado f\u00e1cil", + "iot_easy_iron": "Planchado fácil", "iot_fresh_care_steam": "Cuidado y frescor + Vapor", "iot_hygiene_pro_steam": "Higiene Pro + Vapor", - "iot_intensive_40_steam": "Intensivo 40\u00b0C + vapor", + "iot_intensive_40_steam": "Intensivo 40°C + vapor", "iot_mixed_steam": "Ropa mixta + Vapor", "iot_mix_and_colour_59_steam": "Mixta y de color 59' + Vapor", "iot_perfect_cotton_59_steam": "Algodon Perfecto 59'", - "iot_rapid_a_class_60_steam": "Clase r\u00e1pida A 60 + vapor", - "iot_resistant_cotton_steam": "Algod\u00f3n + Vapor", + "iot_rapid_a_class_60_steam": "Clase rápida A 60 + vapor", + "iot_resistant_cotton_steam": "Algodón + Vapor", "iot_shirts_steam": "Camisas + Vapor", - "iot_single_item_steam": "Elemento \u00fanico + Vapor", + "iot_single_item_steam": "Elemento único + Vapor", "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Especial 39' + Vapor", "iot_steam_hygiene_plus": "Vapor higiene extra ", - "iot_synthetic_and_coloured_steam": "Ropa sint\u00e9tica y de color + Vapor", + "iot_synthetic_and_coloured_steam": "Ropa sintética y de color + Vapor", "iot_wash_and_dry": "Lavar y secar", - "iot_wash_anti_mites": "Anti\u00e1caros", + "iot_wash_anti_mites": "Antiácaros", "iot_wash_anti_odor": "Antiolor", "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", "iot_wash_baby_sanitizer": "Desinfectante", - "iot_wash_baby_sanitizer_steam": "Desinfectante para beb\u00e9s + vapor", + "iot_wash_baby_sanitizer_steam": "Desinfectante para bebés + vapor", "iot_wash_backpacks": "Mochilas", "iot_wash_backpacks_zelig": "Mochilas", "iot_wash_bathrobe": "Albornoces y toallas", @@ -631,14 +630,14 @@ "iot_wash_bed_linen": "Ropa de cama", "iot_wash_bed_linen_steam": "Ropa de cama + Vapor", "iot_wash_bed_linen_zelig": "Ropa de cama", - "iot_wash_big_single_load": "Gran carga \u00fanica", + "iot_wash_big_single_load": "Gran carga única", "iot_wash_bleaching": "Blanqueo", "iot_wash_blood_stains": "Manchas de sangre", "iot_wash_cashmere": "Cachemira", "iot_wash_chocolate_stains": "Manchas de chocolate", - "iot_wash_cold_wash": "Lavado en fr\u00edo", + "iot_wash_cold_wash": "Lavado en frío", "iot_wash_colored": "Color", - "iot_wash_colored_anti_stain": "Eliminaci\u00f3n de manchas en prendas de color", + "iot_wash_colored_anti_stain": "Eliminación de manchas en prendas de color", "iot_wash_colored_delicate": "Ropa de color delicada", "iot_wash_coloured": "Ropa de color", "iot_wash_coloured_bed_linen": "Ropa de cama de color", @@ -649,15 +648,15 @@ "iot_wash_coloured_steam": "Ropa de color + Vapor", "iot_wash_coloured_tableclothes": "Manteles de color", "iot_wash_coloured_tableclothes_steam": "Manteles de color + Vapor", - "iot_wash_cotton": "Algod\u00f3n", - "iot_wash_cotton_steam": "Algod\u00f3n + Vapor", + "iot_wash_cotton": "Algodón", + "iot_wash_cotton_steam": "Algodón + Vapor", "iot_wash_cuddly_toys": "Peluches", "iot_wash_curtains": "Cortinas", "iot_wash_curtains_steam": "Cortinas + Vapor", "iot_wash_curtains_zelig": "Cortinas", "iot_wash_dark": "Ropa oscura", - "iot_wash_darks_and_coloured_44": "Ropa oscura y de color 44\u2019", - "iot_wash_darks_and_coloured_59": "Ropa oscura y de color 59\u2019", + "iot_wash_darks_and_coloured_44": "Ropa oscura y de color 44’", + "iot_wash_darks_and_coloured_59": "Ropa oscura y de color 59’", "iot_wash_darks_and_coloured_xl": "Ropa oscura y de color XL", "iot_wash_dark_steam": "Ropa oscura + Vapor", "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", @@ -677,40 +676,40 @@ "iot_wash_denim_jeans": "Denim - Vaqueros", "iot_wash_diving_suits": "Trajes de buceo", "iot_wash_diving_suits_zelig": "Trajes de buceo", - "iot_wash_down_jackets": "Plum\u00edferos", - "iot_wash_down_jackets_zelig": "Plum\u00edferos", - "iot_wash_duvet": "Edred\u00f3n", + "iot_wash_down_jackets": "Plumíferos", + "iot_wash_down_jackets_zelig": "Plumíferos", + "iot_wash_duvet": "Edredón", "iot_wash_fruit_stains": "Manchas de fruta", "iot_wash_gym_fit": "Gimnasio - Ropa de deporte", "iot_wash_handwash": "Lavado a mano", "iot_wash_handwash_colored": "Lavado a mano de ropa de color", "iot_wash_handwash_dark": "Lavado a mano de ropa oscura", - "iot_wash_lingerie": "Lencer\u00eda", + "iot_wash_lingerie": "Lencería", "iot_wash_masks_refresh": "Lavado de mascarillas", - "iot_wash_masks_sanification": "Desinfecci\u00f3n de mascarillas", - "iot_wash_masks_sanification_steam": "Desinfecci\u00f3n de mascarillas + Vapor", + "iot_wash_masks_sanification": "Desinfección de mascarillas", + "iot_wash_masks_sanification_steam": "Desinfección de mascarillas + Vapor", "iot_wash_mats": "Alfombras", "iot_wash_men_s_trousers": "Pantalones ", "iot_wash_mixed": "Ropa mixta", "iot_wash_mixed_steam": "Ropa mixta + Vapor", - "iot_wash_mix_and_coloured_44": "Mixta y de color 44\u2019", - "iot_wash_mix_and_coloured_59": "Mixta y de color 59\u2019", + "iot_wash_mix_and_coloured_44": "Mixta y de color 44’", + "iot_wash_mix_and_coloured_59": "Mixta y de color 59’", "iot_wash_mix_and_coloured_xl": "Mixta y de color XL", "iot_wash_new_clothes": "Ropa nueva", "iot_wash_perfect_white": "Blanco perfecto", "iot_wash_perfect_white_steam": "Blanco perfecto + Vapor", "iot_wash_pets": "Accesorios para mascotas", - "iot_wash_pets_hair_removal": "Eliminaci\u00f3n del pelo de las mascotas", - "iot_wash_pets_odours_stains_removal": "Eliminaci\u00f3n de manchas y olores dom\u00e9sticos", + "iot_wash_pets_hair_removal": "Eliminación del pelo de las mascotas", + "iot_wash_pets_odours_stains_removal": "Eliminación de manchas y olores domésticos", "iot_wash_pets_steam": "Accesorios para mascotas", "iot_wash_playsuits": "Monos", "iot_wash_playsuits_steam": "Monos + Vapor", - "iot_wash_quick_drum_cleaner": "Limpiador r\u00e1pido de tambor", - "iot_wash_rapid_14": "R\u00e1pido 14\u2019", - "iot_wash_rapid_30": "R\u00e1pido 30\u2019", - "iot_wash_rapid_44": "R\u00e1pido 44\u2019", - "iot_wash_rapid_59": "R\u00e1pido 59\u2019", - "iot_wash_rapid_59_steam": "R\u00e1pido 59' + vapor", + "iot_wash_quick_drum_cleaner": "Limpiador rápido de tambor", + "iot_wash_rapid_14": "Rápido 14’", + "iot_wash_rapid_30": "Rápido 30’", + "iot_wash_rapid_44": "Rápido 44’", + "iot_wash_rapid_59": "Rápido 59’", + "iot_wash_rapid_59_steam": "Rápido 59' + vapor", "iot_wash_refresh_14_min": "Refrescar 14'", "iot_wash_resistant_colored": "Ropa de color resistente", "iot_wash_resistant_dark": "Ropa oscura resistente", @@ -719,26 +718,26 @@ "iot_wash_shirts": "Camisas", "iot_wash_shirts_steam": "Camisas + Vapor", "iot_wash_silk": "Seda", - "iot_wash_ski_suit": "Trajes de esqu\u00ed", - "iot_wash_ski_suit_zelig": "Trajes de esqu\u00ed", + "iot_wash_ski_suit": "Trajes de esquí", + "iot_wash_ski_suit_zelig": "Trajes de esquí", "iot_wash_spin": "Centrifugado", "iot_wash_sport": "Deporte", "iot_wash_sport_anti_odor": "Ropa deportiva antiolor", "iot_wash_sport_anti_odor_zelig": "Ropa deportiva antiolor", "iot_wash_stains_remover": "Quitamanchas", - "iot_wash_swimsuits_and_bikinis": "Trajes de ba\u00f1o", - "iot_wash_synthetic": "Ropa sint\u00e9tica", - "iot_wash_synthetic_steam": "Ropa sint\u00e9tica + Vapor", + "iot_wash_swimsuits_and_bikinis": "Trajes de baño", + "iot_wash_synthetic": "Ropa sintética", + "iot_wash_synthetic_steam": "Ropa sintética + Vapor", "iot_wash_tablecloths": "Manteles", "iot_wash_tablecloths_steam": "Manteles + Vapor", - "iot_wash_technical_fabrics": "Tejidos t\u00e9cnicos", - "iot_wash_technical_fabrics_zelig": "Tejidos t\u00e9cnicos", - "iot_wash_technical_jackets": "Chaquetas t\u00e9cnicas", - "iot_wash_technical_jackets_zelig": "Chaquetas t\u00e9cnicas", + "iot_wash_technical_fabrics": "Tejidos técnicos", + "iot_wash_technical_fabrics_zelig": "Tejidos técnicos", + "iot_wash_technical_jackets": "Chaquetas técnicas", + "iot_wash_technical_jackets_zelig": "Chaquetas técnicas", "iot_wash_trainers": "Deportivas", "iot_wash_whites": "Ropa blanca", - "iot_wash_whites_44": "Ropa blanca 44\u2019", - "iot_wash_whites_59": "Ropa blanca 59\u2019", + "iot_wash_whites_44": "Ropa blanca 44’", + "iot_wash_whites_59": "Ropa blanca 59’", "iot_wash_whites_xl": "Ropa blanca XL", "iot_wash_wine_stains": "Manchas de vino", "iot_wash_wool": "Lana", @@ -750,25 +749,25 @@ "mixed_steam": "Ropa mixta + Vapor", "mix_and_colour_59": "Color Y Mixtos 59'", "mix_and_colour_59_steam": "Mixta y de color 59' + Vapor", - "night_and_day": "Noche y d\u00eda", + "night_and_day": "Noche y día", "night_wash": "Ciclo nocturno", "perfect_59": "Perfecto 59'", "perfect_cotton_59": "Algodon Perfecto 59'", "perfect_cotton_59_steam": "Algodon Perfecto 59'", "perfect_whites_59": "Blancos Perfectos 59'", "rapid_14_min": "Rapido 14'", - "rapid_30_min": "R\u00e1pido 30'", - "rapid_44_min": "R\u00e1pido 44'", - "rapid_a_class_60": "Clase r\u00e1pida A 60", - "rapid_a_class_60_steam": "Clase r\u00e1pida A 60 + vapor", + "rapid_30_min": "Rápido 30'", + "rapid_44_min": "Rápido 44'", + "rapid_a_class_60": "Clase rápida A 60", + "rapid_a_class_60_steam": "Clase rápida A 60 + vapor", "rapid_wash_and_dry_59_min": "Lavado y secado 59'", - "resistant_cotton": "Algod\u00f3n", - "resistant_cotton_steam": "Algod\u00f3n + Vapor", + "resistant_cotton": "Algodón", + "resistant_cotton_steam": "Algodón + Vapor", "rinse": "Aclarado", "shirts_steam": "Camisas + Vapor", "silent_night": "Ciclo nocturno", - "single_item": "Elemento \u00fanico", - "single_item_steam": "Elemento \u00fanico + Vapor", + "single_item": "Elemento único", + "single_item_steam": "Elemento único + Vapor", "smart_wash": "Smart Wash", "soft_care": "Cuidado suave", "soft_care_steam": "Soft Care + Steam", @@ -782,17 +781,17 @@ "sport_plus_39": "Deporte Plus 39'", "steam_39": "Vapor 39'", "steam_care_pro": "Steam Care Pro", - "steam_care_pro_cotton": "Steam Care Pro - Algod\u00f3n", + "steam_care_pro_cotton": "Steam Care Pro - Algodón", "steam_care_pro_delicates": "Steam Care Pro - Delicados", - "steam_care_pro_synthetic": "Steam Care Pro - Sint\u00e9ticos", + "steam_care_pro_synthetic": "Steam Care Pro - Sintéticos", "steam_hygiene_plus": "Vapor higiene extra ", - "synthetics": "Ropa sint\u00e9tica", - "synthetic_and_coloured": "Ropa sint\u00e9tica y de color", - "synthetic_and_coloured_steam": "Ropa sint\u00e9tica y de color + Vapor", + "synthetics": "Ropa sintética", + "synthetic_and_coloured": "Ropa sintética y de color", + "synthetic_and_coloured_steam": "Ropa sintética y de color + Vapor", "tailored_resistant_cotton": "Tailored Resistant Cotton", "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", "total_care": "Cuidado total", - "tumbling": "Rotaci\u00f3n", + "tumbling": "Rotación", "wool": "Lana", "wool_and_delicates_49": "Lana/Delicados 49'", "wool_dry": "Secado lana", @@ -918,10 +917,10 @@ "name": "Programa" }, "still_hot": { - "name": "Todav\u00eda caliente" + "name": "Todavía caliente" }, "pan_status": { - "name": "Sart\u00e9n" + "name": "Sartén" }, "remote_control": { "name": "Control remoto" @@ -936,7 +935,7 @@ "name": "Puerta abierta" }, "connection": { - "name": "Conexi\u00f3n del electrodom\u00e9stico" + "name": "Conexión del electrodoméstico" }, "child_lock": { "name": "Bloqueo infantil" @@ -950,7 +949,7 @@ }, "number": { "power_management": { - "name": "Control de la energ\u00eda" + "name": "Control de la energía" }, "temperature": { "name": "Temperatura" @@ -962,13 +961,13 @@ "name": "Dureza del agua" }, "program_duration": { - "name": "Duraci\u00f3n del programa" + "name": "Duración del programa" }, "target_temperature": { "name": "Temperatura deseada" }, "rinse_iterations": { - "name": "N\u00famero de enjuagues" + "name": "Número de enjuagues" }, "wash_time": { "name": "Tiempo de lavado" @@ -979,7 +978,7 @@ }, "button": { "induction_hob": { - "name": "Placa de inducci\u00f3n" + "name": "Placa de inducción" } } } diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index 47d1a92..43ce44b 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -3,38 +3,38 @@ "sensor": { "washing_modes": { "state": { - "0": "Pr\u00eat", - "1": "Pr\u00eat", + "0": "Prêt", + "1": "Prêt", "3": "Pause", - "4": "Planifi\u00e9", - "5": "Planifi\u00e9", + "4": "Planifié", + "5": "Planifié", "6": "Erreur", - "7": "Pr\u00eat" + "7": "Prêt" } }, "program_phases_wm": { "state": { - "0": "Pr\u00eat", + "0": "Prêt", "1": "Lavage", "2": "Lavage", "3": "Essorage", - "4": "Rin\u00e7age", - "5": "Rin\u00e7age", - "6": "Rin\u00e7age", - "7": "S\u00e9chage", + "4": "Rinçage", + "5": "Rinçage", + "6": "Rinçage", + "7": "Séchage", "9": "Vapeur d'eau", - "10": "Pr\u00eat", + "10": "Prêt", "11": "Essorage", "12": "Calcul du poids ", "13": "Calcul du poids ", "14": "Lavage", "15": "Lavage", "16": "Lavage", - "17": "Rin\u00e7age", - "18": "Rin\u00e7age", - "19": "Planifi\u00e9", + "17": "Rinçage", + "18": "Rinçage", + "19": "Planifié", "20": "Keep Fresh", - "24": "Rafra\u00eechissement", + "24": "Rafraîchissement", "25": "Lavage", "26": "Chauffage", "27": "Lavage" @@ -43,45 +43,45 @@ }, "program_phases_td": { "state": { - "0": "Pr\u00eat", - "1": "S\u00e9chage", - "2": "S\u00e9chage", + "0": "Prêt", + "1": "Séchage", + "2": "Séchage", "3": "Refroidissement", "13": "Refroidissement", - "14": "S\u00e9chage", - "15": "S\u00e9chage", + "14": "Séchage", + "15": "Séchage", "16": "Refroidissement", "18": "Keep Fresh", - "19": "S\u00e9chage", - "20": "S\u00e9chage" + "19": "Séchage", + "20": "Séchage" }, "name": "Phase" }, "program_phases_dw": { "state": { - "0": "Pr\u00eat", - "1": "Pr\u00e9lavage", + "0": "Prêt", + "1": "Prélavage", "2": "Lavage", - "3": "Rin\u00e7age", - "4": "S\u00e9chage", - "5": "Pr\u00eat", + "3": "Rinçage", + "4": "Séchage", + "5": "Prêt", "6": "Hot rinse" }, "name": "Phase" }, "dry_levels": { "state": { - "0": "Pas de s\u00e9chage", + "0": "Pas de séchage", "1": "Fer", - "2": "Pr\u00eat \u00e0 ranger", - "3": "Pr\u00eat \u00e0 ranger", + "2": "Prêt à ranger", + "3": "Prêt à ranger", "4": "Extra sec", "12": "Fer", - "13": "Pr\u00eat \u00e0 ranger", - "14": "Pr\u00eat \u00e0 porter", + "13": "Prêt à ranger", + "14": "Prêt à porter", "15": "Extra sec" }, - "name": "Niveau de s\u00e9chage" + "name": "Niveau de séchage" }, "anti_crease": { "name": "Anti-pli" @@ -93,19 +93,19 @@ "name": "Temps restant" }, "temperature": { - "name": "Temp\u00e9rature" + "name": "Température" }, "water_efficiency": { - "name": "Efficacit\u00e9 en eau" + "name": "Efficacité en eau" }, "water_saving": { - "name": "\u00c9conomies d'eau" + "name": "Économies d'eau" }, "duration": { - "name": "Dur\u00e9e" + "name": "Durée" }, "target_temperature": { - "name": "Temp\u00e9rature souhait\u00e9e" + "name": "Température souhaitée" }, "spin_speed": { "name": "Essorage" @@ -114,19 +114,19 @@ "name": "Niveau de vapeur" }, "dirt_level": { - "name": "Niveau de salet\u00e9" + "name": "Niveau de saleté" }, "delay_time": { - "name": "D\u00e9marrage Diff\u00e9r\u00e9" + "name": "Démarrage Différé" }, "dry_time": { - "name": "Temps de s\u00e9chage" + "name": "Temps de séchage" }, "suggested_load": { - "name": "Capacit\u00e9 de charge" + "name": "Capacité de charge" }, "energy_label": { - "name": "Efficacit\u00e9 \u00e9nerg\u00e9tique" + "name": "Efficacité énergétique" }, "det_dust": { "name": "Poudre" @@ -144,16 +144,16 @@ "name": "Cycles Total" }, "energy_total": { - "name": "Consommation d\u2019\u00e9nergie Total" + "name": "Consommation d’énergie Total" }, "water_total": { - "name": "Efficacit\u00e9 en eau Total" + "name": "Efficacité en eau Total" }, "energy_current": { - "name": "Consommation d\u2019\u00e9nergie Actuel" + "name": "Consommation d’énergie Actuel" }, "water_current": { - "name": "Efficacit\u00e9 en eau Actuel" + "name": "Efficacité en eau Actuel" } }, "select": { @@ -165,78 +165,78 @@ "auto_plus": "AutoPlus", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Auto universel 50 - 60\u00b0C", - "auto_universal_plus": "Auto universel Plus 65 - 75\u00b0C", - "auto_universal_plus_soil": "Auto universel Plus 65 - 75\u00b0C", - "auto_universal_soil": "Auto universel 50 - 60\u00b0C", + "auto_universal": "Auto universel 50 - 60°C", + "auto_universal_plus": "Auto universel Plus 65 - 75°C", + "auto_universal_plus_soil": "Auto universel Plus 65 - 75°C", + "auto_universal_soil": "Auto universel 50 - 60°C", "auto_wash": "Lavage automatique", "auto_wash_soil": "Lavage automatique", - "classe_a_59": "Classe A 59' 65\u00b0C", - "delicate": "D\u00e9licat 45\u00b0C", + "classe_a_59": "Classe A 59' 65°C", + "delicate": "Délicat 45°C", "dishwasher_care": "Cycle de nettoyage du calcaire", - "eco": "\u00c9co", - "eco_asynch": "Eco 45\u00b0C", - "eco_bldc": "Eco 45\u00b0C", - "eco_synch": "Eco 45\u00b0C", + "eco": "Éco", + "eco_asynch": "Eco 45°C", + "eco_bldc": "Eco 45°C", + "eco_synch": "Eco 45°C", "gentle_wash": "Gentle wash", "glass": "En verre", - "glassware": "Verres 45 \u00b0C", + "glassware": "Verres 45 °C", "glass_care": "Glass Care", - "hygiene": "Hygi\u00e8ne", - "hygiene_plus": "Hygi\u00e8ne 75 \u00b0C", + "hygiene": "Hygiène", + "hygiene_plus": "Hygiène 75 °C", "intensive": "Intensif ", "intensive_rapid": "Intensif rapide", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Auto universel 50 - 60\u00b0C", + "iot_auto_universal_soil": "Auto universel 50 - 60°C", "iot_auto_wash_soil": "Lavage automatique", - "iot_baby_care": "Soin B\u00e9b\u00e9", - "iot_breakfast": "D\u00e9jeuner", - "iot_checkup": "V\u00e9rification", + "iot_baby_care": "Soin Bébé", + "iot_breakfast": "Déjeuner", + "iot_checkup": "Vérification", "iot_china_crystals": "Cristal de Chine", "iot_classe_a_59": "Rapide 59'", - "iot_cocktail_glasses": "Verre \u00e0 cocktail", - "iot_cocktail_glasses_soil": "Verre \u00e0 cocktail", + "iot_cocktail_glasses": "Verre à cocktail", + "iot_cocktail_glasses_soil": "Verre à cocktail", "iot_daily_care": "Quotidien", "iot_daily_care_soil": "Quotidien", - "iot_delicate": "D\u00e9licat 45\u00b0C", - "iot_dinner_for_two": "Repas \u00e0 deux", - "iot_dinner_for_two_soil": "Repas \u00e0 deux", + "iot_delicate": "Délicat 45°C", + "iot_dinner_for_two": "Repas à deux", + "iot_dinner_for_two_soil": "Repas à deux", "iot_dreft_quick_cycle": "Dreft Quick", - "iot_eco_asynch": "Eco 45\u00b0C", - "iot_eco_bldc": "Eco 45\u00b0C", - "iot_eco_synch": "Eco 45\u00b0C", - "iot_extra_hygiene": "Extra Hygi\u00e8ne", + "iot_eco_asynch": "Eco 45°C", + "iot_eco_bldc": "Eco 45°C", + "iot_eco_synch": "Eco 45°C", + "iot_extra_hygiene": "Extra Hygiène", "iot_fairy_quick_cycle": "Fairy Quick", "iot_happy_hour": "Happy Hour", "iot_jar_quick_cycle": "Jar Quick", - "iot_party": "Repas de f\u00eate", - "iot_party_soil": "Repas de f\u00eate", + "iot_party": "Repas de fête", + "iot_party_soil": "Repas de fête", "iot_pizza_menu": "Menu Pizza", "iot_pizza_menu_soil": "Menu Pizza", "iot_plastic_tupperware": "Plastique & Tupperware", "iot_porcelain": "Porcelaine", "iot_power_mix_wash": "Power Mix Wash", "iot_power_mix_wash_soil": "Power Mix Wash", - "iot_prewash": "Pr\u00e9lavage", + "iot_prewash": "Prélavage", "iot_pyrex_and_glassware": "Pyrex & Verre", "iot_rapid_29": "Rapide 29'", - "iot_rapid_39": "Rapide 39' 60 \u00b0C", + "iot_rapid_39": "Rapide 39' 60 °C", "iot_single": "Une personne", - "iot_steam": "Vapeur 75 \u00b0C", + "iot_steam": "Vapeur 75 °C", "iot_super_flash": "Super Rapide", "iot_super_wash": "Lavage Super Intensif", "iot_turbopower": "TurboPower", - "iot_universal": "Universel 60 \u00b0C", - "iot_wok_grids_maxi_pans": "Sp\u00e9cial casserole (Wok - Grill & Casserole)", - "iot_wok_grids_maxi_pans_soil": "Sp\u00e9cial casserole (Wok - Grill & Casserole)", + "iot_universal": "Universel 60 °C", + "iot_wok_grids_maxi_pans": "Spécial casserole (Wok - Grill & Casserole)", + "iot_wok_grids_maxi_pans_soil": "Spécial casserole (Wok - Grill & Casserole)", "iot_yes_quick_cycle": "Yes Quick", - "night": "Ultra silence 55\u00b0C", - "prewash": "Pr\u00e9lavage", + "night": "Ultra silence 55°C", + "prewash": "Prélavage", "rapid_20": "Rapide 20'", "rapid_24": "Rapide 24'", - "rapid_29": "Rapide 29' 50\u00b0C", + "rapid_29": "Rapide 29' 50°C", "rapid_35": "Wash&Dry 35'", - "rapid_39": "Rapide 39' 60 \u00b0C", + "rapid_39": "Rapide 39' 60 °C", "rapid_49": "Rapide 49'", "rapid_59": "Rapide 59'", "sanitising": "Assainissant", @@ -244,15 +244,15 @@ "silent": "Nuit", "silent_care": "Silent Care", "smart_ai": "Smart AI", - "special": "sp\u00e9cial", - "special_pw_prz": "sp\u00e9cial", - "steam": "Vapeur 75 \u00b0C", - "steam_plus": "Vapeur Plus 75\u00a0\u00b0C", - "total_care": "Total Care 50\u00b0C", - "ultra_silence": "Ultra silence 55\u00b0C", - "ultra_silent": "Ultra silence 55\u00b0C", - "universal": "Universel 60 \u00b0C", - "universal_plus": "Universel Plus 70 \u00b0C", + "special": "spécial", + "special_pw_prz": "spécial", + "steam": "Vapeur 75 °C", + "steam_plus": "Vapeur Plus 75 °C", + "total_care": "Total Care 50°C", + "ultra_silence": "Ultra silence 55°C", + "ultra_silent": "Ultra silence 55°C", + "universal": "Universel 60 °C", + "universal_plus": "Universel Plus 70 °C", "zoom_39": "Zoom 39 min" }, "name": "Programme" @@ -260,34 +260,34 @@ "programs_ih": { "state": { "iot_special_ash_brown": "Galettes de pommes de terre frites", - "iot_special_beef_fillet": "Filet de b\u0153uf", - "iot_special_beef_veal_stew": "Rago\u00fbt de b\u0153uf et de veau", + "iot_special_beef_fillet": "Filet de bœuf", + "iot_special_beef_veal_stew": "Ragoût de bœuf et de veau", "iot_special_boiled_rice": "Bouillie de riz", "iot_special_chicken_breast": "Blanc de poulet", "iot_special_chicken_legs": "Cuisses de poulets", "iot_special_chocolate_pudding": "Pudding au chocolat", - "iot_special_entrecote": "Entrec\u00f4te", + "iot_special_entrecote": "Entrecôte", "iot_special_fresh_tuna": "Thon frais", - "iot_special_grilled_vegetables": "L\u00e9gumes grill\u00e9s", - "iot_special_lamb_cutlet": "C\u00f4telettes d\u2019agneau", + "iot_special_grilled_vegetables": "Légumes grillés", + "iot_special_lamb_cutlet": "Côtelettes d’agneau", "iot_special_meatballs": "Boulettes de viande", "iot_special_minestrone": "Minestrone", "iot_special_mussels": "Moules", "iot_special_omelette": "Omelette", - "iot_special_pancakes": "Cr\u00eapes", - "iot_special_paris_style_peas": "Petits pois \u00e0 la fran\u00e7aise", - "iot_special_poached_eggs": "\u0152ufs poch\u00e9s", + "iot_special_pancakes": "Crêpes", + "iot_special_paris_style_peas": "Petits pois à la française", + "iot_special_poached_eggs": "Œufs pochés", "iot_special_pork_fillet": "Filet de porc", - "iot_special_pork_ribs": "C\u00f4tes de porc", + "iot_special_pork_ribs": "Côtes de porc", "iot_special_prawns": "Crevettes", "iot_special_quinoa": "Quinoa", "iot_special_ratatouille": "Ratatouille", "iot_special_salmon_fillet": "Filet de saumon", - "iot_special_saute_potatoes": "Pommes de terre saut\u00e9es", + "iot_special_saute_potatoes": "Pommes de terre sautées", "iot_special_scallops": "Coquilles Saint-Jacques", - "iot_special_scrambled_eggs": "\u0152ufs brouill\u00e9s", - "iot_special_spelt": "\u00c9peautre", - "iot_special_veggy_noodles": "Nouilles v\u00e9g\u00e9tariennes", + "iot_special_scrambled_eggs": "Œufs brouillés", + "iot_special_spelt": "Épeautre", + "iot_special_veggy_noodles": "Nouilles végétariennes", "iot_special_white_fish_fillet": "Filet de poisson blanc", "iot_standard_boiling": "Bouillir", "iot_standard_frying": "Frire", @@ -299,20 +299,20 @@ }, "programs_ov": { "state": { - "bakery": "P\u00e2tes et pains", - "bakery_steam": "Pain cuit \u00e0 la vapeur", + "bakery": "Pâtes et pains", + "bakery_steam": "Pain cuit à la vapeur", "bottom_heating": "Sole", - "bottom_heating_fan": "Sole brass\u00e9e", + "bottom_heating_fan": "Sole brassée", "bread": "Pain", - "bread_steam": "P\u00e2tisseries cuites \u00e0 la vapeur", + "bread_steam": "Pâtisseries cuites à la vapeur", "convection_fan": "Chaleur tournante", "convection_fan_turnspit": "Convection + Ventilateur + Tournebroche", "conventional": "Convection naturelle", "conventional_turnspit": "Convection + Tournebroche", - "defrost": "D\u00e9cong\u00e9lation", - "descaling": "D\u00e9tartrage", + "defrost": "Décongélation", + "descaling": "Détartrage", "fish": "Poisson", - "fish_steam": "Poisson cuit \u00e0 la vapeur", + "fish_steam": "Poisson cuit à la vapeur", "grill_cata": "Gril", "grill_fan_cata": "Turbogril", "grill_fan_pyro": "Turbogril", @@ -320,42 +320,41 @@ "h20_clean": "H2O-Clean", "iot_bread": "Pain", "iot_h20_clean": "h2O clean", - "leavening": "\u00c9tuve", - "low_temp_cooking": "Cuisson \u00e0 basse temp\u00e9rature", - "low_temp_cooking_fish": "Cuisson \u00e0 basse temp\u00e9rature - Poisson", - "low_temp_cooking_fish_steam": "Cuisson \u00e0 la vapeur \u00e0 basse temp\u00e9rature - Poisson", - "low_temp_cooking_meat": "Cuisson \u00e0 basse temp\u00e9rature - Viande", - "low_temp_cooking_meat_steam": "Cuisson \u00e0 la vapeur \u00e0 basse temp\u00e9rature - Viande", - "low_temp_cooking_steam": "Cuisson \u00e0 la vapeur \u00e0 basse temp\u00e9rature", + "leavening": "Étuve", + "low_temp_cooking": "Cuisson à basse température", + "low_temp_cooking_fish": "Cuisson à basse température - Poisson", + "low_temp_cooking_fish_steam": "Cuisson à la vapeur à basse température - Poisson", + "low_temp_cooking_meat": "Cuisson à basse température - Viande", + "low_temp_cooking_meat_steam": "Cuisson à la vapeur à basse température - Viande", + "low_temp_cooking_steam": "Cuisson à la vapeur à basse température", "meat": "Viande", - "meat_steam": "Viande cuite \u00e0 la vapeur", - "multi_level": "Chaleur puls\u00e9e", + "meat_steam": "Viande cuite à la vapeur", + "multi_level": "Chaleur pulsée", "paella": "Paella", - "pasta_and_bakery": "P\u00e2tes et pains", + "pasta_and_bakery": "Pâtes et pains", "pizza": "Pizza", "pyrolysis": "Pyrolyse", "pyrolysis_plus": "Pyrolyse +", "red_meat": "Viande rouge", - "red_meat_steam": "Viande rouge cuite \u00e0 la vapeur", - "regenerate": "R\u00e9g\u00e9n\u00e9ration", + "red_meat_steam": "Viande rouge cuite à la vapeur", + "regenerate": "Régénération", "soft_plus": "Soft+", "super_grill": "Super Gril", "tailor_bake": "Tailor bake", "tailor_bake_cata": "Tailor Bake", - "tailor_bake_desctiption": "Cette fonction est id\u00e9ale pour garder les aliments tendres \u00e0 l'int\u00e9rieur et croquants \u00e0 l'ext\u00e9rieur.\r\r\r\r\nCette fonction permet de r\u00e9duire la quantit\u00e9 de mati\u00e8re grasse ou d'huile n\u00e9cessaire \u00e0 la pr\u00e9paration des plats.\r\r\r\nL'association des \u00e9l\u00e9ments chauffants avec un syst\u00e8me de pulsation de l'air assure des r\u00e9sultats de cuisson uniformes.", "tailor_bake_pyro": "Tailor Bake", - "vegetables": "L\u00e9gumes", - "vegetables_cata": "L\u00e9gumes", - "vegetables_pyro": "L\u00e9gumes", - "water_discharge": "Vidange de l\u2019eau", + "vegetables": "Légumes", + "vegetables_cata": "Légumes", + "vegetables_pyro": "Légumes", + "water_discharge": "Vidange de l’eau", "white_meat": "Viande blanche", - "white_meat_steam": "Viande blanche cuite \u00e0 la vapeur" + "white_meat_steam": "Viande blanche cuite à la vapeur" }, "name": "Programme" }, "programs_td": { "state": { - "active_dry": "S\u00e9chage actif", + "active_dry": "Séchage actif", "allergy_care": "Anti-allergies", "all_in_one": "Tout en 1", "antiallergy": "Anti-allergies", @@ -369,10 +368,10 @@ "coloured": "Couleurs", "daily_45_min": "QUOTIDIEN 45'", "daily_perfect_59_min": "QUOTIDIEN PARFAIT 59'", - "darks_and_coloured": "Couleurs dont fonc\u00e9es", - "delicates": "D\u00e9licat", + "darks_and_coloured": "Couleurs dont foncées", + "delicates": "Délicat", "duvet": "Couette", - "eco": "Coton \u00c9co", + "eco": "Coton Éco", "ecospeed_cottons": "Ecospeed coton", "ecospeed_delicates": "Delicats ecospeed", "ecospeed_mixed": "Ecospeed mixte", @@ -385,87 +384,87 @@ "hqd_bed_sheets": "Draps", "hqd_bulky": "Articles volumineux", "hqd_casual": "Journalier", - "hqd_cold_wind_30": "Brise rafra\u00eechissante 30 minutes", - "hqd_cold_wind_timing": "Brise rafra\u00eechissante ", + "hqd_cold_wind_30": "Brise rafraîchissante 30 minutes", + "hqd_cold_wind_timing": "Brise rafraîchissante ", "hqd_cotton": "Coton", "hqd_curtain": "Rideaux", - "hqd_delicate": "D\u00e9licats", + "hqd_delicate": "Délicats", "hqd_diaper": "Couches", "hqd_duvet": "Couette", "hqd_feather": "Vestes en duvet", "hqd_hot_wind_timing": "Air chaud", - "hqd_hygienic": "Hygi\u00e9nisation", + "hqd_hygienic": "Hygiénisation", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", "hqd_jacket": "Vestes", "hqd_jeans": "Jeans", "hqd_luxury": "Luxury", - "hqd_mix": "Tissus m\u00e9lang\u00e9s", - "hqd_night_dry": "S\u00e9chage toute la nuit", + "hqd_mix": "Tissus mélangés", + "hqd_night_dry": "Séchage toute la nuit", "hqd_outdoor": "Outdoor", "hqd_precious_cure": "Precious cure", - "hqd_quick_20": "Rapide 20\u2019", - "hqd_quick_30": "Rapide 30\u2019", - "hqd_quick_dry": "S\u00e9chage rapide", + "hqd_quick_20": "Rapide 20’", + "hqd_quick_30": "Rapide 30’", + "hqd_quick_dry": "Séchage rapide", "hqd_quilt": "Couvertures", - "hqd_refresh": "Rafra\u00eechissement", + "hqd_refresh": "Rafraîchissement", "hqd_school_uniform": "Uniforme scolaire", "hqd_shirt": "Chemises", "hqd_shoes": "Chaussures", "hqd_silk": "Soie", "hqd_sports": "Sport", - "hqd_synthetics": "Synth\u00e9tiques", - "hqd_timer": "Temporis\u00e9", + "hqd_synthetics": "Synthétiques", + "hqd_timer": "Temporisé", "hqd_towel": "Serviettes", - "hqd_underwear": "Sous-v\u00eatements", - "hqd_warm_up": "R\u00e9veil", + "hqd_underwear": "Sous-vêtements", + "hqd_warm_up": "Réveil", "hqd_wool": "Laine", - "hqd_working_suit": "V\u00eatements de travail", - "hygiene": "Hygi\u00e8ne", - "iot_checkup": "V\u00e9rification", + "hqd_working_suit": "Vêtements de travail", + "hygiene": "Hygiène", + "iot_checkup": "Vérification", "iot_dry_anti_mites": "Anti-acariens", "iot_dry_baby": "Baby", - "iot_dry_backpacks": "Sac \u00e0 dos", + "iot_dry_backpacks": "Sac à dos", "iot_dry_bathrobe": "Peignoir", "iot_dry_bed_linen": "Linge de lit", "iot_dry_bed_quilt": "Couette", "iot_dry_cotton": "Coton", "iot_dry_cuddly_toys": "Jouets en peluche", "iot_dry_curtains": "Rideaux", - "iot_dry_dehumidifier": "\u00c9limination de l\\'humidit\u00e9", - "iot_dry_delicates": "D\u00e9licats", - "iot_dry_delicate_tablecloths": "Nappes d\u00e9licates", + "iot_dry_dehumidifier": "Élimination de l\\'humidité", + "iot_dry_delicates": "Délicats", + "iot_dry_delicate_tablecloths": "Nappes délicates", "iot_dry_denim_jeans": "Denim - jeans", "iot_dry_down_jacket": "Jacket", "iot_dry_duvet": "Couette", "iot_dry_easy_iron_cotton": "Repassage super facile", - "iot_dry_easy_iron_synthetics": "Repassage super facile des synth\u00e9tiques", + "iot_dry_easy_iron_synthetics": "Repassage super facile des synthétiques", "iot_dry_gym_fit": "Sport", "iot_dry_lingerie": "Lingerie", - "iot_dry_mixed": "Tissus m\u00e9lang\u00e9s", + "iot_dry_mixed": "Tissus mélangés", "iot_dry_playsuits": "Combinaisons", "iot_dry_rapid_30": "Rapid 30", "iot_dry_rapid_59": "Rapide 59'.", - "iot_dry_refresh": "Coup d\\'\u00e9clat", - "iot_dry_regenerates_waterproof": "Imperm\u00e9abilisant", + "iot_dry_refresh": "Coup d\\'éclat", + "iot_dry_regenerates_waterproof": "Imperméabilisant", "iot_dry_relax_creases": "Anti-plis", "iot_dry_shirts": "Chemises", "iot_dry_small_load": "Faible charge", "iot_dry_swimsuits_and_bikinis": "Maillots de bain", - "iot_dry_synthetics": "Synth\u00e9tiques", - "iot_dry_synthetic_dry": "S\u00e9chage des synth\u00e9tiques", + "iot_dry_synthetics": "Synthétiques", + "iot_dry_synthetic_dry": "Séchage des synthétiques", "iot_dry_tablecloths": "Nappes", "iot_dry_technical_fabrics": "Textiles techniques", - "iot_dry_warm_embrace": "Chauffage d\u00e9licat", + "iot_dry_warm_embrace": "Chauffage délicat", "iot_dry_wool": "Woolmark", "jeans": "Jeans", "mix_and_dry": "Mix&Dry", "pets": "Animaux de compagnie", - "pre_iron": "Pr\u00e9-repassage", + "pre_iron": "Pré-repassage", "rapid_30": "Rapid 30", "rapid_45": "Rapide 45 min", "rapid_59": "Lavage Parfait 59 Min", - "refresh": "Coup d'\u00e9clat", + "refresh": "Coup d'éclat", "relax_creases": "Anti-plis", "saving_30_min": "ECO 30'", "shirts": "Chemises", @@ -476,14 +475,14 @@ "super_easy_iron_misti": "Repassage super facile des mixtes", "super_easy_iron_xxl": "Repassage super facile XXL", "super_fast_cottons": "Super rapide coton", - "super_fast_delicates": "Super rapide d\u00e9licat", - "synthetics": "Synth\u00e9tiques", + "super_fast_delicates": "Super rapide délicat", + "synthetics": "Synthétiques", "total_care": "Total Care", "trainers": "Baskets", "ultra_care": "Ultra Care", - "waterproof_revitalize": "Entretien imperm\u00e9able", + "waterproof_revitalize": "Entretien imperméable", "whites": "Blancs", - "wool": "S\u00e9chage Laine", + "wool": "Séchage Laine", "woolmark": "Woolmark", "xxl_load": "Charge XXL", "zoom_59": "Zoom 59" @@ -492,8 +491,8 @@ }, "programs_wm": { "state": { - "20_degrees_coloured_cottons": "Couleurs 20\u00a0\u00b0C et cotons", - "20_degrees_new_energy_label": "20\u00b0C", + "20_degrees_coloured_cottons": "Couleurs 20 °C et cotons", + "20_degrees_new_energy_label": "20°C", "active_steam": "Vapeur d'eau", "active_wash": "Lavage actif", "active_wash_steam": "Lavage actif", @@ -504,128 +503,128 @@ "all_in_one_59_steam": "Lavage actif + vapeur", "autocare": "Autocare", "autoclean": "Nettoyage du tambour", - "baby_60": "B\u00e9b\u00e9 60\u00b0C", + "baby_60": "Bébé 60°C", "care_14": "Soin Rapide 14'", "care_30": "Soin Rapide 30'", "care_44": "Soin Rapide 44'", - "checkup": "V\u00e9rification", + "checkup": "Vérification", "colour_59": "Couleurs 59'", "colour_59_steam": "Couleurs 59' + Vapeur", "cottons": "Coton", - "cottons_prewash": "Coton + pr\u00e9lavage", + "cottons_prewash": "Coton + prélavage", "cottons_steam": "Coton + Vapeur d'eau", "cotton_care_59": "Cotton Care 59 Min", - "delicate_59": "D\u00e9licat 59'", - "delicate_silk": "D\u00e9licat", - "delicate_silk_steam": "D\u00e9licat + vapeur", - "delicati_59": "D\u00e9licat 59'", - "delicati_59_steam": "D\u00e9licat 59'", + "delicate_59": "Délicat 59'", + "delicate_silk": "Délicat", + "delicate_silk_steam": "Délicat + vapeur", + "delicati_59": "Délicat 59'", + "delicati_59_steam": "Délicat 59'", "drain_spin": "Vidange et essorage", "easy_iron": "Repassage facile", - "eco_40_60_new_energy_label": "\u00c9co 40-60", + "eco_40_60_new_energy_label": "Éco 40-60", "extra_care": "Soin Extra", "fitness": "Fitness Care", "fitness_care": "Fitness Care", "fresh_care": "Soin frais", "fresh_care_steam": "Fresh Care + vapeur", - "handwash_wool": "Lavage \u00e0 la main et laine", - "high_dry": "S\u00e9chage du coton", - "hqd_20_degrees": "Coton 20\u00a0\u2103", + "handwash_wool": "Lavage à la main et laine", + "high_dry": "Séchage du coton", + "hqd_20_degrees": "Coton 20 ℃", "hqd_allergy": "Soin Allergie", "hqd_autoclean": "Nettoyage du tambour", - "hqd_babycare": "Soin B\u00e9b\u00e9", - "hqd_checkup": "V\u00e9rification", + "hqd_babycare": "Soin Bébé", + "hqd_checkup": "Vérification", "hqd_cottons": "Coton", - "hqd_delicate": "D\u00e9licats", - "hqd_delicate_cradle": "D\u00e9licats", - "hqd_dry": "S\u00e9chage du coton", - "hqd_dry_synthetics": "S\u00e9chage des tissus m\u00e9lang\u00e9s", + "hqd_delicate": "Délicats", + "hqd_delicate_cradle": "Délicats", + "hqd_dry": "Séchage du coton", + "hqd_dry_synthetics": "Séchage des tissus mélangés", "hqd_duvet": "Couette", - "hqd_eco_40_60_degrees": "\u00c9co 40-60", + "hqd_eco_40_60_degrees": "Éco 40-60", "hqd_handwash_wool": "Laine", "hqd_i_refresh": "i-Refresh", - "hqd_mix": "Tissus m\u00e9lang\u00e9s", + "hqd_mix": "Tissus mélangés", "hqd_quick_15": "Rapide 15'", "hqd_quick_wash_57": "Lavage rapide 57 min", - "hqd_rapid_wash_and_dry": "Lavage et s\u00e9chage", - "hqd_refresh": "Coup d\\'\u00e9clat", - "hqd_rinse": "Rin\u00e7age", + "hqd_rapid_wash_and_dry": "Lavage et séchage", + "hqd_refresh": "Coup d\\'éclat", + "hqd_rinse": "Rinçage", "hqd_shirts": "Chemises", "hqd_smart": "Smart A.I.", "hqd_spin": "Essorage", "hqd_sport": "Sport", - "hqd_super_fast": "Rapide 39\u2019", - "hqd_synthetic_and_coloured": "Synth\u00e9tiques", + "hqd_super_fast": "Rapide 39’", + "hqd_synthetic_and_coloured": "Synthétiques", "hygiene_59": "Hygiene Plus 59'", - "hygiene_60": "Hygi\u00e8ne 60\u00b0", + "hygiene_60": "Hygiène 60°", "hygiene_plus_59": "Hygiene Plus 59'", "hygiene_plus_59_min": "Hygiene Plus 59'", - "hygiene_pro_49_min": "Hygiene Pro 49\u00a0min", + "hygiene_pro_49_min": "Hygiene Pro 49 min", "hygiene_pro_steam": "Hygiene Pro + Vapeur", - "intensive_40": "Intensif 40\u00b0C", - "intensive_40_steam": "Intensif 40\u00b0C + Vapeur", + "intensive_40": "Intensif 40°C", + "intensive_40_steam": "Intensif 40°C + Vapeur", "iot_active_steam": "Vapeur d'eau", "iot_active_wash_steam": "Lavage actif", "iot_allergy_care_pro": "Soin Allergie Pro", "iot_all_in_one_59_steam": "Lavage actif + vapeur", - "iot_checkup": "V\u00e9rification", + "iot_checkup": "Vérification", "iot_colour_59_steam": "Couleurs 59' + Vapeur", "iot_cottons_steam": "Coton + Vapeur d'eau", - "iot_delicate_silk_steam": "D\u00e9licat + vapeur", - "iot_delicati_59_steam": "D\u00e9licat 59'", - "iot_dry_air_refresh": "Rafra\u00eechissement de l'air", + "iot_delicate_silk_steam": "Délicat + vapeur", + "iot_delicati_59_steam": "Délicat 59'", + "iot_dry_air_refresh": "Rafraîchissement de l'air", "iot_dry_anti_mites": "Anti-acarien", - "iot_dry_baby": "B\u00e9b\u00e9", - "iot_dry_backpacks": "Sacs \u00e0 dos", + "iot_dry_baby": "Bébé", + "iot_dry_backpacks": "Sacs à dos", "iot_dry_bathrobe": "Peignoirs et tissus poreux", "iot_dry_bed_linen": "Linge de lit", - "iot_dry_cotton_dry": "S\u00e9chage du coton", + "iot_dry_cotton_dry": "Séchage du coton", "iot_dry_cuddly_toys": "Animaux en peluche", "iot_dry_curtains": "Rideaux", - "iot_dry_dehumidifier": "\u00c9limination de l\\'humidit\u00e9", - "iot_dry_delicates_antiallergy": "D\u00e9licat - anti-allergique", - "iot_dry_delicate_tablecloths": "Nappes d\u00e9licates", + "iot_dry_dehumidifier": "Élimination de l\\'humidité", + "iot_dry_delicates_antiallergy": "Délicat - anti-allergique", + "iot_dry_delicate_tablecloths": "Nappes délicates", "iot_dry_denim_jeans": "Denim - Jeans", "iot_dry_easy_iron_cotton": "Repassage facile - Coton", - "iot_dry_easy_iron_synthetics": "Repassage facile - Synth\u00e9tiques", - "iot_dry_gym_fit": "Gym - v\u00eatements de fitness", + "iot_dry_easy_iron_synthetics": "Repassage facile - Synthétiques", + "iot_dry_gym_fit": "Gym - vêtements de fitness", "iot_dry_lingerie": "Lingerie", - "iot_dry_mixed_dry": "S\u00e9chage des tissus m\u00e9lang\u00e9s", - "iot_dry_rapid_60_min_delicates": "Rapid 60' - D\u00e9licats", + "iot_dry_mixed_dry": "Séchage des tissus mélangés", + "iot_dry_rapid_60_min_delicates": "Rapid 60' - Délicats", "iot_dry_shirts": "Chemises", "iot_dry_swimsuits_and_bikinis": "Maillots de bain", - "iot_dry_synthetics": "S\u00e9chage des synth\u00e9tiques", - "iot_dry_synthetic_dry": "S\u00e9chage des synth\u00e9tiques", + "iot_dry_synthetics": "Séchage des synthétiques", + "iot_dry_synthetic_dry": "Séchage des synthétiques", "iot_dry_tablecloths": "Nappes", "iot_dry_technical_fabrics": "Tissus techniques", - "iot_dry_warm_embrace": "\u00c9treinte chaude", - "iot_dry_wool_dry": "S\u00e9chage de la laine", + "iot_dry_warm_embrace": "Étreinte chaude", + "iot_dry_wool_dry": "Séchage de la laine", "iot_easy_iron": "Repassage facile", "iot_fresh_care_steam": "Fresh Care + vapeur", "iot_hygiene_pro_steam": "Hygiene Pro + Vapeur", - "iot_intensive_40_steam": "Intensif 40\u00b0C + Vapeur", - "iot_mixed_steam": "Tissus m\u00e9lang\u00e9s + Vapeur d'eau", - "iot_mix_and_colour_59_steam": "Mixtes et couleurs 59\u2019 + vapeur", + "iot_intensive_40_steam": "Intensif 40°C + Vapeur", + "iot_mixed_steam": "Tissus mélangés + Vapeur d'eau", + "iot_mix_and_colour_59_steam": "Mixtes et couleurs 59’ + vapeur", "iot_perfect_cotton_59_steam": "Coton Parfait 59'", - "iot_rapid_a_class_60_steam": "Classe\u00a0A rapide 60 + Vapeur", + "iot_rapid_a_class_60_steam": "Classe A rapide 60 + Vapeur", "iot_resistant_cotton_steam": "Coton + Vapeur d'eau", "iot_shirts_steam": "Chemises + Vapeur", "iot_single_item_steam": "Article unique + vapeur", "iot_smart_wash": "Lavage intelligent", "iot_soft_care_steam": "Soft Care + Steam", - "iot_special_39_full_load_steam": "Sp\u00e9cial 39\u2019 + vapeur", - "iot_steam_hygiene_plus": "Vapeur Hygi\u00e8ne Plus ", - "iot_synthetic_and_coloured_steam": "Synth\u00e9tiques et couleurs + vapeur", - "iot_wash_and_dry": "Lavage et s\u00e9chage", + "iot_special_39_full_load_steam": "Spécial 39’ + vapeur", + "iot_steam_hygiene_plus": "Vapeur Hygiène Plus ", + "iot_synthetic_and_coloured_steam": "Synthétiques et couleurs + vapeur", + "iot_wash_and_dry": "Lavage et séchage", "iot_wash_anti_mites": "Anti-acarien", "iot_wash_anti_odor": "Anti-odeur", "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", "iot_wash_baby_sanitizer": "Assainissant", - "iot_wash_baby_sanitizer_steam": "Assainissant + Vapeur pour b\u00e9b\u00e9s", - "iot_wash_backpacks": "Sacs \u00e0 dos", - "iot_wash_backpacks_zelig": "Sac \u00e0 dos", + "iot_wash_baby_sanitizer_steam": "Assainissant + Vapeur pour bébés", + "iot_wash_backpacks": "Sacs à dos", + "iot_wash_backpacks_zelig": "Sac à dos", "iot_wash_bathrobe": "Peignoirs et serviettes", "iot_wash_bathrobe_steam": "Peignoir de bain + Vapeur d'eau", "iot_wash_bed_linen": "Linge de lit", @@ -636,16 +635,16 @@ "iot_wash_blood_stains": "Taches de sang", "iot_wash_cashmere": "Cachemire", "iot_wash_chocolate_stains": "Taches de chocolat", - "iot_wash_cold_wash": "Lavage \u00e0 froid", - "iot_wash_colored": "Color\u00e9s", - "iot_wash_colored_anti_stain": "D\u00e9tachage pour les couleurs", - "iot_wash_colored_delicate": "D\u00e9licats color\u00e9s", + "iot_wash_cold_wash": "Lavage à froid", + "iot_wash_colored": "Colorés", + "iot_wash_colored_anti_stain": "Détachage pour les couleurs", + "iot_wash_colored_delicate": "Délicats colorés", "iot_wash_coloured": "Couleurs", "iot_wash_coloured_bed_linen": "Draps de couleur", "iot_wash_coloured_bed_linen_steam": "Draps de couleur + Vapeur", "iot_wash_coloured_curtains": "Rideaux de couleur", "iot_wash_coloured_shirts": "T-shirts de couleur", - "iot_wash_coloured_shirts_steam": "Chemises color\u00e9es + Vapeur", + "iot_wash_coloured_shirts_steam": "Chemises colorées + Vapeur", "iot_wash_coloured_steam": "Couleurs + Vapeur d'eau", "iot_wash_coloured_tableclothes": "Nappes de couleur", "iot_wash_coloured_tableclothes_steam": "Nappes de couleur + vapeur", @@ -655,67 +654,67 @@ "iot_wash_curtains": "Rideaux", "iot_wash_curtains_steam": "Rideaux+Vapeur d'eau", "iot_wash_curtains_zelig": "Rideaux", - "iot_wash_dark": "V\u00eatements sombres", - "iot_wash_darks_and_coloured_44": "Fonc\u00e9s et color\u00e9s 44'", - "iot_wash_darks_and_coloured_59": "Fonc\u00e9s et color\u00e9s 59'", - "iot_wash_darks_and_coloured_xl": "Fonc\u00e9s et color\u00e9s XL", - "iot_wash_dark_steam": "V\u00eatements sombres + Vapeur d'eau", + "iot_wash_dark": "Vêtements sombres", + "iot_wash_darks_and_coloured_44": "Foncés et colorés 44'", + "iot_wash_darks_and_coloured_59": "Foncés et colorés 59'", + "iot_wash_darks_and_coloured_xl": "Foncés et colorés XL", + "iot_wash_dark_steam": "Vêtements sombres + Vapeur d'eau", "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", "iot_wash_dash_cold_cycle": "Dash Cold Clean", "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", - "iot_wash_delicate": "D\u00e9licats", + "iot_wash_delicate": "Délicats", "iot_wash_delicate_antiallergy": "Anti-allergie pour les personnes fragiles", "iot_wash_delicate_antiallergy_steam": "Anti-allergie pour les personnes fragiles + Vapeur d'eau", "iot_wash_delicate_antiallergy_zelig": "Anti-allergie pour les personnes fragiles", - "iot_wash_delicate_colors": "D\u00e9licats de couleur", + "iot_wash_delicate_colors": "Délicats de couleur", "iot_wash_delicate_colors_steam": "Couleurs + Vapeur", - "iot_wash_delicate_dark": "Fonc\u00e9s d\u00e9licats", - "iot_wash_delicate_steam": "D\u00e9licats + Vapeur d'eau", - "iot_wash_delicate_tablecloths": "Nappes d\u00e9licates", - "iot_wash_delicate_tablecloths_steam": "Nappes d\u00e9licates + Vapeur d'eau", - "iot_wash_delicate_whites": "Blancs d\u00e9licats", + "iot_wash_delicate_dark": "Foncés délicats", + "iot_wash_delicate_steam": "Délicats + Vapeur d'eau", + "iot_wash_delicate_tablecloths": "Nappes délicates", + "iot_wash_delicate_tablecloths_steam": "Nappes délicates + Vapeur d'eau", + "iot_wash_delicate_whites": "Blancs délicats", "iot_wash_denim_jeans": "Denim - jeans", - "iot_wash_diving_suits": "Combinaisons de plong\u00e9e", - "iot_wash_diving_suits_zelig": "Combinaisons de plong\u00e9e", + "iot_wash_diving_suits": "Combinaisons de plongée", + "iot_wash_diving_suits_zelig": "Combinaisons de plongée", "iot_wash_down_jackets": "Vestes en duvet", "iot_wash_down_jackets_zelig": "Vestes en duvet", "iot_wash_duvet": "Couette", "iot_wash_fruit_stains": "Taches de fruits", - "iot_wash_gym_fit": "Gym - v\u00eatements de fitness", - "iot_wash_handwash": "Lavage \u00e0 la main", - "iot_wash_handwash_colored": "Lavage \u00e0 la main des color\u00e9s", - "iot_wash_handwash_dark": "Lavage \u00e0 la main des fonc\u00e9s", + "iot_wash_gym_fit": "Gym - vêtements de fitness", + "iot_wash_handwash": "Lavage à la main", + "iot_wash_handwash_colored": "Lavage à la main des colorés", + "iot_wash_handwash_dark": "Lavage à la main des foncés", "iot_wash_lingerie": "Lingerie", - "iot_wash_masks_refresh": "Rafra\u00eechissement des masques", - "iot_wash_masks_sanification": "D\u00e9sinfection des masques", - "iot_wash_masks_sanification_steam": "D\u00e9sinfection des masques + Vapeur d'eau", + "iot_wash_masks_refresh": "Rafraîchissement des masques", + "iot_wash_masks_sanification": "Désinfection des masques", + "iot_wash_masks_sanification_steam": "Désinfection des masques + Vapeur d'eau", "iot_wash_mats": "Tapis", "iot_wash_men_s_trousers": "Pantalons ", - "iot_wash_mixed": "Tissus m\u00e9lang\u00e9s", - "iot_wash_mixed_steam": "Tissus m\u00e9lang\u00e9s + Vapeur d'eau", - "iot_wash_mix_and_coloured_44": "Tissus m\u00e9lang\u00e9s et color\u00e9s 44'", - "iot_wash_mix_and_coloured_59": "Tissus m\u00e9lang\u00e9s et color\u00e9s 59'", - "iot_wash_mix_and_coloured_xl": "Tissus m\u00e9lang\u00e9s et color\u00e9s XL", - "iot_wash_new_clothes": "V\u00eatements neufs", + "iot_wash_mixed": "Tissus mélangés", + "iot_wash_mixed_steam": "Tissus mélangés + Vapeur d'eau", + "iot_wash_mix_and_coloured_44": "Tissus mélangés et colorés 44'", + "iot_wash_mix_and_coloured_59": "Tissus mélangés et colorés 59'", + "iot_wash_mix_and_coloured_xl": "Tissus mélangés et colorés XL", + "iot_wash_new_clothes": "Vêtements neufs", "iot_wash_perfect_white": "Un blanc parfait", "iot_wash_perfect_white_steam": "Un blanc parfait + Vapeur d'eau", "iot_wash_pets": "Accessoires pour animaux", - "iot_wash_pets_hair_removal": "\u00c9limination des poils d\u2019animaux de compagnie", - "iot_wash_pets_odours_stains_removal": "\u00c9limination des taches et des odeurs provenant des animaux de compagnie", + "iot_wash_pets_hair_removal": "Élimination des poils d’animaux de compagnie", + "iot_wash_pets_odours_stains_removal": "Élimination des taches et des odeurs provenant des animaux de compagnie", "iot_wash_pets_steam": "Accessoires pour animaux", "iot_wash_playsuits": "Barboteuses", "iot_wash_playsuits_steam": "Barboteuses + Vapeur d'eau", "iot_wash_quick_drum_cleaner": "Nettoyant tambour rapide", - "iot_wash_rapid_14": "Rapide 14\u2019", - "iot_wash_rapid_30": "Rapide 30\u2019", + "iot_wash_rapid_14": "Rapide 14’", + "iot_wash_rapid_30": "Rapide 30’", "iot_wash_rapid_44": "Rapide 44'", "iot_wash_rapid_59": "Rapide 59'", "iot_wash_rapid_59_steam": "Rapide 59' + Vapeur", - "iot_wash_refresh_14_min": "Rafra\u00eechir 14'", - "iot_wash_resistant_colored": "Color\u00e9s r\u00e9sistants", - "iot_wash_resistant_dark": "Fonc\u00e9s r\u00e9sistants", - "iot_wash_resistant_whites": "Blancs r\u00e9sistants", - "iot_wash_rinse": "Rin\u00e7age", + "iot_wash_refresh_14_min": "Rafraîchir 14'", + "iot_wash_resistant_colored": "Colorés résistants", + "iot_wash_resistant_dark": "Foncés résistants", + "iot_wash_resistant_whites": "Blancs résistants", + "iot_wash_rinse": "Rinçage", "iot_wash_shirts": "Chemises", "iot_wash_shirts_steam": "Chemises + Vapeur d'eau", "iot_wash_silk": "Soie", @@ -723,12 +722,12 @@ "iot_wash_ski_suit_zelig": "Combinaisons de ski", "iot_wash_spin": "Essorage", "iot_wash_sport": "Sport", - "iot_wash_sport_anti_odor": "Anti-odeur pour les v\u00eatements de sport", - "iot_wash_sport_anti_odor_zelig": "Anti-odeur pour les v\u00eatements de sport", - "iot_wash_stains_remover": "D\u00e9tachant", + "iot_wash_sport_anti_odor": "Anti-odeur pour les vêtements de sport", + "iot_wash_sport_anti_odor_zelig": "Anti-odeur pour les vêtements de sport", + "iot_wash_stains_remover": "Détachant", "iot_wash_swimsuits_and_bikinis": "Maillots de bain", - "iot_wash_synthetic": "Synth\u00e9tiques", - "iot_wash_synthetic_steam": "Synth\u00e9tiques + Vapeur d'eau", + "iot_wash_synthetic": "Synthétiques", + "iot_wash_synthetic_steam": "Synthétiques + Vapeur d'eau", "iot_wash_tablecloths": "Nappes", "iot_wash_tablecloths_steam": "Nappes + Vapeur d'eau", "iot_wash_technical_fabrics": "Tissus techniques", @@ -744,12 +743,12 @@ "iot_wash_wool": "Laine", "jeans": "Jeans", "jeans_60": "Jeans", - "low_dry": "S\u00e9chage des tissus m\u00e9lang\u00e9s", - "mixed": "Tissus m\u00e9lang\u00e9s", - "mixed_and_colored_59": "Tissus m\u00e9lang\u00e9s et couleurs 59'", - "mixed_steam": "Tissus m\u00e9lang\u00e9s + Vapeur d'eau", + "low_dry": "Séchage des tissus mélangés", + "mixed": "Tissus mélangés", + "mixed_and_colored_59": "Tissus mélangés et couleurs 59'", + "mixed_steam": "Tissus mélangés + Vapeur d'eau", "mix_and_colour_59": "Mixtes + Couleurs 59'", - "mix_and_colour_59_steam": "Mixtes et couleurs 59\u2019 + vapeur", + "mix_and_colour_59_steam": "Mixtes et couleurs 59’ + vapeur", "night_and_day": "Nuit et jour", "night_wash": "Cycle de nuit", "perfect_59": "Parfait 59'", @@ -759,15 +758,15 @@ "rapid_14_min": "Rapide 14'.", "rapid_30_min": "Rapide 30'", "rapid_44_min": "Rapide 44'", - "rapid_a_class_60": "Classe\u00a0A rapide 60", - "rapid_a_class_60_steam": "Classe\u00a0A rapide 60 + Vapeur", - "rapid_wash_and_dry_59_min": "Lavage et s\u00e9chage 59'.", + "rapid_a_class_60": "Classe A rapide 60", + "rapid_a_class_60_steam": "Classe A rapide 60 + Vapeur", + "rapid_wash_and_dry_59_min": "Lavage et séchage 59'.", "resistant_cotton": "Coton", "resistant_cotton_steam": "Coton + Vapeur d'eau", - "rinse": "Rin\u00e7age", + "rinse": "Rinçage", "shirts_steam": "Chemises + Vapeur", "silent_night": "Cycle de nuit", - "single_item": "\u00c9l\u00e9ment unique", + "single_item": "Élément unique", "single_item_steam": "Article unique + vapeur", "smart_wash": "Lavage intelligent", "soft_care": "Soin Doux", @@ -775,53 +774,53 @@ "soft_care_steam_title": "Soft Care + Steam", "special_39": "Special 39'", "special_39_full_load": "Special 39'", - "special_39_full_load_steam": "Sp\u00e9cial 39\u2019 + vapeur", - "special_49": "Sp\u00e9cial 49'", + "special_39_full_load_steam": "Spécial 39’ + vapeur", + "special_49": "Spécial 49'", "sport_39": "Sport 39'", "sport_plus_29": "Sport Plus 29\"", "sport_plus_39": "Sport Plus 39'", "steam_39": "Vapeur 39'", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - Coton", - "steam_care_pro_delicates": "Steam Care Pro - D\u00e9licats", - "steam_care_pro_synthetic": "Steam Care Pro - Synth\u00e9tiques", - "steam_hygiene_plus": "Vapeur Hygi\u00e8ne Plus ", - "synthetics": "Synth\u00e9tiques", - "synthetic_and_coloured": "Synth\u00e9tiques et couleurs", - "synthetic_and_coloured_steam": "Synth\u00e9tiques et couleurs + vapeur", + "steam_care_pro_delicates": "Steam Care Pro - Délicats", + "steam_care_pro_synthetic": "Steam Care Pro - Synthétiques", + "steam_hygiene_plus": "Vapeur Hygiène Plus ", + "synthetics": "Synthétiques", + "synthetic_and_coloured": "Synthétiques et couleurs", + "synthetic_and_coloured_steam": "Synthétiques et couleurs + vapeur", "tailored_resistant_cotton": "Tailored Resistant Cotton", "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", "total_care": "Soin total", "tumbling": "Tumble", "wool": "Laine", - "wool_and_delicates_49": "Laine/D\u00e9licat 49'", - "wool_dry": "S\u00e9chage de la laine", + "wool_and_delicates_49": "Laine/Délicat 49'", + "wool_dry": "Séchage de la laine", "wool_soft_care": "Laine & Soin Doux" }, "name": "Programme" }, "dry_levels": { "state": { - "0": "Pas de s\u00e9chage", + "0": "Pas de séchage", "1": "Fer", - "2": "Pr\u00eat \u00e0 ranger", - "3": "Pr\u00eat \u00e0 ranger", + "2": "Prêt à ranger", + "3": "Prêt à ranger", "4": "Extra sec", "12": "Fer", - "13": "Pr\u00eat \u00e0 ranger", - "14": "Pr\u00eat \u00e0 porter", + "13": "Prêt à ranger", + "14": "Prêt à porter", "15": "Extra sec" }, - "name": "Niveau de s\u00e9chage" + "name": "Niveau de séchage" }, "spin_speed": { "name": "Essorage" }, "temperature": { - "name": "Temp\u00e9rature" + "name": "Température" }, "dry_time": { - "name": "Temps de s\u00e9chage" + "name": "Temps de séchage" } }, "switch": { @@ -832,7 +831,7 @@ "name": "" }, "eco_express": { - "name": "\u00c9co" + "name": "Éco" }, "extra_dry": { "name": "Extra sec" @@ -847,34 +846,34 @@ "name": "3-en-1" }, "preheat": { - "name": "Pr\u00e9chauffage" + "name": "Préchauffage" }, "dish_washer": { "name": "Lave-vaisselle" }, "tumble_dryer": { - "name": "S\u00e8che-linge" + "name": "Sèche-linge" }, "washing_machine": { "name": "Lave-linge" }, "washer_dryer": { - "name": "Lave-linge s\u00e9chant" + "name": "Lave-linge séchant" }, "oven": { "name": "Four" }, "prewash": { - "name": "Pr\u00e9lavage" + "name": "Prélavage" }, "pause": { "name": "Pause" }, "keep_fresh": { - "name": "Garder la fra\u00eecheur" + "name": "Garder la fraîcheur" }, "delay_time": { - "name": "D\u00e9marrage Diff\u00e9r\u00e9" + "name": "Démarrage Différé" } }, "binary_sensor": { @@ -882,13 +881,13 @@ "name": "Loquet de la porte" }, "extra_rinse_1": { - "name": "+1 rin\u00e7age" + "name": "+1 rinçage" }, "extra_rinse_2": { - "name": "+2 rin\u00e7ages" + "name": "+2 rinçages" }, "extra_rinse_3": { - "name": "+3 rin\u00e7ages" + "name": "+3 rinçages" }, "good_night": { "name": "Bonne nuit" @@ -924,10 +923,10 @@ "name": "Casserole" }, "remote_control": { - "name": "Contr\u00f4le \u00e0 distance" + "name": "Contrôle à distance" }, "rinse_aid": { - "name": "Niveau d'aide de rin\u00e7age" + "name": "Niveau d'aide de rinçage" }, "salt_level": { "name": "Niveau de sel" @@ -936,16 +935,16 @@ "name": "Porte ouverte" }, "connection": { - "name": "Connexion de l\u2019appareil" + "name": "Connexion de l’appareil" }, "child_lock": { - "name": "S\u00e9curit\u00e9 enfants" + "name": "Sécurité enfants" }, "on": { "name": "Marche" }, "prewash": { - "name": "Pr\u00e9lavage" + "name": "Prélavage" } }, "number": { @@ -953,33 +952,33 @@ "name": "Gestion de la puissance" }, "temperature": { - "name": "Temp\u00e9rature" + "name": "Température" }, "delay_time": { - "name": "D\u00e9marrage Diff\u00e9r\u00e9" + "name": "Démarrage Différé" }, "water_hard": { - "name": "Duret\u00e9 de l'eau" + "name": "Dureté de l'eau" }, "program_duration": { - "name": "Dur\u00e9e du programme" + "name": "Durée du programme" }, "target_temperature": { - "name": "Temp\u00e9rature souhait\u00e9e" + "name": "Température souhaitée" }, "rinse_iterations": { - "name": "Nombre de rin\u00e7ages" + "name": "Nombre de rinçages" }, "wash_time": { - "name": "Dur\u00e9e de lavage" + "name": "Durée de lavage" }, "dry_time": { - "name": "Temps de s\u00e9chage" + "name": "Temps de séchage" } }, "button": { "induction_hob": { - "name": "Table de cuisson \u00e0 induction" + "name": "Table de cuisson à induction" } } } diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index 27f06c7..a674ea3 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -3,85 +3,85 @@ "sensor": { "washing_modes": { "state": { - "0": "\u05de\u05d5\u05bc\u05db\u05b8\u05df", - "1": "\u05de\u05d5\u05bc\u05db\u05b8\u05df", - "3": "\u05d4\u05b7\u05e4\u05e1\u05b8\u05e7\u05b8\u05d4", - "4": "\u05de\u05ea\u05d5\u05d6\u05de\u05df", - "5": "\u05de\u05ea\u05d5\u05d6\u05de\u05df", - "6": "\u05e9\u05c1\u05b0\u05d2\u05b4\u05d9\u05d0\u05b8\u05d4", - "7": "\u05de\u05d5\u05bc\u05db\u05b8\u05df" + "0": "מוּכָן", + "1": "מוּכָן", + "3": "הַפסָקָה", + "4": "מתוזמן", + "5": "מתוזמן", + "6": "שְׁגִיאָה", + "7": "מוּכָן" } }, "program_phases_wm": { "state": { - "0": "\u05de\u05d5\u05bc\u05db\u05b8\u05df", - "1": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3", - "2": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3", + "0": "מוּכָן", + "1": "לִשְׁטוֹף", + "2": "לִשְׁטוֹף", "3": "Spin", - "4": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3", - "5": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3", - "6": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3", - "7": "\u05d9\u05b4\u05d1\u05bc\u05d5\u05bc\u05e9\u05c1", - "9": "\u05e7\u05b4\u05d9\u05d8\u05d5\u05b9\u05e8", - "10": "\u05de\u05d5\u05bc\u05db\u05b8\u05df", + "4": "לִשְׁטוֹף", + "5": "לִשְׁטוֹף", + "6": "לִשְׁטוֹף", + "7": "יִבּוּשׁ", + "9": "קִיטוֹר", + "10": "מוּכָן", "11": "Spin", "12": "Weighing ", "13": "Weighing ", - "14": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3", - "15": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3", - "16": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3", - "17": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3", - "18": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3", - "19": "\u05de\u05ea\u05d5\u05d6\u05de\u05df", - "20": "\u05e9\u05de\u05d5\u05e8 \u05e2\u05dc \u05d8\u05e8\u05d9\u05d5\u05ea", + "14": "לִשְׁטוֹף", + "15": "לִשְׁטוֹף", + "16": "לִשְׁטוֹף", + "17": "לִשְׁטוֹף", + "18": "לִשְׁטוֹף", + "19": "מתוזמן", + "20": "שמור על טריות", "24": "Refresh", - "25": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3", + "25": "לִשְׁטוֹף", "26": "Heating", - "27": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3" + "27": "לִשְׁטוֹף" }, - "name": "\u05e9\u05dc\u05d1" + "name": "שלב" }, "program_phases_td": { "state": { - "0": "\u05de\u05d5\u05bc\u05db\u05b8\u05df", + "0": "מוּכָן", "1": "Drying", - "2": "\u05d9\u05b4\u05d1\u05bc\u05d5\u05bc\u05e9\u05c1", + "2": "יִבּוּשׁ", "3": "Cooldown", "13": "Cooldown", "14": "Drying", "15": "Drying", "16": "Cooldown", "18": "Keep Fresh", - "19": "\u05d9\u05b4\u05d1\u05bc\u05d5\u05bc\u05e9\u05c1", - "20": "\u05d9\u05b4\u05d1\u05bc\u05d5\u05bc\u05e9\u05c1" + "19": "יִבּוּשׁ", + "20": "יִבּוּשׁ" }, - "name": "\u05e9\u05dc\u05d1" + "name": "שלב" }, "program_phases_dw": { "state": { - "0": "\u05de\u05d5\u05bc\u05db\u05b8\u05df", + "0": "מוּכָן", "1": "Prewash", - "2": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3", - "3": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3", - "4": "\u05d9\u05b4\u05d1\u05bc\u05d5\u05bc\u05e9\u05c1", - "5": "\u05de\u05d5\u05bc\u05db\u05b8\u05df", + "2": "לִשְׁטוֹף", + "3": "לִשְׁטוֹף", + "4": "יִבּוּשׁ", + "5": "מוּכָן", "6": "Hot rinse" }, - "name": "\u05e9\u05dc\u05d1" + "name": "שלב" }, "dry_levels": { "state": { - "0": "\u05dc\u05dc\u05d0 \u05d9\u05d9\u05d1\u05d5\u05e9", - "1": "\u05d1\u05bc\u05b7\u05e8\u05d6\u05b6\u05dc", - "2": "\u05dc\u05d0 \u05dc\u05d9\u05d9\u05d1\u05e9 \u05d1\u05e8\u05d6\u05dc", - "3": "\u05d0\u05e8\u05d5\u05df \u05d9\u05d1\u05e9", - "4": "\u05d9\u05d1\u05e9 \u05d1\u05de\u05d9\u05d5\u05d7\u05d3", - "12": "\u05d1\u05bc\u05b7\u05e8\u05d6\u05b6\u05dc", - "13": "\u05d0\u05e8\u05d5\u05df \u05d9\u05d1\u05e9", + "0": "ללא ייבוש", + "1": "בַּרזֶל", + "2": "לא לייבש ברזל", + "3": "ארון יבש", + "4": "יבש במיוחד", + "12": "בַּרזֶל", + "13": "ארון יבש", "14": "Ready to wear", - "15": "\u05d9\u05d1\u05e9 \u05d1\u05de\u05d9\u05d5\u05d7\u05d3" + "15": "יבש במיוחד" }, - "name": "\u05e8\u05de\u05ea \u05d9\u05d9\u05d1\u05d5\u05e9" + "name": "רמת ייבוש" }, "anti_crease": { "name": "Anticrease" @@ -90,7 +90,7 @@ "name": "Power level" }, "remaining_time": { - "name": "\u05d6\u05de\u05df \u05e9\u05e0\u05d5\u05ea\u05e8" + "name": "זמן שנותר" }, "temperature": { "name": "Temperature" @@ -102,31 +102,31 @@ "name": "Water savings" }, "duration": { - "name": "\u05de\u05b6\u05e9\u05c1\u05b6\u05da" + "name": "מֶשֶׁך" }, "target_temperature": { "name": "Target temperature" }, "spin_speed": { - "name": "\u05e1\u05d9\u05d1\u05d5\u05d1" + "name": "סיבוב" }, "steam_leve": { - "name": "\u05de\u05e4\u05dc\u05e1 \u05e7\u05d9\u05d8\u05d5\u05e8" + "name": "מפלס קיטור" }, "dirt_level": { - "name": "\u05e8\u05de\u05ea \u05e2\u05e4\u05e8" + "name": "רמת עפר" }, "delay_time": { "name": "Delay Start" }, "dry_time": { - "name": "\u05d6\u05de\u05df \u05d9\u05d9\u05d1\u05d5\u05e9" + "name": "זמן ייבוש" }, "suggested_load": { - "name": "\u05d9\u05db\u05d5\u05dc\u05ea \u05e2\u05d5\u05de\u05e1" + "name": "יכולת עומס" }, "energy_label": { - "name": "\u05d7\u05e1\u05db\u05d5\u05df \u05d1\u05d0\u05e0\u05e8\u05d2\u05d9\u05d4" + "name": "חסכון באנרגיה" }, "det_dust": { "name": "Powder detergent" @@ -141,7 +141,7 @@ "name": "Current program" }, "cycles_total": { - "name": "\u05de\u05d7\u05d6\u05d5\u05e8\u05d9\u05dd Total" + "name": "מחזורים Total" }, "energy_total": { "name": "Energy Consumption Total" @@ -160,7 +160,7 @@ "programs_dw": { "state": { "gentle_wash": "Gentle wash", - "iot_checkup": "\u05d1\u05bc\u05b0\u05d3\u05b4\u05d9\u05e7\u05b8\u05d4", + "iot_checkup": "בְּדִיקָה", "iot_dreft_quick_cycle": "Dreft Quick", "iot_fairy_quick_cycle": "Fairy Quick", "iot_jar_quick_cycle": "Jar Quick", @@ -194,232 +194,232 @@ "hqd_luxury": "Luxury", "hqd_night_dry": "Night dry", "hqd_refresh": "Refresh", - "hqd_timer": "\u05ea\u05d5\u05d6\u05de\u05df", + "hqd_timer": "תוזמן", "hqd_warm_up": "Warm up", "hqd_working_suit": "Working suit", - "iot_dry_synthetic_dry": "\u05e1\u05d9\u05e0\u05ea\u05d8\u05d9 \u05d9\u05d1\u05e9" + "iot_dry_synthetic_dry": "סינתטי יבש" }, "name": "Program" }, "programs_wm": { "state": { - "20_degrees_new_energy_label": "20 \u05de\u05e2\u05dc\u05d5\u05ea \u05e6\u05dc\u05d6\u05d9\u05d5\u05e1", - "active_steam": "\u05e7\u05b4\u05d9\u05d8\u05d5\u05b9\u05e8", - "active_wash": "\u05e9\u05d8\u05d9\u05e4\u05d4 \u05e4\u05e2\u05d9\u05dc\u05d4", - "active_wash_steam": "\u05e9\u05d8\u05d9\u05e4\u05d4 \u05e4\u05e2\u05d9\u05dc\u05d4", - "allergy_care": "\u05d8\u05d9\u05e4\u05d5\u05dc \u05d1\u05d0\u05dc\u05e8\u05d2\u05d9\u05d4", + "20_degrees_new_energy_label": "20 מעלות צלזיוס", + "active_steam": "קִיטוֹר", + "active_wash": "שטיפה פעילה", + "active_wash_steam": "שטיפה פעילה", + "allergy_care": "טיפול באלרגיה", "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "All in One 49 '", "all_in_one_59": "All in One 59 '", - "all_in_one_59_steam": "\u05e9\u05d8\u05d9\u05e4\u05d4 \u05e4\u05e2\u05d9\u05dc\u05d4", - "autocare": "\u05d8\u05d9\u05e4\u05d5\u05dc \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9", - "autoclean": "\u05e0\u05d9\u05e7\u05d5\u05d9 \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9", + "all_in_one_59_steam": "שטיפה פעילה", + "autocare": "טיפול אוטומטי", + "autoclean": "ניקוי אוטומטי", "baby_60": "BABY_60", - "care_14": "\u05d8\u05d9\u05e4\u05d5\u05dc \u05de\u05d4\u05d9\u05e8 14 '", - "care_30": "\u05d8\u05d9\u05e4\u05d5\u05dc \u05de\u05d4\u05d9\u05e8 30 '", - "care_44": "\u05d8\u05d9\u05e4\u05d5\u05dc \u05de\u05d4\u05d9\u05e8 44 '", - "checkup": "\u05d1\u05bc\u05b0\u05d3\u05b4\u05d9\u05e7\u05b8\u05d4", - "cottons": "\u05db\u05d5\u05ea\u05e0\u05d4", - "cottons_prewash": "\u05db\u05d5\u05ea\u05e0\u05d4 + \u05db\u05d1\u05d9\u05e1\u05d4 \u05de\u05d5\u05e7\u05d3\u05de\u05ea", + "care_14": "טיפול מהיר 14 '", + "care_30": "טיפול מהיר 30 '", + "care_44": "טיפול מהיר 44 '", + "checkup": "בְּדִיקָה", + "cottons": "כותנה", + "cottons_prewash": "כותנה + כביסה מוקדמת", "cotton_care_59": "Cotton Care 59 Min", - "delicate_59": "\u05e2\u05d3\u05d9\u05df 59 '", + "delicate_59": "עדין 59 '", "delicati_59": "DELICATI_59", "delicati_59_steam": "DELICATI_59", - "drain_spin": "\u05e0\u05d9\u05e7\u05d5\u05d6 + \u05e1\u05d9\u05d1\u05d5\u05d1", - "easy_iron": "\u05d2\u05d9\u05d4\u05d5\u05e5 \u05e7\u05dc", - "eco_40_60_new_energy_label": "\u05d0\u05e7\u05d5 40-60", - "extra_care": "\u05d0\u05db\u05e4\u05ea\u05d9\u05d5\u05ea \u05de\u05d5\u05d2\u05d1\u05e8\u05ea", - "fitness": "\u05d8\u05d9\u05e4\u05d5\u05dc \u05d1\u05db\u05d5\u05e9\u05e8", - "fitness_care": "\u05d8\u05d9\u05e4\u05d5\u05dc \u05d1\u05db\u05d5\u05e9\u05e8", - "fresh_care": "\u05d8\u05d9\u05e4\u05d5\u05dc \u05d8\u05e8\u05d9", - "fresh_care_steam": "\u05d8\u05d9\u05e4\u05d5\u05dc \u05d8\u05e8\u05d9", - "handwash_wool": "\u05e9\u05d8\u05d9\u05e4\u05ea \u05d9\u05d3\u05d9\u05d9\u05dd + \u05e6\u05de\u05e8", - "high_dry": "\u05d9\u05d1\u05e9 \u05d1\u05d7\u05d5\u05dd \u05d2\u05d1\u05d5\u05d4", - "hqd_dry_synthetics": "\u05d9\u05d1\u05e9 \u05d1\u05d7\u05d5\u05dd \u05e0\u05de\u05d5\u05da", - "hygiene_60": "\u05d4\u05d9\u05d2\u05d9\u05d9\u05e0\u05d4 60 \u05de\u05e2\u05dc\u05d5\u05ea \u05e6\u05dc\u05d6\u05d9\u05d5\u05e1", - "intensive_40": "40\u00b0C \u05d0\u05d9\u05e0\u05d8\u05e0\u05e1\u05d9\u05d1\u05d9\u05d9\u05dd", - "iot_active_steam": "\u05e7\u05b4\u05d9\u05d8\u05d5\u05b9\u05e8", - "iot_active_wash_steam": "\u05e9\u05d8\u05d9\u05e4\u05d4 \u05e4\u05e2\u05d9\u05dc\u05d4", + "drain_spin": "ניקוז + סיבוב", + "easy_iron": "גיהוץ קל", + "eco_40_60_new_energy_label": "אקו 40-60", + "extra_care": "אכפתיות מוגברת", + "fitness": "טיפול בכושר", + "fitness_care": "טיפול בכושר", + "fresh_care": "טיפול טרי", + "fresh_care_steam": "טיפול טרי", + "handwash_wool": "שטיפת ידיים + צמר", + "high_dry": "יבש בחום גבוה", + "hqd_dry_synthetics": "יבש בחום נמוך", + "hygiene_60": "היגיינה 60 מעלות צלזיוס", + "intensive_40": "40°C אינטנסיביים", + "iot_active_steam": "קִיטוֹר", + "iot_active_wash_steam": "שטיפה פעילה", "iot_allergy_care_pro": "Allergy Care Pro", - "iot_all_in_one_59_steam": "\u05e9\u05d8\u05d9\u05e4\u05d4 \u05e4\u05e2\u05d9\u05dc\u05d4", - "iot_checkup": "\u05d1\u05bc\u05b0\u05d3\u05b4\u05d9\u05e7\u05b8\u05d4", + "iot_all_in_one_59_steam": "שטיפה פעילה", + "iot_checkup": "בְּדִיקָה", "iot_delicati_59_steam": "DELICATI_59", - "iot_dry_air_refresh": "\u05e8\u05e2\u05e0\u05d5\u05df \u05d0\u05d5\u05d5\u05d9\u05e8", - "iot_dry_anti_mites": "\u05e0\u05d2\u05d3 \u05e7\u05e8\u05d3\u05d9\u05ea", - "iot_dry_baby": "\u05ea\u05b4\u05d9\u05e0\u05d5\u05b9\u05e7", - "iot_dry_backpacks": "\u05ea\u05d9\u05e7\u05d9 \u05d2\u05d1", - "iot_dry_bathrobe": "\u05d7\u05dc\u05d5\u05e7\u05d9 \u05e8\u05d7\u05e6\u05d4", - "iot_dry_bed_linen": "\u05de\u05e6\u05e2\u05d9\u05dd", - "iot_dry_cotton_dry": "\u05db\u05d5\u05ea\u05e0\u05d4 \u05d9\u05d1\u05e9\u05d4", - "iot_dry_cuddly_toys": "\u05e6\u05e2\u05e6\u05d5\u05e2\u05d9 \u05d7\u05d9\u05d1\u05d5\u05e7", - "iot_dry_curtains": "\u05d5\u05d9\u05dc\u05d5\u05e0\u05d5\u05ea", - "iot_dry_dehumidifier": "\u05de\u05e1\u05d9\u05e8 \u05dc\u05d7\u05d5\u05ea", - "iot_dry_delicates_antiallergy": "\u05e2\u05d3\u05d9\u05df \u05e0\u05d2\u05d3 \u05d0\u05dc\u05e8\u05d2\u05d9\u05d4", - "iot_dry_delicate_tablecloths": "\u05de\u05e4\u05d5\u05ea \u05e2\u05d3\u05d9\u05e0\u05d5\u05ea", - "iot_dry_denim_jeans": "\u05d2'\u05d9\u05e0\u05e1", - "iot_dry_easy_iron_cotton": "\u05d1\u05e8\u05d6\u05dc \u05e7\u05dc - \u05db\u05d5\u05ea\u05e0\u05d4", - "iot_dry_easy_iron_synthetics": "\u05e7\u05dc \u05d1\u05e8\u05d6\u05dc - \u05e1\u05d9\u05e0\u05ea\u05d8\u05d9\u05d9\u05dd", - "iot_dry_gym_fit": "\u05db\u05d5\u05e9\u05e8 \u05db\u05d5\u05e9\u05e8 - \u05db\u05d5\u05e9\u05e8", - "iot_dry_lingerie": "\u05dc\u05b4\u05d1\u05e0\u05b5\u05d9 \u05e0\u05b8\u05e9\u05c1\u05b4\u05d9\u05dd", - "iot_dry_mixed_dry": "\u05de\u05e2\u05d5\u05e8\u05d1\u05d1 \u05d9\u05d1\u05e9", - "iot_dry_rapid_60_min_delicates": "\u05de\u05d4\u05d9\u05e8 60 '- \u05e2\u05d3\u05d9\u05e0\u05d9\u05dd", - "iot_dry_shirts": "\u05d7\u05d5\u05dc\u05e6\u05d5\u05ea", - "iot_dry_swimsuits_and_bikinis": "\u05d1\u05d2\u05d3\u05d9 \u05d9\u05dd \u05d5\u05d1\u05d9\u05e7\u05d9\u05e0\u05d9", - "iot_dry_synthetics": "\u05e1\u05d9\u05e0\u05ea\u05d8\u05d9 \u05d9\u05d1\u05e9", - "iot_dry_synthetic_dry": "\u05e1\u05d9\u05e0\u05ea\u05d8\u05d9 \u05d9\u05d1\u05e9", - "iot_dry_tablecloths": "\u05de\u05e4\u05d5\u05ea \u05e9\u05d5\u05dc\u05d7\u05df", - "iot_dry_technical_fabrics": "\u05d1\u05d3\u05d9\u05dd \u05d8\u05db\u05e0\u05d9\u05d9\u05dd", - "iot_dry_warm_embrace": "\u05d7\u05d9\u05d1\u05d5\u05e7 \u05d7\u05dd", - "iot_dry_wool_dry": "\u05e6\u05de\u05e8 \u05d9\u05d1\u05e9", - "iot_easy_iron": "\u05d2\u05d9\u05d4\u05d5\u05e5 \u05e7\u05dc", - "iot_fresh_care_steam": "\u05d8\u05d9\u05e4\u05d5\u05dc \u05d8\u05e8\u05d9", - "iot_synthetic_and_coloured_steam": "\u05e1\u05d9\u05e0\u05d8\u05d8\u05d9 \u05d5\u05e6\u05d1\u05e2\u05d5\u05e0\u05d9", - "iot_wash_anti_mites": "\u05e0\u05d2\u05d3 \u05e7\u05e8\u05d3\u05d9\u05ea", - "iot_wash_anti_odor": "\u05e0\u05d2\u05d3 \u05e8\u05d9\u05d7", + "iot_dry_air_refresh": "רענון אוויר", + "iot_dry_anti_mites": "נגד קרדית", + "iot_dry_baby": "תִינוֹק", + "iot_dry_backpacks": "תיקי גב", + "iot_dry_bathrobe": "חלוקי רחצה", + "iot_dry_bed_linen": "מצעים", + "iot_dry_cotton_dry": "כותנה יבשה", + "iot_dry_cuddly_toys": "צעצועי חיבוק", + "iot_dry_curtains": "וילונות", + "iot_dry_dehumidifier": "מסיר לחות", + "iot_dry_delicates_antiallergy": "עדין נגד אלרגיה", + "iot_dry_delicate_tablecloths": "מפות עדינות", + "iot_dry_denim_jeans": "ג'ינס", + "iot_dry_easy_iron_cotton": "ברזל קל - כותנה", + "iot_dry_easy_iron_synthetics": "קל ברזל - סינתטיים", + "iot_dry_gym_fit": "כושר כושר - כושר", + "iot_dry_lingerie": "לִבנֵי נָשִׁים", + "iot_dry_mixed_dry": "מעורבב יבש", + "iot_dry_rapid_60_min_delicates": "מהיר 60 '- עדינים", + "iot_dry_shirts": "חולצות", + "iot_dry_swimsuits_and_bikinis": "בגדי ים וביקיני", + "iot_dry_synthetics": "סינתטי יבש", + "iot_dry_synthetic_dry": "סינתטי יבש", + "iot_dry_tablecloths": "מפות שולחן", + "iot_dry_technical_fabrics": "בדים טכניים", + "iot_dry_warm_embrace": "חיבוק חם", + "iot_dry_wool_dry": "צמר יבש", + "iot_easy_iron": "גיהוץ קל", + "iot_fresh_care_steam": "טיפול טרי", + "iot_synthetic_and_coloured_steam": "סינטטי וצבעוני", + "iot_wash_anti_mites": "נגד קרדית", + "iot_wash_anti_odor": "נגד ריח", "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", - "iot_wash_baby_sanitizer": "\u05d7\u05d9\u05d8\u05d5\u05d9 \u05dc\u05ea\u05d9\u05e0\u05d5\u05e7\u05d5\u05ea", - "iot_wash_backpacks": "\u05ea\u05d9\u05e7\u05d9 \u05d2\u05d1", - "iot_wash_bathrobe": "\u05d7\u05dc\u05d5\u05e7\u05d9 \u05e8\u05d7\u05e6\u05d4 \u05d5\u05d1\u05d3\u05d9\u05dd \u05e0\u05e7\u05d1\u05d5\u05d1\u05d9\u05d9\u05dd", - "iot_wash_bed_linen": "\u05de\u05e6\u05e2\u05d9\u05dd", - "iot_wash_bed_linen_zelig": "\u05de\u05e6\u05e2\u05d9\u05dd", - "iot_wash_bleaching": "\u05d4\u05b7\u05dc\u05d1\u05bc\u05b8\u05e0\u05b8\u05d4", - "iot_wash_blood_stains": "\u05db\u05ea\u05de\u05d9 \u05d3\u05dd", - "iot_wash_cashmere": "\u05e7\u05e9\u05de\u05d9\u05e8", - "iot_wash_chocolate_stains": "\u05db\u05ea\u05de\u05d9 \u05e9\u05d5\u05e7\u05d5\u05dc\u05d3", - "iot_wash_cold_wash": "\u05e9\u05d8\u05d9\u05e4\u05d4 \u05e7\u05e8\u05d4", - "iot_wash_colored": "\u05e6\u05d1\u05e2\u05d5\u05e0\u05d9", - "iot_wash_colored_anti_stain": "\u05e0\u05d2\u05d3 \u05db\u05ea\u05dd \u05e6\u05d1\u05e2\u05d5\u05e0\u05d9", - "iot_wash_colored_delicate": "\u05e6\u05d1\u05e2\u05d5\u05e0\u05d9 \u05e2\u05d3\u05d9\u05df", - "iot_wash_coloured": "\u05e6\u05d1\u05e2\u05d5\u05e0\u05d9", - "iot_wash_cotton": "\u05db\u05d5\u05ea\u05e0\u05d4", - "iot_wash_cuddly_toys": "\u05e6\u05e2\u05e6\u05d5\u05e2\u05d9 \u05d7\u05d9\u05d1\u05d5\u05e7", - "iot_wash_curtains": "\u05d5\u05d9\u05dc\u05d5\u05e0\u05d5\u05ea", - "iot_wash_curtains_zelig": "\u05d5\u05d9\u05dc\u05d5\u05e0\u05d5\u05ea", - "iot_wash_dark": "\u05d0\u05e4\u05dc", - "iot_wash_darks_and_coloured_44": "\u05d7\u05d1\u05d9\u05d1\u05d9\u05dd \u05d5\u05e6\u05d1\u05e2\u05d5\u05e0\u05d9\u05d9\u05dd 44 '", - "iot_wash_darks_and_coloured_59": "\u05d7\u05d1\u05d9\u05d1\u05d9\u05dd \u05d5\u05e6\u05d1\u05e2\u05d5\u05e0\u05d9 59 '", - "iot_wash_darks_and_coloured_xl": "\u05d7\u05e4\u05e6\u05d9\u05dd \u05d5\u05e6\u05d1\u05e2 XL", + "iot_wash_baby_sanitizer": "חיטוי לתינוקות", + "iot_wash_backpacks": "תיקי גב", + "iot_wash_bathrobe": "חלוקי רחצה ובדים נקבוביים", + "iot_wash_bed_linen": "מצעים", + "iot_wash_bed_linen_zelig": "מצעים", + "iot_wash_bleaching": "הַלבָּנָה", + "iot_wash_blood_stains": "כתמי דם", + "iot_wash_cashmere": "קשמיר", + "iot_wash_chocolate_stains": "כתמי שוקולד", + "iot_wash_cold_wash": "שטיפה קרה", + "iot_wash_colored": "צבעוני", + "iot_wash_colored_anti_stain": "נגד כתם צבעוני", + "iot_wash_colored_delicate": "צבעוני עדין", + "iot_wash_coloured": "צבעוני", + "iot_wash_cotton": "כותנה", + "iot_wash_cuddly_toys": "צעצועי חיבוק", + "iot_wash_curtains": "וילונות", + "iot_wash_curtains_zelig": "וילונות", + "iot_wash_dark": "אפל", + "iot_wash_darks_and_coloured_44": "חביבים וצבעוניים 44 '", + "iot_wash_darks_and_coloured_59": "חביבים וצבעוני 59 '", + "iot_wash_darks_and_coloured_xl": "חפצים וצבע XL", "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", "iot_wash_dash_cold_cycle": "Dash Cold Clean", "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", - "iot_wash_delicate": "\u05e2\u05d3\u05d9\u05e0\u05d9\u05dd", - "iot_wash_delicate_antiallergy": "\u05d0\u05e0\u05d8\u05d9 \u05d0\u05dc\u05e8\u05d2\u05d9\u05d4 \u05e2\u05d3\u05d9\u05df", - "iot_wash_delicate_antiallergy_zelig": "\u05d0\u05e0\u05d8\u05d9 \u05d0\u05dc\u05e8\u05d2\u05d9\u05d4 \u05e2\u05d3\u05d9\u05df", - "iot_wash_delicate_colors": "\u05e6\u05d1\u05e2\u05d5\u05e0\u05d9 \u05e2\u05d3\u05d9\u05df", - "iot_wash_delicate_dark": "\u05db\u05d4\u05d4 \u05e2\u05d3\u05d9\u05df", - "iot_wash_delicate_tablecloths": "\u05de\u05e4\u05d5\u05ea \u05e2\u05d3\u05d9\u05e0\u05d5\u05ea", - "iot_wash_delicate_whites": "\u05dc\u05d1\u05e0\u05d9\u05dd \u05e2\u05d3\u05d9\u05e0\u05d9\u05dd", - "iot_wash_denim_jeans": "\u05d2'\u05d9\u05e0\u05e1", - "iot_wash_diving_suits": "\u05d7\u05dc\u05d9\u05e4\u05d5\u05ea \u05e6\u05dc\u05d9\u05dc\u05d4", - "iot_wash_diving_suits_zelig": "\u05d7\u05dc\u05d9\u05e4\u05d5\u05ea \u05e6\u05dc\u05d9\u05dc\u05d4", - "iot_wash_down_jackets": "\u05de\u05e2\u05d9\u05dc\u05d9 \u05e4\u05d5\u05da", - "iot_wash_down_jackets_zelig": "\u05de\u05e2\u05d9\u05dc\u05d9 \u05e4\u05d5\u05da", - "iot_wash_fruit_stains": "\u05db\u05ea\u05de\u05d9 \u05e4\u05e8\u05d9", - "iot_wash_gym_fit": "\u05db\u05d5\u05e9\u05e8 \u05db\u05d5\u05e9\u05e8 - \u05db\u05d5\u05e9\u05e8", - "iot_wash_handwash": "\u05e9\u05d8\u05d9\u05e4\u05ea \u05d9\u05d3\u05d9\u05d9\u05dd", - "iot_wash_handwash_colored": "\u05e9\u05d8\u05d9\u05e4\u05ea \u05d9\u05d3\u05d9\u05d9\u05dd \u05d1\u05e6\u05d1\u05e2", - "iot_wash_handwash_dark": "\u05e9\u05d8\u05d9\u05e4\u05ea \u05d9\u05d3\u05d9\u05d9\u05dd \u05db\u05d4\u05d4", - "iot_wash_lingerie": "\u05dc\u05b4\u05d1\u05e0\u05b5\u05d9 \u05e0\u05b8\u05e9\u05c1\u05b4\u05d9\u05dd", - "iot_wash_masks_refresh": "\u05de\u05e1\u05db\u05d5\u05ea \u05e8\u05e2\u05e0\u05df", - "iot_wash_masks_sanification": "\u05d7\u05d9\u05d8\u05d5\u05d9 \u05de\u05e1\u05db\u05d5\u05ea", - "iot_wash_mats": "\u05de\u05d7\u05e6\u05dc\u05d5\u05ea", - "iot_wash_men_s_trousers": "\u05de\u05db\u05e0\u05e1\u05d9 \u05d2\u05d1\u05e8\u05d9\u05dd", - "iot_wash_mixed": "\u05de\u05e2\u05d5\u05e8\u05d1", - "iot_wash_mix_and_coloured_44": "\u05dc\u05e2\u05e8\u05d1\u05d1 \u05d5\u05e6\u05d1\u05e2\u05d5\u05e0\u05d9 44 '", - "iot_wash_mix_and_coloured_59": "\u05de\u05d9\u05e7\u05e1 \u05d5\u05e6\u05d1\u05e2\u05d5\u05e0\u05d9 59 '", - "iot_wash_mix_and_coloured_xl": "\u05de\u05e2\u05e8\u05d1\u05d1\u05d9\u05dd \u05d5\u05e6\u05d1\u05e2\u05d9\u05dd XL", - "iot_wash_new_clothes": "\u05d1\u05d2\u05d3\u05d9\u05dd \u05d7\u05d3\u05e9\u05d9\u05dd", - "iot_wash_perfect_white": "\u05dc\u05d1\u05df \u05de\u05d5\u05e9\u05dc\u05dd", - "iot_wash_pets": "\u05d7\u05d9\u05d5\u05ea \u05de\u05d7\u05de\u05d3", - "iot_wash_pets_steam": "\u05d7\u05d9\u05d5\u05ea \u05de\u05d7\u05de\u05d3", - "iot_wash_playsuits": "\u05d7\u05dc\u05d9\u05e4\u05d5\u05ea \u05de\u05e9\u05d7\u05e7", - "iot_wash_rapid_14": "\u05de\u05d4\u05d9\u05e8 14 '", - "iot_wash_rapid_30": "\u05de\u05d4\u05d9\u05e8 30 '", - "iot_wash_rapid_44": "\u05de\u05d4\u05d9\u05e8 44 '", - "iot_wash_rapid_59": "\u05de\u05d4\u05d9\u05e8 59 '", - "iot_wash_refresh_14_min": "\u05e8\u05e2\u05e0\u05df 14 \u05d3\u05e7\u05d5\u05ea", - "iot_wash_resistant_colored": "\u05e6\u05d1\u05e2\u05d5\u05e0\u05d9 \u05e2\u05de\u05d9\u05d3", - "iot_wash_resistant_dark": "\u05db\u05d4\u05d4 \u05e2\u05de\u05d9\u05d3", - "iot_wash_resistant_whites": "\u05dc\u05d1\u05e0\u05d9\u05dd \u05e2\u05de\u05d9\u05d3\u05d9\u05dd", - "iot_wash_rinse": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3", - "iot_wash_shirts": "\u05d7\u05d5\u05dc\u05e6\u05d5\u05ea", - "iot_wash_silk": "\u05de\u05e9\u05d9", - "iot_wash_ski_suit": "\u05d7\u05dc\u05d9\u05e4\u05ea \u05e1\u05e7\u05d9", - "iot_wash_ski_suit_zelig": "\u05d7\u05dc\u05d9\u05e4\u05ea \u05e1\u05e7\u05d9", - "iot_wash_spin": "\u05e1\u05d9\u05d1\u05d5\u05d1", - "iot_wash_sport": "\u05e1\u05e4\u05bc\u05d5\u05b9\u05e8\u05d8", - "iot_wash_stains_remover": "\u05de\u05e1\u05d9\u05e8 \u05db\u05ea\u05de\u05d9\u05dd", - "iot_wash_swimsuits_and_bikinis": "\u05d1\u05d2\u05d3\u05d9 \u05d9\u05dd \u05d5\u05d1\u05d9\u05e7\u05d9\u05e0\u05d9", - "iot_wash_synthetic": "\u05e1\u05d9\u05e0\u05ea\u05d8\u05d9\u05d9\u05dd", - "iot_wash_tablecloths": "\u05de\u05e4\u05d5\u05ea \u05e9\u05d5\u05dc\u05d7\u05df", - "iot_wash_technical_fabrics": "\u05d1\u05d3\u05d9\u05dd \u05d8\u05db\u05e0\u05d9\u05d9\u05dd", - "iot_wash_technical_fabrics_zelig": "\u05d1\u05d3\u05d9\u05dd \u05d8\u05db\u05e0\u05d9\u05d9\u05dd", - "iot_wash_technical_jackets": "\u05d6'\u05e7\u05d8\u05d9\u05dd \u05d8\u05db\u05e0\u05d9\u05d9\u05dd", - "iot_wash_technical_jackets_zelig": "\u05d6'\u05e7\u05d8\u05d9\u05dd \u05d8\u05db\u05e0\u05d9\u05d9\u05dd", - "iot_wash_trainers": "\u05de\u05d0\u05de\u05e0\u05d9\u05dd", - "iot_wash_whites": "\u05dc\u05b0\u05d1\u05b8\u05e0\u05b4\u05d9\u05dd", - "iot_wash_whites_44": "\u05dc\u05d1\u05e0\u05d9\u05dd 44 '", - "iot_wash_whites_59": "\u05dc\u05d1\u05e0\u05d9\u05dd 59 '", - "iot_wash_whites_xl": "\u05dc\u05d1\u05e0\u05d9\u05dd XL", - "iot_wash_wine_stains": "\u05db\u05ea\u05de\u05d9 \u05d9\u05d9\u05df", - "iot_wash_wool": "\u05e6\u05b6\u05de\u05b6\u05e8", - "jeans": "\u05d2\u05b4'\u05d9\u05e0\u05e1", - "low_dry": "\u05d9\u05d1\u05e9 \u05d1\u05d7\u05d5\u05dd \u05e0\u05de\u05d5\u05da", - "mixed_and_colored_59": "\u05de\u05e2\u05d5\u05e8\u05d1 \u05d5\u05e6\u05d1\u05e2\u05d5\u05e0\u05d9 59 '", - "night_and_day": "\u05dc\u05d9\u05dc\u05d4 \u05d5\u05d9\u05d5\u05dd", + "iot_wash_delicate": "עדינים", + "iot_wash_delicate_antiallergy": "אנטי אלרגיה עדין", + "iot_wash_delicate_antiallergy_zelig": "אנטי אלרגיה עדין", + "iot_wash_delicate_colors": "צבעוני עדין", + "iot_wash_delicate_dark": "כהה עדין", + "iot_wash_delicate_tablecloths": "מפות עדינות", + "iot_wash_delicate_whites": "לבנים עדינים", + "iot_wash_denim_jeans": "ג'ינס", + "iot_wash_diving_suits": "חליפות צלילה", + "iot_wash_diving_suits_zelig": "חליפות צלילה", + "iot_wash_down_jackets": "מעילי פוך", + "iot_wash_down_jackets_zelig": "מעילי פוך", + "iot_wash_fruit_stains": "כתמי פרי", + "iot_wash_gym_fit": "כושר כושר - כושר", + "iot_wash_handwash": "שטיפת ידיים", + "iot_wash_handwash_colored": "שטיפת ידיים בצבע", + "iot_wash_handwash_dark": "שטיפת ידיים כהה", + "iot_wash_lingerie": "לִבנֵי נָשִׁים", + "iot_wash_masks_refresh": "מסכות רענן", + "iot_wash_masks_sanification": "חיטוי מסכות", + "iot_wash_mats": "מחצלות", + "iot_wash_men_s_trousers": "מכנסי גברים", + "iot_wash_mixed": "מעורב", + "iot_wash_mix_and_coloured_44": "לערבב וצבעוני 44 '", + "iot_wash_mix_and_coloured_59": "מיקס וצבעוני 59 '", + "iot_wash_mix_and_coloured_xl": "מערבבים וצבעים XL", + "iot_wash_new_clothes": "בגדים חדשים", + "iot_wash_perfect_white": "לבן מושלם", + "iot_wash_pets": "חיות מחמד", + "iot_wash_pets_steam": "חיות מחמד", + "iot_wash_playsuits": "חליפות משחק", + "iot_wash_rapid_14": "מהיר 14 '", + "iot_wash_rapid_30": "מהיר 30 '", + "iot_wash_rapid_44": "מהיר 44 '", + "iot_wash_rapid_59": "מהיר 59 '", + "iot_wash_refresh_14_min": "רענן 14 דקות", + "iot_wash_resistant_colored": "צבעוני עמיד", + "iot_wash_resistant_dark": "כהה עמיד", + "iot_wash_resistant_whites": "לבנים עמידים", + "iot_wash_rinse": "לִשְׁטוֹף", + "iot_wash_shirts": "חולצות", + "iot_wash_silk": "משי", + "iot_wash_ski_suit": "חליפת סקי", + "iot_wash_ski_suit_zelig": "חליפת סקי", + "iot_wash_spin": "סיבוב", + "iot_wash_sport": "ספּוֹרט", + "iot_wash_stains_remover": "מסיר כתמים", + "iot_wash_swimsuits_and_bikinis": "בגדי ים וביקיני", + "iot_wash_synthetic": "סינתטיים", + "iot_wash_tablecloths": "מפות שולחן", + "iot_wash_technical_fabrics": "בדים טכניים", + "iot_wash_technical_fabrics_zelig": "בדים טכניים", + "iot_wash_technical_jackets": "ז'קטים טכניים", + "iot_wash_technical_jackets_zelig": "ז'קטים טכניים", + "iot_wash_trainers": "מאמנים", + "iot_wash_whites": "לְבָנִים", + "iot_wash_whites_44": "לבנים 44 '", + "iot_wash_whites_59": "לבנים 59 '", + "iot_wash_whites_xl": "לבנים XL", + "iot_wash_wine_stains": "כתמי יין", + "iot_wash_wool": "צֶמֶר", + "jeans": "גִ'ינס", + "low_dry": "יבש בחום נמוך", + "mixed_and_colored_59": "מעורב וצבעוני 59 '", + "night_and_day": "לילה ויום", "night_wash": "Night Wash", - "perfect_59": "\u05de\u05d5\u05e9\u05dc\u05dd 59 '", - "perfect_whites_59": "\u05dc\u05d1\u05df \u05de\u05d5\u05e9\u05dc\u05dd", - "rapid_wash_and_dry_59_min": "\u05dc\u05e9\u05d8\u05d5\u05e3 \u05d5\u05dc\u05d9\u05d9\u05d1\u05e9 59 '", - "resistant_cotton": "\u05db\u05d5\u05ea\u05e0\u05d4", - "rinse": "\u05dc\u05b4\u05e9\u05c1\u05b0\u05d8\u05d5\u05b9\u05e3", + "perfect_59": "מושלם 59 '", + "perfect_whites_59": "לבן מושלם", + "rapid_wash_and_dry_59_min": "לשטוף ולייבש 59 '", + "resistant_cotton": "כותנה", + "rinse": "לִשְׁטוֹף", "silent_night": "Night Wash", - "soft_care": "\u05d8\u05d9\u05e4\u05d5\u05dc \u05e8\u05da", - "special_49": "\u05de\u05d9\u05d5\u05d7\u05d3 49 '", - "sport_39": "\u05e1\u05e4\u05d5\u05e8\u05d8 39 '", - "sport_plus_29": "\u05e1\u05e4\u05d5\u05e8\u05d8 \u05e4\u05dc\u05d5\u05e1 29 \"", - "steam_39": "\u05e7\u05d9\u05d8\u05d5\u05e8 39 '", + "soft_care": "טיפול רך", + "special_49": "מיוחד 49 '", + "sport_39": "ספורט 39 '", + "sport_plus_29": "ספורט פלוס 29 \"", + "steam_39": "קיטור 39 '", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro", "steam_care_pro_delicates": "Steam Care Pro", "steam_care_pro_synthetic": "Steam Care Pro", - "synthetics": "\u05e1\u05d9\u05e0\u05ea\u05d8\u05d9\u05d9\u05dd", - "synthetic_and_coloured": "\u05e1\u05d9\u05e0\u05d8\u05d8\u05d9 \u05d5\u05e6\u05d1\u05e2\u05d5\u05e0\u05d9", - "synthetic_and_coloured_steam": "\u05e1\u05d9\u05e0\u05d8\u05d8\u05d9 \u05d5\u05e6\u05d1\u05e2\u05d5\u05e0\u05d9", + "synthetics": "סינתטיים", + "synthetic_and_coloured": "סינטטי וצבעוני", + "synthetic_and_coloured_steam": "סינטטי וצבעוני", "tailored_resistant_cotton": "Tailored Resistant Cotton", "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", - "total_care": "\u05d8\u05d9\u05e4\u05d5\u05dc \u05d8\u05d5\u05d8\u05d0\u05dc\u05d9", - "tumbling": "\u05e0\u05d5\u05e4\u05dc\u05d9\u05dd", + "total_care": "טיפול טוטאלי", + "tumbling": "נופלים", "wool_and_delicates_49": "Wool/Delicates 49'", - "wool_dry": "\u05e6\u05de\u05e8 \u05d9\u05d1\u05e9", + "wool_dry": "צמר יבש", "wool_soft_care": "Wool & Soft Care" }, "name": "Program" }, "dry_levels": { "state": { - "0": "\u05dc\u05dc\u05d0 \u05d9\u05d9\u05d1\u05d5\u05e9", - "1": "\u05d1\u05bc\u05b7\u05e8\u05d6\u05b6\u05dc", - "2": "\u05dc\u05d0 \u05dc\u05d9\u05d9\u05d1\u05e9 \u05d1\u05e8\u05d6\u05dc", - "3": "\u05d0\u05e8\u05d5\u05df \u05d9\u05d1\u05e9", - "4": "\u05d9\u05d1\u05e9 \u05d1\u05de\u05d9\u05d5\u05d7\u05d3", - "12": "\u05d1\u05bc\u05b7\u05e8\u05d6\u05b6\u05dc", - "13": "\u05d0\u05e8\u05d5\u05df \u05d9\u05d1\u05e9", + "0": "ללא ייבוש", + "1": "בַּרזֶל", + "2": "לא לייבש ברזל", + "3": "ארון יבש", + "4": "יבש במיוחד", + "12": "בַּרזֶל", + "13": "ארון יבש", "14": "Ready to wear", - "15": "\u05d9\u05d1\u05e9 \u05d1\u05de\u05d9\u05d5\u05d7\u05d3" + "15": "יבש במיוחד" }, - "name": "\u05e8\u05de\u05ea \u05d9\u05d9\u05d1\u05d5\u05e9" + "name": "רמת ייבוש" }, "spin_speed": { - "name": "\u05e1\u05d9\u05d1\u05d5\u05d1" + "name": "סיבוב" }, "temperature": { "name": "Temperature" }, "dry_time": { - "name": "\u05d6\u05de\u05df \u05d9\u05d9\u05d1\u05d5\u05e9" + "name": "זמן ייבוש" } }, "switch": { @@ -463,7 +463,7 @@ "name": "Oven" }, "prewash": { - "name": "\u05e9\u05d8\u05d9\u05e4\u05d4 \u05de\u05e8\u05d0\u05e9" + "name": "שטיפה מראש" }, "pause": { "name": "Pause" @@ -477,19 +477,19 @@ }, "binary_sensor": { "door_lock": { - "name": "\u05de\u05e0\u05e2\u05d5\u05dc \u05d3\u05dc\u05ea" + "name": "מנעול דלת" }, "extra_rinse_1": { - "name": "+1 \u05e9\u05d8\u05d9\u05e4\u05d4" + "name": "+1 שטיפה" }, "extra_rinse_2": { - "name": "+2 \u05e9\u05d8\u05d9\u05e4\u05d5\u05ea" + "name": "+2 שטיפות" }, "extra_rinse_3": { - "name": "+3 \u05e9\u05d8\u05d9\u05e4\u05d5\u05ea" + "name": "+3 שטיפות" }, "good_night": { - "name": "\u05dc\u05d9\u05dc\u05d4 \u05d8\u05d5\u05d1" + "name": "לילה טוב" }, "anti_crease": { "name": "Anticrease" @@ -498,7 +498,7 @@ "name": "Acquaplus" }, "spin_speed": { - "name": "\u05e1\u05d9\u05d1\u05d5\u05d1" + "name": "סיבוב" }, "programs_dw": { "name": "Program" @@ -540,10 +540,10 @@ "name": "Child Lock" }, "on": { - "name": "\u05e2\u05b7\u05dc" + "name": "עַל" }, "prewash": { - "name": "\u05e9\u05d8\u05d9\u05e4\u05d4 \u05de\u05e8\u05d0\u05e9" + "name": "שטיפה מראש" } }, "number": { @@ -557,7 +557,7 @@ "name": "Delay Start" }, "water_hard": { - "name": "\u05e7\u05e9\u05d9\u05d5\u05ea \u05de\u05d9\u05dd" + "name": "קשיות מים" }, "program_duration": { "name": "Program duration" @@ -572,7 +572,7 @@ "name": "Washing intensity" }, "dry_time": { - "name": "\u05d6\u05de\u05df \u05d9\u05d9\u05d1\u05d5\u05e9" + "name": "זמן ייבוש" } }, "button": { diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index 9555445..b828126 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -8,7 +8,7 @@ "3": "Zaustavi", "4": "Zakazano", "5": "Zakazano", - "6": "Gre\u0161ka", + "6": "Greška", "7": "Spremno" } }, @@ -21,19 +21,19 @@ "4": "Ispiranje", "5": "Ispiranje", "6": "Ispiranje", - "7": "Su\u0161enje", + "7": "Sušenje", "9": "Para", "10": "Spremno", "11": "Okretaj", - "12": "Mjerenje te\u017eine ", - "13": "Mjerenje te\u017eine ", + "12": "Mjerenje težine ", + "13": "Mjerenje težine ", "14": "Pranje", "15": "Pranje", "16": "Pranje", "17": "Ispiranje", "18": "Ispiranje", "19": "Zakazano", - "20": "Odr\u017eavanje svje\u017eine", + "20": "Održavanje svježine", "24": "Protiv neugodnih mirisa", "25": "Pranje", "26": "Grijanje", @@ -44,16 +44,16 @@ "program_phases_td": { "state": { "0": "Spremno", - "1": "Su\u0161enje", - "2": "Su\u0161enje", - "3": "Hla\u0111enje", - "13": "Hla\u0111enje", - "14": "Su\u0161enje", - "15": "Su\u0161enje", - "16": "Hla\u0111enje", - "18": "Odr\u017ei svje\u017eim", - "19": "Su\u0161enje", - "20": "Su\u0161enje" + "1": "Sušenje", + "2": "Sušenje", + "3": "Hlađenje", + "13": "Hlađenje", + "14": "Sušenje", + "15": "Sušenje", + "16": "Hlađenje", + "18": "Održi svježim", + "19": "Sušenje", + "20": "Sušenje" }, "name": "Faza" }, @@ -63,7 +63,7 @@ "1": "Pretpranje", "2": "Pranje", "3": "Ispiranje", - "4": "Su\u0161enje", + "4": "Sušenje", "5": "Spremno", "6": "Hot rinse" }, @@ -71,20 +71,20 @@ }, "dry_levels": { "state": { - "0": "Bez su\u0161enja", - "1": "Suho za gla\u010danje", + "0": "Bez sušenja", + "1": "Suho za glačanje", "2": "Suho za spremanje", "3": "Suho za spremanje", "4": "Potpuno suho", - "12": "Suho za gla\u010danje", + "12": "Suho za glačanje", "13": "Suho za spremanje", - "14": "Spremno za no\u0161enje", + "14": "Spremno za nošenje", "15": "Potpuno suho" }, - "name": "Stupanj suho\u0107e" + "name": "Stupanj suhoće" }, "anti_crease": { - "name": "Spre\u010davanje gu\u017evanja" + "name": "Sprečavanje gužvanja" }, "power": { "name": "Razina napajanja" @@ -96,10 +96,10 @@ "name": "Temperatura" }, "water_efficiency": { - "name": "U\u010dinkovitost vode" + "name": "Učinkovitost vode" }, "water_saving": { - "name": "U\u0161teda na vodi" + "name": "Ušteda na vodi" }, "duration": { "name": "Trajanje" @@ -117,43 +117,43 @@ "name": "Stupanj zaprljanosti" }, "delay_time": { - "name": "Odgoda po\u010detka" + "name": "Odgoda početka" }, "dry_time": { - "name": "Trajanje su\u0161enja" + "name": "Trajanje sušenja" }, "suggested_load": { "name": "Kapacitet rublja" }, "energy_label": { - "name": "Energetska u\u010dinkovitost" + "name": "Energetska učinkovitost" }, "det_dust": { - "name": "Pra\u0161ak" + "name": "Prašak" }, "det_liquid": { - "name": "Teku\u0107ina" + "name": "Tekućina" }, "errors": { - "name": "Gre\u0161ka" + "name": "Greška" }, "programs": { - "name": "Trenuta\u010dni program" + "name": "Trenutačni program" }, "cycles_total": { "name": "Programi Ukupno" }, "energy_total": { - "name": "Potro\u0161nja energije Ukupno" + "name": "Potrošnja energije Ukupno" }, "water_total": { - "name": "U\u010dinkovitost vode Ukupno" + "name": "Učinkovitost vode Ukupno" }, "energy_current": { - "name": "Potro\u0161nja energije Current" + "name": "Potrošnja energije Current" }, "water_current": { - "name": "U\u010dinkovitost vode Current" + "name": "Učinkovitost vode Current" } }, "select": { @@ -165,46 +165,46 @@ "auto_plus": "AutoPlus", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Automatski univerzalni 50 - 60\u00b0C", - "auto_universal_plus": "Automatski univerzalni+ 65 - 75\u00b0C", - "auto_universal_plus_soil": "Automatski univerzalni+ 65 - 75\u00b0C", - "auto_universal_soil": "Automatski univerzalni 50 - 60\u00b0C", + "auto_universal": "Automatski univerzalni 50 - 60°C", + "auto_universal_plus": "Automatski univerzalni+ 65 - 75°C", + "auto_universal_plus_soil": "Automatski univerzalni+ 65 - 75°C", + "auto_universal_soil": "Automatski univerzalni 50 - 60°C", "auto_wash": "Automatsko pranje", "auto_wash_soil": "Automatsko pranje", - "classe_a_59": "A klasa 59' 65\u00b0C", - "delicate": "Osjetljivo 45\u00b0C", - "dishwasher_care": "Ciklus \u010di\u0161\u0107enja kamenca", - "eco": "Ekolo\u0161ki", - "eco_asynch": "Eco 45\u00b0C", - "eco_bldc": "Eco 45\u00b0C", - "eco_synch": "Eco 45\u00b0C", + "classe_a_59": "A klasa 59' 65°C", + "delicate": "Osjetljivo 45°C", + "dishwasher_care": "Ciklus čišćenja kamenca", + "eco": "Ekološki", + "eco_asynch": "Eco 45°C", + "eco_bldc": "Eco 45°C", + "eco_synch": "Eco 45°C", "gentle_wash": "Gentle wash", "glass": "Staklo", - "glassware": "Glassware (Stakleno posu\u0111e) 45 \u00b0C", + "glassware": "Glassware (Stakleno posuđe) 45 °C", "glass_care": "Glass Care", "hygiene": "Hygiene", - "hygiene_plus": "Hygiene+ (Higijena+) 75 \u00b0C", + "hygiene_plus": "Hygiene+ (Higijena+) 75 °C", "intensive": "Intenzivno ", - "intensive_rapid": "Sna\u017ean i brz", + "intensive_rapid": "Snažan i brz", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Automatski univerzalni 50 - 60\u00b0C", + "iot_auto_universal_soil": "Automatski univerzalni 50 - 60°C", "iot_auto_wash_soil": "Automatsko pranje", "iot_baby_care": "Baby Care", - "iot_breakfast": "Doru\u010dak", + "iot_breakfast": "Doručak", "iot_checkup": "Check Up ciklus provjere", "iot_china_crystals": "Kristal", "iot_classe_a_59": "Brzi 59'", - "iot_cocktail_glasses": "Koktel \u010da\u0161e", - "iot_cocktail_glasses_soil": "Koktel \u010da\u0161e", + "iot_cocktail_glasses": "Koktel čaše", + "iot_cocktail_glasses_soil": "Koktel čaše", "iot_daily_care": "Daily Care", "iot_daily_care_soil": "Daily Care", - "iot_delicate": "Osjetljivo 45\u00b0C", - "iot_dinner_for_two": "Ve\u010dera za dvoje", - "iot_dinner_for_two_soil": "Ve\u010dera za dvoje", + "iot_delicate": "Osjetljivo 45°C", + "iot_dinner_for_two": "Večera za dvoje", + "iot_dinner_for_two_soil": "Večera za dvoje", "iot_dreft_quick_cycle": "Dreft Quick", - "iot_eco_asynch": "Eco 45\u00b0C", - "iot_eco_bldc": "Eco 45\u00b0C", - "iot_eco_synch": "Eco 45\u00b0C", + "iot_eco_asynch": "Eco 45°C", + "iot_eco_bldc": "Eco 45°C", + "iot_eco_synch": "Eco 45°C", "iot_extra_hygiene": "Extra Hygiene", "iot_fairy_quick_cycle": "Fairy Quick", "iot_happy_hour": "Happy Hour", @@ -218,65 +218,65 @@ "iot_power_mix_wash": "Power Mix Wash", "iot_power_mix_wash_soil": "Power Mix Wash", "iot_prewash": "Pretpranje", - "iot_pyrex_and_glassware": "Pireks & obi\u010dno staklo", + "iot_pyrex_and_glassware": "Pireks & obično staklo", "iot_rapid_29": "Brzo 29'", - "iot_rapid_39": "Rapid (Brzi program) 39 minuta 60 \u00b0C", + "iot_rapid_39": "Rapid (Brzi program) 39 minuta 60 °C", "iot_single": "Samac", - "iot_steam": "Steam (Para) 75 \u00b0C", + "iot_steam": "Steam (Para) 75 °C", "iot_super_flash": "Super Flash", "iot_super_wash": "Super Wash", "iot_turbopower": "TurboPower", - "iot_universal": "Universal (Univerzalni) 60 \u00b0C", - "iot_wok_grids_maxi_pans": "Posebne tave (Wok - re\u0161etke & Maxi tave)", - "iot_wok_grids_maxi_pans_soil": "Posebne tave (Wok - re\u0161etke & Maxi tave)", + "iot_universal": "Universal (Univerzalni) 60 °C", + "iot_wok_grids_maxi_pans": "Posebne tave (Wok - rešetke & Maxi tave)", + "iot_wok_grids_maxi_pans_soil": "Posebne tave (Wok - rešetke & Maxi tave)", "iot_yes_quick_cycle": "Yes Quick", - "night": "Ultra tihi 55\u00b0C", + "night": "Ultra tihi 55°C", "prewash": "Pretpranje", "rapid_20": "Brzi 20'", "rapid_24": "Brzo 24'", - "rapid_29": "Brzo 29' 50\u00b0C", + "rapid_29": "Brzo 29' 50°C", "rapid_35": "Wash&Dry 35'", - "rapid_39": "Rapid (Brzi program) 39 minuta 60 \u00b0C", + "rapid_39": "Rapid (Brzi program) 39 minuta 60 °C", "rapid_49": "Brzi 49'", "rapid_59": "Brzi 59'", "sanitising": "Dezinficiranje", "silence": "Silence", - "silent": "No\u0107", + "silent": "Noć", "silent_care": "Silent Care", "smart_ai": "Smart AI", "special": "Posebno", "special_pw_prz": "Posebno", - "steam": "Steam (Para) 75 \u00b0C", - "steam_plus": "Para plus 75\u00b0C", - "total_care": "Total Care 50\u00b0C", - "ultra_silence": "Ultra tihi 55\u00b0C", - "ultra_silent": "Ultra tihi 55\u00b0C", - "universal": "Universal (Univerzalni) 60 \u00b0C", - "universal_plus": "Universal Plus (Univerzalni plus) 70 \u00b0C", + "steam": "Steam (Para) 75 °C", + "steam_plus": "Para plus 75°C", + "total_care": "Total Care 50°C", + "ultra_silence": "Ultra tihi 55°C", + "ultra_silent": "Ultra tihi 55°C", + "universal": "Universal (Univerzalni) 60 °C", + "universal_plus": "Universal Plus (Univerzalni plus) 70 °C", "zoom_39": "Zoom 39 min" }, "name": "Program" }, "programs_ih": { "state": { - "iot_special_ash_brown": "Pr\u017eeni ribani krumpir", - "iot_special_beef_fillet": "Gove\u0111i file", - "iot_special_beef_veal_stew": "Gove\u0111i i tele\u0107i gula\u0161", - "iot_special_boiled_rice": "Kuhana ri\u017ea", - "iot_special_chicken_breast": "Pile\u0107a prsa", - "iot_special_chicken_legs": "Pile\u0107i bataci", - "iot_special_chocolate_pudding": "\u010cokoladni puding", + "iot_special_ash_brown": "Prženi ribani krumpir", + "iot_special_beef_fillet": "Goveđi file", + "iot_special_beef_veal_stew": "Goveđi i teleći gulaš", + "iot_special_boiled_rice": "Kuhana riža", + "iot_special_chicken_breast": "Pileća prsa", + "iot_special_chicken_legs": "Pileći bataci", + "iot_special_chocolate_pudding": "Čokoladni puding", "iot_special_entrecote": "Odrezak", - "iot_special_fresh_tuna": "Svje\u017ea tuna", - "iot_special_grilled_vegetables": "Povr\u0107e na \u017earu", - "iot_special_lamb_cutlet": "Janje\u0107i kotlet", + "iot_special_fresh_tuna": "Svježa tuna", + "iot_special_grilled_vegetables": "Povrće na žaru", + "iot_special_lamb_cutlet": "Janjeći kotlet", "iot_special_meatballs": "Mesne okruglice", "iot_special_minestrone": "Minestrone", "iot_special_mussels": "Dagnje", "iot_special_omelette": "Omlet", - "iot_special_pancakes": "Pala\u010dinke", - "iot_special_paris_style_peas": "Gra\u0161ak na pari\u0161ki na\u010din", - "iot_special_poached_eggs": "Po\u0161irana jaja", + "iot_special_pancakes": "Palačinke", + "iot_special_paris_style_peas": "Grašak na pariški način", + "iot_special_poached_eggs": "Poširana jaja", "iot_special_pork_fillet": "Svinjski file", "iot_special_pork_ribs": "Svinjska rebarca", "iot_special_prawns": "Kozice", @@ -287,11 +287,11 @@ "iot_special_scallops": "Jakobove kapice", "iot_special_scrambled_eggs": "Kajgana", "iot_special_spelt": "Pir", - "iot_special_veggy_noodles": "Rezanci s povr\u0107em", + "iot_special_veggy_noodles": "Rezanci s povrćem", "iot_special_white_fish_fillet": "Filet bijele ribe", "iot_standard_boiling": "Boiling (Prokuhavanje)", - "iot_standard_frying": "Pr\u017eenje", - "iot_standard_keep_warm": "Odr\u017eite toplinu", + "iot_standard_frying": "Prženje", + "iot_standard_keep_warm": "Održite toplinu", "iot_standard_melting": "Otapanje", "iot_standard_simmering": "Simmering (Pirjanje)" }, @@ -300,23 +300,23 @@ "programs_ov": { "state": { "bakery": "Tjestenina i tijesta", - "bakery_steam": "Kruh pe\u010den na pari", - "bottom_heating": "Donji grija\u010d", - "bottom_heating_fan": "Donji grija\u010d + Ventilator", + "bakery_steam": "Kruh pečen na pari", + "bottom_heating": "Donji grijač", + "bottom_heating_fan": "Donji grijač + Ventilator", "bread": "Kruh", - "bread_steam": "Peciva pe\u010dena na pari", + "bread_steam": "Peciva pečena na pari", "convection_fan": "Konvekcija + Ventilator", - "convection_fan_turnspit": "Konvekcija + ventilator + ra\u017eanj", + "convection_fan_turnspit": "Konvekcija + ventilator + ražanj", "conventional": "Konvekcijska", - "conventional_turnspit": "Konvekcija + ra\u017eanj", + "conventional_turnspit": "Konvekcija + ražanj", "defrost": "Odmrzavanje", "descaling": "Uklanjanje kamenca", "fish": "Riba", "fish_steam": "Riba kuhana na pari", - "grill_cata": "Pe\u010denje", - "grill_fan_cata": "Ventilator za pe\u010denje", - "grill_fan_pyro": "Grija\u010d + ventilator", - "grill_pyro": "Grija\u010d", + "grill_cata": "Pečenje", + "grill_fan_cata": "Ventilator za pečenje", + "grill_fan_pyro": "Grijač + ventilator", + "grill_pyro": "Grijač", "h20_clean": "H2O-Clean", "iot_bread": "Kruh", "iot_h20_clean": "h2O clean", @@ -329,7 +329,7 @@ "low_temp_cooking_steam": "Kuhanje na pari i na niskoj temperaturi", "meat": "Meso", "meat_steam": "Meso kuhano na pari", - "multi_level": "Vi\u0161e razina", + "multi_level": "Više razina", "paella": "Paella", "pasta_and_bakery": "Tjestenina i tijesta", "pizza": "Pizza", @@ -339,14 +339,13 @@ "red_meat_steam": "Crveno meso kuhano na pari", "regenerate": "Regeneracija", "soft_plus": "Mekano+", - "super_grill": "Super ro\u0161tilj", + "super_grill": "Super roštilj", "tailor_bake": "Tailor bake", "tailor_bake_cata": "Tailor Bake", - "tailor_bake_desctiption": "Ova je funkcija idealna za odr\u017eavanje mekane hrane iznutra i hrskave izvana.\r\r\r\nOvom se funkcijom smanjuje koli\u010dina potrebnih masno\u0107a ili ulja, za zdravu prehranu.\r\r\r\nKombiniranjem grija\u010da s pulsiraju\u0107im ciklusom zraka jam\u010de se ujedna\u010deni rezultati pe\u010denja.", "tailor_bake_pyro": "Tailor Bake", - "vegetables": "Povr\u0107e", - "vegetables_cata": "Povr\u0107e", - "vegetables_pyro": "Povr\u0107e", + "vegetables": "Povrće", + "vegetables_cata": "Povrće", + "vegetables_pyro": "Povrće", "water_discharge": "Odvod vode", "white_meat": "Bijelo meso", "white_meat_steam": "Bijelo meso kuhano na pari" @@ -355,36 +354,36 @@ }, "programs_td": { "state": { - "active_dry": "Aktivno su\u0161enje", + "active_dry": "Aktivno sušenje", "allergy_care": "Antialergijski", "all_in_one": "All in One", "antiallergy": "Antialergijski", "anti_odours": "Protiv neugodnih mirisa", "auto_care": "Auto Care", - "baby": "Dje\u010dje rublje", - "bed_quilt": "Pokriva\u010di", + "baby": "Dječje rublje", + "bed_quilt": "Pokrivači", "care_30": "Njega 30", "care_45": "Njega 45", "care_59": "Njega 59", - "coloured": "\u0160areno", + "coloured": "Šareno", "daily_45_min": "Dnevni 45'", "daily_perfect_59_min": "Dnevni Perfect 59'", - "darks_and_coloured": "Tamno & \u0160areno", + "darks_and_coloured": "Tamno & Šareno", "delicates": "Osjetljivo", "duvet": "Popluni", - "eco": "Ekolo\u0161ki pamuk", + "eco": "Ekološki pamuk", "ecospeed_cottons": "Ecospeed Pamuk", "ecospeed_delicates": "Ecospeed osjetljivo", - "ecospeed_mixed": "Ecospeed Mije\u0161ane tkanine", + "ecospeed_mixed": "Ecospeed Miješane tkanine", "extra_hygiene": "Extra higijenski", "fitness": "Fitness", - "fresh_care": "Svje\u017ea njega", + "fresh_care": "Svježa njega", "genius": "Genius", "hqd_baby_care": "Baby Care", - "hqd_bath_towel": "Ru\u010dnici", + "hqd_bath_towel": "Ručnici", "hqd_bed_sheets": "Plahte", "hqd_bulky": "Glomazni komadi", - "hqd_casual": "Opu\u0161teno", + "hqd_casual": "Opušteno", "hqd_cold_wind_30": "Hladni zrak, 30 minuta", "hqd_cold_wind_timing": "Hladni zrak ", "hqd_cotton": "Pamuk", @@ -393,177 +392,177 @@ "hqd_diaper": "Pelene", "hqd_duvet": "Poplun", "hqd_feather": "Jakne punjene paperjem", - "hqd_hot_wind_timing": "Vru\u0107i zrak", + "hqd_hot_wind_timing": "Vrući zrak", "hqd_hygienic": "Higijenizacija", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", "hqd_jacket": "Jakne", "hqd_jeans": "Traperice", "hqd_luxury": "Luxury", - "hqd_mix": "Mije\u0161ano rublje", - "hqd_night_dry": "Su\u0161enje preko no\u0107i", + "hqd_mix": "Miješano rublje", + "hqd_night_dry": "Sušenje preko noći", "hqd_outdoor": "Outdoor", "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Brzo 20", "hqd_quick_30": "Brzo 30", - "hqd_quick_dry": "Brzo su\u0161enje", + "hqd_quick_dry": "Brzo sušenje", "hqd_quilt": "Popluni", "hqd_refresh": "Protiv neugodnih mirisa", - "hqd_school_uniform": "\u0160kolska uniforma", + "hqd_school_uniform": "Školska uniforma", "hqd_shirt": "Majice", "hqd_shoes": "Cipele", "hqd_silk": "Svila", - "hqd_sports": "Sportska odje\u0107a", + "hqd_sports": "Sportska odjeća", "hqd_synthetics": "Sintetika", "hqd_timer": "Vremenski definirano", - "hqd_towel": "Ru\u010dnici", + "hqd_towel": "Ručnici", "hqd_underwear": "Donje rublje", "hqd_warm_up": "Zagrijavanje", "hqd_wool": "Vuna", - "hqd_working_suit": "Radna odje\u0107a", + "hqd_working_suit": "Radna odjeća", "hygiene": "Higijena", "iot_checkup": "Kontrolni pregled", "iot_dry_anti_mites": "Protiv grinja", - "iot_dry_baby": "Dje\u010dje rublje", + "iot_dry_baby": "Dječje rublje", "iot_dry_backpacks": "Ruksaci", - "iot_dry_bathrobe": "Kupaonski ogrta\u010di", + "iot_dry_bathrobe": "Kupaonski ogrtači", "iot_dry_bed_linen": "Posteljina", - "iot_dry_bed_quilt": "Pokriva\u010di", + "iot_dry_bed_quilt": "Pokrivači", "iot_dry_cotton": "Pamuk", - "iot_dry_cuddly_toys": "Pli\u0161ane igra\u010dke", + "iot_dry_cuddly_toys": "Plišane igračke", "iot_dry_curtains": "Zavjese", - "iot_dry_dehumidifier": "Odstranjiva\u010d vlage", + "iot_dry_dehumidifier": "Odstranjivač vlage", "iot_dry_delicates": "Osjetljivo", "iot_dry_delicate_tablecloths": "Osjetljivi stolnjaci", - "iot_dry_denim_jeans": "Traper \u2013 Traperice", + "iot_dry_denim_jeans": "Traper – Traperice", "iot_dry_down_jacket": "Jakna", "iot_dry_duvet": "Popluni", "iot_dry_easy_iron_cotton": "Super Easy Iron", - "iot_dry_easy_iron_synthetics": "Super Easy Iron za sinteti\u010dko rublje", - "iot_dry_gym_fit": "Fitness odje\u0107a", + "iot_dry_easy_iron_synthetics": "Super Easy Iron za sintetičko rublje", + "iot_dry_gym_fit": "Fitness odjeća", "iot_dry_lingerie": "Donje rublje", - "iot_dry_mixed": "Mije\u0161ane tkanine", + "iot_dry_mixed": "Miješane tkanine", "iot_dry_playsuits": "Kombinezoni", "iot_dry_rapid_30": "Rapid 30", - "iot_dry_rapid_59": "Brzi program 59\u2019.", - "iot_dry_refresh": "Osvje\u017eavanje", - "iot_dry_regenerates_waterproof": "Regeneracija vodootporne odje\u0107e", + "iot_dry_rapid_59": "Brzi program 59’.", + "iot_dry_refresh": "Osvježavanje", + "iot_dry_regenerates_waterproof": "Regeneracija vodootporne odjeće", "iot_dry_relax_creases": "Smanjenje nabora", - "iot_dry_shirts": "Ko\u0161ulje", + "iot_dry_shirts": "Košulje", "iot_dry_small_load": "Mali kapacitet", - "iot_dry_swimsuits_and_bikinis": "Kupa\u0107i kostimi", + "iot_dry_swimsuits_and_bikinis": "Kupaći kostimi", "iot_dry_synthetics": "Sintetika", "iot_dry_synthetic_dry": "Suha sintetika", "iot_dry_tablecloths": "Stolnjaci", - "iot_dry_technical_fabrics": "Tehni\u010dko platno", + "iot_dry_technical_fabrics": "Tehničko platno", "iot_dry_warm_embrace": "Zagrijavanje", "iot_dry_wool": "Woolmark", "jeans": "Traper", "mix_and_dry": "Mix&Dry", - "pets": "Ku\u0107ni ljubimci", - "pre_iron": "Prije gla\u010danja", + "pets": "Kućni ljubimci", + "pre_iron": "Prije glačanja", "rapid_30": "Rapid 30", "rapid_45": "Brzi 45 min", "rapid_59": "Perfect Rapid 59 Min", - "refresh": "Osvje\u017eavanje", + "refresh": "Osvježavanje", "relax_creases": "Smanjenje nabora", "saving_30_min": "ECO 30'", - "shirts": "Ko\u0161ulje", + "shirts": "Košulje", "shoes": "Cipele", "small_load": "Mali kapacitet", "soft_care": "Soft Care", "sport_plus": "Sport Plus", - "super_easy_iron_misti": "Iznimno jednostavno gla\u010danje za raznovrsne tkanine", - "super_easy_iron_xxl": "Iznimno jednostavno gla\u010danje XXL", + "super_easy_iron_misti": "Iznimno jednostavno glačanje za raznovrsne tkanine", + "super_easy_iron_xxl": "Iznimno jednostavno glačanje XXL", "super_fast_cottons": "Super brzi Pamuk", "super_fast_delicates": "Super brzi Osjetljivo", "synthetics": "Sintetika", "total_care": "Total Care", - "trainers": "Trenirke i sportska obu\u0107a", + "trainers": "Trenirke i sportska obuća", "ultra_care": "Ultra Care", - "waterproof_revitalize": "Regeneracija vodootporne odje\u0107e", + "waterproof_revitalize": "Regeneracija vodootporne odjeće", "whites": "Bijelo", - "wool": "Su\u0161enje vune", + "wool": "Sušenje vune", "woolmark": "Woolmark", "xxl_load": "XXL kapacitet", - "zoom_59": "Zoom\u00a059" + "zoom_59": "Zoom 59" }, "name": "Program" }, "programs_wm": { "state": { - "20_degrees_coloured_cottons": "20\u00b0 \u0161areno i pamu\u010dno rublje", - "20_degrees_new_energy_label": "20\u00b0C", + "20_degrees_coloured_cottons": "20° šareno i pamučno rublje", + "20_degrees_new_energy_label": "20°C", "active_steam": "Para", "active_wash": "Aktivno pranje", "active_wash_steam": "Aktivno pranje", "allergy_care": "Alergijska njega", "allergy_care_pro": "Alergijska njega Pro", - "all_in_one_49": "Sve u jednom 49\u2019.", - "all_in_one_59": "Sve u jednom 59\u2019.", + "all_in_one_49": "Sve u jednom 49’.", + "all_in_one_59": "Sve u jednom 59’.", "all_in_one_59_steam": "Aktivno pranje + para", "autocare": "Automatska njega", - "autoclean": "\u010ci\u0161\u0107enje bubnja", - "baby_60": "All Baby 60\u00b0C", + "autoclean": "Čišćenje bubnja", + "baby_60": "All Baby 60°C", "care_14": "Rapid Care 14'", "care_30": "Rapid Care 30'", "care_44": "Rapid Care 44'", "checkup": "Kontrolni pregled", - "colour_59": "\u0160areno 59'", + "colour_59": "Šareno 59'", "colour_59_steam": "Boje 59' + para", "cottons": "Pamuk", "cottons_prewash": "Pamuk + Pretpranje", "cottons_steam": "Pamuk + Para", "cotton_care_59": "Pamuk 59 Min", - "delicate_59": "Osjetljivo rublje 59\u2019", + "delicate_59": "Osjetljivo rublje 59’", "delicate_silk": "Osjetljiva svila", "delicate_silk_steam": "Osjetljiva svila + para", - "delicati_59": "Osjetljivo rublje 59\u2019", - "delicati_59_steam": "Osjetljivo rublje 59\u2019", + "delicati_59": "Osjetljivo rublje 59’", + "delicati_59_steam": "Osjetljivo rublje 59’", "drain_spin": "Ispiranje i centrifuga", - "easy_iron": "Easy Iron - lak\u0161e gla\u010danje", + "easy_iron": "Easy Iron - lakše glačanje", "eco_40_60_new_energy_label": "Eco 40-60", "extra_care": "Dodatna Njega", "fitness": "Fitness Care", "fitness_care": "Fitness Care", "fresh_care": "Fresh Care", - "fresh_care_steam": "Svje\u017ea njega + para", - "handwash_wool": "Ru\u010dno pranje i vuna", + "fresh_care_steam": "Svježa njega + para", + "handwash_wool": "Ručno pranje i vuna", "high_dry": "Suhi pamuk", - "hqd_20_degrees": "Pamuk 20\u00a0\u2103", + "hqd_20_degrees": "Pamuk 20 ℃", "hqd_allergy": "Alergijska njega", - "hqd_autoclean": "\u010ci\u0161\u0107enje bubnja", + "hqd_autoclean": "Čišćenje bubnja", "hqd_babycare": "Baby Care", "hqd_checkup": "Kontrolni pregled", "hqd_cottons": "Pamuk", "hqd_delicate": "Osjetljivo rublje", "hqd_delicate_cradle": "Osjetljivo rublje", "hqd_dry": "Suhi pamuk", - "hqd_dry_synthetics": "Suha mije\u0161ana odje\u0107a", + "hqd_dry_synthetics": "Suha miješana odjeća", "hqd_duvet": "Popluni", "hqd_eco_40_60_degrees": "Eco 40-60", "hqd_handwash_wool": "Vuna", "hqd_i_refresh": "i-Refresh", - "hqd_mix": "Mije\u0161ano rublje", + "hqd_mix": "Miješano rublje", "hqd_quick_15": "Brzi program 15'", "hqd_quick_wash_57": "Brzo pranje 57 min", - "hqd_rapid_wash_and_dry": "Pranje & su\u0161enje", - "hqd_refresh": "Osvje\u017eavanje", + "hqd_rapid_wash_and_dry": "Pranje & sušenje", + "hqd_refresh": "Osvježavanje", "hqd_rinse": "Ispiranje", - "hqd_shirts": "Ko\u0161ulje", + "hqd_shirts": "Košulje", "hqd_smart": "Smart A.I.", "hqd_spin": "Okretaj", - "hqd_sport": "Sportska odje\u0107a", - "hqd_super_fast": "Brzi program 39\u2019", + "hqd_sport": "Sportska odjeća", + "hqd_super_fast": "Brzi program 39’", "hqd_synthetic_and_coloured": "Sintetika", "hygiene_59": "Hygijenski Plus 59'", - "hygiene_60": "Higijena 60\u00b0", + "hygiene_60": "Higijena 60°", "hygiene_plus_59": "Hygijenski Plus 59'", "hygiene_plus_59_min": "Hygijenski Plus 59'", "hygiene_pro_49_min": "Hygiene Pro 49 min", "hygiene_pro_steam": "Hygiene Pro + para", - "intensive_40": "Intenzivno 40\u00b0C", - "intensive_40_steam": "Intenzivno 40\u00b0C + para", + "intensive_40": "Intenzivno 40°C", + "intensive_40_steam": "Intenzivno 40°C + para", "iot_active_steam": "Para", "iot_active_wash_steam": "Aktivno pranje", "iot_allergy_care_pro": "Alergijska njega Pro", @@ -572,51 +571,51 @@ "iot_colour_59_steam": "Boje 59' + para", "iot_cottons_steam": "Pamuk + Para", "iot_delicate_silk_steam": "Osjetljiva svila + para", - "iot_delicati_59_steam": "Osjetljivo rublje 59\u2019", - "iot_dry_air_refresh": "Osvje\u017eavanje zraka", + "iot_delicati_59_steam": "Osjetljivo rublje 59’", + "iot_dry_air_refresh": "Osvježavanje zraka", "iot_dry_anti_mites": "Protiv grinja", - "iot_dry_baby": "Dje\u010dja odje\u0107a", - "iot_dry_backpacks": "Naprtnja\u010de", - "iot_dry_bathrobe": "Ku\u0107ni ogrta\u010di i porozne tkanine", + "iot_dry_baby": "Dječja odjeća", + "iot_dry_backpacks": "Naprtnjače", + "iot_dry_bathrobe": "Kućni ogrtači i porozne tkanine", "iot_dry_bed_linen": "Posteljine", "iot_dry_cotton_dry": "Suhi pamuk", - "iot_dry_cuddly_toys": "Pli\u0161ane igra\u010dke", + "iot_dry_cuddly_toys": "Plišane igračke", "iot_dry_curtains": "Zavjese", - "iot_dry_dehumidifier": "Odstranjiva\u010d vlage", - "iot_dry_delicates_antiallergy": "Osjetljivo rublje \u2013 antialergijski", + "iot_dry_dehumidifier": "Odstranjivač vlage", + "iot_dry_delicates_antiallergy": "Osjetljivo rublje – antialergijski", "iot_dry_delicate_tablecloths": "Osjetljivi stolnjaci", - "iot_dry_denim_jeans": "Traper \u2013 Traperice", - "iot_dry_easy_iron_cotton": "Lagano gla\u010danje pamuka", - "iot_dry_easy_iron_synthetics": "Lagano gla\u010danje sintetike", - "iot_dry_gym_fit": "Odje\u0107a za teretanu \u2013 fitness", + "iot_dry_denim_jeans": "Traper – Traperice", + "iot_dry_easy_iron_cotton": "Lagano glačanje pamuka", + "iot_dry_easy_iron_synthetics": "Lagano glačanje sintetike", + "iot_dry_gym_fit": "Odjeća za teretanu – fitness", "iot_dry_lingerie": "Donje rublje", - "iot_dry_mixed_dry": "Suha mije\u0161ana odje\u0107a", - "iot_dry_rapid_60_min_delicates": "Brzo 60' \u2013 Osjetljivo rublje", - "iot_dry_shirts": "Ko\u0161ulje", - "iot_dry_swimsuits_and_bikinis": "Kupa\u0107i kostimi", + "iot_dry_mixed_dry": "Suha miješana odjeća", + "iot_dry_rapid_60_min_delicates": "Brzo 60' – Osjetljivo rublje", + "iot_dry_shirts": "Košulje", + "iot_dry_swimsuits_and_bikinis": "Kupaći kostimi", "iot_dry_synthetics": "Sintetika suho", "iot_dry_synthetic_dry": "Sintetika suho", "iot_dry_tablecloths": "Stolnjaci", - "iot_dry_technical_fabrics": "Tehni\u010dke tkanine", - "iot_dry_warm_embrace": "Toplo su\u0161enje", + "iot_dry_technical_fabrics": "Tehničke tkanine", + "iot_dry_warm_embrace": "Toplo sušenje", "iot_dry_wool_dry": "Vuna, suho", - "iot_easy_iron": "Easy Iron - lak\u0161e gla\u010danje", - "iot_fresh_care_steam": "Svje\u017ea njega + para", + "iot_easy_iron": "Easy Iron - lakše glačanje", + "iot_fresh_care_steam": "Svježa njega + para", "iot_hygiene_pro_steam": "Hygiene Pro + para", - "iot_intensive_40_steam": "Intenzivno 40\u00b0C + para", - "iot_mixed_steam": "Mije\u0161ane tkanine + Para", - "iot_mix_and_colour_59_steam": "Mje\u0161ovite i obojene tkanine 59' + para", + "iot_intensive_40_steam": "Intenzivno 40°C + para", + "iot_mixed_steam": "Miješane tkanine + Para", + "iot_mix_and_colour_59_steam": "Mješovite i obojene tkanine 59' + para", "iot_perfect_cotton_59_steam": "Pamuk Brzi 59'", "iot_rapid_a_class_60_steam": "Brza klasa A 60 + para", "iot_resistant_cotton_steam": "Pamuk + Para", - "iot_shirts_steam": "Ko\u0161ulje + para", - "iot_single_item_steam": "Pojedina\u010dna stavka + para", + "iot_shirts_steam": "Košulje + para", + "iot_single_item_steam": "Pojedinačna stavka + para", "iot_smart_wash": "Pametno pranje", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Posebna 39' + para", "iot_steam_hygiene_plus": "Hygiene Plus Steam ", - "iot_synthetic_and_coloured_steam": "Sintetika i \u0161areno rublje + para", - "iot_wash_and_dry": "Pranje & su\u0161enje", + "iot_synthetic_and_coloured_steam": "Sintetika i šareno rublje + para", + "iot_wash_and_dry": "Pranje & sušenje", "iot_wash_anti_mites": "Protiv grinja", "iot_wash_anti_odor": "Protiv neugodnih mirisa", "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", @@ -624,18 +623,18 @@ "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", "iot_wash_baby_sanitizer": "Dezinficijens", "iot_wash_baby_sanitizer_steam": "Dezinfekcijsko sredstvo za bebe + para", - "iot_wash_backpacks": "Naprtnja\u010de", + "iot_wash_backpacks": "Naprtnjače", "iot_wash_backpacks_zelig": "Ruksaci", - "iot_wash_bathrobe": "Ku\u0107ni ogrta\u010di i ru\u010dnici", - "iot_wash_bathrobe_steam": "Kupaonski ogrta\u010di + Para", + "iot_wash_bathrobe": "Kućni ogrtači i ručnici", + "iot_wash_bathrobe_steam": "Kupaonski ogrtači + Para", "iot_wash_bed_linen": "Posteljine", "iot_wash_bed_linen_steam": "Posteljina + Para", "iot_wash_bed_linen_zelig": "Posteljine", - "iot_wash_big_single_load": "Veliko pojedina\u010dno punjenje", + "iot_wash_big_single_load": "Veliko pojedinačno punjenje", "iot_wash_bleaching": "Izbjeljivanje", "iot_wash_blood_stains": "Mrlje od krvi", - "iot_wash_cashmere": "Ka\u0161mir", - "iot_wash_chocolate_stains": "Mrlje od \u010dokolade", + "iot_wash_cashmere": "Kašmir", + "iot_wash_chocolate_stains": "Mrlje od čokolade", "iot_wash_cold_wash": "Hladno pranje", "iot_wash_colored": "Obojeno rublje", "iot_wash_colored_anti_stain": "Uklanjanje mrlja za boje", @@ -643,23 +642,23 @@ "iot_wash_coloured": "Boje", "iot_wash_coloured_bed_linen": "Posteljina u boji", "iot_wash_coloured_bed_linen_steam": "Posteljina u boji + para", - "iot_wash_coloured_curtains": "\u0160arene zavjese", - "iot_wash_coloured_shirts": "\u0160arene ko\u0161ulje", - "iot_wash_coloured_shirts_steam": "Ko\u0161ulje u boji + para", + "iot_wash_coloured_curtains": "Šarene zavjese", + "iot_wash_coloured_shirts": "Šarene košulje", + "iot_wash_coloured_shirts_steam": "Košulje u boji + para", "iot_wash_coloured_steam": "Boje + Para", - "iot_wash_coloured_tableclothes": "\u0160areni stolnjaci", - "iot_wash_coloured_tableclothes_steam": "\u0160areni stolnjaci + para", + "iot_wash_coloured_tableclothes": "Šareni stolnjaci", + "iot_wash_coloured_tableclothes_steam": "Šareni stolnjaci + para", "iot_wash_cotton": "Pamuk", "iot_wash_cotton_steam": "Pamuk + Para", - "iot_wash_cuddly_toys": "Pli\u0161ane igra\u010dke", + "iot_wash_cuddly_toys": "Plišane igračke", "iot_wash_curtains": "Zavjese", "iot_wash_curtains_steam": "Zavjese+Para", "iot_wash_curtains_zelig": "Zavjese", - "iot_wash_dark": "Tamna odje\u0107a", + "iot_wash_dark": "Tamna odjeća", "iot_wash_darks_and_coloured_44": "Tamno i obojeno rublje 44'", "iot_wash_darks_and_coloured_59": "Tamno i obojeno rublje 59'", "iot_wash_darks_and_coloured_xl": "Tamno i obojeno rublje XL", - "iot_wash_dark_steam": "Tamna odje\u0107a + Para", + "iot_wash_dark_steam": "Tamna odjeća + Para", "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", "iot_wash_dash_cold_cycle": "Dash Cold Clean", "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", @@ -667,74 +666,74 @@ "iot_wash_delicate_antiallergy": "Antialergijski za osjetljivo rublje", "iot_wash_delicate_antiallergy_steam": "Antialergijski za osjetljivo rublje + Para", "iot_wash_delicate_antiallergy_zelig": "Antialergijski za osjetljivo rublje", - "iot_wash_delicate_colors": "Osjetljivo \u0161areno rublje", + "iot_wash_delicate_colors": "Osjetljivo šareno rublje", "iot_wash_delicate_colors_steam": "Boje + para", "iot_wash_delicate_dark": "Osjetljivo tamno rublje", "iot_wash_delicate_steam": "Osjetljivo rublje + Para", "iot_wash_delicate_tablecloths": "Osjetljivi stolnjaci", "iot_wash_delicate_tablecloths_steam": "Osjetljivi stolnjaci + Para", "iot_wash_delicate_whites": "Osjetljivo bijelo rublje", - "iot_wash_denim_jeans": "Traper \u2013 Traperice", - "iot_wash_diving_suits": "Ronila\u010dka odijela", - "iot_wash_diving_suits_zelig": "Ronila\u010dka odijela", + "iot_wash_denim_jeans": "Traper – Traperice", + "iot_wash_diving_suits": "Ronilačka odijela", + "iot_wash_diving_suits_zelig": "Ronilačka odijela", "iot_wash_down_jackets": "Jakne punjene paperjem", "iot_wash_down_jackets_zelig": "Jakne punjene paperjem", "iot_wash_duvet": "Popluni", - "iot_wash_fruit_stains": "Mrlje od vo\u0107a", - "iot_wash_gym_fit": "Odje\u0107a za teretanu \u2013 fitness", - "iot_wash_handwash": "Ru\u010dno pranje", - "iot_wash_handwash_colored": "Ru\u010dno pranje obojenog rublja", - "iot_wash_handwash_dark": "Ru\u010dno pranje tamnog rublja", + "iot_wash_fruit_stains": "Mrlje od voća", + "iot_wash_gym_fit": "Odjeća za teretanu – fitness", + "iot_wash_handwash": "Ručno pranje", + "iot_wash_handwash_colored": "Ručno pranje obojenog rublja", + "iot_wash_handwash_dark": "Ručno pranje tamnog rublja", "iot_wash_lingerie": "Donje rublje", - "iot_wash_masks_refresh": "Osvje\u017eavanje maski", + "iot_wash_masks_refresh": "Osvježavanje maski", "iot_wash_masks_sanification": "Sanitacija maski", "iot_wash_masks_sanification_steam": "Sanitacija maski + Para", "iot_wash_mats": "Prostirke", - "iot_wash_men_s_trousers": "Hla\u010de", - "iot_wash_mixed": "Mije\u0161ano", - "iot_wash_mixed_steam": "Mije\u0161ane tkanine + Para", - "iot_wash_mix_and_coloured_44": "Mije\u0161ano i obojeno rublje 44'", - "iot_wash_mix_and_coloured_59": "Mije\u0161ano i obojeno rublje 59'", - "iot_wash_mix_and_coloured_xl": "Mije\u0161ano i obojeno rublje XL", - "iot_wash_new_clothes": "Nova odje\u0107a", - "iot_wash_perfect_white": "Savr\u0161eno bijelo", - "iot_wash_perfect_white_steam": "Savr\u0161eno bijelo + Para", + "iot_wash_men_s_trousers": "Hlače", + "iot_wash_mixed": "Miješano", + "iot_wash_mixed_steam": "Miješane tkanine + Para", + "iot_wash_mix_and_coloured_44": "Miješano i obojeno rublje 44'", + "iot_wash_mix_and_coloured_59": "Miješano i obojeno rublje 59'", + "iot_wash_mix_and_coloured_xl": "Miješano i obojeno rublje XL", + "iot_wash_new_clothes": "Nova odjeća", + "iot_wash_perfect_white": "Savršeno bijelo", + "iot_wash_perfect_white_steam": "Savršeno bijelo + Para", "iot_wash_pets": "Pribor za ljubimce", - "iot_wash_pets_hair_removal": "Uklanjanje dlaka ku\u0107nih ljubimaca", - "iot_wash_pets_odours_stains_removal": "Uklanjanje neugodnih mirisa i mrlja od ku\u0107nih ljubimaca", + "iot_wash_pets_hair_removal": "Uklanjanje dlaka kućnih ljubimaca", + "iot_wash_pets_odours_stains_removal": "Uklanjanje neugodnih mirisa i mrlja od kućnih ljubimaca", "iot_wash_pets_steam": "Pribor za ljubimce", "iot_wash_playsuits": "Kombinezoni", "iot_wash_playsuits_steam": "Kombinezoni + Para", - "iot_wash_quick_drum_cleaner": "Sredstvo za brzo \u010di\u0161\u0107enje bubnja", - "iot_wash_rapid_14": "Brzi program 14\u2019", - "iot_wash_rapid_30": "Brzi program 30\u2019", - "iot_wash_rapid_44": "Brzi program 44\u2019", - "iot_wash_rapid_59": "Brzi program 59\u2019", + "iot_wash_quick_drum_cleaner": "Sredstvo za brzo čišćenje bubnja", + "iot_wash_rapid_14": "Brzi program 14’", + "iot_wash_rapid_30": "Brzi program 30’", + "iot_wash_rapid_44": "Brzi program 44’", + "iot_wash_rapid_59": "Brzi program 59’", "iot_wash_rapid_59_steam": "Brzi 59' + para", - "iot_wash_refresh_14_min": "Osvje\u017eavanje 14\u2019", + "iot_wash_refresh_14_min": "Osvježavanje 14’", "iot_wash_resistant_colored": "Otporno obojeno rublje", "iot_wash_resistant_dark": "Otporno tamno rublje", "iot_wash_resistant_whites": "Otporno bijelo rublje", "iot_wash_rinse": "Ispiranje", - "iot_wash_shirts": "Ko\u0161ulje", - "iot_wash_shirts_steam": "Ko\u0161ulje + Para", + "iot_wash_shirts": "Košulje", + "iot_wash_shirts_steam": "Košulje + Para", "iot_wash_silk": "Svila", - "iot_wash_ski_suit": "Skija\u0161ka odijela", - "iot_wash_ski_suit_zelig": "Skija\u0161ka odijela", + "iot_wash_ski_suit": "Skijaška odijela", + "iot_wash_ski_suit_zelig": "Skijaška odijela", "iot_wash_spin": "Centrifuga", "iot_wash_sport": "Sportsko rublje", - "iot_wash_sport_anti_odor": "Sportska odje\u0107a protiv neugodnih mirisa", - "iot_wash_sport_anti_odor_zelig": "Sportska odje\u0107a protiv neugodnih mirisa", + "iot_wash_sport_anti_odor": "Sportska odjeća protiv neugodnih mirisa", + "iot_wash_sport_anti_odor_zelig": "Sportska odjeća protiv neugodnih mirisa", "iot_wash_stains_remover": "Uklanjanje mrlja", - "iot_wash_swimsuits_and_bikinis": "Kupa\u0107i kostimi", + "iot_wash_swimsuits_and_bikinis": "Kupaći kostimi", "iot_wash_synthetic": "Sintetika", "iot_wash_synthetic_steam": "Sintetika + Para", "iot_wash_tablecloths": "Stolnjaci", "iot_wash_tablecloths_steam": "Stolnjaci + Para", - "iot_wash_technical_fabrics": "Tehni\u010dke tkanine", - "iot_wash_technical_fabrics_zelig": "Tehni\u010dke tkanine", - "iot_wash_technical_jackets": "Tehni\u010dke jakne", - "iot_wash_technical_jackets_zelig": "Tehni\u010dke jakne", + "iot_wash_technical_fabrics": "Tehničke tkanine", + "iot_wash_technical_fabrics_zelig": "Tehničke tkanine", + "iot_wash_technical_jackets": "Tehničke jakne", + "iot_wash_technical_jackets_zelig": "Tehničke jakne", "iot_wash_trainers": "Tenisice", "iot_wash_whites": "Bijelo rublje", "iot_wash_whites_44": "Bijelo rublje 44'", @@ -744,31 +743,31 @@ "iot_wash_wool": "Vuna", "jeans": "Traperice", "jeans_60": "Traper", - "low_dry": "Suha mije\u0161ana odje\u0107a", - "mixed": "Mije\u0161ane tkanine", - "mixed_and_colored_59": "Mije\u0161ana i \u0161arena odje\u0107a 59\u2019", - "mixed_steam": "Mije\u0161ane tkanine + Para", + "low_dry": "Suha miješana odjeća", + "mixed": "Miješane tkanine", + "mixed_and_colored_59": "Miješana i šarena odjeća 59’", + "mixed_steam": "Miješane tkanine + Para", "mix_and_colour_59": "Mijesane Tkanine + Sareno 59'", - "mix_and_colour_59_steam": "Mje\u0161ovite i obojene tkanine 59' + para", - "night_and_day": "No\u0107 i dan", - "night_wash": "Ciklus preko no\u0107i", - "perfect_59": "Savr\u0161eno 59\u2019", + "mix_and_colour_59_steam": "Mješovite i obojene tkanine 59' + para", + "night_and_day": "Noć i dan", + "night_wash": "Ciklus preko noći", + "perfect_59": "Savršeno 59’", "perfect_cotton_59": "Pamuk Brzi 59'", "perfect_cotton_59_steam": "Pamuk Brzi 59'", - "perfect_whites_59": "Savr\u0161eno bijelo 59'", + "perfect_whites_59": "Savršeno bijelo 59'", "rapid_14_min": "Brzi 14'", "rapid_30_min": "Brzi 30 min", "rapid_44_min": "Brzi 44 min", "rapid_a_class_60": "Brza klasa A 60", "rapid_a_class_60_steam": "Brza klasa A 60 + para", - "rapid_wash_and_dry_59_min": "Pranje i su\u0161enje 59\u2019.", + "rapid_wash_and_dry_59_min": "Pranje i sušenje 59’.", "resistant_cotton": "Pamuk", "resistant_cotton_steam": "Pamuk + Para", "rinse": "Ispiranje", - "shirts_steam": "Ko\u0161ulje + para", - "silent_night": "Ciklus preko no\u0107i", - "single_item": "Pojedina\u010dna stavka", - "single_item_steam": "Pojedina\u010dna stavka + para", + "shirts_steam": "Košulje + para", + "silent_night": "Ciklus preko noći", + "single_item": "Pojedinačna stavka", + "single_item_steam": "Pojedinačna stavka + para", "smart_wash": "Pametno pranje", "soft_care": "Mekana njega", "soft_care_steam": "Soft Care + Steam", @@ -776,23 +775,23 @@ "special_39": "Posebna 39'", "special_39_full_load": "Posebna 39'", "special_39_full_load_steam": "Posebna 39' + para", - "special_49": "Posebno 49\u2019", - "sport_39": "Sport 39\u2019", + "special_49": "Posebno 49’", + "sport_39": "Sport 39’", "sport_plus_29": "Sportski Plus 29\"", "sport_plus_39": "Sportski Plus 39'", - "steam_39": "Para 39\u2019", + "steam_39": "Para 39’", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - pamuk", "steam_care_pro_delicates": "Steam Care Pro - osjetljivo", "steam_care_pro_synthetic": "Steam Care Pro - sintetika", "steam_hygiene_plus": "Hygiene Plus Steam ", "synthetics": "Sintetika", - "synthetic_and_coloured": "Sintetika i \u0161areno rublje", - "synthetic_and_coloured_steam": "Sintetika i \u0161areno rublje + para", + "synthetic_and_coloured": "Sintetika i šareno rublje", + "synthetic_and_coloured_steam": "Sintetika i šareno rublje + para", "tailored_resistant_cotton": "Tailored Resistant Cotton", "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", "total_care": "Potpuna njega", - "tumbling": "Su\u0161ilica", + "tumbling": "Sušilica", "wool": "Vuna", "wool_and_delicates_49": "Vuna/Osjetljivo 49'", "wool_dry": "Suha vuna", @@ -802,17 +801,17 @@ }, "dry_levels": { "state": { - "0": "Bez su\u0161enja", - "1": "Suho za gla\u010danje", + "0": "Bez sušenja", + "1": "Suho za glačanje", "2": "Suho za spremanje", "3": "Suho za spremanje", "4": "Potpuno suho", - "12": "Suho za gla\u010danje", + "12": "Suho za glačanje", "13": "Suho za spremanje", - "14": "Spremno za no\u0161enje", + "14": "Spremno za nošenje", "15": "Potpuno suho" }, - "name": "Stupanj suho\u0107e" + "name": "Stupanj suhoće" }, "spin_speed": { "name": "Centrifuga" @@ -821,24 +820,24 @@ "name": "Temperatura" }, "dry_time": { - "name": "Trajanje su\u0161enja" + "name": "Trajanje sušenja" } }, "switch": { "anti_crease": { - "name": "Spre\u010davanje gu\u017evanja" + "name": "Sprečavanje gužvanja" }, "add_dish": { "name": "" }, "eco_express": { - "name": "Ekolo\u0161ki" + "name": "Ekološki" }, "extra_dry": { "name": "Iznimno suho" }, "half_load": { - "name": "Polovi\u010dno popunjeno" + "name": "Polovično popunjeno" }, "open_door": { "name": "Otvori vrata" @@ -850,19 +849,19 @@ "name": "Predgrij" }, "dish_washer": { - "name": "Perilica posu\u0111a" + "name": "Perilica posuđa" }, "tumble_dryer": { - "name": "Bubnjasta su\u0161ilica" + "name": "Bubnjasta sušilica" }, "washing_machine": { "name": "Perilica rublja" }, "washer_dryer": { - "name": "Perilica su\u0161ilica rublja" + "name": "Perilica sušilica rublja" }, "oven": { - "name": "Pe\u0107nica" + "name": "Pećnica" }, "prewash": { "name": "Pretpranje" @@ -874,7 +873,7 @@ "name": "Keep Fresh" }, "delay_time": { - "name": "Odgoda po\u010detka" + "name": "Odgoda početka" } }, "binary_sensor": { @@ -894,7 +893,7 @@ "name": "Good Night" }, "anti_crease": { - "name": "Spre\u010davanje gu\u017evanja" + "name": "Sprečavanje gužvanja" }, "aqua_plus": { "name": "Aquaplus" @@ -918,7 +917,7 @@ "name": "Program" }, "still_hot": { - "name": "Jo\u0161 vru\u0107e" + "name": "Još vruće" }, "pan_status": { "name": "Tava" @@ -936,13 +935,13 @@ "name": "Otvorena vrata" }, "connection": { - "name": "Priklju\u010dak ure\u0111aja" + "name": "Priključak uređaja" }, "child_lock": { - "name": "Zaklju\u010davanje za za\u0161titu djece" + "name": "Zaključavanje za zaštitu djece" }, "on": { - "name": "Uklju\u010deno" + "name": "Uključeno" }, "prewash": { "name": "Pretpranje" @@ -950,16 +949,16 @@ }, "number": { "power_management": { - "name": "Energetski u\u010dinkovito upravljanje" + "name": "Energetski učinkovito upravljanje" }, "temperature": { "name": "Temperatura" }, "delay_time": { - "name": "Odgoda po\u010detka" + "name": "Odgoda početka" }, "water_hard": { - "name": "Tvrdo\u0107a vode" + "name": "Tvrdoća vode" }, "program_duration": { "name": "Trajanje programa" @@ -974,12 +973,12 @@ "name": "Vrijeme pranja" }, "dry_time": { - "name": "Trajanje su\u0161enja" + "name": "Trajanje sušenja" } }, "button": { "induction_hob": { - "name": "Indukcijska plo\u010da za kuhanje" + "name": "Indukcijska ploča za kuhanje" } } } diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index 0db4f4d..409fc62 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -26,7 +26,7 @@ "errors": { "state": { "00": "Nessun Errore", - "100000000000": "E2: Controllare se la porta \u00e8 chiusa correttamente", + "100000000000": "E2: Controllare se la porta è chiusa correttamente", "8000000000000": "E4: Controllare l'approvvigionamento idrico" }, "name": "Errore" @@ -181,7 +181,7 @@ "name": "Tempo asciugatura" }, "suggested_load": { - "name": "Capacit\u00e0 di carico" + "name": "Capacità di carico" }, "energy_label": { "name": "Efficienza energetica" @@ -217,29 +217,29 @@ "auto_plus": "AutoPlus", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Auto Universale 50 - 60\u00b0C", - "auto_universal_plus": "Auto Universale Plus 65 - 75\u00b0C", - "auto_universal_plus_soil": "Auto Universale Plus 65 - 75\u00b0C", - "auto_universal_soil": "Auto Universale 50 - 60\u00b0C", + "auto_universal": "Auto Universale 50 - 60°C", + "auto_universal_plus": "Auto Universale Plus 65 - 75°C", + "auto_universal_plus_soil": "Auto Universale Plus 65 - 75°C", + "auto_universal_soil": "Auto Universale 50 - 60°C", "auto_wash": "Auto Wash", "auto_wash_soil": "Auto Wash", - "classe_a_59": "Classe A 59' 65\u00b0C", - "delicate": "Delicato 45\u00b0C", + "classe_a_59": "Classe A 59' 65°C", + "delicate": "Delicato 45°C", "dishwasher_care": "Ciclo anticalcare", "eco": "Eco", - "eco_asynch": "Eco 45\u00b0C", - "eco_bldc": "Eco 45\u00b0C", - "eco_synch": "Eco 45\u00b0C", + "eco_asynch": "Eco 45°C", + "eco_bldc": "Eco 45°C", + "eco_synch": "Eco 45°C", "gentle_wash": "Gentle wash", "glass": "Calici", - "glassware": "Cristalli 45\u00b0C", + "glassware": "Cristalli 45°C", "glass_care": "Glass Care", "hygiene": "Igiene", - "hygiene_plus": "Igiene 75\u00b0C", + "hygiene_plus": "Igiene 75°C", "intensive": "Intensivo ", "intensive_rapid": "Forte Veloce", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Auto Universale 50 - 60\u00b0C", + "iot_auto_universal_soil": "Auto Universale 50 - 60°C", "iot_auto_wash_soil": "Auto Wash", "iot_baby_care": "Baby Care", "iot_breakfast": "Colazione", @@ -250,13 +250,13 @@ "iot_cocktail_glasses_soil": "Cocktail Glasses", "iot_daily_care": "Quotidiano", "iot_daily_care_soil": "Quotidiano", - "iot_delicate": "Delicato 45\u00b0C", + "iot_delicate": "Delicato 45°C", "iot_dinner_for_two": "Cena di coppia", "iot_dinner_for_two_soil": "Cena di coppia", "iot_dreft_quick_cycle": "Dreft Rapido", - "iot_eco_asynch": "Eco 45\u00b0C", - "iot_eco_bldc": "Eco 45\u00b0C", - "iot_eco_synch": "Eco 45\u00b0C", + "iot_eco_asynch": "Eco 45°C", + "iot_eco_bldc": "Eco 45°C", + "iot_eco_synch": "Eco 45°C", "iot_extra_hygiene": "Ciclo Vapore", "iot_fairy_quick_cycle": "Fairy Rapido", "iot_happy_hour": "Happy Hour", @@ -272,23 +272,23 @@ "iot_prewash": "Prelavaggio", "iot_pyrex_and_glassware": "Pyrex & Glassware", "iot_rapid_29": "Rapido 29'", - "iot_rapid_39": "Rapido 39' 60\u00b0C", + "iot_rapid_39": "Rapido 39' 60°C", "iot_single": "Single", - "iot_steam": "Vapore 75\u00b0C", + "iot_steam": "Vapore 75°C", "iot_super_flash": "Super Flash", "iot_super_wash": "Super Wash", "iot_turbopower": "Turbo Power", - "iot_universal": "Universale 60\u00b0C", + "iot_universal": "Universale 60°C", "iot_wok_grids_maxi_pans": "Maxi Stoviglie e Griglie", "iot_wok_grids_maxi_pans_soil": "Maxi Stoviglie e Griglie", "iot_yes_quick_cycle": "Yes Rapido", - "night": "Notte 55\u00b0C", + "night": "Notte 55°C", "prewash": "Prelavaggio", "rapid_20": "Rapido 20'", "rapid_24": "Rapido 24'", - "rapid_29": "Rapido 29' 50\u00b0C", + "rapid_29": "Rapido 29' 50°C", "rapid_35": "Wash&Dry 35'", - "rapid_39": "Rapido 39' 60\u00b0C", + "rapid_39": "Rapido 39' 60°C", "rapid_49": "Rapido 49'", "rapid_59": "Rapido 59'", "sanitising": "Igienizzazione", @@ -298,13 +298,13 @@ "smart_ai": "Smart AI", "special": "Speciale", "special_pw_prz": "Speciale", - "steam": "Vapore 75\u00b0C", - "steam_plus": "Vapore Plus 75\u00b0C", - "total_care": "Total Care 50\u00b0C", - "ultra_silence": "Ultra Silenzioso 55\u00b0C", - "ultra_silent": "Ultra Silenzioso 55\u00b0C", - "universal": "Universale 60\u00b0C", - "universal_plus": "Universale Plus 70\u00b0C", + "steam": "Vapore 75°C", + "steam_plus": "Vapore Plus 75°C", + "total_care": "Total Care 50°C", + "ultra_silence": "Ultra Silenzioso 55°C", + "ultra_silent": "Ultra Silenzioso 55°C", + "universal": "Universale 60°C", + "universal_plus": "Universale Plus 70°C", "zoom_39": "Zoom 39 min" }, "name": "Programma" @@ -394,7 +394,6 @@ "super_grill": "Supergriglia", "tailor_bake": "Tailor bake", "tailor_bake_cata": "Tailor Bake", - "tailor_bake_desctiption": "Questa funzione \u00e8 ideale per mantenere il cibo morbido all'interno e croccante all'esterno. Per una cucina sana, questa funzione riduce la quantit\u00e0 di grasso o olio necessaria.\r\r\nLa combinazione di elementi riscaldanti con un ciclo pulsante di aria garantisce risultati di cottura uniformi.", "tailor_bake_pyro": "Tailor Bake", "vegetables": "Verdure", "vegetables_cata": "Verdure", @@ -484,7 +483,7 @@ "iot_dry_cotton": "Cotone", "iot_dry_cuddly_toys": "Peluches", "iot_dry_curtains": "Tende", - "iot_dry_dehumidifier": "Rimuovi umidit\u00e0", + "iot_dry_dehumidifier": "Rimuovi umidità", "iot_dry_delicates": "Delicati", "iot_dry_delicate_tablecloths": "Tovaglie delicate", "iot_dry_denim_jeans": "Denim - jeans", @@ -544,8 +543,8 @@ }, "programs_wm": { "state": { - "20_degrees_coloured_cottons": "Cotone e Colorati 20\u00b0", - "20_degrees_new_energy_label": "20\u00b0C", + "20_degrees_coloured_cottons": "Cotone e Colorati 20°", + "20_degrees_new_energy_label": "20°C", "active_steam": "Vapore", "active_wash": "Active Wash", "active_wash_steam": "Active Wash + Vapore", @@ -556,7 +555,7 @@ "all_in_one_59_steam": "Active Wash + Vapore", "autocare": "Autocare", "autoclean": "Pulizia cesto e decalcifiazione", - "baby_60": "Tutto Beb\u00e8 60\u00b0C", + "baby_60": "Tutto Bebè 60°C", "care_14": "Rapid Care 14'", "care_30": "Rapid Care 30'", "care_44": "Rapid Care 44'", @@ -582,7 +581,7 @@ "fresh_care_steam": "Fresh Care + Vapore", "handwash_wool": "Mano e Lana", "high_dry": "Asciugatura Cotone", - "hqd_20_degrees": "Cotone 20\u00b0C", + "hqd_20_degrees": "Cotone 20°C", "hqd_allergy": "Allergy Care", "hqd_autoclean": "Pulizia del cesto", "hqd_babycare": "Baby Care", @@ -609,13 +608,13 @@ "hqd_super_fast": "Rapido 39'", "hqd_synthetic_and_coloured": "Sintetici", "hygiene_59": "Igiene Plus 59'", - "hygiene_60": "Igiene 60\u00b0C", + "hygiene_60": "Igiene 60°C", "hygiene_plus_59": "Igiene Plus 59'", "hygiene_plus_59_min": "Igiene Plus 59'", "hygiene_pro_49_min": "Igiene Pro 49'", "hygiene_pro_steam": "Hygiene Pro + Vapore", - "intensive_40": "Intensivo 40\u00b0C", - "intensive_40_steam": "Intensivo 40\u00b0C + Vapore", + "intensive_40": "Intensivo 40°C", + "intensive_40_steam": "Intensivo 40°C + Vapore", "iot_active_steam": "Vapore", "iot_active_wash_steam": "Active Wash + Vapore", "iot_allergy_care_pro": "Allergy Care Pro", @@ -634,7 +633,7 @@ "iot_dry_cotton_dry": "Asciugatura cotone", "iot_dry_cuddly_toys": "Peluches", "iot_dry_curtains": "Tende", - "iot_dry_dehumidifier": "Rimuovi umidit\u00e0", + "iot_dry_dehumidifier": "Rimuovi umidità", "iot_dry_delicates_antiallergy": "Antiallergia Delicati", "iot_dry_delicate_tablecloths": "Tovaglie delicate", "iot_dry_denim_jeans": "Denim - Jeans", @@ -655,7 +654,7 @@ "iot_easy_iron": "Stiro Facile", "iot_fresh_care_steam": "Fresh Care + Vapore", "iot_hygiene_pro_steam": "Hygiene Pro + Vapore", - "iot_intensive_40_steam": "Intensivo 40\u00b0C + Vapore", + "iot_intensive_40_steam": "Intensivo 40°C + Vapore", "iot_mixed_steam": "Misti + Vapore", "iot_mix_and_colour_59_steam": "Misti e Colorati 59' + Vapore ", "iot_perfect_cotton_59_steam": "Cotone Perfetto 59' + Vapore", @@ -1023,7 +1022,7 @@ "name": "Numero risciacqui" }, "wash_time": { - "name": "Intensit\u00e0 di lavaggio" + "name": "Intensità di lavaggio" }, "dry_time": { "name": "Tempo asciugatura" diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index 881bea1..c14eca0 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -96,7 +96,7 @@ "name": "Temperatuur" }, "water_efficiency": { - "name": "Effici\u00ebnt waterverbruik" + "name": "Efficiënt waterverbruik" }, "water_saving": { "name": "Waterbesparing" @@ -126,7 +126,7 @@ "name": "Laadvermogen" }, "energy_label": { - "name": "Energie-effici\u00ebntie" + "name": "Energie-efficiëntie" }, "det_dust": { "name": "Poeder" @@ -147,13 +147,13 @@ "name": "Energieverbruik Totaal" }, "water_total": { - "name": "Effici\u00ebnt waterverbruik Totaal" + "name": "Efficiënt waterverbruik Totaal" }, "energy_current": { "name": "Energieverbruik Huidige" }, "water_current": { - "name": "Effici\u00ebnt waterverbruik Huidige" + "name": "Efficiënt waterverbruik Huidige" } }, "select": { @@ -165,29 +165,29 @@ "auto_plus": "AutoPlus", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Auto universeel 50 - 60\u00b0C", - "auto_universal_plus": "Auto universeel plus 65 - 75\u00b0C", - "auto_universal_plus_soil": "Auto universeel plus 65 - 75\u00b0C", - "auto_universal_soil": "Auto universeel 50 - 60\u00b0C", + "auto_universal": "Auto universeel 50 - 60°C", + "auto_universal_plus": "Auto universeel plus 65 - 75°C", + "auto_universal_plus_soil": "Auto universeel plus 65 - 75°C", + "auto_universal_soil": "Auto universeel 50 - 60°C", "auto_wash": "Automatisch wassen", "auto_wash_soil": "Automatisch wassen", - "classe_a_59": "A klasse 59' 65\u00b0C", - "delicate": "Delicaat 45\u00b0C", + "classe_a_59": "A klasse 59' 65°C", + "delicate": "Delicaat 45°C", "dishwasher_care": "Ontkalkingsprogramma", "eco": "Eco", - "eco_asynch": "Eco 45\u00b0C", - "eco_bldc": "Eco 45\u00b0C", - "eco_synch": "Eco 45\u00b0C", + "eco_asynch": "Eco 45°C", + "eco_bldc": "Eco 45°C", + "eco_synch": "Eco 45°C", "gentle_wash": "Gentle wash", "glass": "Glas", - "glassware": "Glaswerk 45\u00b0C", + "glassware": "Glaswerk 45°C", "glass_care": "Glass Care", - "hygiene": "Hygi\u00ebne", - "hygiene_plus": "Hygi\u00ebne+ 75\u00b0C", + "hygiene": "Hygiëne", + "hygiene_plus": "Hygiëne+ 75°C", "intensive": "Intensief", "intensive_rapid": "Intensief snel", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Auto universeel 50 - 60\u00b0C", + "iot_auto_universal_soil": "Auto universeel 50 - 60°C", "iot_auto_wash_soil": "Automatisch wassen", "iot_baby_care": "Baby Care", "iot_breakfast": "Onbtijt", @@ -198,13 +198,13 @@ "iot_cocktail_glasses_soil": "CocktailGlazen", "iot_daily_care": "Dagelijkse Zorg", "iot_daily_care_soil": "Dagelijkse Zorg", - "iot_delicate": "Delicaat 45\u00b0C", + "iot_delicate": "Delicaat 45°C", "iot_dinner_for_two": "Dinner for 2", "iot_dinner_for_two_soil": "Dinner for 2", "iot_dreft_quick_cycle": "Dreft Quick", - "iot_eco_asynch": "Eco 45\u00b0C", - "iot_eco_bldc": "Eco 45\u00b0C", - "iot_eco_synch": "Eco 45\u00b0C", + "iot_eco_asynch": "Eco 45°C", + "iot_eco_bldc": "Eco 45°C", + "iot_eco_synch": "Eco 45°C", "iot_extra_hygiene": "Extra Hygiene", "iot_fairy_quick_cycle": "Fairy Quick", "iot_happy_hour": "Happy Hour", @@ -220,23 +220,23 @@ "iot_prewash": "Voorwas", "iot_pyrex_and_glassware": "Pyrex & Glazen", "iot_rapid_29": "Snel 29'", - "iot_rapid_39": "Snel 39' 60\u00b0C", + "iot_rapid_39": "Snel 39' 60°C", "iot_single": "Single", - "iot_steam": "Stoom 75\u00b0C", + "iot_steam": "Stoom 75°C", "iot_super_flash": "Super Flash", "iot_super_wash": "Super Was", "iot_turbopower": "TurboPower", - "iot_universal": "Universeel 60\u00b0C", + "iot_universal": "Universeel 60°C", "iot_wok_grids_maxi_pans": "Speciale Pannen (Wokpannen - Roosters & Maxi Pannen)", "iot_wok_grids_maxi_pans_soil": "Speciale Pannen (Wokpannen - Roosters & Maxi Pannen)", "iot_yes_quick_cycle": "Yes Quick", - "night": "Zeer stil 55\u00b0C", + "night": "Zeer stil 55°C", "prewash": "Voorwas", "rapid_20": "Snel 20'", "rapid_24": "Snel 24'", - "rapid_29": "Snel 29' 50\u00b0C", + "rapid_29": "Snel 29' 50°C", "rapid_35": "Wash&Dry 35'", - "rapid_39": "Snel 39' 60\u00b0C", + "rapid_39": "Snel 39' 60°C", "rapid_49": "Snel 49'", "rapid_59": "Snel 59'", "sanitising": "Ontsmetten", @@ -246,13 +246,13 @@ "smart_ai": "Smart AI", "special": "speciaal", "special_pw_prz": "speciaal", - "steam": "Stoom 75\u00b0C", - "steam_plus": "Stoom Plus 75\u00b0C", - "total_care": "Total Care 50\u00b0C", - "ultra_silence": "Zeer stil 55\u00b0C", - "ultra_silent": "Zeer stil 55\u00b0C", - "universal": "Universeel 60\u00b0C", - "universal_plus": "Universeel Plus 70\u00b0C", + "steam": "Stoom 75°C", + "steam_plus": "Stoom Plus 75°C", + "total_care": "Total Care 50°C", + "ultra_silence": "Zeer stil 55°C", + "ultra_silent": "Zeer stil 55°C", + "universal": "Universeel 60°C", + "universal_plus": "Universeel Plus 70°C", "zoom_39": "Zoom 39 min" }, "name": "Programma" @@ -322,10 +322,10 @@ "iot_h20_clean": "h2O clean", "leavening": "Gisting", "low_temp_cooking": "Bereiding op lage temperatuur", - "low_temp_cooking_fish": "Bereiding op lage temperatuur \u2013 Vis", - "low_temp_cooking_fish_steam": "Stomen bij lage temperatuur \u2013 Vis", - "low_temp_cooking_meat": "Bereiding op lage temperatuur \u2013 Vlees", - "low_temp_cooking_meat_steam": "Stomen bij lage temperatuur \u2013 Vlees", + "low_temp_cooking_fish": "Bereiding op lage temperatuur – Vis", + "low_temp_cooking_fish_steam": "Stomen bij lage temperatuur – Vis", + "low_temp_cooking_meat": "Bereiding op lage temperatuur – Vlees", + "low_temp_cooking_meat_steam": "Stomen bij lage temperatuur – Vlees", "low_temp_cooking_steam": "Stomen bij lage temperatuur", "meat": "Vlees", "meat_steam": "Gestoomd vlees", @@ -342,7 +342,6 @@ "super_grill": "Super grill", "tailor_bake": "Tailor bake", "tailor_bake_cata": "Tailor Bake", - "tailor_bake_desctiption": "Deze functie is ideaal om voedsel zacht van binnen te houden en knapperig van buiten.\r\r\r\r\r\r\r\r\r\r\r\r\nDeze functie vermindert de benodigde hoeveelheid vet of olie, voor een gezonde bereiding.\r\r\r\r\r\r\r\r\r\r\r\r\nDe combinatie van verwarmingselementen met een pulserende luchtcyclus\r\r\r\r\r\r\r\r\r\r\r\r\nzorgt voor gelijkmatige bereidingsresultaten.", "tailor_bake_pyro": "Tailor Bake", "vegetables": "Groenten", "vegetables_cata": "Groenten", @@ -385,7 +384,7 @@ "hqd_bed_sheets": "Beddengoed", "hqd_bulky": "Grote artikelen", "hqd_casual": "Casual", - "hqd_cold_wind_30": "30\u00a0minuten koel briesje", + "hqd_cold_wind_30": "30 minuten koel briesje", "hqd_cold_wind_timing": "Koel briesje ", "hqd_cotton": "Katoen", "hqd_curtain": "Gordijnen", @@ -421,7 +420,7 @@ "hqd_warm_up": "Opwarmen", "hqd_wool": "Wol", "hqd_working_suit": "Werkkleding", - "hygiene": "Hygi\u00ebne", + "hygiene": "Hygiëne", "iot_checkup": "Controle", "iot_dry_anti_mites": "Anti-mijten", "iot_dry_baby": "Baby", @@ -435,7 +434,7 @@ "iot_dry_dehumidifier": "Vochtigheidsverwijderaar", "iot_dry_delicates": "Delicate was", "iot_dry_delicate_tablecloths": "Delicate tafelkleden", - "iot_dry_denim_jeans": "Denim \u2013 Jeans", + "iot_dry_denim_jeans": "Denim – Jeans", "iot_dry_down_jacket": "Jacket", "iot_dry_duvet": "Dekbed", "iot_dry_easy_iron_cotton": "Super Gemakkelijk strijken", @@ -480,31 +479,31 @@ "synthetics": "Synthetisch", "total_care": "Total Care", "trainers": "Trainers", - "ultra_care": "Ultra\u00a0Care", + "ultra_care": "Ultra Care", "waterproof_revitalize": "Waterproof Revitaliseren", "whites": "Witte was", "wool": "Droge Wol", "woolmark": "Wol", "xxl_load": "XXL Lading", - "zoom_59": "Zoom\u00a059" + "zoom_59": "Zoom 59" }, "name": "Programma" }, "programs_wm": { "state": { - "20_degrees_coloured_cottons": "20\u00b0 gekleurd en katoen", - "20_degrees_new_energy_label": "20 \u00b0C", + "20_degrees_coloured_cottons": "20° gekleurd en katoen", + "20_degrees_new_energy_label": "20 °C", "active_steam": "Stoom", "active_wash": "Actieve was", "active_wash_steam": "Actieve was", "allergy_care": "Allergiezorg", "allergy_care_pro": "Allergy Care Pro", - "all_in_one_49": "Alles-in-\u00e9\u00e9n 49'.", - "all_in_one_59": "Alles-in-\u00e9\u00e9n 59'.", + "all_in_one_49": "Alles-in-één 49'.", + "all_in_one_59": "Alles-in-één 59'.", "all_in_one_59_steam": "Actieve was + Stoom", "autocare": "Automatische verzorging", "autoclean": "Trommelreiniging", - "baby_60": "All baby 60 \u00b0 C", + "baby_60": "All baby 60 ° C", "care_14": "Rapid care 14'", "care_30": "Rapid care 30'", "care_44": "Rapid Care 44'", @@ -530,7 +529,7 @@ "fresh_care_steam": "Fresh Care + Stoom", "handwash_wool": "Handwas en wol", "high_dry": "Katoen drogen", - "hqd_20_degrees": "Katoen 20\u2103", + "hqd_20_degrees": "Katoen 20℃", "hqd_allergy": "Allergiezorg", "hqd_autoclean": "Het reinigen van de trommel", "hqd_babycare": "Baby Care", @@ -546,7 +545,7 @@ "hqd_i_refresh": "i-Refresh", "hqd_mix": "Gemengde was", "hqd_quick_15": "Snel 15'", - "hqd_quick_wash_57": "Snel wassen 57\u00a0min", + "hqd_quick_wash_57": "Snel wassen 57 min", "hqd_rapid_wash_and_dry": "Wassen en drogen", "hqd_refresh": "Opfrissen", "hqd_rinse": "Spoelen", @@ -557,13 +556,13 @@ "hqd_super_fast": "Snel 39'", "hqd_synthetic_and_coloured": "Synthetische stoffen", "hygiene_59": "Hygiene Plus 59'", - "hygiene_60": "Hygi\u00ebne 60 \u00b0C", + "hygiene_60": "Hygiëne 60 °C", "hygiene_plus_59": "Hygiene Plus 59'", "hygiene_plus_59_min": "Hygiene Plus 59'", "hygiene_pro_49_min": "Hygiene Pro 49 min", "hygiene_pro_steam": "Hygiene Pro + stoom", - "intensive_40": "Intensief 40\u00b0C", - "intensive_40_steam": "Intensief 40\u00b0C + Stoom", + "intensive_40": "Intensief 40°C", + "intensive_40_steam": "Intensief 40°C + Stoom", "iot_active_steam": "Stoom", "iot_active_wash_steam": "Actieve was", "iot_allergy_care_pro": "Allergy Care Pro", @@ -583,15 +582,15 @@ "iot_dry_cuddly_toys": "Knuffeldieren", "iot_dry_curtains": "Gordijnen", "iot_dry_dehumidifier": "Vochtigheidsverwijderaar", - "iot_dry_delicates_antiallergy": "Fijne was \u2013 anti-allergie", + "iot_dry_delicates_antiallergy": "Fijne was – anti-allergie", "iot_dry_delicate_tablecloths": "Delicate tafellakens", - "iot_dry_denim_jeans": "Denim \u2013 Jeans", - "iot_dry_easy_iron_cotton": "Gemakkelijk strijken \u2013 Katoen", - "iot_dry_easy_iron_synthetics": "Gemakkelijk strijken \u2013 Synthetische stoffen", + "iot_dry_denim_jeans": "Denim – Jeans", + "iot_dry_easy_iron_cotton": "Gemakkelijk strijken – Katoen", + "iot_dry_easy_iron_synthetics": "Gemakkelijk strijken – Synthetische stoffen", "iot_dry_gym_fit": "Sportkleding", "iot_dry_lingerie": "Lingerie", "iot_dry_mixed_dry": "Gemengde vezels drogen", - "iot_dry_rapid_60_min_delicates": "Snel 60' \u2013 Fijne was", + "iot_dry_rapid_60_min_delicates": "Snel 60' – Fijne was", "iot_dry_shirts": "Overhemden", "iot_dry_swimsuits_and_bikinis": "Badkleding", "iot_dry_synthetics": "Synthetische stoffen drogen", @@ -603,18 +602,18 @@ "iot_easy_iron": "Makkelijk Strijkbaar", "iot_fresh_care_steam": "Fresh Care + Stoom", "iot_hygiene_pro_steam": "Hygiene Pro + stoom", - "iot_intensive_40_steam": "Intensief 40\u00b0C + Stoom", + "iot_intensive_40_steam": "Intensief 40°C + Stoom", "iot_mixed_steam": "Gemengde vezels + Stoom", "iot_mix_and_colour_59_steam": "Gemengd en Gekleurd 59' + Stoom", "iot_perfect_cotton_59_steam": "Perfecte Katoen 59'", "iot_rapid_a_class_60_steam": "Snel klasse A 60 + Stoom", "iot_resistant_cotton_steam": "Katoen + Stoom", "iot_shirts_steam": "Shirts + stoom", - "iot_single_item_steam": "E\u00e9n artikel + Stoom", + "iot_single_item_steam": "Eén artikel + Stoom", "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Speciaal 39' + Stoom", - "iot_steam_hygiene_plus": "Hygi\u00ebne Plus Stoom ", + "iot_steam_hygiene_plus": "Hygiëne Plus Stoom ", "iot_synthetic_and_coloured_steam": "Synthetisch en gekleurd + Stoom", "iot_wash_and_dry": "Wassen en drogen", "iot_wash_anti_mites": "Antimijt", @@ -674,7 +673,7 @@ "iot_wash_delicate_tablecloths": "Delicate tafellakens", "iot_wash_delicate_tablecloths_steam": "Delicate tafellakens + Stoom", "iot_wash_delicate_whites": "Witte fijne was", - "iot_wash_denim_jeans": "Denim \u2013 Jeans", + "iot_wash_denim_jeans": "Denim – Jeans", "iot_wash_diving_suits": "Duikpakken", "iot_wash_diving_suits_zelig": "Duikpakken", "iot_wash_down_jackets": "Donsjassen", @@ -767,8 +766,8 @@ "rinse": "Spoelen", "shirts_steam": "Shirts + stoom", "silent_night": "Nachtprogramma", - "single_item": "E\u00e9n artikel", - "single_item_steam": "E\u00e9n artikel + Stoom", + "single_item": "Eén artikel", + "single_item_steam": "Eén artikel + Stoom", "smart_wash": "Smart Wash", "soft_care": "Zachte verzorging", "soft_care_steam": "Soft Care + Steam", @@ -785,7 +784,7 @@ "steam_care_pro_cotton": "Steam Care Pro - Katoen", "steam_care_pro_delicates": "Steam Care Pro - Fijne was", "steam_care_pro_synthetic": "Steam Care Pro - Synthetisch", - "steam_hygiene_plus": "Hygi\u00ebne Plus Stoom ", + "steam_hygiene_plus": "Hygiëne Plus Stoom ", "synthetics": "Synthetische stoffen", "synthetic_and_coloured": "Synthetische vezels en kleuren", "synthetic_and_coloured_steam": "Synthetisch en gekleurd + Stoom", diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index 5f862df..72c3bac 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -8,7 +8,7 @@ "3": "Zatrzymaj", "4": "Zaplanowane", "5": "Zaplanowane", - "6": "B\u0142\u0105d", + "6": "Błąd", "7": "Gotowe" } }, @@ -18,23 +18,23 @@ "1": "Pranie", "2": "Pranie", "3": "Wirowanie", - "4": "P\u0142ukanie", - "5": "P\u0142ukanie", - "6": "P\u0142ukanie", + "4": "Płukanie", + "5": "Płukanie", + "6": "Płukanie", "7": "Suszenie", "9": "Para", "10": "Gotowe", "11": "Wirowanie", - "12": "Wa\u017cenie ", - "13": "Wa\u017cenie ", + "12": "Ważenie ", + "13": "Ważenie ", "14": "Pranie", "15": "Pranie", "16": "Pranie", - "17": "P\u0142ukanie", - "18": "P\u0142ukanie", + "17": "Płukanie", + "18": "Płukanie", "19": "Zaplanowane", - "20": "Utrzymaj \u015bwie\u017co\u015b\u0107", - "24": "Od\u015bwie\u017canie", + "20": "Utrzymaj świeżość", + "24": "Odświeżanie", "25": "Pranie", "26": "Ogrzewanie", "27": "Pranie" @@ -46,12 +46,12 @@ "0": "Gotowe", "1": "Suszenie", "2": "Suszenie", - "3": "Ch\u0142odzenie", - "13": "Ch\u0142odzenie", + "3": "Chłodzenie", + "13": "Chłodzenie", "14": "Suszenie", "15": "Suszenie", - "16": "Ch\u0142odzenie", - "18": "Utrzymaj \u015bwie\u017co\u015b\u0107", + "16": "Chłodzenie", + "18": "Utrzymaj świeżość", "19": "Suszenie", "20": "Suszenie" }, @@ -60,9 +60,9 @@ "program_phases_dw": { "state": { "0": "Gotowe", - "1": "Zmywanie wst\u0119pne", + "1": "Zmywanie wstępne", "2": "Pranie", - "3": "P\u0142ukanie", + "3": "Płukanie", "4": "Suszenie", "5": "Gotowe", "6": "Hot rinse" @@ -78,7 +78,7 @@ "4": "Ekstra suchy", "12": "Prasowanie", "13": "Gotowe do garderoby", - "14": "Gotowe do w\u0142o\u017cenia", + "14": "Gotowe do włożenia", "15": "Ekstra suchy" }, "name": "Poziom suszenia" @@ -90,16 +90,16 @@ "name": "Poziom mocy" }, "remaining_time": { - "name": "Pozosta\u0142y czas" + "name": "Pozostały czas" }, "temperature": { "name": "Temperatura" }, "water_efficiency": { - "name": "Wydajno\u015b\u0107 zu\u017cycia wody" + "name": "Wydajność zużycia wody" }, "water_saving": { - "name": "Oszcz\u0119dno\u015b\u0107 wody" + "name": "Oszczędność wody" }, "duration": { "name": "Czas trwania" @@ -114,28 +114,28 @@ "name": "Poziom pary" }, "dirt_level": { - "name": "Stopie\u0144 zabrudzenia" + "name": "Stopień zabrudzenia" }, "delay_time": { - "name": "Op\u00f3\u017aniony Start" + "name": "Opóźniony Start" }, "dry_time": { "name": "Czas suszenia" }, "suggested_load": { - "name": "\u0141adowno\u015b\u0107" + "name": "Ładowność" }, "energy_label": { - "name": "Efektywno\u015b\u0107 energetyczna" + "name": "Efektywność energetyczna" }, "det_dust": { "name": "Proszek" }, "det_liquid": { - "name": "P\u0142yn" + "name": "Płyn" }, "errors": { - "name": "B\u0142\u0105d" + "name": "Błąd" }, "programs": { "name": "Aktualny program" @@ -144,16 +144,16 @@ "name": "Cykle Suma" }, "energy_total": { - "name": "Zu\u017cycie energii Suma" + "name": "Zużycie energii Suma" }, "water_total": { - "name": "Wydajno\u015b\u0107 zu\u017cycia wody Suma" + "name": "Wydajność zużycia wody Suma" }, "energy_current": { - "name": "Zu\u017cycie energii Aktualne" + "name": "Zużycie energii Aktualne" }, "water_current": { - "name": "Wydajno\u015b\u0107 zu\u017cycia wody Aktualne" + "name": "Wydajność zużycia wody Aktualne" } }, "select": { @@ -165,46 +165,46 @@ "auto_plus": "AutoPlus", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Auto Universalny 50 - 60\u00b0C", - "auto_universal_plus": "Auto Universalny Plus 65 - 75\u00b0C", - "auto_universal_plus_soil": "Auto Universalny Plus 65 - 75\u00b0C", - "auto_universal_soil": "Auto Universalny 50 - 60\u00b0C", + "auto_universal": "Auto Universalny 50 - 60°C", + "auto_universal_plus": "Auto Universalny Plus 65 - 75°C", + "auto_universal_plus_soil": "Auto Universalny Plus 65 - 75°C", + "auto_universal_soil": "Auto Universalny 50 - 60°C", "auto_wash": "Auto Wash", "auto_wash_soil": "Auto Wash", - "classe_a_59": "Zmywanie w klasie A 1 godz. 65\u00b0C", - "delicate": "Delikatny 45\u00b0C", + "classe_a_59": "Zmywanie w klasie A 1 godz. 65°C", + "delicate": "Delikatny 45°C", "dishwasher_care": "Cykl usuwania kamienia", "eco": "Eco", - "eco_asynch": "Eco 45\u00b0C", - "eco_bldc": "Eco 45\u00b0C", - "eco_synch": "Eco 45\u00b0C", + "eco_asynch": "Eco 45°C", + "eco_bldc": "Eco 45°C", + "eco_synch": "Eco 45°C", "gentle_wash": "Gentle wash", - "glass": "Szk\u0142o", - "glassware": "Szklane 45\u00b0C", + "glass": "Szkło", + "glassware": "Szklane 45°C", "glass_care": "Glass Care", "hygiene": "Higiena", - "hygiene_plus": "Higiena+ 75\u00b0C", + "hygiene_plus": "Higiena+ 75°C", "intensive": "Intensywne ", "intensive_rapid": "intensywny szybki", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Auto Universalny 50 - 60\u00b0C", + "iot_auto_universal_soil": "Auto Universalny 50 - 60°C", "iot_auto_wash_soil": "Auto Wash", "iot_baby_care": "Baby Care", - "iot_breakfast": "\u015aniadanie", + "iot_breakfast": "Śniadanie", "iot_checkup": "Kontrola", - "iot_china_crystals": "Kryszta\u0142y", + "iot_china_crystals": "Kryształy", "iot_classe_a_59": "Szybki 59'", "iot_cocktail_glasses": "Kieliszki", "iot_cocktail_glasses_soil": "Kieliszki", "iot_daily_care": "Daily Care", "iot_daily_care_soil": "Daily Care", - "iot_delicate": "Delikatny 45\u00b0C", + "iot_delicate": "Delikatny 45°C", "iot_dinner_for_two": "Obiad dla dwojga", "iot_dinner_for_two_soil": "Obiad dla dwojga", "iot_dreft_quick_cycle": "Dreft Quick", - "iot_eco_asynch": "Eco 45\u00b0C", - "iot_eco_bldc": "Eco 45\u00b0C", - "iot_eco_synch": "Eco 45\u00b0C", + "iot_eco_asynch": "Eco 45°C", + "iot_eco_bldc": "Eco 45°C", + "iot_eco_synch": "Eco 45°C", "iot_extra_hygiene": "Extra Higieniczne", "iot_fairy_quick_cycle": "Fairy Quick", "iot_happy_hour": "Happy Hour", @@ -217,26 +217,26 @@ "iot_porcelain": "Porcelana", "iot_power_mix_wash": "Mieszanie zmywanie Power", "iot_power_mix_wash_soil": "Mieszanie zmywanie Power", - "iot_prewash": "Mycie wst\u0119pne", - "iot_pyrex_and_glassware": "Pyrex i Szk\u0142o", + "iot_prewash": "Mycie wstępne", + "iot_pyrex_and_glassware": "Pyrex i Szkło", "iot_rapid_29": "Szybki 29'", - "iot_rapid_39": "Szybkie 39' 60\u00b0C", + "iot_rapid_39": "Szybkie 39' 60°C", "iot_single": "Pojedynczy", - "iot_steam": "Para 75\u00b0C", + "iot_steam": "Para 75°C", "iot_super_flash": "Super Flash", "iot_super_wash": "Super Mycie", "iot_turbopower": "TurboPower", - "iot_universal": "Uniwersalne 60\u00b0C", + "iot_universal": "Uniwersalne 60°C", "iot_wok_grids_maxi_pans": "Specjalny do patelni (Woki, Patelnie karbowane, Patelnie maxi)", "iot_wok_grids_maxi_pans_soil": "Specjalny do patelni (Woki, Patelnie karbowane, Patelnie maxi)", "iot_yes_quick_cycle": "Yes Quick", - "night": "Ultra Ciche 55\u00b0C", - "prewash": "Mycie wst\u0119pne", + "night": "Ultra Ciche 55°C", + "prewash": "Mycie wstępne", "rapid_20": "Szybki 20'", "rapid_24": "Szybki 24'", - "rapid_29": "Szybki 29' 50\u00b0C", + "rapid_29": "Szybki 29' 50°C", "rapid_35": "Wash&Dry 35'", - "rapid_39": "Szybkie 39' 60\u00b0C", + "rapid_39": "Szybkie 39' 60°C", "rapid_49": "Szybki 49'", "rapid_59": "Szybki 59'", "sanitising": "Dezynfekcja", @@ -246,52 +246,52 @@ "smart_ai": "Smart AI", "special": "specjalne", "special_pw_prz": "specjalne", - "steam": "Para 75\u00b0C", - "steam_plus": "Para Plus 75\u00b0C", - "total_care": "Total Care 50\u00b0C", - "ultra_silence": "Ultra Ciche 55\u00b0C", - "ultra_silent": "Ultra Ciche 55\u00b0C", - "universal": "Uniwersalne 60\u00b0C", - "universal_plus": "Uniwersalne Plus 70\u00b0C", + "steam": "Para 75°C", + "steam_plus": "Para Plus 75°C", + "total_care": "Total Care 50°C", + "ultra_silence": "Ultra Ciche 55°C", + "ultra_silent": "Ultra Ciche 55°C", + "universal": "Uniwersalne 60°C", + "universal_plus": "Uniwersalne Plus 70°C", "zoom_39": "Zoom 39 min" }, "name": "Program" }, "programs_ih": { "state": { - "iot_special_ash_brown": "Popielato-br\u0105zowy", - "iot_special_beef_fillet": "Pol\u0119dwica wo\u0142owa", - "iot_special_beef_veal_stew": "Gulasz wo\u0142owo-ciel\u0119cy", - "iot_special_boiled_rice": "Ry\u017c gotowany", - "iot_special_chicken_breast": "Pier\u015b z kurczaka", + "iot_special_ash_brown": "Popielato-brązowy", + "iot_special_beef_fillet": "Polędwica wołowa", + "iot_special_beef_veal_stew": "Gulasz wołowo-cielęcy", + "iot_special_boiled_rice": "Ryż gotowany", + "iot_special_chicken_breast": "Pierś z kurczaka", "iot_special_chicken_legs": "Udka kurczaka", - "iot_special_chocolate_pudding": "Budy\u0144 czekoladowy", + "iot_special_chocolate_pudding": "Budyń czekoladowy", "iot_special_entrecote": "Antrykot", - "iot_special_fresh_tuna": "\u015awie\u017cy tu\u0144czyk", + "iot_special_fresh_tuna": "Świeży tuńczyk", "iot_special_grilled_vegetables": "Grillowane warzywa", - "iot_special_lamb_cutlet": "Kotlet jagni\u0119cy", - "iot_special_meatballs": "Klopsy mi\u0119sne", - "iot_special_minestrone": "W\u0142oska zupa warzywna", - "iot_special_mussels": "Ma\u0142\u017ce", + "iot_special_lamb_cutlet": "Kotlet jagnięcy", + "iot_special_meatballs": "Klopsy mięsne", + "iot_special_minestrone": "Włoska zupa warzywna", + "iot_special_mussels": "Małże", "iot_special_omelette": "Omlet", - "iot_special_pancakes": "Nale\u015bniki", + "iot_special_pancakes": "Naleśniki", "iot_special_paris_style_peas": "Groszek w stylu paryskim", "iot_special_poached_eggs": "Jajka w koszulce", "iot_special_pork_fillet": "Kotlet wieprzowy", - "iot_special_pork_ribs": "\u017beberka wieprzowe", + "iot_special_pork_ribs": "Żeberka wieprzowe", "iot_special_prawns": "Krewetki", - "iot_special_quinoa": "Komosa ry\u017cowa (quinoa)", + "iot_special_quinoa": "Komosa ryżowa (quinoa)", "iot_special_ratatouille": "Ratatuja", - "iot_special_salmon_fillet": "Filet z \u0142ososia", - "iot_special_saute_potatoes": "Sma\u017cone ziemniaki", - "iot_special_scallops": "Ma\u0142\u017ce (przegrzebki)", + "iot_special_salmon_fillet": "Filet z łososia", + "iot_special_saute_potatoes": "Smażone ziemniaki", + "iot_special_scallops": "Małże (przegrzebki)", "iot_special_scrambled_eggs": "Jajecznica", "iot_special_spelt": "Orkisz", - "iot_special_veggy_noodles": "Makaron wegetaria\u0144ski", - "iot_special_white_fish_fillet": "Filet z bia\u0142ej ryby", + "iot_special_veggy_noodles": "Makaron wegetariański", + "iot_special_white_fish_fillet": "Filet z białej ryby", "iot_standard_boiling": "Gotowanie", - "iot_standard_frying": "Sma\u017cenie", - "iot_standard_keep_warm": "Podtrzymanie ciep\u0142a", + "iot_standard_frying": "Smażenie", + "iot_standard_keep_warm": "Podtrzymanie ciepła", "iot_standard_melting": "Roztapianie", "iot_standard_simmering": "Duszenie" }, @@ -306,10 +306,10 @@ "bread": "Chleb", "bread_steam": "Ciasteczka pieczone na parze", "convection_fan": "Termoobieg", - "convection_fan_turnspit": "Termoobieg + Fan + Ro\u017cen", + "convection_fan_turnspit": "Termoobieg + Fan + Rożen", "conventional": "Konwencjonalny", - "conventional_turnspit": "Statyczny + Ro\u017cen", - "defrost": "Rozmra\u017canie", + "conventional_turnspit": "Statyczny + Rożen", + "defrost": "Rozmrażanie", "descaling": "Odkamienianie", "fish": "Ryby", "fish_steam": "Ryba gotowana na parze", @@ -323,33 +323,32 @@ "leavening": "Zaczyn", "low_temp_cooking": "Pieczenie w niskiej temperaturze", "low_temp_cooking_fish": "Pieczenie w niskiej temperaturze - ryby", - "low_temp_cooking_fish_steam": "Gotowanie na parze w niskiej temperaturze \u2014 ryby", - "low_temp_cooking_meat": "Pieczenie w niskiej temperaturze - mi\u0119so", - "low_temp_cooking_meat_steam": "Gotowanie na parze w niskiej temperaturze \u2014 mi\u0119so", + "low_temp_cooking_fish_steam": "Gotowanie na parze w niskiej temperaturze — ryby", + "low_temp_cooking_meat": "Pieczenie w niskiej temperaturze - mięso", + "low_temp_cooking_meat_steam": "Gotowanie na parze w niskiej temperaturze — mięso", "low_temp_cooking_steam": "Gotowanie na parze w niskiej temperaturze", - "meat": "Mi\u0119so", - "meat_steam": "Mi\u0119so gotowane na parze", + "meat": "Mięso", + "meat_steam": "Mięso gotowane na parze", "multi_level": "Wielopoziomowo", "paella": "Paella", "pasta_and_bakery": "Makaron i Piekarnia", "pizza": "Pizza", "pyrolysis": "Pyroliza", "pyrolysis_plus": "Pyroliza +", - "red_meat": "Czerwone mi\u0119so", - "red_meat_steam": "Czerwone mi\u0119so gotowane na parze", + "red_meat": "Czerwone mięso", + "red_meat_steam": "Czerwone mięso gotowane na parze", "regenerate": "Regeneracja", "soft_plus": "Soft+", "super_grill": "Super Grill", "tailor_bake": "Tailor bake", "tailor_bake_cata": "Tailor bake", - "tailor_bake_desctiption": "Idealnie nadaje si\u0119 do tego, aby potrawy by\u0142y mi\u0119kkie w \u015brodku i chrupi\u0105ce na zewn\u0105trz.\r\r\r\r\r\r\r\nFunkcja ta zmniejsza ilo\u015b\u0107 wykorzystywanego t\u0142uszczu lub oleju, dla zdrowej diety.\r\r\r\r\r\r\r\nPo\u0142\u0105czenie grza\u0142ek z pulsacyjnym cyklem powietrza zapewnia r\u00f3wnomierny efekt pieczenia.", "tailor_bake_pyro": "Tailor bake", "vegetables": "Warzywa", "vegetables_cata": "Warzywa", "vegetables_pyro": "Warzywa", - "water_discharge": "Odp\u0142yw wody", - "white_meat": "Bia\u0142e mi\u0119so", - "white_meat_steam": "Bia\u0142e mi\u0119so gotowane na parze" + "water_discharge": "Odpływ wody", + "white_meat": "Białe mięso", + "white_meat_steam": "Białe mięso gotowane na parze" }, "name": "Program" }, @@ -359,7 +358,7 @@ "allergy_care": "Antiallergy", "all_in_one": "All in One", "antiallergy": "Antiallergy", - "anti_odours": "Od\u015bwie\u017cenie", + "anti_odours": "Odświeżenie", "auto_care": "Auto Care", "baby": "Dzieci", "bed_quilt": "Bed Quilt", @@ -371,8 +370,8 @@ "daily_perfect_59_min": "CODZIENNY PERFEKT 59'", "darks_and_coloured": "Darks & Coloured", "delicates": "Delikatne", - "duvet": "Ko\u0142dry", - "eco": "Bawe\u0142na ekologiczna", + "duvet": "Kołdry", + "eco": "Bawełna ekologiczna", "ecospeed_cottons": "Ecospeed Cottons", "ecospeed_delicates": "Szybki Eco do tkanin delikatnych", "ecospeed_mixed": "Ecospeed Mixed", @@ -381,24 +380,24 @@ "fresh_care": "Fresh Care", "genius": "Genius", "hqd_baby_care": "Baby Care", - "hqd_bath_towel": "R\u0119czniki", - "hqd_bed_sheets": "Prze\u015bcierad\u0142a", + "hqd_bath_towel": "Ręczniki", + "hqd_bed_sheets": "Prześcieradła", "hqd_bulky": "Elementy wielkogabarytowe", "hqd_casual": "Nieformalny", - "hqd_cold_wind_30": "Ch\u0142odna bryza 30 minut", - "hqd_cold_wind_timing": "Ch\u0142odny wietrzyk ", - "hqd_cotton": "Bawe\u0142na", - "hqd_curtain": "Zas\u0142ony", + "hqd_cold_wind_30": "Chłodna bryza 30 minut", + "hqd_cold_wind_timing": "Chłodny wietrzyk ", + "hqd_cotton": "Bawełna", + "hqd_curtain": "Zasłony", "hqd_delicate": "Delikatne", "hqd_diaper": "Pieluchy", - "hqd_duvet": "Ko\u0142dry", + "hqd_duvet": "Kołdry", "hqd_feather": "Kurtki puchowe", - "hqd_hot_wind_timing": "Gor\u0105ce powietrze", + "hqd_hot_wind_timing": "Gorące powietrze", "hqd_hygienic": "Higienizacja", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", "hqd_jacket": "Kurtki", - "hqd_jeans": "D\u017cins", + "hqd_jeans": "Dżins", "hqd_luxury": "Luxury", "hqd_mix": "Mieszane", "hqd_night_dry": "Suszenie nocne", @@ -406,66 +405,66 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Szybkie 20", "hqd_quick_30": "Szybkie 30", - "hqd_quick_dry": "Szybkoschn\u0105ce", - "hqd_quilt": "Ko\u0142dry", - "hqd_refresh": "Od\u015bwie\u017canie", + "hqd_quick_dry": "Szybkoschnące", + "hqd_quilt": "Kołdry", + "hqd_refresh": "Odświeżanie", "hqd_school_uniform": "Mundurek szkolny", "hqd_shirt": "Koszule", "hqd_shoes": "Buty", "hqd_silk": "Jedwab", - "hqd_sports": "Odzie\u017c sportowa", + "hqd_sports": "Odzież sportowa", "hqd_synthetics": "Syntetyki", "hqd_timer": "Czasowe", - "hqd_towel": "R\u0119czniki", + "hqd_towel": "Ręczniki", "hqd_underwear": "Bielizna", "hqd_warm_up": "Podgrzej", - "hqd_wool": "We\u0142na", - "hqd_working_suit": "Odzie\u017c robocza", + "hqd_wool": "Wełna", + "hqd_working_suit": "Odzież robocza", "hygiene": "Higiena", "iot_checkup": "Kontrola", "iot_dry_anti_mites": "Przeciw roztoczom", "iot_dry_baby": "Dzieci", "iot_dry_backpacks": "Plecaki", "iot_dry_bathrobe": "Szlafroki", - "iot_dry_bed_linen": "Po\u015bciel", + "iot_dry_bed_linen": "Pościel", "iot_dry_bed_quilt": "Bed Quilt", - "iot_dry_cotton": "Bawe\u0142na", + "iot_dry_cotton": "Bawełna", "iot_dry_cuddly_toys": "Zabawki pluszowe", - "iot_dry_curtains": "Zas\u0142ony", - "iot_dry_dehumidifier": "\u015arodek do usuwania wilgoci", + "iot_dry_curtains": "Zasłony", + "iot_dry_dehumidifier": "Środek do usuwania wilgoci", "iot_dry_delicates": "Bielizna", "iot_dry_delicate_tablecloths": "Delikatne obrusy", - "iot_dry_denim_jeans": "D\u017cinsy", + "iot_dry_denim_jeans": "Dżinsy", "iot_dry_down_jacket": "Jacket", - "iot_dry_duvet": "Ko\u0142dry", + "iot_dry_duvet": "Kołdry", "iot_dry_easy_iron_cotton": "Super Easy Iron", - "iot_dry_easy_iron_synthetics": "Super \u0142atwe prasowanie tkanin syntetycznych", + "iot_dry_easy_iron_synthetics": "Super łatwe prasowanie tkanin syntetycznych", "iot_dry_gym_fit": "Gimnastyczne - Fitness", "iot_dry_lingerie": "Bielizna", "iot_dry_mixed": "Mieszane", "iot_dry_playsuits": "Pajacyki", "iot_dry_rapid_30": "Rapid 30", - "iot_dry_rapid_59": "Szybki 59\u2019.", + "iot_dry_rapid_59": "Szybki 59’.", "iot_dry_refresh": "Refresh", "iot_dry_regenerates_waterproof": "Regeneracja wodoodpornych", "iot_dry_relax_creases": "Relax Creases", "iot_dry_shirts": "Koszule", "iot_dry_small_load": "Small Load", - "iot_dry_swimsuits_and_bikinis": "Stroje k\u0105pielowe", + "iot_dry_swimsuits_and_bikinis": "Stroje kąpielowe", "iot_dry_synthetics": "Syntetyczne", - "iot_dry_synthetic_dry": "Suszenie materia\u0142\u00f3w syntetycznych", + "iot_dry_synthetic_dry": "Suszenie materiałów syntetycznych", "iot_dry_tablecloths": "Obrusy", - "iot_dry_technical_fabrics": "Materia\u0142y techniczne", - "iot_dry_warm_embrace": "Ciep\u0142e obj\u0119cie", + "iot_dry_technical_fabrics": "Materiały techniczne", + "iot_dry_warm_embrace": "Ciepłe objęcie", "iot_dry_wool": "Woolmark", - "jeans": "D\u017cinsy", + "jeans": "Dżinsy", "mix_and_dry": "Mix&Dry", - "pets": "Zwierz\u0119ta domowe", + "pets": "Zwierzęta domowe", "pre_iron": "Pre-Iron", "rapid_30": "Rapid 30", "rapid_45": "Rapid 45 min", "rapid_59": "Perfekcyjne szybkie w 59 min", - "refresh": "Od\u015bwie\u017canie", + "refresh": "Odświeżanie", "relax_creases": "Relax Creases", "saving_30_min": "ECO 30'", "shirts": "Koszule", @@ -473,8 +472,8 @@ "small_load": "Small Load", "soft_care": "Soft Care", "sport_plus": "Sportowe", - "super_easy_iron_misti": "Super \u0142atwe prasowanie tkanin mieszanych", - "super_easy_iron_xxl": "Super \u0142atwe prasowanie XXL", + "super_easy_iron_misti": "Super łatwe prasowanie tkanin mieszanych", + "super_easy_iron_xxl": "Super łatwe prasowanie XXL", "super_fast_cottons": "Super Fast Cottons", "super_fast_delicates": "Super Fast Delicates", "synthetics": "Syntetyczne", @@ -482,8 +481,8 @@ "trainers": "Buty sportowe", "ultra_care": "Ultra Care", "waterproof_revitalize": "Waterproof Revitalize", - "whites": "Bia\u0142e", - "wool": "Suszenie we\u0142ny", + "whites": "Białe", + "wool": "Suszenie wełny", "woolmark": "Woolmark", "xxl_load": "XXL Load", "zoom_59": "Zoom 59" @@ -492,123 +491,123 @@ }, "programs_wm": { "state": { - "20_degrees_coloured_cottons": "20\u00b0 Kolorowe i Bawe\u0142na", - "20_degrees_new_energy_label": "20\u00b0C", + "20_degrees_coloured_cottons": "20° Kolorowe i Bawełna", + "20_degrees_new_energy_label": "20°C", "active_steam": "Para", "active_wash": "Aktywne pranie", "active_wash_steam": "Aktywne pranie", - "allergy_care": "Piel\u0119gnacja antyalergiczna", + "allergy_care": "Pielęgnacja antyalergiczna", "allergy_care_pro": "Allergy Care Pro", - "all_in_one_49": "Wszystko w jednym cyklu 49\u2019", - "all_in_one_59": "Wszystko w jednym cyklu 59\u2019", + "all_in_one_49": "Wszystko w jednym cyklu 49’", + "all_in_one_59": "Wszystko w jednym cyklu 59’", "all_in_one_59_steam": "Aktywne pranie + Para", - "autocare": "Piel\u0119gnacja w\u0142asna", - "autoclean": "Czyszczenie b\u0119bna", - "baby_60": "Wszystkie dziecinne 60\u00b0C", + "autocare": "Pielęgnacja własna", + "autoclean": "Czyszczenie bębna", + "baby_60": "Wszystkie dziecinne 60°C", "care_14": "Rapid Care 14'", "care_30": "Rapid Care 30'", "care_44": "Rapid Care 44'", "checkup": "Kontrola", "colour_59": "Kolorowe 59'", "colour_59_steam": "Kolorowe 59' + Para", - "cottons": "Bawe\u0142na", - "cottons_prewash": "Bawe\u0142na + pranie wst\u0119pne", - "cottons_steam": "Bawe\u0142na + Para", + "cottons": "Bawełna", + "cottons_prewash": "Bawełna + pranie wstępne", + "cottons_steam": "Bawełna + Para", "cotton_care_59": "Cotton Care 59 Min", - "delicate_59": "Delikatne 59\u2019", + "delicate_59": "Delikatne 59’", "delicate_silk": "Delikatny jedwab", "delicate_silk_steam": "Delikatny jedwab + Para", - "delicati_59": "Delikatne 59\u2019", - "delicati_59_steam": "Delikatne 59\u2019", - "drain_spin": "Spu\u015b\u0107 wod\u0119 +i odwiruj", - "easy_iron": "\u0141atwe prasowanie", + "delicati_59": "Delikatne 59’", + "delicati_59_steam": "Delikatne 59’", + "drain_spin": "Spuść wodę +i odwiruj", + "easy_iron": "Łatwe prasowanie", "eco_40_60_new_energy_label": "Eco 40-60", "extra_care": "Extra Care", "fitness": "Fitness Care", "fitness_care": "Fitness Care", "fresh_care": "Fresh Care", "fresh_care_steam": "Fresh Care + Para", - "handwash_wool": "Pranie r\u0119czne i we\u0142na", - "high_dry": "Suszenie bawe\u0142ny", - "hqd_20_degrees": "Bawe\u0142na 20\u2103", - "hqd_allergy": "Piel\u0119gnacja antyalergiczna", - "hqd_autoclean": "Czyszczenie b\u0119bna", + "handwash_wool": "Pranie ręczne i wełna", + "high_dry": "Suszenie bawełny", + "hqd_20_degrees": "Bawełna 20℃", + "hqd_allergy": "Pielęgnacja antyalergiczna", + "hqd_autoclean": "Czyszczenie bębna", "hqd_babycare": "Baby Care", "hqd_checkup": "Kontrola", - "hqd_cottons": "Bawe\u0142na", + "hqd_cottons": "Bawełna", "hqd_delicate": "Delikatne", "hqd_delicate_cradle": "Delikatne", - "hqd_dry": "Suszenie bawe\u0142ny", - "hqd_dry_synthetics": "Suszenie materia\u0142\u00f3w mieszanych", - "hqd_duvet": "Ko\u0142dry", + "hqd_dry": "Suszenie bawełny", + "hqd_dry_synthetics": "Suszenie materiałów mieszanych", + "hqd_duvet": "Kołdry", "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_handwash_wool": "We\u0142na", + "hqd_handwash_wool": "Wełna", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Mieszane", "hqd_quick_15": "Szybki 15'", "hqd_quick_wash_57": "Szybkie pranie 57 min", "hqd_rapid_wash_and_dry": "Pranie + suszenie", "hqd_refresh": "Refresh", - "hqd_rinse": "P\u0142ukanie", + "hqd_rinse": "Płukanie", "hqd_shirts": "Koszule", "hqd_smart": "Smart A.I.", "hqd_spin": "Wirowanie", - "hqd_sport": "Odzie\u017c sportowa", - "hqd_super_fast": "Szybki 39\u2019", + "hqd_sport": "Odzież sportowa", + "hqd_super_fast": "Szybki 39’", "hqd_synthetic_and_coloured": "Syntetyki", "hygiene_59": "Higiena Plus 59'", - "hygiene_60": "Higiena 60 \u00b0", + "hygiene_60": "Higiena 60 °", "hygiene_plus_59": "Higiena Plus 59'", "hygiene_plus_59_min": "Higiena Plus 59'", "hygiene_pro_49_min": "Hygiene Pro 49 min", "hygiene_pro_steam": "Hygiene Pro + Para", - "intensive_40": "Intensywne 40\u00b0C", - "intensive_40_steam": "Intensywny 40\u00b0C + Para", + "intensive_40": "Intensywne 40°C", + "intensive_40_steam": "Intensywny 40°C + Para", "iot_active_steam": "Para", "iot_active_wash_steam": "Aktywne pranie", "iot_allergy_care_pro": "Allergy Care Pro", "iot_all_in_one_59_steam": "Aktywne pranie + Para", "iot_checkup": "Kontrola", "iot_colour_59_steam": "Kolorowe 59' + Para", - "iot_cottons_steam": "Bawe\u0142na + Para", + "iot_cottons_steam": "Bawełna + Para", "iot_delicate_silk_steam": "Delikatny jedwab + Para", - "iot_delicati_59_steam": "Delikatne 59\u2019", - "iot_dry_air_refresh": "Od\u015bwie\u017cacz powietrza", + "iot_delicati_59_steam": "Delikatne 59’", + "iot_dry_air_refresh": "Odświeżacz powietrza", "iot_dry_anti_mites": "Przeciw roztoczom", - "iot_dry_baby": "Dzieci\u0119ce", + "iot_dry_baby": "Dziecięce", "iot_dry_backpacks": "Plecaki", "iot_dry_bathrobe": "Szlafroki i tkaniny porowate", - "iot_dry_bed_linen": "Po\u015bciele", - "iot_dry_cotton_dry": "Suszenie bawe\u0142ny", + "iot_dry_bed_linen": "Pościele", + "iot_dry_cotton_dry": "Suszenie bawełny", "iot_dry_cuddly_toys": "Pluszaki", - "iot_dry_curtains": "Zas\u0142ony", - "iot_dry_dehumidifier": "\u015arodek do usuwania wilgoci", + "iot_dry_curtains": "Zasłony", + "iot_dry_dehumidifier": "Środek do usuwania wilgoci", "iot_dry_delicates_antiallergy": "Delikatne - przeciwalergiczne", "iot_dry_delicate_tablecloths": "Delikatne obrusy", - "iot_dry_denim_jeans": "D\u017cinsy", - "iot_dry_easy_iron_cotton": "\u0141atwe prasowanie - We\u0142na", - "iot_dry_easy_iron_synthetics": "\u0141atwe prasowanie - Syntetyki", - "iot_dry_gym_fit": "Ubrania na si\u0142owni\u0119", + "iot_dry_denim_jeans": "Dżinsy", + "iot_dry_easy_iron_cotton": "Łatwe prasowanie - Wełna", + "iot_dry_easy_iron_synthetics": "Łatwe prasowanie - Syntetyki", + "iot_dry_gym_fit": "Ubrania na siłownię", "iot_dry_lingerie": "Bielizna", - "iot_dry_mixed_dry": "Suszenie materia\u0142\u00f3w mieszanych", + "iot_dry_mixed_dry": "Suszenie materiałów mieszanych", "iot_dry_rapid_60_min_delicates": "Szybki 60 - Delikatne", "iot_dry_shirts": "Koszule", - "iot_dry_swimsuits_and_bikinis": "Stroje k\u0105pielowe", - "iot_dry_synthetics": "Suszenie materia\u0142\u00f3w syntetycznych", - "iot_dry_synthetic_dry": "Suszenie materia\u0142\u00f3w syntetycznych", + "iot_dry_swimsuits_and_bikinis": "Stroje kąpielowe", + "iot_dry_synthetics": "Suszenie materiałów syntetycznych", + "iot_dry_synthetic_dry": "Suszenie materiałów syntetycznych", "iot_dry_tablecloths": "Obrusy", "iot_dry_technical_fabrics": "Tkaniny techniczne", "iot_dry_warm_embrace": "Delikatne suszenie", - "iot_dry_wool_dry": "Suszenie we\u0142ny", - "iot_easy_iron": "\u0141atwe prasowanie", + "iot_dry_wool_dry": "Suszenie wełny", + "iot_easy_iron": "Łatwe prasowanie", "iot_fresh_care_steam": "Fresh Care + Para", "iot_hygiene_pro_steam": "Hygiene Pro + Para", - "iot_intensive_40_steam": "Intensywny 40\u00b0C + Para", + "iot_intensive_40_steam": "Intensywny 40°C + Para", "iot_mixed_steam": "Mieszane + Para", "iot_mix_and_colour_59_steam": "Mieszane i kolorowe 59' + Para", "iot_perfect_cotton_59_steam": "Idealna Bawelna 59'", "iot_rapid_a_class_60_steam": "Szybki Klasa A 60 + Para", - "iot_resistant_cotton_steam": "Bawe\u0142na + Para", + "iot_resistant_cotton_steam": "Bawełna + Para", "iot_shirts_steam": "Koszule + Para", "iot_single_item_steam": "Pojedynczy przedmiot + Para", "iot_smart_wash": "Inteligentne pranie", @@ -618,20 +617,20 @@ "iot_synthetic_and_coloured_steam": "Syntetyki i Kolorowe + Para", "iot_wash_and_dry": "Pranie + suszenie", "iot_wash_anti_mites": "Przeciw roztoczom", - "iot_wash_anti_odor": "Usuwanie zapach\u00f3w", + "iot_wash_anti_odor": "Usuwanie zapachów", "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", - "iot_wash_baby_sanitizer": "\u015arodek dezynfekuj\u0105cy", - "iot_wash_baby_sanitizer_steam": "Odka\u017cacz dla dzieci + Para", + "iot_wash_baby_sanitizer": "Środek dezynfekujący", + "iot_wash_baby_sanitizer_steam": "Odkażacz dla dzieci + Para", "iot_wash_backpacks": "Plecaki", "iot_wash_backpacks_zelig": "Plecaki", - "iot_wash_bathrobe": "Szlafroki i r\u0119czniki", + "iot_wash_bathrobe": "Szlafroki i ręczniki", "iot_wash_bathrobe_steam": "Szlafroki + Para", - "iot_wash_bed_linen": "Po\u015bciele", - "iot_wash_bed_linen_steam": "Po\u015bciele + Para", - "iot_wash_bed_linen_zelig": "Po\u015bciele", - "iot_wash_big_single_load": "Du\u017cy pojedynczy \u0142adunek", + "iot_wash_bed_linen": "Pościele", + "iot_wash_bed_linen_steam": "Pościele + Para", + "iot_wash_bed_linen_zelig": "Pościele", + "iot_wash_big_single_load": "Duży pojedynczy ładunek", "iot_wash_bleaching": "Wybielanie", "iot_wash_blood_stains": "Plamy krwi", "iot_wash_cashmere": "Kaszmir", @@ -641,20 +640,20 @@ "iot_wash_colored_anti_stain": "Usuwanie plam z tkanin kolorowych", "iot_wash_colored_delicate": "Kolorowe, delikatne", "iot_wash_coloured": "Tkaniny kolorowe", - "iot_wash_coloured_bed_linen": "Kolorowa po\u015bciel", - "iot_wash_coloured_bed_linen_steam": "Kolorowa po\u015bciel + Para", - "iot_wash_coloured_curtains": "Kolorowe zas\u0142ony", + "iot_wash_coloured_bed_linen": "Kolorowa pościel", + "iot_wash_coloured_bed_linen_steam": "Kolorowa pościel + Para", + "iot_wash_coloured_curtains": "Kolorowe zasłony", "iot_wash_coloured_shirts": "Kolorowe koszule", "iot_wash_coloured_shirts_steam": "Kolorowe koszule + Para", "iot_wash_coloured_steam": "Tkaniny kolorowe + Para", "iot_wash_coloured_tableclothes": "Kolorowe obrusy", "iot_wash_coloured_tableclothes_steam": "Kolorowe obrusy + Para", - "iot_wash_cotton": "Bawe\u0142na", - "iot_wash_cotton_steam": "Bawe\u0142na + Para", + "iot_wash_cotton": "Bawełna", + "iot_wash_cotton_steam": "Bawełna + Para", "iot_wash_cuddly_toys": "Pluszaki", - "iot_wash_curtains": "Zas\u0142ony", - "iot_wash_curtains_steam": "Zas\u0142ony+Para", - "iot_wash_curtains_zelig": "Zas\u0142ony", + "iot_wash_curtains": "Zasłony", + "iot_wash_curtains_steam": "Zasłony+Para", + "iot_wash_curtains_zelig": "Zasłony", "iot_wash_dark": "Ciemne ubrania", "iot_wash_darks_and_coloured_44": "Ciemne i kolorowe 44'", "iot_wash_darks_and_coloured_59": "Ciemne i kolorowe 59'", @@ -673,20 +672,20 @@ "iot_wash_delicate_steam": "Delikatne + Para", "iot_wash_delicate_tablecloths": "Delikatne obrusy", "iot_wash_delicate_tablecloths_steam": "Delikatne obrusy + Para", - "iot_wash_delicate_whites": "Delikatne, bia\u0142e", - "iot_wash_denim_jeans": "D\u017cinsy", + "iot_wash_delicate_whites": "Delikatne, białe", + "iot_wash_denim_jeans": "Dżinsy", "iot_wash_diving_suits": "Kombinezony do nurkowania", "iot_wash_diving_suits_zelig": "Kombinezony do nurkowania", "iot_wash_down_jackets": "Kurtki puchowe", "iot_wash_down_jackets_zelig": "Kurtki puchowe", - "iot_wash_duvet": "Ko\u0142dry", - "iot_wash_fruit_stains": "Plamy z owoc\u00f3w", - "iot_wash_gym_fit": "Ubrania na si\u0142owni\u0119", - "iot_wash_handwash": "Pranie r\u0119czne", - "iot_wash_handwash_colored": "Pranie r\u0119czne, kolorowe", - "iot_wash_handwash_dark": "Pranie r\u0119czne, ciemne", + "iot_wash_duvet": "Kołdry", + "iot_wash_fruit_stains": "Plamy z owoców", + "iot_wash_gym_fit": "Ubrania na siłownię", + "iot_wash_handwash": "Pranie ręczne", + "iot_wash_handwash_colored": "Pranie ręczne, kolorowe", + "iot_wash_handwash_dark": "Pranie ręczne, ciemne", "iot_wash_lingerie": "Bielizna", - "iot_wash_masks_refresh": "Od\u015bwie\u017canie masek", + "iot_wash_masks_refresh": "Odświeżanie masek", "iot_wash_masks_sanification": "Dezynfekcja masek", "iot_wash_masks_sanification_steam": "Dezynfekcja masek + Para", "iot_wash_mats": "Dywany", @@ -697,36 +696,36 @@ "iot_wash_mix_and_coloured_59": "Mieszane i kolorowe 59'", "iot_wash_mix_and_coloured_xl": "Mieszane i kolorowe XL", "iot_wash_new_clothes": "Nowe ubrania", - "iot_wash_perfect_white": "Idealnie bia\u0142e tkaniny", - "iot_wash_perfect_white_steam": "Idealnie bia\u0142e tkaniny + Para", - "iot_wash_pets": "Akcesoria dla zwierz\u0105t", - "iot_wash_pets_hair_removal": "Usuwanie sier\u015bci zwierz\u0105t", - "iot_wash_pets_odours_stains_removal": "Usuwanie zapach\u00f3w i plam po zwierz\u0119tach domowych", - "iot_wash_pets_steam": "Akcesoria dla zwierz\u0105t", + "iot_wash_perfect_white": "Idealnie białe tkaniny", + "iot_wash_perfect_white_steam": "Idealnie białe tkaniny + Para", + "iot_wash_pets": "Akcesoria dla zwierząt", + "iot_wash_pets_hair_removal": "Usuwanie sierści zwierząt", + "iot_wash_pets_odours_stains_removal": "Usuwanie zapachów i plam po zwierzętach domowych", + "iot_wash_pets_steam": "Akcesoria dla zwierząt", "iot_wash_playsuits": "Kombinezony", "iot_wash_playsuits_steam": "Kombinezony + Para", - "iot_wash_quick_drum_cleaner": "\u015arodek do szybkiego czyszczenia b\u0119bna", - "iot_wash_rapid_14": "Szybki 14\u2019", - "iot_wash_rapid_30": "Szybki 30\u2019", - "iot_wash_rapid_44": "Szybki 44\u2019", - "iot_wash_rapid_59": "Szybki 59\u2019", + "iot_wash_quick_drum_cleaner": "Środek do szybkiego czyszczenia bębna", + "iot_wash_rapid_14": "Szybki 14’", + "iot_wash_rapid_30": "Szybki 30’", + "iot_wash_rapid_44": "Szybki 44’", + "iot_wash_rapid_59": "Szybki 59’", "iot_wash_rapid_59_steam": "Szybki 59' + Para", - "iot_wash_refresh_14_min": "Od\u015bwie\u017canie 14\u2019", - "iot_wash_resistant_colored": "Wytrzyma\u0142e, kolorowe", - "iot_wash_resistant_dark": "Wytrzyma\u0142e ciemne", - "iot_wash_resistant_whites": "Wytrzyma\u0142e bia\u0142e", - "iot_wash_rinse": "P\u0142ukanie", + "iot_wash_refresh_14_min": "Odświeżanie 14’", + "iot_wash_resistant_colored": "Wytrzymałe, kolorowe", + "iot_wash_resistant_dark": "Wytrzymałe ciemne", + "iot_wash_resistant_whites": "Wytrzymałe białe", + "iot_wash_rinse": "Płukanie", "iot_wash_shirts": "Koszule", "iot_wash_shirts_steam": "Koszule + Para", "iot_wash_silk": "Jedwab", "iot_wash_ski_suit": "Kombinezony narciarskie", "iot_wash_ski_suit_zelig": "Kombinezony narciarskie", "iot_wash_spin": "Wirowanie", - "iot_wash_sport": "Odzie\u017c sportowa", - "iot_wash_sport_anti_odor": "Odzie\u017c sportowa zapobiegaj\u0105ca powstawaniu nieprzyjemnych zapach\u00f3w", - "iot_wash_sport_anti_odor_zelig": "Odzie\u017c sportowa zapobiegaj\u0105ca powstawaniu nieprzyjemnych zapach\u00f3w", + "iot_wash_sport": "Odzież sportowa", + "iot_wash_sport_anti_odor": "Odzież sportowa zapobiegająca powstawaniu nieprzyjemnych zapachów", + "iot_wash_sport_anti_odor_zelig": "Odzież sportowa zapobiegająca powstawaniu nieprzyjemnych zapachów", "iot_wash_stains_remover": "Wywabiacz", - "iot_wash_swimsuits_and_bikinis": "Stroje k\u0105pielowe", + "iot_wash_swimsuits_and_bikinis": "Stroje kąpielowe", "iot_wash_synthetic": "Syntetyki", "iot_wash_synthetic_steam": "Syntetyki + Para", "iot_wash_tablecloths": "Obrusy", @@ -736,23 +735,23 @@ "iot_wash_technical_jackets": "Kurtki techniczne", "iot_wash_technical_jackets_zelig": "Kurtki techniczne", "iot_wash_trainers": "Buty sportowe", - "iot_wash_whites": "Bia\u0142e", - "iot_wash_whites_44": "Bia\u0142e 44\u2019", - "iot_wash_whites_59": "Bia\u0142e 59\u2019", - "iot_wash_whites_xl": "Bia\u0142e XL", + "iot_wash_whites": "Białe", + "iot_wash_whites_44": "Białe 44’", + "iot_wash_whites_59": "Białe 59’", + "iot_wash_whites_xl": "Białe XL", "iot_wash_wine_stains": "Plamy z wina", - "iot_wash_wool": "We\u0142na", - "jeans": "D\u017cins", - "jeans_60": "D\u017cinsy", - "low_dry": "Suszenie materia\u0142\u00f3w mieszanych", + "iot_wash_wool": "Wełna", + "jeans": "Dżins", + "jeans_60": "Dżinsy", + "low_dry": "Suszenie materiałów mieszanych", "mixed": "Mieszane", "mixed_and_colored_59": "Mieszane i kolorowe 59 '", "mixed_steam": "Mieszane + Para", "mix_and_colour_59": "Mieszane i kolorowe 59'", "mix_and_colour_59_steam": "Mieszane i kolorowe 59' + Para", - "night_and_day": "Noc i Dzie\u0144", + "night_and_day": "Noc i Dzień", "night_wash": "Cykl nocny", - "perfect_59": "Perfekcyjne 59\u2019", + "perfect_59": "Perfekcyjne 59’", "perfect_cotton_59": "Idealna Bawelna 59'", "perfect_cotton_59_steam": "Idealna Bawelna 59'", "perfect_whites_59": "Idealna biel 59'", @@ -761,10 +760,10 @@ "rapid_44_min": "Szybki 44'", "rapid_a_class_60": "Szybki Klasa A 60", "rapid_a_class_60_steam": "Szybki Klasa A 60 + Para", - "rapid_wash_and_dry_59_min": "Pranie i suszenie 59\u2019", - "resistant_cotton": "Bawe\u0142na", - "resistant_cotton_steam": "Bawe\u0142na + Para", - "rinse": "P\u0142ukanie", + "rapid_wash_and_dry_59_min": "Pranie i suszenie 59’", + "resistant_cotton": "Bawełna", + "resistant_cotton_steam": "Bawełna + Para", + "rinse": "Płukanie", "shirts_steam": "Koszule + Para", "silent_night": "Cykl nocny", "single_item": "Pojedynczy przedmiot", @@ -776,13 +775,13 @@ "special_39": "Specjalny 39'", "special_39_full_load": "Specjalny 39'", "special_39_full_load_steam": "Specjalny 39' + Para", - "special_49": "Specjalne 49\u2019", - "sport_39": "Sport 39\u2019", + "special_49": "Specjalne 49’", + "sport_39": "Sport 39’", "sport_plus_29": "Sportowy Plus 29\"", "sport_plus_39": "Sportowy Plus 39'", - "steam_39": "Para 39\u2019", + "steam_39": "Para 39’", "steam_care_pro": "Steam Care Pro", - "steam_care_pro_cotton": "Steam Care Pro - Bawe\u0142na", + "steam_care_pro_cotton": "Steam Care Pro - Bawełna", "steam_care_pro_delicates": "Steam Care Pro - Delikatne", "steam_care_pro_synthetic": "Steam Care Pro - Syntetyki", "steam_hygiene_plus": "Higiena Plus Para ", @@ -792,11 +791,11 @@ "tailored_resistant_cotton": "Tailored Resistant Cotton", "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", "total_care": "Total Care", - "tumbling": "B\u0119ben", - "wool": "We\u0142na", - "wool_and_delicates_49": "We\u0142na/Delikatne 49'", - "wool_dry": "Suszenie we\u0142ny", - "wool_soft_care": "We\u0142na & Soft Care" + "tumbling": "Bęben", + "wool": "Wełna", + "wool_and_delicates_49": "Wełna/Delikatne 49'", + "wool_dry": "Suszenie wełny", + "wool_soft_care": "Wełna & Soft Care" }, "name": "Program" }, @@ -809,7 +808,7 @@ "4": "Ekstra suchy", "12": "Prasowanie", "13": "Gotowe do garderoby", - "14": "Gotowe do w\u0142o\u017cenia", + "14": "Gotowe do włożenia", "15": "Ekstra suchy" }, "name": "Poziom suszenia" @@ -838,22 +837,22 @@ "name": "Ekstra suchy" }, "half_load": { - "name": "Po\u0142owa wsadu" + "name": "Połowa wsadu" }, "open_door": { - "name": "Otw\u00f3rz drzwi" + "name": "Otwórz drzwi" }, "three_in_one": { "name": "3 w 1" }, "preheat": { - "name": "Wst\u0119pne nagrzewanie" + "name": "Wstępne nagrzewanie" }, "dish_washer": { "name": "Zmywarka" }, "tumble_dryer": { - "name": "Suszarka b\u0119bnowa" + "name": "Suszarka bębnowa" }, "washing_machine": { "name": "Pralka" @@ -865,7 +864,7 @@ "name": "Piekarnik" }, "prewash": { - "name": "Mycie wst\u0119pne" + "name": "Mycie wstępne" }, "pause": { "name": "Pauza" @@ -874,21 +873,21 @@ "name": "Keep Fresh" }, "delay_time": { - "name": "Op\u00f3\u017aniony Start" + "name": "Opóźniony Start" } }, "binary_sensor": { "door_lock": { - "name": "Drzwi s\u0105 zablokowane" + "name": "Drzwi są zablokowane" }, "extra_rinse_1": { - "name": "+1 p\u0142ukanie" + "name": "+1 płukanie" }, "extra_rinse_2": { - "name": "+2 p\u0142ukania" + "name": "+2 płukania" }, "extra_rinse_3": { - "name": "+3 p\u0142ukania" + "name": "+3 płukania" }, "good_night": { "name": "Dobranoc" @@ -918,7 +917,7 @@ "name": "Program" }, "still_hot": { - "name": "Nadal gor\u0105ce" + "name": "Nadal gorące" }, "pan_status": { "name": "Patelnia" @@ -927,7 +926,7 @@ "name": "Zdalne sterowanie" }, "rinse_aid": { - "name": "Poziom nab\u0142yszczacza" + "name": "Poziom nabłyszczacza" }, "salt_level": { "name": "Poziom soli" @@ -936,30 +935,30 @@ "name": "Drzwi otwarte" }, "connection": { - "name": "Pod\u0142\u0105czenie urz\u0105dzenia" + "name": "Podłączenie urządzenia" }, "child_lock": { "name": "Blokada rodzicielska" }, "on": { - "name": "W\u0142." + "name": "Wł." }, "prewash": { - "name": "Mycie wst\u0119pne" + "name": "Mycie wstępne" } }, "number": { "power_management": { - "name": "Zarz\u0105dzanie zasilaniem" + "name": "Zarządzanie zasilaniem" }, "temperature": { "name": "Temperatura" }, "delay_time": { - "name": "Op\u00f3\u017aniony Start" + "name": "Opóźniony Start" }, "water_hard": { - "name": "Twardo\u015b\u0107 wody" + "name": "Twardość wody" }, "program_duration": { "name": "Czas trwania programu" @@ -968,7 +967,7 @@ "name": "Temperatura docelowa" }, "rinse_iterations": { - "name": "Ilo\u015b\u0107 p\u0142uka\u0144" + "name": "Ilość płukań" }, "wash_time": { "name": "Czas prania" @@ -979,7 +978,7 @@ }, "button": { "induction_hob": { - "name": "P\u0142yta indukcyjna" + "name": "Płyta indukcyjna" } } } diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index 2475271..b23c642 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -60,7 +60,7 @@ "program_phases_dw": { "state": { "0": "Pronto", - "1": "Pr\u00e9-lavagem", + "1": "Pré-lavagem", "2": "Lavar", "3": "Lavagem", "4": "Secagem", @@ -81,13 +81,13 @@ "14": "Pronto a usar", "15": "Extra seco" }, - "name": "N\u00edvel de secagem" + "name": "Nível de secagem" }, "anti_crease": { "name": "Anti-vincos" }, "power": { - "name": "N\u00edvel de pot\u00eancia" + "name": "Nível de potência" }, "remaining_time": { "name": "Tempo restante" @@ -96,13 +96,13 @@ "name": "Temperatura" }, "water_efficiency": { - "name": "Efici\u00eancia da \u00e1gua" + "name": "Eficiência da água" }, "water_saving": { - "name": "Poupan\u00e7a de \u00e1gua" + "name": "Poupança de água" }, "duration": { - "name": "Dura\u00e7\u00e3o" + "name": "Duração" }, "target_temperature": { "name": "Temperatura alvo" @@ -111,13 +111,13 @@ "name": "Centrifugar" }, "steam_leve": { - "name": "N\u00edvel de vapor" + "name": "Nível de vapor" }, "dirt_level": { - "name": "N\u00edvel de sujidade" + "name": "Nível de sujidade" }, "delay_time": { - "name": "In\u00edcio adiado" + "name": "Início adiado" }, "dry_time": { "name": "Tempo de secagem" @@ -126,13 +126,13 @@ "name": "Capacidade de carga" }, "energy_label": { - "name": "Efici\u00eancia energ\u00e9tica" + "name": "Eficiência energética" }, "det_dust": { - "name": "P\u00f3" + "name": "Pó" }, "det_liquid": { - "name": "L\u00edquido" + "name": "Líquido" }, "errors": { "name": "Erro" @@ -147,98 +147,98 @@ "name": "Consumo de energia Total" }, "water_total": { - "name": "Efici\u00eancia da \u00e1gua Total" + "name": "Eficiência da água Total" }, "energy_current": { "name": "Consumo de energia Data" }, "water_current": { - "name": "Efici\u00eancia da \u00e1gua Data" + "name": "Eficiência da água Data" } }, "select": { "programs_dw": { "state": { - "59_min": "R\u00e1pido 59'", + "59_min": "Rápido 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", "auto_plus": "AutoPlus", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Auto Universal 50 - 60\u00b0C", - "auto_universal_plus": "Auto Universal Plus 65 - 75\u00b0C", - "auto_universal_plus_soil": "Auto Universal Plus 65 - 75\u00b0C", - "auto_universal_soil": "Auto Universal 50 - 60\u00b0C", + "auto_universal": "Auto Universal 50 - 60°C", + "auto_universal_plus": "Auto Universal Plus 65 - 75°C", + "auto_universal_plus_soil": "Auto Universal Plus 65 - 75°C", + "auto_universal_soil": "Auto Universal 50 - 60°C", "auto_wash": "Auto Wash", "auto_wash_soil": "Auto Wash", - "classe_a_59": "Classe A 59' 65\u00b0C", - "delicate": "Delicados 45\u00b0C", - "dishwasher_care": "Ciclo de limpeza de calc\u00e1rio", + "classe_a_59": "Classe A 59' 65°C", + "delicate": "Delicados 45°C", + "dishwasher_care": "Ciclo de limpeza de calcário", "eco": "Eco", - "eco_asynch": "Eco 45\u00b0C", - "eco_bldc": "Eco 45\u00b0C", - "eco_synch": "Eco 45\u00b0C", + "eco_asynch": "Eco 45°C", + "eco_bldc": "Eco 45°C", + "eco_synch": "Eco 45°C", "gentle_wash": "Gentle wash", "glass": "Vidro", - "glassware": "Vidros 45 \u00b0C", + "glassware": "Vidros 45 °C", "glass_care": "Glass Care", "hygiene": "Higiene", - "hygiene_plus": "Higiene+ 75 \u00b0C", + "hygiene_plus": "Higiene+ 75 °C", "intensive": "Intensivo ", - "intensive_rapid": "R\u00e1pido intensivo", + "intensive_rapid": "Rápido intensivo", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Auto Universal 50 - 60\u00b0C", + "iot_auto_universal_soil": "Auto Universal 50 - 60°C", "iot_auto_wash_soil": "Auto Wash", - "iot_baby_care": "Roupa de beb\u00e9", - "iot_breakfast": "Pequeno-almo\u00e7o", + "iot_baby_care": "Roupa de bebé", + "iot_breakfast": "Pequeno-almoço", "iot_checkup": "Check-Up", "iot_china_crystals": "Porcelana chinesa", - "iot_classe_a_59": "R\u00e1pido 59'", + "iot_classe_a_59": "Rápido 59'", "iot_cocktail_glasses": "Copos para Cocktail", "iot_cocktail_glasses_soil": "Copos para Cocktail", - "iot_daily_care": "Roupa Di\u00e1ria", - "iot_daily_care_soil": "Roupa Di\u00e1ria", - "iot_delicate": "Delicados 45\u00b0C", + "iot_daily_care": "Roupa Diária", + "iot_daily_care_soil": "Roupa Diária", + "iot_delicate": "Delicados 45°C", "iot_dinner_for_two": "Jantar para 2", "iot_dinner_for_two_soil": "Jantar para 2", "iot_dreft_quick_cycle": "Dreft Quick", - "iot_eco_asynch": "Eco 45\u00b0C", - "iot_eco_bldc": "Eco 45\u00b0C", - "iot_eco_synch": "Eco 45\u00b0C", + "iot_eco_asynch": "Eco 45°C", + "iot_eco_bldc": "Eco 45°C", + "iot_eco_synch": "Eco 45°C", "iot_extra_hygiene": "Higiene Extra", "iot_fairy_quick_cycle": "Fairy Quick", "iot_happy_hour": "Happy Hour", "iot_jar_quick_cycle": "Jar Quick", - "iot_party": "Loi\u00e7a de festas", - "iot_party_soil": "Loi\u00e7a de festas", + "iot_party": "Loiça de festas", + "iot_party_soil": "Loiça de festas", "iot_pizza_menu": "Menu de Pizza", "iot_pizza_menu_soil": "Menu de Pizza", - "iot_plastic_tupperware": "Pl\u00e1sticos e Tupperwares", + "iot_plastic_tupperware": "Plásticos e Tupperwares", "iot_porcelain": "Porcelana", "iot_power_mix_wash": "Lavagem Power Mix", "iot_power_mix_wash_soil": "Lavagem Power Mix", - "iot_prewash": "Pr\u00e9-lavagem", + "iot_prewash": "Pré-lavagem", "iot_pyrex_and_glassware": "Pyrex e Recipientes de vidro", "iot_rapid_29": "Rapido 29'", - "iot_rapid_39": "R\u00e1pido 39 min. 60 \u00b0C", + "iot_rapid_39": "Rápido 39 min. 60 °C", "iot_single": "Solteiros", - "iot_steam": "Vapor 75 \u00b0C", + "iot_steam": "Vapor 75 °C", "iot_super_flash": "Super Flash", "iot_super_wash": "Lavagem Super", "iot_turbopower": "TurboPower", - "iot_universal": "Universal 60 \u00b0C", - "iot_wok_grids_maxi_pans": "Tachos Especiais (Wok - Grelhas e Tachos M\u00e1xi)", - "iot_wok_grids_maxi_pans_soil": "Tachos Especiais (Wok - Grelhas e Tachos M\u00e1xi)", + "iot_universal": "Universal 60 °C", + "iot_wok_grids_maxi_pans": "Tachos Especiais (Wok - Grelhas e Tachos Máxi)", + "iot_wok_grids_maxi_pans_soil": "Tachos Especiais (Wok - Grelhas e Tachos Máxi)", "iot_yes_quick_cycle": "Yes Quick", - "night": "Ultra Silencioso 55\u00b0C", - "prewash": "Pr\u00e9-lavagem", - "rapid_20": "R\u00e1pido 20'", + "night": "Ultra Silencioso 55°C", + "prewash": "Pré-lavagem", + "rapid_20": "Rápido 20'", "rapid_24": "Rapido 24'", - "rapid_29": "Rapido 29' 50\u00b0C", + "rapid_29": "Rapido 29' 50°C", "rapid_35": "Wash&Dry 35'", - "rapid_39": "R\u00e1pido 39 min. 60 \u00b0C", - "rapid_49": "R\u00e1pido 49'", - "rapid_59": "R\u00e1pido 59'", + "rapid_39": "Rápido 39 min. 60 °C", + "rapid_49": "Rápido 49'", + "rapid_59": "Rápido 59'", "sanitising": "Desinfetante", "silence": "Silence", "silent": "Noite", @@ -246,13 +246,13 @@ "smart_ai": "Smart AI", "special": "especial", "special_pw_prz": "especial", - "steam": "Vapor 75 \u00b0C", - "steam_plus": "Vapor Mais 75\u00b0C", - "total_care": "Total Care 50\u00b0C", - "ultra_silence": "Ultra Silencioso 55\u00b0C", - "ultra_silent": "Ultra Silencioso 55\u00b0C", - "universal": "Universal 60 \u00b0C", - "universal_plus": "Universal plus 70 \u00b0C", + "steam": "Vapor 75 °C", + "steam_plus": "Vapor Mais 75°C", + "total_care": "Total Care 50°C", + "ultra_silence": "Ultra Silencioso 55°C", + "ultra_silent": "Ultra Silencioso 55°C", + "universal": "Universal 60 °C", + "universal_plus": "Universal plus 70 °C", "zoom_39": "Zoom 39 min" }, "name": "Programa" @@ -266,23 +266,23 @@ "iot_special_chicken_breast": "Peito de frango", "iot_special_chicken_legs": "Pernas de frango", "iot_special_chocolate_pudding": "Pudim de chocolate", - "iot_special_entrecote": "Entrec\u00f4te", + "iot_special_entrecote": "Entrecôte", "iot_special_fresh_tuna": "Atum fresco", "iot_special_grilled_vegetables": "Legumes grelhados", "iot_special_lamb_cutlet": "Costeleta de borrego", - "iot_special_meatballs": "Alm\u00f4ndegas", + "iot_special_meatballs": "Almôndegas", "iot_special_minestrone": "Minestrone", - "iot_special_mussels": "Mexilh\u00f5es", + "iot_special_mussels": "Mexilhões", "iot_special_omelette": "Omelete", "iot_special_pancakes": "Panquecas", "iot_special_paris_style_peas": "Ervilhas ao estilo parisiense", "iot_special_poached_eggs": "Ovos escalfados", "iot_special_pork_fillet": "Lombo porco ", "iot_special_pork_ribs": "Lombo de porco", - "iot_special_prawns": "Camar\u00f5es", + "iot_special_prawns": "Camarões", "iot_special_quinoa": "Quinoa", "iot_special_ratatouille": "Ratatouille", - "iot_special_salmon_fillet": "Fil\u00e9 de salm\u00e3o", + "iot_special_salmon_fillet": "Filé de salmão", "iot_special_saute_potatoes": "Batatas salteadas", "iot_special_scallops": "Vieiras", "iot_special_scrambled_eggs": "Ovos mexidos", @@ -300,27 +300,27 @@ "programs_ov": { "state": { "bakery": "Massas e bolos", - "bakery_steam": "P\u00e3o cozido a vapor", + "bakery_steam": "Pão cozido a vapor", "bottom_heating": "Aquecimento inferior", - "bottom_heating_fan": "Aquecimento Inferior + Ventila\u00e7\u00e3o", - "bread": "P\u00e3o", + "bottom_heating_fan": "Aquecimento Inferior + Ventilação", + "bread": "Pão", "bread_steam": "Pastelaria cozida a vapor", - "convection_fan": "Convec\u00e7\u00e3o + Ventilador", - "convection_fan_turnspit": "Convec\u00e7\u00e3o + Ventilador + Espeto girat\u00f3rio", - "conventional": "Est\u00e1tico", - "conventional_turnspit": "Convec\u00e7\u00e3o + Espeto girat\u00f3rio", + "convection_fan": "Convecção + Ventilador", + "convection_fan_turnspit": "Convecção + Ventilador + Espeto giratório", + "conventional": "Estático", + "conventional_turnspit": "Convecção + Espeto giratório", "defrost": "Descongelar", - "descaling": "Descalcifica\u00e7\u00e3o", + "descaling": "Descalcificação", "fish": "Peixe", "fish_steam": "Peixe cozinhado a vapor", "grill_cata": "Grelhar", - "grill_fan_cata": "Grelhar com ventila\u00e7\u00e3o", - "grill_fan_pyro": "Grelhar + Ventila\u00e7\u00e3o", + "grill_fan_cata": "Grelhar com ventilação", + "grill_fan_pyro": "Grelhar + Ventilação", "grill_pyro": "Grelhar", "h20_clean": "H2O-Clean", - "iot_bread": "P\u00e3o", + "iot_bread": "Pão", "iot_h20_clean": "h2O clean", - "leavening": "Leveda\u00e7\u00e3o", + "leavening": "Levedação", "low_temp_cooking": "Cozinhar a baixa temperatura", "low_temp_cooking_fish": "Cozinhar carne a baixa temperatura - Peixe", "low_temp_cooking_fish_steam": "Cozedura a vapor a baixa temperatura - Peixe", @@ -329,25 +329,24 @@ "low_temp_cooking_steam": "Cozedura a vapor a baixa temperatura", "meat": "Carne", "meat_steam": "Carne cozinhada a vapor", - "multi_level": "Multin\u00edvel", + "multi_level": "Multinível", "paella": "Paella", "pasta_and_bakery": "Massas e bolos", "pizza": "Pizza", - "pyrolysis": "Pir\u00f3lise", - "pyrolysis_plus": "Pir\u00f3lise +", + "pyrolysis": "Pirólise", + "pyrolysis_plus": "Pirólise +", "red_meat": "Carne vermelha", "red_meat_steam": "Carne vermelha cozinhada a vapor", - "regenerate": "Regenera\u00e7\u00e3o", + "regenerate": "Regeneração", "soft_plus": "Soft+", "super_grill": "Super Grelhador", "tailor_bake": "Tailor bake", "tailor_bake_cata": "Tailor Bake", - "tailor_bake_desctiption": "Esta fun\u00e7\u00e3o \u00e9 ideal para manter os alimentos macios no interior e estaladi\u00e7os por fora.\r\r\r\r\r\nEsta fun\u00e7\u00e3o reduz a quantidade de gordura ou \u00f3leo necess\u00e1ria, para uma dieta saud\u00e1vel.\r\r\r\r\r\nA combina\u00e7\u00e3o de resist\u00eancias com um ciclo pulsante de ar garante resultados de assadura uniformes.", "tailor_bake_pyro": "Tailor Bake", "vegetables": "Vegetais", "vegetables_cata": "Legumes", "vegetables_pyro": "Legumes", - "water_discharge": "Drenagem de \u00e1gua", + "water_discharge": "Drenagem de água", "white_meat": "Carne branca", "white_meat_steam": "Carne branca cozinhada a vapor" }, @@ -361,7 +360,7 @@ "antiallergy": "Anti alergias", "anti_odours": "Anti-odor", "auto_care": "Auto Care", - "baby": "Roupa de beb\u00e9", + "baby": "Roupa de bebé", "bed_quilt": "Colchas", "care_30": "Cuidado 30", "care_45": "Cuidado 45", @@ -371,9 +370,9 @@ "daily_perfect_59_min": "DIARIO PERFEITO 59'", "darks_and_coloured": "Roupa escura e colorida", "delicates": "Delicados", - "duvet": "Edred\u00e3os", - "eco": "Eco Algod\u00e3o", - "ecospeed_cottons": "Velocidade eco algod\u00f5es", + "duvet": "Edredãos", + "eco": "Eco Algodão", + "ecospeed_cottons": "Velocidade eco algodões", "ecospeed_delicates": "Ecospeed roupa delicada", "ecospeed_mixed": "Velocidade eco mistos", "extra_hygiene": "Higiene Extra", @@ -382,54 +381,54 @@ "genius": "Genius", "hqd_baby_care": "Baby Care", "hqd_bath_towel": "Toalhas", - "hqd_bed_sheets": "Len\u00e7\u00f3is", + "hqd_bed_sheets": "Lençóis", "hqd_bulky": "Itens volumosos", "hqd_casual": "Casual", "hqd_cold_wind_30": "Brisa fresca durante 30 minutos", "hqd_cold_wind_timing": "Brisa fresca ", - "hqd_cotton": "Algod\u00e3o", + "hqd_cotton": "Algodão", "hqd_curtain": "Cortinas", "hqd_delicate": "Roupa delicada", "hqd_diaper": "Fraldas", - "hqd_duvet": "Edred\u00f5es", - "hqd_feather": "Blus\u00f5es", + "hqd_duvet": "Edredões", + "hqd_feather": "Blusões", "hqd_hot_wind_timing": "Ar quente", - "hqd_hygienic": "Higieniza\u00e7\u00e3o", + "hqd_hygienic": "Higienização", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", "hqd_jacket": "Casacos", "hqd_jeans": "Jeans", - "hqd_luxury": "Pe\u00e7as requintadas", + "hqd_luxury": "Peças requintadas", "hqd_mix": "Mistos", "hqd_night_dry": "Secagem durante a noite", "hqd_outdoor": "Outdoor", "hqd_precious_cure": "Precious cure", - "hqd_quick_20": "R\u00e1pido 20", - "hqd_quick_30": "R\u00e1pido 30", - "hqd_quick_dry": "Secagem r\u00e1pida", + "hqd_quick_20": "Rápido 20", + "hqd_quick_30": "Rápido 30", + "hqd_quick_dry": "Secagem rápida", "hqd_quilt": "Colchas", "hqd_refresh": "Refrescar", "hqd_school_uniform": "Farda da escola", "hqd_shirt": "Camisas", - "hqd_shoes": "Cal\u00e7ado", + "hqd_shoes": "Calçado", "hqd_silk": "Seda", "hqd_sports": "Desporto", - "hqd_synthetics": "Sint\u00e9ticos", + "hqd_synthetics": "Sintéticos", "hqd_timer": "Temporizado", "hqd_towel": "Toalhas", "hqd_underwear": "Roupa interior", "hqd_warm_up": "Aquecer", - "hqd_wool": "L\u00e3s", + "hqd_wool": "Lãs", "hqd_working_suit": "Roupa de trabalho", "hygiene": "Higiene", "iot_checkup": "Check-Up", - "iot_dry_anti_mites": "Anti-\u00e1caros", - "iot_dry_baby": "Roupa de beb\u00e9", + "iot_dry_anti_mites": "Anti-ácaros", + "iot_dry_baby": "Roupa de bebé", "iot_dry_backpacks": "Mochilas", - "iot_dry_bathrobe": "Roup\u00f5es", + "iot_dry_bathrobe": "Roupões", "iot_dry_bed_linen": "Roupa de cama", "iot_dry_bed_quilt": "Colchas", - "iot_dry_cotton": "Algod\u00e3o", + "iot_dry_cotton": "Algodão", "iot_dry_cuddly_toys": "Brinquedos macios", "iot_dry_curtains": "Cortinas", "iot_dry_dehumidifier": "Removedor de humidade", @@ -437,53 +436,53 @@ "iot_dry_delicate_tablecloths": "Roupa de mesa delicada", "iot_dry_denim_jeans": "Ganga - Jeans", "iot_dry_down_jacket": "Jacket", - "iot_dry_duvet": "Edred\u00e3os", - "iot_dry_easy_iron_cotton": "Engomar f\u00e1cil", - "iot_dry_easy_iron_synthetics": "Engomar Super F\u00e1cil de Sint\u00e9ticos", + "iot_dry_duvet": "Edredãos", + "iot_dry_easy_iron_cotton": "Engomar fácil", + "iot_dry_easy_iron_synthetics": "Engomar Super Fácil de Sintéticos", "iot_dry_gym_fit": "Roupa de desporto - Fitness", "iot_dry_lingerie": "Roupa interior", "iot_dry_mixed": "Mistos", - "iot_dry_playsuits": "Macac\u00f5es", + "iot_dry_playsuits": "Macacões", "iot_dry_rapid_30": "Rapid 30", - "iot_dry_rapid_59": "R\u00e1pido 59\u2019.", + "iot_dry_rapid_59": "Rápido 59’.", "iot_dry_refresh": "Refrescar", - "iot_dry_regenerates_waterproof": "Regenera\u00e7\u00e3o da Impermeabiliza\u00e7\u00e3o (?)", + "iot_dry_regenerates_waterproof": "Regeneração da Impermeabilização (?)", "iot_dry_relax_creases": "Menos vincos", "iot_dry_shirts": "Camisas", "iot_dry_small_load": "Pequena carga", "iot_dry_swimsuits_and_bikinis": "Fatos de banho", - "iot_dry_synthetics": "Sint\u00e9ticos", - "iot_dry_synthetic_dry": "Secagem de Sint\u00e9ticos", + "iot_dry_synthetics": "Sintéticos", + "iot_dry_synthetic_dry": "Secagem de Sintéticos", "iot_dry_tablecloths": "Roupa de mesa", - "iot_dry_technical_fabrics": "Tecidos t\u00e9cnicos", + "iot_dry_technical_fabrics": "Tecidos técnicos", "iot_dry_warm_embrace": "Warm Embrace (?)", "iot_dry_wool": "Woolmark", "jeans": "Jeans", "mix_and_dry": "Mix&Dry (Mista e Seca)", - "pets": "Animais de estima\u00e7\u00e3o", - "pre_iron": "Pr\u00e9 engomar", + "pets": "Animais de estimação", + "pre_iron": "Pré engomar", "rapid_30": "Rapid 30", - "rapid_45": "R\u00e1pido 45 min", - "rapid_59": "R\u00e1pida Perfeita 59 min", + "rapid_45": "Rápido 45 min", + "rapid_59": "Rápida Perfeita 59 min", "refresh": "Refrescar", "relax_creases": "Menos vincos", "saving_30_min": "ECO 30'", "shirts": "Camisas", - "shoes": "Cal\u00e7ado", + "shoes": "Calçado", "small_load": "Pequena carga", "soft_care": "Cuidado Suave", "sport_plus": "Roupa desportiva", - "super_easy_iron_misti": "Engomar Super F\u00e1cil de mistos", - "super_easy_iron_xxl": "Engomar Super F\u00e1cil XXL", - "super_fast_cottons": "Algod\u00f5es super r\u00e1pido", - "super_fast_delicates": "Delicados super r\u00e1pido", - "synthetics": "Sint\u00e9ticos", + "super_easy_iron_misti": "Engomar Super Fácil de mistos", + "super_easy_iron_xxl": "Engomar Super Fácil XXL", + "super_fast_cottons": "Algodões super rápido", + "super_fast_delicates": "Delicados super rápido", + "synthetics": "Sintéticos", "total_care": "Total Care", - "trainers": "T\u00e9nis", + "trainers": "Ténis", "ultra_care": "Ultra Care", - "waterproof_revitalize": "Revitaliza\u00e7\u00e3o da impermeabializa\u00e7\u00e3o", + "waterproof_revitalize": "Revitalização da impermeabialização", "whites": "Roupa branca", - "wool": "Secagem de l\u00e3s", + "wool": "Secagem de lãs", "woolmark": "Woolmark", "xxl_load": "Carga XXL", "zoom_59": "Zoom 59" @@ -492,8 +491,8 @@ }, "programs_wm": { "state": { - "20_degrees_coloured_cottons": "20\u00b0 Cores e Algod\u00f5es", - "20_degrees_new_energy_label": "20\u00b0C", + "20_degrees_coloured_cottons": "20° Cores e Algodões", + "20_degrees_new_energy_label": "20°C", "active_steam": "Vapor", "active_wash": "Lavagem Ativa", "active_wash_steam": "Lavagem Ativa", @@ -502,51 +501,51 @@ "all_in_one_49": "Tudo em Um 49'.", "all_in_one_59": "Tudo em Um 59'.", "all_in_one_59_steam": "Active Wash + Vapor", - "autocare": "Cuidado autom\u00e1tico", + "autocare": "Cuidado automático", "autoclean": "Limpeza do tambor", - "baby_60": "All Baby 60\u00b0C", + "baby_60": "All Baby 60°C", "care_14": "Cuidado Rapido 14'", "care_30": "Cuidado Rapido 30'", "care_44": "Cuidado Rapido 44'", "checkup": "Check-Up", "colour_59": "Cores 59'", "colour_59_steam": "Cores 59' + vapor", - "cottons": "Algod\u00e3o", - "cottons_prewash": "Algod\u00f5es + Pr\u00e9-lavagem", - "cottons_steam": "Algod\u00e3o + Vapor", - "cotton_care_59": "Algod\u00f5es 59 min", + "cottons": "Algodão", + "cottons_prewash": "Algodões + Pré-lavagem", + "cottons_steam": "Algodão + Vapor", + "cotton_care_59": "Algodões 59 min", "delicate_59": "Delicados 59'", "delicate_silk": "Seda delicada", "delicate_silk_steam": "Seda delicada + vapor", "delicati_59": "Delicados 59'", "delicati_59_steam": "Delicados 59'", "drain_spin": "Drenar +e Centrifugar", - "easy_iron": "Engomar F\u00e1cil", + "easy_iron": "Engomar Fácil", "eco_40_60_new_energy_label": "Eco 40-60", "extra_care": "Cuidado extra", "fitness": "Fitness Care", "fitness_care": "Fitness Care", "fresh_care": "Cuidado Fresco", "fresh_care_steam": "Fresh Care + Vapor", - "handwash_wool": "Lavagem manual e l\u00e3", - "high_dry": "Secagem de algod\u00e3o", - "hqd_20_degrees": "Algod\u00e3o 20\u2103", + "handwash_wool": "Lavagem manual e lã", + "high_dry": "Secagem de algodão", + "hqd_20_degrees": "Algodão 20℃", "hqd_allergy": "Cuidado de Alergias", "hqd_autoclean": "Limpeza do tambor", - "hqd_babycare": "Roupa de beb\u00e9", + "hqd_babycare": "Roupa de bebé", "hqd_checkup": "Check-Up", - "hqd_cottons": "Algod\u00e3o", + "hqd_cottons": "Algodão", "hqd_delicate": "Roupa delicada", "hqd_delicate_cradle": "Roupa delicada", - "hqd_dry": "Secagem de algod\u00e3o", + "hqd_dry": "Secagem de algodão", "hqd_dry_synthetics": "Secos mistos", - "hqd_duvet": "Edred\u00e3os", + "hqd_duvet": "Edredãos", "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_handwash_wool": "L\u00e3s", + "hqd_handwash_wool": "Lãs", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Misto", - "hqd_quick_15": "R\u00e1pido 15'", - "hqd_quick_wash_57": "Ciclo R\u00e1pido 57 min", + "hqd_quick_15": "Rápido 15'", + "hqd_quick_wash_57": "Ciclo Rápido 57 min", "hqd_rapid_wash_and_dry": "Lavar & secar", "hqd_refresh": "Refrescar", "hqd_rinse": "Lavagem", @@ -554,91 +553,91 @@ "hqd_smart": "Smart A.I.", "hqd_spin": "Centrifugar", "hqd_sport": "Desporto", - "hqd_super_fast": "R\u00e1pido 39\u2019", - "hqd_synthetic_and_coloured": "Sint\u00e9ticos", + "hqd_super_fast": "Rápido 39’", + "hqd_synthetic_and_coloured": "Sintéticos", "hygiene_59": "Higiene Plus 59'", - "hygiene_60": "Higiene 60\u00b0", + "hygiene_60": "Higiene 60°", "hygiene_plus_59": "Higiene Plus 59'", "hygiene_plus_59_min": "Higiene Plus 59'", "hygiene_pro_49_min": "Hygiene Pro 49 min", "hygiene_pro_steam": "Hygiene Pro + Vapor", - "intensive_40": "Intensivo 40\u00b0C", - "intensive_40_steam": "Intensivo 40\u00b0C + vapor", + "intensive_40": "Intensivo 40°C", + "intensive_40_steam": "Intensivo 40°C + vapor", "iot_active_steam": "Vapor", "iot_active_wash_steam": "Lavagem Ativa", "iot_allergy_care_pro": "Cuidado Alergias Pro", "iot_all_in_one_59_steam": "Active Wash + Vapor", "iot_checkup": "Check-Up", "iot_colour_59_steam": "Cores 59' + vapor", - "iot_cottons_steam": "Algod\u00e3o + Vapor", + "iot_cottons_steam": "Algodão + Vapor", "iot_delicate_silk_steam": "Seda delicada + vapor", "iot_delicati_59_steam": "Delicados 59'", "iot_dry_air_refresh": "Refrescar ao Ar", - "iot_dry_anti_mites": "Anti-\u00e1caros", - "iot_dry_baby": "Beb\u00e9", + "iot_dry_anti_mites": "Anti-ácaros", + "iot_dry_baby": "Bebé", "iot_dry_backpacks": "Mochilas", - "iot_dry_bathrobe": "Roup\u00f5es e tecidos porosos", + "iot_dry_bathrobe": "Roupões e tecidos porosos", "iot_dry_bed_linen": "Roupa de cama", - "iot_dry_cotton_dry": "Secagem de algod\u00e3o", + "iot_dry_cotton_dry": "Secagem de algodão", "iot_dry_cuddly_toys": "Animais de peluche", "iot_dry_curtains": "Cortinas", "iot_dry_dehumidifier": "Removedor de humidade", - "iot_dry_delicates_antiallergy": "Delicados - antial\u00e9rgicos", + "iot_dry_delicates_antiallergy": "Delicados - antialérgicos", "iot_dry_delicate_tablecloths": "Toalhas delicadas", "iot_dry_denim_jeans": "Ganga - Jeans", - "iot_dry_easy_iron_cotton": "Engomagem F\u00e1cil - Algod\u00e3o", - "iot_dry_easy_iron_synthetics": "Engomar F\u00e1cil - Sint\u00e9ticos", - "iot_dry_gym_fit": "Vestu\u00e1rio de gin\u00e1sio - fitness", + "iot_dry_easy_iron_cotton": "Engomagem Fácil - Algodão", + "iot_dry_easy_iron_synthetics": "Engomar Fácil - Sintéticos", + "iot_dry_gym_fit": "Vestuário de ginásio - fitness", "iot_dry_lingerie": "Lingerie", "iot_dry_mixed_dry": "Secos mistos", - "iot_dry_rapid_60_min_delicates": "R\u00e1pido 60' - Delicados", + "iot_dry_rapid_60_min_delicates": "Rápido 60' - Delicados", "iot_dry_shirts": "Camisas", "iot_dry_swimsuits_and_bikinis": "Fatos de banho", - "iot_dry_synthetics": "Secagem de Sint\u00e9ticos", - "iot_dry_synthetic_dry": "Secagem de Sint\u00e9ticos", + "iot_dry_synthetics": "Secagem de Sintéticos", + "iot_dry_synthetic_dry": "Secagem de Sintéticos", "iot_dry_tablecloths": "Toalhas de mesa", - "iot_dry_technical_fabrics": "Tecidos t\u00e9cnicos", + "iot_dry_technical_fabrics": "Tecidos técnicos", "iot_dry_warm_embrace": "Secagem a quente", - "iot_dry_wool_dry": "Secagem de l\u00e3s", - "iot_easy_iron": "Engomar F\u00e1cil", + "iot_dry_wool_dry": "Secagem de lãs", + "iot_easy_iron": "Engomar Fácil", "iot_fresh_care_steam": "Fresh Care + Vapor", "iot_hygiene_pro_steam": "Hygiene Pro + Vapor", - "iot_intensive_40_steam": "Intensivo 40\u00b0C + vapor", + "iot_intensive_40_steam": "Intensivo 40°C + vapor", "iot_mixed_steam": "Mistos + Vapor", "iot_mix_and_colour_59_steam": "Mistos E Cores 59' + Vapor", "iot_perfect_cotton_59_steam": "Algodao Perfeito 59'", - "iot_rapid_a_class_60_steam": "Classe A r\u00e1pida 60 + vapor", - "iot_resistant_cotton_steam": "Algod\u00e3o + Vapor", + "iot_rapid_a_class_60_steam": "Classe A rápida 60 + vapor", + "iot_resistant_cotton_steam": "Algodão + Vapor", "iot_shirts_steam": "Camisas + Vapor", - "iot_single_item_steam": "Pe\u00e7a \u00fanica + Vapor", + "iot_single_item_steam": "Peça única + Vapor", "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Special 39' + Vapor", "iot_steam_hygiene_plus": "Hygiene Plus Steam ", - "iot_synthetic_and_coloured_steam": "Sint\u00e9ticos e Cores + Vapor", + "iot_synthetic_and_coloured_steam": "Sintéticos e Cores + Vapor", "iot_wash_and_dry": "Lavar & secar", - "iot_wash_anti_mites": "Anti-\u00e1caros", + "iot_wash_anti_mites": "Anti-ácaros", "iot_wash_anti_odor": "Anti-odor", "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", "iot_wash_baby_sanitizer": "Desinfetante", - "iot_wash_baby_sanitizer_steam": "higienizador para beb\u00ea + vapor", + "iot_wash_baby_sanitizer_steam": "higienizador para bebê + vapor", "iot_wash_backpacks": "Mochilas", "iot_wash_backpacks_zelig": "Mochilas", - "iot_wash_bathrobe": "Roup\u00f5es e toalhas", - "iot_wash_bathrobe_steam": "Roup\u00e3o + Vapor", + "iot_wash_bathrobe": "Roupões e toalhas", + "iot_wash_bathrobe_steam": "Roupão + Vapor", "iot_wash_bed_linen": "Roupa de cama", "iot_wash_bed_linen_steam": "Roupa de cama + Vapor", "iot_wash_bed_linen_zelig": "Roupa de cama", - "iot_wash_big_single_load": "Pe\u00e7a \u00fanica grande", + "iot_wash_big_single_load": "Peça única grande", "iot_wash_bleaching": "Branqueamento", - "iot_wash_blood_stains": "N\u00f3doas de sangue", + "iot_wash_blood_stains": "Nódoas de sangue", "iot_wash_cashmere": "Cachemira", - "iot_wash_chocolate_stains": "N\u00f3doas de chocolate", + "iot_wash_chocolate_stains": "Nódoas de chocolate", "iot_wash_cold_wash": "Lavagem a frio", "iot_wash_colored": "Cores", - "iot_wash_colored_anti_stain": "Remo\u00e7\u00e3o de n\u00f3doas para roupas de cor", + "iot_wash_colored_anti_stain": "Remoção de nódoas para roupas de cor", "iot_wash_colored_delicate": "Cores delicadas", "iot_wash_coloured": "Cores", "iot_wash_coloured_bed_linen": "Roupa de cama de cores", @@ -649,8 +648,8 @@ "iot_wash_coloured_steam": "Cores + Vapor", "iot_wash_coloured_tableclothes": "Toalhas de mesa de cor", "iot_wash_coloured_tableclothes_steam": "Toalhas de mesa de cor + Vapor", - "iot_wash_cotton": "Algod\u00e3o", - "iot_wash_cotton_steam": "Algod\u00e3o + Vapor", + "iot_wash_cotton": "Algodão", + "iot_wash_cotton_steam": "Algodão + Vapor", "iot_wash_cuddly_toys": "Animais de peluche", "iot_wash_curtains": "Cortinas", "iot_wash_curtains_steam": "Cortinas+Vapor", @@ -664,9 +663,9 @@ "iot_wash_dash_cold_cycle": "Dash Cold Clean", "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", "iot_wash_delicate": "Roupa delicada", - "iot_wash_delicate_antiallergy": "Antial\u00e9rgico para roupas delicadas", - "iot_wash_delicate_antiallergy_steam": "Antial\u00e9rgico para roupas delicadas + Vapor", - "iot_wash_delicate_antiallergy_zelig": "Antial\u00e9rgico para roupas delicadas", + "iot_wash_delicate_antiallergy": "Antialérgico para roupas delicadas", + "iot_wash_delicate_antiallergy_steam": "Antialérgico para roupas delicadas + Vapor", + "iot_wash_delicate_antiallergy_zelig": "Antialérgico para roupas delicadas", "iot_wash_delicate_colors": "Delicados de cor", "iot_wash_delicate_colors_steam": "Cores + vapor", "iot_wash_delicate_dark": "Escuros delicados", @@ -677,20 +676,20 @@ "iot_wash_denim_jeans": "Ganga - Jeans", "iot_wash_diving_suits": "Fatos de mergulho", "iot_wash_diving_suits_zelig": "Fatos de mergulho", - "iot_wash_down_jackets": "Blus\u00f5es", - "iot_wash_down_jackets_zelig": "Blus\u00f5es", - "iot_wash_duvet": "Edred\u00e3os", - "iot_wash_fruit_stains": "N\u00f3doas de fruta", - "iot_wash_gym_fit": "Vestu\u00e1rio de gin\u00e1sio - fitness", - "iot_wash_handwash": "Lavagem \u00e0 m\u00e3o", - "iot_wash_handwash_colored": "Lavagem \u00e0 m\u00e3o cores", - "iot_wash_handwash_dark": "Lavagem \u00e0 m\u00e3o de escuros", + "iot_wash_down_jackets": "Blusões", + "iot_wash_down_jackets_zelig": "Blusões", + "iot_wash_duvet": "Edredãos", + "iot_wash_fruit_stains": "Nódoas de fruta", + "iot_wash_gym_fit": "Vestuário de ginásio - fitness", + "iot_wash_handwash": "Lavagem à mão", + "iot_wash_handwash_colored": "Lavagem à mão cores", + "iot_wash_handwash_dark": "Lavagem à mão de escuros", "iot_wash_lingerie": "Lingerie", - "iot_wash_masks_refresh": "Refrescar M\u00e1scaras", - "iot_wash_masks_sanification": "Desinfe\u00e7\u00e3o de M\u00e1scaras", - "iot_wash_masks_sanification_steam": "Desinfe\u00e7\u00e3o de M\u00e1scaras + Vapor", + "iot_wash_masks_refresh": "Refrescar Máscaras", + "iot_wash_masks_sanification": "Desinfeção de Máscaras", + "iot_wash_masks_sanification_steam": "Desinfeção de Máscaras + Vapor", "iot_wash_mats": "Tapetes", - "iot_wash_men_s_trousers": "Cal\u00e7as ", + "iot_wash_men_s_trousers": "Calças ", "iot_wash_mixed": "Misto", "iot_wash_mixed_steam": "Mistos + Vapor", "iot_wash_mix_and_coloured_44": "Misto e cores 44'", @@ -699,18 +698,18 @@ "iot_wash_new_clothes": "Roupa nova", "iot_wash_perfect_white": "Branco perfeito", "iot_wash_perfect_white_steam": "Branco perfeito + Vapor", - "iot_wash_pets": "Acess\u00f3rios de animais", - "iot_wash_pets_hair_removal": "Remo\u00e7\u00e3o de pelo de animais de estima\u00e7\u00e3o", - "iot_wash_pets_odours_stains_removal": "Remo\u00e7\u00e3o de odores e manchas de animais de estima\u00e7\u00e3o", - "iot_wash_pets_steam": "Acess\u00f3rios de animais", - "iot_wash_playsuits": "Macac\u00f5es", - "iot_wash_playsuits_steam": "Macac\u00f5es + Vapor", - "iot_wash_quick_drum_cleaner": "Produto de limpeza r\u00e1pida do tambor", - "iot_wash_rapid_14": "R\u00e1pido 14\u2019", - "iot_wash_rapid_30": "R\u00e1pido 30\u2019", - "iot_wash_rapid_44": "R\u00e1pido 44\u2019", - "iot_wash_rapid_59": "R\u00e1pido 59\u2019", - "iot_wash_rapid_59_steam": "R\u00e1pido 59' + vapor", + "iot_wash_pets": "Acessórios de animais", + "iot_wash_pets_hair_removal": "Remoção de pelo de animais de estimação", + "iot_wash_pets_odours_stains_removal": "Remoção de odores e manchas de animais de estimação", + "iot_wash_pets_steam": "Acessórios de animais", + "iot_wash_playsuits": "Macacões", + "iot_wash_playsuits_steam": "Macacões + Vapor", + "iot_wash_quick_drum_cleaner": "Produto de limpeza rápida do tambor", + "iot_wash_rapid_14": "Rápido 14’", + "iot_wash_rapid_30": "Rápido 30’", + "iot_wash_rapid_44": "Rápido 44’", + "iot_wash_rapid_59": "Rápido 59’", + "iot_wash_rapid_59_steam": "Rápido 59' + vapor", "iot_wash_refresh_14_min": "Refrescar 14'", "iot_wash_resistant_colored": "Cores resistentes", "iot_wash_resistant_dark": "Escuros resistentes", @@ -725,23 +724,23 @@ "iot_wash_sport": "Desporto", "iot_wash_sport_anti_odor": "Roupa de desporto anti odor", "iot_wash_sport_anti_odor_zelig": "Roupa de desporto anti odor", - "iot_wash_stains_remover": "Removedor de n\u00f3doas", + "iot_wash_stains_remover": "Removedor de nódoas", "iot_wash_swimsuits_and_bikinis": "Fatos de banho", - "iot_wash_synthetic": "Sint\u00e9ticos", - "iot_wash_synthetic_steam": "Sint\u00e9ticos + Vapor", + "iot_wash_synthetic": "Sintéticos", + "iot_wash_synthetic_steam": "Sintéticos + Vapor", "iot_wash_tablecloths": "Toalhas de mesa", "iot_wash_tablecloths_steam": "Toalhas de mesa + Vapor", - "iot_wash_technical_fabrics": "Tecidos t\u00e9cnicos", - "iot_wash_technical_fabrics_zelig": "Tecidos t\u00e9cnicos", - "iot_wash_technical_jackets": "Casacos t\u00e9cnicos", - "iot_wash_technical_jackets_zelig": "Casacos t\u00e9cnicos", - "iot_wash_trainers": "T\u00e9nis", + "iot_wash_technical_fabrics": "Tecidos técnicos", + "iot_wash_technical_fabrics_zelig": "Tecidos técnicos", + "iot_wash_technical_jackets": "Casacos técnicos", + "iot_wash_technical_jackets_zelig": "Casacos técnicos", + "iot_wash_trainers": "Ténis", "iot_wash_whites": "Brancos", "iot_wash_whites_44": "Brancos 44'", "iot_wash_whites_59": "Brancos 59'", "iot_wash_whites_xl": "Brancos XL", - "iot_wash_wine_stains": "N\u00f3doas de vinho", - "iot_wash_wool": "L\u00e3s", + "iot_wash_wine_stains": "Nódoas de vinho", + "iot_wash_wool": "Lãs", "jeans": "Jeans", "jeans_60": "Jeans", "low_dry": "Secos mistos", @@ -756,19 +755,19 @@ "perfect_cotton_59": "Algodao Perfeito 59'", "perfect_cotton_59_steam": "Algodao Perfeito 59'", "perfect_whites_59": "Branco perfeito 59'", - "rapid_14_min": "R\u00e1pido 14'", - "rapid_30_min": "R\u00e1pido 30'", - "rapid_44_min": "R\u00e1pido 44'", - "rapid_a_class_60": "Classe A r\u00e1pida 60", - "rapid_a_class_60_steam": "Classe A r\u00e1pida 60 + vapor", + "rapid_14_min": "Rápido 14'", + "rapid_30_min": "Rápido 30'", + "rapid_44_min": "Rápido 44'", + "rapid_a_class_60": "Classe A rápida 60", + "rapid_a_class_60_steam": "Classe A rápida 60 + vapor", "rapid_wash_and_dry_59_min": "Lavar e Secar 59'.", - "resistant_cotton": "Algod\u00e3o", - "resistant_cotton_steam": "Algod\u00e3o + Vapor", + "resistant_cotton": "Algodão", + "resistant_cotton_steam": "Algodão + Vapor", "rinse": "Lavagem", "shirts_steam": "Camisas + Vapor", "silent_night": "Ciclo durante a noite", - "single_item": "Pe\u00e7a \u00fanica", - "single_item_steam": "Pe\u00e7a \u00fanica + Vapor", + "single_item": "Peça única", + "single_item_steam": "Peça única + Vapor", "smart_wash": "Smart Wash", "soft_care": "Cuidado Suave", "soft_care_steam": "Soft Care + Steam", @@ -782,21 +781,21 @@ "sport_plus_39": "Desporto Plus 39'", "steam_39": "Vapor 39'", "steam_care_pro": "Steam Care Pro", - "steam_care_pro_cotton": "Steam Care Pro - Algod\u00f5es", + "steam_care_pro_cotton": "Steam Care Pro - Algodões", "steam_care_pro_delicates": "Steam Care Pro - Delicados", - "steam_care_pro_synthetic": "Steam Care Pro - Sint\u00e9ticos", + "steam_care_pro_synthetic": "Steam Care Pro - Sintéticos", "steam_hygiene_plus": "Hygiene Plus Steam ", - "synthetics": "Sint\u00e9ticos", - "synthetic_and_coloured": "Sint\u00e9ticos e Cores", - "synthetic_and_coloured_steam": "Sint\u00e9ticos e Cores + Vapor", + "synthetics": "Sintéticos", + "synthetic_and_coloured": "Sintéticos e Cores", + "synthetic_and_coloured_steam": "Sintéticos e Cores + Vapor", "tailored_resistant_cotton": "Tailored Resistant Cotton", "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", "total_care": "Cuidado Total", - "tumbling": "Secar na m\u00e1quina", - "wool": "L\u00e3s", - "wool_and_delicates_49": "L\u00e3s/Delicados 49'", - "wool_dry": "Secagem de l\u00e3s", - "wool_soft_care": "L\u00e3s & Cuidado Suavidade" + "tumbling": "Secar na máquina", + "wool": "Lãs", + "wool_and_delicates_49": "Lãs/Delicados 49'", + "wool_dry": "Secagem de lãs", + "wool_soft_care": "Lãs & Cuidado Suavidade" }, "name": "Programa" }, @@ -812,7 +811,7 @@ "14": "Pronto a usar", "15": "Extra seco" }, - "name": "N\u00edvel de secagem" + "name": "Nível de secagem" }, "spin_speed": { "name": "Centrifugar" @@ -847,25 +846,25 @@ "name": "3 em 1" }, "preheat": { - "name": "Pr\u00e9-aquecimento" + "name": "Pré-aquecimento" }, "dish_washer": { - "name": "M\u00e1quina de lavar loi\u00e7a" + "name": "Máquina de lavar loiça" }, "tumble_dryer": { - "name": "M\u00e1quina de secar" + "name": "Máquina de secar" }, "washing_machine": { - "name": "M\u00e1quina de lavar" + "name": "Máquina de lavar" }, "washer_dryer": { - "name": "M\u00e1quina de lavar e secar" + "name": "Máquina de lavar e secar" }, "oven": { "name": "Forno" }, "prewash": { - "name": "Pr\u00e9-lavagem" + "name": "Pré-lavagem" }, "pause": { "name": "Pausa" @@ -874,7 +873,7 @@ "name": "Keep Fresh" }, "delay_time": { - "name": "In\u00edcio adiado" + "name": "Início adiado" } }, "binary_sensor": { @@ -927,48 +926,48 @@ "name": "Controlo remoto" }, "rinse_aid": { - "name": "N\u00edvel de Abrilhantador" + "name": "Nível de Abrilhantador" }, "salt_level": { - "name": "N\u00edvel de sal" + "name": "Nível de sal" }, "door_open": { "name": "Porta aberta" }, "connection": { - "name": "Liga\u00e7\u00e3o do aparelho" + "name": "Ligação do aparelho" }, "child_lock": { - "name": "Trinco para Crian\u00e7as" + "name": "Trinco para Crianças" }, "on": { "name": "On" }, "prewash": { - "name": "Pr\u00e9-lavagem" + "name": "Pré-lavagem" } }, "number": { "power_management": { - "name": "Gest\u00e3o de energia" + "name": "Gestão de energia" }, "temperature": { "name": "Temperatura" }, "delay_time": { - "name": "In\u00edcio adiado" + "name": "Início adiado" }, "water_hard": { - "name": "Dureza da \u00e1gua" + "name": "Dureza da água" }, "program_duration": { - "name": "Dura\u00e7\u00e3o do programa" + "name": "Duração do programa" }, "target_temperature": { "name": "Temperatura alvo" }, "rinse_iterations": { - "name": "N\u00famero de enxaguamentos" + "name": "Número de enxaguamentos" }, "wash_time": { "name": "Tempo de lavagem" @@ -979,7 +978,7 @@ }, "button": { "induction_hob": { - "name": "Placa de indu\u00e7\u00e3o" + "name": "Placa de indução" } } } diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index 9859f53..1aa55cb 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -3,109 +3,109 @@ "sensor": { "washing_modes": { "state": { - "0": "Preg\u0103tit", - "1": "Preg\u0103tit", - "3": "Pauz\u0103", + "0": "Pregătit", + "1": "Pregătit", + "3": "Pauză", "4": "Programat", "5": "Programat", "6": "Eroare", - "7": "Preg\u0103tit" + "7": "Pregătit" } }, "program_phases_wm": { "state": { - "0": "Preg\u0103tit", - "1": "Sp\u0103lare", - "2": "Sp\u0103lare", + "0": "Pregătit", + "1": "Spălare", + "2": "Spălare", "3": "Stoarcere", - "4": "Cl\u0103tire", - "5": "Cl\u0103tire", - "6": "Cl\u0103tire", + "4": "Clătire", + "5": "Clătire", + "6": "Clătire", "7": "Uscare", "9": "Abur", - "10": "Preg\u0103tit", + "10": "Pregătit", "11": "Stoarcere", - "12": "C\u00e2nt\u0103rire ", - "13": "C\u00e2nt\u0103rire ", - "14": "Sp\u0103lare", - "15": "Sp\u0103lare", - "16": "Sp\u0103lare", - "17": "Cl\u0103tire", - "18": "Cl\u0103tire", + "12": "Cântărire ", + "13": "Cântărire ", + "14": "Spălare", + "15": "Spălare", + "16": "Spălare", + "17": "Clătire", + "18": "Clătire", "19": "Programat", - "20": "Men\u021binere prospe\u021bime", - "24": "Re\u00eemprosp\u0103tare", - "25": "Sp\u0103lare", - "26": "\u00cenc\u0103lzire", - "27": "Sp\u0103lare" + "20": "Menținere prospețime", + "24": "Reîmprospătare", + "25": "Spălare", + "26": "Încălzire", + "27": "Spălare" }, - "name": "Faz\u0103" + "name": "Fază" }, "program_phases_td": { "state": { - "0": "Preg\u0103tit", + "0": "Pregătit", "1": "Uscare", "2": "Uscare", - "3": "R\u0103cire", - "13": "R\u0103cire", + "3": "Răcire", + "13": "Răcire", "14": "Uscare", "15": "Uscare", - "16": "R\u0103cire", - "18": "Men\u021binere prospe\u021bime", + "16": "Răcire", + "18": "Menținere prospețime", "19": "Uscare", "20": "Uscare" }, - "name": "Faz\u0103" + "name": "Fază" }, "program_phases_dw": { "state": { - "0": "Preg\u0103tit", - "1": "Presp\u0103lare", - "2": "Sp\u0103lare", - "3": "Cl\u0103tire", + "0": "Pregătit", + "1": "Prespălare", + "2": "Spălare", + "3": "Clătire", "4": "Uscare", - "5": "Preg\u0103tit", + "5": "Pregătit", "6": "Hot rinse" }, - "name": "Faz\u0103" + "name": "Fază" }, "dry_levels": { "state": { - "0": "F\u0103r\u0103 uscare", - "1": "C\u0103lcare", - "2": "\u0218ifonier preg\u0103tit", - "3": "\u0218ifonier preg\u0103tit", - "4": "Uscare suplimentar\u0103", - "12": "C\u0103lcare", - "13": "\u0218ifonier preg\u0103tit", + "0": "Fără uscare", + "1": "Călcare", + "2": "Șifonier pregătit", + "3": "Șifonier pregătit", + "4": "Uscare suplimentară", + "12": "Călcare", + "13": "Șifonier pregătit", "14": "Gata de purtat", - "15": "Uscare suplimentar\u0103" + "15": "Uscare suplimentară" }, "name": "Nivel de uscare" }, "anti_crease": { - "name": "Anti\u0219ifonare" + "name": "Antișifonare" }, "power": { "name": "Nivel de putere" }, "remaining_time": { - "name": "Timp r\u0103mas" + "name": "Timp rămas" }, "temperature": { - "name": "Temperatur\u0103" + "name": "Temperatură" }, "water_efficiency": { - "name": "Eficien\u021ba apei" + "name": "Eficiența apei" }, "water_saving": { - "name": "Economii de ap\u0103" + "name": "Economii de apă" }, "duration": { - "name": "Durat\u0103" + "name": "Durată" }, "target_temperature": { - "name": "Temperatur\u0103 vizat\u0103" + "name": "Temperatură vizată" }, "spin_speed": { "name": "Stoarcere" @@ -114,22 +114,22 @@ "name": "Nivel abur" }, "dirt_level": { - "name": "Nivel de murd\u0103rie" + "name": "Nivel de murdărie" }, "delay_time": { - "name": "Pornire \u00eent\u00e2rziat\u0103" + "name": "Pornire întârziată" }, "dry_time": { "name": "Timp de uscare" }, "suggested_load": { - "name": "Capacitate de \u00eenc\u0103rcare" + "name": "Capacitate de încărcare" }, "energy_label": { - "name": "Eficien\u021b\u0103 energetic\u0103" + "name": "Eficiență energetică" }, "det_dust": { - "name": "Pudr\u0103" + "name": "Pudră" }, "det_liquid": { "name": "Lichid" @@ -147,13 +147,13 @@ "name": "Consumul de energie Total" }, "water_total": { - "name": "Eficien\u021ba apei Total" + "name": "Eficiența apei Total" }, "energy_current": { "name": "Consumul de energie Current" }, "water_current": { - "name": "Eficien\u021ba apei Current" + "name": "Eficiența apei Current" } }, "select": { @@ -165,47 +165,47 @@ "auto_plus": "AutoPlus", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Auto Universal 50 - 60\u00b0C", - "auto_universal_plus": "Auto Universal+ 65 - 75\u00b0C", - "auto_universal_plus_soil": "Auto Universal+ 65 - 75\u00b0C", - "auto_universal_soil": "Auto Universal 50 - 60\u00b0C", - "auto_wash": "Sp\u0103lare automat\u0103", - "auto_wash_soil": "Sp\u0103lare automat\u0103", - "classe_a_59": "Clasa A 59' 65\u00b0C", - "delicate": "Delicate 45\u00b0C", - "dishwasher_care": "Ciclu de cur\u0103\u021bare a calcarului", + "auto_universal": "Auto Universal 50 - 60°C", + "auto_universal_plus": "Auto Universal+ 65 - 75°C", + "auto_universal_plus_soil": "Auto Universal+ 65 - 75°C", + "auto_universal_soil": "Auto Universal 50 - 60°C", + "auto_wash": "Spălare automată", + "auto_wash_soil": "Spălare automată", + "classe_a_59": "Clasa A 59' 65°C", + "delicate": "Delicate 45°C", + "dishwasher_care": "Ciclu de curățare a calcarului", "eco": "Eco", - "eco_asynch": "Eco 45\u00b0C", - "eco_bldc": "Eco 45\u00b0C", - "eco_synch": "Eco 45\u00b0C", + "eco_asynch": "Eco 45°C", + "eco_bldc": "Eco 45°C", + "eco_synch": "Eco 45°C", "gentle_wash": "Gentle wash", - "glass": "Sticl\u0103", - "glassware": "Sticl\u0103rie 45 \u00b0C", + "glass": "Sticlă", + "glassware": "Sticlărie 45 °C", "glass_care": "Glass Care", - "hygiene": "Igien\u0103", - "hygiene_plus": "Igien\u0103+ 75 \u00b0C", + "hygiene": "Igienă", + "hygiene_plus": "Igienă+ 75 °C", "intensive": "Intensiv ", "intensive_rapid": "rapid intensiv", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Auto Universal 50 - 60\u00b0C", - "iot_auto_wash_soil": "Sp\u0103lare automat\u0103", - "iot_baby_care": "\u00cengrijirea bebelu\u0219ilor", + "iot_auto_universal_soil": "Auto Universal 50 - 60°C", + "iot_auto_wash_soil": "Spălare automată", + "iot_baby_care": "Îngrijirea bebelușilor", "iot_breakfast": "Mic dejun", "iot_checkup": "Verificare", "iot_china_crystals": "Vase din cristal", "iot_classe_a_59": "Rapid 59'", "iot_cocktail_glasses": "Pahare de cocktail", "iot_cocktail_glasses_soil": "Pahare de cocktail", - "iot_daily_care": "Utilizare zilnic\u0103", - "iot_daily_care_soil": "Utilizare zilnic\u0103", - "iot_delicate": "Delicate 45\u00b0C", - "iot_dinner_for_two": "Cin\u0103 pentru 2", - "iot_dinner_for_two_soil": "Cin\u0103 pentru 2", + "iot_daily_care": "Utilizare zilnică", + "iot_daily_care_soil": "Utilizare zilnică", + "iot_delicate": "Delicate 45°C", + "iot_dinner_for_two": "Cină pentru 2", + "iot_dinner_for_two_soil": "Cină pentru 2", "iot_dreft_quick_cycle": "Dreft Quick", - "iot_eco_asynch": "Eco 45\u00b0C", - "iot_eco_bldc": "Eco 45\u00b0C", - "iot_eco_synch": "Eco 45\u00b0C", - "iot_extra_hygiene": "Extra Igien\u0103", + "iot_eco_asynch": "Eco 45°C", + "iot_eco_bldc": "Eco 45°C", + "iot_eco_synch": "Eco 45°C", + "iot_extra_hygiene": "Extra Igienă", "iot_fairy_quick_cycle": "Fairy Quick", "iot_happy_hour": "Happy Hour", "iot_jar_quick_cycle": "Jar Quick", @@ -214,29 +214,29 @@ "iot_pizza_menu": "Meniu Pizza", "iot_pizza_menu_soil": "Meniu Pizza", "iot_plastic_tupperware": "Recipiente din plastic", - "iot_porcelain": "Por\u021belan", - "iot_power_mix_wash": "Sp\u0103lare Putere Mixt\u0103", - "iot_power_mix_wash_soil": "Sp\u0103lare Putere Mixt\u0103", - "iot_prewash": "Presp\u0103lare", - "iot_pyrex_and_glassware": "Articole din sticl\u0103", + "iot_porcelain": "Porțelan", + "iot_power_mix_wash": "Spălare Putere Mixtă", + "iot_power_mix_wash_soil": "Spălare Putere Mixtă", + "iot_prewash": "Prespălare", + "iot_pyrex_and_glassware": "Articole din sticlă", "iot_rapid_29": "Rapid 29'", - "iot_rapid_39": "Rapid 39' 60 \u00b0C", + "iot_rapid_39": "Rapid 39' 60 °C", "iot_single": "Singur", - "iot_steam": "Abur 75 \u00b0C", + "iot_steam": "Abur 75 °C", "iot_super_flash": "Super rapid", - "iot_super_wash": "Super sp\u0103lare", + "iot_super_wash": "Super spălare", "iot_turbopower": "Putere Turbo", - "iot_universal": "Universal 60 \u00b0C", - "iot_wok_grids_maxi_pans": "Recipiente speciale (Wok - Gr\u0103tare & Oale mari)", - "iot_wok_grids_maxi_pans_soil": "Recipiente speciale (Wok - Gr\u0103tare & Oale mari)", + "iot_universal": "Universal 60 °C", + "iot_wok_grids_maxi_pans": "Recipiente speciale (Wok - Grătare & Oale mari)", + "iot_wok_grids_maxi_pans_soil": "Recipiente speciale (Wok - Grătare & Oale mari)", "iot_yes_quick_cycle": "Yes Quick", - "night": "Ultra Silen\u021bios 55\u00b0C", - "prewash": "Presp\u0103lare", + "night": "Ultra Silențios 55°C", + "prewash": "Prespălare", "rapid_20": "Rapid 20'", "rapid_24": "Rapid 24'", - "rapid_29": "Rapid 29' 50\u00b0C", + "rapid_29": "Rapid 29' 50°C", "rapid_35": "Wash&Dry 35'", - "rapid_39": "Rapid 39' 60 \u00b0C", + "rapid_39": "Rapid 39' 60 °C", "rapid_49": "Rapid 49'", "rapid_59": "Rapid 59'", "sanitising": "Igienizare", @@ -246,13 +246,13 @@ "smart_ai": "Smart AI", "special": "special", "special_pw_prz": "special", - "steam": "Abur 75 \u00b0C", - "steam_plus": "Vapor Plus 75 \u00b0C", - "total_care": "Total Care 50\u00b0C", - "ultra_silence": "Ultra Silen\u021bios 55\u00b0C", - "ultra_silent": "Ultra Silen\u021bios 55\u00b0C", - "universal": "Universal 60 \u00b0C", - "universal_plus": "Universal Plus 70 \u00b0C", + "steam": "Abur 75 °C", + "steam_plus": "Vapor Plus 75 °C", + "total_care": "Total Care 50°C", + "ultra_silence": "Ultra Silențios 55°C", + "ultra_silent": "Ultra Silențios 55°C", + "universal": "Universal 60 °C", + "universal_plus": "Universal Plus 70 °C", "zoom_39": "Zoom 39 min" }, "name": "Program" @@ -260,26 +260,26 @@ "programs_ih": { "state": { "iot_special_ash_brown": "Tocinei", - "iot_special_beef_fillet": "File de vit\u0103", - "iot_special_beef_veal_stew": "Tocan\u0103 de vit\u0103 \u0219i vi\u021bel", + "iot_special_beef_fillet": "File de vită", + "iot_special_beef_veal_stew": "Tocană de vită și vițel", "iot_special_boiled_rice": "Orez fiert", "iot_special_chicken_breast": "Piept de pui", "iot_special_chicken_legs": "Pulpe de pui", - "iot_special_chocolate_pudding": "Budinc\u0103 de ciocolat\u0103", + "iot_special_chocolate_pudding": "Budincă de ciocolată", "iot_special_entrecote": "Antricot", - "iot_special_fresh_tuna": "Ton proasp\u0103t", - "iot_special_grilled_vegetables": "Legume pe gr\u0103tar", + "iot_special_fresh_tuna": "Ton proaspăt", + "iot_special_grilled_vegetables": "Legume pe grătar", "iot_special_lamb_cutlet": "Cotlet de miel", - "iot_special_meatballs": "Piftelu\u021be de carne", - "iot_special_minestrone": "Sup\u0103 minestrone", + "iot_special_meatballs": "Pifteluțe de carne", + "iot_special_minestrone": "Supă minestrone", "iot_special_mussels": "Midii", - "iot_special_omelette": "Omlet\u0103", - "iot_special_pancakes": "Cl\u0103tite", - "iot_special_paris_style_peas": "Maz\u0103re \u00een stil parizian", - "iot_special_poached_eggs": "Ou\u0103 fierte", - "iot_special_pork_fillet": "Mu\u015fchi file", + "iot_special_omelette": "Omletă", + "iot_special_pancakes": "Clătite", + "iot_special_paris_style_peas": "Mazăre în stil parizian", + "iot_special_poached_eggs": "Ouă fierte", + "iot_special_pork_fillet": "Muşchi file", "iot_special_pork_ribs": "Coaste de porc", - "iot_special_prawns": "Creve\u021bi", + "iot_special_prawns": "Creveți", "iot_special_quinoa": "Quinoa", "iot_special_ratatouille": "Ratatouille", "iot_special_salmon_fillet": "File de somon", @@ -287,111 +287,110 @@ "iot_special_scallops": "Scoici", "iot_special_scrambled_eggs": "Scrob", "iot_special_spelt": "Alac", - "iot_special_veggy_noodles": "T\u0103i\u0163ei vegetali", - "iot_special_white_fish_fillet": "File de pe\u0219te alb", + "iot_special_veggy_noodles": "Tăiţei vegetali", + "iot_special_white_fish_fillet": "File de pește alb", "iot_standard_boiling": "Fierbere", - "iot_standard_frying": "Pr\u0103jire", - "iot_standard_keep_warm": "Men\u021binere la cald", + "iot_standard_frying": "Prăjire", + "iot_standard_keep_warm": "Menținere la cald", "iot_standard_melting": "Topire", - "iot_standard_simmering": "Fierbere \u00een\u0103bu\u0219it\u0103" + "iot_standard_simmering": "Fierbere înăbușită" }, "name": "Program" }, "programs_ov": { "state": { - "bakery": "Paste \u0219i patiserie", - "bakery_steam": "P\u00e2ine g\u0103tit\u0103 la abur", - "bottom_heating": "\u00cenc\u0103lzire de jos", - "bottom_heating_fan": "\u00cenc\u0103lzire De Jos + Ventila\u021bie", - "bread": "P\u00e2ine", - "bread_steam": "Produse de patiserie g\u0103tite la abur", - "convection_fan": "Convec\u021bie \u0219i ventila\u021bie", - "convection_fan_turnspit": "Convec\u021bie + Ventilator + Rotisor", - "conventional": "Conven\u021bional", - "conventional_turnspit": "Convec\u021bie + Rotisor", + "bakery": "Paste și patiserie", + "bakery_steam": "Pâine gătită la abur", + "bottom_heating": "Încălzire de jos", + "bottom_heating_fan": "Încălzire De Jos + Ventilație", + "bread": "Pâine", + "bread_steam": "Produse de patiserie gătite la abur", + "convection_fan": "Convecție și ventilație", + "convection_fan_turnspit": "Convecție + Ventilator + Rotisor", + "conventional": "Convențional", + "conventional_turnspit": "Convecție + Rotisor", "defrost": "Decongelare", - "descaling": "\u00cendep\u0103rtarea calcarului", - "fish": "Pe\u0219te", - "fish_steam": "Pe\u0219te g\u0103tit la abur", + "descaling": "Îndepărtarea calcarului", + "fish": "Pește", + "fish_steam": "Pește gătit la abur", "grill_cata": "Gril", - "grill_fan_cata": "Grill + Ventila\u021bie", - "grill_fan_pyro": "Grill + Ventila\u021bie", + "grill_fan_cata": "Grill + Ventilație", + "grill_fan_pyro": "Grill + Ventilație", "grill_pyro": "Grill", "h20_clean": "H2O-Clean", - "iot_bread": "P\u00e2ine", + "iot_bread": "Pâine", "iot_h20_clean": "h2O clean", "leavening": "Dospire", - "low_temp_cooking": "G\u0103tire la temperatur\u0103 sc\u0103zut\u0103", - "low_temp_cooking_fish": "G\u0103tire la temperatur\u0103 sc\u0103zut\u0103 - Pe\u0219te", - "low_temp_cooking_fish_steam": "G\u0103titul cu abur la temperatur\u0103 sc\u0103zut\u0103 - Pe\u0219te", - "low_temp_cooking_meat": "G\u0103tire la temperatur\u0103 sc\u0103zut\u0103 - Carne", - "low_temp_cooking_meat_steam": "G\u0103titul la abur la temperatur\u0103 sc\u0103zut\u0103 - carne", - "low_temp_cooking_steam": "G\u0103titul la abur la temperaturi sc\u0103zute", + "low_temp_cooking": "Gătire la temperatură scăzută", + "low_temp_cooking_fish": "Gătire la temperatură scăzută - Pește", + "low_temp_cooking_fish_steam": "Gătitul cu abur la temperatură scăzută - Pește", + "low_temp_cooking_meat": "Gătire la temperatură scăzută - Carne", + "low_temp_cooking_meat_steam": "Gătitul la abur la temperatură scăzută - carne", + "low_temp_cooking_steam": "Gătitul la abur la temperaturi scăzute", "meat": "Carne", - "meat_steam": "Carne g\u0103tit\u0103 la abur", + "meat_steam": "Carne gătită la abur", "multi_level": "Multi-Nivel", "paella": "Paella", - "pasta_and_bakery": "Paste \u0219i patiserie", + "pasta_and_bakery": "Paste și patiserie", "pizza": "Pizza", - "pyrolysis": "Piroliz\u0103", - "pyrolysis_plus": "Piroliz\u0103+", - "red_meat": "Carne ro\u0219ie", - "red_meat_steam": "Carne ro\u0219ie g\u0103tit\u0103 la abur", + "pyrolysis": "Piroliză", + "pyrolysis_plus": "Piroliză+", + "red_meat": "Carne roșie", + "red_meat_steam": "Carne roșie gătită la abur", "regenerate": "Regenerare", "soft_plus": "Soft+", "super_grill": "Super Grill", "tailor_bake": "Tailor bake", "tailor_bake_cata": "Tailor Bake", - "tailor_bake_desctiption": "Aceast\u0103 func\u021bie este ideal\u0103 pentru a men\u021bine preparatele moi la interior \u0219i crocante la exterior.\r\r\r\r\r\r\r\nAceast\u0103 func\u021bie reduce cantitatea de gr\u0103sime sau de ulei necesar\u0103 pentru o diet\u0103 s\u0103n\u0103toas\u0103.\r\r\r\r\r\r\r\nCombina\u021bia elementelor de \u00eenc\u0103lzire cu un ciclu pulsatil de aer garanteaz\u0103 un rezultate de coacere uniforme.", "tailor_bake_pyro": "Tailor Bake", "vegetables": "Legume", "vegetables_cata": "Legume", "vegetables_pyro": "Legume", "water_discharge": "Scurgerea apei", - "white_meat": "Carne alb\u0103", - "white_meat_steam": "Carne alb\u0103 g\u0103tit\u0103 la abur" + "white_meat": "Carne albă", + "white_meat_steam": "Carne albă gătită la abur" }, "name": "Program" }, "programs_td": { "state": { - "active_dry": "Uscare activ\u0103", + "active_dry": "Uscare activă", "allergy_care": "Anti-alergic", - "all_in_one": "Tot \u00een unu", + "all_in_one": "Tot în unu", "antiallergy": "Anti-alergic", "anti_odours": "Anti mirosuri", - "auto_care": "\u00cengrijire automat\u0103", + "auto_care": "Îngrijire automată", "baby": "Haine copii", "bed_quilt": "Pilote", - "care_30": "\u00cengrijire 30", - "care_45": "\u00cengrijire 45", - "care_59": "\u00cengrijire 59", + "care_30": "Îngrijire 30", + "care_45": "Îngrijire 45", + "care_59": "Îngrijire 59", "coloured": "Colorate", "daily_45_min": "ZILNIC 45'", "daily_perfect_59_min": "ZILNIC PERFECT 59'", - "darks_and_coloured": "\u021aes\u0103turi \u00eenchise & colorate", + "darks_and_coloured": "Țesături închise & colorate", "delicates": "Delicate", - "duvet": "P\u0103tur\u0103", + "duvet": "Pătură", "eco": "Bumbac Eco", "ecospeed_cottons": "Bumbac Ecospeed", "ecospeed_delicates": "Delicate Ecospeed", - "ecospeed_mixed": "\u021aes\u0103turi mixte Ecospeed", + "ecospeed_mixed": "Țesături mixte Ecospeed", "extra_hygiene": "EXTRA IGIENIZARE", "fitness": "Fitness", - "fresh_care": "\u00cengrijire proasp\u0103t\u0103", + "fresh_care": "Îngrijire proaspătă", "genius": "Genius", "hqd_baby_care": "Baby Care", "hqd_bath_towel": "Prosoape", "hqd_bed_sheets": "Cearceafuri", "hqd_bulky": "Articole voluminoase", - "hqd_casual": "Articole obi\u0219nuite", - "hqd_cold_wind_30": "V\u00e2nt rece 30 minute", - "hqd_cold_wind_timing": "V\u00e2nt rece ", + "hqd_casual": "Articole obișnuite", + "hqd_cold_wind_30": "Vânt rece 30 minute", + "hqd_cold_wind_timing": "Vânt rece ", "hqd_cotton": "Bumbac", "hqd_curtain": "Perdele", "hqd_delicate": "Delicate", "hqd_diaper": "Scutece", - "hqd_duvet": "Cuvertur\u0103", + "hqd_duvet": "Cuvertură", "hqd_feather": "Geci", "hqd_hot_wind_timing": "Aer cald", "hqd_hygienic": "Igienizare", @@ -406,21 +405,21 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Rapid 20", "hqd_quick_30": "Rapid 30", - "hqd_quick_dry": "Uscare rapid\u0103", + "hqd_quick_dry": "Uscare rapidă", "hqd_quilt": "Pilote", - "hqd_refresh": "Re\u00eemprosp\u0103tare", - "hqd_school_uniform": "Uniform\u0103 \u0219colar\u0103", - "hqd_shirt": "C\u0103m\u0103\u0219i", - "hqd_shoes": "\u00cenc\u0103l\u021b\u0103minte", - "hqd_silk": "M\u0103tase", + "hqd_refresh": "Reîmprospătare", + "hqd_school_uniform": "Uniformă școlară", + "hqd_shirt": "Cămăși", + "hqd_shoes": "Încălțăminte", + "hqd_silk": "Mătase", "hqd_sports": "Articole sportive", "hqd_synthetics": "Sintetice", "hqd_timer": "Cronometrat", "hqd_towel": "Prosoape", "hqd_underwear": "Lenjerie", - "hqd_warm_up": "\u00cenc\u0103lzire", - "hqd_wool": "L\u00e2n\u0103", - "hqd_working_suit": "\u00cembr\u0103c\u0103minte de lucru", + "hqd_warm_up": "Încălzire", + "hqd_wool": "Lână", + "hqd_working_suit": "Îmbrăcăminte de lucru", "hygiene": "Igienizare", "iot_checkup": "Verificare", "iot_dry_anti_mites": "Anti-acarieni", @@ -430,81 +429,81 @@ "iot_dry_bed_linen": "Lenjerie de pat", "iot_dry_bed_quilt": "Pilote", "iot_dry_cotton": "Bumbac", - "iot_dry_cuddly_toys": "Juc\u0103rii", + "iot_dry_cuddly_toys": "Jucării", "iot_dry_curtains": "Perdele", - "iot_dry_dehumidifier": "Dispozitiv pentru \u00eendep\u0103rtarea umidit\u0103\u021bii", + "iot_dry_dehumidifier": "Dispozitiv pentru îndepărtarea umidității", "iot_dry_delicates": "Delicate", - "iot_dry_delicate_tablecloths": "Fe\u021be de mas\u0103 delicate", + "iot_dry_delicate_tablecloths": "Fețe de masă delicate", "iot_dry_denim_jeans": "Denim - Blugi", "iot_dry_down_jacket": "Jacket", - "iot_dry_duvet": "P\u0103tur\u0103", - "iot_dry_easy_iron_cotton": "C\u0103lcare Super Easy", - "iot_dry_easy_iron_synthetics": "C\u0103lcare super u\u0219oar\u0103 a rufelor sintetice", + "iot_dry_duvet": "Pătură", + "iot_dry_easy_iron_cotton": "Călcare Super Easy", + "iot_dry_easy_iron_synthetics": "Călcare super ușoară a rufelor sintetice", "iot_dry_gym_fit": "Articole sportive - Fitness", "iot_dry_lingerie": "Lenjerie", "iot_dry_mixed": "Mixte", - "iot_dry_playsuits": "Haine de joac\u0103", + "iot_dry_playsuits": "Haine de joacă", "iot_dry_rapid_30": "Rapid 30", "iot_dry_rapid_59": "Rapid 59'.", - "iot_dry_refresh": "Re\u00eemprosp\u0103tare", - "iot_dry_regenerates_waterproof": "Rezistente la ap\u0103", - "iot_dry_relax_creases": "Reducere \u0219ifonare", - "iot_dry_shirts": "C\u0103m\u0103\u0219i", - "iot_dry_small_load": "\u00cenc\u0103rcare mic\u0103", + "iot_dry_refresh": "Reîmprospătare", + "iot_dry_regenerates_waterproof": "Rezistente la apă", + "iot_dry_relax_creases": "Reducere șifonare", + "iot_dry_shirts": "Cămăși", + "iot_dry_small_load": "Încărcare mică", "iot_dry_swimsuits_and_bikinis": "Costume de baie", "iot_dry_synthetics": "Sintetice", "iot_dry_synthetic_dry": "Uscare material sintetic", - "iot_dry_tablecloths": "Fe\u021be de mas\u0103", - "iot_dry_technical_fabrics": "\u021aes\u0103turi industriale", - "iot_dry_warm_embrace": "\u00cembr\u0103\u021bi\u0219are cald\u0103", + "iot_dry_tablecloths": "Fețe de masă", + "iot_dry_technical_fabrics": "Țesături industriale", + "iot_dry_warm_embrace": "Îmbrățișare caldă", "iot_dry_wool": "Woolmark", "jeans": "Jeans", "mix_and_dry": "Mix&Uscare", "pets": "Animale de companie", - "pre_iron": "Pre-C\u0103lcare", + "pre_iron": "Pre-Călcare", "rapid_30": "Rapid 30", "rapid_45": "Rapid 45 min", "rapid_59": "Rapid Perfect 59 Min", - "refresh": "Re\u00eemprosp\u0103tare", - "relax_creases": "Reducere \u0219ifonare", + "refresh": "Reîmprospătare", + "relax_creases": "Reducere șifonare", "saving_30_min": "ECO 30'", - "shirts": "C\u0103m\u0103\u0219i", - "shoes": "\u00cenc\u0103l\u021b\u0103minte", - "small_load": "\u00cenc\u0103rcare mic\u0103", - "soft_care": "\u00cengrijire bl\u00e2nd\u0103", + "shirts": "Cămăși", + "shoes": "Încălțăminte", + "small_load": "Încărcare mică", + "soft_care": "Îngrijire blândă", "sport_plus": "Haine sport", - "super_easy_iron_misti": "C\u0103lcare super u\u0219oar\u0103 a rufelor cu fibre mixte", - "super_easy_iron_xxl": "C\u0103lcare super u\u0219oar\u0103 a rufelor XXL", + "super_easy_iron_misti": "Călcare super ușoară a rufelor cu fibre mixte", + "super_easy_iron_xxl": "Călcare super ușoară a rufelor XXL", "super_fast_cottons": "Bumbac Super Rapid", "super_fast_delicates": "Delicate Super Rapid", "synthetics": "Sintetice", "total_care": "Total Care", - "trainers": "\u00cenc\u0103l\u021b\u0103minte sport", + "trainers": "Încălțăminte sport", "ultra_care": "Ultra Care", "waterproof_revitalize": "Revitalizare impermeabile", "whites": "Albe", - "wool": "Uscare l\u00e2n\u0103", + "wool": "Uscare lână", "woolmark": "Woolmark", - "xxl_load": "\u00cenc\u0103rcare XXL", + "xxl_load": "Încărcare XXL", "zoom_59": "Zoom 59" }, "name": "Program" }, "programs_wm": { "state": { - "20_degrees_coloured_cottons": "20\u00b0 Colorate \u0219i bumbac", - "20_degrees_new_energy_label": "20 \u00b0C", + "20_degrees_coloured_cottons": "20° Colorate și bumbac", + "20_degrees_new_energy_label": "20 °C", "active_steam": "Abur", - "active_wash": "Sp\u0103lare activ\u0103", - "active_wash_steam": "Sp\u0103lare activ\u0103", - "allergy_care": "\u00cengrijire antialergic\u0103", - "allergy_care_pro": "\u00cengrijire alergie pro", - "all_in_one_49": "Toate \u00een One 49'.", - "all_in_one_59": "Toate \u00een One 59'.", - "all_in_one_59_steam": "Sp\u0103lare activ\u0103 + abur", - "autocare": "Auto\u00eengrijire", - "autoclean": "Cur\u0103\u021barea tamburului", - "baby_60": "Haine bebelu\u0219i 60\u00b0C", + "active_wash": "Spălare activă", + "active_wash_steam": "Spălare activă", + "allergy_care": "Îngrijire antialergică", + "allergy_care_pro": "Îngrijire alergie pro", + "all_in_one_49": "Toate în One 49'.", + "all_in_one_59": "Toate în One 59'.", + "all_in_one_59_steam": "Spălare activă + abur", + "autocare": "Autoîngrijire", + "autoclean": "Curățarea tamburului", + "baby_60": "Haine bebeluși 60°C", "care_14": "Rapid Care 14'", "care_30": "Rapid Care 30'", "care_44": "Rapid Care 44'", @@ -512,245 +511,245 @@ "colour_59": "Colorate 59'", "colour_59_steam": "Colorate 59' + Abur", "cottons": "Bumbac", - "cottons_prewash": "Bumbac + Presp\u0103lare", + "cottons_prewash": "Bumbac + Prespălare", "cottons_steam": "Bumbac + Abur", "cotton_care_59": "Bumbac 59 Min", "delicate_59": "Delicate 59'", - "delicate_silk": "M\u0103tase delicat\u0103", - "delicate_silk_steam": "M\u0103tase delicat\u0103 + abur", + "delicate_silk": "Mătase delicată", + "delicate_silk_steam": "Mătase delicată + abur", "delicati_59": "Delicate 59'", "delicati_59_steam": "Delicate 59'", - "drain_spin": "Drenare +\u0219i stoarcere", - "easy_iron": "C\u0103lcare u\u0219oar\u0103", + "drain_spin": "Drenare +și stoarcere", + "easy_iron": "Călcare ușoară", "eco_40_60_new_energy_label": "Eco 40-60", - "extra_care": "\u00cengrijire Suplimentar\u0103", + "extra_care": "Îngrijire Suplimentară", "fitness": "Fitness Care", "fitness_care": "Fitness Care", - "fresh_care": "\u00cengrijire proasp\u0103t\u0103", - "fresh_care_steam": "\u00cengrijire proasp\u0103t\u0103 + abur", - "handwash_wool": "Sp\u0103lare manual\u0103 \u0219i l\u00e2n\u0103", + "fresh_care": "Îngrijire proaspătă", + "fresh_care_steam": "Îngrijire proaspătă + abur", + "handwash_wool": "Spălare manuală și lână", "high_dry": "Uscarea bumbacului", - "hqd_20_degrees": "Bumbac 20 \u2103", - "hqd_allergy": "\u00cengrijire antialergic\u0103", - "hqd_autoclean": "Cur\u0103\u021barea tamburului", - "hqd_babycare": "\u00cengrijirea bebelu\u0219ilor", + "hqd_20_degrees": "Bumbac 20 ℃", + "hqd_allergy": "Îngrijire antialergică", + "hqd_autoclean": "Curățarea tamburului", + "hqd_babycare": "Îngrijirea bebelușilor", "hqd_checkup": "Verificare", "hqd_cottons": "Bumbac", "hqd_delicate": "Delicate", "hqd_delicate_cradle": "Delicate", "hqd_dry": "Uscarea bumbacului", "hqd_dry_synthetics": "Uscarea fibrelor mixte", - "hqd_duvet": "P\u0103tur\u0103", + "hqd_duvet": "Pătură", "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_handwash_wool": "L\u00e2n\u0103", + "hqd_handwash_wool": "Lână", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Mixte", "hqd_quick_15": "Rapid 15'", - "hqd_quick_wash_57": "Sp\u0103lare rapid\u0103 57 min", - "hqd_rapid_wash_and_dry": "Sp\u0103lare \u0219i uscare", - "hqd_refresh": "Re\u00eemprosp\u0103tare", - "hqd_rinse": "Cl\u0103tire", - "hqd_shirts": "C\u0103m\u0103\u0219i", + "hqd_quick_wash_57": "Spălare rapidă 57 min", + "hqd_rapid_wash_and_dry": "Spălare și uscare", + "hqd_refresh": "Reîmprospătare", + "hqd_rinse": "Clătire", + "hqd_shirts": "Cămăși", "hqd_smart": "Smart A.I.", "hqd_spin": "Stoarcere", "hqd_sport": "Sport", - "hqd_super_fast": "Rapid 39\u2019", + "hqd_super_fast": "Rapid 39’", "hqd_synthetic_and_coloured": "Sintetice", "hygiene_59": "Igiena Plus 59'", - "hygiene_60": "Igien\u0103 60\u00b0", + "hygiene_60": "Igienă 60°", "hygiene_plus_59": "Igiena Plus 59'", "hygiene_plus_59_min": "Igiena Plus 59'", - "hygiene_pro_49_min": "Igien\u0103 Pro 49 min", + "hygiene_pro_49_min": "Igienă Pro 49 min", "hygiene_pro_steam": "Hygiene Pro + Abur", - "intensive_40": "Intensiv 40\u00b0C", - "intensive_40_steam": "Intensiv 40\u00b0C + Abur", + "intensive_40": "Intensiv 40°C", + "intensive_40_steam": "Intensiv 40°C + Abur", "iot_active_steam": "Abur", - "iot_active_wash_steam": "Sp\u0103lare activ\u0103", - "iot_allergy_care_pro": "\u00cengrijire alergie pro", - "iot_all_in_one_59_steam": "Sp\u0103lare activ\u0103 + abur", + "iot_active_wash_steam": "Spălare activă", + "iot_allergy_care_pro": "Îngrijire alergie pro", + "iot_all_in_one_59_steam": "Spălare activă + abur", "iot_checkup": "Verificare", "iot_colour_59_steam": "Colorate 59' + Abur", "iot_cottons_steam": "Bumbac + Abur", - "iot_delicate_silk_steam": "M\u0103tase delicat\u0103 + abur", + "iot_delicate_silk_steam": "Mătase delicată + abur", "iot_delicati_59_steam": "Delicate 59'", - "iot_dry_air_refresh": "Re\u00eemprosp\u0103tarea aerului", + "iot_dry_air_refresh": "Reîmprospătarea aerului", "iot_dry_anti_mites": "Anti-acarieni", - "iot_dry_baby": "Bebelu\u0219", + "iot_dry_baby": "Bebeluș", "iot_dry_backpacks": "Rucsaci", - "iot_dry_bathrobe": "Halate de baie \u0219i materiale poroase", + "iot_dry_bathrobe": "Halate de baie și materiale poroase", "iot_dry_bed_linen": "Lenjerie de pat", "iot_dry_cotton_dry": "Uscarea bumbacului", - "iot_dry_cuddly_toys": "Animale de plu\u0219 umplute", + "iot_dry_cuddly_toys": "Animale de pluș umplute", "iot_dry_curtains": "Perdele", - "iot_dry_dehumidifier": "Dispozitiv pentru \u00eendep\u0103rtarea umidit\u0103\u021bii", + "iot_dry_dehumidifier": "Dispozitiv pentru îndepărtarea umidității", "iot_dry_delicates_antiallergy": "Delicate - antialergic", - "iot_dry_delicate_tablecloths": "Fe\u021be de mas\u0103 delicate", + "iot_dry_delicate_tablecloths": "Fețe de masă delicate", "iot_dry_denim_jeans": "Denim - Blugi", - "iot_dry_easy_iron_cotton": "Anti\u0219ifonare - Bumbac", - "iot_dry_easy_iron_synthetics": "Anti\u0219ifonare - Sintetice", + "iot_dry_easy_iron_cotton": "Antișifonare - Bumbac", + "iot_dry_easy_iron_synthetics": "Antișifonare - Sintetice", "iot_dry_gym_fit": "Fitness - haine de fitness", - "iot_dry_lingerie": "Lenjerie intim\u0103", + "iot_dry_lingerie": "Lenjerie intimă", "iot_dry_mixed_dry": "Uscarea fibrelor mixte", "iot_dry_rapid_60_min_delicates": "Rapid 60'- Delicate", - "iot_dry_shirts": "C\u0103m\u0103\u0219i", + "iot_dry_shirts": "Cămăși", "iot_dry_swimsuits_and_bikinis": "Costume de baie", "iot_dry_synthetics": "Uscare material sintetic", "iot_dry_synthetic_dry": "Uscare material sintetic", - "iot_dry_tablecloths": "Fe\u021be de mas\u0103", + "iot_dry_tablecloths": "Fețe de masă", "iot_dry_technical_fabrics": "Materiale tehnice", - "iot_dry_warm_embrace": "Uscarea \u00een tambur", - "iot_dry_wool_dry": "Uscarea l\u00e2nii", - "iot_easy_iron": "C\u0103lcare u\u0219oar\u0103", - "iot_fresh_care_steam": "\u00cengrijire proasp\u0103t\u0103 + abur", + "iot_dry_warm_embrace": "Uscarea în tambur", + "iot_dry_wool_dry": "Uscarea lânii", + "iot_easy_iron": "Călcare ușoară", + "iot_fresh_care_steam": "Îngrijire proaspătă + abur", "iot_hygiene_pro_steam": "Hygiene Pro + Abur", - "iot_intensive_40_steam": "Intensiv 40\u00b0C + Abur", + "iot_intensive_40_steam": "Intensiv 40°C + Abur", "iot_mixed_steam": "Mixte + Abur", - "iot_mix_and_colour_59_steam": "Mixte \u0219i colorate 59' + abur", + "iot_mix_and_colour_59_steam": "Mixte și colorate 59' + abur", "iot_perfect_cotton_59_steam": "Bumbac Perfect 59'", "iot_rapid_a_class_60_steam": "Rapid Clasa A 60 + Abur", "iot_resistant_cotton_steam": "Bumbac + Abur", - "iot_shirts_steam": "C\u0103m\u0103\u0219i + Abur", + "iot_shirts_steam": "Cămăși + Abur", "iot_single_item_steam": "Un singur articol + abur", - "iot_smart_wash": "Sp\u0103lare inteligent\u0103", + "iot_smart_wash": "Spălare inteligentă", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Special 39' + abur", "iot_steam_hygiene_plus": "Hygiene Plus Steam ", - "iot_synthetic_and_coloured_steam": "Sintetice \u0219i colorate + abur", - "iot_wash_and_dry": "Sp\u0103lare \u0219i uscare", + "iot_synthetic_and_coloured_steam": "Sintetice și colorate + abur", + "iot_wash_and_dry": "Spălare și uscare", "iot_wash_anti_mites": "Anti-acarieni", "iot_wash_anti_odor": "Anti-miros", "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", "iot_wash_baby_sanitizer": "Igienizare", - "iot_wash_baby_sanitizer_steam": "Igien\u0103 bebelu\u0219 + Abur", + "iot_wash_baby_sanitizer_steam": "Igienă bebeluș + Abur", "iot_wash_backpacks": "Rucsaci", "iot_wash_backpacks_zelig": "Rucsaci", - "iot_wash_bathrobe": "Halate de baie \u0219i prosoape", + "iot_wash_bathrobe": "Halate de baie și prosoape", "iot_wash_bathrobe_steam": "Halat de baie + Abur", "iot_wash_bed_linen": "Lenjerie de pat", "iot_wash_bed_linen_steam": "Lenjerie de pat + Abur", "iot_wash_bed_linen_zelig": "Lenjerie de pat", - "iot_wash_big_single_load": "\u00cenc\u0103rcare unic\u0103 mare", - "iot_wash_bleaching": "\u00cen\u0103lbire", - "iot_wash_blood_stains": "Pete de s\u00e2nge", - "iot_wash_cashmere": "Ca\u0219mir", - "iot_wash_chocolate_stains": "Pete de ciocolat\u0103", - "iot_wash_cold_wash": "Sp\u0103lare rece", + "iot_wash_big_single_load": "Încărcare unică mare", + "iot_wash_bleaching": "Înălbire", + "iot_wash_blood_stains": "Pete de sânge", + "iot_wash_cashmere": "Cașmir", + "iot_wash_chocolate_stains": "Pete de ciocolată", + "iot_wash_cold_wash": "Spălare rece", "iot_wash_colored": "Colorate", "iot_wash_colored_anti_stain": "Eliminarea petelor de pe materiale colorate", "iot_wash_colored_delicate": "Colorate delicate", "iot_wash_coloured": "Culori", - "iot_wash_coloured_bed_linen": "Lenjerie de pat colorat\u0103", - "iot_wash_coloured_bed_linen_steam": "Lenjerie de pat colorat\u0103 + Abur", + "iot_wash_coloured_bed_linen": "Lenjerie de pat colorată", + "iot_wash_coloured_bed_linen_steam": "Lenjerie de pat colorată + Abur", "iot_wash_coloured_curtains": "Perdele colorate", - "iot_wash_coloured_shirts": "C\u0103m\u0103\u0219i colorate", - "iot_wash_coloured_shirts_steam": "C\u0103m\u0103\u0219i colorate + Abur", + "iot_wash_coloured_shirts": "Cămăși colorate", + "iot_wash_coloured_shirts_steam": "Cămăși colorate + Abur", "iot_wash_coloured_steam": "Culori + Abur", - "iot_wash_coloured_tableclothes": "Fe\u021be de masa colorate", - "iot_wash_coloured_tableclothes_steam": "Fe\u021be de mas\u0103 colorate + abur", + "iot_wash_coloured_tableclothes": "Fețe de masa colorate", + "iot_wash_coloured_tableclothes_steam": "Fețe de masă colorate + abur", "iot_wash_cotton": "Bumbac", "iot_wash_cotton_steam": "Bumbac + Abur", - "iot_wash_cuddly_toys": "Animale de plu\u0219 umplute", + "iot_wash_cuddly_toys": "Animale de pluș umplute", "iot_wash_curtains": "Perdele", "iot_wash_curtains_steam": "Perdele+Abur", "iot_wash_curtains_zelig": "Perdele", - "iot_wash_dark": "Haine cu culori \u00eenchise", - "iot_wash_darks_and_coloured_44": "\u00cenchise la culoare \u0219i colorate 44\u2019", - "iot_wash_darks_and_coloured_59": "\u00cenchise la culoare \u0219i colorate 59\u2019", - "iot_wash_darks_and_coloured_xl": "\u00cenchise la culoare \u0219i colorate XL", - "iot_wash_dark_steam": "Haine cu culori \u00eenchise + Abur", + "iot_wash_dark": "Haine cu culori închise", + "iot_wash_darks_and_coloured_44": "Închise la culoare și colorate 44’", + "iot_wash_darks_and_coloured_59": "Închise la culoare și colorate 59’", + "iot_wash_darks_and_coloured_xl": "Închise la culoare și colorate XL", + "iot_wash_dark_steam": "Haine cu culori închise + Abur", "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", "iot_wash_dash_cold_cycle": "Dash Cold Clean", "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", "iot_wash_delicate": "Delicate", "iot_wash_delicate_antiallergy": "Antialergic pentru haine delicate", - "iot_wash_delicate_antiallergy_steam": "Anti-alergenic pentru \u021bes\u0103turi delicate + Abur", + "iot_wash_delicate_antiallergy_steam": "Anti-alergenic pentru țesături delicate + Abur", "iot_wash_delicate_antiallergy_zelig": "Antialergic pentru haine delicate", "iot_wash_delicate_colors": "Colorate delicate", "iot_wash_delicate_colors_steam": "Culori + Abur", - "iot_wash_delicate_dark": "Culori \u00eenchise delicate", + "iot_wash_delicate_dark": "Culori închise delicate", "iot_wash_delicate_steam": "Delicate + Abur", - "iot_wash_delicate_tablecloths": "Fe\u021be de mas\u0103 delicate", - "iot_wash_delicate_tablecloths_steam": "Fe\u021be de mas\u0103 delicate + Abur", + "iot_wash_delicate_tablecloths": "Fețe de masă delicate", + "iot_wash_delicate_tablecloths_steam": "Fețe de masă delicate + Abur", "iot_wash_delicate_whites": "Albe delicate", "iot_wash_denim_jeans": "Denim - Blugi", "iot_wash_diving_suits": "Costume de baie", "iot_wash_diving_suits_zelig": "Costume de baie", "iot_wash_down_jackets": "Geci", "iot_wash_down_jackets_zelig": "Geci", - "iot_wash_duvet": "P\u0103tur\u0103", + "iot_wash_duvet": "Pătură", "iot_wash_fruit_stains": "Pete de fructe", "iot_wash_gym_fit": "Fitness - haine de fitness", - "iot_wash_handwash": "Sp\u0103lare manual\u0103", - "iot_wash_handwash_colored": "Sp\u0103lare manual\u0103 colorate", - "iot_wash_handwash_dark": "Sp\u0103lare manual\u0103 \u00eenchise la culoare", - "iot_wash_lingerie": "Lenjerie intim\u0103", - "iot_wash_masks_refresh": "Re\u00eemprosp\u0103tarea m\u0103\u0219tilor", - "iot_wash_masks_sanification": "Igienizarea m\u0103\u0219tilor", - "iot_wash_masks_sanification_steam": "Igienizarea m\u0103\u0219tilor + Abur", + "iot_wash_handwash": "Spălare manuală", + "iot_wash_handwash_colored": "Spălare manuală colorate", + "iot_wash_handwash_dark": "Spălare manuală închise la culoare", + "iot_wash_lingerie": "Lenjerie intimă", + "iot_wash_masks_refresh": "Reîmprospătarea măștilor", + "iot_wash_masks_sanification": "Igienizarea măștilor", + "iot_wash_masks_sanification_steam": "Igienizarea măștilor + Abur", "iot_wash_mats": "Covoare", "iot_wash_men_s_trousers": "Pantaloni", "iot_wash_mixed": "Mixte", "iot_wash_mixed_steam": "Mixte + Abur", - "iot_wash_mix_and_coloured_44": "Mixte \u0219i colorate 44\u2019", - "iot_wash_mix_and_coloured_59": "Mixte \u0219i colorate 59\u2019", - "iot_wash_mix_and_coloured_xl": "Mixte \u0219i colorate XL", + "iot_wash_mix_and_coloured_44": "Mixte și colorate 44’", + "iot_wash_mix_and_coloured_59": "Mixte și colorate 59’", + "iot_wash_mix_and_coloured_xl": "Mixte și colorate XL", "iot_wash_new_clothes": "Haine noi", "iot_wash_perfect_white": "Albul perfect", "iot_wash_perfect_white_steam": "Albul perfect + Abur", - "iot_wash_pets": "Accesorii pentru animale de cas\u0103", - "iot_wash_pets_hair_removal": "Elimin\u0103 p\u0103rul animalelor de companie", - "iot_wash_pets_odours_stains_removal": "\u00cendep\u0103rtarea mirosurilor animalelor de companie \u0219i a petelor", - "iot_wash_pets_steam": "Accesorii pentru animale de cas\u0103", - "iot_wash_playsuits": "Costume de joac\u0103", - "iot_wash_playsuits_steam": "Costume de joac\u0103 + Abur", - "iot_wash_quick_drum_cleaner": "Agent de cur\u0103\u021bare rapid\u0103 a tamburului", - "iot_wash_rapid_14": "Rapid 14\u2019", - "iot_wash_rapid_30": "Rapid 30\u2019", + "iot_wash_pets": "Accesorii pentru animale de casă", + "iot_wash_pets_hair_removal": "Elimină părul animalelor de companie", + "iot_wash_pets_odours_stains_removal": "Îndepărtarea mirosurilor animalelor de companie și a petelor", + "iot_wash_pets_steam": "Accesorii pentru animale de casă", + "iot_wash_playsuits": "Costume de joacă", + "iot_wash_playsuits_steam": "Costume de joacă + Abur", + "iot_wash_quick_drum_cleaner": "Agent de curățare rapidă a tamburului", + "iot_wash_rapid_14": "Rapid 14’", + "iot_wash_rapid_30": "Rapid 30’", "iot_wash_rapid_44": "Rapid 44'", "iot_wash_rapid_59": "Rapid 59'", "iot_wash_rapid_59_steam": "Rapid 59' + Steam", - "iot_wash_refresh_14_min": "Re\u00eemprosp\u0103tare 14'", + "iot_wash_refresh_14_min": "Reîmprospătare 14'", "iot_wash_resistant_colored": "Colorate rezistente", - "iot_wash_resistant_dark": "\u00cenchise la culoare rezistente", + "iot_wash_resistant_dark": "Închise la culoare rezistente", "iot_wash_resistant_whites": "Albe rezistente", - "iot_wash_rinse": "Cl\u0103tire", - "iot_wash_shirts": "C\u0103m\u0103\u0219i", - "iot_wash_shirts_steam": "C\u0103m\u0103\u0219i + Abur", - "iot_wash_silk": "M\u0103tase", + "iot_wash_rinse": "Clătire", + "iot_wash_shirts": "Cămăși", + "iot_wash_shirts_steam": "Cămăși + Abur", + "iot_wash_silk": "Mătase", "iot_wash_ski_suit": "Costume de schi", "iot_wash_ski_suit_zelig": "Costume de schi", "iot_wash_spin": "Stoarcere", "iot_wash_sport": "Sport", - "iot_wash_sport_anti_odor": "\u00cembr\u0103c\u0103minte sportiv\u0103 anti-miros", - "iot_wash_sport_anti_odor_zelig": "\u00cembr\u0103c\u0103minte sportiv\u0103 anti-miros", + "iot_wash_sport_anti_odor": "Îmbrăcăminte sportivă anti-miros", + "iot_wash_sport_anti_odor_zelig": "Îmbrăcăminte sportivă anti-miros", "iot_wash_stains_remover": "Eliminare de pete", "iot_wash_swimsuits_and_bikinis": "Costume de baie", "iot_wash_synthetic": "Sintetice", "iot_wash_synthetic_steam": "Sintetice + Abur", - "iot_wash_tablecloths": "Fe\u021be de mas\u0103", - "iot_wash_tablecloths_steam": "Fe\u021be de mas\u0103 + Abur", + "iot_wash_tablecloths": "Fețe de masă", + "iot_wash_tablecloths_steam": "Fețe de masă + Abur", "iot_wash_technical_fabrics": "Materiale tehnice", "iot_wash_technical_fabrics_zelig": "Materiale tehnice", "iot_wash_technical_jackets": "Haine tehnice", "iot_wash_technical_jackets_zelig": "Haine tehnice", - "iot_wash_trainers": "\u00cenc\u0103l\u021b\u0103minte sport", + "iot_wash_trainers": "Încălțăminte sport", "iot_wash_whites": "Albe", - "iot_wash_whites_44": "Albe 44\u2019", - "iot_wash_whites_59": "Albe 59\u2019", + "iot_wash_whites_44": "Albe 44’", + "iot_wash_whites_59": "Albe 59’", "iot_wash_whites_xl": "Albe XL", "iot_wash_wine_stains": "Pete de vin", - "iot_wash_wool": "L\u00e2n\u0103", + "iot_wash_wool": "Lână", "jeans": "Blugi", "jeans_60": "Jeans", "low_dry": "Uscarea fibrelor mixte", "mixed": "Mixte", - "mixed_and_colored_59": "Mixte \u0219i colorate 59\u2019", + "mixed_and_colored_59": "Mixte și colorate 59’", "mixed_steam": "Mixte + Abur", "mix_and_colour_59": "Mixte + Colorate 59'", - "mix_and_colour_59_steam": "Mixte \u0219i colorate 59' + abur", - "night_and_day": "Zi \u0219i noapte", + "mix_and_colour_59_steam": "Mixte și colorate 59' + abur", + "night_and_day": "Zi și noapte", "night_wash": "Ciclu peste noapte", "perfect_59": "Perfect 59'", "perfect_cotton_59": "Bumbac Perfect 59'", @@ -761,16 +760,16 @@ "rapid_44_min": "Rapid 44'", "rapid_a_class_60": "Rapid Clasa A 60", "rapid_a_class_60_steam": "Rapid Clasa A 60 + Abur", - "rapid_wash_and_dry_59_min": "Sp\u0103lare \u0219i uscare 59'.", + "rapid_wash_and_dry_59_min": "Spălare și uscare 59'.", "resistant_cotton": "Bumbac", "resistant_cotton_steam": "Bumbac + Abur", - "rinse": "Cl\u0103tire", - "shirts_steam": "C\u0103m\u0103\u0219i + Abur", + "rinse": "Clătire", + "shirts_steam": "Cămăși + Abur", "silent_night": "Ciclu peste noapte", "single_item": "Un singur articol", "single_item_steam": "Un singur articol + abur", - "smart_wash": "Sp\u0103lare inteligent\u0103", - "soft_care": "\u00cengrijire bl\u00e2nd\u0103", + "smart_wash": "Spălare inteligentă", + "soft_care": "Îngrijire blândă", "soft_care_steam": "Soft Care + Steam", "soft_care_steam_title": "Soft Care + Steam", "special_39": "Special 39'", @@ -787,30 +786,30 @@ "steam_care_pro_synthetic": "Steam Care Pro - sintetice", "steam_hygiene_plus": "Hygiene Plus Steam ", "synthetics": "Sintetice", - "synthetic_and_coloured": "Sintetice \u0219i colorate", - "synthetic_and_coloured_steam": "Sintetice \u0219i colorate + abur", + "synthetic_and_coloured": "Sintetice și colorate", + "synthetic_and_coloured_steam": "Sintetice și colorate + abur", "tailored_resistant_cotton": "Tailored Resistant Cotton", "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", - "total_care": "\u00cengrijire total\u0103", + "total_care": "Îngrijire totală", "tumbling": "Tambur", - "wool": "L\u00e2n\u0103", - "wool_and_delicates_49": "L\u00e2n\u0103/Delicate 49'", - "wool_dry": "Uscarea l\u00e2nii", - "wool_soft_care": "L\u00e2n\u0103 & \u00cengrijire Bl\u00e2nd\u0103" + "wool": "Lână", + "wool_and_delicates_49": "Lână/Delicate 49'", + "wool_dry": "Uscarea lânii", + "wool_soft_care": "Lână & Îngrijire Blândă" }, "name": "Program" }, "dry_levels": { "state": { - "0": "F\u0103r\u0103 uscare", - "1": "C\u0103lcare", - "2": "\u0218ifonier preg\u0103tit", - "3": "\u0218ifonier preg\u0103tit", - "4": "Uscare suplimentar\u0103", - "12": "C\u0103lcare", - "13": "\u0218ifonier preg\u0103tit", + "0": "Fără uscare", + "1": "Călcare", + "2": "Șifonier pregătit", + "3": "Șifonier pregătit", + "4": "Uscare suplimentară", + "12": "Călcare", + "13": "Șifonier pregătit", "14": "Gata de purtat", - "15": "Uscare suplimentar\u0103" + "15": "Uscare suplimentară" }, "name": "Nivel de uscare" }, @@ -818,7 +817,7 @@ "name": "Stoarcere" }, "temperature": { - "name": "Temperatur\u0103" + "name": "Temperatură" }, "dry_time": { "name": "Timp de uscare" @@ -826,7 +825,7 @@ }, "switch": { "anti_crease": { - "name": "Anti\u0219ifonare" + "name": "Antișifonare" }, "add_dish": { "name": "" @@ -835,66 +834,66 @@ "name": "Eco" }, "extra_dry": { - "name": "Uscare suplimentar\u0103" + "name": "Uscare suplimentară" }, "half_load": { - "name": "\u00cenc\u0103rcare pe jum\u0103tate" + "name": "Încărcare pe jumătate" }, "open_door": { - "name": "Deschide u\u0219a" + "name": "Deschide ușa" }, "three_in_one": { - "name": "3 \u00een 1" + "name": "3 în 1" }, "preheat": { - "name": "Pre\u00eenc\u0103lzire" + "name": "Preîncălzire" }, "dish_washer": { - "name": "Ma\u0219in\u0103 de sp\u0103lat vase" + "name": "Mașină de spălat vase" }, "tumble_dryer": { - "name": "Usc\u0103tor de rufe" + "name": "Uscător de rufe" }, "washing_machine": { - "name": "Ma\u0219in\u0103 de sp\u0103lat" + "name": "Mașină de spălat" }, "washer_dryer": { - "name": "Ma\u0219in\u0103 de sp\u0103lat cu usc\u0103tor \u00eencorporat" + "name": "Mașină de spălat cu uscător încorporat" }, "oven": { "name": "Cuptor" }, "prewash": { - "name": "Presp\u0103lare" + "name": "Prespălare" }, "pause": { - "name": "Pauz\u0103" + "name": "Pauză" }, "keep_fresh": { "name": "Keep Fresh" }, "delay_time": { - "name": "Pornire \u00eent\u00e2rziat\u0103" + "name": "Pornire întârziată" } }, "binary_sensor": { "door_lock": { - "name": "Blocaj u\u0219\u0103" + "name": "Blocaj ușă" }, "extra_rinse_1": { - "name": "+1 cl\u0103tire" + "name": "+1 clătire" }, "extra_rinse_2": { - "name": "+2 cl\u0103tiri" + "name": "+2 clătiri" }, "extra_rinse_3": { - "name": "+3 cl\u0103tiri" + "name": "+3 clătiri" }, "good_night": { - "name": "Noapte bun\u0103" + "name": "Noapte bună" }, "anti_crease": { - "name": "Anti\u0219ifonare" + "name": "Antișifonare" }, "aqua_plus": { "name": "Acquaplus" @@ -918,22 +917,22 @@ "name": "Program" }, "still_hot": { - "name": "\u00cenc\u0103 fierbinte" + "name": "Încă fierbinte" }, "pan_status": { "name": "Tigaie" }, "remote_control": { - "name": "Control la distan\u021b\u0103" + "name": "Control la distanță" }, "rinse_aid": { - "name": "Nivel de agent de cl\u0103tire" + "name": "Nivel de agent de clătire" }, "salt_level": { "name": "Nivel de sare" }, "door_open": { - "name": "U\u0219\u0103 deschis\u0103" + "name": "Ușă deschisă" }, "connection": { "name": "Conectarea aparatului" @@ -945,7 +944,7 @@ "name": "Pornit" }, "prewash": { - "name": "Presp\u0103lare" + "name": "Prespălare" } }, "number": { @@ -953,25 +952,25 @@ "name": "Administrarea puterii" }, "temperature": { - "name": "Temperatur\u0103" + "name": "Temperatură" }, "delay_time": { - "name": "Pornire \u00eent\u00e2rziat\u0103" + "name": "Pornire întârziată" }, "water_hard": { - "name": "Duritate ap\u0103" + "name": "Duritate apă" }, "program_duration": { - "name": "Durat\u0103 program" + "name": "Durată program" }, "target_temperature": { - "name": "Temperatur\u0103 vizat\u0103" + "name": "Temperatură vizată" }, "rinse_iterations": { - "name": "Num\u0103rul de cl\u0103tiri" + "name": "Numărul de clătiri" }, "wash_time": { - "name": "Timp de sp\u0103lare" + "name": "Timp de spălare" }, "dry_time": { "name": "Timp de uscare" @@ -979,7 +978,7 @@ }, "button": { "induction_hob": { - "name": "Plita cu induc\u021bie" + "name": "Plita cu inducție" } } } diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index d40f878..4f6f6bb 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -3,983 +3,982 @@ "sensor": { "washing_modes": { "state": { - "0": "\u0413\u043e\u0442\u043e\u0432\u043e", - "1": "\u0413\u043e\u0442\u043e\u0432\u043e", - "3": "\u041f\u0430\u0443\u0437\u0430", - "4": "\u0417\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043e", - "5": "\u0417\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043e", - "6": "\u041e\u0448\u0438\u0431\u043a\u0430", - "7": "\u0413\u043e\u0442\u043e\u0432\u043e" + "0": "Готово", + "1": "Готово", + "3": "Пауза", + "4": "Запланировано", + "5": "Запланировано", + "6": "Ошибка", + "7": "Готово" } }, "program_phases_wm": { "state": { - "0": "\u0413\u043e\u0442\u043e\u0432\u043e", - "1": "\u0421\u0442\u0438\u0440\u043a\u0430", - "2": "\u0421\u0442\u0438\u0440\u043a\u0430", - "3": "\u041e\u0442\u0436\u0438\u043c", - "4": "\u041f\u043e\u043b\u043e\u0441\u043a\u0430\u043d\u0438\u0435", - "5": "\u041f\u043e\u043b\u043e\u0441\u043a\u0430\u043d\u0438\u0435", - "6": "\u041f\u043e\u043b\u043e\u0441\u043a\u0430\u043d\u0438\u0435", - "7": "\u0421\u0443\u0448\u043a\u0430", - "9": "\u041f\u0430\u0440", - "10": "\u0413\u043e\u0442\u043e\u0432\u043e", - "11": "\u041e\u0442\u0436\u0438\u043c", - "12": "\u0412\u0437\u0432\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435 ", - "13": "\u0412\u0437\u0432\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435 ", - "14": "\u0421\u0442\u0438\u0440\u043a\u0430", - "15": "\u0421\u0442\u0438\u0440\u043a\u0430", - "16": "\u0421\u0442\u0438\u0440\u043a\u0430", - "17": "\u041f\u043e\u043b\u043e\u0441\u043a\u0430\u043d\u0438\u0435", - "18": "\u041f\u043e\u043b\u043e\u0441\u043a\u0430\u043d\u0438\u0435", - "19": "\u0417\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043e", - "20": "\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u0432\u0435\u0436\u0435\u0441\u0442\u0438", - "24": "\u041e\u0441\u0432\u0435\u0436\u0438\u0442\u044c", - "25": "\u0421\u0442\u0438\u0440\u043a\u0430", - "26": "\u041d\u0430\u0433\u0440\u0435\u0432", - "27": "\u0421\u0442\u0438\u0440\u043a\u0430" + "0": "Готово", + "1": "Стирка", + "2": "Стирка", + "3": "Отжим", + "4": "Полоскание", + "5": "Полоскание", + "6": "Полоскание", + "7": "Сушка", + "9": "Пар", + "10": "Готово", + "11": "Отжим", + "12": "Взвешивание ", + "13": "Взвешивание ", + "14": "Стирка", + "15": "Стирка", + "16": "Стирка", + "17": "Полоскание", + "18": "Полоскание", + "19": "Запланировано", + "20": "Сохранение свежести", + "24": "Освежить", + "25": "Стирка", + "26": "Нагрев", + "27": "Стирка" }, - "name": "\u0424\u0430\u0437\u0430" + "name": "Фаза" }, "program_phases_td": { "state": { - "0": "\u0413\u043e\u0442\u043e\u0432\u043e", - "1": "\u0421\u0443\u0448\u043a\u0430", - "2": "\u0421\u0443\u0448\u043a\u0430", - "3": "\u041e\u0445\u043b\u0430\u0436\u0434\u0435\u043d\u0438\u0435", - "13": "\u041e\u0445\u043b\u0430\u0436\u0434\u0435\u043d\u0438\u0435", - "14": "\u0421\u0443\u0448\u043a\u0430", - "15": "\u0421\u0443\u0448\u043a\u0430", - "16": "\u041e\u0445\u043b\u0430\u0436\u0434\u0435\u043d\u0438\u0435", - "18": "Keep Fresh (\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u0432\u0435\u0436\u0435\u0441\u0442\u0438)", - "19": "\u0421\u0443\u0448\u043a\u0430", - "20": "\u0421\u0443\u0448\u043a\u0430" + "0": "Готово", + "1": "Сушка", + "2": "Сушка", + "3": "Охлаждение", + "13": "Охлаждение", + "14": "Сушка", + "15": "Сушка", + "16": "Охлаждение", + "18": "Keep Fresh (Сохранение свежести)", + "19": "Сушка", + "20": "Сушка" }, - "name": "\u0424\u0430\u0437\u0430" + "name": "Фаза" }, "program_phases_dw": { "state": { - "0": "\u0413\u043e\u0442\u043e\u0432\u043e", - "1": "\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043c\u043e\u0439\u043a\u0430", - "2": "\u0421\u0442\u0438\u0440\u043a\u0430", - "3": "\u041f\u043e\u043b\u043e\u0441\u043a\u0430\u043d\u0438\u0435", - "4": "\u0421\u0443\u0448\u043a\u0430", - "5": "\u0413\u043e\u0442\u043e\u0432\u043e", + "0": "Готово", + "1": "Предварительная мойка", + "2": "Стирка", + "3": "Полоскание", + "4": "Сушка", + "5": "Готово", "6": "Hot rinse" }, - "name": "\u0424\u0430\u0437\u0430" + "name": "Фаза" }, "dry_levels": { "state": { - "0": "\u0411\u0435\u0437 \u0441\u0443\u0448\u043a\u0438", - "1": "\u041f\u043e\u0434 \u0443\u0442\u044e\u0433", - "2": "\u0412 \u0448\u043a\u0430\u0444", - "3": "\u0413\u043e\u0442\u043e\u0432\u043e \u0432 \u0448\u043a\u0430\u0444", - "4": "\u042d\u043a\u0441\u0442\u0440\u0430 \u0441\u0443\u0448\u043a\u0430", - "12": "\u041f\u043e\u0434 \u0443\u0442\u044e\u0433", - "13": "\u0413\u043e\u0442\u043e\u0432\u043e \u0432 \u0448\u043a\u0430\u0444", - "14": "\u0413\u043e\u0442\u043e\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0434\u0435\u0432\u0430\u043d\u0438\u044f", - "15": "\u042d\u043a\u0441\u0442\u0440\u0430 \u0441\u0443\u0448\u043a\u0430" + "0": "Без сушки", + "1": "Под утюг", + "2": "В шкаф", + "3": "Готово в шкаф", + "4": "Экстра сушка", + "12": "Под утюг", + "13": "Готово в шкаф", + "14": "Готово для надевания", + "15": "Экстра сушка" }, - "name": "\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u0441\u0443\u0445\u043e\u0441\u0442\u0438" + "name": "Уровень сухости" }, "anti_crease": { - "name": "\u041f\u0440\u043e\u0442\u0438\u0432\u043e\u0441\u043c\u0438\u043d\u0430\u043d\u0438\u0435" + "name": "Противосминание" }, "power": { - "name": "\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438" + "name": "Уровень мощности" }, "remaining_time": { - "name": "\u041e\u0441\u0442\u0430\u0432\u0448\u0435\u0435\u0441\u044f \u0432\u0440\u0435\u043c\u044f" + "name": "Оставшееся время" }, "temperature": { - "name": "\u0422\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430" + "name": "Температура" }, "water_efficiency": { - "name": "\u042d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0441\u0445\u043e\u0434\u0430 \u0432\u043e\u0434\u044b" + "name": "Эффективность расхода воды" }, "water_saving": { - "name": "\u042d\u043a\u043e\u043d\u043e\u043c\u0438\u044f \u0432\u043e\u0434\u044b" + "name": "Экономия воды" }, "duration": { - "name": "\u0414\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c" + "name": "Длительность" }, "target_temperature": { - "name": "\u0417\u0430\u0434\u0430\u043d\u043d\u0430\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430" + "name": "Заданная температура" }, "spin_speed": { - "name": "\u041e\u0442\u0436\u0438\u043c" + "name": "Отжим" }, "steam_leve": { - "name": "\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u043f\u0430\u0440\u0430" + "name": "Уровень пара" }, "dirt_level": { - "name": "\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u0437\u0430\u0433\u0440\u044f\u0437\u043d\u0435\u043d\u0438\u044f" + "name": "Уровень загрязнения" }, "delay_time": { - "name": "\u041e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u043f\u0443\u0441\u043a" + "name": "Отложенный пуск" }, "dry_time": { - "name": "\u0412\u0440\u0435\u043c\u044f \u0441\u0443\u0448\u043a\u0438" + "name": "Время сушки" }, "suggested_load": { - "name": "\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430" + "name": "Допустимая загрузка" }, "energy_label": { - "name": "\u042d\u043d\u0435\u0440\u0433\u043e\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c" + "name": "Энергоэффективность" }, "det_dust": { - "name": "\u0421\u0442\u0438\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u043e\u0448\u043e\u043a" + "name": "Стиральный порошок" }, "det_liquid": { - "name": "\u0416\u0438\u0434\u043a\u043e\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e" + "name": "Жидкое средство" }, "errors": { - "name": "\u041e\u0448\u0438\u0431\u043a\u0430" + "name": "Ошибка" }, "programs": { - "name": "\u0422\u0435\u043a\u0443\u0449\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430" + "name": "Текущая программа" }, "cycles_total": { - "name": "\u0426\u0438\u043a\u043b\u044b \u0418\u0442\u043e\u0433\u043e" + "name": "Циклы Итого" }, "energy_total": { - "name": "\u041f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u044d\u043d\u0435\u0440\u0433\u0438\u0438 \u0418\u0442\u043e\u0433\u043e" + "name": "Потребление энергии Итого" }, "water_total": { - "name": "\u042d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0441\u0445\u043e\u0434\u0430 \u0432\u043e\u0434\u044b \u0418\u0442\u043e\u0433\u043e" + "name": "Эффективность расхода воды Итого" }, "energy_current": { - "name": "\u041f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u044d\u043d\u0435\u0440\u0433\u0438\u0438 \u0422\u0435\u043a\u0443\u0449\u0438\u0439" + "name": "Потребление энергии Текущий" }, "water_current": { - "name": "\u042d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0441\u0445\u043e\u0434\u0430 \u0432\u043e\u0434\u044b \u0422\u0435\u043a\u0443\u0449\u0438\u0439" + "name": "Эффективность расхода воды Текущий" } }, "select": { "programs_dw": { "state": { - "59_min": "\u0411\u044bc\u0442\u0440\u0430\u044f \u041c\u043e\u0439k\u0430 59'", + "59_min": "Быcтрая Мойkа 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", "auto_plus": "AutoPlus", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "\u0430\u0432\u0442\u043e \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f 50 - 60\u00b0C", - "auto_universal_plus": "\u0430\u0432\u0442\u043e \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043b\u044e\u0441 65 - 75\u00b0C", - "auto_universal_plus_soil": "\u0430\u0432\u0442\u043e \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043b\u044e\u0441 65 - 75\u00b0C", - "auto_universal_soil": "\u0430\u0432\u0442\u043e \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f 50 - 60\u00b0C", + "auto_universal": "авто универсальная 50 - 60°C", + "auto_universal_plus": "авто универсальная плюс 65 - 75°C", + "auto_universal_plus_soil": "авто универсальная плюс 65 - 75°C", + "auto_universal_soil": "авто универсальная 50 - 60°C", "auto_wash": "Auto Wash", "auto_wash_soil": "Auto Wash", - "classe_a_59": "\u0430 \u043a\u043b\u0430\u0441\u0441 \u0437\u0430 1 \u0447\u0430\u0441 65\u00b0C", - "delicate": "\u0434\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u0430\u044f 45\u00b0C", - "dishwasher_care": "\u0426\u0438\u043a\u043b \u043e\u0447\u0438\u0441\u0442\u043a\u0438 \u043e\u0442 \u043d\u0430\u043a\u0438\u043f\u0438", - "eco": "\u042d\u043a\u043e", - "eco_asynch": "\u044d\u043a\u043e 45\u00b0C", - "eco_bldc": "\u044d\u043a\u043e 45\u00b0C", - "eco_synch": "\u044d\u043a\u043e 45\u00b0C", + "classe_a_59": "а класс за 1 час 65°C", + "delicate": "деликатная 45°C", + "dishwasher_care": "Цикл очистки от накипи", + "eco": "Эко", + "eco_asynch": "эко 45°C", + "eco_bldc": "эко 45°C", + "eco_synch": "эко 45°C", "gentle_wash": "Gentle wash", - "glass": "\u0421\u0442\u0435\u043a\u043b\u043e", - "glassware": "\u0441\u0442\u0435\u043a\u043b\u043e 45\u00b0C", + "glass": "Стекло", + "glassware": "стекло 45°C", "glass_care": "Glass Care", - "hygiene": "\u0413\u0438\u0433\u0438\u0435\u043d\u0430", - "hygiene_plus": "\u0433\u0438\u0433\u0438\u0435\u043d\u0430+ 75\u00b0C", - "intensive": "\u0418\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u0430\u044f 40", - "intensive_rapid": "\u0438\u043d\u0442\u0435\u043dc\u0438\u0432\u043d\u0430\u044f \u0431\u044bc\u0442\u0440\u0430\u044f", + "hygiene": "Гигиена", + "hygiene_plus": "гигиена+ 75°C", + "intensive": "Интенсивная 40", + "intensive_rapid": "интенcивная быcтрая", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "\u0430\u0432\u0442\u043e \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f 50 - 60\u00b0C", + "iot_auto_universal_soil": "авто универсальная 50 - 60°C", "iot_auto_wash_soil": "Auto Wash", - "iot_baby_care": "\u0414\u0435\u0442\u0441\u043a\u0430\u044f \u043e\u0434\u0435\u0436\u0434\u0430", - "iot_breakfast": "\u0417\u0430\u0432\u0442\u0440\u0430\u043a", - "iot_checkup": "\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430", - "iot_china_crystals": "\u041a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u0439 \u0445\u0440\u0443\u0441\u0442\u0430\u043b\u044c", - "iot_classe_a_59": "\u0411\u044bc\u0442\u0440\u0430\u044f \u041c\u043e\u0439k\u0430 59'", - "iot_cocktail_glasses": "\u0411\u043e\u043a\u0430\u043b\u044b \u0434\u043b\u044f \u043a\u043e\u043a\u0442\u0435\u0439\u043b\u0435\u0439", - "iot_cocktail_glasses_soil": "\u0411\u043e\u043a\u0430\u043b\u044b \u0434\u043b\u044f \u043a\u043e\u043a\u0442\u0435\u0439\u043b\u0435\u0439", - "iot_daily_care": "\u0415\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u044b\u0439 \u0443\u0445\u043e\u0434", - "iot_daily_care_soil": "\u0415\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u044b\u0439 \u0443\u0445\u043e\u0434", - "iot_delicate": "\u0434\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u0430\u044f 45\u00b0C", - "iot_dinner_for_two": "\u0423\u0436\u0438\u043d \u0434\u043b\u044f \u0434\u0432\u043e\u0438\u0445", - "iot_dinner_for_two_soil": "\u0423\u0436\u0438\u043d \u0434\u043b\u044f \u0434\u0432\u043e\u0438\u0445", + "iot_baby_care": "Детская одежда", + "iot_breakfast": "Завтрак", + "iot_checkup": "Проверка", + "iot_china_crystals": "Китайский хрусталь", + "iot_classe_a_59": "Быcтрая Мойkа 59'", + "iot_cocktail_glasses": "Бокалы для коктейлей", + "iot_cocktail_glasses_soil": "Бокалы для коктейлей", + "iot_daily_care": "Ежедневный уход", + "iot_daily_care_soil": "Ежедневный уход", + "iot_delicate": "деликатная 45°C", + "iot_dinner_for_two": "Ужин для двоих", + "iot_dinner_for_two_soil": "Ужин для двоих", "iot_dreft_quick_cycle": "Dreft Quick", - "iot_eco_asynch": "\u044d\u043a\u043e 45\u00b0C", - "iot_eco_bldc": "\u044d\u043a\u043e 45\u00b0C", - "iot_eco_synch": "\u044d\u043a\u043e 45\u00b0C", - "iot_extra_hygiene": "\u0426\u0438\u043a\u043b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0430\u0440\u043e\u043c", + "iot_eco_asynch": "эко 45°C", + "iot_eco_bldc": "эко 45°C", + "iot_eco_synch": "эко 45°C", + "iot_extra_hygiene": "Цикл обработки паром", "iot_fairy_quick_cycle": "Fairy Quick", - "iot_happy_hour": "\u0421\u0447\u0430\u0441\u0442\u043b\u0438\u0432\u044b\u0439 \u0447\u0430\u0441", + "iot_happy_hour": "Счастливый час", "iot_jar_quick_cycle": "Jar Quick", - "iot_party": "\u0412\u0435\u0447\u0435\u0440\u0438\u043d\u043a\u0430", - "iot_party_soil": "\u0412\u0435\u0447\u0435\u0440\u0438\u043d\u043a\u0430", - "iot_pizza_menu": "\u041c\u0435\u043d\u044e \u043f\u0438\u0446\u0446\u0430", - "iot_pizza_menu_soil": "\u041c\u0435\u043d\u044e \u043f\u0438\u0446\u0446\u0430", - "iot_plastic_tupperware": "\u041f\u043b\u0430\u0441\u0442\u043c\u0430\u0441\u0441\u043e\u0432\u044b\u0435 \u043b\u043e\u0442\u043a\u0438 \u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b", - "iot_porcelain": "\u0424\u0430\u0440\u0444\u043e\u0440", - "iot_power_mix_wash": "\u0418\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u043e\u0435 \u043c\u044b\u0442\u044c\u0435 \u0441\u043c\u0435\u0448\u0430\u043d\u043d\u043e\u0439 \u043f\u043e\u0441\u0443\u0434\u044b", - "iot_power_mix_wash_soil": "\u0418\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u043e\u0435 \u043c\u044b\u0442\u044c\u0435 \u0441\u043c\u0435\u0448\u0430\u043d\u043d\u043e\u0439 \u043f\u043e\u0441\u0443\u0434\u044b", - "iot_prewash": "\u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043c\u043e\u0439\u043a\u0430", - "iot_pyrex_and_glassware": "\u0416\u0430\u0440\u043e\u0441\u0442\u043e\u0439\u043a\u0430\u044f \u0438 \u0441\u0442\u0435\u043a\u043b\u044f\u043d\u043d\u0430\u044f \u043f\u043e\u0441\u0443\u0434\u0430", - "iot_rapid_29": "\u0431\u044b\u0441\u0442\u0440\u0430\u044f 29'", - "iot_rapid_39": "\u0431\u044b\u0441\u0442\u0440\u0430\u044f 39' 60\u00b0C", - "iot_single": "\u041e\u0434\u0438\u043d\u043e\u043a\u0438\u0435", - "iot_steam": "\u043f\u0430\u0440 75\u00b0C", + "iot_party": "Вечеринка", + "iot_party_soil": "Вечеринка", + "iot_pizza_menu": "Меню пицца", + "iot_pizza_menu_soil": "Меню пицца", + "iot_plastic_tupperware": "Пластмассовые лотки и контейнеры", + "iot_porcelain": "Фарфор", + "iot_power_mix_wash": "Интенсивное мытье смешанной посуды", + "iot_power_mix_wash_soil": "Интенсивное мытье смешанной посуды", + "iot_prewash": "предварительная мойка", + "iot_pyrex_and_glassware": "Жаростойкая и стеклянная посуда", + "iot_rapid_29": "быстрая 29'", + "iot_rapid_39": "быстрая 39' 60°C", + "iot_single": "Одинокие", + "iot_steam": "пар 75°C", "iot_super_flash": "Super Flash", - "iot_super_wash": "\u0421\u0443\u043f\u0435\u0440\u043c\u043e\u0439\u043a\u0430", + "iot_super_wash": "Супермойка", "iot_turbopower": "TurboPower", - "iot_universal": "\u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f 60\u00b0C", - "iot_wok_grids_maxi_pans": "\u0411\u043e\u043b\u044c\u0448\u0438\u0435 \u0441\u043a\u043e\u0432\u043e\u0440\u043e\u0434\u043a\u0438 \u0438 \u0440\u0435\u0448\u0435\u0442\u043a\u0438", - "iot_wok_grids_maxi_pans_soil": "\u0411\u043e\u043b\u044c\u0448\u0438\u0435 \u0441\u043a\u043e\u0432\u043e\u0440\u043e\u0434\u043a\u0438 \u0438 \u0440\u0435\u0448\u0435\u0442\u043a\u0438", + "iot_universal": "универсальная 60°C", + "iot_wok_grids_maxi_pans": "Большие сковородки и решетки", + "iot_wok_grids_maxi_pans_soil": "Большие сковородки и решетки", "iot_yes_quick_cycle": "Yes Quick", - "night": "\u0443\u043b\u044c\u0442\u0440\u0430 \u0442\u0438\u0445\u0430\u044f 55\u00b0\u0441", - "prewash": "\u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043c\u043e\u0439\u043a\u0430", - "rapid_20": "\u0411\u044bc\u0442\u0440\u0430\u044f \u041c\u043e\u0439k\u0430 20'", - "rapid_24": "\u0431\u044b\u0441\u0442\u0440\u0430\u044f 24'", - "rapid_29": "\u0431\u044b\u0441\u0442\u0440\u0430\u044f 29' 50\u00b0C", + "night": "ультра тихая 55°с", + "prewash": "предварительная мойка", + "rapid_20": "Быcтрая Мойkа 20'", + "rapid_24": "быстрая 24'", + "rapid_29": "быстрая 29' 50°C", "rapid_35": "Wash&Dry 35'", - "rapid_39": "\u0431\u044b\u0441\u0442\u0440\u0430\u044f 39' 60\u00b0C", - "rapid_49": "\u0411\u044bc\u0442\u0440\u0430\u044f \u041c\u043e\u0439k\u0430 49'", - "rapid_59": "\u0411\u044bc\u0442\u0440\u0430\u044f \u041c\u043e\u0439k\u0430 59'", - "sanitising": "\u0413\u0438\u0433\u0438\u0435\u043d\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0438\u0440\u043a\u0430", + "rapid_39": "быстрая 39' 60°C", + "rapid_49": "Быcтрая Мойkа 49'", + "rapid_59": "Быcтрая Мойkа 59'", + "sanitising": "Гигиеническая стирка", "silence": "Silence", - "silent": "\u041d\u043e\u0447\u044c", + "silent": "Ночь", "silent_care": "Silent Care", "smart_ai": "Smart AI", - "special": "\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435", - "special_pw_prz": "\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435", - "steam": "\u043f\u0430\u0440 75\u00b0C", - "steam_plus": "\u041f\u0430\u0440 \u043f\u043b\u044e\u0441 75\u00b0C", - "total_care": "\u043e\u0431\u0449\u0438\u0439 \u0443\u0445\u043e\u0434 50\u00b0C", - "ultra_silence": "\u0443\u043b\u044c\u0442\u0440\u0430 \u0442\u0438\u0445\u0430\u044f 55\u00b0\u0441", - "ultra_silent": "\u0443\u043b\u044c\u0442\u0440\u0430 \u0442\u0438\u0445\u0430\u044f 55\u00b0\u0441", - "universal": "\u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f 60\u00b0C", - "universal_plus": "\u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043b\u044e\u0441 70\u00b0C", + "special": "специальные", + "special_pw_prz": "специальные", + "steam": "пар 75°C", + "steam_plus": "Пар плюс 75°C", + "total_care": "общий уход 50°C", + "ultra_silence": "ультра тихая 55°с", + "ultra_silent": "ультра тихая 55°с", + "universal": "универсальная 60°C", + "universal_plus": "универсальная плюс 70°C", "zoom_39": "Zoom 39 min" }, - "name": "\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430" + "name": "Программа" }, "programs_ih": { "state": { - "iot_special_ash_brown": "\u041f\u043e\u0434\u0440\u0443\u043c\u044f\u043d\u0435\u043d\u043d\u044b\u0439", - "iot_special_beef_fillet": "\u0424\u0438\u043b\u0435 \u0433\u043e\u0432\u044f\u0434\u0438\u043d\u044b", - "iot_special_beef_veal_stew": "\u0422\u0443\u0448\u0435\u043d\u0430\u044f \u0433\u043e\u0432\u044f\u0434\u0438\u043d\u0430 \u0438 \u0442\u0435\u043b\u044f\u0442\u0438\u043d\u0430", - "iot_special_boiled_rice": "\u0420\u0438\u0441 \u043e\u0442\u0432\u0430\u0440\u043d\u043e\u0439", - "iot_special_chicken_breast": "\u041a\u0443\u0440\u0438\u043d\u0430\u044f \u0433\u0440\u0443\u0434\u043a\u0430", - "iot_special_chicken_legs": "\u041a\u0443\u0440\u0438\u043d\u044b\u0435 \u043d\u043e\u0436\u043a\u0438", - "iot_special_chocolate_pudding": "\u0428\u043e\u043a\u043e\u043b\u0430\u0434\u043d\u044b\u0439 \u043f\u0443\u0434\u0438\u043d\u0433", - "iot_special_entrecote": "\u0410\u043d\u0442\u0440\u0435\u043a\u043e\u0442", - "iot_special_fresh_tuna": "\u0421\u0432\u0435\u0436\u0438\u0439 \u0442\u0443\u043d\u0435\u0446", - "iot_special_grilled_vegetables": "\u041e\u0432\u043e\u0449\u0438 \u043d\u0430 \u0433\u0440\u0438\u043b\u0435", - "iot_special_lamb_cutlet": "\u041a\u0430\u0440\u0435 \u044f\u0433\u043d\u0435\u043d\u043a\u0430", - "iot_special_meatballs": "\u041c\u0438\u0442\u0431\u043e\u043b\u044b", - "iot_special_minestrone": "\u041c\u0438\u043d\u0435\u0441\u0442\u0440\u043e\u043d\u0435", - "iot_special_mussels": "\u041c\u0438\u0434\u0438\u0438", - "iot_special_omelette": "\u041e\u043c\u043b\u0435\u0442", - "iot_special_pancakes": "\u041e\u043b\u0430\u0434\u044c\u0438", - "iot_special_paris_style_peas": "\u0413\u043e\u0440\u043e\u0448\u0435\u043a \u043f\u043e-\u043f\u0430\u0440\u0438\u0436\u0441\u043a\u0438", - "iot_special_poached_eggs": "\u042f\u0439\u0446\u0430-\u043f\u0430\u0448\u043e\u0442", - "iot_special_pork_fillet": "\u0421\u0432\u0438\u043d\u043e\u0435 \u0444\u0438\u043b\u0435", - "iot_special_pork_ribs": "\u0421\u0432\u0438\u043d\u044b\u0435 \u0440\u0435\u0431\u0440\u0430", - "iot_special_prawns": "\u041a\u0440\u0435\u0432\u0435\u0442\u043a\u0438", - "iot_special_quinoa": "\u041a\u0438\u043d\u043e\u0430", - "iot_special_ratatouille": "\u0420\u0430\u0442\u0430\u0442\u0443\u0439", - "iot_special_salmon_fillet": "\u0424\u0438\u043b\u0435 \u043b\u043e\u0441\u043e\u0441\u044f", - "iot_special_saute_potatoes": "\u041a\u0430\u0440\u0442\u043e\u0444\u0435\u043b\u044c \u0436\u0430\u0440\u0435\u043d\u044b\u0439", - "iot_special_scallops": "\u0413\u0440\u0435\u0431\u0435\u0448\u043a\u0438", - "iot_special_scrambled_eggs": "\u042f\u0438\u0447\u043d\u0438\u0446\u0430-\u0431\u043e\u043b\u0442\u0443\u043d\u044c\u044f", - "iot_special_spelt": "\u0421\u043f\u0435\u043b\u044c\u0442\u0430", - "iot_special_veggy_noodles": "\u0412\u0435\u0433\u0435\u0442\u0430\u0440\u0438\u0430\u043d\u0441\u043a\u0430\u044f \u043b\u0430\u043f\u0448\u0430", - "iot_special_white_fish_fillet": "\u0424\u0438\u043b\u0435 \u0431\u0435\u043b\u043e\u0439 \u0440\u044b\u0431\u044b", - "iot_standard_boiling": "\u041a\u0438\u043f\u044f\u0447\u0435\u043d\u0438\u0435", - "iot_standard_frying": "\u0416\u0430\u0440\u043a\u0430", - "iot_standard_keep_warm": "\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0431\u043b\u044e\u0434 \u0432 \u0442\u0435\u043f\u043b\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438", - "iot_standard_melting": "\u041f\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435", - "iot_standard_simmering": "\u041f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e\u043c \u043e\u0433\u043d\u0435" + "iot_special_ash_brown": "Подрумяненный", + "iot_special_beef_fillet": "Филе говядины", + "iot_special_beef_veal_stew": "Тушеная говядина и телятина", + "iot_special_boiled_rice": "Рис отварной", + "iot_special_chicken_breast": "Куриная грудка", + "iot_special_chicken_legs": "Куриные ножки", + "iot_special_chocolate_pudding": "Шоколадный пудинг", + "iot_special_entrecote": "Антрекот", + "iot_special_fresh_tuna": "Свежий тунец", + "iot_special_grilled_vegetables": "Овощи на гриле", + "iot_special_lamb_cutlet": "Каре ягненка", + "iot_special_meatballs": "Митболы", + "iot_special_minestrone": "Минестроне", + "iot_special_mussels": "Мидии", + "iot_special_omelette": "Омлет", + "iot_special_pancakes": "Оладьи", + "iot_special_paris_style_peas": "Горошек по-парижски", + "iot_special_poached_eggs": "Яйца-пашот", + "iot_special_pork_fillet": "Свиное филе", + "iot_special_pork_ribs": "Свиные ребра", + "iot_special_prawns": "Креветки", + "iot_special_quinoa": "Киноа", + "iot_special_ratatouille": "Рататуй", + "iot_special_salmon_fillet": "Филе лосося", + "iot_special_saute_potatoes": "Картофель жареный", + "iot_special_scallops": "Гребешки", + "iot_special_scrambled_eggs": "Яичница-болтунья", + "iot_special_spelt": "Спельта", + "iot_special_veggy_noodles": "Вегетарианская лапша", + "iot_special_white_fish_fillet": "Филе белой рыбы", + "iot_standard_boiling": "Кипячение", + "iot_standard_frying": "Жарка", + "iot_standard_keep_warm": "Поддержание блюд в теплом состоянии", + "iot_standard_melting": "Плавление", + "iot_standard_simmering": "Приготовление на медленном огне" }, - "name": "\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430" + "name": "Программа" }, "programs_ov": { "state": { - "bakery": "\u041f\u0430\u0441\u0442\u0430 \u0438 \u0432\u044b\u043f\u0435\u0447\u043a\u0430", - "bakery_steam": "\u0425\u043b\u0435\u0431, \u0438\u0441\u043f\u0435\u0447\u0435\u043d\u043d\u044b\u0439 \u043d\u0430 \u043f\u0430\u0440\u0443", - "bottom_heating": "\u041d\u0438\u0436\u043d\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442", - "bottom_heating_fan": "\u041d\u0438\u0436\u043d\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 + \u0432\u0435\u043d\u0442\u0438\u043b\u044f\u0442\u043e\u0440", - "bread": "\u0425\u043b\u0435\u0431", - "bread_steam": "\u0412\u044b\u043f\u0435\u0447\u043a\u0430, \u043f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u043d\u0430 \u043f\u0430\u0440\u0443", - "convection_fan": "\u0412\u0435\u0440\u0445\u043d\u0438\u0439 \u0438 \u043d\u0438\u0436\u043d\u0438\u0439 \u043d\u0430\u0433\u0440\u0435\u0432 \u0441 \u0432\u0435\u043d\u0442\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c", - "convection_fan_turnspit": "\u041e\u0431\u044b\u043a\u043d\u043e\u0432\u0435\u043d\u043d\u0430\u044f \u0434\u0443\u0445\u043e\u0432\u043a\u0430 + \u0432\u0435\u043d\u0442\u0438\u043b\u044f\u0442\u043e\u0440 + \u0432\u0435\u0440\u0442\u0435\u043b", - "conventional": "\u0412\u0435\u0440\u0445\u043d\u0438\u0439 \u0438 \u043d\u0438\u0436\u043d\u0438\u0439 \u043d\u0430\u0433\u0440\u0435\u0432", - "conventional_turnspit": "\u041e\u0431\u044b\u043a\u043d\u043e\u0432\u0435\u043d\u043d\u0430\u044f \u0434\u0443\u0445\u043e\u0432\u043a\u0430 + \u0432\u0435\u043d\u0442\u0438\u043b\u044f\u0442\u043e\u0440", - "defrost": "\u0420\u0430\u0437\u043c\u043e\u0440\u0430\u0436\u0438\u0432\u0430\u043d\u0438\u0435", - "descaling": "\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u043a\u0438\u043f\u0438", - "fish": "\u0420\u044b\u0431\u0430", - "fish_steam": "\u0420\u044b\u0431\u0430, \u043f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u043d\u0430 \u043f\u0430\u0440\u0443", - "grill_cata": "\u0413\u0440\u0438\u043b\u044c", - "grill_fan_cata": "\u0413\u0440\u0438\u043b\u044c \u0441 \u0432\u0435\u043d\u0442\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c", - "grill_fan_pyro": "\u0413\u0440\u0438\u043b\u044c + \u0432\u0435\u043d\u0442\u0438\u043b\u044f\u0442\u043e\u0440", - "grill_pyro": "\u0413\u0440\u0438\u043b\u044c", + "bakery": "Паста и выпечка", + "bakery_steam": "Хлеб, испеченный на пару", + "bottom_heating": "Нижний элемент", + "bottom_heating_fan": "Нижний элемент + вентилятор", + "bread": "Хлеб", + "bread_steam": "Выпечка, приготовленная на пару", + "convection_fan": "Верхний и нижний нагрев с вентилятором", + "convection_fan_turnspit": "Обыкновенная духовка + вентилятор + вертел", + "conventional": "Верхний и нижний нагрев", + "conventional_turnspit": "Обыкновенная духовка + вентилятор", + "defrost": "Размораживание", + "descaling": "Удаление накипи", + "fish": "Рыба", + "fish_steam": "Рыба, приготовленная на пару", + "grill_cata": "Гриль", + "grill_fan_cata": "Гриль с вентилятором", + "grill_fan_pyro": "Гриль + вентилятор", + "grill_pyro": "Гриль", "h20_clean": "H2O-Clean", - "iot_bread": "\u0425\u043b\u0435\u0431", + "iot_bread": "Хлеб", "iot_h20_clean": "h2O clean", - "leavening": "\u0417\u0430\u043a\u0432\u0430\u0448\u0438\u0432\u0430\u043d\u0438\u0435", - "low_temp_cooking": "\u041f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u043d\u0438\u0437\u043a\u043e\u0439 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0435", - "low_temp_cooking_fish": "\u041f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u043d\u0438\u0437\u043a\u043e\u0439 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0435 - \u0420\u044b\u0431\u0430", - "low_temp_cooking_fish_steam": "\u041f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u043d\u0438\u0437\u043a\u043e\u0439 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0435 \u043d\u0430 \u043f\u0430\u0440\u0443 - \u0420\u044b\u0431\u0430", - "low_temp_cooking_meat": "\u041f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u043d\u0438\u0437\u043a\u043e\u0439 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0435 - \u041c\u044f\u0441\u043e", - "low_temp_cooking_meat_steam": "\u041f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u043d\u0438\u0437\u043a\u043e\u0439 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0435 \u043d\u0430 \u043f\u0430\u0440\u0443 - \u041c\u044f\u0441\u043e", - "low_temp_cooking_steam": "\u041f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u043d\u0438\u0437\u043a\u043e\u0439 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0435 \u043d\u0430 \u043f\u0430\u0440\u0443", - "meat": "\u041c\u044f\u0441\u043e", - "meat_steam": "\u041c\u044f\u0441\u043e, \u043f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u043d\u0430 \u043f\u0430\u0440\u0443", - "multi_level": "\u041c\u043d\u043e\u0433\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0435 \u043f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u0435", + "leavening": "Заквашивание", + "low_temp_cooking": "Приготовление при низкой температуре", + "low_temp_cooking_fish": "Приготовление при низкой температуре - Рыба", + "low_temp_cooking_fish_steam": "Приготовление при низкой температуре на пару - Рыба", + "low_temp_cooking_meat": "Приготовление при низкой температуре - Мясо", + "low_temp_cooking_meat_steam": "Приготовление при низкой температуре на пару - Мясо", + "low_temp_cooking_steam": "Приготовление при низкой температуре на пару", + "meat": "Мясо", + "meat_steam": "Мясо, приготовленное на пару", + "multi_level": "Многоуровневое приготовление", "paella": "Paella", - "pasta_and_bakery": "\u041f\u0430\u0441\u0442\u0430 \u0438 \u0432\u044b\u043f\u0435\u0447\u043a\u0430", + "pasta_and_bakery": "Паста и выпечка", "pizza": "Pizza", - "pyrolysis": "\u041f\u0438\u0440\u043e\u043b\u0438\u0437", - "pyrolysis_plus": "\u041f\u0438\u0440\u043e\u043b\u0438\u0437 +", - "red_meat": "\u041a\u0440\u0430\u0441\u043d\u043e\u0435 \u043c\u044f\u0441\u043e", - "red_meat_steam": "\u041a\u0440\u0430\u0441\u043d\u043e\u0435 \u043c\u044f\u0441\u043e, \u043f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u043d\u0430 \u043f\u0430\u0440\u0443", - "regenerate": "\u0420\u0435\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f", + "pyrolysis": "Пиролиз", + "pyrolysis_plus": "Пиролиз +", + "red_meat": "Красное мясо", + "red_meat_steam": "Красное мясо, приготовленное на пару", + "regenerate": "Регенерация", "soft_plus": "Soft+", - "super_grill": "\u0421\u0443\u043f\u0435\u0440-\u0433\u0440\u0438\u043b\u044c", + "super_grill": "Супер-гриль", "tailor_bake": "Tailor bake", "tailor_bake_cata": "Tailor Bake", - "tailor_bake_desctiption": "\u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0434\u0435\u043b\u0438\u0435 \u0431\u044b\u043b\u043e \u043c\u044f\u0433\u043a\u0438\u043c \u0432\u043d\u0443\u0442\u0440\u0438 \u0438 \u0441 \u043a\u043e\u0440\u043e\u0447\u043a\u043e\u0439 \u0441\u043d\u0430\u0440\u0443\u0436\u0438.\r\r\r\r\r\n\u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442 \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0435\u0435\u0441\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0436\u0438\u0440\u0430 \u0438 \u043c\u0430\u0441\u043b\u0430 \u0434\u043b\u044f \u043f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u0435\u0435 \u0437\u0434\u043e\u0440\u043e\u0432\u043e\u0439 \u043f\u0438\u0449\u0438.\r\r\r\r\r\n\u0421\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435 \u043d\u0430\u0433\u0440\u0435\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 \u043f\u0443\u043b\u044c\u0441\u0438\u0440\u0443\u044e\u0449\u0438\u043c \u0446\u0438\u043a\u043b\u043e\u043c\r\r\r\r\r\n\u0446\u0438\u0440\u043a\u0443\u043b\u044f\u0446\u0438\u0438 \u0432\u043e\u0437\u0434\u0443\u0445\u0430 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432\u044b\u043f\u0435\u043a\u0430\u043d\u0438\u044f.", "tailor_bake_pyro": "Tailor Bake", - "vegetables": "\u041e\u0432\u043e\u0449\u0438", - "vegetables_cata": "\u041e\u0432\u043e\u0449\u0438", - "vegetables_pyro": "\u041e\u0432\u043e\u0449\u0438", - "water_discharge": "\u0412\u043e\u0434\u043e\u043e\u0442\u0432\u043e\u0434", - "white_meat": "\u0411\u0435\u043b\u043e\u0435 \u043c\u044f\u0441\u043e", - "white_meat_steam": "\u0411\u0435\u043b\u043e\u0435 \u043c\u044f\u0441\u043e, \u043f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u043d\u0430 \u043f\u0430\u0440\u0443" + "vegetables": "Овощи", + "vegetables_cata": "Овощи", + "vegetables_pyro": "Овощи", + "water_discharge": "Водоотвод", + "white_meat": "Белое мясо", + "white_meat_steam": "Белое мясо, приготовленное на пару" }, - "name": "\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430" + "name": "Программа" }, "programs_td": { "state": { - "active_dry": "\u0410\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0441\u0443\u0448\u043a\u0430", - "allergy_care": "\u041f\u0440\u043e\u0442\u0438\u0432\u043e\u0430\u043b\u043b\u0435\u0440\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435", - "all_in_one": "\u0412\u0441\u0435 \u0432 \u043e\u0434\u043d\u043e\u043c", - "antiallergy": "\u041f\u0440\u043e\u0442\u0438\u0432\u043e\u0430\u043b\u043b\u0435\u0440\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435", - "anti_odours": "\u041f\u0440\u043e\u0442\u0438\u0432 \u0437\u0430\u043f\u0430\u0445\u0430", - "auto_care": "\u0410\u0432\u0442\u043e\u0443\u0445\u043e\u0434", - "baby": "\u0414\u0435\u0442\u0441\u043a\u0430\u044f \u043e\u0434\u0435\u0436\u0434\u0430", - "bed_quilt": "\u0421\u0442\u0435\u0433\u0430\u043d\u044b\u0435 \u0438 \u043f\u0443\u0445\u043e\u0432\u044b\u0435 \u043e\u0434\u0435\u044f\u043b\u0430", - "care_30": "\u0423\u0445\u043e\u0434 30", - "care_45": "\u0423\u0445\u043e\u0434 45", - "care_59": "\u0423\u0445\u043e\u0434 59", - "coloured": "\u0446\u0432\u0435\u0442\u043d\u044b\u0435", - "daily_45_min": "\u0415\u0416\u0415\u0414\u041d\u0415\u0412\u041d\u0410\u042f 45'", - "daily_perfect_59_min": "\u0415\u0416\u0415\u0414\u041d\u0415\u0412\u041d\u0410\u042f \u0418\u0414\u0415\u0410\u041b\u042c\u041d\u0410\u042f 59'", - "darks_and_coloured": "\u0422\u0435\u043c\u043d\u044b\u0435 \u0438 \u0426\u0432\u0435\u0442\u043d\u044b\u0435", - "delicates": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435", - "duvet": "\u041f\u0443\u0445\u043e\u0432\u043e\u0435 \u043e\u0434\u0435\u044f\u043b\u043e", - "eco": "\u042d\u043a\u043e \u0445\u043b\u043e\u043f\u043e\u043a", - "ecospeed_cottons": "\u042d\u043a\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0445\u043b\u043e\u043f\u043e\u043a", - "ecospeed_delicates": "\u042d\u043a\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0434\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435", - "ecospeed_mixed": "\u042d\u043a\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0441\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435", - "extra_hygiene": "\u042d\u041a\u0421\u0422\u0420\u0410 \u0413\u0418\u0413\u0418\u0415\u041d\u0410", - "fitness": "\u0424\u0438\u0442\u043d\u0435\u0441", - "fresh_care": "\u0421\u0432\u0435\u0436\u0435\u0441\u0442\u044c", + "active_dry": "Активная сушка", + "allergy_care": "Противоаллергическое действие", + "all_in_one": "Все в одном", + "antiallergy": "Противоаллергическое действие", + "anti_odours": "Против запаха", + "auto_care": "Автоуход", + "baby": "Детская одежда", + "bed_quilt": "Стеганые и пуховые одеяла", + "care_30": "Уход 30", + "care_45": "Уход 45", + "care_59": "Уход 59", + "coloured": "цветные", + "daily_45_min": "ЕЖЕДНЕВНАЯ 45'", + "daily_perfect_59_min": "ЕЖЕДНЕВНАЯ ИДЕАЛЬНАЯ 59'", + "darks_and_coloured": "Темные и Цветные", + "delicates": "Деликатные", + "duvet": "Пуховое одеяло", + "eco": "Эко хлопок", + "ecospeed_cottons": "Эко скорость хлопок", + "ecospeed_delicates": "Эко скорость деликатные", + "ecospeed_mixed": "Эко скорость смешанные", + "extra_hygiene": "ЭКСТРА ГИГИЕНА", + "fitness": "Фитнес", + "fresh_care": "Свежесть", "genius": "Genius", "hqd_baby_care": "Baby Care", - "hqd_bath_towel": "\u041f\u043e\u043b\u043e\u0442\u0435\u043d\u0446\u0430", - "hqd_bed_sheets": "\u041f\u0440\u043e\u0441\u0442\u044b\u043d\u0438", - "hqd_bulky": "\u041e\u0431\u044a\u0435\u043c\u043d\u044b\u0435 \u0438\u0437\u0434\u0435\u043b\u0438\u044f", - "hqd_casual": "\u041f\u043e\u0432\u0441\u0435\u0434\u043d\u0435\u0432\u043d\u0430\u044f \u043e\u0434\u0435\u0436\u0434\u0430", - "hqd_cold_wind_30": "\u041f\u0440\u043e\u0445\u043b\u0430\u0434\u043d\u044b\u0439 \u043e\u0431\u0434\u0443\u0432 30 \u043c\u0438\u043d\u0443\u0442", - "hqd_cold_wind_timing": "\u041f\u0440\u043e\u0445\u043b\u0430\u0434\u043d\u044b\u0439 \u043e\u0431\u0434\u0443\u0432 ", - "hqd_cotton": "\u0425\u043b\u043e\u043f\u043e\u043a", - "hqd_curtain": "\u0428\u0442\u043e\u0440\u044b", - "hqd_delicate": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0432\u0435\u0449\u0438", - "hqd_diaper": "\u041f\u0435\u043b\u0435\u043d\u043a\u0438", - "hqd_duvet": "\u041f\u0443\u0445\u043e\u0432\u043e\u0435 \u043e\u0434\u0435\u044f\u043b\u043e", - "hqd_feather": "\u041f\u0443\u0445\u043e\u0432\u0438\u043a\u0438", - "hqd_hot_wind_timing": "\u0413\u043e\u0440\u044f\u0447\u0438\u0439 \u0432\u043e\u0437\u0434\u0443\u0445", - "hqd_hygienic": "\u0421\u0430\u043d\u0438\u0442\u0430\u0440\u043d\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430", + "hqd_bath_towel": "Полотенца", + "hqd_bed_sheets": "Простыни", + "hqd_bulky": "Объемные изделия", + "hqd_casual": "Повседневная одежда", + "hqd_cold_wind_30": "Прохладный обдув 30 минут", + "hqd_cold_wind_timing": "Прохладный обдув ", + "hqd_cotton": "Хлопок", + "hqd_curtain": "Шторы", + "hqd_delicate": "Деликатные вещи", + "hqd_diaper": "Пеленки", + "hqd_duvet": "Пуховое одеяло", + "hqd_feather": "Пуховики", + "hqd_hot_wind_timing": "Горячий воздух", + "hqd_hygienic": "Санитарная обработка", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", - "hqd_jacket": "\u041a\u0443\u0440\u0442\u043a\u0438", - "hqd_jeans": "\u0414\u0436\u0438\u043d\u0441\u044b", - "hqd_luxury": "\u041b\u044e\u043a\u0441\u043e\u0432\u044b\u0435 \u0438\u0437\u0434\u0435\u043b\u0438\u044f", - "hqd_mix": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", - "hqd_night_dry": "\u041d\u043e\u0447\u043d\u0430\u044f \u0441\u0443\u0448\u043a\u0430", + "hqd_jacket": "Куртки", + "hqd_jeans": "Джинсы", + "hqd_luxury": "Люксовые изделия", + "hqd_mix": "Смешанные ткани", + "hqd_night_dry": "Ночная сушка", "hqd_outdoor": "Outdoor", "hqd_precious_cure": "Precious cure", - "hqd_quick_20": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f 20", - "hqd_quick_30": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f 30", - "hqd_quick_dry": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f \u0441\u0443\u0448\u043a\u0430", - "hqd_quilt": "\u0421\u0442\u0435\u0433\u0430\u043d\u044b\u0435 \u043e\u0434\u0435\u044f\u043b\u0430", - "hqd_refresh": "\u041e\u0441\u0432\u0435\u0436\u0435\u043d\u0438\u0435", - "hqd_school_uniform": "\u0428\u043a\u043e\u043b\u044c\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430", - "hqd_shirt": "\u0420\u0443\u0431\u0430\u0448\u043a\u0438", - "hqd_shoes": "\u041e\u0431\u0443\u0432\u044c", - "hqd_silk": "\u0428\u0435\u043b\u043a", - "hqd_sports": "\u0421\u043f\u043e\u0440\u0442\u0438\u0432\u043d\u0430\u044f \u043e\u0434\u0435\u0436\u0434\u0430", - "hqd_synthetics": "\u0421\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0430", + "hqd_quick_20": "Быстрая 20", + "hqd_quick_30": "Быстрая 30", + "hqd_quick_dry": "Быстрая сушка", + "hqd_quilt": "Стеганые одеяла", + "hqd_refresh": "Освежение", + "hqd_school_uniform": "Школьная форма", + "hqd_shirt": "Рубашки", + "hqd_shoes": "Обувь", + "hqd_silk": "Шелк", + "hqd_sports": "Спортивная одежда", + "hqd_synthetics": "Синтетика", "hqd_timer": "Timed", - "hqd_towel": "\u041f\u043e\u043b\u043e\u0442\u0435\u043d\u0446\u0430", - "hqd_underwear": "\u041d\u0438\u0436\u043d\u0435\u0435 \u0431\u0435\u043b\u044c\u0435", - "hqd_warm_up": "\u041f\u043e\u0434\u043e\u0433\u0440\u0435\u0432", - "hqd_wool": "\u0428\u0435\u0440\u0441\u0442\u044c", - "hqd_working_suit": "\u0420\u0430\u0431\u043e\u0447\u0430\u044f \u043e\u0434\u0435\u0436\u0434\u0430", - "hygiene": "\u0413\u0438\u0433\u0438\u0435\u043d\u0430", - "iot_checkup": "\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430", - "iot_dry_anti_mites": "\u041f\u0440\u043e\u0442\u0438\u0432\u043e\u043a\u043b\u0435\u0449\u0435\u0432\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430", - "iot_dry_baby": "\u0414\u0435\u0442\u0441\u043a\u0430\u044f \u043e\u0434\u0435\u0436\u0434\u0430", - "iot_dry_backpacks": "\u0420\u044e\u043a\u0437\u0430\u043a\u0438", - "iot_dry_bathrobe": "\u0411\u0430\u043d\u043d\u044b\u0435 \u0445\u0430\u043b\u0430\u0442\u044b", - "iot_dry_bed_linen": "\u041f\u043e\u0441\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0431\u0435\u043b\u044c\u0435", - "iot_dry_bed_quilt": "\u0421\u0442\u0435\u0433\u0430\u043d\u044b\u0435 \u0438 \u043f\u0443\u0445\u043e\u0432\u044b\u0435 \u043e\u0434\u0435\u044f\u043b\u0430", - "iot_dry_cotton": "\u0425\u043b\u043e\u043f\u043e\u043a", - "iot_dry_cuddly_toys": "\u041c\u044f\u0433\u043a\u0438\u0435 \u0438\u0433\u0440\u0443\u0448\u043a\u0438", - "iot_dry_curtains": "\u0428\u0442\u043e\u0440\u044b", - "iot_dry_dehumidifier": "\u0412\u043b\u0430\u0433\u043e\u043f\u043e\u0433\u043b\u043e\u0442\u0438\u0442\u0435\u043b\u044c", - "iot_dry_delicates": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435", - "iot_dry_delicate_tablecloths": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0441\u043a\u0430\u0442\u0435\u0440\u0442\u0438", - "iot_dry_denim_jeans": "\u0414\u0435\u043d\u0438\u043c \u2013 \u0434\u0436\u0438\u043d\u0441\u044b", - "iot_dry_down_jacket": "\u041a\u0443\u0440\u0442\u043a\u0438", - "iot_dry_duvet": "\u041f\u0443\u0445\u043e\u0432\u043e\u0435 \u043e\u0434\u0435\u044f\u043b\u043e", - "iot_dry_easy_iron_cotton": "\u0421\u0432\u0435\u0440\u0445\u043b\u0435\u0433\u043a\u0430\u044f \u0433\u043b\u0430\u0436\u043a\u0430", - "iot_dry_easy_iron_synthetics": "\u0421\u0443\u043f\u0435\u0440\u0443\u0434\u043e\u0431\u043d\u0430\u044f \u0433\u043b\u0430\u0436\u043a\u0430 \u0441\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0438", - "iot_dry_gym_fit": "\u041e\u0434\u0435\u0436\u0434\u0430 \u0434\u043b\u044f \u0441\u043f\u043e\u0440\u0442\u0437\u0430\u043b\u0430 \u2013 \u0424\u0438\u0442\u043d\u0435\u0441", - "iot_dry_lingerie": "\u0411\u0435\u043b\u044c\u0435", - "iot_dry_mixed": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", - "iot_dry_playsuits": "\u041f\u043b\u044f\u0436\u043d\u044b\u0435 \u043a\u043e\u0441\u0442\u044e\u043c\u044b", - "iot_dry_rapid_30": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f 30'", - "iot_dry_rapid_59": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f 59 \u043c\u0438\u043d.", - "iot_dry_refresh": "\u041e\u0441\u0432\u0435\u0436\u0438\u0442\u044c", - "iot_dry_regenerates_waterproof": "\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u043e\u0434\u043e\u043d\u0435\u043f\u0440\u043e\u043d\u0438\u0446\u0430\u0435\u043c\u044b\u0445 \u0442\u043a\u0430\u043d\u0435\u0439", - "iot_dry_relax_creases": "\u0423\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043a\u043b\u0430\u0434\u043e\u043a", - "iot_dry_shirts": "\u0420\u0443\u0431\u0430\u0448\u043a\u0438", - "iot_dry_small_load": "\u041c\u0430\u043b\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430", - "iot_dry_swimsuits_and_bikinis": "\u041a\u0443\u043f\u0430\u043b\u044c\u043d\u0438\u043a\u0438", - "iot_dry_synthetics": "\u0421\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0430", - "iot_dry_synthetic_dry": "\u0421\u0443\u0448\u043a\u0430 \u0441\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0438", - "iot_dry_tablecloths": "\u0421\u043a\u0430\u0442\u0435\u0440\u0442\u0438", - "iot_dry_technical_fabrics": "\u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0442\u043a\u0430\u043d\u0438", - "iot_dry_warm_embrace": "\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0442\u0435\u043f\u043b\u043e\u043c", - "iot_dry_wool": "\u0428\u0435\u0440\u0441\u0442\u044c", - "jeans": "\u0434\u0436\u0438\u043d\u0441\u044b", - "mix_and_dry": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435+\u0441\u0443\u0448\u043a\u0430", - "pets": "\u0416\u0438\u0432\u043e\u0442\u043d\u044b\u0435", - "pre_iron": "\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0433\u043b\u0430\u0436\u043a\u0430", - "rapid_30": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f 30'", - "rapid_45": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f 45 \u043c\u0438\u043d", - "rapid_59": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u0430\u044f 59 \u043c\u0438\u043d.", - "refresh": "\u041e\u0441\u0432\u0435\u0436\u0438\u0442\u044c", - "relax_creases": "\u0423\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043a\u043b\u0430\u0434\u043e\u043a", - "saving_30_min": "\u042d\u041a\u041e 30'", - "shirts": "\u0420\u0443\u0431\u0430\u0448\u043a\u0438", - "shoes": "\u041e\u0431\u0443\u0432\u044c", - "small_load": "\u041c\u0430\u043b\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430", - "soft_care": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0439 \u0443\u0445\u043e\u0434", - "sport_plus": "\u0421\u043f\u043e\u0440\u0442", - "super_easy_iron_misti": "\u0421\u0443\u043f\u0435\u0440\u043b\u0435\u0433\u043a\u0430\u044f \u0433\u043b\u0430\u0436\u043a\u0430 \u0441\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435", - "super_easy_iron_xxl": "\u0421\u0443\u043f\u0435\u0440\u043b\u0435\u0433\u043a\u0430\u044f \u0433\u043b\u0430\u0436\u043a\u0430 XXL", - "super_fast_cottons": "\u0421\u0443\u043f\u0435\u0440-\u0411\u042b\u0421\u0422\u0420\u0410\u042f \u0445\u043b\u043e\u043f\u043e\u043a", - "super_fast_delicates": "\u0421\u0443\u043f\u0435\u0440-\u0411\u042b\u0421\u0422\u0420\u0410\u042f \u0434\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435", - "synthetics": "\u0421\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0430", - "total_care": "\u041e\u0431\u0449\u0438\u0438 \u0443\u0445\u043e\u0434", - "trainers": "\u0421\u043f\u043e\u0440\u0442\u0438\u0432\u043d\u0430\u044f \u043e\u0431\u0443\u0432\u044c", + "hqd_towel": "Полотенца", + "hqd_underwear": "Нижнее белье", + "hqd_warm_up": "Подогрев", + "hqd_wool": "Шерсть", + "hqd_working_suit": "Рабочая одежда", + "hygiene": "Гигиена", + "iot_checkup": "Проверка", + "iot_dry_anti_mites": "Противоклещевая обработка", + "iot_dry_baby": "Детская одежда", + "iot_dry_backpacks": "Рюкзаки", + "iot_dry_bathrobe": "Банные халаты", + "iot_dry_bed_linen": "Постельное белье", + "iot_dry_bed_quilt": "Стеганые и пуховые одеяла", + "iot_dry_cotton": "Хлопок", + "iot_dry_cuddly_toys": "Мягкие игрушки", + "iot_dry_curtains": "Шторы", + "iot_dry_dehumidifier": "Влагопоглотитель", + "iot_dry_delicates": "Деликатные", + "iot_dry_delicate_tablecloths": "Деликатные скатерти", + "iot_dry_denim_jeans": "Деним – джинсы", + "iot_dry_down_jacket": "Куртки", + "iot_dry_duvet": "Пуховое одеяло", + "iot_dry_easy_iron_cotton": "Сверхлегкая глажка", + "iot_dry_easy_iron_synthetics": "Суперудобная глажка синтетики", + "iot_dry_gym_fit": "Одежда для спортзала – Фитнес", + "iot_dry_lingerie": "Белье", + "iot_dry_mixed": "Смешанные ткани", + "iot_dry_playsuits": "Пляжные костюмы", + "iot_dry_rapid_30": "Быстрая 30'", + "iot_dry_rapid_59": "Быстрая 59 мин.", + "iot_dry_refresh": "Освежить", + "iot_dry_regenerates_waterproof": "Восстановление водонепроницаемых тканей", + "iot_dry_relax_creases": "Уменьшение образования складок", + "iot_dry_shirts": "Рубашки", + "iot_dry_small_load": "Малая загрузка", + "iot_dry_swimsuits_and_bikinis": "Купальники", + "iot_dry_synthetics": "Синтетика", + "iot_dry_synthetic_dry": "Сушка синтетики", + "iot_dry_tablecloths": "Скатерти", + "iot_dry_technical_fabrics": "Технические ткани", + "iot_dry_warm_embrace": "Обработка теплом", + "iot_dry_wool": "Шерсть", + "jeans": "джинсы", + "mix_and_dry": "Смешанные+сушка", + "pets": "Животные", + "pre_iron": "Предварительная глажка", + "rapid_30": "Быстрая 30'", + "rapid_45": "Быстрая 45 мин", + "rapid_59": "Быстрая идеальная 59 мин.", + "refresh": "Освежить", + "relax_creases": "Уменьшение образования складок", + "saving_30_min": "ЭКО 30'", + "shirts": "Рубашки", + "shoes": "Обувь", + "small_load": "Малая загрузка", + "soft_care": "Деликатный уход", + "sport_plus": "Спорт", + "super_easy_iron_misti": "Суперлегкая глажка смешанные", + "super_easy_iron_xxl": "Суперлегкая глажка XXL", + "super_fast_cottons": "Супер-БЫСТРАЯ хлопок", + "super_fast_delicates": "Супер-БЫСТРАЯ деликатные", + "synthetics": "Синтетика", + "total_care": "Общии уход", + "trainers": "Спортивная обувь", "ultra_care": "Ultra Care", - "waterproof_revitalize": "\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u043e\u0434\u043e\u043d\u0435\u043f\u0440\u043e\u043d\u0438\u0446\u0430\u0435\u043c\u043e\u0441\u0442\u0438", - "whites": "\u0411\u0435\u043b\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", - "wool": "\u0421\u0443\u0448\u043a\u0430 \u0448\u0435\u0440\u0441\u0442\u0438", - "woolmark": "\u0428\u0435\u0440\u0441\u0442\u044c", - "xxl_load": "\u041e\u0431\u044a\u0435\u043c\u043d\u044b\u0435 \u0432\u0435\u0449\u0438", - "zoom_59": "Zoom 59 (\u0417\u0443\u043c 59)" + "waterproof_revitalize": "Восстановление водонепроницаемости", + "whites": "Белые ткани", + "wool": "Сушка шерсти", + "woolmark": "Шерсть", + "xxl_load": "Объемные вещи", + "zoom_59": "Zoom 59 (Зум 59)" }, - "name": "\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430" + "name": "Программа" }, "programs_wm": { "state": { - "20_degrees_coloured_cottons": "20\u00b0 \u0426\u0432\u0435\u0442\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438 \u0438 \u0425\u043b\u043e\u043f\u043e\u043a", - "20_degrees_new_energy_label": "20\u00b0C", - "active_steam": "\u041f\u0430\u0440", - "active_wash": "\u0410\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0441\u0442\u0438\u0440\u043a\u0430", - "active_wash_steam": "\u0410\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0441\u0442\u0438\u0440\u043a\u0430", - "allergy_care": "\u0423\u0445\u043e\u0434 \u0434\u043b\u044f \u0430\u043b\u043b\u0435\u0440\u0433\u0438\u043a\u043e\u0432", - "allergy_care_pro": "\u0423\u0445\u043e\u0434 \u0434\u043b\u044f \u0430\u043b\u043b\u0435\u0440\u0433\u0438\u043a\u043e\u0432 \u043f\u0440\u043e", - "all_in_one_49": "\u0412\u0441\u0435 \u0432 \u043e\u0434\u043d\u043e\u043c 49 \u043c\u0438\u043d.", - "all_in_one_59": "\u0412\u0441\u0435 \u0432 \u043e\u0434\u043d\u043e\u043c 59 \u043c\u0438\u043d.", - "all_in_one_59_steam": "\u0410\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0441\u0442\u0438\u0440\u043a\u0430\u00a0+ \u043f\u0430\u0440", - "autocare": "\u0410\u0432\u0442\u043e\u0443\u0445\u043e\u0434", - "autoclean": "\u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u0431\u0430\u0440\u0430\u0431\u0430\u043d\u0430", - "baby_60": "\u0421\u0442\u0438\u0440\u043a\u0430 \u0434\u0435\u0442\u0441\u043a\u043e\u0433\u043e \u0431\u0435\u043b\u044c\u044f \u043f\u0440\u0438 60\u00b0\u0421", - "care_14": "\u0411\u042b\u0421\u0422\u0420\u042b\u0419 \u0423\u0445\u043e\u0434 14'", - "care_30": "\u0411\u042b\u0421\u0422\u0420\u042b\u0419 \u0423\u0445\u043e\u0434 30'", - "care_44": "\u0411\u042b\u0421\u0422\u0420\u042b\u0419 \u0423\u0445\u043e\u0434 44'", - "checkup": "\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430", - "colour_59": "\u0446\u0432\u0435\u0442\u043d\u044b\u0435 59'", - "colour_59_steam": "\u0426\u0432\u0435\u0442\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438 59' + \u043f\u0430\u0440", - "cottons": "\u0425\u043b\u043e\u043f\u043e\u043a", - "cottons_prewash": "\u0445\u043b\u043e\u043f\u043e\u043a + \u043f\u0440\u0435\u0434\u0432\u0430\u0440.", - "cottons_steam": "\u0425\u043b\u043e\u043f\u043e\u043a + \u041f\u0430\u0440", - "cotton_care_59": "\u0445\u043b\u043e\u043f\u043e\u043a 59 \u043c\u0438\u043d\u0443\u0442", - "delicate_59": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u0430\u044f 59 \u043c\u0438\u043d.", - "delicate_silk": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u0430\u044f \u0442\u043a\u0430\u043d\u044c (\u0448\u0435\u043b\u043a)", - "delicate_silk_steam": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u0430\u044f \u0442\u043a\u0430\u043d\u044c (\u0448\u0435\u043b\u043a) + \u043f\u0430\u0440", - "delicati_59": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u0430\u044f 59 \u043c\u0438\u043d.", - "delicati_59_steam": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u0430\u044f 59 \u043c\u0438\u043d.", - "drain_spin": "\u0421\u043b\u0438\u0432 + \u043e\u0442\u0436\u0438\u043c", - "easy_iron": "\u043b\u0435\u0433\u043a\u0430\u044f \u0433\u043b\u0430\u0436\u043a\u0430", + "20_degrees_coloured_cottons": "20° Цветные ткани и Хлопок", + "20_degrees_new_energy_label": "20°C", + "active_steam": "Пар", + "active_wash": "Активная стирка", + "active_wash_steam": "Активная стирка", + "allergy_care": "Уход для аллергиков", + "allergy_care_pro": "Уход для аллергиков про", + "all_in_one_49": "Все в одном 49 мин.", + "all_in_one_59": "Все в одном 59 мин.", + "all_in_one_59_steam": "Активная стирка + пар", + "autocare": "Автоуход", + "autoclean": "Очистка барабана", + "baby_60": "Стирка детского белья при 60°С", + "care_14": "БЫСТРЫЙ Уход 14'", + "care_30": "БЫСТРЫЙ Уход 30'", + "care_44": "БЫСТРЫЙ Уход 44'", + "checkup": "Проверка", + "colour_59": "цветные 59'", + "colour_59_steam": "Цветные ткани 59' + пар", + "cottons": "Хлопок", + "cottons_prewash": "хлопок + предвар.", + "cottons_steam": "Хлопок + Пар", + "cotton_care_59": "хлопок 59 минут", + "delicate_59": "Деликатная 59 мин.", + "delicate_silk": "Деликатная ткань (шелк)", + "delicate_silk_steam": "Деликатная ткань (шелк) + пар", + "delicati_59": "Деликатная 59 мин.", + "delicati_59_steam": "Деликатная 59 мин.", + "drain_spin": "Слив + отжим", + "easy_iron": "легкая глажка", "eco_40_60_new_energy_label": "Eco 40-60", - "extra_care": "\u042d\u041a\u0421\u0422\u0420\u0410 \u0423\u0425\u041e\u0414", - "fitness": "\u0424\u0438\u0442\u043d\u0435\u0441", - "fitness_care": "\u0424\u0438\u0442\u043d\u0435\u0441", - "fresh_care": "\u0421\u0432\u0435\u0436\u0435\u0441\u0442\u044c", - "fresh_care_steam": "\u0421\u0432\u0435\u0436\u0435\u0441\u0442\u044c\u00a0+ \u043f\u0430\u0440", - "handwash_wool": "\u0420\u0443\u0447\u043d\u0430\u044f \u0441\u0442\u0438\u0440\u043a\u0430 \u0438 \u0448\u0435\u0440\u0441\u0442\u044c", - "high_dry": "\u0421\u0443\u0448\u043a\u0430 \u0445\u043b\u043e\u043f\u043a\u0430", - "hqd_20_degrees": "\u0425\u043b\u043e\u043f\u043e\u043a 20\u2103", - "hqd_allergy": "\u0423\u0445\u043e\u0434 \u0434\u043b\u044f \u0430\u043b\u043b\u0435\u0440\u0433\u0438\u043a\u043e\u0432", - "hqd_autoclean": "\u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u0431\u0430\u0440\u0430\u0431\u0430\u043d\u0430", - "hqd_babycare": "\u0414\u0435\u0442\u0441\u043a\u0430\u044f \u043e\u0434\u0435\u0436\u0434\u0430", - "hqd_checkup": "\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430", - "hqd_cottons": "\u0425\u043b\u043e\u043f\u043e\u043a", - "hqd_delicate": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0432\u0435\u0449\u0438", - "hqd_delicate_cradle": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0432\u0435\u0449\u0438", - "hqd_dry": "\u0421\u0443\u0448\u043a\u0430 \u0445\u043b\u043e\u043f\u043a\u0430", - "hqd_dry_synthetics": "\u0421\u0443\u0448\u043a\u0430 \u0441\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0445 \u0442\u043a\u0430\u043d\u0435\u0439", - "hqd_duvet": "\u041f\u0443\u0445\u043e\u0432\u043e\u0435 \u043e\u0434\u0435\u044f\u043b\u043e", + "extra_care": "ЭКСТРА УХОД", + "fitness": "Фитнес", + "fitness_care": "Фитнес", + "fresh_care": "Свежесть", + "fresh_care_steam": "Свежесть + пар", + "handwash_wool": "Ручная стирка и шерсть", + "high_dry": "Сушка хлопка", + "hqd_20_degrees": "Хлопок 20℃", + "hqd_allergy": "Уход для аллергиков", + "hqd_autoclean": "Очистка барабана", + "hqd_babycare": "Детская одежда", + "hqd_checkup": "Проверка", + "hqd_cottons": "Хлопок", + "hqd_delicate": "Деликатные вещи", + "hqd_delicate_cradle": "Деликатные вещи", + "hqd_dry": "Сушка хлопка", + "hqd_dry_synthetics": "Сушка смешанных тканей", + "hqd_duvet": "Пуховое одеяло", "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_handwash_wool": "\u0428\u0435\u0440\u0441\u0442\u044c", + "hqd_handwash_wool": "Шерсть", "hqd_i_refresh": "i-Refresh", - "hqd_mix": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", - "hqd_quick_15": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f 15 \u043c\u0438\u043d.", - "hqd_quick_wash_57": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f \u0441\u0442\u0438\u0440\u043a\u0430 57 \u043c\u0438\u043d", - "hqd_rapid_wash_and_dry": "\u0421\u0442\u0438\u0440\u043a\u0430 \u0438 \u0441\u0443\u0448\u043a\u0430", - "hqd_refresh": "\u041e\u0441\u0432\u0435\u0436\u0438\u0442\u044c", - "hqd_rinse": "\u041f\u043e\u043b\u043e\u0441\u043a\u0430\u043d\u0438\u0435", - "hqd_shirts": "\u0420\u0443\u0431\u0430\u0448\u043a\u0438", + "hqd_mix": "Смешанные ткани", + "hqd_quick_15": "Быстрая 15 мин.", + "hqd_quick_wash_57": "Быстрая стирка 57 мин", + "hqd_rapid_wash_and_dry": "Стирка и сушка", + "hqd_refresh": "Освежить", + "hqd_rinse": "Полоскание", + "hqd_shirts": "Рубашки", "hqd_smart": "Smart A.I.", - "hqd_spin": "\u041e\u0442\u0436\u0438\u043c", - "hqd_sport": "\u0421\u043f\u043e\u0440\u0442", - "hqd_super_fast": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f 39 \u043c\u0438\u043d.", - "hqd_synthetic_and_coloured": "\u0421\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0430", - "hygiene_59": "\u0413\u0418\u0413\u0418\u0415\u041d\u0418\u0427\u041d\u0410\u042f \u041f\u041b\u042e\u0421 59'", - "hygiene_60": "\u0413\u0438\u0433\u0438\u0435\u043d\u0438\u0447\u043d\u0430\u044f 60\u00b0", - "hygiene_plus_59": "\u0413\u0418\u0413\u0418\u0415\u041d\u0418\u0427\u041d\u0410\u042f \u041f\u041b\u042e\u0421 59'", - "hygiene_plus_59_min": "\u0413\u0418\u0413\u0418\u0415\u041d\u0418\u0427\u041d\u0410\u042f \u041f\u041b\u042e\u0421 59'", - "hygiene_pro_49_min": "Hygiene Pro 49 \u043c\u0438\u043d.", - "hygiene_pro_steam": "Hygiene Pro + \u041f\u0430\u0440", - "intensive_40": "\u0418\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u0430\u044f 40\u00b0\u0421", - "intensive_40_steam": "\u0418\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u044b\u0439 \u043f\u0430\u0440 40\u00b0C +", - "iot_active_steam": "\u041f\u0430\u0440", - "iot_active_wash_steam": "\u0410\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0441\u0442\u0438\u0440\u043a\u0430", - "iot_allergy_care_pro": "\u0423\u0445\u043e\u0434 \u0434\u043b\u044f \u0430\u043b\u043b\u0435\u0440\u0433\u0438\u043a\u043e\u0432 \u043f\u0440\u043e", - "iot_all_in_one_59_steam": "\u0410\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0441\u0442\u0438\u0440\u043a\u0430\u00a0+ \u043f\u0430\u0440", - "iot_checkup": "\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430", - "iot_colour_59_steam": "\u0426\u0432\u0435\u0442\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438 59' + \u043f\u0430\u0440", - "iot_cottons_steam": "\u0425\u043b\u043e\u043f\u043e\u043a + \u041f\u0430\u0440", - "iot_delicate_silk_steam": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u0430\u044f \u0442\u043a\u0430\u043d\u044c (\u0448\u0435\u043b\u043a) + \u043f\u0430\u0440", - "iot_delicati_59_steam": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u0430\u044f 59 \u043c\u0438\u043d.", - "iot_dry_air_refresh": "\u041e\u0441\u0432\u0435\u0436\u0435\u043d\u0438\u0435 \u0432\u043e\u0437\u0434\u0443\u0445\u043e\u043c", - "iot_dry_anti_mites": "\u041f\u0440\u043e\u0442\u0438\u0432\u043e\u043a\u043b\u0435\u0449\u0435\u0432\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430", - "iot_dry_baby": "\u0414\u0435\u0442\u0441\u043a\u0438\u0435 \u0432\u0435\u0449\u0438", - "iot_dry_backpacks": "\u0420\u044e\u043a\u0437\u0430\u043a\u0438", - "iot_dry_bathrobe": "\u041a\u0443\u043f\u0430\u043b\u044c\u043d\u044b\u0435 \u0445\u0430\u043b\u0430\u0442\u044b \u0438 \u0440\u044b\u0445\u043b\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", - "iot_dry_bed_linen": "\u041f\u043e\u0441\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0431\u0435\u043b\u044c\u0435", - "iot_dry_cotton_dry": "\u0421\u0443\u0448\u043a\u0430 \u0445\u043b\u043e\u043f\u043a\u0430", - "iot_dry_cuddly_toys": "\u041c\u044f\u0433\u043a\u0438\u0435 \u0438\u0433\u0440\u0443\u0448\u043a\u0438", - "iot_dry_curtains": "\u0428\u0442\u043e\u0440\u044b", - "iot_dry_dehumidifier": "\u0412\u043b\u0430\u0433\u043e\u043f\u043e\u0433\u043b\u043e\u0442\u0438\u0442\u0435\u043b\u044c", - "iot_dry_delicates_antiallergy": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0432\u0435\u0449\u0438 \u2013 \u0437\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u0430\u043b\u043b\u0435\u0440\u0433\u0438\u0438", - "iot_dry_delicate_tablecloths": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0441\u043a\u0430\u0442\u0435\u0440\u0442\u0438", - "iot_dry_denim_jeans": "\u0414\u0435\u043d\u0438\u043c \u2013 \u0434\u0436\u0438\u043d\u0441\u044b", - "iot_dry_easy_iron_cotton": "\u041b\u0435\u0433\u043a\u0430\u044f \u0433\u043b\u0430\u0436\u043a\u0430 \u2013 \u0445\u043b\u043e\u043f\u043e\u043a", - "iot_dry_easy_iron_synthetics": "\u041b\u0435\u0433\u043a\u0430\u044f \u0433\u043b\u0430\u0436\u043a\u0430 \u2013 \u0441\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0430", - "iot_dry_gym_fit": "\u041e\u0434\u0435\u0436\u0434\u0430 \u0434\u043b\u044f \u0441\u043f\u043e\u0440\u0442\u0437\u0430\u043b\u0430", - "iot_dry_lingerie": "\u0411\u0435\u043b\u044c\u0435", - "iot_dry_mixed_dry": "\u0421\u0443\u0448\u043a\u0430 \u0441\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0445 \u0442\u043a\u0430\u043d\u0435\u0439", - "iot_dry_rapid_60_min_delicates": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f \u0441\u0443\u0448\u043a\u0430 60 \u043c\u0438\u043d. \u2013 \u0434\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", - "iot_dry_shirts": "\u0420\u0443\u0431\u0430\u0448\u043a\u0438", - "iot_dry_swimsuits_and_bikinis": "\u041a\u0443\u043f\u0430\u043b\u044c\u043d\u0438\u043a\u0438", - "iot_dry_synthetics": "\u0421\u0443\u0448\u043a\u0430 \u0441\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0438", - "iot_dry_synthetic_dry": "\u0421\u0443\u0448\u043a\u0430 \u0441\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0438", - "iot_dry_tablecloths": "\u0421\u043a\u0430\u0442\u0435\u0440\u0442\u0438", - "iot_dry_technical_fabrics": "\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", - "iot_dry_warm_embrace": "\u0422\u0435\u043f\u043b\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u043d\u0430\u044f \u0441\u0443\u0448\u043a\u0430", - "iot_dry_wool_dry": "\u0421\u0443\u0448\u043a\u0430 \u0448\u0435\u0440\u0441\u0442\u0438", - "iot_easy_iron": "\u043b\u0435\u0433\u043a\u0430\u044f \u0433\u043b\u0430\u0436\u043a\u0430", - "iot_fresh_care_steam": "\u0421\u0432\u0435\u0436\u0435\u0441\u0442\u044c\u00a0+ \u043f\u0430\u0440", - "iot_hygiene_pro_steam": "Hygiene Pro + \u041f\u0430\u0440", - "iot_intensive_40_steam": "\u0418\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u044b\u0439 \u043f\u0430\u0440 40\u00b0C +", - "iot_mixed_steam": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438 + \u041f\u0430\u0440", - "iot_mix_and_colour_59_steam": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435 \u0438 \u0446\u0432\u0435\u0442\u043d\u044b\u0435 59\u00a0\u043c\u0438\u043d\u00a0+ \u043f\u0430\u0440", - "iot_perfect_cotton_59_steam": "\u0425\u041b\u041e\u041f\u041e\u041a: \u0418\u0414\u0415\u0410\u041b\u042c\u041d\u0410\u042f \u0421\u0422\u0418\u0420\u041a\u0410 59'", - "iot_rapid_a_class_60_steam": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f \u041a\u043b\u0430\u0441\u0441 A 60 + \u043f\u0430\u0440", - "iot_resistant_cotton_steam": "\u0425\u043b\u043e\u043f\u043e\u043a + \u041f\u0430\u0440", - "iot_shirts_steam": "\u0420\u0443\u0431\u0430\u0448\u043a\u0438 + \u041f\u0430\u0440", - "iot_single_item_steam": "\u041e\u0434\u043d\u0430 \u0432\u0435\u0449\u044c\u00a0+ \u043f\u0430\u0440", + "hqd_spin": "Отжим", + "hqd_sport": "Спорт", + "hqd_super_fast": "Быстрая 39 мин.", + "hqd_synthetic_and_coloured": "Синтетика", + "hygiene_59": "ГИГИЕНИЧНАЯ ПЛЮС 59'", + "hygiene_60": "Гигиеничная 60°", + "hygiene_plus_59": "ГИГИЕНИЧНАЯ ПЛЮС 59'", + "hygiene_plus_59_min": "ГИГИЕНИЧНАЯ ПЛЮС 59'", + "hygiene_pro_49_min": "Hygiene Pro 49 мин.", + "hygiene_pro_steam": "Hygiene Pro + Пар", + "intensive_40": "Интенсивная 40°С", + "intensive_40_steam": "Интенсивный пар 40°C +", + "iot_active_steam": "Пар", + "iot_active_wash_steam": "Активная стирка", + "iot_allergy_care_pro": "Уход для аллергиков про", + "iot_all_in_one_59_steam": "Активная стирка + пар", + "iot_checkup": "Проверка", + "iot_colour_59_steam": "Цветные ткани 59' + пар", + "iot_cottons_steam": "Хлопок + Пар", + "iot_delicate_silk_steam": "Деликатная ткань (шелк) + пар", + "iot_delicati_59_steam": "Деликатная 59 мин.", + "iot_dry_air_refresh": "Освежение воздухом", + "iot_dry_anti_mites": "Противоклещевая обработка", + "iot_dry_baby": "Детские вещи", + "iot_dry_backpacks": "Рюкзаки", + "iot_dry_bathrobe": "Купальные халаты и рыхлые ткани", + "iot_dry_bed_linen": "Постельное белье", + "iot_dry_cotton_dry": "Сушка хлопка", + "iot_dry_cuddly_toys": "Мягкие игрушки", + "iot_dry_curtains": "Шторы", + "iot_dry_dehumidifier": "Влагопоглотитель", + "iot_dry_delicates_antiallergy": "Деликатные вещи – защита от аллергии", + "iot_dry_delicate_tablecloths": "Деликатные скатерти", + "iot_dry_denim_jeans": "Деним – джинсы", + "iot_dry_easy_iron_cotton": "Легкая глажка – хлопок", + "iot_dry_easy_iron_synthetics": "Легкая глажка – синтетика", + "iot_dry_gym_fit": "Одежда для спортзала", + "iot_dry_lingerie": "Белье", + "iot_dry_mixed_dry": "Сушка смешанных тканей", + "iot_dry_rapid_60_min_delicates": "Быстрая сушка 60 мин. – деликатные ткани", + "iot_dry_shirts": "Рубашки", + "iot_dry_swimsuits_and_bikinis": "Купальники", + "iot_dry_synthetics": "Сушка синтетики", + "iot_dry_synthetic_dry": "Сушка синтетики", + "iot_dry_tablecloths": "Скатерти", + "iot_dry_technical_fabrics": "Современные ткани", + "iot_dry_warm_embrace": "Теплая машинная сушка", + "iot_dry_wool_dry": "Сушка шерсти", + "iot_easy_iron": "легкая глажка", + "iot_fresh_care_steam": "Свежесть + пар", + "iot_hygiene_pro_steam": "Hygiene Pro + Пар", + "iot_intensive_40_steam": "Интенсивный пар 40°C +", + "iot_mixed_steam": "Смешанные ткани + Пар", + "iot_mix_and_colour_59_steam": "Смешанные и цветные 59 мин + пар", + "iot_perfect_cotton_59_steam": "ХЛОПОК: ИДЕАЛЬНАЯ СТИРКА 59'", + "iot_rapid_a_class_60_steam": "Быстрая Класс A 60 + пар", + "iot_resistant_cotton_steam": "Хлопок + Пар", + "iot_shirts_steam": "Рубашки + Пар", + "iot_single_item_steam": "Одна вещь + пар", "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", - "iot_special_39_full_load_steam": "\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f 39\u00a0\u043c\u0438\u043d\u00a0+ \u043f\u0430\u0440", - "iot_steam_hygiene_plus": "\u0413\u0438\u0433\u0438\u0435\u043d\u0430 \u043f\u043b\u044e\u0441 \u043f\u0430\u0440\u043e\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 ", - "iot_synthetic_and_coloured_steam": "\u0421\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0430 \u0438 \u0446\u0432\u0435\u0442\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438\u00a0+ \u043f\u0430\u0440", - "iot_wash_and_dry": "\u0421\u0442\u0438\u0440\u043a\u0430 \u0438 \u0441\u0443\u0448\u043a\u0430", - "iot_wash_anti_mites": "\u041f\u0440\u043e\u0442\u0438\u0432\u043e\u043a\u043b\u0435\u0449\u0435\u0432\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430", - "iot_wash_anti_odor": "\u0423\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0430\u0445\u043e\u0432", + "iot_special_39_full_load_steam": "Специальная 39 мин + пар", + "iot_steam_hygiene_plus": "Гигиена плюс парообработка ", + "iot_synthetic_and_coloured_steam": "Синтетика и цветные ткани + пар", + "iot_wash_and_dry": "Стирка и сушка", + "iot_wash_anti_mites": "Противоклещевая обработка", + "iot_wash_anti_odor": "Устранение запахов", "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", - "iot_wash_baby_sanitizer": "\u0413\u0438\u0433\u0438\u0435\u043d\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0438\u0440\u043a\u0430", - "iot_wash_baby_sanitizer_steam": "\u0413\u0438\u0433\u0438\u0435\u043d\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0438\u0440\u043a\u0430 \u0434\u0435\u0442\u0441\u043a\u0438\u0445 \u0432\u0435\u0449\u0435\u0439 + \u043f\u0430\u0440", - "iot_wash_backpacks": "\u0420\u044e\u043a\u0437\u0430\u043a\u0438", - "iot_wash_backpacks_zelig": "\u0420\u044e\u043a\u0437\u0430\u043a\u0438", - "iot_wash_bathrobe": "\u0411\u0430\u043d\u043d\u044b\u0435 \u0445\u0430\u043b\u0430\u0442\u044b \u0438 \u043f\u043e\u043b\u043e\u0442\u0435\u043d\u0446\u0430", - "iot_wash_bathrobe_steam": "\u0411\u0430\u043d\u043d\u044b\u0435 \u0445\u0430\u043b\u0430\u0442\u044b + \u041f\u0430\u0440", - "iot_wash_bed_linen": "\u041f\u043e\u0441\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0431\u0435\u043b\u044c\u0435", - "iot_wash_bed_linen_steam": "\u041f\u043e\u0441\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0431\u0435\u043b\u044c\u0435 + \u041f\u0430\u0440", - "iot_wash_bed_linen_zelig": "\u041f\u043e\u0441\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0431\u0435\u043b\u044c\u0435", - "iot_wash_big_single_load": "\u0411\u043e\u043b\u044c\u0448\u0430\u044f \u0440\u0430\u0437\u043e\u0432\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430", - "iot_wash_bleaching": "\u041e\u0442\u0431\u0435\u043b\u0438\u0432\u0430\u043d\u0438\u0435", - "iot_wash_blood_stains": "\u041f\u044f\u0442\u043d\u0430 \u043a\u0440\u043e\u0432\u0438", - "iot_wash_cashmere": "\u041a\u0430\u0448\u0435\u043c\u0438\u0440", - "iot_wash_chocolate_stains": "\u041f\u044f\u0442\u043d\u0430 \u0448\u043e\u043a\u043e\u043b\u0430\u0434\u0430", - "iot_wash_cold_wash": "\u0421\u0442\u0438\u0440\u043a\u0430 \u0432 \u0445\u043e\u043b\u043e\u0434\u043d\u043e\u0439 \u0432\u043e\u0434\u0435", - "iot_wash_colored": "\u0426\u0432\u0435\u0442\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", - "iot_wash_colored_anti_stain": "\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043f\u044f\u0442\u0435\u043d \u0441 \u0446\u0432\u0435\u0442\u043d\u044b\u0445 \u0432\u0435\u0449\u0435\u0439", - "iot_wash_colored_delicate": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u043d\u044b\u0435", - "iot_wash_coloured": "\u0426\u0432\u0435\u0442\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", - "iot_wash_coloured_bed_linen": "\u0426\u0432\u0435\u0442\u043d\u043e\u0435 \u043f\u043e\u0441\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0431\u0435\u043b\u044c\u0435", - "iot_wash_coloured_bed_linen_steam": "\u0426\u0432\u0435\u0442\u043d\u043e\u0435 \u043f\u043e\u0441\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0431\u0435\u043b\u044c\u0435 + \u043f\u0430\u0440", - "iot_wash_coloured_curtains": "\u0426\u0432\u0435\u0442\u043d\u044b\u0435 \u0448\u0442\u043e\u0440\u044b", - "iot_wash_coloured_shirts": "\u0426\u0432\u0435\u0442\u043d\u044b\u0435 \u0440\u0443\u0431\u0430\u0448\u043a\u0438", - "iot_wash_coloured_shirts_steam": "\u0426\u0432\u0435\u0442\u043d\u044b\u0435 \u0440\u0443\u0431\u0430\u0448\u043a\u0438 + \u043f\u0430\u0440", - "iot_wash_coloured_steam": "\u0426\u0432\u0435\u0442\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438 + \u041f\u0430\u0440", - "iot_wash_coloured_tableclothes": "\u0426\u0432\u0435\u0442\u043d\u044b\u0435 \u0441\u043a\u0430\u0442\u0435\u0440\u0442\u0438", - "iot_wash_coloured_tableclothes_steam": "\u0426\u0432\u0435\u0442\u043d\u044b\u0435 \u0441\u043a\u0430\u0442\u0435\u0440\u0442\u0438\u00a0+ \u043f\u0430\u0440", - "iot_wash_cotton": "\u0425\u043b\u043e\u043f\u043e\u043a", - "iot_wash_cotton_steam": "\u0425\u043b\u043e\u043f\u043e\u043a + \u041f\u0430\u0440", - "iot_wash_cuddly_toys": "\u041c\u044f\u0433\u043a\u0438\u0435 \u0438\u0433\u0440\u0443\u0448\u043a\u0438", - "iot_wash_curtains": "\u0428\u0442\u043e\u0440\u044b", - "iot_wash_curtains_steam": "\u0428\u0442\u043e\u0440\u044b+\u041f\u0430\u0440", - "iot_wash_curtains_zelig": "\u0428\u0442\u043e\u0440\u044b", - "iot_wash_dark": "\u0422\u0435\u043c\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", - "iot_wash_darks_and_coloured_44": "\u0422\u0435\u043c\u043d\u044b\u0435 \u0438 \u0446\u0432\u0435\u0442\u043d\u044b\u0435 44 \u043c\u0438\u043d.", - "iot_wash_darks_and_coloured_59": "\u0422\u0435\u043c\u043d\u044b\u0435 \u0438 \u0446\u0432\u0435\u0442\u043d\u044b\u0435 59 \u043c\u0438\u043d.", - "iot_wash_darks_and_coloured_xl": "\u0422\u0435\u043c\u043d\u044b\u0435 \u0438 \u0446\u0432\u0435\u0442\u043d\u044b\u0435 XL", - "iot_wash_dark_steam": "\u0422\u0435\u043c\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438 + \u041f\u0430\u0440", + "iot_wash_baby_sanitizer": "Гигиеническая стирка", + "iot_wash_baby_sanitizer_steam": "Гигиеническая стирка детских вещей + пар", + "iot_wash_backpacks": "Рюкзаки", + "iot_wash_backpacks_zelig": "Рюкзаки", + "iot_wash_bathrobe": "Банные халаты и полотенца", + "iot_wash_bathrobe_steam": "Банные халаты + Пар", + "iot_wash_bed_linen": "Постельное белье", + "iot_wash_bed_linen_steam": "Постельное белье + Пар", + "iot_wash_bed_linen_zelig": "Постельное белье", + "iot_wash_big_single_load": "Большая разовая загрузка", + "iot_wash_bleaching": "Отбеливание", + "iot_wash_blood_stains": "Пятна крови", + "iot_wash_cashmere": "Кашемир", + "iot_wash_chocolate_stains": "Пятна шоколада", + "iot_wash_cold_wash": "Стирка в холодной воде", + "iot_wash_colored": "Цветные ткани", + "iot_wash_colored_anti_stain": "Удаление пятен с цветных вещей", + "iot_wash_colored_delicate": "Деликатные цветные", + "iot_wash_coloured": "Цветные ткани", + "iot_wash_coloured_bed_linen": "Цветное постельное белье", + "iot_wash_coloured_bed_linen_steam": "Цветное постельное белье + пар", + "iot_wash_coloured_curtains": "Цветные шторы", + "iot_wash_coloured_shirts": "Цветные рубашки", + "iot_wash_coloured_shirts_steam": "Цветные рубашки + пар", + "iot_wash_coloured_steam": "Цветные ткани + Пар", + "iot_wash_coloured_tableclothes": "Цветные скатерти", + "iot_wash_coloured_tableclothes_steam": "Цветные скатерти + пар", + "iot_wash_cotton": "Хлопок", + "iot_wash_cotton_steam": "Хлопок + Пар", + "iot_wash_cuddly_toys": "Мягкие игрушки", + "iot_wash_curtains": "Шторы", + "iot_wash_curtains_steam": "Шторы+Пар", + "iot_wash_curtains_zelig": "Шторы", + "iot_wash_dark": "Темные ткани", + "iot_wash_darks_and_coloured_44": "Темные и цветные 44 мин.", + "iot_wash_darks_and_coloured_59": "Темные и цветные 59 мин.", + "iot_wash_darks_and_coloured_xl": "Темные и цветные XL", + "iot_wash_dark_steam": "Темные ткани + Пар", "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", "iot_wash_dash_cold_cycle": "Dash Cold Clean", "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", - "iot_wash_delicate": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0432\u0435\u0449\u0438", - "iot_wash_delicate_antiallergy": "\u0417\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u0430\u043b\u043b\u0435\u0440\u0433\u0438\u0438 \u0434\u043b\u044f \u0434\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0445 \u0432\u0435\u0449\u0435\u0439", - "iot_wash_delicate_antiallergy_steam": "\u0417\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u0430\u043b\u043b\u0435\u0440\u0433\u0438\u0438 \u0434\u043b\u044f \u0434\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0445 \u0432\u0435\u0449\u0435\u0439 + \u041f\u0430\u0440", - "iot_wash_delicate_antiallergy_zelig": "\u0417\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u0430\u043b\u043b\u0435\u0440\u0433\u0438\u0438 \u0434\u043b\u044f \u0434\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0445 \u0432\u0435\u0449\u0435\u0439", - "iot_wash_delicate_colors": "\u0426\u0432\u0435\u0442\u043d\u044b\u0435 \u0434\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", - "iot_wash_delicate_colors_steam": "\u0426\u0432\u0435\u0442\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438 + \u043f\u0430\u0440", - "iot_wash_delicate_dark": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0442\u0435\u043c\u043d\u044b\u0435", - "iot_wash_delicate_steam": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0432\u0435\u0449\u0438 + \u041f\u0430\u0440", - "iot_wash_delicate_tablecloths": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0441\u043a\u0430\u0442\u0435\u0440\u0442\u0438", - "iot_wash_delicate_tablecloths_steam": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0441\u043a\u0430\u0442\u0435\u0440\u0442\u0438 + \u041f\u0430\u0440", - "iot_wash_delicate_whites": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0431\u0435\u043b\u044b\u0435", - "iot_wash_denim_jeans": "\u0414\u0435\u043d\u0438\u043c \u2013 \u0434\u0436\u0438\u043d\u0441\u044b", - "iot_wash_diving_suits": "\u0413\u0438\u0434\u0440\u043e\u043a\u043e\u0441\u0442\u044e\u043c\u044b", - "iot_wash_diving_suits_zelig": "\u0413\u0438\u0434\u0440\u043e\u043a\u043e\u0441\u0442\u044e\u043c\u044b", - "iot_wash_down_jackets": "\u041f\u0443\u0445\u043e\u0432\u0438\u043a\u0438", - "iot_wash_down_jackets_zelig": "\u041f\u0443\u0445\u043e\u0432\u0438\u043a\u0438", - "iot_wash_duvet": "\u041f\u0443\u0445\u043e\u0432\u043e\u0435 \u043e\u0434\u0435\u044f\u043b\u043e", - "iot_wash_fruit_stains": "\u041f\u044f\u0442\u043d\u0430 \u043e\u0442 \u0444\u0440\u0443\u043a\u0442\u043e\u0432", - "iot_wash_gym_fit": "\u041e\u0434\u0435\u0436\u0434\u0430 \u0434\u043b\u044f \u0441\u043f\u043e\u0440\u0442\u0437\u0430\u043b\u0430", - "iot_wash_handwash": "\u0420\u0443\u0447\u043d\u0430\u044f \u0441\u0442\u0438\u0440\u043a\u0430", - "iot_wash_handwash_colored": "\u0420\u0443\u0447\u043d\u0430\u044f \u0441\u0442\u0438\u0440\u043a\u0430 \u0446\u0432\u0435\u0442\u043d\u044b\u0445 \u0442\u043a\u0430\u043d\u0435\u0439", - "iot_wash_handwash_dark": "\u0420\u0443\u0447\u043d\u0430\u044f \u0441\u0442\u0438\u0440\u043a\u0430 \u0442\u0435\u043c\u043d\u044b\u0445 \u0442\u043a\u0430\u043d\u0435\u0439", - "iot_wash_lingerie": "\u0411\u0435\u043b\u044c\u0435", - "iot_wash_masks_refresh": "\u041e\u0441\u0432\u0435\u0436\u0435\u043d\u0438\u0435 \u043c\u0430\u0441\u043e\u043a", - "iot_wash_masks_sanification": "\u0414\u0435\u0437\u0438\u043d\u0444\u0435\u043a\u0446\u0438\u044f \u043c\u0430\u0441\u043e\u043a", - "iot_wash_masks_sanification_steam": "\u0414\u0435\u0437\u0438\u043d\u0444\u0435\u043a\u0446\u0438\u044f \u043c\u0430\u0441\u043e\u043a + \u041f\u0430\u0440", - "iot_wash_mats": "\u041a\u043e\u0432\u0440\u044b", - "iot_wash_men_s_trousers": "\u0431\u0440\u044e\u043a\u0438", - "iot_wash_mixed": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", - "iot_wash_mixed_steam": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438 + \u041f\u0430\u0440", - "iot_wash_mix_and_coloured_44": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435 \u0438 \u0446\u0432\u0435\u0442\u043d\u044b\u0435 44 \u043c\u0438\u043d.", - "iot_wash_mix_and_coloured_59": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435 \u0438 \u0446\u0432\u0435\u0442\u043d\u044b\u0435 59 \u043c\u0438\u043d.", - "iot_wash_mix_and_coloured_xl": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435 \u0438 \u0446\u0432\u0435\u0442\u043d\u044b\u0435 XL", - "iot_wash_new_clothes": "\u041d\u043e\u0432\u0430\u044f \u043e\u0434\u0435\u0436\u0434\u0430", - "iot_wash_perfect_white": "\u0411\u0435\u0437\u0443\u043f\u0440\u0435\u0447\u043d\u044b\u0439 \u0431\u0435\u043b\u044b\u0439", - "iot_wash_perfect_white_steam": "\u0411\u0435\u0437\u0443\u043f\u0440\u0435\u0447\u043d\u044b\u0439 \u0431\u0435\u043b\u044b\u0439 + \u041f\u0430\u0440", - "iot_wash_pets": "\u041f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0436\u0438\u0432\u043e\u0442\u043d\u044b\u0445", - "iot_wash_pets_hair_removal": "\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0448\u0435\u0440\u0441\u0442\u0438 \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0445 \u0436\u0438\u0432\u043e\u0442\u043d\u044b\u0445", - "iot_wash_pets_odours_stains_removal": "\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043f\u044f\u0442\u0435\u043d \u0438 \u0437\u0430\u043f\u0430\u0445\u043e\u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0445 \u0436\u0438\u0432\u043e\u0442\u043d\u044b\u0445", - "iot_wash_pets_steam": "\u041f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0436\u0438\u0432\u043e\u0442\u043d\u044b\u0445", - "iot_wash_playsuits": "\u041f\u043b\u044f\u0436\u043d\u044b\u0435 \u043a\u043e\u0441\u0442\u044e\u043c\u044b", - "iot_wash_playsuits_steam": "\u041f\u043b\u044f\u0436\u043d\u044b\u0435 \u043a\u043e\u0441\u0442\u044e\u043c\u044b + \u041f\u0430\u0440", - "iot_wash_quick_drum_cleaner": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f \u043e\u0447\u0438\u0441\u0442\u043a\u0430 \u0431\u0430\u0440\u0430\u0431\u0430\u043d\u0430", - "iot_wash_rapid_14": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f 14 \u043c\u0438\u043d.", - "iot_wash_rapid_30": "(\u0411\u044b\u0441\u0442\u0440\u0430\u044f 30 \u043c\u0438\u043d.", - "iot_wash_rapid_44": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f 44 \u043c\u0438\u043d.", - "iot_wash_rapid_59": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f 59 \u043c\u0438\u043d", - "iot_wash_rapid_59_steam": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f 59' + \u043f\u0430\u0440", - "iot_wash_refresh_14_min": "\u041e\u0441\u0432\u0435\u0436\u0435\u043d\u0438\u0435 14 \u043c\u0438\u043d.", - "iot_wash_resistant_colored": "\u041f\u0440\u043e\u0447\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", - "iot_wash_resistant_dark": "\u041f\u0440\u043e\u0447\u043d\u044b\u0435 \u0442\u0435\u043c\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", - "iot_wash_resistant_whites": "\u041f\u0440\u043e\u0447\u043d\u044b\u0435 \u0431\u0435\u043b\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", - "iot_wash_rinse": "\u041f\u043e\u043b\u043e\u0441\u043a\u0430\u043d\u0438\u0435", - "iot_wash_shirts": "\u0420\u0443\u0431\u0430\u0448\u043a\u0438", - "iot_wash_shirts_steam": "\u0420\u0443\u0431\u0430\u0448\u043a\u0438 + \u041f\u0430\u0440", - "iot_wash_silk": "\u0428\u0435\u043b\u043a", - "iot_wash_ski_suit": "\u041b\u044b\u0436\u043d\u044b\u0435 \u043a\u043e\u0441\u0442\u044e\u043c\u044b", - "iot_wash_ski_suit_zelig": "\u041b\u044b\u0436\u043d\u044b\u0435 \u043a\u043e\u0441\u0442\u044e\u043c\u044b", - "iot_wash_spin": "\u041e\u0442\u0436\u0438\u043c", - "iot_wash_sport": "\u0421\u043f\u043e\u0440\u0442", - "iot_wash_sport_anti_odor": "\u0423\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0430\u0445\u0430 \u0441\u043e \u0441\u043f\u043e\u0440\u0442\u0438\u0432\u043d\u043e\u0439 \u043e\u0434\u0435\u0436\u0434\u044b", - "iot_wash_sport_anti_odor_zelig": "\u0423\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0430\u0445\u0430 \u0441\u043e \u0441\u043f\u043e\u0440\u0442\u0438\u0432\u043d\u043e\u0439 \u043e\u0434\u0435\u0436\u0434\u044b", - "iot_wash_stains_remover": "\u0412\u044b\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u044f\u0442\u0435\u043d", - "iot_wash_swimsuits_and_bikinis": "\u041a\u0443\u043f\u0430\u043b\u044c\u043d\u0438\u043a\u0438", - "iot_wash_synthetic": "\u0421\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0430", - "iot_wash_synthetic_steam": "\u0421\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0430 + \u041f\u0430\u0440", - "iot_wash_tablecloths": "\u0421\u043a\u0430\u0442\u0435\u0440\u0442\u0438", - "iot_wash_tablecloths_steam": "\u0421\u043a\u0430\u0442\u0435\u0440\u0442\u0438 + \u041f\u0430\u0440", - "iot_wash_technical_fabrics": "\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", - "iot_wash_technical_fabrics_zelig": "\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", - "iot_wash_technical_jackets": "\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043a\u0443\u0440\u0442\u043a\u0438", - "iot_wash_technical_jackets_zelig": "\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043a\u0443\u0440\u0442\u043a\u0438", - "iot_wash_trainers": "\u0421\u043f\u043e\u0440\u0442\u0438\u0432\u043d\u0430\u044f \u043e\u0431\u0443\u0432\u044c", - "iot_wash_whites": "\u0411\u0435\u043b\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", - "iot_wash_whites_44": "\u0411\u0435\u043b\u044b\u0435 \u0442\u043a\u0430\u043d\u0438 44 \u043c\u0438\u043d.", - "iot_wash_whites_59": "\u0411\u0435\u043b\u044b\u0435 \u0442\u043a\u0430\u043d\u0438 59 \u043c\u0438\u043d.", - "iot_wash_whites_xl": "\u0411\u0435\u043b\u044b\u0435 \u0442\u043a\u0430\u043d\u0438 XL", - "iot_wash_wine_stains": "\u041f\u044f\u0442\u043d\u0430 \u043e\u0442 \u0432\u0438\u043d\u0430", - "iot_wash_wool": "\u0428\u0435\u0440\u0441\u0442\u044c", - "jeans": "\u0414\u0436\u0438\u043d\u0441\u044b", - "jeans_60": "\u0434\u0436\u0438\u043d\u0441\u044b", - "low_dry": "\u0421\u0443\u0448\u043a\u0430 \u0441\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0445 \u0442\u043a\u0430\u043d\u0435\u0439", - "mixed": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", - "mixed_and_colored_59": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435 \u0438 \u0446\u0432\u0435\u0442\u043d\u044b\u0435 59 \u043c\u0438\u043d.", - "mixed_steam": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438 + \u041f\u0430\u0440", - "mix_and_colour_59": "\u0421\u041c\u0415\u0428\u0410\u041d\u041d\u042b\u0415 \u0418 \u0426\u0412\u0415\u0422\u041d\u042b\u0415 59'", - "mix_and_colour_59_steam": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435 \u0438 \u0446\u0432\u0435\u0442\u043d\u044b\u0435 59\u00a0\u043c\u0438\u043d\u00a0+ \u043f\u0430\u0440", - "night_and_day": "\u041d\u043e\u0447\u043d\u0430\u044f \u0441\u0442\u0438\u0440\u043a\u0430", - "night_wash": "\u041d\u043e\u0447\u043d\u043e\u0439 \u0446\u0438\u043a\u043b", - "perfect_59": "\u0418\u0434\u0435\u0430\u043b\u044c\u043d\u0430\u044f 59 \u043c\u0438\u043d.", - "perfect_cotton_59": "\u0425\u041b\u041e\u041f\u041e\u041a: \u0418\u0414\u0415\u0410\u041b\u042c\u041d\u0410\u042f \u0421\u0422\u0418\u0420\u041a\u0410 59'", - "perfect_cotton_59_steam": "\u0425\u041b\u041e\u041f\u041e\u041a: \u0418\u0414\u0415\u0410\u041b\u042c\u041d\u0410\u042f \u0421\u0422\u0418\u0420\u041a\u0410 59'", - "perfect_whites_59": "\u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u0431\u0435\u043b\u043e\u0435 59'", - "rapid_14_min": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f 14 \u043c\u0438\u043d", - "rapid_30_min": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f 30 \u043c\u0438\u043d.", - "rapid_44_min": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f 44 \u043c\u0438\u043d.", - "rapid_a_class_60": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f \u041a\u043b\u0430\u0441\u0441 A 60", - "rapid_a_class_60_steam": "\u0411\u044b\u0441\u0442\u0440\u0430\u044f \u041a\u043b\u0430\u0441\u0441 A 60 + \u043f\u0430\u0440", - "rapid_wash_and_dry_59_min": "\u0421\u0442\u0438\u0440\u043a\u0430 \u0438 \u0441\u0443\u0448\u043a\u0430 59 \u043c\u0438\u043d.", - "resistant_cotton": "\u0425\u043b\u043e\u043f\u043e\u043a", - "resistant_cotton_steam": "\u0425\u043b\u043e\u043f\u043e\u043a + \u041f\u0430\u0440", - "rinse": "\u041f\u043e\u043b\u043e\u0441\u043a\u0430\u043d\u0438\u0435", - "shirts_steam": "\u0420\u0443\u0431\u0430\u0448\u043a\u0438 + \u041f\u0430\u0440", - "silent_night": "\u041d\u043e\u0447\u043d\u043e\u0439 \u0446\u0438\u043a\u043b", - "single_item": "\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442", - "single_item_steam": "\u041e\u0434\u043d\u0430 \u0432\u0435\u0449\u044c\u00a0+ \u043f\u0430\u0440", + "iot_wash_delicate": "Деликатные вещи", + "iot_wash_delicate_antiallergy": "Защита от аллергии для деликатных вещей", + "iot_wash_delicate_antiallergy_steam": "Защита от аллергии для деликатных вещей + Пар", + "iot_wash_delicate_antiallergy_zelig": "Защита от аллергии для деликатных вещей", + "iot_wash_delicate_colors": "Цветные деликатные ткани", + "iot_wash_delicate_colors_steam": "Цветные ткани + пар", + "iot_wash_delicate_dark": "Деликатные темные", + "iot_wash_delicate_steam": "Деликатные вещи + Пар", + "iot_wash_delicate_tablecloths": "Деликатные скатерти", + "iot_wash_delicate_tablecloths_steam": "Деликатные скатерти + Пар", + "iot_wash_delicate_whites": "Деликатные белые", + "iot_wash_denim_jeans": "Деним – джинсы", + "iot_wash_diving_suits": "Гидрокостюмы", + "iot_wash_diving_suits_zelig": "Гидрокостюмы", + "iot_wash_down_jackets": "Пуховики", + "iot_wash_down_jackets_zelig": "Пуховики", + "iot_wash_duvet": "Пуховое одеяло", + "iot_wash_fruit_stains": "Пятна от фруктов", + "iot_wash_gym_fit": "Одежда для спортзала", + "iot_wash_handwash": "Ручная стирка", + "iot_wash_handwash_colored": "Ручная стирка цветных тканей", + "iot_wash_handwash_dark": "Ручная стирка темных тканей", + "iot_wash_lingerie": "Белье", + "iot_wash_masks_refresh": "Освежение масок", + "iot_wash_masks_sanification": "Дезинфекция масок", + "iot_wash_masks_sanification_steam": "Дезинфекция масок + Пар", + "iot_wash_mats": "Ковры", + "iot_wash_men_s_trousers": "брюки", + "iot_wash_mixed": "Смешанные ткани", + "iot_wash_mixed_steam": "Смешанные ткани + Пар", + "iot_wash_mix_and_coloured_44": "Смешанные и цветные 44 мин.", + "iot_wash_mix_and_coloured_59": "Смешанные и цветные 59 мин.", + "iot_wash_mix_and_coloured_xl": "Смешанные и цветные XL", + "iot_wash_new_clothes": "Новая одежда", + "iot_wash_perfect_white": "Безупречный белый", + "iot_wash_perfect_white_steam": "Безупречный белый + Пар", + "iot_wash_pets": "Принадлежности для животных", + "iot_wash_pets_hair_removal": "Удаление шерсти домашних животных", + "iot_wash_pets_odours_stains_removal": "Удаление пятен и запахов домашних животных", + "iot_wash_pets_steam": "Принадлежности для животных", + "iot_wash_playsuits": "Пляжные костюмы", + "iot_wash_playsuits_steam": "Пляжные костюмы + Пар", + "iot_wash_quick_drum_cleaner": "Быстрая очистка барабана", + "iot_wash_rapid_14": "Быстрая 14 мин.", + "iot_wash_rapid_30": "(Быстрая 30 мин.", + "iot_wash_rapid_44": "Быстрая 44 мин.", + "iot_wash_rapid_59": "Быстрая 59 мин", + "iot_wash_rapid_59_steam": "Быстрая 59' + пар", + "iot_wash_refresh_14_min": "Освежение 14 мин.", + "iot_wash_resistant_colored": "Прочные цветные ткани", + "iot_wash_resistant_dark": "Прочные темные ткани", + "iot_wash_resistant_whites": "Прочные белые ткани", + "iot_wash_rinse": "Полоскание", + "iot_wash_shirts": "Рубашки", + "iot_wash_shirts_steam": "Рубашки + Пар", + "iot_wash_silk": "Шелк", + "iot_wash_ski_suit": "Лыжные костюмы", + "iot_wash_ski_suit_zelig": "Лыжные костюмы", + "iot_wash_spin": "Отжим", + "iot_wash_sport": "Спорт", + "iot_wash_sport_anti_odor": "Устранение запаха со спортивной одежды", + "iot_wash_sport_anti_odor_zelig": "Устранение запаха со спортивной одежды", + "iot_wash_stains_remover": "Выведение пятен", + "iot_wash_swimsuits_and_bikinis": "Купальники", + "iot_wash_synthetic": "Синтетика", + "iot_wash_synthetic_steam": "Синтетика + Пар", + "iot_wash_tablecloths": "Скатерти", + "iot_wash_tablecloths_steam": "Скатерти + Пар", + "iot_wash_technical_fabrics": "Современные ткани", + "iot_wash_technical_fabrics_zelig": "Современные ткани", + "iot_wash_technical_jackets": "Современные куртки", + "iot_wash_technical_jackets_zelig": "Современные куртки", + "iot_wash_trainers": "Спортивная обувь", + "iot_wash_whites": "Белые ткани", + "iot_wash_whites_44": "Белые ткани 44 мин.", + "iot_wash_whites_59": "Белые ткани 59 мин.", + "iot_wash_whites_xl": "Белые ткани XL", + "iot_wash_wine_stains": "Пятна от вина", + "iot_wash_wool": "Шерсть", + "jeans": "Джинсы", + "jeans_60": "джинсы", + "low_dry": "Сушка смешанных тканей", + "mixed": "Смешанные ткани", + "mixed_and_colored_59": "Смешанные и цветные 59 мин.", + "mixed_steam": "Смешанные ткани + Пар", + "mix_and_colour_59": "СМЕШАННЫЕ И ЦВЕТНЫЕ 59'", + "mix_and_colour_59_steam": "Смешанные и цветные 59 мин + пар", + "night_and_day": "Ночная стирка", + "night_wash": "Ночной цикл", + "perfect_59": "Идеальная 59 мин.", + "perfect_cotton_59": "ХЛОПОК: ИДЕАЛЬНАЯ СТИРКА 59'", + "perfect_cotton_59_steam": "ХЛОПОК: ИДЕАЛЬНАЯ СТИРКА 59'", + "perfect_whites_59": "идеально белое 59'", + "rapid_14_min": "Быстрая 14 мин", + "rapid_30_min": "Быстрая 30 мин.", + "rapid_44_min": "Быстрая 44 мин.", + "rapid_a_class_60": "Быстрая Класс A 60", + "rapid_a_class_60_steam": "Быстрая Класс A 60 + пар", + "rapid_wash_and_dry_59_min": "Стирка и сушка 59 мин.", + "resistant_cotton": "Хлопок", + "resistant_cotton_steam": "Хлопок + Пар", + "rinse": "Полоскание", + "shirts_steam": "Рубашки + Пар", + "silent_night": "Ночной цикл", + "single_item": "Отдельный элемент", + "single_item_steam": "Одна вещь + пар", "smart_wash": "Smart Wash", - "soft_care": "\u0414\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0439 \u0443\u0445\u043e\u0434", + "soft_care": "Деликатный уход", "soft_care_steam": "Soft Care + Steam", "soft_care_steam_title": "Soft Care + Steam", - "special_39": "C\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 39'", - "special_39_full_load": "C\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 39'", - "special_39_full_load_steam": "\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f 39\u00a0\u043c\u0438\u043d\u00a0+ \u043f\u0430\u0440", - "special_49": "\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 49 \u043c\u0438\u043d.", - "sport_39": "\u0421\u043f\u043e\u0440\u0442 39 \u043c\u0438\u043d.", - "sport_plus_29": "\u0421\u041f\u041e\u0420\u0422 \u041f\u041b\u042e\u0421 29\"", - "sport_plus_39": "\u0421\u041f\u041e\u0420\u0422 \u041f\u041b\u042e\u0421 39'", - "steam_39": "\u041f\u0430\u0440 39 \u043c\u0438\u043d.", + "special_39": "Cпециальный 39'", + "special_39_full_load": "Cпециальный 39'", + "special_39_full_load_steam": "Специальная 39 мин + пар", + "special_49": "Специальный 49 мин.", + "sport_39": "Спорт 39 мин.", + "sport_plus_29": "СПОРТ ПЛЮС 29\"", + "sport_plus_39": "СПОРТ ПЛЮС 39'", + "steam_39": "Пар 39 мин.", "steam_care_pro": "Steam Care Pro", - "steam_care_pro_cotton": "Steam Care Pro\u00a0\u2014 \u0445\u043b\u043e\u043f\u043e\u043a", - "steam_care_pro_delicates": "Steam Care Pro\u00a0\u2014 \u0434\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0432\u0435\u0449\u0438", - "steam_care_pro_synthetic": "Steam Care Pro\u00a0\u2014 \u0441\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0430", - "steam_hygiene_plus": "\u0413\u0438\u0433\u0438\u0435\u043d\u0430 \u043f\u043b\u044e\u0441 \u043f\u0430\u0440\u043e\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 ", - "synthetics": "\u0421\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0430", - "synthetic_and_coloured": "\u0421\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0430 \u0438 \u0446\u0432\u0435\u0442\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438", - "synthetic_and_coloured_steam": "\u0421\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0430 \u0438 \u0446\u0432\u0435\u0442\u043d\u044b\u0435 \u0442\u043a\u0430\u043d\u0438\u00a0+ \u043f\u0430\u0440", + "steam_care_pro_cotton": "Steam Care Pro — хлопок", + "steam_care_pro_delicates": "Steam Care Pro — деликатные вещи", + "steam_care_pro_synthetic": "Steam Care Pro — синтетика", + "steam_hygiene_plus": "Гигиена плюс парообработка ", + "synthetics": "Синтетика", + "synthetic_and_coloured": "Синтетика и цветные ткани", + "synthetic_and_coloured_steam": "Синтетика и цветные ткани + пар", "tailored_resistant_cotton": "Tailored Resistant Cotton", "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", - "total_care": "\u041e\u0431\u0449\u0438\u0439 \u0443\u0445\u043e\u0434", - "tumbling": "\u0411\u0430\u0440\u0430\u0431\u0430\u043d", - "wool": "\u0428\u0435\u0440\u0441\u0442\u044c", - "wool_and_delicates_49": "\u0448\u0435\u0440\u0441\u0442\u044c/\u0434\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0435 49'", - "wool_dry": "\u0421\u0443\u0448\u043a\u0430 \u0448\u0435\u0440\u0441\u0442\u0438", - "wool_soft_care": "\u0448\u0435\u0440\u0441\u0442\u044c & \u0434\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0439 \u0443\u0445\u043e\u0434" + "total_care": "Общий уход", + "tumbling": "Барабан", + "wool": "Шерсть", + "wool_and_delicates_49": "шерсть/деликатные 49'", + "wool_dry": "Сушка шерсти", + "wool_soft_care": "шерсть & деликатный уход" }, - "name": "\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430" + "name": "Программа" }, "dry_levels": { "state": { - "0": "\u0411\u0435\u0437 \u0441\u0443\u0448\u043a\u0438", - "1": "\u041f\u043e\u0434 \u0443\u0442\u044e\u0433", - "2": "\u0412 \u0448\u043a\u0430\u0444", - "3": "\u0413\u043e\u0442\u043e\u0432\u043e \u0432 \u0448\u043a\u0430\u0444", - "4": "\u042d\u043a\u0441\u0442\u0440\u0430 \u0441\u0443\u0448\u043a\u0430", - "12": "\u041f\u043e\u0434 \u0443\u0442\u044e\u0433", - "13": "\u0413\u043e\u0442\u043e\u0432\u043e \u0432 \u0448\u043a\u0430\u0444", - "14": "\u0413\u043e\u0442\u043e\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0434\u0435\u0432\u0430\u043d\u0438\u044f", - "15": "\u042d\u043a\u0441\u0442\u0440\u0430 \u0441\u0443\u0448\u043a\u0430" + "0": "Без сушки", + "1": "Под утюг", + "2": "В шкаф", + "3": "Готово в шкаф", + "4": "Экстра сушка", + "12": "Под утюг", + "13": "Готово в шкаф", + "14": "Готово для надевания", + "15": "Экстра сушка" }, - "name": "\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u0441\u0443\u0445\u043e\u0441\u0442\u0438" + "name": "Уровень сухости" }, "spin_speed": { - "name": "\u041e\u0442\u0436\u0438\u043c" + "name": "Отжим" }, "temperature": { - "name": "\u0422\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430" + "name": "Температура" }, "dry_time": { - "name": "\u0412\u0440\u0435\u043c\u044f \u0441\u0443\u0448\u043a\u0438" + "name": "Время сушки" } }, "switch": { "anti_crease": { - "name": "\u041f\u0440\u043e\u0442\u0438\u0432\u043e\u0441\u043c\u0438\u043d\u0430\u043d\u0438\u0435" + "name": "Противосминание" }, "add_dish": { "name": "" }, "eco_express": { - "name": "\u042d\u043a\u043e" + "name": "Эко" }, "extra_dry": { - "name": "\u0421\u0443\u043f\u0435\u0440\u0441\u0443\u0448\u043a\u0430" + "name": "Суперсушка" }, "half_load": { - "name": "\u041f\u043e\u043b\u043e\u0432\u0438\u043d\u043d\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430" + "name": "Половинная загрузка" }, "open_door": { - "name": "\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0434\u0432\u0435\u0440\u0446\u0443" + "name": "Откройте дверцу" }, "three_in_one": { - "name": "3 \u0432 1" + "name": "3 в 1" }, "preheat": { - "name": "\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043e\u0433\u0440\u0435\u0432" + "name": "Предварительный разогрев" }, "dish_washer": { - "name": "\u041f\u043e\u0441\u0443\u0434\u043e\u043c\u043e\u0435\u0447\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430" + "name": "Посудомоечная машина" }, "tumble_dryer": { - "name": "\u0421\u0443\u0448\u0438\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430" + "name": "Сушильная машина" }, "washing_machine": { - "name": "\u0421\u0442\u0438\u0440\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430" + "name": "Стиральная машина" }, "washer_dryer": { - "name": "\u0421\u0442\u0438\u0440\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u0441 \u0441\u0443\u0448\u043a\u043e\u0439" + "name": "Стиральная машина с сушкой" }, "oven": { - "name": "\u0414\u0443\u0445\u043e\u0432\u043e\u0439 \u0448\u043a\u0430\u0444" + "name": "Духовой шкаф" }, "prewash": { - "name": "\u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043c\u043e\u0439\u043a\u0430" + "name": "предварительная мойка" }, "pause": { - "name": "\u041f\u0430\u0443\u0437\u0430" + "name": "Пауза" }, "keep_fresh": { - "name": "Keep Fresh (\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u0432\u0435\u0436\u0435\u0441\u0442\u0438)" + "name": "Keep Fresh (Сохранение свежести)" }, "delay_time": { - "name": "\u041e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u043f\u0443\u0441\u043a" + "name": "Отложенный пуск" } }, "binary_sensor": { "door_lock": { - "name": "\u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u0434\u0432\u0435\u0440\u0446\u044b" + "name": "Блокировка дверцы" }, "extra_rinse_1": { - "name": "+1 \u043f\u043e\u043b\u043e\u0441\u043a\u0430\u043d\u0438\u0435" + "name": "+1 полоскание" }, "extra_rinse_2": { - "name": "+2 \u043f\u043e\u043b\u043e\u0441\u043a\u0430\u043d\u0438\u044f" + "name": "+2 полоскания" }, "extra_rinse_3": { - "name": "+3 \u043f\u043e\u043b\u043e\u0441\u043a\u0430\u043d\u0438\u044f" + "name": "+3 полоскания" }, "good_night": { - "name": "\u0421\u043f\u043e\u043a\u043e\u0439\u043d\u043e\u0439 \u043d\u043e\u0447\u0438" + "name": "Спокойной ночи" }, "anti_crease": { - "name": "\u041f\u0440\u043e\u0442\u0438\u0432\u043e\u0441\u043c\u0438\u043d\u0430\u043d\u0438\u0435" + "name": "Противосминание" }, "aqua_plus": { - "name": "\u0410\u043a\u0432\u0430\u043f\u043b\u044e\u0441" + "name": "Акваплюс" }, "spin_speed": { - "name": "\u041e\u0442\u0436\u0438\u043c" + "name": "Отжим" }, "programs_dw": { - "name": "\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430" + "name": "Программа" }, "programs_ih": { - "name": "\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430" + "name": "Программа" }, "programs_ov": { - "name": "\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430" + "name": "Программа" }, "programs_td": { - "name": "\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430" + "name": "Программа" }, "programs_wm": { - "name": "\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430" + "name": "Программа" }, "still_hot": { - "name": "\u0415\u0449\u0435 \u0433\u043e\u0440\u044f\u0447\u0438\u0439" + "name": "Еще горячий" }, "pan_status": { - "name": "\u041f\u043e\u0441\u0443\u0434\u0430" + "name": "Посуда" }, "remote_control": { - "name": "\u0414\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u043e\u043d\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435" + "name": "Дистанционное управление" }, "rinse_aid": { - "name": "\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u043e\u043f\u043e\u043b\u0430\u0441\u043a\u0438\u0432\u0430\u0442\u0435\u043b\u044f" + "name": "Уровень ополаскивателя" }, "salt_level": { - "name": "\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u0441\u043e\u043b\u0438" + "name": "Уровень соли" }, "door_open": { - "name": "\u0414\u0432\u0435\u0440\u0446\u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u0430" + "name": "Дверца открыта" }, "connection": { - "name": "\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f" + "name": "Подключение оборудования" }, "child_lock": { - "name": "\u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u043e\u0442 \u0434\u0435\u0442\u0435\u0439" + "name": "Блокировка от детей" }, "on": { - "name": "\u0412\u043a\u043b." + "name": "Вкл." }, "prewash": { - "name": "\u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043c\u043e\u0439\u043a\u0430" + "name": "предварительная мойка" } }, "number": { "power_management": { - "name": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043f\u0438\u0442\u0430\u043d\u0438\u0435\u043c" + "name": "Управление электропитанием" }, "temperature": { - "name": "\u0422\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430" + "name": "Температура" }, "delay_time": { - "name": "\u041e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u043f\u0443\u0441\u043a" + "name": "Отложенный пуск" }, "water_hard": { - "name": "\u0416\u0435\u0441\u0442\u043a\u043e\u0441\u0442\u044c \u0432\u043e\u0434\u044b" + "name": "Жесткость воды" }, "program_duration": { - "name": "\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b" + "name": "Продолжительность программы" }, "target_temperature": { - "name": "\u0417\u0430\u0434\u0430\u043d\u043d\u0430\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430" + "name": "Заданная температура" }, "rinse_iterations": { - "name": "\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u043e\u0441\u043a\u0430\u043d\u0438\u0439" + "name": "Количество полосканий" }, "wash_time": { - "name": "\u0412\u0440\u0435\u043c\u044f \u0441\u0442\u0438\u0440\u043a\u0438" + "name": "Время стирки" }, "dry_time": { - "name": "\u0412\u0440\u0435\u043c\u044f \u0441\u0443\u0448\u043a\u0438" + "name": "Время сушки" } }, "button": { "induction_hob": { - "name": "\u0418\u043d\u0434\u0443\u043a\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0432\u0430\u0440\u043e\u0447\u043d\u0430\u044f \u043f\u0430\u043d\u0435\u043b\u044c" + "name": "Индукционная варочная панель" } } } diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index fa143fc..32713dc 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -3,830 +3,829 @@ "sensor": { "washing_modes": { "state": { - "0": "Pripraven\u00e9", - "1": "Pripraven\u00e9", - "3": "Pozastavi\u0165", - "4": "Napl\u00e1novan\u00e9", - "5": "Napl\u00e1novan\u00e9", + "0": "Pripravené", + "1": "Pripravené", + "3": "Pozastaviť", + "4": "Naplánované", + "5": "Naplánované", "6": "Chyba", - "7": "Pripraven\u00e9" + "7": "Pripravené" } }, "program_phases_wm": { "state": { - "0": "Pripraven\u00e9", + "0": "Pripravené", "1": "Pranie", "2": "Pranie", - "3": "Odstre\u010fovanie", + "3": "Odstreďovanie", "4": "Oplachovanie", "5": "Oplachovanie", "6": "Oplachovanie", - "7": "Su\u0161enie", + "7": "Sušenie", "9": "Para", - "10": "Pripraven\u00e9", - "11": "Odstre\u010fovanie", - "12": "V\u00e1\u017eenie ", - "13": "V\u00e1\u017eenie ", + "10": "Pripravené", + "11": "Odstreďovanie", + "12": "Váženie ", + "13": "Váženie ", "14": "Pranie", "15": "Pranie", "16": "Pranie", "17": "Oplachovanie", "18": "Oplachovanie", - "19": "Napl\u00e1novan\u00e9", - "20": "Uchova\u0165 svie\u017ee", - "24": "Osvie\u017eenie", + "19": "Naplánované", + "20": "Uchovať svieže", + "24": "Osvieženie", "25": "Pranie", "26": "Ohrev", "27": "Pranie" }, - "name": "F\u00e1za" + "name": "Fáza" }, "program_phases_td": { "state": { - "0": "Pripraven\u00e9", - "1": "Su\u0161enie", - "2": "Su\u0161enie", - "3": "Schladi\u0165", - "13": "Schladi\u0165", - "14": "Su\u0161enie", - "15": "Su\u0161enie", - "16": "Schladi\u0165", - "18": "Uchova\u0165 svie\u017ee", - "19": "Su\u0161enie", - "20": "Su\u0161enie" + "0": "Pripravené", + "1": "Sušenie", + "2": "Sušenie", + "3": "Schladiť", + "13": "Schladiť", + "14": "Sušenie", + "15": "Sušenie", + "16": "Schladiť", + "18": "Uchovať svieže", + "19": "Sušenie", + "20": "Sušenie" }, - "name": "F\u00e1za" + "name": "Fáza" }, "program_phases_dw": { "state": { - "0": "Pripraven\u00e9", + "0": "Pripravené", "1": "Predpierka", "2": "Pranie", "3": "Oplachovanie", - "4": "Su\u0161enie", - "5": "Pripraven\u00e9", + "4": "Sušenie", + "5": "Pripravené", "6": "Hot rinse" }, - "name": "F\u00e1za" + "name": "Fáza" }, "dry_levels": { "state": { - "0": "Bez su\u0161enia", - "1": "\u017dehlenie", - "2": "\u0160atn\u00edk pripraven\u00fd", - "3": "\u0160atn\u00edk pripraven\u00fd", - "4": "Extra su\u0161enie", - "12": "\u017dehlenie", - "13": "\u0160atn\u00edk pripraven\u00fd", - "14": "Hotov\u00e9 na nosenie", - "15": "Extra su\u0161enie" + "0": "Bez sušenia", + "1": "Žehlenie", + "2": "Šatník pripravený", + "3": "Šatník pripravený", + "4": "Extra sušenie", + "12": "Žehlenie", + "13": "Šatník pripravený", + "14": "Hotové na nosenie", + "15": "Extra sušenie" }, - "name": "\u00darove\u0148 su\u0161enia" + "name": "Úroveň sušenia" }, "anti_crease": { - "name": "Proti pokr\u010deniu" + "name": "Proti pokrčeniu" }, "power": { - "name": "\u00darove\u0148 v\u00fdkonu" + "name": "Úroveň výkonu" }, "remaining_time": { - "name": "Zost\u00e1vaj\u00faci \u010das" + "name": "Zostávajúci čas" }, "temperature": { "name": "Teplota" }, "water_efficiency": { - "name": "\u00da\u010dinnos\u0165 vody" + "name": "Účinnosť vody" }, "water_saving": { - "name": "\u00daspora vody" + "name": "Úspora vody" }, "duration": { "name": "Trvanie" }, "target_temperature": { - "name": "Cie\u013eov\u00e1 teplota" + "name": "Cieľová teplota" }, "spin_speed": { - "name": "Odstre\u010fovanie" + "name": "Odstreďovanie" }, "steam_leve": { - "name": "\u00darove\u0148 nastavenia pary" + "name": "Úroveň nastavenia pary" }, "dirt_level": { - "name": "\u00darove\u0148 zne\u010distenia" + "name": "Úroveň znečistenia" }, "delay_time": { - "name": "Odlo\u017een\u00fd \u0161tart" + "name": "Odložený štart" }, "dry_time": { - "name": "\u010cas su\u0161enia" + "name": "Čas sušenia" }, "suggested_load": { "name": "Kapacita naplnenia" }, "energy_label": { - "name": "Energetick\u00e1 \u00fa\u010dinnos\u0165" + "name": "Energetická účinnosť" }, "det_dust": { - "name": "Pr\u00e1\u0161ok" + "name": "Prášok" }, "det_liquid": { - "name": "Kvapaln\u00e9 pracie prostriedky" + "name": "Kvapalné pracie prostriedky" }, "errors": { "name": "Chyba" }, "programs": { - "name": "Aktu\u00e1lny program" + "name": "Aktuálny program" }, "cycles_total": { - "name": "Cykly S\u00fa\u010det" + "name": "Cykly Súčet" }, "energy_total": { - "name": "Spotreba energie S\u00fa\u010det" + "name": "Spotreba energie Súčet" }, "water_total": { - "name": "\u00da\u010dinnos\u0165 vody S\u00fa\u010det" + "name": "Účinnosť vody Súčet" }, "energy_current": { "name": "Spotreba energie Current" }, "water_current": { - "name": "\u00da\u010dinnos\u0165 vody Current" + "name": "Účinnosť vody Current" } }, "select": { "programs_dw": { "state": { - "59_min": "R\u00fdchly 59'", + "59_min": "Rýchly 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", "auto_plus": "AutoPlus", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Auto univerz\u00e1lny 50 -60\u00b0C", - "auto_universal_plus": "Auto univerz\u00e1lny plus 65 - 75\u00b0C", - "auto_universal_plus_soil": "Auto univerz\u00e1lny plus 65 - 75\u00b0C", - "auto_universal_soil": "Auto univerz\u00e1lny 50 -60\u00b0C", - "auto_wash": "Automatick\u00e9 pranie", - "auto_wash_soil": "Automatick\u00e9 pranie", - "classe_a_59": "A trieda 1 h 65\u00b0C", - "delicate": "Jemn\u00fd 45\u00b0C", - "dishwasher_care": "Cyklus \u010distenia vodn\u00e9ho kame\u0148a", + "auto_universal": "Auto univerzálny 50 -60°C", + "auto_universal_plus": "Auto univerzálny plus 65 - 75°C", + "auto_universal_plus_soil": "Auto univerzálny plus 65 - 75°C", + "auto_universal_soil": "Auto univerzálny 50 -60°C", + "auto_wash": "Automatické pranie", + "auto_wash_soil": "Automatické pranie", + "classe_a_59": "A trieda 1 h 65°C", + "delicate": "Jemný 45°C", + "dishwasher_care": "Cyklus čistenia vodného kameňa", "eco": "Eko", - "eco_asynch": "Eco 45\u00b0C", - "eco_bldc": "Eco 45\u00b0C", - "eco_synch": "Eco 45\u00b0C", + "eco_asynch": "Eco 45°C", + "eco_bldc": "Eco 45°C", + "eco_synch": "Eco 45°C", "gentle_wash": "Gentle wash", "glass": "Sklo", - "glassware": "Sklo 45 \u00b0C", + "glassware": "Sklo 45 °C", "glass_care": "Glass Care", "hygiene": "Hygiena", - "hygiene_plus": "Hygienick\u00e9 um\u00fdvanie + 75 \u00b0C", - "intensive": "Intenz\u00edvne pranie ", - "intensive_rapid": "intenz\u00edvny r\u00fdchly", + "hygiene_plus": "Hygienické umývanie + 75 °C", + "intensive": "Intenzívne pranie ", + "intensive_rapid": "intenzívny rýchly", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Auto univerz\u00e1lny 50 -60\u00b0C", - "iot_auto_wash_soil": "Automatick\u00e9 pranie", - "iot_baby_care": "Detsk\u00e1 starostlivos\u0165", - "iot_breakfast": "Ra\u0148ajky", + "iot_auto_universal_soil": "Auto univerzálny 50 -60°C", + "iot_auto_wash_soil": "Automatické pranie", + "iot_baby_care": "Detská starostlivosť", + "iot_breakfast": "Raňajky", "iot_checkup": "Kontrola", - "iot_china_crystals": "Kri\u0161t\u00e1\u013e", - "iot_classe_a_59": "R\u00fdchly 59'", - "iot_cocktail_glasses": "Koktailov\u00e9 poh\u00e1re", - "iot_cocktail_glasses_soil": "Koktailov\u00e9 poh\u00e1re", - "iot_daily_care": "Denn\u00e1 starostlivos\u0165", - "iot_daily_care_soil": "Denn\u00e1 starostlivos\u0165", - "iot_delicate": "Jemn\u00fd 45\u00b0C", - "iot_dinner_for_two": "Ve\u010dera pre dvoch", - "iot_dinner_for_two_soil": "Ve\u010dera pre dvoch", + "iot_china_crystals": "Krištáľ", + "iot_classe_a_59": "Rýchly 59'", + "iot_cocktail_glasses": "Koktailové poháre", + "iot_cocktail_glasses_soil": "Koktailové poháre", + "iot_daily_care": "Denná starostlivosť", + "iot_daily_care_soil": "Denná starostlivosť", + "iot_delicate": "Jemný 45°C", + "iot_dinner_for_two": "Večera pre dvoch", + "iot_dinner_for_two_soil": "Večera pre dvoch", "iot_dreft_quick_cycle": "Dreft Quick", - "iot_eco_asynch": "Eco 45\u00b0C", - "iot_eco_bldc": "Eco 45\u00b0C", - "iot_eco_synch": "Eco 45\u00b0C", - "iot_extra_hygiene": "Extra hygienick\u00fd", + "iot_eco_asynch": "Eco 45°C", + "iot_eco_bldc": "Eco 45°C", + "iot_eco_synch": "Eco 45°C", + "iot_extra_hygiene": "Extra hygienický", "iot_fairy_quick_cycle": "Fairy Quick", "iot_happy_hour": "Happy Hour", "iot_jar_quick_cycle": "Jar Quick", - "iot_party": "P\u00e1rty (ve\u010dierok)", - "iot_party_soil": "P\u00e1rty (ve\u010dierok)", + "iot_party": "Párty (večierok)", + "iot_party_soil": "Párty (večierok)", "iot_pizza_menu": "Pizza Menu", "iot_pizza_menu_soil": "Pizza Menu", - "iot_plastic_tupperware": "Plastov\u00e9 riady a misky", - "iot_porcelain": "Porcel\u00e1n", + "iot_plastic_tupperware": "Plastové riady a misky", + "iot_porcelain": "Porcelán", "iot_power_mix_wash": "Power Mix Wash", "iot_power_mix_wash_soil": "Power Mix Wash", - "iot_prewash": "Predum\u00fdvanie", - "iot_pyrex_and_glassware": "Pyrex a sklenen\u00e9 riady", + "iot_prewash": "Predumývanie", + "iot_pyrex_and_glassware": "Pyrex a sklenené riady", "iot_rapid_29": "Rychly 29'", - "iot_rapid_39": "R\u00fdchle 39' 60 \u00b0C", + "iot_rapid_39": "Rýchle 39' 60 °C", "iot_single": "Jeden", - "iot_steam": "Para 75 \u00b0C", + "iot_steam": "Para 75 °C", "iot_super_flash": "Super oplach", "iot_super_wash": "Super Wash", "iot_turbopower": "Turbo Power", - "iot_universal": "Univerz\u00e1lne 60 \u00b0C", - "iot_wok_grids_maxi_pans": "\u0160peci\u00e1lne panvice (Wok, ro\u0161ty, maxi panvice)", - "iot_wok_grids_maxi_pans_soil": "\u0160peci\u00e1lne panvice (Wok, ro\u0161ty, maxi panvice)", + "iot_universal": "Univerzálne 60 °C", + "iot_wok_grids_maxi_pans": "Špeciálne panvice (Wok, rošty, maxi panvice)", + "iot_wok_grids_maxi_pans_soil": "Špeciálne panvice (Wok, rošty, maxi panvice)", "iot_yes_quick_cycle": "Yes Quick", - "night": "Ultra tich\u00fd 55\u00b0C", - "prewash": "Predum\u00fdvanie", - "rapid_20": "R\u00fdchly 20'", + "night": "Ultra tichý 55°C", + "prewash": "Predumývanie", + "rapid_20": "Rýchly 20'", "rapid_24": "Rychly 24'", - "rapid_29": "Rychly 29' 50\u00b0C", + "rapid_29": "Rychly 29' 50°C", "rapid_35": "Wash&Dry 35'", - "rapid_39": "R\u00fdchle 39' 60 \u00b0C", - "rapid_49": "R\u00fdchly 49'", - "rapid_59": "R\u00fdchly 59'", + "rapid_39": "Rýchle 39' 60 °C", + "rapid_49": "Rýchly 49'", + "rapid_59": "Rýchly 59'", "sanitising": "Dezinfekcia", "silence": "Silence", "silent": "Noc", "silent_care": "Silent Care", "smart_ai": "Smart AI", - "special": "\u0161peci\u00e1l", - "special_pw_prz": "\u0161peci\u00e1l", - "steam": "Para 75 \u00b0C", - "steam_plus": "Para Plus 75 \u00b0C", - "total_care": "Total Care 50\u00b0C", - "ultra_silence": "Ultra tich\u00fd 55\u00b0C", - "ultra_silent": "Ultra tich\u00fd 55\u00b0C", - "universal": "Univerz\u00e1lne 60 \u00b0C", - "universal_plus": "Univerz\u00e1lne Plus 70 \u00b0C", + "special": "špeciál", + "special_pw_prz": "špeciál", + "steam": "Para 75 °C", + "steam_plus": "Para Plus 75 °C", + "total_care": "Total Care 50°C", + "ultra_silence": "Ultra tichý 55°C", + "ultra_silent": "Ultra tichý 55°C", + "universal": "Univerzálne 60 °C", + "universal_plus": "Univerzálne Plus 70 °C", "zoom_39": "Zoom 39 min" }, "name": "Program" }, "programs_ih": { "state": { - "iot_special_ash_brown": "Zemiakov\u00e9 placky", - "iot_special_beef_fillet": "Svie\u010dkov\u00e1", - "iot_special_beef_veal_stew": "Dusen\u00e9 hov\u00e4dzie a te\u013eacie m\u00e4so", - "iot_special_boiled_rice": "Varen\u00e1 ry\u017ea", + "iot_special_ash_brown": "Zemiakové placky", + "iot_special_beef_fillet": "Sviečková", + "iot_special_beef_veal_stew": "Dusené hovädzie a teľacie mäso", + "iot_special_boiled_rice": "Varená ryža", "iot_special_chicken_breast": "Kuracie prsia", - "iot_special_chicken_legs": "Kuracie stehn\u00e1", - "iot_special_chocolate_pudding": "\u010cokol\u00e1dov\u00fd puding", - "iot_special_entrecote": "Ro\u0161tenka", - "iot_special_fresh_tuna": "\u010cerstv\u00fd tuniak", - "iot_special_grilled_vegetables": "Grilovan\u00e1 zelenina", - "iot_special_lamb_cutlet": "Jah\u0148acie kotlety", - "iot_special_meatballs": "M\u00e4sov\u00e9 knedli\u010dky", + "iot_special_chicken_legs": "Kuracie stehná", + "iot_special_chocolate_pudding": "Čokoládový puding", + "iot_special_entrecote": "Roštenka", + "iot_special_fresh_tuna": "Čerstvý tuniak", + "iot_special_grilled_vegetables": "Grilovaná zelenina", + "iot_special_lamb_cutlet": "Jahňacie kotlety", + "iot_special_meatballs": "Mäsové knedličky", "iot_special_minestrone": "Minestrone", - "iot_special_mussels": "Mu\u0161le", + "iot_special_mussels": "Mušle", "iot_special_omelette": "Omeleta", "iot_special_pancakes": "Palacinky", - "iot_special_paris_style_peas": "Hr\u00e1\u0161ok po par\u00ed\u017esky", - "iot_special_poached_eggs": "Straten\u00e9 vajcia", - "iot_special_pork_fillet": "Brav\u010dov\u00e1 fileta", - "iot_special_pork_ribs": "Brav\u010dov\u00e9 rebierka", + "iot_special_paris_style_peas": "Hrášok po parížsky", + "iot_special_poached_eggs": "Stratené vajcia", + "iot_special_pork_fillet": "Bravčová fileta", + "iot_special_pork_ribs": "Bravčové rebierka", "iot_special_prawns": "Krevety", "iot_special_quinoa": "Quinoa", "iot_special_ratatouille": "Ratatouille", "iot_special_salmon_fillet": "Fileta z lososa", - "iot_special_saute_potatoes": "Restovan\u00e9 zemiaky", - "iot_special_scallops": "Last\u00fary", - "iot_special_scrambled_eggs": "Pra\u017eenica", - "iot_special_spelt": "\u0160palda", - "iot_special_veggy_noodles": "Vegetari\u00e1nske rezance", - "iot_special_white_fish_fillet": "Filety z bielych r\u00fdb", + "iot_special_saute_potatoes": "Restované zemiaky", + "iot_special_scallops": "Lastúry", + "iot_special_scrambled_eggs": "Praženica", + "iot_special_spelt": "Špalda", + "iot_special_veggy_noodles": "Vegetariánske rezance", + "iot_special_white_fish_fillet": "Filety z bielych rýb", "iot_standard_boiling": "Vrenie", - "iot_standard_frying": "Vypr\u00e1\u017ea\u0165", - "iot_standard_keep_warm": "Udr\u017eiavanie tepla", - "iot_standard_melting": "Topi\u0165", - "iot_standard_simmering": "Slab\u00e9 vrenie" + "iot_standard_frying": "Vyprážať", + "iot_standard_keep_warm": "Udržiavanie tepla", + "iot_standard_melting": "Topiť", + "iot_standard_simmering": "Slabé vrenie" }, "name": "Program" }, "programs_ov": { "state": { - "bakery": "Cestoviny a pe\u010denie", - "bakery_steam": "Chlieb pe\u010den\u00fd v pare", - "bottom_heating": "Spodn\u00fd ohrev", - "bottom_heating_fan": "Spodn\u00fd ohrev + Ventil\u00e1tor", + "bakery": "Cestoviny a pečenie", + "bakery_steam": "Chlieb pečený v pare", + "bottom_heating": "Spodný ohrev", + "bottom_heating_fan": "Spodný ohrev + Ventilátor", "bread": "Chlieb", - "bread_steam": "Pe\u010divo pe\u010den\u00e9 v pare", - "convection_fan": "Statick\u00fd + ventil\u00e1tor", - "convection_fan_turnspit": "Statick\u00e9 + ventil\u00e1tor + oto\u010dn\u00fd ra\u017ee\u0148", - "conventional": "Statick\u00fd", - "conventional_turnspit": "Statick\u00e9 + oto\u010dn\u00fd ra\u017ee\u0148", - "defrost": "Rozmrazi\u0165", - "descaling": "Odstr\u00e1nenie vodn\u00e9ho kame\u0148a", + "bread_steam": "Pečivo pečené v pare", + "convection_fan": "Statický + ventilátor", + "convection_fan_turnspit": "Statické + ventilátor + otočný ražeň", + "conventional": "Statický", + "conventional_turnspit": "Statické + otočný ražeň", + "defrost": "Rozmraziť", + "descaling": "Odstránenie vodného kameňa", "fish": "Ryby", - "fish_steam": "Ryby varen\u00e9 v pare", + "fish_steam": "Ryby varené v pare", "grill_cata": "Gril", - "grill_fan_cata": "Gril + ventil\u00e1tor", - "grill_fan_pyro": "Gril + ventil\u00e1tor", + "grill_fan_cata": "Gril + ventilátor", + "grill_fan_pyro": "Gril + ventilátor", "grill_pyro": "Gril", "h20_clean": "H2O-Clean", "iot_bread": "Chlieb", "iot_h20_clean": "h2O clean", "leavening": "Kysnutie", - "low_temp_cooking": "Varenie pri n\u00edzkych teplot\u00e1ch", - "low_temp_cooking_fish": "Varenie pri n\u00edzkych teplot\u00e1ch \u2013 Ryby", - "low_temp_cooking_fish_steam": "Varenie pri n\u00edzkych teplot\u00e1ch v pare \u2013 Ryby", - "low_temp_cooking_meat": "Varenie pri n\u00edzkych teplot\u00e1ch \u2013 M\u00e4so", - "low_temp_cooking_meat_steam": "Varenie pri n\u00edzkych teplot\u00e1ch v pare", - "low_temp_cooking_steam": "Varenie pri n\u00edzkych teplot\u00e1ch v pare", - "meat": "M\u00e4so", - "meat_steam": "M\u00e4so uvaren\u00e9 v pare", - "multi_level": "Viac\u00farov\u0148ov\u00e9", + "low_temp_cooking": "Varenie pri nízkych teplotách", + "low_temp_cooking_fish": "Varenie pri nízkych teplotách – Ryby", + "low_temp_cooking_fish_steam": "Varenie pri nízkych teplotách v pare – Ryby", + "low_temp_cooking_meat": "Varenie pri nízkych teplotách – Mäso", + "low_temp_cooking_meat_steam": "Varenie pri nízkych teplotách v pare", + "low_temp_cooking_steam": "Varenie pri nízkych teplotách v pare", + "meat": "Mäso", + "meat_steam": "Mäso uvarené v pare", + "multi_level": "Viacúrovňové", "paella": "Paella", - "pasta_and_bakery": "Cestoviny a pe\u010denie", + "pasta_and_bakery": "Cestoviny a pečenie", "pizza": "Pizza", - "pyrolysis": "Pyrol\u00fdza", - "pyrolysis_plus": "Pyrol\u00fdza +", - "red_meat": "\u010cerven\u00e9 m\u00e4so", - "red_meat_steam": "\u010cerven\u00e9 m\u00e4so varen\u00e9 v pare", - "regenerate": "Regener\u00e1cia", + "pyrolysis": "Pyrolýza", + "pyrolysis_plus": "Pyrolýza +", + "red_meat": "Červené mäso", + "red_meat_steam": "Červené mäso varené v pare", + "regenerate": "Regenerácia", "soft_plus": "Soft+", "super_grill": "Super Gril", "tailor_bake": "Tailor bake", "tailor_bake_cata": "Tailor Bake", - "tailor_bake_desctiption": "T\u00e1to funkcia je ide\u00e1lna na zachovania m\u00e4kkosti vo vn\u00fatri jedla s chrumkav\u00fdm vonkaj\u0161kom.\r\r\nT\u00e1to funkcia zni\u017euje mno\u017estvo tuku alebo oleja potrebn\u00e9 pre zdrav\u00fa v\u00fd\u017eivu.\r\r\nKombin\u00e1cia ohrievac\u00edch \u010dl\u00e1nkov s pulzuj\u00facim cyklom vzduchu zabezpe\u010duje rovnomern\u00e9 pe\u010denie.", "tailor_bake_pyro": "Tailor Bake", "vegetables": "Zelenina", "vegetables_cata": "Zelenina", "vegetables_pyro": "Zelenina", "water_discharge": "Odtok vody", - "white_meat": "Biele m\u00e4so", - "white_meat_steam": "Biele m\u00e4so varen\u00e9 v pare" + "white_meat": "Biele mäso", + "white_meat_steam": "Biele mäso varené v pare" }, "name": "Program" }, "programs_td": { "state": { - "active_dry": "Akt\u00edvne su\u0161enie", - "allergy_care": "Antialergick\u00fd", + "active_dry": "Aktívne sušenie", + "allergy_care": "Antialergický", "all_in_one": "All in One", - "antiallergy": "Antialergick\u00fd", - "anti_odours": "O\u017eivenie", - "auto_care": "Automatick\u00e1 starostlivos\u0165", - "baby": "Detsk\u00e1", - "bed_quilt": "Poste\u013en\u00e1 prikr\u00fdvka", - "care_30": "Starostlivos\u0165 30", - "care_45": "Starostlivos\u0165 45", - "care_59": "Starostlivos\u0165 59", - "coloured": "Farebn\u00e1", + "antiallergy": "Antialergický", + "anti_odours": "Oživenie", + "auto_care": "Automatická starostlivosť", + "baby": "Detská", + "bed_quilt": "Posteľná prikrývka", + "care_30": "Starostlivosť 30", + "care_45": "Starostlivosť 45", + "care_59": "Starostlivosť 59", + "coloured": "Farebná", "daily_45_min": "DENNY 45'", "daily_perfect_59_min": "DAILY PERFECT 59'", - "darks_and_coloured": "Tmav\u00e1 a farebn\u00e1", - "delicates": "Jemn\u00e9", - "duvet": "Prikr\u00fdvky", + "darks_and_coloured": "Tmavá a farebná", + "delicates": "Jemné", + "duvet": "Prikrývky", "eco": "Eco bavlna", "ecospeed_cottons": "Ecospeed bavlna", "ecospeed_delicates": "Eco rychly - jemne", - "ecospeed_mixed": "Ecospeed zmie\u0161an\u00e1", + "ecospeed_mixed": "Ecospeed zmiešaná", "extra_hygiene": "EXTRA HYGIENA", "fitness": "Fitnes", - "fresh_care": "Svie\u017ea starostlivos\u0165", + "fresh_care": "Svieža starostlivosť", "genius": "Genius", "hqd_baby_care": "Baby Care", - "hqd_bath_towel": "Osu\u0161ky", - "hqd_bed_sheets": "Poste\u013en\u00e1 bielize\u0148", - "hqd_bulky": "Objemn\u00e9 polo\u017eky", - "hqd_casual": "Neform\u00e1lne", - "hqd_cold_wind_30": "Chladn\u00fd v\u00e1nok 30 min\u00fat", - "hqd_cold_wind_timing": "Studen\u00fd v\u00e1nok ", + "hqd_bath_towel": "Osušky", + "hqd_bed_sheets": "Posteľná bielizeň", + "hqd_bulky": "Objemné položky", + "hqd_casual": "Neformálne", + "hqd_cold_wind_30": "Chladný vánok 30 minút", + "hqd_cold_wind_timing": "Studený vánok ", "hqd_cotton": "Bavlna", - "hqd_curtain": "Z\u00e1clony", - "hqd_delicate": "Jemn\u00e9 materi\u00e1ly", + "hqd_curtain": "Záclony", + "hqd_delicate": "Jemné materiály", "hqd_diaper": "Plienky", - "hqd_duvet": "Papl\u00f3n", - "hqd_feather": "Pre\u0161\u00edvan\u00e9 bundy", - "hqd_hot_wind_timing": "Hor\u00faci vzduch", - "hqd_hygienic": "Hygieniz\u00e1cia", + "hqd_duvet": "Paplón", + "hqd_feather": "Prešívané bundy", + "hqd_hot_wind_timing": "Horúci vzduch", + "hqd_hygienic": "Hygienizácia", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", "hqd_jacket": "Bundy", - "hqd_jeans": "D\u017e\u00ednsy", + "hqd_jeans": "Džínsy", "hqd_luxury": "Luxury", - "hqd_mix": "Zmie\u0161an\u00e9", - "hqd_night_dry": "No\u010dn\u00e9 su\u0161enie", + "hqd_mix": "Zmiešané", + "hqd_night_dry": "Nočné sušenie", "hqd_outdoor": "Outdoor", "hqd_precious_cure": "Precious cure", - "hqd_quick_20": "R\u00fdchle 20", - "hqd_quick_30": "R\u00fdchle 30", - "hqd_quick_dry": "R\u00fdchle su\u0161enie", - "hqd_quilt": "Prikr\u00fdvky", - "hqd_refresh": "Osvie\u017eenie", - "hqd_school_uniform": "\u0160kolsk\u00e1 uniforma", - "hqd_shirt": "Ko\u0161ele", + "hqd_quick_20": "Rýchle 20", + "hqd_quick_30": "Rýchle 30", + "hqd_quick_dry": "Rýchle sušenie", + "hqd_quilt": "Prikrývky", + "hqd_refresh": "Osvieženie", + "hqd_school_uniform": "Školská uniforma", + "hqd_shirt": "Košele", "hqd_shoes": "Obuv", - "hqd_silk": "Hodv\u00e1b", - "hqd_sports": "\u0160port", + "hqd_silk": "Hodváb", + "hqd_sports": "Šport", "hqd_synthetics": "Syntetika", - "hqd_timer": "Na\u010dasovan\u00e9", - "hqd_towel": "Osu\u0161ky", - "hqd_underwear": "Spodn\u00e1 bielize\u0148", + "hqd_timer": "Načasované", + "hqd_towel": "Osušky", + "hqd_underwear": "Spodná bielizeň", "hqd_warm_up": "Zahriatie", "hqd_wool": "Vlna", - "hqd_working_suit": "Pracovn\u00e9 odevy", + "hqd_working_suit": "Pracovné odevy", "hygiene": "Hygiena", "iot_checkup": "Kontrola", - "iot_dry_anti_mites": "Proti rozto\u010dom", - "iot_dry_baby": "Detsk\u00e1", + "iot_dry_anti_mites": "Proti roztočom", + "iot_dry_baby": "Detská", "iot_dry_backpacks": "Batohy", "iot_dry_bathrobe": "Bathrobe", - "iot_dry_bed_linen": "Poste\u013en\u00e1 bielize\u0148", - "iot_dry_bed_quilt": "Poste\u013en\u00e1 prikr\u00fdvka", + "iot_dry_bed_linen": "Posteľná bielizeň", + "iot_dry_bed_quilt": "Posteľná prikrývka", "iot_dry_cotton": "Bavlna", - "iot_dry_cuddly_toys": "Ply\u0161ov\u00e9 hra\u010dky", - "iot_dry_curtains": "Z\u00e1vesy", - "iot_dry_dehumidifier": "Odstra\u0148ova\u010d vlhkosti", - "iot_dry_delicates": "Jemn\u00e1", - "iot_dry_delicate_tablecloths": "Jemn\u00e9 obrusy", - "iot_dry_denim_jeans": "D\u017e\u00ednsovina \u2013 d\u017e\u00ednsy", + "iot_dry_cuddly_toys": "Plyšové hračky", + "iot_dry_curtains": "Závesy", + "iot_dry_dehumidifier": "Odstraňovač vlhkosti", + "iot_dry_delicates": "Jemná", + "iot_dry_delicate_tablecloths": "Jemné obrusy", + "iot_dry_denim_jeans": "Džínsovina – džínsy", "iot_dry_down_jacket": "Jacket", - "iot_dry_duvet": "Prikr\u00fdvky", - "iot_dry_easy_iron_cotton": "Super \u013eahk\u00e9 \u017eehlenie", - "iot_dry_easy_iron_synthetics": "Super \u013eahk\u00e9 \u017eehlenie syntetiky", - "iot_dry_gym_fit": "\u0160portovn\u00e9 oble\u010denie", - "iot_dry_lingerie": "Spodn\u00e1 bielize\u0148", - "iot_dry_mixed": "Zmie\u0161an\u00e9", - "iot_dry_playsuits": "Tepl\u00e1ky", + "iot_dry_duvet": "Prikrývky", + "iot_dry_easy_iron_cotton": "Super ľahké žehlenie", + "iot_dry_easy_iron_synthetics": "Super ľahké žehlenie syntetiky", + "iot_dry_gym_fit": "Športovné oblečenie", + "iot_dry_lingerie": "Spodná bielizeň", + "iot_dry_mixed": "Zmiešané", + "iot_dry_playsuits": "Tepláky", "iot_dry_rapid_30": "Rapid 30", - "iot_dry_rapid_59": "R\u00fdchly 59 min.", - "iot_dry_refresh": "Osvie\u017eenie", - "iot_dry_regenerates_waterproof": "O\u017eiven\u00ed nepromokav\u00fdch tkanin", - "iot_dry_relax_creases": "Uvo\u013enenie z\u00e1hybov", - "iot_dry_shirts": "Ko\u0161ele", - "iot_dry_small_load": "Mal\u00e1 n\u00e1pl\u0148", + "iot_dry_rapid_59": "Rýchly 59 min.", + "iot_dry_refresh": "Osvieženie", + "iot_dry_regenerates_waterproof": "Oživení nepromokavých tkanin", + "iot_dry_relax_creases": "Uvoľnenie záhybov", + "iot_dry_shirts": "Košele", + "iot_dry_small_load": "Malá náplň", "iot_dry_swimsuits_and_bikinis": "Plavky", - "iot_dry_synthetics": "Syntetick\u00e1", - "iot_dry_synthetic_dry": "Syntetika \u2013 su\u0161enie", + "iot_dry_synthetics": "Syntetická", + "iot_dry_synthetic_dry": "Syntetika – sušenie", "iot_dry_tablecloths": "Obrusy", - "iot_dry_technical_fabrics": "Technick\u00e9 tkaniny", - "iot_dry_warm_embrace": "Detsk\u00e1 zavinova\u010dka", + "iot_dry_technical_fabrics": "Technické tkaniny", + "iot_dry_warm_embrace": "Detská zavinovačka", "iot_dry_wool": "Woolmark", - "jeans": "D\u017e\u00ednsy", + "jeans": "Džínsy", "mix_and_dry": "Mix&Dry", - "pets": "Dom\u00e1ce zvierat\u00e1", - "pre_iron": "Pred \u017eehlen\u00edm", + "pets": "Domáce zvieratá", + "pre_iron": "Pred žehlením", "rapid_30": "Rapid 30", - "rapid_45": "R\u00fdchly 45 min", - "rapid_59": "Perfektne r\u00fdchly 59 min", - "refresh": "Osvie\u017eenie", - "relax_creases": "Uvo\u013enenie z\u00e1hybov", + "rapid_45": "Rýchly 45 min", + "rapid_59": "Perfektne rýchly 59 min", + "refresh": "Osvieženie", + "relax_creases": "Uvoľnenie záhybov", "saving_30_min": "EKONOMICKY 30'", - "shirts": "Ko\u0161ele", + "shirts": "Košele", "shoes": "Obuv", - "small_load": "Mal\u00e1 n\u00e1pl\u0148", - "soft_care": "Jemn\u00e1 starostlivos\u0165", + "small_load": "Malá náplň", + "soft_care": "Jemná starostlivosť", "sport_plus": "Sportovy", - "super_easy_iron_misti": "Super \u013eahk\u00e9 \u017eehlenie pre Zmie\u0161an\u00e9", - "super_easy_iron_xxl": "Super \u013eahk\u00e9 \u017eehlenie XXL", - "super_fast_cottons": "Super r\u00fdchly bavlna", - "super_fast_delicates": "Super r\u00fdchly jemn\u00e1", - "synthetics": "Syntetick\u00e1", + "super_easy_iron_misti": "Super ľahké žehlenie pre Zmiešané", + "super_easy_iron_xxl": "Super ľahké žehlenie XXL", + "super_fast_cottons": "Super rýchly bavlna", + "super_fast_delicates": "Super rýchly jemná", + "synthetics": "Syntetická", "total_care": "Total Care", - "trainers": "\u0160portov\u00e1 obuv", + "trainers": "Športová obuv", "ultra_care": "Ultra Care", "waterproof_revitalize": "Obnovenie vodeodolnosti", "whites": "Biela", - "wool": "Su\u0161enie vlny", + "wool": "Sušenie vlny", "woolmark": "Woolmark", - "xxl_load": "XXL n\u00e1pl\u0148", + "xxl_load": "XXL náplň", "zoom_59": "Zoom 59" }, "name": "Program" }, "programs_wm": { "state": { - "20_degrees_coloured_cottons": "20\u00b0 farebn\u00e9 a bavlnen\u00e9", - "20_degrees_new_energy_label": "20\u00b0C", + "20_degrees_coloured_cottons": "20° farebné a bavlnené", + "20_degrees_new_energy_label": "20°C", "active_steam": "Para", - "active_wash": "Akt\u00edvne pranie", - "active_wash_steam": "Akt\u00edvne pranie", - "allergy_care": "Antialergick\u00e9 o\u0161etrenie", - "allergy_care_pro": "Antialergick\u00e9 o\u0161etrenie Pro", - "all_in_one_49": "V\u0161etko v jednom 49 min.", - "all_in_one_59": "V\u0161etko v jednom 59 min.", - "all_in_one_59_steam": "Akt\u00edvne pranie + para", - "autocare": "Automatick\u00e1 starostlivos\u0165", - "autoclean": "\u010cistenie bubna", - "baby_60": "V\u0161etka detsk\u00e1 60\u00b0C", + "active_wash": "Aktívne pranie", + "active_wash_steam": "Aktívne pranie", + "allergy_care": "Antialergické ošetrenie", + "allergy_care_pro": "Antialergické ošetrenie Pro", + "all_in_one_49": "Všetko v jednom 49 min.", + "all_in_one_59": "Všetko v jednom 59 min.", + "all_in_one_59_steam": "Aktívne pranie + para", + "autocare": "Automatická starostlivosť", + "autoclean": "Čistenie bubna", + "baby_60": "Všetka detská 60°C", "care_14": " Starostlivost 14'", "care_30": " Starostlivost 30'", "care_44": "Starostlivost 44'", "checkup": "Kontrola", - "colour_59": "Farebn\u00e1 59'", - "colour_59_steam": "Farebn\u00e1 bielize\u0148 59' + Para", + "colour_59": "Farebná 59'", + "colour_59_steam": "Farebná bielizeň 59' + Para", "cottons": "Bavlna", "cottons_prewash": "Bavlna + Predpierka", "cottons_steam": "Bavlna + Para", "cotton_care_59": "Bavlna 59 Min", - "delicate_59": "Jemn\u00e9 materi\u00e1ly 59 min.", - "delicate_silk": "Jemn\u00fd hodv\u00e1b", - "delicate_silk_steam": "Jemn\u00fd hodv\u00e1b + Para", - "delicati_59": "Jemn\u00e9 materi\u00e1ly 59 min.", - "delicati_59_steam": "Jemn\u00e9 materi\u00e1ly 59 min.", - "drain_spin": "Vyp\u00fa\u0161\u0165anie a odstre\u010fovanie", - "easy_iron": "Jednoduch\u00e9 \u017eehlenie", - "eco_40_60_new_energy_label": "Eco 40 \u2013 60", + "delicate_59": "Jemné materiály 59 min.", + "delicate_silk": "Jemný hodváb", + "delicate_silk_steam": "Jemný hodváb + Para", + "delicati_59": "Jemné materiály 59 min.", + "delicati_59_steam": "Jemné materiály 59 min.", + "drain_spin": "Vypúšťanie a odstreďovanie", + "easy_iron": "Jednoduché žehlenie", + "eco_40_60_new_energy_label": "Eco 40 – 60", "extra_care": "Extra Starostlivost", "fitness": "Fitnes", "fitness_care": "Fitnes", - "fresh_care": "Svie\u017ea starostlivos\u0165", + "fresh_care": "Svieža starostlivosť", "fresh_care_steam": "Fresh Care + Para", - "handwash_wool": "Pranie v ruk\u00e1ch a vlna", - "high_dry": "Bavlna such\u00e1", - "hqd_20_degrees": "Bavlna 20 \u2103", - "hqd_allergy": "Antialergick\u00e9 o\u0161etrenie", - "hqd_autoclean": "\u010cistenie bubna", - "hqd_babycare": "Detsk\u00e1 starostlivos\u0165", + "handwash_wool": "Pranie v rukách a vlna", + "high_dry": "Bavlna suchá", + "hqd_20_degrees": "Bavlna 20 ℃", + "hqd_allergy": "Antialergické ošetrenie", + "hqd_autoclean": "Čistenie bubna", + "hqd_babycare": "Detská starostlivosť", "hqd_checkup": "Kontrola", "hqd_cottons": "Bavlna", - "hqd_delicate": "Jemn\u00e9 materi\u00e1ly", - "hqd_delicate_cradle": "Jemn\u00e9 materi\u00e1ly", - "hqd_dry": "Bavlna such\u00e1", - "hqd_dry_synthetics": "Zmie\u0161an\u00e9 such\u00e9", - "hqd_duvet": "Prikr\u00fdvky", - "hqd_eco_40_60_degrees": "Eco 40 \u2013 60", + "hqd_delicate": "Jemné materiály", + "hqd_delicate_cradle": "Jemné materiály", + "hqd_dry": "Bavlna suchá", + "hqd_dry_synthetics": "Zmiešané suché", + "hqd_duvet": "Prikrývky", + "hqd_eco_40_60_degrees": "Eco 40 – 60", "hqd_handwash_wool": "Vlna", "hqd_i_refresh": "i-Refresh", - "hqd_mix": "Zmie\u0161an\u00e9", - "hqd_quick_15": "R\u00fdchly 15 min.", - "hqd_quick_wash_57": "R\u00fdchle pranie 57 min.", - "hqd_rapid_wash_and_dry": "Pranie a su\u0161enie", - "hqd_refresh": "Osvie\u017eenie", + "hqd_mix": "Zmiešané", + "hqd_quick_15": "Rýchly 15 min.", + "hqd_quick_wash_57": "Rýchle pranie 57 min.", + "hqd_rapid_wash_and_dry": "Pranie a sušenie", + "hqd_refresh": "Osvieženie", "hqd_rinse": "Oplachovanie", - "hqd_shirts": "Ko\u0161ele", + "hqd_shirts": "Košele", "hqd_smart": "Smart A.I.", - "hqd_spin": "Odstre\u010fovanie", - "hqd_sport": "\u0160port", - "hqd_super_fast": "R\u00fdchly 39 min.", + "hqd_spin": "Odstreďovanie", + "hqd_sport": "Šport", + "hqd_super_fast": "Rýchly 39 min.", "hqd_synthetic_and_coloured": "Syntetika", "hygiene_59": "Hygiena Plus 59'", - "hygiene_60": "Hygiena 60\u00b0", + "hygiene_60": "Hygiena 60°", "hygiene_plus_59": "Hygiena Plus 59'", "hygiene_plus_59_min": "Hygiena Plus 59'", "hygiene_pro_49_min": "Hygiene Pro 49 min", "hygiene_pro_steam": "Hygiene Pro + para", - "intensive_40": "Intenz\u00edvne pranie 40\u00b0C", - "intensive_40_steam": "Intensive 40\u00b0C + Para", + "intensive_40": "Intenzívne pranie 40°C", + "intensive_40_steam": "Intensive 40°C + Para", "iot_active_steam": "Para", - "iot_active_wash_steam": "Akt\u00edvne pranie", - "iot_allergy_care_pro": "Antialergick\u00e9 o\u0161etrenie Pro", - "iot_all_in_one_59_steam": "Akt\u00edvne pranie + para", + "iot_active_wash_steam": "Aktívne pranie", + "iot_allergy_care_pro": "Antialergické ošetrenie Pro", + "iot_all_in_one_59_steam": "Aktívne pranie + para", "iot_checkup": "Kontrola", - "iot_colour_59_steam": "Farebn\u00e1 bielize\u0148 59' + Para", + "iot_colour_59_steam": "Farebná bielizeň 59' + Para", "iot_cottons_steam": "Bavlna + Para", - "iot_delicate_silk_steam": "Jemn\u00fd hodv\u00e1b + Para", - "iot_delicati_59_steam": "Jemn\u00e9 materi\u00e1ly 59 min.", - "iot_dry_air_refresh": "Prevzdu\u0161nenie", - "iot_dry_anti_mites": "Proti rozto\u010dom", - "iot_dry_baby": "Odevy pre bato\u013ea", + "iot_delicate_silk_steam": "Jemný hodváb + Para", + "iot_delicati_59_steam": "Jemné materiály 59 min.", + "iot_dry_air_refresh": "Prevzdušnenie", + "iot_dry_anti_mites": "Proti roztočom", + "iot_dry_baby": "Odevy pre batoľa", "iot_dry_backpacks": "Plecniaky", - "iot_dry_bathrobe": "\u017dupany a por\u00e9zne tkaniny", - "iot_dry_bed_linen": "Poste\u013en\u00e9 oblie\u010dky", - "iot_dry_cotton_dry": "Bavlna such\u00e1", - "iot_dry_cuddly_toys": "Ply\u0161ov\u00e9 zvieratk\u00e1", - "iot_dry_curtains": "Z\u00e1clony", - "iot_dry_dehumidifier": "Odstra\u0148ova\u010d vlhkosti", - "iot_dry_delicates_antiallergy": "Jemn\u00e9 materi\u00e1ly \u2013 antialergick\u00fd program", - "iot_dry_delicate_tablecloths": "Obrusy z jemn\u00fdch materi\u00e1lov", - "iot_dry_denim_jeans": "D\u017e\u00ednsovina \u2013 d\u017e\u00ednsy", - "iot_dry_easy_iron_cotton": "Jednoduch\u00e9 \u017eehlenie \u2013 bavlna", - "iot_dry_easy_iron_synthetics": "Jednoduch\u00e9 \u017eehlenie \u2013 syntetika", - "iot_dry_gym_fit": "Oble\u010denie do telocvi\u010dne a posil\u0148ovne", - "iot_dry_lingerie": "Spodn\u00e1 bielize\u0148", - "iot_dry_mixed_dry": "Zmie\u0161an\u00e9 such\u00e9", - "iot_dry_rapid_60_min_delicates": "R\u00fdchly 60 min. \u2013 jemn\u00e9 materi\u00e1ly", - "iot_dry_shirts": "Ko\u0161ele", + "iot_dry_bathrobe": "Župany a porézne tkaniny", + "iot_dry_bed_linen": "Posteľné obliečky", + "iot_dry_cotton_dry": "Bavlna suchá", + "iot_dry_cuddly_toys": "Plyšové zvieratká", + "iot_dry_curtains": "Záclony", + "iot_dry_dehumidifier": "Odstraňovač vlhkosti", + "iot_dry_delicates_antiallergy": "Jemné materiály – antialergický program", + "iot_dry_delicate_tablecloths": "Obrusy z jemných materiálov", + "iot_dry_denim_jeans": "Džínsovina – džínsy", + "iot_dry_easy_iron_cotton": "Jednoduché žehlenie – bavlna", + "iot_dry_easy_iron_synthetics": "Jednoduché žehlenie – syntetika", + "iot_dry_gym_fit": "Oblečenie do telocvične a posilňovne", + "iot_dry_lingerie": "Spodná bielizeň", + "iot_dry_mixed_dry": "Zmiešané suché", + "iot_dry_rapid_60_min_delicates": "Rýchly 60 min. – jemné materiály", + "iot_dry_shirts": "Košele", "iot_dry_swimsuits_and_bikinis": "Plavky", - "iot_dry_synthetics": "Syntetika \u2013 su\u0161enie", - "iot_dry_synthetic_dry": "Syntetika \u2013 su\u0161enie", + "iot_dry_synthetics": "Syntetika – sušenie", + "iot_dry_synthetic_dry": "Syntetika – sušenie", "iot_dry_tablecloths": "Obrusy", - "iot_dry_technical_fabrics": "Technick\u00e9 tkaniny", - "iot_dry_warm_embrace": "Tepl\u00e9 bubnov\u00e9 su\u0161enie", - "iot_dry_wool_dry": "Vlna such\u00e1", - "iot_easy_iron": "Jednoduch\u00e9 \u017eehlenie", + "iot_dry_technical_fabrics": "Technické tkaniny", + "iot_dry_warm_embrace": "Teplé bubnové sušenie", + "iot_dry_wool_dry": "Vlna suchá", + "iot_easy_iron": "Jednoduché žehlenie", "iot_fresh_care_steam": "Fresh Care + Para", "iot_hygiene_pro_steam": "Hygiene Pro + para", - "iot_intensive_40_steam": "Intensive 40\u00b0C + Para", - "iot_mixed_steam": "Zmie\u0161an\u00e9 + Para", - "iot_mix_and_colour_59_steam": "Zmie\u0161an\u00e9 a Farebn\u00e9 59' + Para", + "iot_intensive_40_steam": "Intensive 40°C + Para", + "iot_mixed_steam": "Zmiešané + Para", + "iot_mix_and_colour_59_steam": "Zmiešané a Farebné 59' + Para", "iot_perfect_cotton_59_steam": "Cista Bavlna 59'", - "iot_rapid_a_class_60_steam": "R\u00fdchly Trieda A 60 + Para", + "iot_rapid_a_class_60_steam": "Rýchly Trieda A 60 + Para", "iot_resistant_cotton_steam": "Bavlna + Para", - "iot_shirts_steam": "Ko\u0161ele + para", - "iot_single_item_steam": "Jedna polo\u017eka + Para", + "iot_shirts_steam": "Košele + para", + "iot_single_item_steam": "Jedna položka + Para", "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", - "iot_special_39_full_load_steam": "\u0160peci\u00e1l 39' + Para", + "iot_special_39_full_load_steam": "Špeciál 39' + Para", "iot_steam_hygiene_plus": "Para Hygiene Plus ", - "iot_synthetic_and_coloured_steam": "Syntetika a farebn\u00e9 materi\u00e1ly + para", - "iot_wash_and_dry": "Pranie a su\u0161enie", - "iot_wash_anti_mites": "Proti rozto\u010dom", - "iot_wash_anti_odor": "Odstr\u00e1nenie z\u00e1pachu", + "iot_synthetic_and_coloured_steam": "Syntetika a farebné materiály + para", + "iot_wash_and_dry": "Pranie a sušenie", + "iot_wash_anti_mites": "Proti roztočom", + "iot_wash_anti_odor": "Odstránenie zápachu", "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", "iot_wash_baby_sanitizer": "Dezinfekcia", - "iot_wash_baby_sanitizer_steam": "Dezinfek\u010dn\u00fd pre odevy pre bato\u013ea + Para", + "iot_wash_baby_sanitizer_steam": "Dezinfekčný pre odevy pre batoľa + Para", "iot_wash_backpacks": "Plecniaky", "iot_wash_backpacks_zelig": "Batohy", - "iot_wash_bathrobe": "\u017dupany a uter\u00e1ky", - "iot_wash_bathrobe_steam": "\u017dupan + Para", - "iot_wash_bed_linen": "Poste\u013en\u00e9 oblie\u010dky", - "iot_wash_bed_linen_steam": "Poste\u013en\u00e9 oblie\u010dky + Para", - "iot_wash_bed_linen_zelig": "Poste\u013en\u00e9 oblie\u010dky", - "iot_wash_big_single_load": "Ve\u013ek\u00e1 jednorazov\u00e1 n\u00e1pl\u0148", + "iot_wash_bathrobe": "Župany a uteráky", + "iot_wash_bathrobe_steam": "Župan + Para", + "iot_wash_bed_linen": "Posteľné obliečky", + "iot_wash_bed_linen_steam": "Posteľné obliečky + Para", + "iot_wash_bed_linen_zelig": "Posteľné obliečky", + "iot_wash_big_single_load": "Veľká jednorazová náplň", "iot_wash_bleaching": "Bielenie", - "iot_wash_blood_stains": "Krvav\u00e9 \u0161kvrny", - "iot_wash_cashmere": "Ka\u0161m\u00edr", - "iot_wash_chocolate_stains": "\u010cokol\u00e1dov\u00e9 \u0161kvrny", - "iot_wash_cold_wash": "Studen\u00e9 pranie", - "iot_wash_colored": "Farebn\u00e9", - "iot_wash_colored_anti_stain": "Odstra\u0148ovanie \u0161kv\u0155n z farebn\u00fdch materi\u00e1lov", - "iot_wash_colored_delicate": "Farebn\u00e9 ch\u00falostiv\u00e9", - "iot_wash_coloured": "Farebn\u00e9", - "iot_wash_coloured_bed_linen": "Farebn\u00e9 poste\u013en\u00e9 oblie\u010dky", - "iot_wash_coloured_bed_linen_steam": "Farebn\u00e9 poste\u013en\u00e9 oblie\u010dky + Para", - "iot_wash_coloured_curtains": "Farebn\u00e9 z\u00e1vesy", - "iot_wash_coloured_shirts": "Farebn\u00e9 ko\u0161ele", - "iot_wash_coloured_shirts_steam": "Farebn\u00e9 ko\u0161ele + Para", - "iot_wash_coloured_steam": "Farebn\u00e9 + Para", - "iot_wash_coloured_tableclothes": "Farebn\u00e9 obrusy", - "iot_wash_coloured_tableclothes_steam": "Farebn\u00e9 obrusy + Para", + "iot_wash_blood_stains": "Krvavé škvrny", + "iot_wash_cashmere": "Kašmír", + "iot_wash_chocolate_stains": "Čokoládové škvrny", + "iot_wash_cold_wash": "Studené pranie", + "iot_wash_colored": "Farebné", + "iot_wash_colored_anti_stain": "Odstraňovanie škvŕn z farebných materiálov", + "iot_wash_colored_delicate": "Farebné chúlostivé", + "iot_wash_coloured": "Farebné", + "iot_wash_coloured_bed_linen": "Farebné posteľné obliečky", + "iot_wash_coloured_bed_linen_steam": "Farebné posteľné obliečky + Para", + "iot_wash_coloured_curtains": "Farebné závesy", + "iot_wash_coloured_shirts": "Farebné košele", + "iot_wash_coloured_shirts_steam": "Farebné košele + Para", + "iot_wash_coloured_steam": "Farebné + Para", + "iot_wash_coloured_tableclothes": "Farebné obrusy", + "iot_wash_coloured_tableclothes_steam": "Farebné obrusy + Para", "iot_wash_cotton": "Bavlna", "iot_wash_cotton_steam": "Bavlna + Para", - "iot_wash_cuddly_toys": "Ply\u0161ov\u00e9 zvieratk\u00e1", - "iot_wash_curtains": "Z\u00e1clony", - "iot_wash_curtains_steam": "Z\u00e1clony+Para", - "iot_wash_curtains_zelig": "Z\u00e1clony", - "iot_wash_dark": "Tmav\u00e9 odevy", - "iot_wash_darks_and_coloured_44": "Tmav\u00e9 a farebn\u00e9 44 min.", - "iot_wash_darks_and_coloured_59": "Tmav\u00e9 a farebn\u00e9 59 min.", - "iot_wash_darks_and_coloured_xl": "Tmav\u00e9 a farebn\u00e9 XL", - "iot_wash_dark_steam": "Tmav\u00e9 odevy + Para", + "iot_wash_cuddly_toys": "Plyšové zvieratká", + "iot_wash_curtains": "Záclony", + "iot_wash_curtains_steam": "Záclony+Para", + "iot_wash_curtains_zelig": "Záclony", + "iot_wash_dark": "Tmavé odevy", + "iot_wash_darks_and_coloured_44": "Tmavé a farebné 44 min.", + "iot_wash_darks_and_coloured_59": "Tmavé a farebné 59 min.", + "iot_wash_darks_and_coloured_xl": "Tmavé a farebné XL", + "iot_wash_dark_steam": "Tmavé odevy + Para", "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", "iot_wash_dash_cold_cycle": "Dash Cold Clean", "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", - "iot_wash_delicate": "Jemn\u00e9 materi\u00e1ly", - "iot_wash_delicate_antiallergy": "Antialergick\u00fd program pre jemn\u00e9 materi\u00e1ly", - "iot_wash_delicate_antiallergy_steam": "Antialergick\u00fd program pre jemn\u00e9 materi\u00e1ly + Para", - "iot_wash_delicate_antiallergy_zelig": "Antialergick\u00fd program pre jemn\u00e9 materi\u00e1ly", - "iot_wash_delicate_colors": "Farebn\u00e9 jemn\u00e9 materi\u00e1ly", - "iot_wash_delicate_colors_steam": "Farebn\u00e1 bielize\u0148 + Para", - "iot_wash_delicate_dark": "Ch\u00falostiv\u00e9 tmav\u00e9", - "iot_wash_delicate_steam": "Jemn\u00e9 materi\u00e1ly + Para", - "iot_wash_delicate_tablecloths": "Obrusy z jemn\u00fdch materi\u00e1lov", - "iot_wash_delicate_tablecloths_steam": "Obrusy z\u00a0jemn\u00fdch materi\u00e1lov + Para", - "iot_wash_delicate_whites": "Ch\u00falostiv\u00e9 biele", - "iot_wash_denim_jeans": "D\u017e\u00ednsovina \u2013 d\u017e\u00ednsy", - "iot_wash_diving_suits": "Pot\u00e1pa\u010dsk\u00e9 obleky", - "iot_wash_diving_suits_zelig": "Pot\u00e1pa\u010dsk\u00e9 obleky", - "iot_wash_down_jackets": "Pre\u0161\u00edvan\u00e9 bundy", - "iot_wash_down_jackets_zelig": "Pre\u0161\u00edvan\u00e9 bundy", - "iot_wash_duvet": "Prikr\u00fdvky", - "iot_wash_fruit_stains": "Ovocn\u00e9 \u0161kvrny", - "iot_wash_gym_fit": "Oble\u010denie do telocvi\u010dne a posil\u0148ovne", + "iot_wash_delicate": "Jemné materiály", + "iot_wash_delicate_antiallergy": "Antialergický program pre jemné materiály", + "iot_wash_delicate_antiallergy_steam": "Antialergický program pre jemné materiály + Para", + "iot_wash_delicate_antiallergy_zelig": "Antialergický program pre jemné materiály", + "iot_wash_delicate_colors": "Farebné jemné materiály", + "iot_wash_delicate_colors_steam": "Farebná bielizeň + Para", + "iot_wash_delicate_dark": "Chúlostivé tmavé", + "iot_wash_delicate_steam": "Jemné materiály + Para", + "iot_wash_delicate_tablecloths": "Obrusy z jemných materiálov", + "iot_wash_delicate_tablecloths_steam": "Obrusy z jemných materiálov + Para", + "iot_wash_delicate_whites": "Chúlostivé biele", + "iot_wash_denim_jeans": "Džínsovina – džínsy", + "iot_wash_diving_suits": "Potápačské obleky", + "iot_wash_diving_suits_zelig": "Potápačské obleky", + "iot_wash_down_jackets": "Prešívané bundy", + "iot_wash_down_jackets_zelig": "Prešívané bundy", + "iot_wash_duvet": "Prikrývky", + "iot_wash_fruit_stains": "Ovocné škvrny", + "iot_wash_gym_fit": "Oblečenie do telocvične a posilňovne", "iot_wash_handwash": "Prepieranie", - "iot_wash_handwash_colored": "Prepieranie farebn\u00e9ho", - "iot_wash_handwash_dark": "Prepieranie tmav\u00e9ho", - "iot_wash_lingerie": "Spodn\u00e1 bielize\u0148", - "iot_wash_masks_refresh": "Osvie\u017eenie r\u00fa\u0161ok", - "iot_wash_masks_sanification": "Dezinfekcia r\u00fa\u0161ok", - "iot_wash_masks_sanification_steam": "Dezinfekcia r\u00fa\u0161ok + Para", - "iot_wash_mats": "Roho\u017ee", + "iot_wash_handwash_colored": "Prepieranie farebného", + "iot_wash_handwash_dark": "Prepieranie tmavého", + "iot_wash_lingerie": "Spodná bielizeň", + "iot_wash_masks_refresh": "Osvieženie rúšok", + "iot_wash_masks_sanification": "Dezinfekcia rúšok", + "iot_wash_masks_sanification_steam": "Dezinfekcia rúšok + Para", + "iot_wash_mats": "Rohože", "iot_wash_men_s_trousers": "Nohavice", - "iot_wash_mixed": "Zmie\u0161an\u00e9", - "iot_wash_mixed_steam": "Zmie\u0161an\u00e9 + Para", - "iot_wash_mix_and_coloured_44": "Zmie\u0161an\u00e9 a\u00a0farebn\u00e9 44\u00a0min.", - "iot_wash_mix_and_coloured_59": "Zmie\u0161an\u00e9 a\u00a0farebn\u00e9 59\u00a0min.", - "iot_wash_mix_and_coloured_xl": "Zmie\u0161an\u00e9 a farebn\u00e9 XL", - "iot_wash_new_clothes": "Nov\u00e9 oble\u010denie", - "iot_wash_perfect_white": "Dokonal\u00e1 biela", - "iot_wash_perfect_white_steam": "Dokonal\u00e1 biela + Para", - "iot_wash_pets": "Doplnky pre dom\u00e1cich mil\u00e1\u010dikov", - "iot_wash_pets_hair_removal": "Odstr\u00e1nenie ch\u013apkov z dom\u00e1cich mil\u00e1\u010dikov", - "iot_wash_pets_odours_stains_removal": "Odstra\u0148ovanie z\u00e1pachu a \u0161kv\u0155n po dom\u00e1cich zvierat\u00e1ch", - "iot_wash_pets_steam": "Doplnky pre dom\u00e1cich mil\u00e1\u010dikov", + "iot_wash_mixed": "Zmiešané", + "iot_wash_mixed_steam": "Zmiešané + Para", + "iot_wash_mix_and_coloured_44": "Zmiešané a farebné 44 min.", + "iot_wash_mix_and_coloured_59": "Zmiešané a farebné 59 min.", + "iot_wash_mix_and_coloured_xl": "Zmiešané a farebné XL", + "iot_wash_new_clothes": "Nové oblečenie", + "iot_wash_perfect_white": "Dokonalá biela", + "iot_wash_perfect_white_steam": "Dokonalá biela + Para", + "iot_wash_pets": "Doplnky pre domácich miláčikov", + "iot_wash_pets_hair_removal": "Odstránenie chĺpkov z domácich miláčikov", + "iot_wash_pets_odours_stains_removal": "Odstraňovanie zápachu a škvŕn po domácich zvieratách", + "iot_wash_pets_steam": "Doplnky pre domácich miláčikov", "iot_wash_playsuits": "Overaly", "iot_wash_playsuits_steam": "Overaly + Para", - "iot_wash_quick_drum_cleaner": "R\u00fdchly \u010disti\u010d bubna", - "iot_wash_rapid_14": "R\u00fdchly 14 min.", - "iot_wash_rapid_30": "R\u00fdchly 30 min.", - "iot_wash_rapid_44": "R\u00fdchly 44 min.", - "iot_wash_rapid_59": "R\u00fdchly 59 min", - "iot_wash_rapid_59_steam": "R\u00fdchly 59' + Para", - "iot_wash_refresh_14_min": "Osvie\u017eenie 14'.", - "iot_wash_resistant_colored": "Odoln\u00e9 farebn\u00e9", - "iot_wash_resistant_dark": "Odoln\u00e9 tmav\u00e9", - "iot_wash_resistant_whites": "Odoln\u00e9 biele", + "iot_wash_quick_drum_cleaner": "Rýchly čistič bubna", + "iot_wash_rapid_14": "Rýchly 14 min.", + "iot_wash_rapid_30": "Rýchly 30 min.", + "iot_wash_rapid_44": "Rýchly 44 min.", + "iot_wash_rapid_59": "Rýchly 59 min", + "iot_wash_rapid_59_steam": "Rýchly 59' + Para", + "iot_wash_refresh_14_min": "Osvieženie 14'.", + "iot_wash_resistant_colored": "Odolné farebné", + "iot_wash_resistant_dark": "Odolné tmavé", + "iot_wash_resistant_whites": "Odolné biele", "iot_wash_rinse": "Oplachovanie", - "iot_wash_shirts": "Ko\u0161ele", - "iot_wash_shirts_steam": "Ko\u0161ele + Para", - "iot_wash_silk": "Hodv\u00e1b", - "iot_wash_ski_suit": "Ly\u017eiarske odevy", - "iot_wash_ski_suit_zelig": "Ly\u017eiarske odevy", - "iot_wash_spin": "Odstre\u010fovanie", - "iot_wash_sport": "\u0160port", - "iot_wash_sport_anti_odor": "\u0160portov\u00e9 oble\u010denie", - "iot_wash_sport_anti_odor_zelig": "\u0160portov\u00e9 oble\u010denie", - "iot_wash_stains_remover": "Odstra\u0148ovanie \u0161kv\u0155n", + "iot_wash_shirts": "Košele", + "iot_wash_shirts_steam": "Košele + Para", + "iot_wash_silk": "Hodváb", + "iot_wash_ski_suit": "Lyžiarske odevy", + "iot_wash_ski_suit_zelig": "Lyžiarske odevy", + "iot_wash_spin": "Odstreďovanie", + "iot_wash_sport": "Šport", + "iot_wash_sport_anti_odor": "Športové oblečenie", + "iot_wash_sport_anti_odor_zelig": "Športové oblečenie", + "iot_wash_stains_remover": "Odstraňovanie škvŕn", "iot_wash_swimsuits_and_bikinis": "Plavky", "iot_wash_synthetic": "Syntetika", "iot_wash_synthetic_steam": "Syntetika + Para", "iot_wash_tablecloths": "Obrusy", "iot_wash_tablecloths_steam": "Obrusy + Para", - "iot_wash_technical_fabrics": "Technick\u00e9 tkaniny", - "iot_wash_technical_fabrics_zelig": "Technick\u00e9 tkaniny", - "iot_wash_technical_jackets": "Technick\u00e9 bundy", - "iot_wash_technical_jackets_zelig": "Technick\u00e9 bundy", + "iot_wash_technical_fabrics": "Technické tkaniny", + "iot_wash_technical_fabrics_zelig": "Technické tkaniny", + "iot_wash_technical_jackets": "Technické bundy", + "iot_wash_technical_jackets_zelig": "Technické bundy", "iot_wash_trainers": "Tenisky", "iot_wash_whites": "Biele", "iot_wash_whites_44": "Biele 44 min.", "iot_wash_whites_59": "Biele 59 min.", "iot_wash_whites_xl": "Biele XL", - "iot_wash_wine_stains": "\u0160kvrny od v\u00edna", + "iot_wash_wine_stains": "Škvrny od vína", "iot_wash_wool": "Vlna", - "jeans": "D\u017e\u00ednsy", - "jeans_60": "D\u017e\u00ednsy", - "low_dry": "Zmie\u0161an\u00e9 such\u00e9", - "mixed": "Zmie\u0161an\u00e9", - "mixed_and_colored_59": "Zmie\u0161an\u00e9 a farebn\u00e9 59 min.", - "mixed_steam": "Zmie\u0161an\u00e9 + Para", + "jeans": "Džínsy", + "jeans_60": "Džínsy", + "low_dry": "Zmiešané suché", + "mixed": "Zmiešané", + "mixed_and_colored_59": "Zmiešané a farebné 59 min.", + "mixed_steam": "Zmiešané + Para", "mix_and_colour_59": "Zmiesana + Farebna 59'", - "mix_and_colour_59_steam": "Zmie\u0161an\u00e9 a Farebn\u00e9 59' + Para", - "night_and_day": "Noc a de\u0148", - "night_wash": "No\u010dn\u00fd cyklus", - "perfect_59": "Dokonal\u00e9 vypranie 59 min.", + "mix_and_colour_59_steam": "Zmiešané a Farebné 59' + Para", + "night_and_day": "Noc a deň", + "night_wash": "Nočný cyklus", + "perfect_59": "Dokonalé vypranie 59 min.", "perfect_cotton_59": "Cista Bavlna 59'", "perfect_cotton_59_steam": "Cista Bavlna 59'", "perfect_whites_59": "Dokonale biele 59'", - "rapid_14_min": "R\u00fdchly 14'", - "rapid_30_min": "R\u00fdchly 30'", - "rapid_44_min": "R\u00fdchly 44'", - "rapid_a_class_60": "R\u00fdchly Trieda A 60", - "rapid_a_class_60_steam": "R\u00fdchly Trieda A 60 + Para", - "rapid_wash_and_dry_59_min": "Pranie a su\u0161enie 59 min.", + "rapid_14_min": "Rýchly 14'", + "rapid_30_min": "Rýchly 30'", + "rapid_44_min": "Rýchly 44'", + "rapid_a_class_60": "Rýchly Trieda A 60", + "rapid_a_class_60_steam": "Rýchly Trieda A 60 + Para", + "rapid_wash_and_dry_59_min": "Pranie a sušenie 59 min.", "resistant_cotton": "Bavlna", "resistant_cotton_steam": "Bavlna + Para", "rinse": "Oplachovanie", - "shirts_steam": "Ko\u0161ele + para", - "silent_night": "No\u010dn\u00fd cyklus", - "single_item": "Jedna polo\u017eka", - "single_item_steam": "Jedna polo\u017eka + Para", + "shirts_steam": "Košele + para", + "silent_night": "Nočný cyklus", + "single_item": "Jedna položka", + "single_item_steam": "Jedna položka + Para", "smart_wash": "Smart Wash", - "soft_care": "Jemn\u00e1 starostlivos\u0165", + "soft_care": "Jemná starostlivosť", "soft_care_steam": "Soft Care + Steam", "soft_care_steam_title": "Soft Care + Steam", "special_39": "Special 39'", "special_39_full_load": "Special 39'", - "special_39_full_load_steam": "\u0160peci\u00e1l 39' + Para", - "special_49": "\u0160peci\u00e1lne 49 min.", - "sport_39": "\u0160port 39 min.", + "special_39_full_load_steam": "Špeciál 39' + Para", + "special_49": "Špeciálne 49 min.", + "sport_39": "Šport 39 min.", "sport_plus_29": "Sport Plus 29\"", "sport_plus_39": "Sport Plus 39'", "steam_39": "Para 39 min.", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - bavlna", - "steam_care_pro_delicates": "Steam Care Pro - jemn\u00e9", + "steam_care_pro_delicates": "Steam Care Pro - jemné", "steam_care_pro_synthetic": "Steam Care Pro - syntetika", "steam_hygiene_plus": "Para Hygiene Plus ", "synthetics": "Syntetika", - "synthetic_and_coloured": "Syntetika a farebn\u00e9 materi\u00e1ly", - "synthetic_and_coloured_steam": "Syntetika a farebn\u00e9 materi\u00e1ly + para", + "synthetic_and_coloured": "Syntetika a farebné materiály", + "synthetic_and_coloured_steam": "Syntetika a farebné materiály + para", "tailored_resistant_cotton": "Tailored Resistant Cotton", "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", - "total_care": "Celkov\u00e1 starostlivos\u0165", - "tumbling": "Bubnov\u00e9 su\u0161enie", + "total_care": "Celková starostlivosť", + "tumbling": "Bubnové sušenie", "wool": "Vlna", - "wool_and_delicates_49": "Vlna/Jemn\u00e9 49'", - "wool_dry": "Vlna such\u00e1", - "wool_soft_care": "Vlna & M\u00e4kk\u00e1 starostlivost" + "wool_and_delicates_49": "Vlna/Jemné 49'", + "wool_dry": "Vlna suchá", + "wool_soft_care": "Vlna & Mäkká starostlivost" }, "name": "Program" }, "dry_levels": { "state": { - "0": "Bez su\u0161enia", - "1": "\u017dehlenie", - "2": "\u0160atn\u00edk pripraven\u00fd", - "3": "\u0160atn\u00edk pripraven\u00fd", - "4": "Extra su\u0161enie", - "12": "\u017dehlenie", - "13": "\u0160atn\u00edk pripraven\u00fd", - "14": "Hotov\u00e9 na nosenie", - "15": "Extra su\u0161enie" + "0": "Bez sušenia", + "1": "Žehlenie", + "2": "Šatník pripravený", + "3": "Šatník pripravený", + "4": "Extra sušenie", + "12": "Žehlenie", + "13": "Šatník pripravený", + "14": "Hotové na nosenie", + "15": "Extra sušenie" }, - "name": "\u00darove\u0148 su\u0161enia" + "name": "Úroveň sušenia" }, "spin_speed": { - "name": "Odstre\u010fovanie" + "name": "Odstreďovanie" }, "temperature": { "name": "Teplota" }, "dry_time": { - "name": "\u010cas su\u0161enia" + "name": "Čas sušenia" } }, "switch": { "anti_crease": { - "name": "Proti pokr\u010deniu" + "name": "Proti pokrčeniu" }, "add_dish": { "name": "" @@ -835,51 +834,51 @@ "name": "Eko" }, "extra_dry": { - "name": "Extra su\u0161enie" + "name": "Extra sušenie" }, "half_load": { - "name": "Polovi\u010dn\u00e9 naplnenie" + "name": "Polovičné naplnenie" }, "open_door": { - "name": "Otvori\u0165 dvere" + "name": "Otvoriť dvere" }, "three_in_one": { - "name": "3\u00a0v\u00a01" + "name": "3 v 1" }, "preheat": { - "name": "Predhria\u0165" + "name": "Predhriať" }, "dish_washer": { - "name": "Um\u00fdva\u010dka riadu" + "name": "Umývačka riadu" }, "tumble_dryer": { - "name": "Bubnov\u00e1 su\u0161i\u010dka" + "name": "Bubnová sušička" }, "washing_machine": { - "name": "Pr\u00e1\u010dka" + "name": "Práčka" }, "washer_dryer": { - "name": "Pr\u00e1\u010dka so su\u0161i\u010dkou" + "name": "Práčka so sušičkou" }, "oven": { - "name": "R\u00fara na pe\u010denie" + "name": "Rúra na pečenie" }, "prewash": { - "name": "Predum\u00fdvanie" + "name": "Predumývanie" }, "pause": { - "name": "Pozastavi\u0165" + "name": "Pozastaviť" }, "keep_fresh": { "name": "Keep Fresh" }, "delay_time": { - "name": "Odlo\u017een\u00fd \u0161tart" + "name": "Odložený štart" } }, "binary_sensor": { "door_lock": { - "name": "Uzamknutie dver\u00ed" + "name": "Uzamknutie dverí" }, "extra_rinse_1": { "name": "+ 1 oplachovanie" @@ -891,16 +890,16 @@ "name": "+ 3 oplachovania" }, "good_night": { - "name": "Dobr\u00fa noc" + "name": "Dobrú noc" }, "anti_crease": { - "name": "Proti pokr\u010deniu" + "name": "Proti pokrčeniu" }, "aqua_plus": { "name": "Aquaplus" }, "spin_speed": { - "name": "Odstre\u010fovanie" + "name": "Odstreďovanie" }, "programs_dw": { "name": "Program" @@ -918,68 +917,68 @@ "name": "Program" }, "still_hot": { - "name": "St\u00e1le hor\u00face" + "name": "Stále horúce" }, "pan_status": { "name": "Panvica" }, "remote_control": { - "name": "Dia\u013ekov\u00e9 ovl\u00e1danie" + "name": "Diaľkové ovládanie" }, "rinse_aid": { - "name": "\u00darove\u0148 prostriedku na oplachovanie" + "name": "Úroveň prostriedku na oplachovanie" }, "salt_level": { - "name": "\u00darove\u0148 soli" + "name": "Úroveň soli" }, "door_open": { - "name": "Otvoren\u00e9 dvere" + "name": "Otvorené dvere" }, "connection": { - "name": "Pripojenie spotrebi\u010da" + "name": "Pripojenie spotrebiča" }, "child_lock": { - "name": "Detsk\u00e1 poistka" + "name": "Detská poistka" }, "on": { "name": "Zap." }, "prewash": { - "name": "Predum\u00fdvanie" + "name": "Predumývanie" } }, "number": { "power_management": { - "name": "Spr\u00e1va v\u00fdkonu" + "name": "Správa výkonu" }, "temperature": { "name": "Teplota" }, "delay_time": { - "name": "Odlo\u017een\u00fd \u0161tart" + "name": "Odložený štart" }, "water_hard": { - "name": "Tvrdos\u0165 vody" + "name": "Tvrdosť vody" }, "program_duration": { "name": "Trvanie programu" }, "target_temperature": { - "name": "Cie\u013eov\u00e1 teplota" + "name": "Cieľová teplota" }, "rinse_iterations": { - "name": "Po\u010det pl\u00e1kan\u00ed" + "name": "Počet plákaní" }, "wash_time": { - "name": "\u010cas prania" + "name": "Čas prania" }, "dry_time": { - "name": "\u010cas su\u0161enia" + "name": "Čas sušenia" } }, "button": { "induction_hob": { - "name": "Induk\u010dn\u00e1 varn\u00e1 doska" + "name": "Indukčná varná doska" } } } diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index 52cb002..94b802e 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -6,8 +6,8 @@ "0": "Pripravljen", "1": "Pripravljen", "3": "Premor", - "4": "Na\u010drtovano", - "5": "Na\u010drtovano", + "4": "Načrtovano", + "5": "Načrtovano", "6": "Napaka", "7": "Pripravljen" } @@ -17,14 +17,14 @@ "0": "Pripravljen", "1": "Pranje", "2": "Pranje", - "3": "O\u017eemanje", + "3": "Ožemanje", "4": "Izpiranje", "5": "Izpiranje", "6": "Izpiranje", - "7": "Su\u0161enje", + "7": "Sušenje", "9": "Para", "10": "Pripravljen", - "11": "O\u017eemanje", + "11": "Ožemanje", "12": "Tehtanje ", "13": "Tehtanje ", "14": "Pranje", @@ -32,9 +32,9 @@ "16": "Pranje", "17": "Izpiranje", "18": "Izpiranje", - "19": "Na\u010drtovano", - "20": "Ohranjanje sve\u017eine", - "24": "Osve\u017eitev", + "19": "Načrtovano", + "20": "Ohranjanje svežine", + "24": "Osvežitev", "25": "Pranje", "26": "Ogrevanje", "27": "Pranje" @@ -44,16 +44,16 @@ "program_phases_td": { "state": { "0": "Pripravljen", - "1": "Su\u0161enje", - "2": "Su\u0161enje", + "1": "Sušenje", + "2": "Sušenje", "3": "Hlajenje", "13": "Hlajenje", - "14": "Su\u0161enje", - "15": "Su\u0161enje", + "14": "Sušenje", + "15": "Sušenje", "16": "Hlajenje", - "18": "Ohrani sve\u017ee", - "19": "Su\u0161enje", - "20": "Su\u0161enje" + "18": "Ohrani sveže", + "19": "Sušenje", + "20": "Sušenje" }, "name": "Faza" }, @@ -63,7 +63,7 @@ "1": "Predpranje", "2": "Pranje", "3": "Izpiranje", - "4": "Su\u0161enje", + "4": "Sušenje", "5": "Pripravljen", "6": "Hot rinse" }, @@ -71,7 +71,7 @@ }, "dry_levels": { "state": { - "0": "Brez su\u0161enja", + "0": "Brez sušenja", "1": "Likanje", "2": "Suho za omaro", "3": "Suho za omaro", @@ -81,13 +81,13 @@ "14": "Pripravljeno za uporabo", "15": "Zelo suho" }, - "name": "Stopnja su\u0161enja" + "name": "Stopnja sušenja" }, "anti_crease": { - "name": "Proti me\u010dkanju" + "name": "Proti mečkanju" }, "power": { - "name": "Stopnja mo\u010di" + "name": "Stopnja moči" }, "remaining_time": { "name": "Time remaining" @@ -96,10 +96,10 @@ "name": "Temperatura" }, "water_efficiency": { - "name": "U\u010dinkovita raba vode" + "name": "Učinkovita raba vode" }, "water_saving": { - "name": "Privar\u010devana voda" + "name": "Privarčevana voda" }, "duration": { "name": "Trajanje" @@ -108,31 +108,31 @@ "name": "Ciljna temperatura" }, "spin_speed": { - "name": "O\u017eemanje" + "name": "Ožemanje" }, "steam_leve": { - "name": "Koli\u010dina pare" + "name": "Količina pare" }, "dirt_level": { "name": "Stopnja umazanije" }, "delay_time": { - "name": "S funkcijo Zamik vklopa je mo\u017eno odlo\u017eiti za\u010detek su\u0161ilnega cikla od 1 do 24 ur. Na zaslonu se prika\u017ee izbrana zakasnitev. Da bi videli kako se zmanj\u0161uje iz ure v uro, pritisnite ZA\u010cETEK. Na ta na\u010din bo perilo suho takrat, ko boste to \u017eeleli, in zagnali cikel, ko vam to najbolj ustreza, celo pono\u010di." + "name": "S funkcijo Zamik vklopa je možno odložiti začetek sušilnega cikla od 1 do 24 ur. Na zaslonu se prikaže izbrana zakasnitev. Da bi videli kako se zmanjšuje iz ure v uro, pritisnite ZAČETEK. Na ta način bo perilo suho takrat, ko boste to želeli, in zagnali cikel, ko vam to najbolj ustreza, celo ponoči." }, "dry_time": { - "name": "\u010cas su\u0161enja" + "name": "Čas sušenja" }, "suggested_load": { "name": "Zmogljivost pranja" }, "energy_label": { - "name": "Energijska u\u010dinkovitost" + "name": "Energijska učinkovitost" }, "det_dust": { - "name": "Pra\u0161ek" + "name": "Prašek" }, "det_liquid": { - "name": "Teko\u010dina" + "name": "Tekočina" }, "errors": { "name": "Napaka" @@ -147,13 +147,13 @@ "name": "Poraba energije Skupaj" }, "water_total": { - "name": "U\u010dinkovita raba vode Skupaj" + "name": "Učinkovita raba vode Skupaj" }, "energy_current": { "name": "Poraba energije Current" }, "water_current": { - "name": "U\u010dinkovita raba vode Current" + "name": "Učinkovita raba vode Current" } }, "select": { @@ -165,31 +165,31 @@ "auto_plus": "AutoPlus", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Samodejno univerzalno 50\u201360 \u00b0C", - "auto_universal_plus": "Samodejno univerzalno+ 65\u201375 \u00b0C", - "auto_universal_plus_soil": "Samodejno univerzalno+ 65\u201375 \u00b0C", - "auto_universal_soil": "Samodejno univerzalno 50\u201360 \u00b0C", + "auto_universal": "Samodejno univerzalno 50–60 °C", + "auto_universal_plus": "Samodejno univerzalno+ 65–75 °C", + "auto_universal_plus_soil": "Samodejno univerzalno+ 65–75 °C", + "auto_universal_soil": "Samodejno univerzalno 50–60 °C", "auto_wash": "Samodejno pomivanje", "auto_wash_soil": "Samodejno pomivanje", - "classe_a_59": "Razred A 59 min. 65 \u00b0C", - "delicate": "Ob\u010dutljivo 45 \u00b0C", + "classe_a_59": "Razred A 59 min. 65 °C", + "delicate": "Občutljivo 45 °C", "dishwasher_care": "Cikel odstranjevanja vodnega kamna", - "eco": "Var\u010dno", - "eco_asynch": "Eko 45 \u00b0C", - "eco_bldc": "Eko 45 \u00b0C", - "eco_synch": "Eko 45 \u00b0C", + "eco": "Varčno", + "eco_asynch": "Eko 45 °C", + "eco_bldc": "Eko 45 °C", + "eco_synch": "Eko 45 °C", "gentle_wash": "Gentle wash", "glass": "Kozarci", - "glassware": "Steklo 45 \u00b0C", + "glassware": "Steklo 45 °C", "glass_care": "Glass Care", "hygiene": "Higiena", - "hygiene_plus": "Higiena + 75 \u00b0C", + "hygiene_plus": "Higiena + 75 °C", "intensive": "Intenzivno ", "intensive_rapid": "Hitro in intenzivno", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Samodejno univerzalno 50\u201360 \u00b0C", + "iot_auto_universal_soil": "Samodejno univerzalno 50–60 °C", "iot_auto_wash_soil": "Samodejno pranje", - "iot_baby_care": "Otro\u0161ka posoda", + "iot_baby_care": "Otroška posoda", "iot_breakfast": "Zajtrk", "iot_checkup": "Pregled", "iot_china_crystals": "Kristal", @@ -198,13 +198,13 @@ "iot_cocktail_glasses_soil": "Koktajl kozarci", "iot_daily_care": "Dnevna nega", "iot_daily_care_soil": "Dnevna nega", - "iot_delicate": "Ob\u010dutljivo 45 \u00b0C", - "iot_dinner_for_two": "Ve\u010derja v dvoje", - "iot_dinner_for_two_soil": "Ve\u010derja v dvoje", + "iot_delicate": "Občutljivo 45 °C", + "iot_dinner_for_two": "Večerja v dvoje", + "iot_dinner_for_two_soil": "Večerja v dvoje", "iot_dreft_quick_cycle": "Dreft Quick", - "iot_eco_asynch": "Var\u010dno 45 \u00b0C", - "iot_eco_bldc": "Var\u010dno 45 \u00b0C", - "iot_eco_synch": "Var\u010dno 45 \u00b0C", + "iot_eco_asynch": "Varčno 45 °C", + "iot_eco_bldc": "Varčno 45 °C", + "iot_eco_synch": "Varčno 45 °C", "iot_extra_hygiene": "Visoka stopnja higiene", "iot_fairy_quick_cycle": "Fairy Quick", "iot_happy_hour": "Zakuska", @@ -213,46 +213,46 @@ "iot_party_soil": "Zabava", "iot_pizza_menu": "Pica program", "iot_pizza_menu_soil": "Pica program", - "iot_plastic_tupperware": "Plastika in posode za \u017eivila", + "iot_plastic_tupperware": "Plastika in posode za živila", "iot_porcelain": "Porcelan", - "iot_power_mix_wash": "Intenzivni za razli\u010dno posodo", - "iot_power_mix_wash_soil": "Intenzivni za razli\u010dno posodo", + "iot_power_mix_wash": "Intenzivni za različno posodo", + "iot_power_mix_wash_soil": "Intenzivni za različno posodo", "iot_prewash": "Predpranje", "iot_pyrex_and_glassware": "Pyrex in steklenina", "iot_rapid_29": "Hitro 29'", - "iot_rapid_39": "Rapid 39' 60 \u00b0C", - "iot_single": "Samsko \u017eivljenje", - "iot_steam": "Para 75 \u00b0C", + "iot_rapid_39": "Rapid 39' 60 °C", + "iot_single": "Samsko življenje", + "iot_steam": "Para 75 °C", "iot_super_flash": "Super hitro", "iot_super_wash": "Super pomivanje", - "iot_turbopower": "Turbo mo\u010d", - "iot_universal": "Univerzalno 60 \u00b0C", - "iot_wok_grids_maxi_pans": "Posebna posoda (voki, re\u0161etke in velike kozice)", - "iot_wok_grids_maxi_pans_soil": "Posebna posoda (voki, re\u0161etke in velike kozice)", + "iot_turbopower": "Turbo moč", + "iot_universal": "Univerzalno 60 °C", + "iot_wok_grids_maxi_pans": "Posebna posoda (voki, rešetke in velike kozice)", + "iot_wok_grids_maxi_pans_soil": "Posebna posoda (voki, rešetke in velike kozice)", "iot_yes_quick_cycle": "Yes Quick", - "night": "Zelo tiho 55 \u00b0C", + "night": "Zelo tiho 55 °C", "prewash": "Predpranje", "rapid_20": "Kratki progr. 20'", "rapid_24": "Hitro 24'", - "rapid_29": "Hitro 29' 50\u00b0C", + "rapid_29": "Hitro 29' 50°C", "rapid_35": "Wash&Dry 35'", - "rapid_39": "Rapid 39' 60 \u00b0C", + "rapid_39": "Rapid 39' 60 °C", "rapid_49": "Kratki progr. 49'", "rapid_59": "Hitri progr. 59'", "sanitising": "Dezinfekcija", "silence": "Silence", - "silent": "No\u010d", + "silent": "Noč", "silent_care": "Silent Care", "smart_ai": "Smart AI", "special": "posebno", "special_pw_prz": "Posebno", - "steam": "Para 75 \u00b0C", - "steam_plus": "Para Plus 75\u00b0C", - "total_care": "Total Care 50\u00b0C", - "ultra_silence": "Zelo tiho 55 \u00b0C", - "ultra_silent": "Zelo tiho 55 \u00b0C", - "universal": "Univerzalno 60 \u00b0C", - "universal_plus": "Univerzalni Plus 70 \u00b0C", + "steam": "Para 75 °C", + "steam_plus": "Para Plus 75°C", + "total_care": "Total Care 50°C", + "ultra_silence": "Zelo tiho 55 °C", + "ultra_silent": "Zelo tiho 55 °C", + "universal": "Univerzalno 60 °C", + "universal_plus": "Univerzalni Plus 70 °C", "zoom_39": "Zoom 39 min" }, "name": "Program" @@ -261,22 +261,22 @@ "state": { "iot_special_ash_brown": "Pepelnato rjava", "iot_special_beef_fillet": "Goveji file", - "iot_special_beef_veal_stew": "Goveja in tele\u010dja obara", - "iot_special_boiled_rice": "Kuhan ri\u017e", - "iot_special_chicken_breast": "Pi\u0161\u010dan\u010dje prsi", - "iot_special_chicken_legs": "Pi\u0161\u010dan\u010dja bedra", - "iot_special_chocolate_pudding": "\u010cokoladni puding", + "iot_special_beef_veal_stew": "Goveja in telečja obara", + "iot_special_boiled_rice": "Kuhan riž", + "iot_special_chicken_breast": "Piščančje prsi", + "iot_special_chicken_legs": "Piščančja bedra", + "iot_special_chocolate_pudding": "Čokoladni puding", "iot_special_entrecote": "Zrezek Entrecote", - "iot_special_fresh_tuna": "Sve\u017ea tuna", - "iot_special_grilled_vegetables": "Zelenjava na \u017earu", - "iot_special_lamb_cutlet": "Jagnje\u010dji kotlet", + "iot_special_fresh_tuna": "Sveža tuna", + "iot_special_grilled_vegetables": "Zelenjava na žaru", + "iot_special_lamb_cutlet": "Jagnječji kotlet", "iot_special_meatballs": "Mesne kroglice", - "iot_special_minestrone": "Mine\u0161tra", - "iot_special_mussels": "Morske \u0161koljke", + "iot_special_minestrone": "Mineštra", + "iot_special_mussels": "Morske školjke", "iot_special_omelette": "Omleta", - "iot_special_pancakes": "Pala\u010dinke", - "iot_special_paris_style_peas": "Grah na pari\u0161ki na\u010din", - "iot_special_poached_eggs": "Pe\u010dena jajca", + "iot_special_pancakes": "Palačinke", + "iot_special_paris_style_peas": "Grah na pariški način", + "iot_special_poached_eggs": "Pečena jajca", "iot_special_pork_fillet": "Svinjski file", "iot_special_pork_ribs": "Svinjska rebrca", "iot_special_prawns": "Kozice", @@ -284,8 +284,8 @@ "iot_special_ratatouille": "Ratatouille", "iot_special_salmon_fillet": "Lososov file", "iot_special_saute_potatoes": "Sotiran krompir", - "iot_special_scallops": "Pokrova\u010de", - "iot_special_scrambled_eggs": "Vme\u0161ana jajca", + "iot_special_scallops": "Pokrovače", + "iot_special_scrambled_eggs": "Vmešana jajca", "iot_special_spelt": "Pira", "iot_special_veggy_noodles": "Vegetarijanski rezanci", "iot_special_white_fish_fillet": "File bele ribe", @@ -300,49 +300,48 @@ "programs_ov": { "state": { "bakery": "Testenine in pekovski izdelki", - "bakery_steam": "V sopari pe\u010den kruh", + "bakery_steam": "V sopari pečen kruh", "bottom_heating": "Spodnji grelnik", "bottom_heating_fan": "Spodnji grelnik + Ventilator", "bread": "Kruh", - "bread_steam": "V sopari pe\u010deno pecivo", + "bread_steam": "V sopari pečeno pecivo", "convection_fan": "Konvekcija + ventilator", - "convection_fan_turnspit": "Konvekcija + ventilator + ra\u017eenj", + "convection_fan_turnspit": "Konvekcija + ventilator + raženj", "conventional": "Konvenkcijsko", - "conventional_turnspit": "Konvekcija + ra\u017eenj", + "conventional_turnspit": "Konvekcija + raženj", "defrost": "Odmrzovanje", "descaling": "Odstranjevanje vodnega kamna", "fish": "Ribe", "fish_steam": "Soparjene ribe", - "grill_cata": "\u017dar", - "grill_fan_cata": "\u017dar in ventilator", - "grill_fan_pyro": "\u017dar + ventilator", - "grill_pyro": "\u017dar", + "grill_cata": "Žar", + "grill_fan_cata": "Žar in ventilator", + "grill_fan_pyro": "Žar + ventilator", + "grill_pyro": "Žar", "h20_clean": "H2O-Clean", "iot_bread": "Kruh", "iot_h20_clean": "h2O clean", "leavening": "Vzhajanje", "low_temp_cooking": "Priprava pri nizki temperaturi", - "low_temp_cooking_fish": "Priprava pri nizki temperaturi \u2013 ribe", - "low_temp_cooking_fish_steam": "Soparjenje pri nizki temperaturi \u2013 ribe", - "low_temp_cooking_meat": "Priprava pri nizki temperaturi \u2013 meso", - "low_temp_cooking_meat_steam": "Soparjenje pri nizki temperaturi \u2013 meso", + "low_temp_cooking_fish": "Priprava pri nizki temperaturi – ribe", + "low_temp_cooking_fish_steam": "Soparjenje pri nizki temperaturi – ribe", + "low_temp_cooking_meat": "Priprava pri nizki temperaturi – meso", + "low_temp_cooking_meat_steam": "Soparjenje pri nizki temperaturi – meso", "low_temp_cooking_steam": "Soparjenje pri nizki temperaturi", "meat": "Meso", "meat_steam": "Soparjeno meso", - "multi_level": "Na ve\u010d nivojih", + "multi_level": "Na več nivojih", "paella": "Paella", "pasta_and_bakery": "Testenine in pekovski izdelki", "pizza": "Pizza", "pyrolysis": "Piroliza", "pyrolysis_plus": "Piroliza +", - "red_meat": "Rde\u010de meso", - "red_meat_steam": "Soparjeno rde\u010de meso", + "red_meat": "Rdeče meso", + "red_meat_steam": "Soparjeno rdeče meso", "regenerate": "Obnavljanje", "soft_plus": "Soft+", "super_grill": "Super Grill", "tailor_bake": "Tailor bake", "tailor_bake_cata": "Tailor Bake", - "tailor_bake_desctiption": "Ta funkcija je idealna za pripravo jedi, ki so mehke znotraj in hrustljave zunaj.\r\r\r\r\r\nTa funkcija zmanj\u0161a koli\u010dino ma\u0161\u010dob ali olja, potrebnega za zdravo prehrano.\r\r\r\r\r\nKombinacija grelnih elementov in pulziraji\u010dega ciklusa\r\r\r\r\r\nzraka zagotavlja popolne rezultate peke.", "tailor_bake_pyro": "Tailor Bake", "vegetables": "Zelenjava", "vegetables_cata": "Zelenjava", @@ -355,14 +354,14 @@ }, "programs_td": { "state": { - "active_dry": "Aktivno su\u0161enje", + "active_dry": "Aktivno sušenje", "allergy_care": "Protialergijski", "all_in_one": "Vse hkrati", "antiallergy": "Protialergijski", "anti_odours": "Odstranjevanje vonjav", "auto_care": "Samodejna nega", - "baby": "Obla\u010dila dojen\u010dkov", - "bed_quilt": "Pre\u0161ite odeje", + "baby": "Oblačila dojenčkov", + "bed_quilt": "Prešite odeje", "care_30": "Nega 30 min", "care_45": "Nega 45 min", "care_59": "Nega 59 min", @@ -370,120 +369,120 @@ "daily_45_min": "DNEVNO 45 min", "daily_perfect_59_min": "DNEVNO POPOLNO 59 min", "darks_and_coloured": "Temno in barvno", - "delicates": "Ob\u010dutljivo perilo", - "duvet": "Pre\u0161ite odeje", - "eco": "Eko bomba\u017e", - "ecospeed_cottons": "Eko hitri za bomba\u017e", - "ecospeed_delicates": "Eko hitri za ob\u010dutljivo", - "ecospeed_mixed": "Eko hitri za me\u0161ano", + "delicates": "Občutljivo perilo", + "duvet": "Prešite odeje", + "eco": "Eko bombaž", + "ecospeed_cottons": "Eko hitri za bombaž", + "ecospeed_delicates": "Eko hitri za občutljivo", + "ecospeed_mixed": "Eko hitri za mešano", "extra_hygiene": "DODATNA HIGIENA", "fitness": "Fitnes", - "fresh_care": "Nega za sve\u017eino", + "fresh_care": "Nega za svežino", "genius": "Genius", "hqd_baby_care": "Baby Care", - "hqd_bath_towel": "Brisa\u010de", + "hqd_bath_towel": "Brisače", "hqd_bed_sheets": "Rjuhe", - "hqd_bulky": "Ve\u010dji kosi", - "hqd_casual": "Za prosti \u010das", - "hqd_cold_wind_30": "Hladen vetri\u010d 30 minut", - "hqd_cold_wind_timing": "Hladen vetri\u010d ", - "hqd_cotton": "Bomba\u017e", + "hqd_bulky": "Večji kosi", + "hqd_casual": "Za prosti čas", + "hqd_cold_wind_30": "Hladen vetrič 30 minut", + "hqd_cold_wind_timing": "Hladen vetrič ", + "hqd_cotton": "Bombaž", "hqd_curtain": "Zavese", - "hqd_delicate": "Ob\u010dutljive tkanine", + "hqd_delicate": "Občutljive tkanine", "hqd_diaper": "Plenice", - "hqd_duvet": "Pre\u0161ite odeje", + "hqd_duvet": "Prešite odeje", "hqd_feather": "Puhovke", - "hqd_hot_wind_timing": "Vro\u010d zrak", + "hqd_hot_wind_timing": "Vroč zrak", "hqd_hygienic": "Higienizacija", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", - "hqd_jacket": "Suknji\u010di", + "hqd_jacket": "Suknjiči", "hqd_jeans": "Kavbojke", "hqd_luxury": "Luxury", - "hqd_mix": "Me\u0161ano", - "hqd_night_dry": "Su\u0161enje \u010dez no\u010d", + "hqd_mix": "Mešano", + "hqd_night_dry": "Sušenje čez noč", "hqd_outdoor": "Outdoor", "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Hitro 20", "hqd_quick_30": "Hitro 30", - "hqd_quick_dry": "Hitro su\u0161enje", + "hqd_quick_dry": "Hitro sušenje", "hqd_quilt": "Posteljna pregrinjala", - "hqd_refresh": "Osve\u017eitev", - "hqd_school_uniform": "\u0160olska uniforma", + "hqd_refresh": "Osvežitev", + "hqd_school_uniform": "Šolska uniforma", "hqd_shirt": "Srajce", "hqd_shoes": "Obuvala", "hqd_silk": "Svila", - "hqd_sports": "\u0160port", + "hqd_sports": "Šport", "hqd_synthetics": "Sintetika", - "hqd_timer": "\u010casovno", - "hqd_towel": "Brisa\u010de", + "hqd_timer": "Časovno", + "hqd_towel": "Brisače", "hqd_underwear": "Spodnje perilo", "hqd_warm_up": "Pogrevanje", "hqd_wool": "Volna", - "hqd_working_suit": "Delovna obla\u010dila", + "hqd_working_suit": "Delovna oblačila", "hygiene": "Higiena", "iot_checkup": "Pregled", - "iot_dry_anti_mites": "Proti pr\u0161icam", - "iot_dry_baby": "Obla\u010dila dojen\u010dkov", + "iot_dry_anti_mites": "Proti pršicam", + "iot_dry_baby": "Oblačila dojenčkov", "iot_dry_backpacks": "Nahrbtniki", - "iot_dry_bathrobe": "Kopalni pla\u0161\u010d", + "iot_dry_bathrobe": "Kopalni plašč", "iot_dry_bed_linen": "Posteljnina", - "iot_dry_bed_quilt": "Pre\u0161ite odeje", - "iot_dry_cotton": "Bomba\u017e", - "iot_dry_cuddly_toys": "Pli\u0161aste igra\u010dke", + "iot_dry_bed_quilt": "Prešite odeje", + "iot_dry_cotton": "Bombaž", + "iot_dry_cuddly_toys": "Plišaste igračke", "iot_dry_curtains": "Zavese", "iot_dry_dehumidifier": "Odstranjevalec vlage", - "iot_dry_delicates": "Ob\u010dutljivo", - "iot_dry_delicate_tablecloths": "Ob\u010dutljivi namizni prti", - "iot_dry_denim_jeans": "Denim \u2013 jeans", - "iot_dry_down_jacket": "Suknji\u010di", - "iot_dry_duvet": "Pre\u0161ite odeje", - "iot_dry_easy_iron_cotton": "Super la\u017eje likanje", - "iot_dry_easy_iron_synthetics": "Super la\u017eje likanje sintetike", - "iot_dry_gym_fit": "Obla\u010dila za telovadbo in fitnes", + "iot_dry_delicates": "Občutljivo", + "iot_dry_delicate_tablecloths": "Občutljivi namizni prti", + "iot_dry_denim_jeans": "Denim – jeans", + "iot_dry_down_jacket": "Suknjiči", + "iot_dry_duvet": "Prešite odeje", + "iot_dry_easy_iron_cotton": "Super lažje likanje", + "iot_dry_easy_iron_synthetics": "Super lažje likanje sintetike", + "iot_dry_gym_fit": "Oblačila za telovadbo in fitnes", "iot_dry_lingerie": "Spodnje perilo", - "iot_dry_mixed": "Me\u0161ano", + "iot_dry_mixed": "Mešano", "iot_dry_playsuits": "Pajaci", "iot_dry_rapid_30": "Rapid 30", - "iot_dry_rapid_59": "Hitro 59\u2019", - "iot_dry_refresh": "Osve\u017eitev", - "iot_dry_regenerates_waterproof": "Obnovitev nepremo\u010dljivih obla\u010dil", - "iot_dry_relax_creases": "Meh\u010danje gub", + "iot_dry_rapid_59": "Hitro 59’", + "iot_dry_refresh": "Osvežitev", + "iot_dry_regenerates_waterproof": "Obnovitev nepremočljivih oblačil", + "iot_dry_relax_creases": "Mehčanje gub", "iot_dry_shirts": "Srajce", "iot_dry_small_load": "Malo perila", "iot_dry_swimsuits_and_bikinis": "Kopalke", "iot_dry_synthetics": "Sintetika", - "iot_dry_synthetic_dry": "Su\u0161enje sintetike", + "iot_dry_synthetic_dry": "Sušenje sintetike", "iot_dry_tablecloths": "Namizni prti", - "iot_dry_technical_fabrics": "Tehni\u010dne tkanine", + "iot_dry_technical_fabrics": "Tehnične tkanine", "iot_dry_warm_embrace": "Mehkoba", "iot_dry_wool": "Woolmark", - "jeans": "D\u017eins", - "mix_and_dry": "Su\u0161enje \u2013 me\u0161ana sestava", - "pets": "Hi\u0161ne \u017eivali", + "jeans": "Džins", + "mix_and_dry": "Sušenje – mešana sestava", + "pets": "Hišne živali", "pre_iron": "Pred likanjem", "rapid_30": "Rapid 30", "rapid_45": "Hitri 45 min", "rapid_59": "Popolni hitri program 59 min.", - "refresh": "Osve\u017eitev", - "relax_creases": "Meh\u010danje gub", + "refresh": "Osvežitev", + "relax_creases": "Mehčanje gub", "saving_30_min": "EKO 30 min", "shirts": "Srajce", "shoes": "Obuvala", "small_load": "Malo perila", "soft_care": "Nega za mehkobo", - "sport_plus": "\u0160portna oblacila", - "super_easy_iron_misti": "Super la\u017eje likanje me\u0161anih tkanin", - "super_easy_iron_xxl": "Super la\u017eje likanje XXL", - "super_fast_cottons": "Super hitri za bomba\u017e", - "super_fast_delicates": "Super hitri za ob\u010dutljivo", + "sport_plus": "Športna oblacila", + "super_easy_iron_misti": "Super lažje likanje mešanih tkanin", + "super_easy_iron_xxl": "Super lažje likanje XXL", + "super_fast_cottons": "Super hitri za bombaž", + "super_fast_delicates": "Super hitri za občutljivo", "synthetics": "Sintetika", "total_care": "Total Care", - "trainers": "\u0160portna obutev", + "trainers": "Športna obutev", "ultra_care": "Ultra Care", - "waterproof_revitalize": "Obnovitev nepremo\u010dljivih obla\u010dil", + "waterproof_revitalize": "Obnovitev nepremočljivih oblačil", "whites": "Belo", - "wool": "Su\u0161enje volne", + "wool": "Sušenje volne", "woolmark": "Woolmark", "xxl_load": "Zelo veliki kosi perila", "zoom_59": "Zoom 59" @@ -492,8 +491,8 @@ }, "programs_wm": { "state": { - "20_degrees_coloured_cottons": "20\u00b0 pisano in bomba\u017e", - "20_degrees_new_energy_label": "20\u00b0C", + "20_degrees_coloured_cottons": "20° pisano in bombaž", + "20_degrees_new_energy_label": "20°C", "active_steam": "Para", "active_wash": "Aktivno pranje", "active_wash_steam": "Aktivno pranje", @@ -503,58 +502,58 @@ "all_in_one_59": "Vse v enem 59'.", "all_in_one_59_steam": "Aktivno pranje + para", "autocare": "Samodejna nega", - "autoclean": "\u010ci\u0161\u010denje bobna", - "baby_60": "Vsa otro\u0161ka obla\u010dila 60 \u00b0C", + "autoclean": "Čiščenje bobna", + "baby_60": "Vsa otroška oblačila 60 °C", "care_14": "Rapid Care 14'", "care_30": "Rapid Care 30'", "care_44": "Rapid Care 44'", "checkup": "Preveri", "colour_59": "Barvno 59'", "colour_59_steam": "Barvno perilo 59' + para", - "cottons": "Bomba\u017e", - "cottons_prewash": "Bomba\u017e + predpranje", - "cottons_steam": "Bomba\u017e + Para", - "cotton_care_59": "Bomba\u017e 59 min.", - "delicate_59": "Ob\u010dutljivo 59'", - "delicate_silk": "Ob\u010dutljiva svila", - "delicate_silk_steam": "Ob\u010dutljiva svila + para", - "delicati_59": "Ob\u010dutljivo 59'", - "delicati_59_steam": "Ob\u010dutljivo 59'", - "drain_spin": "Izpiranje in o\u017eemanje", - "easy_iron": "La\u017eje likanje", + "cottons": "Bombaž", + "cottons_prewash": "Bombaž + predpranje", + "cottons_steam": "Bombaž + Para", + "cotton_care_59": "Bombaž 59 min.", + "delicate_59": "Občutljivo 59'", + "delicate_silk": "Občutljiva svila", + "delicate_silk_steam": "Občutljiva svila + para", + "delicati_59": "Občutljivo 59'", + "delicati_59_steam": "Občutljivo 59'", + "drain_spin": "Izpiranje in ožemanje", + "easy_iron": "Lažje likanje", "eco_40_60_new_energy_label": "Eco 40-60", "extra_care": "Dodatna Nega", "fitness": "Fitness", "fitness_care": "Fitness", - "fresh_care": "Nega za sve\u017eino", - "fresh_care_steam": "Nega za sve\u017eino + para", - "handwash_wool": "Ro\u010dno pranje in volna", - "high_dry": "Su\u0161enje bomba\u017ea", - "hqd_20_degrees": "Bomba\u017e 20\u2103", + "fresh_care": "Nega za svežino", + "fresh_care_steam": "Nega za svežino + para", + "handwash_wool": "Ročno pranje in volna", + "high_dry": "Sušenje bombaža", + "hqd_20_degrees": "Bombaž 20℃", "hqd_allergy": "Nega proti alergijam", - "hqd_autoclean": "\u010ci\u0161\u010denje bobna", - "hqd_babycare": "Otro\u0161ka posoda", + "hqd_autoclean": "Čiščenje bobna", + "hqd_babycare": "Otroška posoda", "hqd_checkup": "Preveri", - "hqd_cottons": "Bomba\u017e", - "hqd_delicate": "Ob\u010dutljive tkanine", - "hqd_delicate_cradle": "Ob\u010dutljive tkanine", - "hqd_dry": "Su\u0161enje bomba\u017ea", - "hqd_dry_synthetics": "Su\u0161enje me\u0161anih tkanin", - "hqd_duvet": "Pre\u0161ite odeje", + "hqd_cottons": "Bombaž", + "hqd_delicate": "Občutljive tkanine", + "hqd_delicate_cradle": "Občutljive tkanine", + "hqd_dry": "Sušenje bombaža", + "hqd_dry_synthetics": "Sušenje mešanih tkanin", + "hqd_duvet": "Prešite odeje", "hqd_eco_40_60_degrees": "Eco 40-60", "hqd_handwash_wool": "Volna", "hqd_i_refresh": "i-Refresh", - "hqd_mix": "Me\u0161ano", + "hqd_mix": "Mešano", "hqd_quick_15": "Hitro 15'", "hqd_quick_wash_57": "Hitro pranje 57 min", - "hqd_rapid_wash_and_dry": "Pranje in su\u0161enje", - "hqd_refresh": "Osve\u017eitev", + "hqd_rapid_wash_and_dry": "Pranje in sušenje", + "hqd_refresh": "Osvežitev", "hqd_rinse": "Splakovanje", "hqd_shirts": "Srajce", "hqd_smart": "Smart A.I.", - "hqd_spin": "O\u017eemanje", - "hqd_sport": "\u0160port", - "hqd_super_fast": "Hitro 39\u2019", + "hqd_spin": "Ožemanje", + "hqd_sport": "Šport", + "hqd_super_fast": "Hitro 39’", "hqd_synthetic_and_coloured": "Sintetika", "hygiene_59": "Higiena Plus 59'", "hygiene_60": "Higiena 60'", @@ -562,84 +561,84 @@ "hygiene_plus_59_min": "Higiena Plus 59'", "hygiene_pro_49_min": "Higiena Pro 49 min", "hygiene_pro_steam": "Hygiene Pro + Para", - "intensive_40": "Intenzivno 40\u00b0C", - "intensive_40_steam": "Intenzivno 40\u00b0C + para", + "intensive_40": "Intenzivno 40°C", + "intensive_40_steam": "Intenzivno 40°C + para", "iot_active_steam": "Para", "iot_active_wash_steam": "Aktivno pranje", "iot_allergy_care_pro": "Nega proti alergijam Pro", "iot_all_in_one_59_steam": "Aktivno pranje + para", "iot_checkup": "Preveri", "iot_colour_59_steam": "Barvno perilo 59' + para", - "iot_cottons_steam": "Bomba\u017e + Para", - "iot_delicate_silk_steam": "Ob\u010dutljiva svila + para", - "iot_delicati_59_steam": "Ob\u010dutljivo 59'", - "iot_dry_air_refresh": "Osve\u017eitev z zrakom", - "iot_dry_anti_mites": "Proti pr\u0161icam", - "iot_dry_baby": "Dojen\u010dek", + "iot_cottons_steam": "Bombaž + Para", + "iot_delicate_silk_steam": "Občutljiva svila + para", + "iot_delicati_59_steam": "Občutljivo 59'", + "iot_dry_air_refresh": "Osvežitev z zrakom", + "iot_dry_anti_mites": "Proti pršicam", + "iot_dry_baby": "Dojenček", "iot_dry_backpacks": "Nahrbtniki", - "iot_dry_bathrobe": "Kopalni pla\u0161\u010di in luknji\u010daste tkanine", + "iot_dry_bathrobe": "Kopalni plašči in luknjičaste tkanine", "iot_dry_bed_linen": "Posteljnina", - "iot_dry_cotton_dry": "Su\u0161enje bomba\u017ea", - "iot_dry_cuddly_toys": "Pli\u0161aste igra\u010de", + "iot_dry_cotton_dry": "Sušenje bombaža", + "iot_dry_cuddly_toys": "Plišaste igrače", "iot_dry_curtains": "Zavese", "iot_dry_dehumidifier": "Odstranjevalec vlage", - "iot_dry_delicates_antiallergy": "Ob\u010dutljive tkanine \u2013 protialegrijsko", - "iot_dry_delicate_tablecloths": "Ob\u010dutljivi namizni prti", - "iot_dry_denim_jeans": "Denim \u2013 jeans", - "iot_dry_easy_iron_cotton": "Enostavno likanje \u2013 bomba\u017e", - "iot_dry_easy_iron_synthetics": "Enostavno likanje \u2013 sintetika", - "iot_dry_gym_fit": "\u0160portna obla\u010dila", + "iot_dry_delicates_antiallergy": "Občutljive tkanine – protialegrijsko", + "iot_dry_delicate_tablecloths": "Občutljivi namizni prti", + "iot_dry_denim_jeans": "Denim – jeans", + "iot_dry_easy_iron_cotton": "Enostavno likanje – bombaž", + "iot_dry_easy_iron_synthetics": "Enostavno likanje – sintetika", + "iot_dry_gym_fit": "Športna oblačila", "iot_dry_lingerie": "Spodnje perilo", - "iot_dry_mixed_dry": "Su\u0161enje me\u0161anih tkanin", - "iot_dry_rapid_60_min_delicates": "Hitro 60' \u2013 ob\u010dutljive tkanine", + "iot_dry_mixed_dry": "Sušenje mešanih tkanin", + "iot_dry_rapid_60_min_delicates": "Hitro 60' – občutljive tkanine", "iot_dry_shirts": "Srajce", "iot_dry_swimsuits_and_bikinis": "Kopalke", - "iot_dry_synthetics": "Su\u0161enje sintetike", - "iot_dry_synthetic_dry": "Su\u0161enje sintetike", + "iot_dry_synthetics": "Sušenje sintetike", + "iot_dry_synthetic_dry": "Sušenje sintetike", "iot_dry_tablecloths": "Namizni prti", - "iot_dry_technical_fabrics": "Tehni\u010dne tkanine", + "iot_dry_technical_fabrics": "Tehnične tkanine", "iot_dry_warm_embrace": "Topel boben", - "iot_dry_wool_dry": "Su\u0161enje volne", - "iot_easy_iron": "La\u017eje likanje", - "iot_fresh_care_steam": "Nega za sve\u017eino + para", + "iot_dry_wool_dry": "Sušenje volne", + "iot_easy_iron": "Lažje likanje", + "iot_fresh_care_steam": "Nega za svežino + para", "iot_hygiene_pro_steam": "Hygiene Pro + Para", - "iot_intensive_40_steam": "Intenzivno 40\u00b0C + para", - "iot_mixed_steam": "Me\u0161ano + Para", - "iot_mix_and_colour_59_steam": "Me\u0161ana in pisana obla\u010dila 59' + para", + "iot_intensive_40_steam": "Intenzivno 40°C + para", + "iot_mixed_steam": "Mešano + Para", + "iot_mix_and_colour_59_steam": "Mešana in pisana oblačila 59' + para", "iot_perfect_cotton_59_steam": "Idealen za Bombaz 59'", "iot_rapid_a_class_60_steam": "Hitri razred A 60 + para", - "iot_resistant_cotton_steam": "Bomba\u017e + Para", + "iot_resistant_cotton_steam": "Bombaž + Para", "iot_shirts_steam": "Srajce + Para", "iot_single_item_steam": "En artikel + para", "iot_smart_wash": "Pametno pranje", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Posebno 39' + para", "iot_steam_hygiene_plus": "Higiena plus para ", - "iot_synthetic_and_coloured_steam": "Sinteti\u010dne in pisane tkanine + para", - "iot_wash_and_dry": "Pranje in su\u0161enje", - "iot_wash_anti_mites": "Proti pr\u0161icam", + "iot_synthetic_and_coloured_steam": "Sintetične in pisane tkanine + para", + "iot_wash_and_dry": "Pranje in sušenje", + "iot_wash_anti_mites": "Proti pršicam", "iot_wash_anti_odor": "Proti neprijetnim vonjavam", "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", "iot_wash_baby_sanitizer": "Dezinfekcija", - "iot_wash_baby_sanitizer_steam": "Razku\u017eevanje za otroke + para", + "iot_wash_baby_sanitizer_steam": "Razkuževanje za otroke + para", "iot_wash_backpacks": "Nahrbtniki", "iot_wash_backpacks_zelig": "Nahrbtniki", - "iot_wash_bathrobe": "Kopalni pla\u0161\u010di in brisa\u010de", - "iot_wash_bathrobe_steam": "Kopalni pla\u0161\u010d + Para", + "iot_wash_bathrobe": "Kopalni plašči in brisače", + "iot_wash_bathrobe_steam": "Kopalni plašč + Para", "iot_wash_bed_linen": "Posteljnina", "iot_wash_bed_linen_steam": "Posteljnina + Para", "iot_wash_bed_linen_zelig": "Posteljnina", - "iot_wash_big_single_load": "Velika posamezna koli\u010dina", + "iot_wash_big_single_load": "Velika posamezna količina", "iot_wash_bleaching": "Beljenje", - "iot_wash_blood_stains": "Made\u017ei krvi", - "iot_wash_cashmere": "Ka\u0161mir", - "iot_wash_chocolate_stains": "\u010cokoladni made\u017ei", + "iot_wash_blood_stains": "Madeži krvi", + "iot_wash_cashmere": "Kašmir", + "iot_wash_chocolate_stains": "Čokoladni madeži", "iot_wash_cold_wash": "Hladna voda", "iot_wash_colored": "Barvno", - "iot_wash_colored_anti_stain": "Odstranjevanje made\u017eev za barva obla\u010dila", - "iot_wash_colored_delicate": "Ob\u010dutljivo barvno", + "iot_wash_colored_anti_stain": "Odstranjevanje madežev za barva oblačila", + "iot_wash_colored_delicate": "Občutljivo barvno", "iot_wash_coloured": "Pisane tkanine", "iot_wash_coloured_bed_linen": "Barvna posteljnina", "iot_wash_coloured_bed_linen_steam": "Barvna posteljnina + para", @@ -649,9 +648,9 @@ "iot_wash_coloured_steam": "Pisane tkanine + Para", "iot_wash_coloured_tableclothes": "Pisani namizni prti", "iot_wash_coloured_tableclothes_steam": "Pisani namizni prti + para", - "iot_wash_cotton": "Bomba\u017e", - "iot_wash_cotton_steam": "Bomba\u017e + Para", - "iot_wash_cuddly_toys": "Pli\u0161aste igra\u010de", + "iot_wash_cotton": "Bombaž", + "iot_wash_cotton_steam": "Bombaž + Para", + "iot_wash_cuddly_toys": "Plišaste igrače", "iot_wash_curtains": "Zavese", "iot_wash_curtains_steam": "Zavese + Para", "iot_wash_curtains_zelig": "Zavese", @@ -663,94 +662,94 @@ "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", "iot_wash_dash_cold_cycle": "Dash Cold Clean", "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", - "iot_wash_delicate": "Ob\u010dutljive tkanine", - "iot_wash_delicate_antiallergy": "Protialergijsko delovanje za ob\u010dutljive tkanine", - "iot_wash_delicate_antiallergy_steam": "Protialergijsko delovanje za ob\u010dutljive tkanine + Para", - "iot_wash_delicate_antiallergy_zelig": "Protialergijsko delovanje za ob\u010dutljive tkanine", - "iot_wash_delicate_colors": "Ob\u010dutljive pisane tkanine", + "iot_wash_delicate": "Občutljive tkanine", + "iot_wash_delicate_antiallergy": "Protialergijsko delovanje za občutljive tkanine", + "iot_wash_delicate_antiallergy_steam": "Protialergijsko delovanje za občutljive tkanine + Para", + "iot_wash_delicate_antiallergy_zelig": "Protialergijsko delovanje za občutljive tkanine", + "iot_wash_delicate_colors": "Občutljive pisane tkanine", "iot_wash_delicate_colors_steam": "Barvno perilo + para", - "iot_wash_delicate_dark": "Ob\u010dutljivo temno", - "iot_wash_delicate_steam": "Ob\u010dutljive tkanine + Para", - "iot_wash_delicate_tablecloths": "Ob\u010dutljivi namizni prti", - "iot_wash_delicate_tablecloths_steam": "Ob\u010dutljivi namizni prti + Para", - "iot_wash_delicate_whites": "Ob\u010dutljivo belo", - "iot_wash_denim_jeans": "Denim \u2013 jeans", - "iot_wash_diving_suits": "Potaplja\u0161ke obleke", - "iot_wash_diving_suits_zelig": "Potaplja\u0161ke obleke", + "iot_wash_delicate_dark": "Občutljivo temno", + "iot_wash_delicate_steam": "Občutljive tkanine + Para", + "iot_wash_delicate_tablecloths": "Občutljivi namizni prti", + "iot_wash_delicate_tablecloths_steam": "Občutljivi namizni prti + Para", + "iot_wash_delicate_whites": "Občutljivo belo", + "iot_wash_denim_jeans": "Denim – jeans", + "iot_wash_diving_suits": "Potapljaške obleke", + "iot_wash_diving_suits_zelig": "Potapljaške obleke", "iot_wash_down_jackets": "Puhovke", "iot_wash_down_jackets_zelig": "Puhovke", - "iot_wash_duvet": "Pre\u0161ite odeje", - "iot_wash_fruit_stains": "Made\u017ei sadja", - "iot_wash_gym_fit": "\u0160portna obla\u010dila", - "iot_wash_handwash": "Ro\u010dno pranje", - "iot_wash_handwash_colored": "Ro\u010dno pranje barvno", - "iot_wash_handwash_dark": "Ro\u010dno pranje temno", + "iot_wash_duvet": "Prešite odeje", + "iot_wash_fruit_stains": "Madeži sadja", + "iot_wash_gym_fit": "Športna oblačila", + "iot_wash_handwash": "Ročno pranje", + "iot_wash_handwash_colored": "Ročno pranje barvno", + "iot_wash_handwash_dark": "Ročno pranje temno", "iot_wash_lingerie": "Spodnje perilo", - "iot_wash_masks_refresh": "Osve\u017eevanje mask", + "iot_wash_masks_refresh": "Osveževanje mask", "iot_wash_masks_sanification": "Dezinfekcija mask", "iot_wash_masks_sanification_steam": "Dezinfekcija mask + Para", "iot_wash_mats": "Preproge", - "iot_wash_men_s_trousers": "Hla\u010de", - "iot_wash_mixed": "Me\u0161ano", - "iot_wash_mixed_steam": "Me\u0161ano + Para", - "iot_wash_mix_and_coloured_44": "Me\u0161ano in barvno 44 min", - "iot_wash_mix_and_coloured_59": "Me\u0161ano in barvno 59 min", - "iot_wash_mix_and_coloured_xl": "Me\u0161ano in barvno XL", - "iot_wash_new_clothes": "Nova obla\u010dila", + "iot_wash_men_s_trousers": "Hlače", + "iot_wash_mixed": "Mešano", + "iot_wash_mixed_steam": "Mešano + Para", + "iot_wash_mix_and_coloured_44": "Mešano in barvno 44 min", + "iot_wash_mix_and_coloured_59": "Mešano in barvno 59 min", + "iot_wash_mix_and_coloured_xl": "Mešano in barvno XL", + "iot_wash_new_clothes": "Nova oblačila", "iot_wash_perfect_white": "Popolna belina", "iot_wash_perfect_white_steam": "Popolna belina + Para", - "iot_wash_pets": "Dodatki za hi\u0161ne ljubljen\u010dke", - "iot_wash_pets_hair_removal": "Odstranjevanje dlake hi\u0161nih ljubljen\u010dkov", - "iot_wash_pets_odours_stains_removal": "Odstranjevanje vonjav in made\u017eev hi\u0161nih ljubljen\u010dkov", - "iot_wash_pets_steam": "Dodatki za hi\u0161ne ljubljen\u010dke", - "iot_wash_playsuits": "Otro\u0161ka obla\u010dila", - "iot_wash_playsuits_steam": "Otro\u0161ka obla\u010dila + Para", - "iot_wash_quick_drum_cleaner": "Sredstvo za hitro \u010di\u0161\u010denje bobna", - "iot_wash_rapid_14": "Hitro 14\u2019", - "iot_wash_rapid_30": "Hitro 30\u2019", - "iot_wash_rapid_44": "Hitro 44\u2019", - "iot_wash_rapid_59": "Hitro 59\u2019", + "iot_wash_pets": "Dodatki za hišne ljubljenčke", + "iot_wash_pets_hair_removal": "Odstranjevanje dlake hišnih ljubljenčkov", + "iot_wash_pets_odours_stains_removal": "Odstranjevanje vonjav in madežev hišnih ljubljenčkov", + "iot_wash_pets_steam": "Dodatki za hišne ljubljenčke", + "iot_wash_playsuits": "Otroška oblačila", + "iot_wash_playsuits_steam": "Otroška oblačila + Para", + "iot_wash_quick_drum_cleaner": "Sredstvo za hitro čiščenje bobna", + "iot_wash_rapid_14": "Hitro 14’", + "iot_wash_rapid_30": "Hitro 30’", + "iot_wash_rapid_44": "Hitro 44’", + "iot_wash_rapid_59": "Hitro 59’", "iot_wash_rapid_59_steam": "Hitro 59' + para", - "iot_wash_refresh_14_min": "Osve\u017eitev 14\u2019", - "iot_wash_resistant_colored": "Trpe\u017eno barvno", - "iot_wash_resistant_dark": "Trpe\u017eno temno", - "iot_wash_resistant_whites": "Trpe\u017eno belo", + "iot_wash_refresh_14_min": "Osvežitev 14’", + "iot_wash_resistant_colored": "Trpežno barvno", + "iot_wash_resistant_dark": "Trpežno temno", + "iot_wash_resistant_whites": "Trpežno belo", "iot_wash_rinse": "Splakovanje", "iot_wash_shirts": "Srajce", "iot_wash_shirts_steam": "Srajce + Para", "iot_wash_silk": "Svila", - "iot_wash_ski_suit": "Smu\u010darske obleke", - "iot_wash_ski_suit_zelig": "Smu\u010darske obleke", - "iot_wash_spin": "O\u017eemanje", - "iot_wash_sport": "\u0160port", - "iot_wash_sport_anti_odor": "\u0160portna obla\u010dila, odporna proti neprijetnim vonjavam", - "iot_wash_sport_anti_odor_zelig": "\u0160portna obla\u010dila, odporna proti neprijetnim vonjavam", - "iot_wash_stains_remover": "Odstranjevalec made\u017eev", + "iot_wash_ski_suit": "Smučarske obleke", + "iot_wash_ski_suit_zelig": "Smučarske obleke", + "iot_wash_spin": "Ožemanje", + "iot_wash_sport": "Šport", + "iot_wash_sport_anti_odor": "Športna oblačila, odporna proti neprijetnim vonjavam", + "iot_wash_sport_anti_odor_zelig": "Športna oblačila, odporna proti neprijetnim vonjavam", + "iot_wash_stains_remover": "Odstranjevalec madežev", "iot_wash_swimsuits_and_bikinis": "Kopalke", "iot_wash_synthetic": "Sintetika", "iot_wash_synthetic_steam": "Sintetika + Para", "iot_wash_tablecloths": "Namizni prti", "iot_wash_tablecloths_steam": "Namizni prti + Para", - "iot_wash_technical_fabrics": "Tehni\u010dne tkanine", - "iot_wash_technical_fabrics_zelig": "Tehni\u010dne tkanine", - "iot_wash_technical_jackets": "Tehni\u010dne jakne", - "iot_wash_technical_jackets_zelig": "Tehni\u010dne jakne", - "iot_wash_trainers": "\u0160portni copati", + "iot_wash_technical_fabrics": "Tehnične tkanine", + "iot_wash_technical_fabrics_zelig": "Tehnične tkanine", + "iot_wash_technical_jackets": "Tehnične jakne", + "iot_wash_technical_jackets_zelig": "Tehnične jakne", + "iot_wash_trainers": "Športni copati", "iot_wash_whites": "Belo", "iot_wash_whites_44": "Belo 44 min", "iot_wash_whites_59": "Belo 59 min", "iot_wash_whites_xl": "Belo XL", - "iot_wash_wine_stains": "Made\u017ei vina", + "iot_wash_wine_stains": "Madeži vina", "iot_wash_wool": "Volna", "jeans": "Jeans", - "jeans_60": "D\u017eins", - "low_dry": "Su\u0161enje me\u0161anih tkanin", - "mixed": "Me\u0161ano", - "mixed_and_colored_59": "Me\u0161ana in pisana obla\u010dila 59'", - "mixed_steam": "Me\u0161ano + Para", + "jeans_60": "Džins", + "low_dry": "Sušenje mešanih tkanin", + "mixed": "Mešano", + "mixed_and_colored_59": "Mešana in pisana oblačila 59'", + "mixed_steam": "Mešano + Para", "mix_and_colour_59": "Mesana Sestava in Barvno 59'", - "mix_and_colour_59_steam": "Me\u0161ana in pisana obla\u010dila 59' + para", - "night_and_day": "No\u010d in dan", + "mix_and_colour_59_steam": "Mešana in pisana oblačila 59' + para", + "night_and_day": "Noč in dan", "night_wash": "Overnight Cycle", "perfect_59": "Popolno 59'", "perfect_cotton_59": "Idealen za Bombaz 59'", @@ -761,9 +760,9 @@ "rapid_44_min": "Hitri program 14 min.", "rapid_a_class_60": "Hitri razred A 60", "rapid_a_class_60_steam": "Hitri razred A 60 + para", - "rapid_wash_and_dry_59_min": "Pranje in su\u0161enje 59'.", - "resistant_cotton": "Bomba\u017e", - "resistant_cotton_steam": "Bomba\u017e + Para", + "rapid_wash_and_dry_59_min": "Pranje in sušenje 59'.", + "resistant_cotton": "Bombaž", + "resistant_cotton_steam": "Bombaž + Para", "rinse": "Splakovanje", "shirts_steam": "Srajce + Para", "silent_night": "Overnight Cycle", @@ -777,32 +776,32 @@ "special_39_full_load": "Poseben 39'", "special_39_full_load_steam": "Posebno 39' + para", "special_49": "Posebno 49'", - "sport_39": "\u0160port 39'", + "sport_39": "Šport 39'", "sport_plus_29": "Sport Plus 29\"", "sport_plus_39": "Sport Plus 39'", "steam_39": "Para 39'", "steam_care_pro": "Steam Care Pro", - "steam_care_pro_cotton": "Steam Care Pro \u2013 bomba\u017e", - "steam_care_pro_delicates": "Steam Care Pro \u2013 ob\u010dutljive tkanine", - "steam_care_pro_synthetic": "Steam Care Pro \u2013 sintetika", + "steam_care_pro_cotton": "Steam Care Pro – bombaž", + "steam_care_pro_delicates": "Steam Care Pro – občutljive tkanine", + "steam_care_pro_synthetic": "Steam Care Pro – sintetika", "steam_hygiene_plus": "Higiena plus para ", "synthetics": "Sintetika", - "synthetic_and_coloured": "Sinteti\u010dne in pisane tkanine", - "synthetic_and_coloured_steam": "Sinteti\u010dne in pisane tkanine + para", + "synthetic_and_coloured": "Sintetične in pisane tkanine", + "synthetic_and_coloured_steam": "Sintetične in pisane tkanine + para", "tailored_resistant_cotton": "Tailored Resistant Cotton", "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", "total_care": "Popolna nega", "tumbling": "Boben", "wool": "Volna", - "wool_and_delicates_49": "Volna/Ob\u010dutljive tkanine 49'", - "wool_dry": "Su\u0161enje volne", + "wool_and_delicates_49": "Volna/Občutljive tkanine 49'", + "wool_dry": "Sušenje volne", "wool_soft_care": "Volna & Nega Za Mehkobo" }, "name": "Program" }, "dry_levels": { "state": { - "0": "Brez su\u0161enja", + "0": "Brez sušenja", "1": "Likanje", "2": "Suho za omaro", "3": "Suho za omaro", @@ -812,27 +811,27 @@ "14": "Pripravljeno za uporabo", "15": "Zelo suho" }, - "name": "Stopnja su\u0161enja" + "name": "Stopnja sušenja" }, "spin_speed": { - "name": "O\u017eemanje" + "name": "Ožemanje" }, "temperature": { "name": "Temperatura" }, "dry_time": { - "name": "\u010cas su\u0161enja" + "name": "Čas sušenja" } }, "switch": { "anti_crease": { - "name": "Proti me\u010dkanju" + "name": "Proti mečkanju" }, "add_dish": { "name": "" }, "eco_express": { - "name": "Var\u010dno" + "name": "Varčno" }, "extra_dry": { "name": "Zelo suho" @@ -853,16 +852,16 @@ "name": "Pomivalni stroj" }, "tumble_dryer": { - "name": "Su\u0161ilni stroj" + "name": "Sušilni stroj" }, "washing_machine": { "name": "Pralni stroj" }, "washer_dryer": { - "name": "Pralno-su\u0161ilni stroj" + "name": "Pralno-sušilni stroj" }, "oven": { - "name": "Pe\u010dica" + "name": "Pečica" }, "prewash": { "name": "Predpranje" @@ -874,7 +873,7 @@ "name": "Keep Fresh" }, "delay_time": { - "name": "S funkcijo Zamik vklopa je mo\u017eno odlo\u017eiti za\u010detek su\u0161ilnega cikla od 1 do 24 ur. Na zaslonu se prika\u017ee izbrana zakasnitev. Da bi videli kako se zmanj\u0161uje iz ure v uro, pritisnite ZA\u010cETEK. Na ta na\u010din bo perilo suho takrat, ko boste to \u017eeleli, in zagnali cikel, ko vam to najbolj ustreza, celo pono\u010di." + "name": "S funkcijo Zamik vklopa je možno odložiti začetek sušilnega cikla od 1 do 24 ur. Na zaslonu se prikaže izbrana zakasnitev. Da bi videli kako se zmanjšuje iz ure v uro, pritisnite ZAČETEK. Na ta način bo perilo suho takrat, ko boste to želeli, in zagnali cikel, ko vam to najbolj ustreza, celo ponoči." } }, "binary_sensor": { @@ -891,16 +890,16 @@ "name": " + 3 izpiranja" }, "good_night": { - "name": "Lahko no\u010d" + "name": "Lahko noč" }, "anti_crease": { - "name": "Proti me\u010dkanju" + "name": "Proti mečkanju" }, "aqua_plus": { "name": "Acquaplus" }, "spin_speed": { - "name": "O\u017eemanje" + "name": "Ožemanje" }, "programs_dw": { "name": "Program" @@ -918,7 +917,7 @@ "name": "Program" }, "still_hot": { - "name": "\u0160e vedno vro\u010de" + "name": "Še vedno vroče" }, "pan_status": { "name": "Posoda" @@ -950,36 +949,36 @@ }, "number": { "power_management": { - "name": "Upravljanje mo\u010di" + "name": "Upravljanje moči" }, "temperature": { "name": "Temperatura" }, "delay_time": { - "name": "S funkcijo Zamik vklopa je mo\u017eno odlo\u017eiti za\u010detek su\u0161ilnega cikla od 1 do 24 ur. Na zaslonu se prika\u017ee izbrana zakasnitev. Da bi videli kako se zmanj\u0161uje iz ure v uro, pritisnite ZA\u010cETEK. Na ta na\u010din bo perilo suho takrat, ko boste to \u017eeleli, in zagnali cikel, ko vam to najbolj ustreza, celo pono\u010di." + "name": "S funkcijo Zamik vklopa je možno odložiti začetek sušilnega cikla od 1 do 24 ur. Na zaslonu se prikaže izbrana zakasnitev. Da bi videli kako se zmanjšuje iz ure v uro, pritisnite ZAČETEK. Na ta način bo perilo suho takrat, ko boste to želeli, in zagnali cikel, ko vam to najbolj ustreza, celo ponoči." }, "water_hard": { "name": "Trdota vode" }, "program_duration": { - "name": "\u010cas trajanja programa" + "name": "Čas trajanja programa" }, "target_temperature": { "name": "Ciljna temperatura" }, "rinse_iterations": { - "name": "\u0160tevilo izpiranj" + "name": "Število izpiranj" }, "wash_time": { - "name": "\u010cas pranja" + "name": "Čas pranja" }, "dry_time": { - "name": "\u010cas su\u0161enja" + "name": "Čas sušenja" } }, "button": { "induction_hob": { - "name": "Indukcijska kuhalna plo\u0161\u010da" + "name": "Indukcijska kuhalna plošča" } } } diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index 58d130f..a4937f1 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -8,7 +8,7 @@ "3": "Pauza", "4": "Planirano", "5": "Planirano", - "6": "Gre\u0161ka", + "6": "Greška", "7": "Spremno" } }, @@ -21,7 +21,7 @@ "4": "Ispiranje", "5": "Ispiranje", "6": "Ispiranje", - "7": "Su\u0161enje", + "7": "Sušenje", "9": "Vodena para", "10": "Spremno", "11": "Centrifuga", @@ -33,8 +33,8 @@ "17": "Ispiranje", "18": "Ispiranje", "19": "Planirano", - "20": "Odr\u017eavanje sve\u017eine", - "24": "Osve\u017eavanje", + "20": "Održavanje svežine", + "24": "Osvežavanje", "25": "Pranje", "26": "Grejanje", "27": "Pranje" @@ -44,16 +44,16 @@ "program_phases_td": { "state": { "0": "Spremno", - "1": "Su\u0161enje", - "2": "Su\u0161enje", - "3": "Hla\u0111enje", - "13": "Hla\u0111enje", - "14": "Su\u0161enje", - "15": "Su\u0161enje", - "16": "Hla\u0111enje", - "18": "O\u010duvanje sve\u017eine", - "19": "Su\u0161enje", - "20": "Su\u0161enje" + "1": "Sušenje", + "2": "Sušenje", + "3": "Hlađenje", + "13": "Hlađenje", + "14": "Sušenje", + "15": "Sušenje", + "16": "Hlađenje", + "18": "Očuvanje svežine", + "19": "Sušenje", + "20": "Sušenje" }, "name": "Faza" }, @@ -63,7 +63,7 @@ "1": "Pretpranje", "2": "Pranje", "3": "Ispiranje", - "4": "Su\u0161enje", + "4": "Sušenje", "5": "Spremno", "6": "Hot rinse" }, @@ -71,23 +71,23 @@ }, "dry_levels": { "state": { - "0": "Bez su\u0161enja", + "0": "Bez sušenja", "1": "Peglanje", "2": "Suvo za ormar", "3": "Suvo za ormar", "4": "Ekstra suvo", "12": "Peglanje", "13": "Suvo za ormar", - "14": "Spremno za no\u0161enje", + "14": "Spremno za nošenje", "15": "Ekstra suvo" }, - "name": "Nivo su\u0161enja" + "name": "Nivo sušenja" }, "anti_crease": { - "name": "Protiv gu\u017evanja" + "name": "Protiv gužvanja" }, "power": { - "name": "Ja\u010dina" + "name": "Jačina" }, "remaining_time": { "name": "Preostalo vreme" @@ -99,13 +99,13 @@ "name": "Efikasnost vode" }, "water_saving": { - "name": "U\u0161teda vode" + "name": "Ušteda vode" }, "duration": { "name": "Trajanje" }, "target_temperature": { - "name": "\u017deljena temperatura" + "name": "Željena temperatura" }, "spin_speed": { "name": "Centrifuga" @@ -117,10 +117,10 @@ "name": "Nivo zaprljanosti" }, "delay_time": { - "name": "Odlo\u017eeni start" + "name": "Odloženi start" }, "dry_time": { - "name": "Vreme su\u0161enja" + "name": "Vreme sušenja" }, "suggested_load": { "name": "Kapacitet punjenja" @@ -129,13 +129,13 @@ "name": "Energetska efikasnost" }, "det_dust": { - "name": "Pra\u0161ak" + "name": "Prašak" }, "det_liquid": { - "name": "Te\u010dni" + "name": "Tečni" }, "errors": { - "name": "Gre\u0161ka" + "name": "Greška" }, "programs": { "name": "Trenutni program" @@ -144,13 +144,13 @@ "name": "Ciklusi Ukupno" }, "energy_total": { - "name": "Potro\u0161nja energije Ukupno" + "name": "Potrošnja energije Ukupno" }, "water_total": { "name": "Efikasnost vode Ukupno" }, "energy_current": { - "name": "Potro\u0161nja energije Current" + "name": "Potrošnja energije Current" }, "water_current": { "name": "Efikasnost vode Current" @@ -165,52 +165,52 @@ "auto_plus": "AutoPlus", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Automatski univerzalni 50 - 60\u00b0C", - "auto_universal_plus": "Automatski univerzalni+ 65 - 75\u00b0C", - "auto_universal_plus_soil": "Automatski univerzalni+ 65 - 75\u00b0C", - "auto_universal_soil": "Automatski univerzalni 50 - 60\u00b0C", + "auto_universal": "Automatski univerzalni 50 - 60°C", + "auto_universal_plus": "Automatski univerzalni+ 65 - 75°C", + "auto_universal_plus_soil": "Automatski univerzalni+ 65 - 75°C", + "auto_universal_soil": "Automatski univerzalni 50 - 60°C", "auto_wash": "Automatsko pranje", "auto_wash_soil": "Automatsko pranje", - "classe_a_59": "A klasa 59' 65\u00b0C", - "delicate": "Osetljivo 45\u00b0C", - "dishwasher_care": "Ciklus \u010di\u0161\u0107enja kamenca", + "classe_a_59": "A klasa 59' 65°C", + "delicate": "Osetljivo 45°C", + "dishwasher_care": "Ciklus čišćenja kamenca", "eco": "Eko", - "eco_asynch": "Eco 45\u00b0C", - "eco_bldc": "Eco 45\u00b0C", - "eco_synch": "Eco 45\u00b0C", + "eco_asynch": "Eco 45°C", + "eco_bldc": "Eco 45°C", + "eco_synch": "Eco 45°C", "gentle_wash": "Gentle wash", "glass": "Staklo", - "glassware": "Staklo 45\u00b0C", + "glassware": "Staklo 45°C", "glass_care": "Glass Care", "hygiene": "Higijena", - "hygiene_plus": "Higijenski+ 75\u00b0C", + "hygiene_plus": "Higijenski+ 75°C", "intensive": "Intenzivno ", - "intensive_rapid": "sna\u017eno i brzo", + "intensive_rapid": "snažno i brzo", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Automatski univerzalni 50 - 60\u00b0C", + "iot_auto_universal_soil": "Automatski univerzalni 50 - 60°C", "iot_auto_wash_soil": "Automatsko pranje", "iot_baby_care": "Baby Nega", - "iot_breakfast": "Doru\u010dak", + "iot_breakfast": "Doručak", "iot_checkup": "Provera", "iot_china_crystals": "China Kristal", "iot_classe_a_59": "Brzi 59'", - "iot_cocktail_glasses": "\u010ca\u0161e za koktel", - "iot_cocktail_glasses_soil": "\u010ca\u0161e za koktel", + "iot_cocktail_glasses": "Čaše za koktel", + "iot_cocktail_glasses_soil": "Čaše za koktel", "iot_daily_care": "Svakodnevna nega", "iot_daily_care_soil": "Svakodnevna nega", - "iot_delicate": "Osetljivo 45\u00b0C", - "iot_dinner_for_two": "Ve\u010dera za dvoje", - "iot_dinner_for_two_soil": "Ve\u010dera za dvoje", + "iot_delicate": "Osetljivo 45°C", + "iot_dinner_for_two": "Večera za dvoje", + "iot_dinner_for_two_soil": "Večera za dvoje", "iot_dreft_quick_cycle": "Dreft Quick", - "iot_eco_asynch": "Eco 45\u00b0C", - "iot_eco_bldc": "Eco 45\u00b0C", - "iot_eco_synch": "Eco 45\u00b0C", + "iot_eco_asynch": "Eco 45°C", + "iot_eco_bldc": "Eco 45°C", + "iot_eco_synch": "Eco 45°C", "iot_extra_hygiene": "Extra Higijena", "iot_fairy_quick_cycle": "Fairy Quick", "iot_happy_hour": "Happy Hour", "iot_jar_quick_cycle": "Jar Quick", - "iot_party": "\u017durka", - "iot_party_soil": "\u017durka", + "iot_party": "Žurka", + "iot_party_soil": "Žurka", "iot_pizza_menu": "Pizza Meni", "iot_pizza_menu_soil": "Pizza Meni", "iot_plastic_tupperware": "Plastika i Tupperware", @@ -220,63 +220,63 @@ "iot_prewash": "Predpranje", "iot_pyrex_and_glassware": "Pyrex i Vatrostalne posude", "iot_rapid_29": "Brzo 29'", - "iot_rapid_39": "Brzi 39' 60\u00b0C", + "iot_rapid_39": "Brzi 39' 60°C", "iot_single": "Single", - "iot_steam": "Para 75\u00b0C", + "iot_steam": "Para 75°C", "iot_super_flash": "Super brzi", "iot_super_wash": "Super pranje", "iot_turbopower": "TurboPower", - "iot_universal": "Univerzalni 60\u00b0C", - "iot_wok_grids_maxi_pans": "Specijalni tiganji (Wok, Re\u0161etke, Maxi tiganji)", - "iot_wok_grids_maxi_pans_soil": "Specijalni tiganji (Wok, Re\u0161etke, Maxi tiganji)", + "iot_universal": "Univerzalni 60°C", + "iot_wok_grids_maxi_pans": "Specijalni tiganji (Wok, Rešetke, Maxi tiganji)", + "iot_wok_grids_maxi_pans_soil": "Specijalni tiganji (Wok, Rešetke, Maxi tiganji)", "iot_yes_quick_cycle": "Yes Quick", - "night": "Ultra tihi 55\u00b0C", + "night": "Ultra tihi 55°C", "prewash": "Predpranje", "rapid_20": "Brzi 20'", "rapid_24": "Brzo 24'", - "rapid_29": "Brzo 29' 50\u00b0C", + "rapid_29": "Brzo 29' 50°C", "rapid_35": "Wash&Dry 35'", - "rapid_39": "Brzi 39' 60\u00b0C", + "rapid_39": "Brzi 39' 60°C", "rapid_49": "Brzi 49'", "rapid_59": "Brzi 59'", "sanitising": "Dezinfekcija", "silence": "Silence", - "silent": "No\u0107", + "silent": "Noć", "silent_care": "Silent Care", "smart_ai": "Smart AI", "special": "posebno", "special_pw_prz": "posebno", - "steam": "Para 75\u00b0C", - "steam_plus": "Dodatno parenje na 75 \u00b0C", - "total_care": "Total Care 50\u00b0C", - "ultra_silence": "Ultra tihi 55\u00b0C", - "ultra_silent": "Ultra tihi 55\u00b0C", - "universal": "Univerzalni 60\u00b0C", - "universal_plus": "Univerzalni plus 70\u00b0C", + "steam": "Para 75°C", + "steam_plus": "Dodatno parenje na 75 °C", + "total_care": "Total Care 50°C", + "ultra_silence": "Ultra tihi 55°C", + "ultra_silent": "Ultra tihi 55°C", + "universal": "Univerzalni 60°C", + "universal_plus": "Univerzalni plus 70°C", "zoom_39": "Zoom 39 min" }, "name": "Program" }, "programs_ih": { "state": { - "iot_special_ash_brown": "Pr\u017eeni rendani krompir", - "iot_special_beef_fillet": "Gove\u0111i file", - "iot_special_beef_veal_stew": "Gove\u0111i i telec\u0301i paprika\u0161", - "iot_special_boiled_rice": "Kuvani pirina\u010d", - "iot_special_chicken_breast": "Pile\u0107a prsa", - "iot_special_chicken_legs": "Pile\u0107i bataci", - "iot_special_chocolate_pudding": "Puding od \u010dokolade", + "iot_special_ash_brown": "Prženi rendani krompir", + "iot_special_beef_fillet": "Goveđi file", + "iot_special_beef_veal_stew": "Goveđi i teleći paprikaš", + "iot_special_boiled_rice": "Kuvani pirinač", + "iot_special_chicken_breast": "Pileća prsa", + "iot_special_chicken_legs": "Pileći bataci", + "iot_special_chocolate_pudding": "Puding od čokolade", "iot_special_entrecote": "Antrikot", - "iot_special_fresh_tuna": "Sve\u017ea tuna", - "iot_special_grilled_vegetables": "Grilovano povr\u0107e", - "iot_special_lamb_cutlet": "Jagnje\u0107i kotlet", - "iot_special_meatballs": "\u0106ufte", + "iot_special_fresh_tuna": "Sveža tuna", + "iot_special_grilled_vegetables": "Grilovano povrće", + "iot_special_lamb_cutlet": "Jagnjeći kotlet", + "iot_special_meatballs": "Ćufte", "iot_special_minestrone": "Minestrone", "iot_special_mussels": "Dagnje", "iot_special_omelette": "Omlet", - "iot_special_pancakes": "Pala\u010dinke", - "iot_special_paris_style_peas": "Gra\u0161ak na pariski na\u010din", - "iot_special_poached_eggs": "Po\u0161irana jaja", + "iot_special_pancakes": "Palačinke", + "iot_special_paris_style_peas": "Grašak na pariski način", + "iot_special_poached_eggs": "Poširana jaja", "iot_special_pork_fillet": "Svinjski file", "iot_special_pork_ribs": "Svinjska rebarca", "iot_special_prawns": "Gambori", @@ -287,11 +287,11 @@ "iot_special_scallops": "Jakobove kapice", "iot_special_scrambled_eggs": "Kajgana", "iot_special_spelt": "Spelta", - "iot_special_veggy_noodles": "Rezanci s povr\u0107em", + "iot_special_veggy_noodles": "Rezanci s povrćem", "iot_special_white_fish_fillet": "Filet bele ribe", "iot_standard_boiling": "Boiling", - "iot_standard_frying": "Pr\u017eenje", - "iot_standard_keep_warm": "Odr\u017eite toplinu", + "iot_standard_frying": "Prženje", + "iot_standard_keep_warm": "Održite toplinu", "iot_standard_melting": "Topljenje", "iot_standard_simmering": "Simmering" }, @@ -300,21 +300,21 @@ "programs_ov": { "state": { "bakery": "Testenine i pecivo", - "bakery_steam": "Hleb pe\u010den na pari", + "bakery_steam": "Hleb pečen na pari", "bottom_heating": "Donje grejanje", "bottom_heating_fan": "Donje grejanje + Ventilator", "bread": "Hleb", - "bread_steam": "Peciva pe\u010dena na pari", + "bread_steam": "Peciva pečena na pari", "convection_fan": "Konvekcija + ventilator", - "convection_fan_turnspit": "Konvekcija + ventilator + ra\u017eanj", + "convection_fan_turnspit": "Konvekcija + ventilator + ražanj", "conventional": "Konvekcija", - "conventional_turnspit": "Konvekcija + ra\u017eanj", + "conventional_turnspit": "Konvekcija + ražanj", "defrost": "Odmrzavanje", "descaling": "Uklanjanje kamenca", "fish": "Riba", "fish_steam": "Riba kuvana na pari", - "grill_cata": "Ro\u0161tilj", - "grill_fan_cata": "Ro\u0161tilj sa ventilatorom", + "grill_cata": "Roštilj", + "grill_fan_cata": "Roštilj sa ventilatorom", "grill_fan_pyro": "Gril + ventilator", "grill_pyro": "Gril", "h20_clean": "H2O-Clean", @@ -322,14 +322,14 @@ "iot_h20_clean": "h2O clean", "leavening": "Narastanje", "low_temp_cooking": "Kuvanje na niskoj temperaturi", - "low_temp_cooking_fish": "Kuvanje na niskoj temperaturi \u2013 riba", - "low_temp_cooking_fish_steam": "Kuvanje na pari na niskoj temperaturi \u2013 riba", - "low_temp_cooking_meat": "Kuvanje na niskoj temperaturi \u2013 meso", - "low_temp_cooking_meat_steam": "Kuvanje na pari na niskoj temperaturi \u2013 meso", + "low_temp_cooking_fish": "Kuvanje na niskoj temperaturi – riba", + "low_temp_cooking_fish_steam": "Kuvanje na pari na niskoj temperaturi – riba", + "low_temp_cooking_meat": "Kuvanje na niskoj temperaturi – meso", + "low_temp_cooking_meat_steam": "Kuvanje na pari na niskoj temperaturi – meso", "low_temp_cooking_steam": "Kuvanje na pari na niskoj temperaturi", "meat": "Meso", "meat_steam": "Meso kuvano na pari", - "multi_level": "Vi\u0161e nivoa", + "multi_level": "Više nivoa", "paella": "Paella", "pasta_and_bakery": "Testenine i pecivo", "pizza": "Pizza", @@ -342,11 +342,10 @@ "super_grill": "Super gril", "tailor_bake": "Tailor bake", "tailor_bake_cata": "Tailor Bake", - "tailor_bake_desctiption": "Ova opcija je idealna za to da hrana ostane meka iznutra a hrskava spolja. Ova opcija smanjuje koli\u010dinu potrebne masti ili ulja radi zdrave ishrane.\r\r\nKombinacija grejnih elemenata sa pulsiraju\u0107im ciklusom vazduha omogu\u0107ava ravnomerno pe\u010denje.", "tailor_bake_pyro": "Tailor Bake", - "vegetables": "Povr\u0107e", - "vegetables_cata": "Povr\u0107e", - "vegetables_pyro": "Povr\u0107e", + "vegetables": "Povrće", + "vegetables_cata": "Povrće", + "vegetables_pyro": "Povrće", "water_discharge": "Odvod vode", "white_meat": "Belo meso", "white_meat_steam": "Belo meso kuvano na pari" @@ -355,14 +354,14 @@ }, "programs_td": { "state": { - "active_dry": "Aktivno su\u0161enje", + "active_dry": "Aktivno sušenje", "allergy_care": "Antialergijski", "all_in_one": "All in One", "antiallergy": "Antialergijski", "anti_odours": "Protiv neugodnih mirisa", "auto_care": "Aktivna nega", "baby": "Baby", - "bed_quilt": "\u0106ebad i jorgani", + "bed_quilt": "Ćebad i jorgani", "care_30": "Nega 30", "care_45": "Nega 45", "care_59": "Nega 59", @@ -375,13 +374,13 @@ "eco": "Eko pamuk", "ecospeed_cottons": "Ecospeed Pamuk", "ecospeed_delicates": "Ecospeed osetljive tkanine", - "ecospeed_mixed": "Ecospeed Me\u0161ano", + "ecospeed_mixed": "Ecospeed Mešano", "extra_hygiene": "EXTRA HIGIJENA", "fitness": "Fitnes", - "fresh_care": "Tretman za osve\u017eavanje", + "fresh_care": "Tretman za osvežavanje", "genius": "Genius", "hqd_baby_care": "Baby Care", - "hqd_bath_towel": "Pe\u0161kiri", + "hqd_bath_towel": "Peškiri", "hqd_bed_sheets": "Posteljina", "hqd_bulky": "Glomazni artikli", "hqd_casual": "Neformalno", @@ -393,69 +392,69 @@ "hqd_diaper": "Pelene", "hqd_duvet": "Jorgan", "hqd_feather": "Perjane jakne", - "hqd_hot_wind_timing": "Vru\u0107 vazduh", + "hqd_hot_wind_timing": "Vruć vazduh", "hqd_hygienic": "Higijenski", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", "hqd_jacket": "Jakne", - "hqd_jeans": "D\u017eins", + "hqd_jeans": "Džins", "hqd_luxury": "Luksuzno", - "hqd_mix": "Me\u0161ovito", - "hqd_night_dry": "No\u0107no su\u0161enje", + "hqd_mix": "Mešovito", + "hqd_night_dry": "Noćno sušenje", "hqd_outdoor": "Outdoor", "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Brzo 20", "hqd_quick_30": "Brzo 30", - "hqd_quick_dry": "Brzo su\u0161enje", + "hqd_quick_dry": "Brzo sušenje", "hqd_quilt": "Jorgani", - "hqd_refresh": "Osve\u017eavanje", - "hqd_school_uniform": "\u0160kolska uniforma", - "hqd_shirt": "Ko\u0161ulje", + "hqd_refresh": "Osvežavanje", + "hqd_school_uniform": "Školska uniforma", + "hqd_shirt": "Košulje", "hqd_shoes": "Cipele", "hqd_silk": "Svila", - "hqd_sports": "Sportska ode\u0107a", + "hqd_sports": "Sportska odeća", "hqd_synthetics": "Sintetika", - "hqd_timer": "Vremenski ograni\u010deno", - "hqd_towel": "Pe\u0161kiri", - "hqd_underwear": "Donji ve\u0161", + "hqd_timer": "Vremenski ograničeno", + "hqd_towel": "Peškiri", + "hqd_underwear": "Donji veš", "hqd_warm_up": "Zagrevanje", "hqd_wool": "Vuna", - "hqd_working_suit": "Radna ode\u0107a", + "hqd_working_suit": "Radna odeća", "hygiene": "Higijena", "iot_checkup": "Provera", "iot_dry_anti_mites": "Anti-grinje", "iot_dry_baby": "Baby", - "iot_dry_backpacks": "Ran\u010devi", + "iot_dry_backpacks": "Rančevi", "iot_dry_bathrobe": "Bade-mantili", "iot_dry_bed_linen": "Posteljine", - "iot_dry_bed_quilt": "\u0106ebad i jorgani", + "iot_dry_bed_quilt": "Ćebad i jorgani", "iot_dry_cotton": "Pamuk", - "iot_dry_cuddly_toys": "Pli\u0161ane igra\u010dke", + "iot_dry_cuddly_toys": "Plišane igračke", "iot_dry_curtains": "Zavese", "iot_dry_dehumidifier": "Uklanjanje vlage", "iot_dry_delicates": "Delikatni", "iot_dry_delicate_tablecloths": "Osetljivi stoljnjaci", - "iot_dry_denim_jeans": "Teksas - d\u017eins", + "iot_dry_denim_jeans": "Teksas - džins", "iot_dry_down_jacket": "Jacket", "iot_dry_duvet": "Jorgani", "iot_dry_easy_iron_cotton": "Super Lako peglanje", "iot_dry_easy_iron_synthetics": "Sintetika koja se veoma lako pegla", "iot_dry_gym_fit": "Gym fit - Fitness", - "iot_dry_lingerie": "Donji ve\u0161", - "iot_dry_mixed": "Me\u0161ani ve\u0161", + "iot_dry_lingerie": "Donji veš", + "iot_dry_mixed": "Mešani veš", "iot_dry_playsuits": "Kostimi", "iot_dry_rapid_30": "Rapid 30", "iot_dry_rapid_59": "Brzi program 59'.", - "iot_dry_refresh": "Osve\u017eavanje", + "iot_dry_refresh": "Osvežavanje", "iot_dry_regenerates_waterproof": "Regenerisanje vodootpornosti", - "iot_dry_relax_creases": "Otpu\u0161tanje prevoja", - "iot_dry_shirts": "Ko\u0161ulje", - "iot_dry_small_load": "Mala koli\u010dina ve\u0161a", - "iot_dry_swimsuits_and_bikinis": "Ode\u0107a za kupanje", + "iot_dry_relax_creases": "Otpuštanje prevoja", + "iot_dry_shirts": "Košulje", + "iot_dry_small_load": "Mala količina veša", + "iot_dry_swimsuits_and_bikinis": "Odeća za kupanje", "iot_dry_synthetics": "Sintetika", - "iot_dry_synthetic_dry": "Su\u0161enje sintetike", + "iot_dry_synthetic_dry": "Sušenje sintetike", "iot_dry_tablecloths": "Stolnjaci", - "iot_dry_technical_fabrics": "Sinteti\u010dki materijali", + "iot_dry_technical_fabrics": "Sintetički materijali", "iot_dry_warm_embrace": "Topao zagrljaj", "iot_dry_wool": "Woolmark", "jeans": "Jeans", @@ -465,35 +464,35 @@ "rapid_30": "Rapid 30", "rapid_45": "Brzi 45 min", "rapid_59": "Perfect Rapid 59 Min", - "refresh": "Osve\u017eavanje", - "relax_creases": "Otpu\u0161tanje prevoja", + "refresh": "Osvežavanje", + "relax_creases": "Otpuštanje prevoja", "saving_30_min": "EKO 30'", - "shirts": "Ko\u0161ulje", + "shirts": "Košulje", "shoes": "Cipele", - "small_load": "Mala koli\u010dina ve\u0161a", + "small_load": "Mala količina veša", "soft_care": "Blagi tretman", "sport_plus": "Sportska odeca", - "super_easy_iron_misti": "Me\u0161ani ve\u0161 koji se veoma lako pegla", - "super_easy_iron_xxl": "XXL ve\u0161 koji se veoma lako pegla", + "super_easy_iron_misti": "Mešani veš koji se veoma lako pegla", + "super_easy_iron_xxl": "XXL veš koji se veoma lako pegla", "super_fast_cottons": "Super brzo Pamuk", "super_fast_delicates": "Super brzo Osetljivo", "synthetics": "Sintetika", "total_care": "Total Care", - "trainers": "Trenerke i sportska obu\u0107a", + "trainers": "Trenerke i sportska obuća", "ultra_care": "Ultra Care", "waterproof_revitalize": "Revitalizacija vodootpornosti", - "whites": "Beli ve\u0161", - "wool": "Su\u0161enje vune", + "whites": "Beli veš", + "wool": "Sušenje vune", "woolmark": "Woolmark", - "xxl_load": "XXL ve\u0161", + "xxl_load": "XXL veš", "zoom_59": "Zoom 59" }, "name": "Program" }, "programs_wm": { "state": { - "20_degrees_coloured_cottons": "20\u00b0 u boji i pamuk", - "20_degrees_new_energy_label": "20\u00b0C", + "20_degrees_coloured_cottons": "20° u boji i pamuk", + "20_degrees_new_energy_label": "20°C", "active_steam": "Para", "active_wash": "Aktivno pranje", "active_wash_steam": "Aktivno pranje", @@ -503,14 +502,14 @@ "all_in_one_59": "Sve u jedan 59'.", "all_in_one_59_steam": "Aktivno pranje + para", "autocare": "Automatska nega", - "autoclean": "\u010ci\u0161\u0107enje bubnja", - "baby_60": "All Baby 60\u00b0C", + "autoclean": "Čišćenje bubnja", + "baby_60": "All Baby 60°C", "care_14": "Rapid Care 14'", "care_30": "Rapid Care 30'", "care_44": "Rapid Care 44'", "checkup": "Provera", "colour_59": "Obojeno 59'", - "colour_59_steam": "\u0160arena ode\u0107a 59' + para", + "colour_59_steam": "Šarena odeća 59' + para", "cottons": "Pamuk", "cottons_prewash": "Pamuk + Predpranje", "cottons_steam": "Pamuk + Para", @@ -520,122 +519,122 @@ "delicate_silk_steam": "Osetljiva svila + para", "delicati_59": "Delikatni 59'", "delicati_59_steam": "Delikatni 59'", - "drain_spin": "Su\u0161enje i centrifuga", + "drain_spin": "Sušenje i centrifuga", "easy_iron": "Lako peglanje", "eco_40_60_new_energy_label": "Eko 40-60", "extra_care": "Dodatni Tretman", "fitness": "Fitnes", "fitness_care": "Fitnes", - "fresh_care": "Tretman za osve\u017eavanje", - "fresh_care_steam": "Tretman za osve\u017eavanje + para", - "handwash_wool": "Ru\u010dno pranje i vuna", - "high_dry": "Su\u0161enje pamuka", - "hqd_20_degrees": "Pamuk 20\u2103", + "fresh_care": "Tretman za osvežavanje", + "fresh_care_steam": "Tretman za osvežavanje + para", + "handwash_wool": "Ručno pranje i vuna", + "high_dry": "Sušenje pamuka", + "hqd_20_degrees": "Pamuk 20℃", "hqd_allergy": "Tretman protiv alergija", - "hqd_autoclean": "\u010ci\u0161\u0107enje bubnja", + "hqd_autoclean": "Čišćenje bubnja", "hqd_babycare": "Baby Nega", "hqd_checkup": "Provera", "hqd_cottons": "Pamuk", "hqd_delicate": "Osetljive tkanine", "hqd_delicate_cradle": "Osetljive tkanine", - "hqd_dry": "Su\u0161enje pamuka", - "hqd_dry_synthetics": "Su\u0161enje me\u0161anog ve\u0161a", + "hqd_dry": "Sušenje pamuka", + "hqd_dry_synthetics": "Sušenje mešanog veša", "hqd_duvet": "Jorgani", "hqd_eco_40_60_degrees": "Eko 40-60", "hqd_handwash_wool": "Vuna", "hqd_i_refresh": "i-Refresh", - "hqd_mix": "Me\u0161ani ve\u0161", + "hqd_mix": "Mešani veš", "hqd_quick_15": "Brzi program 15'", "hqd_quick_wash_57": "Brzo pranje 57 min.", - "hqd_rapid_wash_and_dry": "Pranje i su\u0161enje", - "hqd_refresh": "Osve\u017eavanje", + "hqd_rapid_wash_and_dry": "Pranje i sušenje", + "hqd_refresh": "Osvežavanje", "hqd_rinse": "Ispiranje", - "hqd_shirts": "Ko\u0161ulje", + "hqd_shirts": "Košulje", "hqd_smart": "Smart A.I.", "hqd_spin": "Centrifuga", - "hqd_sport": "Sportska ode\u0107a", - "hqd_super_fast": "Brzi program 39\u2019", + "hqd_sport": "Sportska odeća", + "hqd_super_fast": "Brzi program 39’", "hqd_synthetic_and_coloured": "Sintetika", "hygiene_59": "Hygijenski Plus 59'", - "hygiene_60": "Higijena 60\u00b0", + "hygiene_60": "Higijena 60°", "hygiene_plus_59": "Hygijenski Plus 59'", "hygiene_plus_59_min": "Hygijenski Plus 59'", "hygiene_pro_49_min": "Hygiene Pro 49 min", "hygiene_pro_steam": "Hygiene Pro + para", - "intensive_40": "Intenzivno 40\u00b0C", - "intensive_40_steam": "Intenzivno 40\u00b0C + para", + "intensive_40": "Intenzivno 40°C", + "intensive_40_steam": "Intenzivno 40°C + para", "iot_active_steam": "Para", "iot_active_wash_steam": "Aktivno pranje", "iot_allergy_care_pro": "Tretman protiv alergija Pro", "iot_all_in_one_59_steam": "Aktivno pranje + para", "iot_checkup": "Provera", - "iot_colour_59_steam": "\u0160arena ode\u0107a 59' + para", + "iot_colour_59_steam": "Šarena odeća 59' + para", "iot_cottons_steam": "Pamuk + Para", "iot_delicate_silk_steam": "Osetljiva svila + para", "iot_delicati_59_steam": "Delikatni 59'", - "iot_dry_air_refresh": "Osve\u017eavanje", + "iot_dry_air_refresh": "Osvežavanje", "iot_dry_anti_mites": "Protiv grinja", "iot_dry_baby": "Beba", - "iot_dry_backpacks": "Ran\u010devi", + "iot_dry_backpacks": "Rančevi", "iot_dry_bathrobe": "Bade-mantili i porozne tkanine", "iot_dry_bed_linen": "Posteljina", - "iot_dry_cotton_dry": "Su\u0161enje pamuka", - "iot_dry_cuddly_toys": "Pli\u0161ane igra\u010dke", + "iot_dry_cotton_dry": "Sušenje pamuka", + "iot_dry_cuddly_toys": "Plišane igračke", "iot_dry_curtains": "Zavese", "iot_dry_dehumidifier": "Uklanjanje vlage", "iot_dry_delicates_antiallergy": "Osetljive tkanine - protiv alergije", "iot_dry_delicate_tablecloths": "Osetljivi stolnjaci", - "iot_dry_denim_jeans": "Teksas - d\u017eins", + "iot_dry_denim_jeans": "Teksas - džins", "iot_dry_easy_iron_cotton": "Lako peglanje - pamuk", "iot_dry_easy_iron_synthetics": "Lako peglanje - sintetika", - "iot_dry_gym_fit": "Ode\u0107a za teretanu - fitnes", - "iot_dry_lingerie": "Donji ve\u0161", - "iot_dry_mixed_dry": "Su\u0161enje me\u0161anog ve\u0161a", + "iot_dry_gym_fit": "Odeća za teretanu - fitnes", + "iot_dry_lingerie": "Donji veš", + "iot_dry_mixed_dry": "Sušenje mešanog veša", "iot_dry_rapid_60_min_delicates": "Brzi program 60' - osetljive tkanine", - "iot_dry_shirts": "Ko\u0161ulje", - "iot_dry_swimsuits_and_bikinis": "Ode\u0107a za kupanje", - "iot_dry_synthetics": "Su\u0161enje sintetike", - "iot_dry_synthetic_dry": "Su\u0161enje sintetike", + "iot_dry_shirts": "Košulje", + "iot_dry_swimsuits_and_bikinis": "Odeća za kupanje", + "iot_dry_synthetics": "Sušenje sintetike", + "iot_dry_synthetic_dry": "Sušenje sintetike", "iot_dry_tablecloths": "Stolnjaci", - "iot_dry_technical_fabrics": "Teni\u010dke tkanine", - "iot_dry_warm_embrace": "Toplo su\u0161enje", - "iot_dry_wool_dry": "Su\u0161enje vune", + "iot_dry_technical_fabrics": "Teničke tkanine", + "iot_dry_warm_embrace": "Toplo sušenje", + "iot_dry_wool_dry": "Sušenje vune", "iot_easy_iron": "Lako peglanje", - "iot_fresh_care_steam": "Tretman za osve\u017eavanje + para", + "iot_fresh_care_steam": "Tretman za osvežavanje + para", "iot_hygiene_pro_steam": "Hygiene Pro + para", - "iot_intensive_40_steam": "Intenzivno 40\u00b0C + para", - "iot_mixed_steam": "Me\u0161ani ve\u0161 + Para", - "iot_mix_and_colour_59_steam": "Me\u0161ano i u boji 59' + para", + "iot_intensive_40_steam": "Intenzivno 40°C + para", + "iot_mixed_steam": "Mešani veš + Para", + "iot_mix_and_colour_59_steam": "Mešano i u boji 59' + para", "iot_perfect_cotton_59_steam": "Perfect Pamuk 59'", "iot_rapid_a_class_60_steam": "Brza klasa A 60 + para", "iot_resistant_cotton_steam": "Pamuk + Para", - "iot_shirts_steam": "Ko\u0161ulje + para", - "iot_single_item_steam": "Pojedina\u010dni predmet + para", + "iot_shirts_steam": "Košulje + para", + "iot_single_item_steam": "Pojedinačni predmet + para", "iot_smart_wash": "Pametno pranje", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Posebno 39' + para", "iot_steam_hygiene_plus": "Higijena plus sa parom ", - "iot_synthetic_and_coloured_steam": "Sintetika i \u0161arena ode\u0107a + para", - "iot_wash_and_dry": "Pranje i su\u0161enje", + "iot_synthetic_and_coloured_steam": "Sintetika i šarena odeća + para", + "iot_wash_and_dry": "Pranje i sušenje", "iot_wash_anti_mites": "Protiv grinja", "iot_wash_anti_odor": "Protiv neprijatnih mirisa", "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", "iot_wash_baby_sanitizer": "Dezinfekcija", - "iot_wash_baby_sanitizer_steam": "Dezinfekcija ode\u0107e za bebe + para", - "iot_wash_backpacks": "Ran\u010devi", - "iot_wash_backpacks_zelig": "Ran\u010devi", - "iot_wash_bathrobe": "Bade mantili i pe\u0161kiri", + "iot_wash_baby_sanitizer_steam": "Dezinfekcija odeće za bebe + para", + "iot_wash_backpacks": "Rančevi", + "iot_wash_backpacks_zelig": "Rančevi", + "iot_wash_bathrobe": "Bade mantili i peškiri", "iot_wash_bathrobe_steam": "Bade-mantil + Para", "iot_wash_bed_linen": "Posteljina", "iot_wash_bed_linen_steam": "Posteljina + Para", "iot_wash_bed_linen_zelig": "Posteljina", - "iot_wash_big_single_load": "Velika pojedina\u010dna koli\u010dina", + "iot_wash_big_single_load": "Velika pojedinačna količina", "iot_wash_bleaching": "Izbeljivanje", "iot_wash_blood_stains": "Fleke od krvi", - "iot_wash_cashmere": "Ka\u0161mir", - "iot_wash_chocolate_stains": "Fleke od \u010dokolade", + "iot_wash_cashmere": "Kašmir", + "iot_wash_chocolate_stains": "Fleke od čokolade", "iot_wash_cold_wash": "Hladno pranje", "iot_wash_colored": "U boji", "iot_wash_colored_anti_stain": "Uklanjanje fleka na bojama", @@ -644,22 +643,22 @@ "iot_wash_coloured_bed_linen": "Posteljina u boji", "iot_wash_coloured_bed_linen_steam": "Posteljina u boji + para", "iot_wash_coloured_curtains": "Zavese u boji", - "iot_wash_coloured_shirts": "Ko\u0161ulje u boji", - "iot_wash_coloured_shirts_steam": "Ko\u0161ulje u boji + para", + "iot_wash_coloured_shirts": "Košulje u boji", + "iot_wash_coloured_shirts_steam": "Košulje u boji + para", "iot_wash_coloured_steam": "Boja + Para", "iot_wash_coloured_tableclothes": "Stolnjaci u boji", "iot_wash_coloured_tableclothes_steam": "Stolnjaci u boji + para", "iot_wash_cotton": "Pamuk", "iot_wash_cotton_steam": "Pamuk + Para", - "iot_wash_cuddly_toys": "Pli\u0161ane igra\u010dke", + "iot_wash_cuddly_toys": "Plišane igračke", "iot_wash_curtains": "Zavese", "iot_wash_curtains_steam": "Zavese+Para", "iot_wash_curtains_zelig": "Zavese", - "iot_wash_dark": "Tamna ode\u0107a", + "iot_wash_dark": "Tamna odeća", "iot_wash_darks_and_coloured_44": "Tamno i u boji 44'", "iot_wash_darks_and_coloured_59": "Tamno i u boji 59'", "iot_wash_darks_and_coloured_xl": "Tamno i u boji XL", - "iot_wash_dark_steam": "Tamna ode\u0107a + Para", + "iot_wash_dark_steam": "Tamna odeća + Para", "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", "iot_wash_dash_cold_cycle": "Dash Cold Clean", "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", @@ -668,71 +667,71 @@ "iot_wash_delicate_antiallergy_steam": "Protiv alergije za osetljive tkanine + Para", "iot_wash_delicate_antiallergy_zelig": "Protiv alergije za osetljive tkanine", "iot_wash_delicate_colors": "Osetljive tkanine u boji", - "iot_wash_delicate_colors_steam": "\u0160arena ode\u0107a + para", + "iot_wash_delicate_colors_steam": "Šarena odeća + para", "iot_wash_delicate_dark": "Osetljivi tamni materijal", "iot_wash_delicate_steam": "Osetljive tkanine + Para", "iot_wash_delicate_tablecloths": "Osetljivi stolnjaci", "iot_wash_delicate_tablecloths_steam": "Osetljivi stolnjaci + Para", "iot_wash_delicate_whites": "Osetljivi beli materijal", - "iot_wash_denim_jeans": "Teksas - d\u017eins", - "iot_wash_diving_suits": "Ronila\u010dka odela", - "iot_wash_diving_suits_zelig": "Ronila\u010dka odela", + "iot_wash_denim_jeans": "Teksas - džins", + "iot_wash_diving_suits": "Ronilačka odela", + "iot_wash_diving_suits_zelig": "Ronilačka odela", "iot_wash_down_jackets": "Podjakne", "iot_wash_down_jackets_zelig": "Podjakne", "iot_wash_duvet": "Jorgani", - "iot_wash_fruit_stains": "Fleke od vo\u0107a", - "iot_wash_gym_fit": "Ode\u0107a za teretanu - fitnes", - "iot_wash_handwash": "Ru\u010dno pranje", - "iot_wash_handwash_colored": "Ru\u010dno pranje materijala u boji", - "iot_wash_handwash_dark": "Ru\u010dno pranje tamnog materijala", - "iot_wash_lingerie": "Donji ve\u0161", - "iot_wash_masks_refresh": "Osve\u017eavanje maski", + "iot_wash_fruit_stains": "Fleke od voća", + "iot_wash_gym_fit": "Odeća za teretanu - fitnes", + "iot_wash_handwash": "Ručno pranje", + "iot_wash_handwash_colored": "Ručno pranje materijala u boji", + "iot_wash_handwash_dark": "Ručno pranje tamnog materijala", + "iot_wash_lingerie": "Donji veš", + "iot_wash_masks_refresh": "Osvežavanje maski", "iot_wash_masks_sanification": "Dezinfekcija maski", "iot_wash_masks_sanification_steam": "Dezinfekcija maski + Para", "iot_wash_mats": "Prostirke", "iot_wash_men_s_trousers": "Pantalone", - "iot_wash_mixed": "Me\u0161ani ve\u0161", - "iot_wash_mixed_steam": "Me\u0161ani ve\u0161 + Para", - "iot_wash_mix_and_coloured_44": "Me\u0161ano i u boji 44'", - "iot_wash_mix_and_coloured_59": "Me\u0161ano i u boji 59'", - "iot_wash_mix_and_coloured_xl": "Me\u0161ano i u boji XL", - "iot_wash_new_clothes": "Nova ode\u0107a", - "iot_wash_perfect_white": "Savr\u0161eno belo", - "iot_wash_perfect_white_steam": "Savr\u0161eno belo + Para", - "iot_wash_pets": "Oprema za ku\u0107ne ljubimce", - "iot_wash_pets_hair_removal": "Uklanjanje dlaka ku\u0107nih ljubimaca", - "iot_wash_pets_odours_stains_removal": "Uklanjanje mirisa i mrlja od ku\u0107nih ljubimaca", - "iot_wash_pets_steam": "Oprema za ku\u0107ne ljubimce", - "iot_wash_playsuits": "Ode\u0107a za igru", - "iot_wash_playsuits_steam": "Ode\u0107a za igru + Para", - "iot_wash_quick_drum_cleaner": "Brzi \u010dista\u010d bubnja", - "iot_wash_rapid_14": "Brzi program 14\u2019", - "iot_wash_rapid_30": "Brzi program 30\u2019", - "iot_wash_rapid_44": "Brzi program 44\u2019", + "iot_wash_mixed": "Mešani veš", + "iot_wash_mixed_steam": "Mešani veš + Para", + "iot_wash_mix_and_coloured_44": "Mešano i u boji 44'", + "iot_wash_mix_and_coloured_59": "Mešano i u boji 59'", + "iot_wash_mix_and_coloured_xl": "Mešano i u boji XL", + "iot_wash_new_clothes": "Nova odeća", + "iot_wash_perfect_white": "Savršeno belo", + "iot_wash_perfect_white_steam": "Savršeno belo + Para", + "iot_wash_pets": "Oprema za kućne ljubimce", + "iot_wash_pets_hair_removal": "Uklanjanje dlaka kućnih ljubimaca", + "iot_wash_pets_odours_stains_removal": "Uklanjanje mirisa i mrlja od kućnih ljubimaca", + "iot_wash_pets_steam": "Oprema za kućne ljubimce", + "iot_wash_playsuits": "Odeća za igru", + "iot_wash_playsuits_steam": "Odeća za igru + Para", + "iot_wash_quick_drum_cleaner": "Brzi čistač bubnja", + "iot_wash_rapid_14": "Brzi program 14’", + "iot_wash_rapid_30": "Brzi program 30’", + "iot_wash_rapid_44": "Brzi program 44’", "iot_wash_rapid_59": "Brzi program 59'", "iot_wash_rapid_59_steam": "Brzi program 59' + para", - "iot_wash_refresh_14_min": "Osve\u017eavanje 14'", + "iot_wash_refresh_14_min": "Osvežavanje 14'", "iot_wash_resistant_colored": "Otporni materijal u boji", "iot_wash_resistant_dark": "Otporno tamno", "iot_wash_resistant_whites": "Otporno belo", "iot_wash_rinse": "Ispiranje", - "iot_wash_shirts": "Ko\u0161ulje", - "iot_wash_shirts_steam": "Ko\u0161ulje + Para", + "iot_wash_shirts": "Košulje", + "iot_wash_shirts_steam": "Košulje + Para", "iot_wash_silk": "Svila", - "iot_wash_ski_suit": "Skija\u0161ko odelo", - "iot_wash_ski_suit_zelig": "Skija\u0161ko odelo", + "iot_wash_ski_suit": "Skijaško odelo", + "iot_wash_ski_suit_zelig": "Skijaško odelo", "iot_wash_spin": "Centrifuga", - "iot_wash_sport": "Sportska ode\u0107a", - "iot_wash_sport_anti_odor": "Sportska ode\u0107a sa spre\u010davanjem neprijatnih mirisa", - "iot_wash_sport_anti_odor_zelig": "Sportska ode\u0107a sa spre\u010davanjem neprijatnih mirisa", + "iot_wash_sport": "Sportska odeća", + "iot_wash_sport_anti_odor": "Sportska odeća sa sprečavanjem neprijatnih mirisa", + "iot_wash_sport_anti_odor_zelig": "Sportska odeća sa sprečavanjem neprijatnih mirisa", "iot_wash_stains_remover": "Uklanjanje fleka", - "iot_wash_swimsuits_and_bikinis": "Ode\u0107a za kupanje", + "iot_wash_swimsuits_and_bikinis": "Odeća za kupanje", "iot_wash_synthetic": "Sintetika", "iot_wash_synthetic_steam": "Sintetika + Para", "iot_wash_tablecloths": "Stolnjaci", "iot_wash_tablecloths_steam": "Stolnjaci + Para", - "iot_wash_technical_fabrics": "Teni\u010dke tkanine", - "iot_wash_technical_fabrics_zelig": "Teni\u010dke tkanine", + "iot_wash_technical_fabrics": "Teničke tkanine", + "iot_wash_technical_fabrics_zelig": "Teničke tkanine", "iot_wash_technical_jackets": "Vindjakne", "iot_wash_technical_jackets_zelig": "Vindjakne", "iot_wash_trainers": "Patike", @@ -742,42 +741,42 @@ "iot_wash_whites_xl": "Bela XL", "iot_wash_wine_stains": "Fleke od vina", "iot_wash_wool": "Vuna", - "jeans": "D\u017eins", + "jeans": "Džins", "jeans_60": "Jeans", - "low_dry": "Su\u0161enje me\u0161anog ve\u0161a", - "mixed": "Me\u0161ani ve\u0161", - "mixed_and_colored_59": "Me\u0161ani ve\u0161 i ve\u0161 u boji 59'", - "mixed_steam": "Me\u0161ani ve\u0161 + Para", + "low_dry": "Sušenje mešanog veša", + "mixed": "Mešani veš", + "mixed_and_colored_59": "Mešani veš i veš u boji 59'", + "mixed_steam": "Mešani veš + Para", "mix_and_colour_59": "Mesano I Obojeno 59'", - "mix_and_colour_59_steam": "Me\u0161ano i u boji 59' + para", - "night_and_day": "No\u0107 i dan", - "night_wash": "No\u0107ni ciklus", - "perfect_59": "Savr\u0161eno 59'", + "mix_and_colour_59_steam": "Mešano i u boji 59' + para", + "night_and_day": "Noć i dan", + "night_wash": "Noćni ciklus", + "perfect_59": "Savršeno 59'", "perfect_cotton_59": "Perfect Pamuk 59'", "perfect_cotton_59_steam": "Perfect Pamuk 59'", - "perfect_whites_59": "Savr\u0161eno belo 59'", + "perfect_whites_59": "Savršeno belo 59'", "rapid_14_min": "Brzi 14'", "rapid_30_min": "Brzi 30 min", "rapid_44_min": "Brzi 44 min", "rapid_a_class_60": "Brza klasa A 60", "rapid_a_class_60_steam": "Brza klasa A 60 + para", - "rapid_wash_and_dry_59_min": "Pranje i su\u0161enje 59'.", + "rapid_wash_and_dry_59_min": "Pranje i sušenje 59'.", "resistant_cotton": "Pamuk", "resistant_cotton_steam": "Pamuk + Para", "rinse": "Ispiranje", - "shirts_steam": "Ko\u0161ulje + para", - "silent_night": "No\u0107ni ciklus", - "single_item": "Pojedina\u010dni predmet", - "single_item_steam": "Pojedina\u010dni predmet + para", + "shirts_steam": "Košulje + para", + "silent_night": "Noćni ciklus", + "single_item": "Pojedinačni predmet", + "single_item_steam": "Pojedinačni predmet + para", "smart_wash": "Pametno pranje", "soft_care": "Blagi tretman", "soft_care_steam": "Soft Care + Steam", "soft_care_steam_title": "Soft Care + Steam", - "special_39": "\u041f\u043e\u0441\u0435\u0431\u043d\u0438 39'", - "special_39_full_load": "\u041f\u043e\u0441\u0435\u0431\u043d\u0438 39'", + "special_39": "Посебни 39'", + "special_39_full_load": "Посебни 39'", "special_39_full_load_steam": "Posebno 39' + para", "special_49": "Posebno 49'", - "sport_39": "Sportska ode\u0107a 39'", + "sport_39": "Sportska odeća 39'", "sport_plus_29": "Sport Plus 29\"", "sport_plus_39": "Sport Plus 39'", "steam_39": "Para 39'", @@ -788,31 +787,31 @@ "steam_hygiene_plus": "Higijena plus sa parom ", "synthetics": "Sintetika", "synthetic_and_coloured": "Sintetika i materijal u boji", - "synthetic_and_coloured_steam": "Sintetika i \u0161arena ode\u0107a + para", + "synthetic_and_coloured_steam": "Sintetika i šarena odeća + para", "tailored_resistant_cotton": "Tailored Resistant Cotton", "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", "total_care": "Kompletna nega", - "tumbling": "Su\u0161enje", + "tumbling": "Sušenje", "wool": "Vuna", "wool_and_delicates_49": "Vuna/Delikatni 49'", - "wool_dry": "Su\u0161enje vune", + "wool_dry": "Sušenje vune", "wool_soft_care": "Vuna & Blagi Tretman" }, "name": "Program" }, "dry_levels": { "state": { - "0": "Bez su\u0161enja", + "0": "Bez sušenja", "1": "Peglanje", "2": "Suvo za ormar", "3": "Suvo za ormar", "4": "Ekstra suvo", "12": "Peglanje", "13": "Suvo za ormar", - "14": "Spremno za no\u0161enje", + "14": "Spremno za nošenje", "15": "Ekstra suvo" }, - "name": "Nivo su\u0161enja" + "name": "Nivo sušenja" }, "spin_speed": { "name": "Centrifuga" @@ -821,12 +820,12 @@ "name": "Temperatura" }, "dry_time": { - "name": "Vreme su\u0161enja" + "name": "Vreme sušenja" } }, "switch": { "anti_crease": { - "name": "Protiv gu\u017evanja" + "name": "Protiv gužvanja" }, "add_dish": { "name": "" @@ -838,7 +837,7 @@ "name": "Jako suvo" }, "half_load": { - "name": "Pola optere\u0107enja" + "name": "Pola opterećenja" }, "open_door": { "name": "Otvorena vrata" @@ -850,16 +849,16 @@ "name": "Zagrevanje" }, "dish_washer": { - "name": "Ma\u0161ina za pranje sudova" + "name": "Mašina za pranje sudova" }, "tumble_dryer": { - "name": "Ma\u0161ina za su\u0161enje" + "name": "Mašina za sušenje" }, "washing_machine": { - "name": "Ma\u0161ina za pranje ve\u0161a" + "name": "Mašina za pranje veša" }, "washer_dryer": { - "name": "Ma\u0161ina za pranje i su\u0161enje" + "name": "Mašina za pranje i sušenje" }, "oven": { "name": "Rerna" @@ -874,12 +873,12 @@ "name": "Keep Fresh" }, "delay_time": { - "name": "Odlo\u017eeni start" + "name": "Odloženi start" } }, "binary_sensor": { "door_lock": { - "name": "Vrata su zaklju\u010dana" + "name": "Vrata su zaključana" }, "extra_rinse_1": { "name": "+1 ispiranje" @@ -891,13 +890,13 @@ "name": "+3 ispiranja" }, "good_night": { - "name": "Laku no\u0107" + "name": "Laku noć" }, "anti_crease": { - "name": "Protiv gu\u017evanja" + "name": "Protiv gužvanja" }, "aqua_plus": { - "name": "Vi\u0161i nivo vode" + "name": "Viši nivo vode" }, "spin_speed": { "name": "Centrifuga" @@ -918,7 +917,7 @@ "name": "Program" }, "still_hot": { - "name": "Jo\u0161 uvek vru\u0107e" + "name": "Još uvek vruće" }, "pan_status": { "name": "Tiganj" @@ -936,13 +935,13 @@ "name": "Vrata su otvorena" }, "connection": { - "name": "Povezivanje ure\u0111aja" + "name": "Povezivanje uređaja" }, "child_lock": { "name": "Blokada tastera za decu" }, "on": { - "name": "Uklju\u010deno" + "name": "Uključeno" }, "prewash": { "name": "Predpranje" @@ -956,16 +955,16 @@ "name": "Temperatura" }, "delay_time": { - "name": "Odlo\u017eeni start" + "name": "Odloženi start" }, "water_hard": { - "name": "Tvrdo\u0107a vode" + "name": "Tvrdoća vode" }, "program_duration": { "name": "Trajanje programa" }, "target_temperature": { - "name": "\u017deljena temperatura" + "name": "Željena temperatura" }, "rinse_iterations": { "name": "Broj ispiranja" @@ -974,12 +973,12 @@ "name": "Vreme pranja" }, "dry_time": { - "name": "Vreme su\u0161enja" + "name": "Vreme sušenja" } }, "button": { "induction_hob": { - "name": "Indukciona plo\u010da" + "name": "Indukciona ploča" } } } diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index a65b47b..6ba195e 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -3,112 +3,112 @@ "sensor": { "washing_modes": { "state": { - "0": "Haz\u0131r", - "1": "Haz\u0131r", + "0": "Hazır", + "1": "Hazır", "3": "Duraklat", - "4": "Planland\u0131", - "5": "Planland\u0131", + "4": "Planlandı", + "5": "Planlandı", "6": "Hata", - "7": "Haz\u0131r" + "7": "Hazır" } }, "program_phases_wm": { "state": { - "0": "Haz\u0131r", - "1": "Y\u0131kama", - "2": "Y\u0131kama", - "3": "S\u0131kma", + "0": "Hazır", + "1": "Yıkama", + "2": "Yıkama", + "3": "Sıkma", "4": "Durulama", "5": "Durulama", "6": "Durulama", "7": "Kurutma", "9": "Buhar", - "10": "Haz\u0131r", - "11": "S\u0131kma", + "10": "Hazır", + "11": "Sıkma", "12": "Tartma ", "13": "Tartma ", - "14": "Y\u0131kama", - "15": "Y\u0131kama", - "16": "Y\u0131kama", + "14": "Yıkama", + "15": "Yıkama", + "16": "Yıkama", "17": "Durulama", "18": "Durulama", - "19": "Planland\u0131", + "19": "Planlandı", "20": "Tazeleme", "24": "Tazeleme", - "25": "Y\u0131kama", - "26": "Is\u0131tma", - "27": "Y\u0131kama" + "25": "Yıkama", + "26": "Isıtma", + "27": "Yıkama" }, - "name": "A\u015fama" + "name": "Aşama" }, "program_phases_td": { "state": { - "0": "Haz\u0131r", + "0": "Hazır", "1": "Kurutma", "2": "Kurutma", - "3": "So\u011futma", - "13": "So\u011futma", + "3": "Soğutma", + "13": "Soğutma", "14": "Kurutma", "15": "Kurutma", - "16": "So\u011futma", + "16": "Soğutma", "18": "Tazeleme", "19": "Kurutma", "20": "Kurutma" }, - "name": "A\u015fama" + "name": "Aşama" }, "program_phases_dw": { "state": { - "0": "Haz\u0131r", - "1": "\u00d6n Y\u0131kama", - "2": "Y\u0131kama", + "0": "Hazır", + "1": "Ön Yıkama", + "2": "Yıkama", "3": "Durulama", "4": "Kurutma", - "5": "Haz\u0131r", + "5": "Hazır", "6": "Hot rinse" }, - "name": "A\u015fama" + "name": "Aşama" }, "dry_levels": { "state": { "0": "Kurutma yok", - "1": "\u00dct\u00fc", - "2": "Gard\u0131rop haz\u0131r", - "3": "Gard\u0131rop haz\u0131r", + "1": "Ütü", + "2": "Gardırop hazır", + "3": "Gardırop hazır", "4": "Ekstra kurutma", - "12": "\u00dct\u00fc", - "13": "Gard\u0131rop haz\u0131r", - "14": "Giyilmeye haz\u0131r", + "12": "Ütü", + "13": "Gardırop hazır", + "14": "Giyilmeye hazır", "15": "Ekstra kurutma" }, "name": "Kurutma seviyesi" }, "anti_crease": { - "name": "K\u0131r\u0131\u015f\u0131k a\u00e7ma" + "name": "Kırışık açma" }, "power": { - "name": "G\u00fc\u00e7 seviyesi" + "name": "Güç seviyesi" }, "remaining_time": { - "name": "Kalan s\u00fcre" + "name": "Kalan süre" }, "temperature": { - "name": "S\u0131cakl\u0131k" + "name": "Sıcaklık" }, "water_efficiency": { - "name": "Su verimlili\u011fi" + "name": "Su verimliliği" }, "water_saving": { "name": "Su tasarrufu" }, "duration": { - "name": "S\u00fcre" + "name": "Süre" }, "target_temperature": { - "name": "Hedef s\u0131cakl\u0131k" + "name": "Hedef sıcaklık" }, "spin_speed": { - "name": "S\u0131kma" + "name": "Sıkma" }, "steam_leve": { "name": "Buhar Seviyesi" @@ -117,43 +117,43 @@ "name": "Kir seviyesi" }, "delay_time": { - "name": "Gecikmeli Ba\u015flatma" + "name": "Gecikmeli Başlatma" }, "dry_time": { - "name": "Kurutma zaman\u0131" + "name": "Kurutma zamanı" }, "suggested_load": { - "name": "Y\u00fck kapasitesi" + "name": "Yük kapasitesi" }, "energy_label": { - "name": "Enerji verimlili\u011fi" + "name": "Enerji verimliliği" }, "det_dust": { "name": "Toz" }, "det_liquid": { - "name": "S\u0131v\u0131" + "name": "Sıvı" }, "errors": { "name": "Hata" }, "programs": { - "name": "Ge\u00e7erli program" + "name": "Geçerli program" }, "cycles_total": { "name": "Programlar Toplam" }, "energy_total": { - "name": "Enerji T\u00fcketimi Toplam" + "name": "Enerji Tüketimi Toplam" }, "water_total": { - "name": "Su verimlili\u011fi Toplam" + "name": "Su verimliliği Toplam" }, "energy_current": { - "name": "Enerji T\u00fcketimi Current" + "name": "Enerji Tüketimi Current" }, "water_current": { - "name": "Su verimlili\u011fi Current" + "name": "Su verimliliği Current" } }, "select": { @@ -165,78 +165,78 @@ "auto_plus": "AutoPlus", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Universal 50-60\u00b0C", - "auto_universal_plus": "Family 65-75\u00b0C", - "auto_universal_plus_soil": "Family 65-75\u00b0C", - "auto_universal_soil": "Universal 50-60\u00b0C", - "auto_wash": "Otomatik Y\u0131kama", - "auto_wash_soil": "Otomatik Y\u0131kama", - "classe_a_59": "A Wash 59' 65\u00b0C", - "delicate": "Cristal 45\u00b0C", - "dishwasher_care": "Kire\u00e7 kal\u0131nt\u0131s\u0131 temizleme program\u0131", + "auto_universal": "Universal 50-60°C", + "auto_universal_plus": "Family 65-75°C", + "auto_universal_plus_soil": "Family 65-75°C", + "auto_universal_soil": "Universal 50-60°C", + "auto_wash": "Otomatik Yıkama", + "auto_wash_soil": "Otomatik Yıkama", + "classe_a_59": "A Wash 59' 65°C", + "delicate": "Cristal 45°C", + "dishwasher_care": "Kireç kalıntısı temizleme programı", "eco": "Eko", - "eco_asynch": "Eco 45\u00b0C", - "eco_bldc": "Eco 45\u00b0C", - "eco_synch": "Eco 45\u00b0C", + "eco_asynch": "Eco 45°C", + "eco_bldc": "Eco 45°C", + "eco_synch": "Eco 45°C", "gentle_wash": "Gentle wash", "glass": "Cam", - "glassware": "Cam E\u015fya 45\u00b0C", + "glassware": "Cam Eşya 45°C", "glass_care": "Glass Care", "hygiene": "Hijyen", - "hygiene_plus": "Hijyen+ 75\u00b0C", - "intensive": "Yo\u011fun ", + "hygiene_plus": "Hijyen+ 75°C", + "intensive": "Yoğun ", "intensive_rapid": "yogun hizli", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Universal 50-60\u00b0C", - "iot_auto_wash_soil": "Otomatik Y\u0131kama", - "iot_baby_care": "Bebek Bak\u0131m", - "iot_breakfast": "Kahvalt\u0131", + "iot_auto_universal_soil": "Universal 50-60°C", + "iot_auto_wash_soil": "Otomatik Yıkama", + "iot_baby_care": "Bebek Bakım", + "iot_breakfast": "Kahvaltı", "iot_checkup": "Check-up", - "iot_china_crystals": "\u00c7in Kristalleri", + "iot_china_crystals": "Çin Kristalleri", "iot_classe_a_59": "Hizli 59'", - "iot_cocktail_glasses": "Kokteyl Bardaklar\u0131", - "iot_cocktail_glasses_soil": "Kokteyl Bardaklar\u0131", - "iot_daily_care": "G\u00fcnl\u00fck Bak\u0131m", - "iot_daily_care_soil": "G\u00fcnl\u00fck Bak\u0131m", - "iot_delicate": "Cristal 45\u00b0C", - "iot_dinner_for_two": "2 Ki\u015filik Ak\u015fam Yeme\u011fi", - "iot_dinner_for_two_soil": "2 Ki\u015filik Ak\u015fam Yeme\u011fi", + "iot_cocktail_glasses": "Kokteyl Bardakları", + "iot_cocktail_glasses_soil": "Kokteyl Bardakları", + "iot_daily_care": "Günlük Bakım", + "iot_daily_care_soil": "Günlük Bakım", + "iot_delicate": "Cristal 45°C", + "iot_dinner_for_two": "2 Kişilik Akşam Yemeği", + "iot_dinner_for_two_soil": "2 Kişilik Akşam Yemeği", "iot_dreft_quick_cycle": "Dreft Quick", - "iot_eco_asynch": "Eco 45\u00b0C", - "iot_eco_bldc": "Eco 45\u00b0C", - "iot_eco_synch": "Eco 45\u00b0C", + "iot_eco_asynch": "Eco 45°C", + "iot_eco_bldc": "Eco 45°C", + "iot_eco_synch": "Eco 45°C", "iot_extra_hygiene": "Ekstra Hijyen", "iot_fairy_quick_cycle": "Fairy Quick", "iot_happy_hour": "Happy Hour", "iot_jar_quick_cycle": "Jar Quick", "iot_party": "Parti", "iot_party_soil": "Parti", - "iot_pizza_menu": "Pizza Men\u00fcs\u00fc", - "iot_pizza_menu_soil": "Pizza Men\u00fcs\u00fc", + "iot_pizza_menu": "Pizza Menüsü", + "iot_pizza_menu_soil": "Pizza Menüsü", "iot_plastic_tupperware": "Plastik ve Tupperware", "iot_porcelain": "Porselen", - "iot_power_mix_wash": "Power Mix Y\u0131kama", - "iot_power_mix_wash_soil": "Power Mix Y\u0131kama", + "iot_power_mix_wash": "Power Mix Yıkama", + "iot_power_mix_wash_soil": "Power Mix Yıkama", "iot_prewash": "Pre-wash", - "iot_pyrex_and_glassware": "Borcam ve Cam E\u015fya", + "iot_pyrex_and_glassware": "Borcam ve Cam Eşya", "iot_rapid_29": "Rapid 29'", - "iot_rapid_39": "H\u0131zl\u0131 39' 60\u00b0C", + "iot_rapid_39": "Hızlı 39' 60°C", "iot_single": "Tek", - "iot_steam": "Buhar 75\u00b0C", - "iot_super_flash": "S\u00fcper H\u0131zl\u0131", - "iot_super_wash": "S\u00fcper Y\u0131kama", + "iot_steam": "Buhar 75°C", + "iot_super_flash": "Süper Hızlı", + "iot_super_wash": "Süper Yıkama", "iot_turbopower": "TurboPower", - "iot_universal": "\u00c7ok Ama\u00e7l\u0131 60\u00b0C", - "iot_wok_grids_maxi_pans": "\u00d6zel Tavalar (Wok - Izgaralar ve Maksi Tavalar)", - "iot_wok_grids_maxi_pans_soil": "\u00d6zel Tavalar (Wok - Izgaralar ve Maksi Tavalar)", + "iot_universal": "Çok Amaçlı 60°C", + "iot_wok_grids_maxi_pans": "Özel Tavalar (Wok - Izgaralar ve Maksi Tavalar)", + "iot_wok_grids_maxi_pans_soil": "Özel Tavalar (Wok - Izgaralar ve Maksi Tavalar)", "iot_yes_quick_cycle": "Yes Quick", - "night": "Night 55\u00b0C", + "night": "Night 55°C", "prewash": "Pre-wash", "rapid_20": "Hizli 20'", "rapid_24": "Rapid 24'", - "rapid_29": "Rapid 29' 50\u00b0C", + "rapid_29": "Rapid 29' 50°C", "rapid_35": "Wash&Dry 35'", - "rapid_39": "H\u0131zl\u0131 39' 60\u00b0C", + "rapid_39": "Hızlı 39' 60°C", "rapid_49": "Hizli 49'", "rapid_59": "Hizli 59'", "sanitising": "Dezenfekte Etme", @@ -244,75 +244,75 @@ "silent": "Gece", "silent_care": "Silent Care", "smart_ai": "Smart AI", - "special": "\u00f6zel", - "special_pw_prz": "\u00f6zel", - "steam": "Buhar 75\u00b0C", - "steam_plus": "Ekstra Buhar 75\u00b0C", - "total_care": "Total Care 50\u00b0C", - "ultra_silence": "Night 55\u00b0C", - "ultra_silent": "Night 55\u00b0C", - "universal": "\u00c7ok Ama\u00e7l\u0131 60\u00b0C", - "universal_plus": "\u00c7ok Ama\u00e7l\u0131 Art\u0131 70\u00b0C", + "special": "özel", + "special_pw_prz": "özel", + "steam": "Buhar 75°C", + "steam_plus": "Ekstra Buhar 75°C", + "total_care": "Total Care 50°C", + "ultra_silence": "Night 55°C", + "ultra_silent": "Night 55°C", + "universal": "Çok Amaçlı 60°C", + "universal_plus": "Çok Amaçlı Artı 70°C", "zoom_39": "Zoom 39 min" }, "name": "Program" }, "programs_ih": { "state": { - "iot_special_ash_brown": "K\u00fcl kahverengi", + "iot_special_ash_brown": "Kül kahverengi", "iot_special_beef_fillet": "Dana fileto", "iot_special_beef_veal_stew": "Dana eti ve dana yahnisi", - "iot_special_boiled_rice": "Ha\u015flanm\u0131\u015f pirin\u00e7", - "iot_special_chicken_breast": "Tavuk g\u00f6\u011f\u00fcs", + "iot_special_boiled_rice": "Haşlanmış pirinç", + "iot_special_chicken_breast": "Tavuk göğüs", "iot_special_chicken_legs": "Tavuk but", - "iot_special_chocolate_pudding": "S\u00fcpangle", + "iot_special_chocolate_pudding": "Süpangle", "iot_special_entrecote": "Antrikot", - "iot_special_fresh_tuna": "Taze ton bal\u0131\u011f\u0131", + "iot_special_fresh_tuna": "Taze ton balığı", "iot_special_grilled_vegetables": "Izgara sebzeler", "iot_special_lamb_cutlet": "Kuzu kotlet", - "iot_special_meatballs": "K\u00f6fte", - "iot_special_minestrone": "\u00c7orba", + "iot_special_meatballs": "Köfte", + "iot_special_minestrone": "Çorba", "iot_special_mussels": "Midye", "iot_special_omelette": "Omlet", "iot_special_pancakes": "Pankek", - "iot_special_paris_style_peas": "Frans\u0131z usul\u00fc bezelye", - "iot_special_poached_eggs": "Po\u015fe yumurta", + "iot_special_paris_style_peas": "Fransız usulü bezelye", + "iot_special_poached_eggs": "Poşe yumurta", "iot_special_pork_fillet": "Domuz filetosu", - "iot_special_pork_ribs": "Domuz kaburgas\u0131", + "iot_special_pork_ribs": "Domuz kaburgası", "iot_special_prawns": "Karides", "iot_special_quinoa": "Kinoa", "iot_special_ratatouille": "Ratatuy", "iot_special_salmon_fillet": "Somon fileto", "iot_special_saute_potatoes": "Patates sote", - "iot_special_scallops": "Deniz tara\u011f\u0131", + "iot_special_scallops": "Deniz tarağı", "iot_special_scrambled_eggs": "Sahanda yumurta", - "iot_special_spelt": "K\u0131l\u00e7\u0131ks\u0131z bu\u011fday", - "iot_special_veggy_noodles": "Sebzeli eri\u015fte", - "iot_special_white_fish_fillet": "Beyaz bal\u0131k filetosu", + "iot_special_spelt": "Kılçıksız buğday", + "iot_special_veggy_noodles": "Sebzeli erişte", + "iot_special_white_fish_fillet": "Beyaz balık filetosu", "iot_standard_boiling": "Kaynama", - "iot_standard_frying": "K\u0131zart", - "iot_standard_keep_warm": "S\u0131cak Tut", + "iot_standard_frying": "Kızart", + "iot_standard_keep_warm": "Sıcak Tut", "iot_standard_melting": "Erit", - "iot_standard_simmering": "\u0130\u00e7ten \u0130\u00e7e Kaynama" + "iot_standard_simmering": "İçten İçe Kaynama" }, "name": "Program" }, "programs_ov": { "state": { "bakery": "Makarna ve Ekmek", - "bakery_steam": "Buharda pi\u015fmi\u015f ekmek", - "bottom_heating": "Alt \u0131s\u0131t\u0131c\u0131", - "bottom_heating_fan": "Alt \u0131s\u0131t\u0131c\u0131 + Fan", + "bakery_steam": "Buharda pişmiş ekmek", + "bottom_heating": "Alt ısıtıcı", + "bottom_heating_fan": "Alt ısıtıcı + Fan", "bread": "Ekmek", - "bread_steam": "Buharda pi\u015fmi\u015f hamur i\u015fleri", - "convection_fan": "Fan destekl\u0131", - "convection_fan_turnspit": "Konveksiyon + Fan + \u015ei\u015f \u00c7evirme", - "conventional": "Stat\u0131k", - "conventional_turnspit": "Konveksiyon + \u015ei\u015f \u00c7evirme", - "defrost": "Buz \u00e7\u00f6zme", - "descaling": "Kire\u00e7 \u00e7\u00f6zme", - "fish": "Bal\u0131k", - "fish_steam": "Buharda pi\u015fmi\u015f bal\u0131k", + "bread_steam": "Buharda pişmiş hamur işleri", + "convection_fan": "Fan desteklı", + "convection_fan_turnspit": "Konveksiyon + Fan + Şiş Çevirme", + "conventional": "Statık", + "conventional_turnspit": "Konveksiyon + Şiş Çevirme", + "defrost": "Buz çözme", + "descaling": "Kireç çözme", + "fish": "Balık", + "fish_steam": "Buharda pişmiş balık", "grill_cata": "Izgara", "grill_fan_cata": "Izgara fan", "grill_fan_pyro": "Izgara + Fan", @@ -321,35 +321,34 @@ "iot_bread": "Ekmek", "iot_h20_clean": "h2O clean", "leavening": "Mayalama", - "low_temp_cooking": "D\u00fc\u015f\u00fck S\u0131cakl\u0131kta Pi\u015firme", - "low_temp_cooking_fish": "D\u00fc\u015f\u00fck S\u0131cakl\u0131kta Pi\u015firme - Bal\u0131k", - "low_temp_cooking_fish_steam": "D\u00fc\u015f\u00fck S\u0131cakl\u0131kta Buharda Pi\u015firme - Bal\u0131k", - "low_temp_cooking_meat": "D\u00fc\u015f\u00fck S\u0131cakl\u0131kta Pi\u015firme - Et", - "low_temp_cooking_meat_steam": "D\u00fc\u015f\u00fck S\u0131cakl\u0131kta Buharda Pi\u015firme - Et", - "low_temp_cooking_steam": "D\u00fc\u015f\u00fck S\u0131cakl\u0131kta Buharda Pi\u015firme", + "low_temp_cooking": "Düşük Sıcaklıkta Pişirme", + "low_temp_cooking_fish": "Düşük Sıcaklıkta Pişirme - Balık", + "low_temp_cooking_fish_steam": "Düşük Sıcaklıkta Buharda Pişirme - Balık", + "low_temp_cooking_meat": "Düşük Sıcaklıkta Pişirme - Et", + "low_temp_cooking_meat_steam": "Düşük Sıcaklıkta Buharda Pişirme - Et", + "low_temp_cooking_steam": "Düşük Sıcaklıkta Buharda Pişirme", "meat": "Et", - "meat_steam": "Buharda pi\u015fmi\u015f et", - "multi_level": "\u00c7ok Seviyeli", + "meat_steam": "Buharda pişmiş et", + "multi_level": "Çok Seviyeli", "paella": "Paella", "pasta_and_bakery": "Makarna ve Ekmek", "pizza": "Pizza", "pyrolysis": "Piroliz", "pyrolysis_plus": "Piroliz +", - "red_meat": "K\u0131rm\u0131z\u0131 Et", - "red_meat_steam": "Buharda pi\u015fmi\u015f k\u0131rm\u0131z\u0131 et", + "red_meat": "Kırmızı Et", + "red_meat_steam": "Buharda pişmiş kırmızı et", "regenerate": "Yenileme", - "soft_plus": "Yumu\u015fak+", - "super_grill": "S\u00fcper Izgara", + "soft_plus": "Yumuşak+", + "super_grill": "Süper Izgara", "tailor_bake": "Tailor bake", "tailor_bake_cata": "Tailor Bake", - "tailor_bake_desctiption": "Bu i\u015flev, yiyeceklerin i\u00e7ini yumu\u015fak ve d\u0131\u015f\u0131n\u0131 gevrek tutmak i\u00e7in idealdir.\r\r\r\r\r\r\r\r\nBu i\u015flev, sa\u011fl\u0131kl\u0131 bir diyet i\u00e7in gereken kat\u0131 ya\u011f veya s\u0131v\u0131 ya\u011f miktar\u0131n\u0131 azalt\u0131r.\r\r\r\r\r\r\r\r\nIs\u0131tma elemanlar\u0131n\u0131n titre\u015fimli bir hava d\u00f6ng\u00fcs\u00fc ile kombinasyonu, e\u015fit pi\u015firme sonu\u00e7lar\u0131 sa\u011flar.", "tailor_bake_pyro": "Tailor Bake", "vegetables": "Sebzeler", "vegetables_cata": "Sebzeler", "vegetables_pyro": "Sebzeler", - "water_discharge": "Su Drenaj\u0131", + "water_discharge": "Su Drenajı", "white_meat": "Beyaz Et", - "white_meat_steam": "Buharda pi\u015fmi\u015f beyaz et" + "white_meat_steam": "Buharda pişmiş beyaz et" }, "name": "Program" }, @@ -360,12 +359,12 @@ "all_in_one": "Hepsi Bir Arada", "antiallergy": "Antialerji", "anti_odours": "Koku giderme", - "auto_care": "Oto. Bak\u0131m", + "auto_care": "Oto. Bakım", "baby": "Bebek", "bed_quilt": "Yorgan", - "care_30": "Bak\u0131m 30", - "care_45": "Bak\u0131m 45", - "care_59": "Bak\u0131m 59", + "care_30": "Bakım 30", + "care_45": "Bakım 45", + "care_59": "Bakım 59", "coloured": "Renkli", "daily_45_min": "GUNLUK 45'", "daily_perfect_59_min": "GUNLUK 59'", @@ -373,138 +372,138 @@ "delicates": "Hassas", "duvet": "Yorgan", "eco": "Eko Pamuk", - "ecospeed_cottons": "Eko h\u0131z Pamuklu", + "ecospeed_cottons": "Eko hız Pamuklu", "ecospeed_delicates": "ECOSEPEED Hassas", - "ecospeed_mixed": "Eko h\u0131z Kar\u0131\u015f\u0131k", + "ecospeed_mixed": "Eko hız Karışık", "extra_hygiene": "EKSTRA HIJYEN", "fitness": "Fitness", - "fresh_care": "Yenileme Bak\u0131m\u0131", + "fresh_care": "Yenileme Bakımı", "genius": "Genius", "hqd_baby_care": "Baby Care", "hqd_bath_towel": "Havlular", - "hqd_bed_sheets": "\u00c7ar\u015faflar", - "hqd_bulky": "Hacimli e\u015fyalar", - "hqd_casual": "G\u00fcndelik", + "hqd_bed_sheets": "Çarşaflar", + "hqd_bulky": "Hacimli eşyalar", + "hqd_casual": "Gündelik", "hqd_cold_wind_30": "Serin esinti 30 dakika", "hqd_cold_wind_timing": "Serin esinti ", "hqd_cotton": "Pamuk", "hqd_curtain": "Perdeler", - "hqd_delicate": "Narin \u00c7ama\u015f\u0131rlar", + "hqd_delicate": "Narin Çamaşırlar", "hqd_diaper": "Bebek bezi", "hqd_duvet": "Nevresim", - "hqd_feather": "\u015ei\u015fme montlar", - "hqd_hot_wind_timing": "S\u0131cak hava", + "hqd_feather": "Şişme montlar", + "hqd_hot_wind_timing": "Sıcak hava", "hqd_hygienic": "Hijyen", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", "hqd_jacket": "Ceketler", "hqd_jeans": "Kot pantolon", "hqd_luxury": "Konfor", - "hqd_mix": "Kar\u0131\u015f\u0131k", + "hqd_mix": "Karışık", "hqd_night_dry": "Gece kurutma", "hqd_outdoor": "Outdoor", "hqd_precious_cure": "Precious cure", - "hqd_quick_20": "H\u0131zl\u0131 20", - "hqd_quick_30": "H\u0131zl\u0131 30", - "hqd_quick_dry": "H\u0131zl\u0131 kurutma", + "hqd_quick_20": "Hızlı 20", + "hqd_quick_30": "Hızlı 30", + "hqd_quick_dry": "Hızlı kurutma", "hqd_quilt": "Yorganlar", "hqd_refresh": "Yenileme", - "hqd_school_uniform": "Okul \u00fcniformas\u0131", - "hqd_shirt": "G\u00f6mlekler", - "hqd_shoes": "Ayakkab\u0131lar", - "hqd_silk": "\u0130pek", + "hqd_school_uniform": "Okul üniforması", + "hqd_shirt": "Gömlekler", + "hqd_shoes": "Ayakkabılar", + "hqd_silk": "İpek", "hqd_sports": "Spor", "hqd_synthetics": "Sentetikler", - "hqd_timer": "Zaman Ayarl\u0131", + "hqd_timer": "Zaman Ayarlı", "hqd_towel": "Havlular", - "hqd_underwear": "\u0130\u00e7 \u00e7ama\u015f\u0131r\u0131", - "hqd_warm_up": "Is\u0131tma", - "hqd_wool": "Y\u00fcn", - "hqd_working_suit": "\u0130\u015f giysisi", + "hqd_underwear": "İç çamaşırı", + "hqd_warm_up": "Isıtma", + "hqd_wool": "Yün", + "hqd_working_suit": "İş giysisi", "hygiene": "Hijyen", "iot_checkup": "Kontrol", "iot_dry_anti_mites": "Anti-akar", "iot_dry_baby": "Bebek", - "iot_dry_backpacks": "S\u0131rt \u00c7antalar\u0131", + "iot_dry_backpacks": "Sırt Çantaları", "iot_dry_bathrobe": "Bornoz", - "iot_dry_bed_linen": "\u00c7ar\u015faf", + "iot_dry_bed_linen": "Çarşaf", "iot_dry_bed_quilt": "Yorgan", "iot_dry_cotton": "Pamuklular", - "iot_dry_cuddly_toys": "Yumu\u015fak Oyuncaklar", + "iot_dry_cuddly_toys": "Yumuşak Oyuncaklar", "iot_dry_curtains": "Perdeler", "iot_dry_dehumidifier": "Nem giderici", "iot_dry_delicates": "Hassas", - "iot_dry_delicate_tablecloths": "Hassas masa \u00f6rt\u00fcleri", + "iot_dry_delicate_tablecloths": "Hassas masa örtüleri", "iot_dry_denim_jeans": "Denim - kot pantolon", "iot_dry_down_jacket": "Jacket", "iot_dry_duvet": "Yorgan", - "iot_dry_easy_iron_cotton": "S\u00fcper Kolay \u00dct\u00fcleme", - "iot_dry_easy_iron_synthetics": "Sentetikler S\u00fcper Kolay \u00dct\u00fc", - "iot_dry_gym_fit": "Spor k\u0131yafetleri", - "iot_dry_lingerie": "\u0130\u00e7 \u00c7ama\u015f\u0131r\u0131", - "iot_dry_mixed": "Kar\u0131\u015f\u0131k", + "iot_dry_easy_iron_cotton": "Süper Kolay Ütüleme", + "iot_dry_easy_iron_synthetics": "Sentetikler Süper Kolay Ütü", + "iot_dry_gym_fit": "Spor kıyafetleri", + "iot_dry_lingerie": "İç Çamaşırı", + "iot_dry_mixed": "Karışık", "iot_dry_playsuits": "Oyun elbiseleri", "iot_dry_rapid_30": "Rapid 30", - "iot_dry_rapid_59": "H\u0131zl\u0131 59'.", + "iot_dry_rapid_59": "Hızlı 59'.", "iot_dry_refresh": "Yenileme", - "iot_dry_regenerates_waterproof": "Su ge\u00e7irmezli\u011fi art\u0131rmak", - "iot_dry_relax_creases": "K\u0131r\u0131\u015f\u0131kl\u0131k A\u00e7ma", - "iot_dry_shirts": "G\u00f6mlek", - "iot_dry_small_load": "Az \u00c7ama\u015f\u0131r", + "iot_dry_regenerates_waterproof": "Su geçirmezliği artırmak", + "iot_dry_relax_creases": "Kırışıklık Açma", + "iot_dry_shirts": "Gömlek", + "iot_dry_small_load": "Az Çamaşır", "iot_dry_swimsuits_and_bikinis": "Mayolar", "iot_dry_synthetics": "Sentetik", "iot_dry_synthetic_dry": "Sentetik Kurutma", - "iot_dry_tablecloths": "Masa \u00f6rt\u00fcleri", - "iot_dry_technical_fabrics": "Teknik Kuma\u015flar", - "iot_dry_warm_embrace": "S\u0131cak Hava", - "iot_dry_wool": "Saf y\u00fcn markas\u0131", + "iot_dry_tablecloths": "Masa örtüleri", + "iot_dry_technical_fabrics": "Teknik Kumaşlar", + "iot_dry_warm_embrace": "Sıcak Hava", + "iot_dry_wool": "Saf yün markası", "jeans": "Kot", - "mix_and_dry": "Kar\u0131\u015f\u0131k ve Kuru", + "mix_and_dry": "Karışık ve Kuru", "pets": "Evcil hayvanlar", - "pre_iron": "\u00d6n \u00dct\u00fcleme", + "pre_iron": "Ön Ütüleme", "rapid_30": "Rapid 30", - "rapid_45": "45 dak. h\u0131zl\u0131", - "rapid_59": "M\u00fckemmel H\u0131zl\u0131 59 dk", + "rapid_45": "45 dak. hızlı", + "rapid_59": "Mükemmel Hızlı 59 dk", "refresh": "Yenileme", - "relax_creases": "K\u0131r\u0131\u015f\u0131kl\u0131k A\u00e7ma", + "relax_creases": "Kırışıklık Açma", "saving_30_min": "EKO 30'", - "shirts": "G\u00f6mlekler", - "shoes": "Ayakkab\u0131lar", - "small_load": "Az \u00c7ama\u015f\u0131r", - "soft_care": "Yumu\u015fak Bak\u0131m", + "shirts": "Gömlekler", + "shoes": "Ayakkabılar", + "small_load": "Az Çamaşır", + "soft_care": "Yumuşak Bakım", "sport_plus": "Spor+", - "super_easy_iron_misti": "S\u00fcper Kolay \u00dct\u00fc kar\u0131\u015f\u0131k", - "super_easy_iron_xxl": "S\u00fcper Kolay \u00dct\u00fc XXL", - "super_fast_cottons": "S\u00fcper H\u0131zl\u0131 Pamuklu", - "super_fast_delicates": "S\u00fcper H\u0131zl\u0131 Hassas", + "super_easy_iron_misti": "Süper Kolay Ütü karışık", + "super_easy_iron_xxl": "Süper Kolay Ütü XXL", + "super_fast_cottons": "Süper Hızlı Pamuklu", + "super_fast_delicates": "Süper Hızlı Hassas", "synthetics": "Sentetik", "total_care": "Total Care", - "trainers": "Spor Ayakkab\u0131lar\u0131", + "trainers": "Spor Ayakkabıları", "ultra_care": "Ultra Care", - "waterproof_revitalize": "Su Ge\u00e7irmez Canland\u0131rma", + "waterproof_revitalize": "Su Geçirmez Canlandırma", "whites": "Beyazlar", - "wool": "Y\u00fcnl\u00fcleri Kurutma", - "woolmark": "Saf y\u00fcn markas\u0131", - "xxl_load": "XXL \u00c7ama\u015f\u0131r", - "zoom_59": "Yak\u0131nla\u015ft\u0131r 59" + "wool": "Yünlüleri Kurutma", + "woolmark": "Saf yün markası", + "xxl_load": "XXL Çamaşır", + "zoom_59": "Yakınlaştır 59" }, "name": "Program" }, "programs_wm": { "state": { - "20_degrees_coloured_cottons": "20\u00b0 Renkli ve Pamuklular", - "20_degrees_new_energy_label": "20\u00b0C", + "20_degrees_coloured_cottons": "20° Renkli ve Pamuklular", + "20_degrees_new_energy_label": "20°C", "active_steam": "Buhar", - "active_wash": "Aktif Y\u0131kama", - "active_wash_steam": "Aktif Y\u0131kama", - "allergy_care": "Alerji Bak\u0131m\u0131", + "active_wash": "Aktif Yıkama", + "active_wash_steam": "Aktif Yıkama", + "allergy_care": "Alerji Bakımı", "allergy_care_pro": "Anti-Alerji Pro", "all_in_one_49": "Hepsi bir Arada 49'.", "all_in_one_59": "Hepsi bir Arada 59'.", - "all_in_one_59_steam": "Aktif Y\u0131kama + Buhar", - "autocare": "Otomatik bak\u0131m", - "autoclean": "Tambur temizli\u011fi", - "baby_60": "Bebek K\u0131yafetleri 60\u00b0C", + "all_in_one_59_steam": "Aktif Yıkama + Buhar", + "autocare": "Otomatik bakım", + "autoclean": "Tambur temizliği", + "baby_60": "Bebek Kıyafetleri 60°C", "care_14": "Hizli 14'", "care_30": "Hizli 30'", "care_44": "Hizli 44'", @@ -512,146 +511,146 @@ "colour_59": "Renkli 59'", "colour_59_steam": "Renkliler 59' + Buhar", "cottons": "Pamuklular", - "cottons_prewash": "Pamuklular + \u00d6n Y\u0131kama", + "cottons_prewash": "Pamuklular + Ön Yıkama", "cottons_steam": "Pamuklular + Buhar", "cotton_care_59": "Pamuklular 59 dk", "delicate_59": "Narin 59'", - "delicate_silk": "Hassas \u0130pek", - "delicate_silk_steam": "Hassas \u0130pek + Buhar", + "delicate_silk": "Hassas İpek", + "delicate_silk_steam": "Hassas İpek + Buhar", "delicati_59": "Narin 59'", "delicati_59_steam": "Narin 59'", - "drain_spin": "Bo\u015faltma +ve S\u0131kma", - "easy_iron": "Kolay \u00dct\u00fcleme", + "drain_spin": "Boşaltma +ve Sıkma", + "easy_iron": "Kolay Ütüleme", "eco_40_60_new_energy_label": "Eco 40-60", "extra_care": "Karisik Kirliler", "fitness": "Az Kirli Spor", "fitness_care": "Az Kirli Spor", - "fresh_care": "Yenileme Bak\u0131m\u0131", + "fresh_care": "Yenileme Bakımı", "fresh_care_steam": "Fresh Care + Buhar", - "handwash_wool": "Elde Y\u0131kama ve Y\u00fcnl\u00fcler", + "handwash_wool": "Elde Yıkama ve Yünlüler", "high_dry": "Pamuklular kurutma", - "hqd_20_degrees": "Pamuklu 20\u2103", - "hqd_allergy": "Alerji Bak\u0131m\u0131", - "hqd_autoclean": "Tambur temizli\u011fi", - "hqd_babycare": "Bebek Bak\u0131m", + "hqd_20_degrees": "Pamuklu 20℃", + "hqd_allergy": "Alerji Bakımı", + "hqd_autoclean": "Tambur temizliği", + "hqd_babycare": "Bebek Bakım", "hqd_checkup": "Check-Up", "hqd_cottons": "Pamuklular", - "hqd_delicate": "Narin \u00c7ama\u015f\u0131rlar", - "hqd_delicate_cradle": "Narin \u00c7ama\u015f\u0131rlar", + "hqd_delicate": "Narin Çamaşırlar", + "hqd_delicate_cradle": "Narin Çamaşırlar", "hqd_dry": "Pamuklular kurutma", - "hqd_dry_synthetics": "Kar\u0131\u015f\u0131k kurutma", + "hqd_dry_synthetics": "Karışık kurutma", "hqd_duvet": "Yorgan", "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_handwash_wool": "Y\u00fcnl\u00fcler", + "hqd_handwash_wool": "Yünlüler", "hqd_i_refresh": "i-Refresh", - "hqd_mix": "Kar\u0131\u015f\u0131k", - "hqd_quick_15": "H\u0131zl\u0131 15'", - "hqd_quick_wash_57": "H\u0131zl\u0131 Y\u0131kama 57 dak", - "hqd_rapid_wash_and_dry": "Y\u0131kama ve kurutma", + "hqd_mix": "Karışık", + "hqd_quick_15": "Hızlı 15'", + "hqd_quick_wash_57": "Hızlı Yıkama 57 dak", + "hqd_rapid_wash_and_dry": "Yıkama ve kurutma", "hqd_refresh": "Yenileme", "hqd_rinse": "Durulama", - "hqd_shirts": "G\u00f6mlekler", + "hqd_shirts": "Gömlekler", "hqd_smart": "Smart A.I.", - "hqd_spin": "S\u0131kma", + "hqd_spin": "Sıkma", "hqd_sport": "Spor", - "hqd_super_fast": "H\u0131zl\u0131 39\u2019", + "hqd_super_fast": "Hızlı 39’", "hqd_synthetic_and_coloured": "Sentetikler", "hygiene_59": "Hijyen 59'", - "hygiene_60": "Hijyen 60\u00b0", + "hygiene_60": "Hijyen 60°", "hygiene_plus_59": "Hijyen 59'", "hygiene_plus_59_min": "Hijyen 59'", "hygiene_pro_49_min": "Hygiene Pro 49 min", "hygiene_pro_steam": "Hygiene Pro + Buhar", - "intensive_40": "Yo\u011fun 40\u00b0C", - "intensive_40_steam": "Yo\u011fun 40\u00b0C + Buhar", + "intensive_40": "Yoğun 40°C", + "intensive_40_steam": "Yoğun 40°C + Buhar", "iot_active_steam": "Buhar", - "iot_active_wash_steam": "Aktif Y\u0131kama", + "iot_active_wash_steam": "Aktif Yıkama", "iot_allergy_care_pro": "Anti-Alerji Pro", - "iot_all_in_one_59_steam": "Aktif Y\u0131kama + Buhar", + "iot_all_in_one_59_steam": "Aktif Yıkama + Buhar", "iot_checkup": "Check-up", "iot_colour_59_steam": "Renkliler 59' + Buhar", "iot_cottons_steam": "Pamuklular + Buhar", - "iot_delicate_silk_steam": "Hassas \u0130pek + Buhar", + "iot_delicate_silk_steam": "Hassas İpek + Buhar", "iot_delicati_59_steam": "Narin 59'", "iot_dry_air_refresh": "Hava Yenileme", - "iot_dry_anti_mites": "Akar \u00f6nleyici", + "iot_dry_anti_mites": "Akar önleyici", "iot_dry_baby": "Bebek", - "iot_dry_backpacks": "S\u0131rt \u00e7antalar\u0131", - "iot_dry_bathrobe": "Bornoz ve g\u00f6zenekli kuma\u015flar", - "iot_dry_bed_linen": "\u00c7ar\u015faflar", + "iot_dry_backpacks": "Sırt çantaları", + "iot_dry_bathrobe": "Bornoz ve gözenekli kumaşlar", + "iot_dry_bed_linen": "Çarşaflar", "iot_dry_cotton_dry": "Pamuklular kurutma", - "iot_dry_cuddly_toys": "Pel\u00fc\u015f hayvanlar", + "iot_dry_cuddly_toys": "Pelüş hayvanlar", "iot_dry_curtains": "Perdeler", "iot_dry_dehumidifier": "Nem giderici", "iot_dry_delicates_antiallergy": "Narinler - anti-alerji", - "iot_dry_delicate_tablecloths": "Narin masa \u00f6rt\u00fcleri", + "iot_dry_delicate_tablecloths": "Narin masa örtüleri", "iot_dry_denim_jeans": "Denim - Kot Pantolon", - "iot_dry_easy_iron_cotton": "Kolay \u00dct\u00fc - Pamuklular", - "iot_dry_easy_iron_synthetics": "Kolay \u00dct\u00fc - Sentetikler", - "iot_dry_gym_fit": "Fitness - spor k\u0131yafetleri", - "iot_dry_lingerie": "\u0130\u00e7 \u00e7ama\u015f\u0131rlar\u0131", - "iot_dry_mixed_dry": "Kar\u0131\u015f\u0131k kurutma", - "iot_dry_rapid_60_min_delicates": "H\u0131zl\u0131 60' - Narinler", - "iot_dry_shirts": "G\u00f6mlekler", + "iot_dry_easy_iron_cotton": "Kolay Ütü - Pamuklular", + "iot_dry_easy_iron_synthetics": "Kolay Ütü - Sentetikler", + "iot_dry_gym_fit": "Fitness - spor kıyafetleri", + "iot_dry_lingerie": "İç çamaşırları", + "iot_dry_mixed_dry": "Karışık kurutma", + "iot_dry_rapid_60_min_delicates": "Hızlı 60' - Narinler", + "iot_dry_shirts": "Gömlekler", "iot_dry_swimsuits_and_bikinis": "Mayolar", "iot_dry_synthetics": "Sentetik Kurutma", "iot_dry_synthetic_dry": "Sentetik Kurutma", - "iot_dry_tablecloths": "Masa \u00f6rt\u00fcleri", - "iot_dry_technical_fabrics": "Teknik kuma\u015flar", - "iot_dry_warm_embrace": "Il\u0131k d\u00f6nd\u00fcrme", - "iot_dry_wool_dry": "Y\u00fcnl\u00fc kurutma", - "iot_easy_iron": "Kolay \u00dct\u00fcleme", + "iot_dry_tablecloths": "Masa örtüleri", + "iot_dry_technical_fabrics": "Teknik kumaşlar", + "iot_dry_warm_embrace": "Ilık döndürme", + "iot_dry_wool_dry": "Yünlü kurutma", + "iot_easy_iron": "Kolay Ütüleme", "iot_fresh_care_steam": "Fresh Care + Buhar", "iot_hygiene_pro_steam": "Hygiene Pro + Buhar", - "iot_intensive_40_steam": "Yo\u011fun 40\u00b0C + Buhar", - "iot_mixed_steam": "Kar\u0131\u015f\u0131k + Buhar", - "iot_mix_and_colour_59_steam": "Kar\u0131\u015f\u0131k ve Renkliler 59' + Buhar", + "iot_intensive_40_steam": "Yoğun 40°C + Buhar", + "iot_mixed_steam": "Karışık + Buhar", + "iot_mix_and_colour_59_steam": "Karışık ve Renkliler 59' + Buhar", "iot_perfect_cotton_59_steam": "Kirli Pamuklular 59'", - "iot_rapid_a_class_60_steam": "H\u0131zl\u0131 A S\u0131n\u0131f\u0131 60 + Buhar", + "iot_rapid_a_class_60_steam": "Hızlı A Sınıfı 60 + Buhar", "iot_resistant_cotton_steam": "Pamuklular + Buhar", - "iot_shirts_steam": "G\u00f6mlek + Buhar", - "iot_single_item_steam": "Tek \u00c7ama\u015f\u0131r + Buhar", - "iot_smart_wash": "Ak\u0131ll\u0131 Y\u0131kama", + "iot_shirts_steam": "Gömlek + Buhar", + "iot_single_item_steam": "Tek Çamaşır + Buhar", + "iot_smart_wash": "Akıllı Yıkama", "iot_soft_care_steam": "Soft Care + Steam", - "iot_special_39_full_load_steam": "\u00d6zel program 39' + Buhar", - "iot_steam_hygiene_plus": "Hijyen Art\u0131 Buhar ", + "iot_special_39_full_load_steam": "Özel program 39' + Buhar", + "iot_steam_hygiene_plus": "Hijyen Artı Buhar ", "iot_synthetic_and_coloured_steam": "Sentetikler ve Renkliler + Buhar", - "iot_wash_and_dry": "Y\u0131kama ve kurutma", - "iot_wash_anti_mites": "Akar \u00f6nleyici", + "iot_wash_and_dry": "Yıkama ve kurutma", + "iot_wash_anti_mites": "Akar önleyici", "iot_wash_anti_odor": "Koku giderici", "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", "iot_wash_baby_sanitizer": "Dezenfektan", - "iot_wash_baby_sanitizer_steam": "Bebek Dezenfektan\u0131 + Buhar", - "iot_wash_backpacks": "S\u0131rt \u00e7antalar\u0131", - "iot_wash_backpacks_zelig": "S\u0131rt \u00c7antalar\u0131", + "iot_wash_baby_sanitizer_steam": "Bebek Dezenfektanı + Buhar", + "iot_wash_backpacks": "Sırt çantaları", + "iot_wash_backpacks_zelig": "Sırt Çantaları", "iot_wash_bathrobe": "Bornoz ve havlular", "iot_wash_bathrobe_steam": "Bornoz + Buhar", - "iot_wash_bed_linen": "\u00c7ar\u015faflar", - "iot_wash_bed_linen_steam": "\u00c7ar\u015faflar + Buhar", - "iot_wash_bed_linen_zelig": "\u00c7ar\u015faflar", - "iot_wash_big_single_load": "B\u00fcy\u00fck tek y\u00fck", + "iot_wash_bed_linen": "Çarşaflar", + "iot_wash_bed_linen_steam": "Çarşaflar + Buhar", + "iot_wash_bed_linen_zelig": "Çarşaflar", + "iot_wash_big_single_load": "Büyük tek yük", "iot_wash_bleaching": "Beyazlatma", "iot_wash_blood_stains": "Kan lekeleri", - "iot_wash_cashmere": "Ka\u015fmir", - "iot_wash_chocolate_stains": "\u00c7ikolata lekeleri", - "iot_wash_cold_wash": "So\u011fuk Y\u0131kama", + "iot_wash_cashmere": "Kaşmir", + "iot_wash_chocolate_stains": "Çikolata lekeleri", + "iot_wash_cold_wash": "Soğuk Yıkama", "iot_wash_colored": "Renkli", - "iot_wash_colored_anti_stain": "Renkliler i\u00e7in leke \u00e7\u0131karma", + "iot_wash_colored_anti_stain": "Renkliler için leke çıkarma", "iot_wash_colored_delicate": "Renkli hassas", "iot_wash_coloured": "Renkliler", "iot_wash_coloured_bed_linen": "Renkli Nevresim", "iot_wash_coloured_bed_linen_steam": "Renkli Nevresim + Buhar", "iot_wash_coloured_curtains": "Renkli Perdeler", - "iot_wash_coloured_shirts": "Renkli G\u00f6mlekler", - "iot_wash_coloured_shirts_steam": "Renkli G\u00f6mlekler + Buhar", + "iot_wash_coloured_shirts": "Renkli Gömlekler", + "iot_wash_coloured_shirts_steam": "Renkli Gömlekler + Buhar", "iot_wash_coloured_steam": "Renkliler + Buhar", - "iot_wash_coloured_tableclothes": "Renkli Masa \u00d6rt\u00fcs\u00fc", - "iot_wash_coloured_tableclothes_steam": "Renkli Masa \u00d6rt\u00fcs\u00fc + Buhar", + "iot_wash_coloured_tableclothes": "Renkli Masa Örtüsü", + "iot_wash_coloured_tableclothes_steam": "Renkli Masa Örtüsü + Buhar", "iot_wash_cotton": "Pamuklular", "iot_wash_cotton_steam": "Pamuklular + Buhar", - "iot_wash_cuddly_toys": "Pel\u00fc\u015f hayvanlar", + "iot_wash_cuddly_toys": "Pelüş hayvanlar", "iot_wash_curtains": "Perdeler", "iot_wash_curtains_steam": "Perdeler+Buhar", "iot_wash_curtains_zelig": "Perdeler", @@ -663,170 +662,170 @@ "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", "iot_wash_dash_cold_cycle": "Dash Cold Clean", "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", - "iot_wash_delicate": "Narin \u00c7ama\u015f\u0131rlar", - "iot_wash_delicate_antiallergy": "Narin \u00e7ama\u015f\u0131rlar i\u00e7in anti-alerji", - "iot_wash_delicate_antiallergy_steam": "Narin \u00e7ama\u015f\u0131rlar i\u00e7in anti-alerji + Buhar", - "iot_wash_delicate_antiallergy_zelig": "Narin \u00e7ama\u015f\u0131rlar i\u00e7in anti-alerji", - "iot_wash_delicate_colors": "Renkli narin \u00e7ama\u015f\u0131rlar", + "iot_wash_delicate": "Narin Çamaşırlar", + "iot_wash_delicate_antiallergy": "Narin çamaşırlar için anti-alerji", + "iot_wash_delicate_antiallergy_steam": "Narin çamaşırlar için anti-alerji + Buhar", + "iot_wash_delicate_antiallergy_zelig": "Narin çamaşırlar için anti-alerji", + "iot_wash_delicate_colors": "Renkli narin çamaşırlar", "iot_wash_delicate_colors_steam": "Renkliler + Buhar", "iot_wash_delicate_dark": "Hassas koyu", - "iot_wash_delicate_steam": "Narin \u00c7ama\u015f\u0131rlar + Buhar", - "iot_wash_delicate_tablecloths": "Narin masa \u00f6rt\u00fcleri", - "iot_wash_delicate_tablecloths_steam": "Narin masa \u00f6rt\u00fcleri + Buhar", + "iot_wash_delicate_steam": "Narin Çamaşırlar + Buhar", + "iot_wash_delicate_tablecloths": "Narin masa örtüleri", + "iot_wash_delicate_tablecloths_steam": "Narin masa örtüleri + Buhar", "iot_wash_delicate_whites": "Hassas beyazlar", "iot_wash_denim_jeans": "Denim - kot pantolon", - "iot_wash_diving_suits": "Dalg\u0131\u00e7 elbiseleri", - "iot_wash_diving_suits_zelig": "Dalg\u0131\u00e7 elbiseleri", - "iot_wash_down_jackets": "\u015ei\u015fme montlar", - "iot_wash_down_jackets_zelig": "\u015ei\u015fme montlar", + "iot_wash_diving_suits": "Dalgıç elbiseleri", + "iot_wash_diving_suits_zelig": "Dalgıç elbiseleri", + "iot_wash_down_jackets": "Şişme montlar", + "iot_wash_down_jackets_zelig": "Şişme montlar", "iot_wash_duvet": "Yorgan", "iot_wash_fruit_stains": "Meyve lekeleri", - "iot_wash_gym_fit": "Fitness - spor k\u0131yafetleri", - "iot_wash_handwash": "Elde y\u0131kama", - "iot_wash_handwash_colored": "Elde y\u0131kama renkli", - "iot_wash_handwash_dark": "Elde y\u0131kama koyu renkli", - "iot_wash_lingerie": "\u0130\u00e7 \u00e7ama\u015f\u0131rlar\u0131", + "iot_wash_gym_fit": "Fitness - spor kıyafetleri", + "iot_wash_handwash": "Elde yıkama", + "iot_wash_handwash_colored": "Elde yıkama renkli", + "iot_wash_handwash_dark": "Elde yıkama koyu renkli", + "iot_wash_lingerie": "İç çamaşırları", "iot_wash_masks_refresh": "Maskeleri Yenileme", "iot_wash_masks_sanification": "Maske Sterilize Etme", "iot_wash_masks_sanification_steam": "Maske Sterilize Etme + Buhar", - "iot_wash_mats": "Hal\u0131lar", - "iot_wash_men_s_trousers": "Pantolonlar\u0131", - "iot_wash_mixed": "Kar\u0131\u015f\u0131k", - "iot_wash_mixed_steam": "Kar\u0131\u015f\u0131k + Buhar", - "iot_wash_mix_and_coloured_44": "Kar\u0131\u015f\u0131k ve renkli 44'", - "iot_wash_mix_and_coloured_59": "Kar\u0131\u015f\u0131k ve renkli 59'", - "iot_wash_mix_and_coloured_xl": "Kar\u0131\u015f\u0131k ve renkli XL", - "iot_wash_new_clothes": "Yeni k\u0131yafetler", + "iot_wash_mats": "Halılar", + "iot_wash_men_s_trousers": "Pantolonları", + "iot_wash_mixed": "Karışık", + "iot_wash_mixed_steam": "Karışık + Buhar", + "iot_wash_mix_and_coloured_44": "Karışık ve renkli 44'", + "iot_wash_mix_and_coloured_59": "Karışık ve renkli 59'", + "iot_wash_mix_and_coloured_xl": "Karışık ve renkli XL", + "iot_wash_new_clothes": "Yeni kıyafetler", "iot_wash_perfect_white": "Kusursuz beyazlar", "iot_wash_perfect_white_steam": "Kusursuz beyazlar + Buhar", - "iot_wash_pets": "Evcil hayvan aksesuarlar\u0131", - "iot_wash_pets_hair_removal": "Evcil Hayvan T\u00fcy\u00fc Temizleme", - "iot_wash_pets_odours_stains_removal": "Evcil Hayvan Kokular\u0131n\u0131 ve Lekelerini Giderme", - "iot_wash_pets_steam": "Evcil hayvan aksesuarlar\u0131", + "iot_wash_pets": "Evcil hayvan aksesuarları", + "iot_wash_pets_hair_removal": "Evcil Hayvan Tüyü Temizleme", + "iot_wash_pets_odours_stains_removal": "Evcil Hayvan Kokularını ve Lekelerini Giderme", + "iot_wash_pets_steam": "Evcil hayvan aksesuarları", "iot_wash_playsuits": "Oyun elbiseleri", "iot_wash_playsuits_steam": "Oyun elbiseleri + Buhar", - "iot_wash_quick_drum_cleaner": "H\u0131zl\u0131 tamburlu temizleyici", - "iot_wash_rapid_14": "H\u0131zl\u0131 14\u2019", - "iot_wash_rapid_30": "H\u0131zl\u0131 30\u2019", - "iot_wash_rapid_44": "H\u0131zl\u0131 44'", - "iot_wash_rapid_59": "H\u0131zl\u0131 59'", - "iot_wash_rapid_59_steam": "H\u0131zl\u0131 59' + Buhar", + "iot_wash_quick_drum_cleaner": "Hızlı tamburlu temizleyici", + "iot_wash_rapid_14": "Hızlı 14’", + "iot_wash_rapid_30": "Hızlı 30’", + "iot_wash_rapid_44": "Hızlı 44'", + "iot_wash_rapid_59": "Hızlı 59'", + "iot_wash_rapid_59_steam": "Hızlı 59' + Buhar", "iot_wash_refresh_14_min": "Yenileme 14'", - "iot_wash_resistant_colored": "Dayan\u0131kl\u0131 renkli", - "iot_wash_resistant_dark": "Dayan\u0131kl\u0131 koyu renkli", - "iot_wash_resistant_whites": "Dayan\u0131kl\u0131 beyazlar", + "iot_wash_resistant_colored": "Dayanıklı renkli", + "iot_wash_resistant_dark": "Dayanıklı koyu renkli", + "iot_wash_resistant_whites": "Dayanıklı beyazlar", "iot_wash_rinse": "Durulama", - "iot_wash_shirts": "G\u00f6mlekler", - "iot_wash_shirts_steam": "G\u00f6mlekler + Buhar", - "iot_wash_silk": "\u0130pek", + "iot_wash_shirts": "Gömlekler", + "iot_wash_shirts_steam": "Gömlekler + Buhar", + "iot_wash_silk": "İpek", "iot_wash_ski_suit": "Kayak giysileri", "iot_wash_ski_suit_zelig": "Kayak giysileri", - "iot_wash_spin": "S\u0131kma", + "iot_wash_spin": "Sıkma", "iot_wash_sport": "Spor", - "iot_wash_sport_anti_odor": "Koku \u00d6nleyici Spor Giyim", - "iot_wash_sport_anti_odor_zelig": "Koku \u00d6nleyici Spor Giyim", - "iot_wash_stains_remover": "Leke \u00e7\u0131kar\u0131c\u0131", + "iot_wash_sport_anti_odor": "Koku Önleyici Spor Giyim", + "iot_wash_sport_anti_odor_zelig": "Koku Önleyici Spor Giyim", + "iot_wash_stains_remover": "Leke çıkarıcı", "iot_wash_swimsuits_and_bikinis": "Mayolar", "iot_wash_synthetic": "Sentetikler", "iot_wash_synthetic_steam": "Sentetikler + Buhar", - "iot_wash_tablecloths": "Masa \u00f6rt\u00fcleri", - "iot_wash_tablecloths_steam": "Masa \u00f6rt\u00fcleri + Buhar", - "iot_wash_technical_fabrics": "Teknik kuma\u015flar", - "iot_wash_technical_fabrics_zelig": "Teknik kuma\u015flar", + "iot_wash_tablecloths": "Masa örtüleri", + "iot_wash_tablecloths_steam": "Masa örtüleri + Buhar", + "iot_wash_technical_fabrics": "Teknik kumaşlar", + "iot_wash_technical_fabrics_zelig": "Teknik kumaşlar", "iot_wash_technical_jackets": "Teknik ceketler", "iot_wash_technical_jackets_zelig": "Teknik ceketler", - "iot_wash_trainers": "Spor ayakkab\u0131lar\u0131", + "iot_wash_trainers": "Spor ayakkabıları", "iot_wash_whites": "Beyazlar", "iot_wash_whites_44": "Beyazlar 44'", "iot_wash_whites_59": "Beyazlar 59'", "iot_wash_whites_xl": "Beyazlar XL", - "iot_wash_wine_stains": "\u015earap lekeleri", - "iot_wash_wool": "Y\u00fcnl\u00fcler", + "iot_wash_wine_stains": "Şarap lekeleri", + "iot_wash_wool": "Yünlüler", "jeans": "Kot pantolon", "jeans_60": "Kot", - "low_dry": "Kar\u0131\u015f\u0131k kurutma", - "mixed": "Kar\u0131\u015f\u0131k", - "mixed_and_colored_59": "Kar\u0131\u015f\u0131k ve Renkliler 59'", - "mixed_steam": "Kar\u0131\u015f\u0131k + Buhar", + "low_dry": "Karışık kurutma", + "mixed": "Karışık", + "mixed_and_colored_59": "Karışık ve Renkliler 59'", + "mixed_steam": "Karışık + Buhar", "mix_and_colour_59": "Karisik Renkliler 59'", - "mix_and_colour_59_steam": "Kar\u0131\u015f\u0131k ve Renkliler 59' + Buhar", - "night_and_day": "Gece ve G\u00fcnd\u00fcz", - "night_wash": "Gece Program\u0131", + "mix_and_colour_59_steam": "Karışık ve Renkliler 59' + Buhar", + "night_and_day": "Gece ve Gündüz", + "night_wash": "Gece Programı", "perfect_59": "Kusursuz 59'", "perfect_cotton_59": "Kirli Pamuklular 59'", "perfect_cotton_59_steam": "Kirli Pamuklular 59'", - "perfect_whites_59": "M\u00fckemmel beyazl\u0131k 59'", - "rapid_14_min": "H\u0131zl\u0131 14 Dk", - "rapid_30_min": "H\u0131zl\u0131 30 dk", - "rapid_44_min": "H\u0131zl\u0131 44 dk", - "rapid_a_class_60": "H\u0131zl\u0131 S\u0131n\u0131f A 60", - "rapid_a_class_60_steam": "H\u0131zl\u0131 A S\u0131n\u0131f\u0131 60 + Buhar", - "rapid_wash_and_dry_59_min": "Y\u0131kama ve Kurutma 59'.", + "perfect_whites_59": "Mükemmel beyazlık 59'", + "rapid_14_min": "Hızlı 14 Dk", + "rapid_30_min": "Hızlı 30 dk", + "rapid_44_min": "Hızlı 44 dk", + "rapid_a_class_60": "Hızlı Sınıf A 60", + "rapid_a_class_60_steam": "Hızlı A Sınıfı 60 + Buhar", + "rapid_wash_and_dry_59_min": "Yıkama ve Kurutma 59'.", "resistant_cotton": "Pamuklular", "resistant_cotton_steam": "Pamuklular + Buhar", "rinse": "Durulama", - "shirts_steam": "G\u00f6mlek + Buhar", - "silent_night": "Gece Program\u0131", - "single_item": "Tek \u00c7ama\u015f\u0131r", - "single_item_steam": "Tek \u00c7ama\u015f\u0131r + Buhar", - "smart_wash": "Ak\u0131ll\u0131 Y\u0131kama", - "soft_care": "Yumu\u015fak Bak\u0131m", + "shirts_steam": "Gömlek + Buhar", + "silent_night": "Gece Programı", + "single_item": "Tek Çamaşır", + "single_item_steam": "Tek Çamaşır + Buhar", + "smart_wash": "Akıllı Yıkama", + "soft_care": "Yumuşak Bakım", "soft_care_steam": "Soft Care + Steam", "soft_care_steam_title": "Soft Care + Steam", "special_39": "Gunluk Yikama 39'", "special_39_full_load": "Gunluk Yikama 39'", - "special_39_full_load_steam": "\u00d6zel program 39' + Buhar", - "special_49": "\u00d6zel 49'", + "special_39_full_load_steam": "Özel program 39' + Buhar", + "special_49": "Özel 49'", "sport_39": "Spor 39'", "sport_plus_29": "Cok Kirli Spor 29\"", "sport_plus_39": "Col kirli spor 39'", "steam_39": "Buhar 39'", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - Pamuklular", - "steam_care_pro_delicates": "Steam Care Pro - Narin \u00e7ama\u015f\u0131rlar", + "steam_care_pro_delicates": "Steam Care Pro - Narin çamaşırlar", "steam_care_pro_synthetic": "Steam Care Pro - Sentetikler", - "steam_hygiene_plus": "Hijyen Art\u0131 Buhar ", + "steam_hygiene_plus": "Hijyen Artı Buhar ", "synthetics": "Sentetikler", "synthetic_and_coloured": "Sentetikler ve Renkliler", "synthetic_and_coloured_steam": "Sentetikler ve Renkliler + Buhar", "tailored_resistant_cotton": "Tailored Resistant Cotton", "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", - "total_care": "Toplam Bak\u0131m", - "tumbling": "D\u00f6nd\u00fcrme", - "wool": "Y\u00fcnl\u00fcler", - "wool_and_delicates_49": "Y\u00fcnl\u00fc/Hassas 49'", - "wool_dry": "Y\u00fcnl\u00fc kurutma", - "wool_soft_care": "Y\u00fcnl\u00fc & Hassas" + "total_care": "Toplam Bakım", + "tumbling": "Döndürme", + "wool": "Yünlüler", + "wool_and_delicates_49": "Yünlü/Hassas 49'", + "wool_dry": "Yünlü kurutma", + "wool_soft_care": "Yünlü & Hassas" }, "name": "Program" }, "dry_levels": { "state": { "0": "Kurutma yok", - "1": "\u00dct\u00fc", - "2": "Gard\u0131rop haz\u0131r", - "3": "Gard\u0131rop haz\u0131r", + "1": "Ütü", + "2": "Gardırop hazır", + "3": "Gardırop hazır", "4": "Ekstra kurutma", - "12": "\u00dct\u00fc", - "13": "Gard\u0131rop haz\u0131r", - "14": "Giyilmeye haz\u0131r", + "12": "Ütü", + "13": "Gardırop hazır", + "14": "Giyilmeye hazır", "15": "Ekstra kurutma" }, "name": "Kurutma seviyesi" }, "spin_speed": { - "name": "S\u0131kma" + "name": "Sıkma" }, "temperature": { - "name": "S\u0131cakl\u0131k" + "name": "Sıcaklık" }, "dry_time": { - "name": "Kurutma zaman\u0131" + "name": "Kurutma zamanı" } }, "switch": { "anti_crease": { - "name": "K\u0131r\u0131\u015f\u0131k a\u00e7ma" + "name": "Kırışık açma" }, "add_dish": { "name": "" @@ -838,31 +837,31 @@ "name": "Ekstra kurutma" }, "half_load": { - "name": "Yar\u0131m y\u00fck" + "name": "Yarım yük" }, "open_door": { - "name": "Kap\u0131y\u0131 a\u00e7" + "name": "Kapıyı aç" }, "three_in_one": { - "name": "3\u2019\u00fc 1 arada" + "name": "3’ü 1 arada" }, "preheat": { - "name": "\u00d6n \u0131s\u0131tma yap" + "name": "Ön ısıtma yap" }, "dish_washer": { - "name": "Bula\u015f\u0131k makinesi" + "name": "Bulaşık makinesi" }, "tumble_dryer": { "name": "Tamburlu kurutucu" }, "washing_machine": { - "name": "\u00c7ama\u015f\u0131r Makinesi" + "name": "Çamaşır Makinesi" }, "washer_dryer": { - "name": "Kurutmal\u0131 \u00e7ama\u015f\u0131r makinesi" + "name": "Kurutmalı çamaşır makinesi" }, "oven": { - "name": "F\u0131r\u0131n" + "name": "Fırın" }, "prewash": { "name": "Pre-wash" @@ -874,7 +873,7 @@ "name": "Keep Fresh" }, "delay_time": { - "name": "Gecikmeli Ba\u015flatma" + "name": "Gecikmeli Başlatma" } }, "binary_sensor": { @@ -891,16 +890,16 @@ "name": "+3 Durulama" }, "good_night": { - "name": "\u0130yi Geceler" + "name": "İyi Geceler" }, "anti_crease": { - "name": "K\u0131r\u0131\u015f\u0131k a\u00e7ma" + "name": "Kırışık açma" }, "aqua_plus": { "name": "Acquaplus" }, "spin_speed": { - "name": "S\u0131kma" + "name": "Sıkma" }, "programs_dw": { "name": "Program" @@ -918,7 +917,7 @@ "name": "Program" }, "still_hot": { - "name": "Hala s\u0131cak" + "name": "Hala sıcak" }, "pan_status": { "name": "Tava" @@ -927,22 +926,22 @@ "name": "Uzaktan kumanda" }, "rinse_aid": { - "name": "Parlat\u0131c\u0131 seviyesi" + "name": "Parlatıcı seviyesi" }, "salt_level": { "name": "Tuz seviyesi" }, "door_open": { - "name": "Kap\u0131 a\u00e7\u0131k" + "name": "Kapı açık" }, "connection": { - "name": "Cihaz ba\u011flant\u0131s\u0131" + "name": "Cihaz bağlantısı" }, "child_lock": { - "name": "\u00c7ocuk Kilidi" + "name": "Çocuk Kilidi" }, "on": { - "name": "A\u00e7\u0131k" + "name": "Açık" }, "prewash": { "name": "Pre-wash" @@ -953,33 +952,33 @@ "name": "Power management" }, "temperature": { - "name": "S\u0131cakl\u0131k" + "name": "Sıcaklık" }, "delay_time": { - "name": "Gecikmeli Ba\u015flatma" + "name": "Gecikmeli Başlatma" }, "water_hard": { - "name": "Su sertli\u011fi" + "name": "Su sertliği" }, "program_duration": { - "name": "Program s\u00fcresi" + "name": "Program süresi" }, "target_temperature": { - "name": "Hedef s\u0131cakl\u0131k" + "name": "Hedef sıcaklık" }, "rinse_iterations": { - "name": "Durulama say\u0131s\u0131" + "name": "Durulama sayısı" }, "wash_time": { - "name": "Y\u0131kama s\u00fcresi" + "name": "Yıkama süresi" }, "dry_time": { - "name": "Kurutma zaman\u0131" + "name": "Kurutma zamanı" } }, "button": { "induction_hob": { - "name": "\u0130nd\u00fcksiyonlu Ocak" + "name": "İndüksiyonlu Ocak" } } } diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index fcfc665..2ff9849 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -3,157 +3,157 @@ "sensor": { "washing_modes": { "state": { - "0": "\u5c31\u7eea", - "1": "\u5c31\u7eea", - "3": "\u6682\u505c", - "4": "\u5df2\u8ba1\u5212", - "5": "\u5df2\u8ba1\u5212", - "6": "\u9519\u8bef", - "7": "\u5c31\u7eea" + "0": "就绪", + "1": "就绪", + "3": "暂停", + "4": "已计划", + "5": "已计划", + "6": "错误", + "7": "就绪" } }, "program_phases_wm": { "state": { - "0": "\u5c31\u7eea", - "1": "\u6d17\u6da4", - "2": "\u6d17\u6da4", - "3": "\u7529\u5e72", - "4": "\u6f02\u6d17", - "5": "\u6f02\u6d17", - "6": "\u6f02\u6d17", - "7": "\u70d8\u5e72", - "9": "\u84b8\u6c7d", - "10": "\u5c31\u7eea", - "11": "\u7529\u5e72", - "12": "\u6b63\u5728\u79f0\u91cd ", - "13": "\u6b63\u5728\u79f0\u91cd ", - "14": "\u6d17\u6da4", - "15": "\u6d17\u6da4", - "16": "\u6d17\u6da4", - "17": "\u6f02\u6d17", - "18": "\u6f02\u6d17", - "19": "\u5df2\u8ba1\u5212", - "20": "\u4fdd\u6301\u6e05\u65b0", - "24": "\u6e05\u65b0", - "25": "\u6d17\u6da4", - "26": "\u52a0\u70ed", - "27": "\u6d17\u6da4" + "0": "就绪", + "1": "洗涤", + "2": "洗涤", + "3": "甩干", + "4": "漂洗", + "5": "漂洗", + "6": "漂洗", + "7": "烘干", + "9": "蒸汽", + "10": "就绪", + "11": "甩干", + "12": "正在称重 ", + "13": "正在称重 ", + "14": "洗涤", + "15": "洗涤", + "16": "洗涤", + "17": "漂洗", + "18": "漂洗", + "19": "已计划", + "20": "保持清新", + "24": "清新", + "25": "洗涤", + "26": "加热", + "27": "洗涤" }, - "name": "\u9636\u6bb5" + "name": "阶段" }, "program_phases_td": { "state": { - "0": "\u5c31\u7eea", - "1": "\u6b63\u5728\u70d8\u5e72", - "2": "\u70d8\u5e72", - "3": "\u51b7\u5374", - "13": "\u51b7\u5374", - "14": "\u6b63\u5728\u70d8\u5e72", - "15": "\u6b63\u5728\u70d8\u5e72", - "16": "\u51b7\u5374", - "18": "\u4fdd\u6301\u6e05\u65b0", - "19": "\u70d8\u5e72", - "20": "\u70d8\u5e72" + "0": "就绪", + "1": "正在烘干", + "2": "烘干", + "3": "冷却", + "13": "冷却", + "14": "正在烘干", + "15": "正在烘干", + "16": "冷却", + "18": "保持清新", + "19": "烘干", + "20": "烘干" }, - "name": "\u9636\u6bb5" + "name": "阶段" }, "program_phases_dw": { "state": { - "0": "\u5c31\u7eea", - "1": "\u9884\u6d17", - "2": "\u6d17\u6da4", - "3": "\u6f02\u6d17", - "4": "\u70d8\u5e72", - "5": "\u5c31\u7eea", + "0": "就绪", + "1": "预洗", + "2": "洗涤", + "3": "漂洗", + "4": "烘干", + "5": "就绪", "6": "Hot rinse" }, - "name": "\u9636\u6bb5" + "name": "阶段" }, "dry_levels": { "state": { - "0": "\u4e0d\u70d8\u5e72", - "1": "\u71a8\u70eb", - "2": "\u8863\u67dc\u5c31\u7eea", - "3": "\u8863\u67dc\u5c31\u7eea", - "4": "\u7279\u5e72", - "12": "\u71a8\u70eb", - "13": "\u8863\u67dc\u5c31\u7eea", - "14": "\u53ef\u7a7f", - "15": "\u7279\u5e72" + "0": "不烘干", + "1": "熨烫", + "2": "衣柜就绪", + "3": "衣柜就绪", + "4": "特干", + "12": "熨烫", + "13": "衣柜就绪", + "14": "可穿", + "15": "特干" }, - "name": "\u70d8\u5e72\u6c34\u5e73" + "name": "烘干水平" }, "anti_crease": { - "name": "\u6297\u76b1" + "name": "抗皱" }, "power": { - "name": "\u529f\u7387\u7ea7" + "name": "功率级" }, "remaining_time": { - "name": "\u5269\u4f59\u65f6\u95f4" + "name": "剩余时间" }, "temperature": { - "name": "\u6e29\u5ea6" + "name": "温度" }, "water_efficiency": { - "name": "\u7528\u6c34\u6548\u7387" + "name": "用水效率" }, "water_saving": { - "name": "\u8282\u6c34" + "name": "节水" }, "duration": { - "name": "\u6301\u7eed\u65f6\u95f4" + "name": "持续时间" }, "target_temperature": { - "name": "\u76ee\u6807\u6e29\u5ea6" + "name": "目标温度" }, "spin_speed": { - "name": "\u7529\u5e72" + "name": "甩干" }, "steam_leve": { - "name": "\u84b8\u6c7d\u6863\u4f4d" + "name": "蒸汽档位" }, "dirt_level": { - "name": "\u810f\u6c61\u7a0b\u5ea6" + "name": "脏污程度" }, "delay_time": { - "name": "\u5ef6\u65f6\u542f\u52a8" + "name": "延时启动" }, "dry_time": { - "name": "\u70d8\u5e72\u65f6\u95f4" + "name": "烘干时间" }, "suggested_load": { - "name": "\u8d1f\u8f7d\u80fd\u529b" + "name": "负载能力" }, "energy_label": { - "name": "\u80fd\u6548" + "name": "能效" }, "det_dust": { - "name": "\u6d17\u8863\u7c89" + "name": "洗衣粉" }, "det_liquid": { - "name": "\u6d17\u8863\u6db2" + "name": "洗衣液" }, "errors": { - "name": "\u9519\u8bef" + "name": "错误" }, "programs": { - "name": "\u5f53\u524d\u7a0b\u5e8f" + "name": "当前程序" }, "cycles_total": { - "name": "\u5faa\u73af \u603b\u8ba1" + "name": "循环 总计" }, "energy_total": { - "name": "\u80fd\u8017 \u603b\u8ba1" + "name": "能耗 总计" }, "water_total": { - "name": "\u7528\u6c34\u6548\u7387 \u603b\u8ba1" + "name": "用水效率 总计" }, "energy_current": { - "name": "\u80fd\u8017 Current" + "name": "能耗 Current" }, "water_current": { - "name": "\u7528\u6c34\u6548\u7387 Current" + "name": "用水效率 Current" } }, "select": { @@ -165,821 +165,820 @@ "auto_plus": "AutoPlus", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "\u81ea\u52a8\u901a\u752850\u2103-60\u2103", - "auto_universal_plus": "\u81ea\u52a8\u901a\u7528+ 65\u2103-75\u2103", - "auto_universal_plus_soil": "\u81ea\u52a8\u901a\u7528+ 65\u2103-75\u2103", - "auto_universal_soil": "\u81ea\u52a8\u901a\u752850\u2103-60\u2103", - "auto_wash": "\u81ea\u52a8\u6d17\u6da4", - "auto_wash_soil": "\u81ea\u52a8\u6d17\u6da4", - "classe_a_59": "A\u7ea71\u5c0f\u65f665\u2103", - "delicate": "\u6613\u788e45\u2103", - "dishwasher_care": "\u6c34\u57a2\u6e05\u6d01\u5faa\u73af", - "eco": "\u8282\u80fd", - "eco_asynch": "\u7ecf\u6d4e45\u2103", - "eco_bldc": "\u7ecf\u6d4e45\u2103", - "eco_synch": "\u7ecf\u6d4e45\u2103", + "auto_universal": "自动通用50℃-60℃", + "auto_universal_plus": "自动通用+ 65℃-75℃", + "auto_universal_plus_soil": "自动通用+ 65℃-75℃", + "auto_universal_soil": "自动通用50℃-60℃", + "auto_wash": "自动洗涤", + "auto_wash_soil": "自动洗涤", + "classe_a_59": "A级1小时65℃", + "delicate": "易碎45℃", + "dishwasher_care": "水垢清洁循环", + "eco": "节能", + "eco_asynch": "经济45℃", + "eco_bldc": "经济45℃", + "eco_synch": "经济45℃", "gentle_wash": "Gentle wash", - "glass": "\u73bb\u7483", - "glassware": "\u73bb\u7483\u5668\u76bf45\u00b0C", + "glass": "玻璃", + "glassware": "玻璃器皿45°C", "glass_care": "Glass Care", - "hygiene": "\u536b\u751f", - "hygiene_plus": "\u6d88\u6bd2\u6d17+75\u00b0C", - "intensive": "\u52a0\u5f3a ", - "intensive_rapid": "\u5f3a\u5316\u5feb\u901f", + "hygiene": "卫生", + "hygiene_plus": "消毒洗+75°C", + "intensive": "加强 ", + "intensive_rapid": "强化快速", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "\u81ea\u52a8\u901a\u752850\u2103-60\u2103", - "iot_auto_wash_soil": "\u81ea\u52a8\u6d17\u6da4", - "iot_baby_care": "\u5a74\u513f\u670d", - "iot_breakfast": "\u65e9\u9910", - "iot_checkup": "\u68c0\u6d4b", - "iot_china_crystals": "\u4e2d\u5f0f\u77f3\u82f1\u5668\u76bf", + "iot_auto_universal_soil": "自动通用50℃-60℃", + "iot_auto_wash_soil": "自动洗涤", + "iot_baby_care": "婴儿服", + "iot_breakfast": "早餐", + "iot_checkup": "检测", + "iot_china_crystals": "中式石英器皿", "iot_classe_a_59": "Rapid 59'", - "iot_cocktail_glasses": "\u9e21\u5c3e\u9152\u676f", - "iot_cocktail_glasses_soil": "\u9e21\u5c3e\u9152\u676f", - "iot_daily_care": "\u65e5\u5e38\u6e05\u6d17", - "iot_daily_care_soil": "\u65e5\u5e38\u6e05\u6d17", - "iot_delicate": "\u6613\u788e45\u2103", - "iot_dinner_for_two": "2\u4eba\u9910", - "iot_dinner_for_two_soil": "2\u4eba\u9910", + "iot_cocktail_glasses": "鸡尾酒杯", + "iot_cocktail_glasses_soil": "鸡尾酒杯", + "iot_daily_care": "日常清洗", + "iot_daily_care_soil": "日常清洗", + "iot_delicate": "易碎45℃", + "iot_dinner_for_two": "2人餐", + "iot_dinner_for_two_soil": "2人餐", "iot_dreft_quick_cycle": "Dreft Quick", - "iot_eco_asynch": "\u7ecf\u6d4e45\u2103", - "iot_eco_bldc": "\u7ecf\u6d4e45\u2103", - "iot_eco_synch": "\u7ecf\u6d4e45\u2103", - "iot_extra_hygiene": "\u989d\u5916\u6d88\u6bd2", + "iot_eco_asynch": "经济45℃", + "iot_eco_bldc": "经济45℃", + "iot_eco_synch": "经济45℃", + "iot_extra_hygiene": "额外消毒", "iot_fairy_quick_cycle": "Fairy Quick", - "iot_happy_hour": "\u5bb6\u5ead\u805a\u4f1a", + "iot_happy_hour": "家庭聚会", "iot_jar_quick_cycle": "Jar Quick", - "iot_party": "\u6d3e\u5bf9\u7528\u9910\u5177", - "iot_party_soil": "\u6d3e\u5bf9\u7528\u9910\u5177", - "iot_pizza_menu": "Pizza\u9910\u5177", - "iot_pizza_menu_soil": "Pizza\u9910\u5177", - "iot_plastic_tupperware": "\u5851\u6599\u9910\u5177", - "iot_porcelain": "\u74f7\u5668", - "iot_power_mix_wash": "\u6df7\u5408\u6d17\u6da4", - "iot_power_mix_wash_soil": "\u6df7\u5408\u6d17\u6da4", - "iot_prewash": "\u9884\u6d17", - "iot_pyrex_and_glassware": "\u73bb\u7483\u5668\u76bf", + "iot_party": "派对用餐具", + "iot_party_soil": "派对用餐具", + "iot_pizza_menu": "Pizza餐具", + "iot_pizza_menu_soil": "Pizza餐具", + "iot_plastic_tupperware": "塑料餐具", + "iot_porcelain": "瓷器", + "iot_power_mix_wash": "混合洗涤", + "iot_power_mix_wash_soil": "混合洗涤", + "iot_prewash": "预洗", + "iot_pyrex_and_glassware": "玻璃器皿", "iot_rapid_29": "Rapid 29'", - "iot_rapid_39": "\u5feb\u901f 39' 60\u00b0C", - "iot_single": "\u5355\u4eba\u9910", - "iot_steam": "\u84b8\u6c7d\u6d1775\u00b0C", - "iot_super_flash": "\u8d85\u5feb\u6d17", - "iot_super_wash": "\u5f3a\u529b\u6d17\u6da4", - "iot_turbopower": "\u6da1\u8f6e\u52a8\u529b", - "iot_universal": "\u901a\u752860\u00b0C", - "iot_wok_grids_maxi_pans": "\u7279\u6b8a\u9505\u7c7b", - "iot_wok_grids_maxi_pans_soil": "\u7279\u6b8a\u9505\u7c7b", + "iot_rapid_39": "快速 39' 60°C", + "iot_single": "单人餐", + "iot_steam": "蒸汽洗75°C", + "iot_super_flash": "超快洗", + "iot_super_wash": "强力洗涤", + "iot_turbopower": "涡轮动力", + "iot_universal": "通用60°C", + "iot_wok_grids_maxi_pans": "特殊锅类", + "iot_wok_grids_maxi_pans_soil": "特殊锅类", "iot_yes_quick_cycle": "Yes Quick", - "night": "\u8d85\u975955\u2103", - "prewash": "\u9884\u6d17", + "night": "超静55℃", + "prewash": "预洗", "rapid_20": "Rapid 20'", "rapid_24": "Rapid 24'", - "rapid_29": "Rapid 29' 50\u00b0C", + "rapid_29": "Rapid 29' 50°C", "rapid_35": "Wash&Dry 35'", - "rapid_39": "\u5feb\u901f 39' 60\u00b0C", + "rapid_39": "快速 39' 60°C", "rapid_49": "Rapid 49'", "rapid_59": "Rapid 59'", - "sanitising": "\u6d88\u6bd2", + "sanitising": "消毒", "silence": "Silence", - "silent": "\u591c\u95f4", + "silent": "夜间", "silent_care": "Silent Care", "smart_ai": "Smart AI", - "special": "\u7279\u6b8a", - "special_pw_prz": "\u7279\u6b8a", - "steam": "\u84b8\u6c7d\u6d1775\u00b0C", - "steam_plus": "\u84b8\u6c7d + 75\u00b0C", - "total_care": "Total Care 50\u00b0C", - "ultra_silence": "\u8d85\u975955\u2103", - "ultra_silent": "\u8d85\u975955\u2103", - "universal": "\u901a\u752860\u00b0C", - "universal_plus": "\u901a\u7528+ 70\u00b0C", + "special": "特殊", + "special_pw_prz": "特殊", + "steam": "蒸汽洗75°C", + "steam_plus": "蒸汽 + 75°C", + "total_care": "Total Care 50°C", + "ultra_silence": "超静55℃", + "ultra_silent": "超静55℃", + "universal": "通用60°C", + "universal_plus": "通用+ 70°C", "zoom_39": "Zoom 39 min" }, - "name": "\u7a0b\u5e8f" + "name": "程序" }, "programs_ih": { "state": { - "iot_special_ash_brown": "\u7070\u8910\u8272", - "iot_special_beef_fillet": "\u725b\u6392", - "iot_special_beef_veal_stew": "\u7096\u725b\u8089\u548c\u5c0f\u725b\u8089", - "iot_special_boiled_rice": "\u716e\u996d", - "iot_special_chicken_breast": "\u9e21\u80f8\u8089", - "iot_special_chicken_legs": "\u9e21\u817f", - "iot_special_chocolate_pudding": "\u5de7\u514b\u529b\u5e03\u4e01", - "iot_special_entrecote": "\u808b\u773c\u725b\u6392", - "iot_special_fresh_tuna": "\u65b0\u9c9c\u91d1\u67aa\u9c7c", - "iot_special_grilled_vegetables": "\u70e4\u852c\u83dc", - "iot_special_lamb_cutlet": "\u7f94\u7f8a\u8089", - "iot_special_meatballs": "\u8089\u4e38", - "iot_special_minestrone": "\u610f\u5f0f\u4ec0\u9526\u852c\u83dc\u6c64", - "iot_special_mussels": "\u8d3b\u8d1d", - "iot_special_omelette": "\u714e\u86cb", - "iot_special_pancakes": "\u714e\u7cd5\u997c", - "iot_special_paris_style_peas": "\u5df4\u9ece\u5f0f\u8c4c\u8c46", - "iot_special_poached_eggs": "\u6c34\u716e\u86cb", - "iot_special_pork_fillet": "\u732a\u8089\u91cc\u810a", - "iot_special_pork_ribs": "\u732a\u6392\u9aa8", - "iot_special_prawns": "\u660e\u867e", - "iot_special_quinoa": "\u85dc\u9ea6", - "iot_special_ratatouille": "\u666e\u7f57\u65fa\u65af\u852c\u83dc\u6742\u70e9", - "iot_special_salmon_fillet": "\u4e09\u6587\u9c7c\u7247", - "iot_special_saute_potatoes": "\u7092\u571f\u8c46", - "iot_special_scallops": "\u6247\u8d1d", - "iot_special_scrambled_eggs": "\u7092\u86cb", - "iot_special_spelt": "\u65af\u4f69\u8033\u7279\u5c0f\u9ea6", - "iot_special_veggy_noodles": "\u852c\u83dc\u9762", - "iot_special_white_fish_fillet": "\u767d\u9c7c\u7247", + "iot_special_ash_brown": "灰褐色", + "iot_special_beef_fillet": "牛排", + "iot_special_beef_veal_stew": "炖牛肉和小牛肉", + "iot_special_boiled_rice": "煮饭", + "iot_special_chicken_breast": "鸡胸肉", + "iot_special_chicken_legs": "鸡腿", + "iot_special_chocolate_pudding": "巧克力布丁", + "iot_special_entrecote": "肋眼牛排", + "iot_special_fresh_tuna": "新鲜金枪鱼", + "iot_special_grilled_vegetables": "烤蔬菜", + "iot_special_lamb_cutlet": "羔羊肉", + "iot_special_meatballs": "肉丸", + "iot_special_minestrone": "意式什锦蔬菜汤", + "iot_special_mussels": "贻贝", + "iot_special_omelette": "煎蛋", + "iot_special_pancakes": "煎糕饼", + "iot_special_paris_style_peas": "巴黎式豌豆", + "iot_special_poached_eggs": "水煮蛋", + "iot_special_pork_fillet": "猪肉里脊", + "iot_special_pork_ribs": "猪排骨", + "iot_special_prawns": "明虾", + "iot_special_quinoa": "藜麦", + "iot_special_ratatouille": "普罗旺斯蔬菜杂烩", + "iot_special_salmon_fillet": "三文鱼片", + "iot_special_saute_potatoes": "炒土豆", + "iot_special_scallops": "扇贝", + "iot_special_scrambled_eggs": "炒蛋", + "iot_special_spelt": "斯佩耳特小麦", + "iot_special_veggy_noodles": "蔬菜面", + "iot_special_white_fish_fillet": "白鱼片", "iot_standard_boiling": "Boiling", - "iot_standard_frying": "\u70b8", - "iot_standard_keep_warm": "\u4fdd\u6e29", - "iot_standard_melting": "\u878d\u5316", + "iot_standard_frying": "炸", + "iot_standard_keep_warm": "保温", + "iot_standard_melting": "融化", "iot_standard_simmering": "Simmering" }, - "name": "\u7a0b\u5e8f" + "name": "程序" }, "programs_ov": { "state": { - "bakery": "\u610f\u5927\u5229\u9762\u548c\u70d8\u7119\u98df\u54c1", - "bakery_steam": "\u84b8\u70e4\u7684\u9762\u5305", - "bottom_heating": "\u5e95\u90e8\u52a0\u70ed ", - "bottom_heating_fan": "\u5e95\u90e8\u52a0\u70ed + \u98ce\u6247", - "bread": "\u9762\u5305", - "bread_steam": "\u84b8\u70e4\u7684\u751c\u70b9", - "convection_fan": "\u5bf9\u6d41 + \u98ce\u6247", - "convection_fan_turnspit": "\u5bf9\u6d41 + \u98ce\u6247 + \u70e4\u53c9", - "conventional": "\u5bf9\u6d41", - "conventional_turnspit": "\u5bf9\u6d41 + \u70e4\u53c9", - "defrost": "\u89e3\u51bb", - "descaling": "\u9664\u57a2", - "fish": "\u9c7c", - "fish_steam": "\u84b8\u716e\u7684\u9c7c", - "grill_cata": "\u70e4\u67b6", - "grill_fan_cata": "\u70e4\u67b6\u98ce\u6247", - "grill_fan_pyro": "\u70e4\u67b6 + \u98ce\u6247", - "grill_pyro": "\u70e4\u67b6", + "bakery": "意大利面和烘焙食品", + "bakery_steam": "蒸烤的面包", + "bottom_heating": "底部加热 ", + "bottom_heating_fan": "底部加热 + 风扇", + "bread": "面包", + "bread_steam": "蒸烤的甜点", + "convection_fan": "对流 + 风扇", + "convection_fan_turnspit": "对流 + 风扇 + 烤叉", + "conventional": "对流", + "conventional_turnspit": "对流 + 烤叉", + "defrost": "解冻", + "descaling": "除垢", + "fish": "鱼", + "fish_steam": "蒸煮的鱼", + "grill_cata": "烤架", + "grill_fan_cata": "烤架风扇", + "grill_fan_pyro": "烤架 + 风扇", + "grill_pyro": "烤架", "h20_clean": "H2O-Clean", - "iot_bread": "\u9762\u5305", + "iot_bread": "面包", "iot_h20_clean": "h2O clean", - "leavening": "\u53d1\u9175", - "low_temp_cooking": "\u4f4e\u6e29\u70f9\u996a", - "low_temp_cooking_fish": "\u4f4e\u6e29\u70f9\u996a - \u9c7c\u7c7b", - "low_temp_cooking_fish_steam": "\u4f4e\u6e29\u84b8\u6c7d\u70f9\u996a - \u9c7c\u7c7b", - "low_temp_cooking_meat": "\u4f4e\u6e29\u70f9\u996a - \u8089\u7c7b", - "low_temp_cooking_meat_steam": "\u4f4e\u6e29\u84b8\u6c7d\u70f9\u996a - \u8089\u7c7b", - "low_temp_cooking_steam": "\u4f4e\u6e29\u84b8\u6c7d\u70f9\u996a", - "meat": "\u8089", - "meat_steam": "\u84b8\u716e\u7684\u8089", - "multi_level": "\u591a\u5c42", + "leavening": "发酵", + "low_temp_cooking": "低温烹饪", + "low_temp_cooking_fish": "低温烹饪 - 鱼类", + "low_temp_cooking_fish_steam": "低温蒸汽烹饪 - 鱼类", + "low_temp_cooking_meat": "低温烹饪 - 肉类", + "low_temp_cooking_meat_steam": "低温蒸汽烹饪 - 肉类", + "low_temp_cooking_steam": "低温蒸汽烹饪", + "meat": "肉", + "meat_steam": "蒸煮的肉", + "multi_level": "多层", "paella": "Paella", - "pasta_and_bakery": "\u610f\u5927\u5229\u9762\u548c\u70d8\u7119\u98df\u54c1", + "pasta_and_bakery": "意大利面和烘焙食品", "pizza": "Pizza", - "pyrolysis": "\u70ed\u89e3", - "pyrolysis_plus": "\u70ed\u89e3 +", - "red_meat": "\u7ea2\u8089", - "red_meat_steam": "\u84b8\u716e\u7684\u7ea2\u8089", - "regenerate": "\u518d\u751f", - "soft_plus": "\u8f6f+", - "super_grill": "\u8d85\u7ea7\u70e4\u67b6", + "pyrolysis": "热解", + "pyrolysis_plus": "热解 +", + "red_meat": "红肉", + "red_meat_steam": "蒸煮的红肉", + "regenerate": "再生", + "soft_plus": "软+", + "super_grill": "超级烤架", "tailor_bake": "Tailor bake", "tailor_bake_cata": "Tailor Bake", - "tailor_bake_desctiption": "\u6b64\u529f\u80fd\u7279\u522b\u9002\u5408\u4fdd\u6301\u98df\u7269\u5185\u91cc\u677e\u8f6f\uff0c\u5916\u5c42\u9165\u8106\u3002\r\r\r\n\u6b64\u529f\u80fd\u53ef\u51cf\u5c11\u6240\u9700\u7684\u6cb9\u8102\u91cf\uff0c\u4ee5\u8fbe\u5230\u5065\u5eb7\u996e\u98df\u7684\u6548\u679c\u3002\r\r\r\n\u52a0\u70ed\u5143\u4ef6\u4e0e\u7a7a\u6c14\u8109\u52a8\u5faa\u73af\r\r\r\n\u7684\u7ed3\u5408\u53ef\u786e\u4fdd\u5747\u5300\u7684\u70d8\u70e4\u6548\u679c\u3002", "tailor_bake_pyro": "Tailor Bake", - "vegetables": "\u852c\u83dc", - "vegetables_cata": "\u852c\u83dc", - "vegetables_pyro": "\u852c\u83dc", - "water_discharge": "\u6392\u6c34", - "white_meat": "\u767d\u8089", - "white_meat_steam": "\u84b8\u716e\u7684\u767d\u8089" + "vegetables": "蔬菜", + "vegetables_cata": "蔬菜", + "vegetables_pyro": "蔬菜", + "water_discharge": "排水", + "white_meat": "白肉", + "white_meat_steam": "蒸煮的白肉" }, - "name": "\u7a0b\u5e8f" + "name": "程序" }, "programs_td": { "state": { - "active_dry": "\u4e3b\u52a8\u5e72\u71e5", + "active_dry": "主动干燥", "allergy_care": "Antiallergy", "all_in_one": "All in One", - "antiallergy": "\u6297\u8fc7\u654f", - "anti_odours": "\u9664\u5473", - "auto_care": "\u81ea\u52a8\u62a4\u7406", - "baby": "\u5a74\u513f\u670d", - "bed_quilt": "\u5e8a\u88ab", - "care_30": "\u62a4\u7406 30", - "care_45": "\u62a4\u7406 45", - "care_59": "\u62a4\u7406 59", - "coloured": "\u5f69\u8272\u8863\u7269", - "daily_45_min": "\u6bcf\u65e5 45 \u5206\u949f", - "daily_perfect_59_min": "\u6bcf\u65e5\u5b8c\u7f8e 59 \u5206\u949f", - "darks_and_coloured": "\u6df1\u8272\u548c\u5f69\u8272\u8863\u7269", - "delicates": "\u7cbe\u7ec6\u7ec7\u7269", - "duvet": "\u7fbd\u7ed2\u670d", - "eco": "\u751f\u6001\u68c9", - "ecospeed_cottons": "\u7ecf\u6d4e\u901f\u5ea6\u68c9\u8d28\u8863\u7269", - "ecospeed_delicates": "\u7ecf\u6d4e\u901f\u5ea6\u7cbe\u81f4\u8863\u7269", - "ecospeed_mixed": "\u7ecf\u6d4e\u901f\u5ea6\u6df7\u5408\u8863\u7269", - "extra_hygiene": "\u989d\u5916\u536b\u751f", - "fitness": "\u5065\u8eab\u8863\u7269", - "fresh_care": "\u6e05\u65b0\u62a4\u7406", + "antiallergy": "抗过敏", + "anti_odours": "除味", + "auto_care": "自动护理", + "baby": "婴儿服", + "bed_quilt": "床被", + "care_30": "护理 30", + "care_45": "护理 45", + "care_59": "护理 59", + "coloured": "彩色衣物", + "daily_45_min": "每日 45 分钟", + "daily_perfect_59_min": "每日完美 59 分钟", + "darks_and_coloured": "深色和彩色衣物", + "delicates": "精细织物", + "duvet": "羽绒服", + "eco": "生态棉", + "ecospeed_cottons": "经济速度棉质衣物", + "ecospeed_delicates": "经济速度精致衣物", + "ecospeed_mixed": "经济速度混合衣物", + "extra_hygiene": "额外卫生", + "fitness": "健身衣物", + "fresh_care": "清新护理", "genius": "Genius", "hqd_baby_care": "Baby Care", - "hqd_bath_towel": "\u6bdb\u5dfe", - "hqd_bed_sheets": "\u5e8a\u5355", - "hqd_bulky": "\u5927\u4ef6\u7269\u54c1", - "hqd_casual": "\u4f11\u95f2", - "hqd_cold_wind_30": "\u51c9\u98ce 30 \u5206\u949f", - "hqd_cold_wind_timing": "\u51c9\u98ce ", - "hqd_cotton": "\u68c9\u5e03", - "hqd_curtain": "\u7a97\u5e18", - "hqd_delicate": "\u7cbe\u81f4\u8863\u7269", - "hqd_diaper": "\u7eb8\u5c3f\u88e4", - "hqd_duvet": "\u7fbd\u7ed2\u88ab", - "hqd_feather": "\u7fbd\u7ed2\u670d", - "hqd_hot_wind_timing": "\u70ed\u7a7a\u6c14", - "hqd_hygienic": "\u536b\u751f\u4fdd\u62a4", + "hqd_bath_towel": "毛巾", + "hqd_bed_sheets": "床单", + "hqd_bulky": "大件物品", + "hqd_casual": "休闲", + "hqd_cold_wind_30": "凉风 30 分钟", + "hqd_cold_wind_timing": "凉风 ", + "hqd_cotton": "棉布", + "hqd_curtain": "窗帘", + "hqd_delicate": "精致衣物", + "hqd_diaper": "纸尿裤", + "hqd_duvet": "羽绒被", + "hqd_feather": "羽绒服", + "hqd_hot_wind_timing": "热空气", + "hqd_hygienic": "卫生保护", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", - "hqd_jacket": "\u5939\u514b", - "hqd_jeans": "\u725b\u4ed4\u88e4", - "hqd_luxury": "\u5962\u4f88\u8863\u7269", - "hqd_mix": "\u6df7\u5408\u6750\u8d28", - "hqd_night_dry": "\u8fc7\u591c\u70d8\u5e72", + "hqd_jacket": "夹克", + "hqd_jeans": "牛仔裤", + "hqd_luxury": "奢侈衣物", + "hqd_mix": "混合材质", + "hqd_night_dry": "过夜烘干", "hqd_outdoor": "Outdoor", "hqd_precious_cure": "Precious cure", - "hqd_quick_20": "\u5feb\u6d17 20", - "hqd_quick_30": "\u5feb\u6d17 30", - "hqd_quick_dry": "\u5feb\u901f\u5e72\u71e5", - "hqd_quilt": "\u68c9\u88ab", - "hqd_refresh": "\u6e05\u65b0", - "hqd_school_uniform": "\u6821\u670d", - "hqd_shirt": "\u886c\u886b", - "hqd_shoes": "\u978b\u5b50", - "hqd_silk": "\u4e1d\u7ef8", - "hqd_sports": "\u8fd0\u52a8\u88c5", - "hqd_synthetics": "\u5408\u6210\u7ea4\u7ef4", - "hqd_timer": "\u5b9a\u65f6", - "hqd_towel": "\u6bdb\u5dfe", - "hqd_underwear": "\u5185\u8863", - "hqd_warm_up": "\u52a0\u70ed", - "hqd_wool": "\u7f8a\u6bdb\u8863\u7269", - "hqd_working_suit": "\u5de5\u4f5c\u670d", - "hygiene": "\u536b\u751f", - "iot_checkup": "\u68c0\u6d4b", - "iot_dry_anti_mites": "\u9664\u87a8", - "iot_dry_baby": "\u5a74\u513f\u670d", - "iot_dry_backpacks": "\u80cc\u5305", - "iot_dry_bathrobe": "\u6d74\u8863", - "iot_dry_bed_linen": "\u88ab\u5355\u6795\u5957", - "iot_dry_bed_quilt": "\u5e8a\u88ab", - "iot_dry_cotton": "\u68c9\u5e03", - "iot_dry_cuddly_toys": "\u6bdb\u7ed2\u73a9\u5177", - "iot_dry_curtains": "\u7a97\u5e18", - "iot_dry_dehumidifier": "\u9664\u6e7f\u673a", - "iot_dry_delicates": "\u7cbe\u7ec6\u7ec7\u7269", - "iot_dry_delicate_tablecloths": "\u7cbe\u7ec6\u53f0\u5e03", - "iot_dry_denim_jeans": "\u725b\u4ed4\u5e03 - \u725b\u4ed4\u88e4", + "hqd_quick_20": "快洗 20", + "hqd_quick_30": "快洗 30", + "hqd_quick_dry": "快速干燥", + "hqd_quilt": "棉被", + "hqd_refresh": "清新", + "hqd_school_uniform": "校服", + "hqd_shirt": "衬衫", + "hqd_shoes": "鞋子", + "hqd_silk": "丝绸", + "hqd_sports": "运动装", + "hqd_synthetics": "合成纤维", + "hqd_timer": "定时", + "hqd_towel": "毛巾", + "hqd_underwear": "内衣", + "hqd_warm_up": "加热", + "hqd_wool": "羊毛衣物", + "hqd_working_suit": "工作服", + "hygiene": "卫生", + "iot_checkup": "检测", + "iot_dry_anti_mites": "除螨", + "iot_dry_baby": "婴儿服", + "iot_dry_backpacks": "背包", + "iot_dry_bathrobe": "浴衣", + "iot_dry_bed_linen": "被单枕套", + "iot_dry_bed_quilt": "床被", + "iot_dry_cotton": "棉布", + "iot_dry_cuddly_toys": "毛绒玩具", + "iot_dry_curtains": "窗帘", + "iot_dry_dehumidifier": "除湿机", + "iot_dry_delicates": "精细织物", + "iot_dry_delicate_tablecloths": "精细台布", + "iot_dry_denim_jeans": "牛仔布 - 牛仔裤", "iot_dry_down_jacket": "Jacket", - "iot_dry_duvet": "\u7fbd\u7ed2\u670d", + "iot_dry_duvet": "羽绒服", "iot_dry_easy_iron_cotton": "Super Easy Iron", - "iot_dry_easy_iron_synthetics": "\u8d85\u7ea7\u6613\u71a8\u5408\u6210\u7ec7\u7269", - "iot_dry_gym_fit": "\u5065\u8eab\u670d", - "iot_dry_lingerie": "\u5973\u6027\u5185\u8863", - "iot_dry_mixed": "\u6df7\u5408\u6750\u8d28", - "iot_dry_playsuits": "\u8fd0\u52a8\u88c5", - "iot_dry_rapid_30": "\u5feb\u901f 30", - "iot_dry_rapid_59": "\u5feb\u901f 59\u2019", + "iot_dry_easy_iron_synthetics": "超级易熨合成织物", + "iot_dry_gym_fit": "健身服", + "iot_dry_lingerie": "女性内衣", + "iot_dry_mixed": "混合材质", + "iot_dry_playsuits": "运动装", + "iot_dry_rapid_30": "快速 30", + "iot_dry_rapid_59": "快速 59’", "iot_dry_refresh": "Refresh", - "iot_dry_regenerates_waterproof": "\u9632\u6c34\u5e03", + "iot_dry_regenerates_waterproof": "防水布", "iot_dry_relax_creases": "Relax Creases", - "iot_dry_shirts": "\u886c\u886b", + "iot_dry_shirts": "衬衫", "iot_dry_small_load": "Small Load", - "iot_dry_swimsuits_and_bikinis": "\u6cf3\u8863", - "iot_dry_synthetics": "\u5408\u6210\u7ea4\u7ef4\u8863\u7269", - "iot_dry_synthetic_dry": "\u5408\u6210\u7ea4\u7ef4\u70d8\u5e72", - "iot_dry_tablecloths": "\u53f0\u5e03", - "iot_dry_technical_fabrics": "\u5f39\u6027\u7ec7\u7269", - "iot_dry_warm_embrace": "\u8863\u7269\u84ec\u677e", + "iot_dry_swimsuits_and_bikinis": "泳衣", + "iot_dry_synthetics": "合成纤维衣物", + "iot_dry_synthetic_dry": "合成纤维烘干", + "iot_dry_tablecloths": "台布", + "iot_dry_technical_fabrics": "弹性织物", + "iot_dry_warm_embrace": "衣物蓬松", "iot_dry_wool": "Woolmark", - "jeans": "\u725b\u4ed4\u88e4", - "mix_and_dry": "\u6df7\u5408\u5316\u7ea4\u6d17\u5e72\u4e00\u4f53", - "pets": "\u5ba0\u7269", - "pre_iron": "\u71a8\u70eb\u524d", - "rapid_30": "\u5feb\u901f 30", - "rapid_45": "\u5feb\u901f 45 \u5206\u949f", - "rapid_59": "\u5b8c\u7f8e\u5feb\u6d1759\u2032", - "refresh": "\u6e05\u65b0", + "jeans": "牛仔裤", + "mix_and_dry": "混合化纤洗干一体", + "pets": "宠物", + "pre_iron": "熨烫前", + "rapid_30": "快速 30", + "rapid_45": "快速 45 分钟", + "rapid_59": "完美快洗59′", + "refresh": "清新", "relax_creases": "Relax Creases", - "saving_30_min": "\u8282\u7ea6 30 \u5206\u949f", - "shirts": "\u886c\u886b", - "shoes": "\u978b\u5b50", + "saving_30_min": "节约 30 分钟", + "shirts": "衬衫", + "shoes": "鞋子", "small_load": "Small Load", - "soft_care": "\u67d4\u8f6f\u4fdd\u517b", + "soft_care": "柔软保养", "sport_plus": "Sport Plus", - "super_easy_iron_misti": "\u8d85\u6613\u71a8\u70eb\u6df7\u5408\u8863\u7269", - "super_easy_iron_xxl": "\u8d85\u6613\u71a8\u70eb\u8d85\u5927\u8863\u7269", + "super_easy_iron_misti": "超易熨烫混合衣物", + "super_easy_iron_xxl": "超易熨烫超大衣物", "super_fast_cottons": "Super Fast Cottons", "super_fast_delicates": "Super Fast Delicates", - "synthetics": "\u5408\u6210\u7ea4\u7ef4\u8863\u7269", + "synthetics": "合成纤维衣物", "total_care": "Total Care", - "trainers": "\u8fd0\u52a8\u978b", + "trainers": "运动鞋", "ultra_care": "Ultra Care", "waterproof_revitalize": "Waterproof Revitalize", - "whites": "\u6d45\u8272\u8863\u7269", - "wool": "\u70d8\u5e72\u7f8a\u6bdb\u8863\u7269", + "whites": "浅色衣物", + "wool": "烘干羊毛衣物", "woolmark": "Woolmark", "xxl_load": "XXL Load", - "zoom_59": "\u7f29\u653e 59" + "zoom_59": "缩放 59" }, - "name": "\u7a0b\u5e8f" + "name": "程序" }, "programs_wm": { "state": { - "20_degrees_coloured_cottons": "20\u00b0 \u5f69\u8272\u548c\u68c9\u82b1", - "20_degrees_new_energy_label": "20\u00b0C", - "active_steam": "\u84b8\u6c7d", - "active_wash": "\u6d3b\u5316\u6d17\u6da4", - "active_wash_steam": "\u6d3b\u5316\u6d17\u6da4", - "allergy_care": "\u8fc7\u654f\u4fdd\u517b", + "20_degrees_coloured_cottons": "20° 彩色和棉花", + "20_degrees_new_energy_label": "20°C", + "active_steam": "蒸汽", + "active_wash": "活化洗涤", + "active_wash_steam": "活化洗涤", + "allergy_care": "过敏保养", "allergy_care_pro": "Allergy Care Pro", - "all_in_one_49": "\u4e00\u4f53\u5316 49'", - "all_in_one_59": "\u4e00\u4f53\u5316 59'", - "all_in_one_59_steam": "\u6d3b\u5316\u6d17\u6da4 + \u84b8\u6c7d", - "autocare": "\u81ea\u52a8\u62a4\u7406", - "autoclean": "\u6eda\u7b52\u6e05\u6d01", - "baby_60": "\u5a74\u513f\u670d60\u2103", - "care_14": "\u7ecf\u6d4e\u4fdd\u517b 14 \u5206", - "care_30": "\u7ecf\u6d4e\u4fdd\u517b 30 \u5206", - "care_44": "\u7ecf\u6d4e\u4fdd\u517b 44 \u5206", - "checkup": "\u68c0\u6d4b", - "colour_59": "\u5f69\u8272\u8863\u7269 59'", - "colour_59_steam": "Coloureds 59' + \u84b8\u6c7d", - "cottons": "\u68c9\u5e03", - "cottons_prewash": "\u68c9\u9ebb+\u9884\u6d17", - "cottons_steam": "\u68c9\u8d28 + \u84b8\u6c7d", - "cotton_care_59": "\u68c9\u9ebb\u6d1759\"", - "delicate_59": "\u7cbe\u81f4 59'", - "delicate_silk": "\u7cbe\u81f4\u4e1d\u7ef8", - "delicate_silk_steam": "\u7cbe\u81f4\u4e1d\u7ef8 + \u84b8\u6c7d", - "delicati_59": "\u7cbe\u81f4 59'", - "delicati_59_steam": "\u7cbe\u81f4 59'", - "drain_spin": "\u8131\u6c34 + \u7529\u5e72", - "easy_iron": "\u6613\u71a8", - "eco_40_60_new_energy_label": "\u7ecf\u6d4e 40-60", - "extra_care": "\u989d\u5916\u4fdd\u517b", - "fitness": "\u5065\u8eab\u8863\u7269", - "fitness_care": "\u5065\u8eab\u8863\u7269", - "fresh_care": "\u6e05\u65b0\u62a4\u7406", - "fresh_care_steam": "\u6e05\u65b0\u62a4\u7406 + \u84b8\u6c7d", - "handwash_wool": "\u624b\u6d17\u548c\u7f8a\u6bdb\u8863\u7269", - "high_dry": "\u68c9\u8d28\u8863\u7269\u70d8\u5e72", - "hqd_20_degrees": "\u68c9\u8d28 20\u2103", - "hqd_allergy": "\u8fc7\u654f\u4fdd\u517b", - "hqd_autoclean": "\u6eda\u7b52\u6e05\u6d01", - "hqd_babycare": "\u5a74\u513f\u670d", - "hqd_checkup": "\u68c0\u6d4b", - "hqd_cottons": "\u68c9\u5e03", - "hqd_delicate": "\u7cbe\u81f4\u8863\u7269", - "hqd_delicate_cradle": "\u7cbe\u81f4\u8863\u7269", - "hqd_dry": "\u68c9\u8d28\u8863\u7269\u70d8\u5e72", - "hqd_dry_synthetics": "\u6df7\u5408\u6750\u8d28\u70d8\u5e72", - "hqd_duvet": "\u7fbd\u7ed2\u670d", - "hqd_eco_40_60_degrees": "\u7ecf\u6d4e 40-60", - "hqd_handwash_wool": "\u7f8a\u6bdb\u8863\u7269", + "all_in_one_49": "一体化 49'", + "all_in_one_59": "一体化 59'", + "all_in_one_59_steam": "活化洗涤 + 蒸汽", + "autocare": "自动护理", + "autoclean": "滚筒清洁", + "baby_60": "婴儿服60℃", + "care_14": "经济保养 14 分", + "care_30": "经济保养 30 分", + "care_44": "经济保养 44 分", + "checkup": "检测", + "colour_59": "彩色衣物 59'", + "colour_59_steam": "Coloureds 59' + 蒸汽", + "cottons": "棉布", + "cottons_prewash": "棉麻+预洗", + "cottons_steam": "棉质 + 蒸汽", + "cotton_care_59": "棉麻洗59\"", + "delicate_59": "精致 59'", + "delicate_silk": "精致丝绸", + "delicate_silk_steam": "精致丝绸 + 蒸汽", + "delicati_59": "精致 59'", + "delicati_59_steam": "精致 59'", + "drain_spin": "脱水 + 甩干", + "easy_iron": "易熨", + "eco_40_60_new_energy_label": "经济 40-60", + "extra_care": "额外保养", + "fitness": "健身衣物", + "fitness_care": "健身衣物", + "fresh_care": "清新护理", + "fresh_care_steam": "清新护理 + 蒸汽", + "handwash_wool": "手洗和羊毛衣物", + "high_dry": "棉质衣物烘干", + "hqd_20_degrees": "棉质 20℃", + "hqd_allergy": "过敏保养", + "hqd_autoclean": "滚筒清洁", + "hqd_babycare": "婴儿服", + "hqd_checkup": "检测", + "hqd_cottons": "棉布", + "hqd_delicate": "精致衣物", + "hqd_delicate_cradle": "精致衣物", + "hqd_dry": "棉质衣物烘干", + "hqd_dry_synthetics": "混合材质烘干", + "hqd_duvet": "羽绒服", + "hqd_eco_40_60_degrees": "经济 40-60", + "hqd_handwash_wool": "羊毛衣物", "hqd_i_refresh": "i-Refresh", - "hqd_mix": "\u6df7\u5408", - "hqd_quick_15": "\u5feb\u901f 15'", - "hqd_quick_wash_57": "\u5feb\u901f\u6d17\u6da4 57 \u5206\u949f", - "hqd_rapid_wash_and_dry": "\u6d17\u6da4\u4e0e\u70d8\u5e72", + "hqd_mix": "混合", + "hqd_quick_15": "快速 15'", + "hqd_quick_wash_57": "快速洗涤 57 分钟", + "hqd_rapid_wash_and_dry": "洗涤与烘干", "hqd_refresh": "Refresh", - "hqd_rinse": "\u6f02\u6d17", - "hqd_shirts": "\u886c\u886b", + "hqd_rinse": "漂洗", + "hqd_shirts": "衬衫", "hqd_smart": "Smart A.I.", - "hqd_spin": "\u7529\u5e72", - "hqd_sport": "\u8fd0\u52a8\u88c5", - "hqd_super_fast": "\u5feb\u901f 39\u2019", - "hqd_synthetic_and_coloured": "\u5408\u6210\u7ea4\u7ef4", - "hygiene_59": "\u536b\u751f\u589e\u5f3a 59 \u5206", - "hygiene_60": "\u536b\u751f 60\u00b0", - "hygiene_plus_59": "\u536b\u751f\u589e\u5f3a 59 \u5206", - "hygiene_plus_59_min": "\u536b\u751f\u589e\u5f3a 59 \u5206", + "hqd_spin": "甩干", + "hqd_sport": "运动装", + "hqd_super_fast": "快速 39’", + "hqd_synthetic_and_coloured": "合成纤维", + "hygiene_59": "卫生增强 59 分", + "hygiene_60": "卫生 60°", + "hygiene_plus_59": "卫生增强 59 分", + "hygiene_plus_59_min": "卫生增强 59 分", "hygiene_pro_49_min": "Hygiene Pro 49 min", - "hygiene_pro_steam": "Hygiene Pro + \u84b8\u6c7d", - "intensive_40": "\u52a0\u5f3a 40\u00b0C", - "intensive_40_steam": "Intensive 40\u00b0C + \u84b8\u6c7d", - "iot_active_steam": "\u84b8\u6c7d", - "iot_active_wash_steam": "\u6d3b\u5316\u6d17\u6da4", + "hygiene_pro_steam": "Hygiene Pro + 蒸汽", + "intensive_40": "加强 40°C", + "intensive_40_steam": "Intensive 40°C + 蒸汽", + "iot_active_steam": "蒸汽", + "iot_active_wash_steam": "活化洗涤", "iot_allergy_care_pro": "Allergy Care Pro", - "iot_all_in_one_59_steam": "\u6d3b\u5316\u6d17\u6da4 + \u84b8\u6c7d", - "iot_checkup": "\u68c0\u6d4b", - "iot_colour_59_steam": "Coloureds 59' + \u84b8\u6c7d", - "iot_cottons_steam": "\u68c9\u8d28 + \u84b8\u6c7d", - "iot_delicate_silk_steam": "\u7cbe\u81f4\u4e1d\u7ef8 + \u84b8\u6c7d", - "iot_delicati_59_steam": "\u7cbe\u81f4 59'", - "iot_dry_air_refresh": "\u7a7a\u6c14\u6e05\u65b0", - "iot_dry_anti_mites": "\u9632\u87a8", - "iot_dry_baby": "\u5a74\u513f", - "iot_dry_backpacks": "\u80cc\u5305", - "iot_dry_bathrobe": "\u6d74\u8863\u548c\u900f\u6c14\u7ec7\u7269", - "iot_dry_bed_linen": "\u5e8a\u5355", - "iot_dry_cotton_dry": "\u68c9\u8d28\u8863\u7269\u70d8\u5e72", - "iot_dry_cuddly_toys": "\u6bdb\u7ed2\u73a9\u5177", - "iot_dry_curtains": "\u7a97\u5e18", - "iot_dry_dehumidifier": "\u9664\u6e7f\u673a", - "iot_dry_delicates_antiallergy": "\u7cbe\u81f4\u8863\u7269 - \u6297\u8fc7\u654f", - "iot_dry_delicate_tablecloths": "\u7cbe\u81f4\u684c\u5e03", - "iot_dry_denim_jeans": "\u725b\u4ed4\u5e03 - \u725b\u4ed4\u88e4", - "iot_dry_easy_iron_cotton": "\u8f7b\u677e\u71a8\u70eb - \u68c9\u5e03", - "iot_dry_easy_iron_synthetics": "\u8f7b\u677e\u71a8\u70eb - \u5408\u6210\u7ea4\u7ef4", - "iot_dry_gym_fit": "\u8fd0\u52a8 - \u5065\u8eab\u8863\u7269", - "iot_dry_lingerie": "\u5185\u8863", - "iot_dry_mixed_dry": "\u6df7\u5408\u6750\u8d28\u70d8\u5e72", - "iot_dry_rapid_60_min_delicates": "\u5feb\u901f 60' - \u7cbe\u81f4\u8863\u7269", - "iot_dry_shirts": "\u886c\u886b", - "iot_dry_swimsuits_and_bikinis": "\u6cf3\u8863", - "iot_dry_synthetics": "\u5408\u6210\u7ea4\u7ef4\u70d8\u5e72", - "iot_dry_synthetic_dry": "\u5408\u6210\u7ea4\u7ef4\u70d8\u5e72", - "iot_dry_tablecloths": "\u684c\u5e03", - "iot_dry_technical_fabrics": "\u5de5\u827a\u7ec7\u7269", - "iot_dry_warm_embrace": "\u4e2d\u6e29\u70d8\u5e72", - "iot_dry_wool_dry": "\u7f8a\u6bdb\u8863\u7269\u70d8\u5e72", - "iot_easy_iron": "\u6613\u71a8", - "iot_fresh_care_steam": "\u6e05\u65b0\u62a4\u7406 + \u84b8\u6c7d", - "iot_hygiene_pro_steam": "Hygiene Pro + \u84b8\u6c7d", - "iot_intensive_40_steam": "Intensive 40\u00b0C + \u84b8\u6c7d", - "iot_mixed_steam": "\u6df7\u5408 + \u84b8\u6c7d", - "iot_mix_and_colour_59_steam": "\u6df7\u5408\u6750\u8d28\u548c\u5f69\u8272 59' + \u84b8\u6c7d", - "iot_perfect_cotton_59_steam": "\u5b8c\u7f8e\u68c9\u8d28 59 \u5206", - "iot_rapid_a_class_60_steam": "\u5feb\u901f A \u7ea7 60 + \u84b8\u6c7d", - "iot_resistant_cotton_steam": "\u68c9\u8d28 + \u84b8\u6c7d", - "iot_shirts_steam": "\u886c\u886b + \u84b8\u6c7d", - "iot_single_item_steam": "\u5355\u4ef6\u7269\u54c1 + \u84b8\u6c7d", - "iot_smart_wash": "\u667a\u80fd\u6d17\u6da4", + "iot_all_in_one_59_steam": "活化洗涤 + 蒸汽", + "iot_checkup": "检测", + "iot_colour_59_steam": "Coloureds 59' + 蒸汽", + "iot_cottons_steam": "棉质 + 蒸汽", + "iot_delicate_silk_steam": "精致丝绸 + 蒸汽", + "iot_delicati_59_steam": "精致 59'", + "iot_dry_air_refresh": "空气清新", + "iot_dry_anti_mites": "防螨", + "iot_dry_baby": "婴儿", + "iot_dry_backpacks": "背包", + "iot_dry_bathrobe": "浴衣和透气织物", + "iot_dry_bed_linen": "床单", + "iot_dry_cotton_dry": "棉质衣物烘干", + "iot_dry_cuddly_toys": "毛绒玩具", + "iot_dry_curtains": "窗帘", + "iot_dry_dehumidifier": "除湿机", + "iot_dry_delicates_antiallergy": "精致衣物 - 抗过敏", + "iot_dry_delicate_tablecloths": "精致桌布", + "iot_dry_denim_jeans": "牛仔布 - 牛仔裤", + "iot_dry_easy_iron_cotton": "轻松熨烫 - 棉布", + "iot_dry_easy_iron_synthetics": "轻松熨烫 - 合成纤维", + "iot_dry_gym_fit": "运动 - 健身衣物", + "iot_dry_lingerie": "内衣", + "iot_dry_mixed_dry": "混合材质烘干", + "iot_dry_rapid_60_min_delicates": "快速 60' - 精致衣物", + "iot_dry_shirts": "衬衫", + "iot_dry_swimsuits_and_bikinis": "泳衣", + "iot_dry_synthetics": "合成纤维烘干", + "iot_dry_synthetic_dry": "合成纤维烘干", + "iot_dry_tablecloths": "桌布", + "iot_dry_technical_fabrics": "工艺织物", + "iot_dry_warm_embrace": "中温烘干", + "iot_dry_wool_dry": "羊毛衣物烘干", + "iot_easy_iron": "易熨", + "iot_fresh_care_steam": "清新护理 + 蒸汽", + "iot_hygiene_pro_steam": "Hygiene Pro + 蒸汽", + "iot_intensive_40_steam": "Intensive 40°C + 蒸汽", + "iot_mixed_steam": "混合 + 蒸汽", + "iot_mix_and_colour_59_steam": "混合材质和彩色 59' + 蒸汽", + "iot_perfect_cotton_59_steam": "完美棉质 59 分", + "iot_rapid_a_class_60_steam": "快速 A 级 60 + 蒸汽", + "iot_resistant_cotton_steam": "棉质 + 蒸汽", + "iot_shirts_steam": "衬衫 + 蒸汽", + "iot_single_item_steam": "单件物品 + 蒸汽", + "iot_smart_wash": "智能洗涤", "iot_soft_care_steam": "Soft Care + Steam", - "iot_special_39_full_load_steam": "\u4e13\u7528 39' + \u84b8\u6c7d", - "iot_steam_hygiene_plus": "\u536b\u751f\u589e\u5f3a\u84b8\u6c7d ", - "iot_synthetic_and_coloured_steam": "\u5316\u7ea4\u548c\u5f69\u8272 + \u84b8\u6c7d", - "iot_wash_and_dry": "\u6d17\u6da4\u4e0e\u70d8\u5e72", - "iot_wash_anti_mites": "\u9632\u87a8", - "iot_wash_anti_odor": "\u9632\u5f02\u5473", + "iot_special_39_full_load_steam": "专用 39' + 蒸汽", + "iot_steam_hygiene_plus": "卫生增强蒸汽 ", + "iot_synthetic_and_coloured_steam": "化纤和彩色 + 蒸汽", + "iot_wash_and_dry": "洗涤与烘干", + "iot_wash_anti_mites": "防螨", + "iot_wash_anti_odor": "防异味", "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", - "iot_wash_baby_sanitizer": "\u6d88\u6bd2", - "iot_wash_baby_sanitizer_steam": "\u5a74\u513f\u7528\u54c1\u6d88\u6bd2 + \u84b8\u6c7d", - "iot_wash_backpacks": "\u80cc\u5305", - "iot_wash_backpacks_zelig": "\u80cc\u5305", - "iot_wash_bathrobe": "\u6d74\u888d\u548c\u6bdb\u5dfe", - "iot_wash_bathrobe_steam": "\u6d74\u8863 + \u84b8\u6c7d", - "iot_wash_bed_linen": "\u5e8a\u5355", - "iot_wash_bed_linen_steam": "\u5e8a\u5355 + \u84b8\u6c7d", - "iot_wash_bed_linen_zelig": "\u5e8a\u5355", - "iot_wash_big_single_load": "\u5355\u4ef6\u5927\u8863\u7269", - "iot_wash_bleaching": "\u6f02\u767d", - "iot_wash_blood_stains": "\u8840\u8ff9", - "iot_wash_cashmere": "\u7f8a\u7ed2", - "iot_wash_chocolate_stains": "\u5de7\u514b\u529b\u6e0d", - "iot_wash_cold_wash": "\u51b7\u6d17", - "iot_wash_colored": "\u5f69\u8272", - "iot_wash_colored_anti_stain": "\u53bb\u9664\u5f69\u8272\u7ec7\u7269\u4e0a\u7684\u6c61\u6e0d", - "iot_wash_colored_delicate": "\u5f69\u8272\u7cbe\u81f4", - "iot_wash_coloured": "\u989c\u8272", - "iot_wash_coloured_bed_linen": "\u5f69\u8272\u5e8a\u5355", - "iot_wash_coloured_bed_linen_steam": "\u5f69\u8272\u5e8a\u5355 + \u84b8\u6c7d", - "iot_wash_coloured_curtains": "\u5f69\u8272\u7a97\u5e18", - "iot_wash_coloured_shirts": "\u5f69\u8272\u886c\u886b", - "iot_wash_coloured_shirts_steam": "\u5f69\u8272\u886c\u886b + \u84b8\u6c7d", - "iot_wash_coloured_steam": "\u5f69\u8272 + \u84b8\u6c7d", - "iot_wash_coloured_tableclothes": "\u5f69\u8272\u684c\u5e03", - "iot_wash_coloured_tableclothes_steam": "\u5f69\u8272\u684c\u5e03 + \u84b8\u6c7d", - "iot_wash_cotton": "\u68c9\u5e03", - "iot_wash_cotton_steam": "\u68c9\u8d28 + \u84b8\u6c7d", - "iot_wash_cuddly_toys": "\u6bdb\u7ed2\u73a9\u5177", - "iot_wash_curtains": "\u7a97\u5e18", - "iot_wash_curtains_steam": "\u7a97\u5e18 + \u84b8\u6c7d", - "iot_wash_curtains_zelig": "\u7a97\u5e18", - "iot_wash_dark": "\u6df1\u8272\u8863\u7269", - "iot_wash_darks_and_coloured_44": "\u6df1\u8272\u4e0e\u5f69\u8272 44'", - "iot_wash_darks_and_coloured_59": "\u6df1\u8272\u4e0e\u5f69\u8272 59'", - "iot_wash_darks_and_coloured_xl": "\u6df1\u8272\u548c\u5f69\u8272 XL", - "iot_wash_dark_steam": "\u6df1\u8272\u7269\u54c1 + \u84b8\u6c7d", + "iot_wash_baby_sanitizer": "消毒", + "iot_wash_baby_sanitizer_steam": "婴儿用品消毒 + 蒸汽", + "iot_wash_backpacks": "背包", + "iot_wash_backpacks_zelig": "背包", + "iot_wash_bathrobe": "浴袍和毛巾", + "iot_wash_bathrobe_steam": "浴衣 + 蒸汽", + "iot_wash_bed_linen": "床单", + "iot_wash_bed_linen_steam": "床单 + 蒸汽", + "iot_wash_bed_linen_zelig": "床单", + "iot_wash_big_single_load": "单件大衣物", + "iot_wash_bleaching": "漂白", + "iot_wash_blood_stains": "血迹", + "iot_wash_cashmere": "羊绒", + "iot_wash_chocolate_stains": "巧克力渍", + "iot_wash_cold_wash": "冷洗", + "iot_wash_colored": "彩色", + "iot_wash_colored_anti_stain": "去除彩色织物上的污渍", + "iot_wash_colored_delicate": "彩色精致", + "iot_wash_coloured": "颜色", + "iot_wash_coloured_bed_linen": "彩色床单", + "iot_wash_coloured_bed_linen_steam": "彩色床单 + 蒸汽", + "iot_wash_coloured_curtains": "彩色窗帘", + "iot_wash_coloured_shirts": "彩色衬衫", + "iot_wash_coloured_shirts_steam": "彩色衬衫 + 蒸汽", + "iot_wash_coloured_steam": "彩色 + 蒸汽", + "iot_wash_coloured_tableclothes": "彩色桌布", + "iot_wash_coloured_tableclothes_steam": "彩色桌布 + 蒸汽", + "iot_wash_cotton": "棉布", + "iot_wash_cotton_steam": "棉质 + 蒸汽", + "iot_wash_cuddly_toys": "毛绒玩具", + "iot_wash_curtains": "窗帘", + "iot_wash_curtains_steam": "窗帘 + 蒸汽", + "iot_wash_curtains_zelig": "窗帘", + "iot_wash_dark": "深色衣物", + "iot_wash_darks_and_coloured_44": "深色与彩色 44'", + "iot_wash_darks_and_coloured_59": "深色与彩色 59'", + "iot_wash_darks_and_coloured_xl": "深色和彩色 XL", + "iot_wash_dark_steam": "深色物品 + 蒸汽", "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", "iot_wash_dash_cold_cycle": "Dash Cold Clean", "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", - "iot_wash_delicate": "\u7cbe\u81f4\u8863\u7269", - "iot_wash_delicate_antiallergy": "\u7cbe\u81f4\u8863\u7269\u7684\u6297\u8fc7\u654f\u7a0b\u5e8f", - "iot_wash_delicate_antiallergy_steam": "\u6297\u8fc7\u654f\u7cbe\u81f4\u8863\u7269 + \u84b8\u6c7d", - "iot_wash_delicate_antiallergy_zelig": "\u7cbe\u81f4\u8863\u7269\u7684\u6297\u8fc7\u654f\u7a0b\u5e8f", - "iot_wash_delicate_colors": "\u989c\u8272\u7cbe\u81f4\u8863\u7269", - "iot_wash_delicate_colors_steam": "\u5f69\u8272 + \u84b8\u6c7d", - "iot_wash_delicate_dark": "\u7cbe\u81f4\u6df1\u8272", - "iot_wash_delicate_steam": "\u7cbe\u81f4\u8863\u7269 + \u84b8\u6c7d", - "iot_wash_delicate_tablecloths": "\u7cbe\u81f4\u684c\u5e03", - "iot_wash_delicate_tablecloths_steam": "\u7cbe\u81f4\u684c\u5e03 + \u84b8\u6c7d", - "iot_wash_delicate_whites": "\u7cbe\u81f4\u767d\u8272\u8863\u7269", - "iot_wash_denim_jeans": "\u725b\u4ed4\u5e03 - \u725b\u4ed4\u88e4", - "iot_wash_diving_suits": "\u6f5c\u6c34\u670d", - "iot_wash_diving_suits_zelig": "\u6f5c\u6c34\u670d", - "iot_wash_down_jackets": "\u7fbd\u7ed2\u670d", - "iot_wash_down_jackets_zelig": "\u7fbd\u7ed2\u670d", - "iot_wash_duvet": "\u7fbd\u7ed2\u670d", - "iot_wash_fruit_stains": "\u6c34\u679c\u6e0d", - "iot_wash_gym_fit": "\u8fd0\u52a8 - \u5065\u8eab\u8863\u7269", - "iot_wash_handwash": "\u624b\u6d17", - "iot_wash_handwash_colored": "\u5f69\u8272\u624b\u6d17", - "iot_wash_handwash_dark": "\u6df1\u8272\u624b\u6d17", - "iot_wash_lingerie": "\u5185\u8863", - "iot_wash_masks_refresh": "\u53e3\u7f69\u6e05\u6d17", - "iot_wash_masks_sanification": "\u53e3\u7f69\u6d88\u6bd2", - "iot_wash_masks_sanification_steam": "\u53e3\u7f69\u6d88\u6bd2 + \u84b8\u6c7d", - "iot_wash_mats": "\u5730\u6bef", - "iot_wash_men_s_trousers": "\u88e4\u5b50", - "iot_wash_mixed": "\u6df7\u5408\u6750\u8d28", - "iot_wash_mixed_steam": "\u6df7\u5408 + \u84b8\u6c7d", - "iot_wash_mix_and_coloured_44": "\u6df7\u5408\u6750\u8d28\u548c\u5f69\u8272 44'", - "iot_wash_mix_and_coloured_59": "\u6df7\u5408\u6750\u8d28\u548c\u5f69\u8272 59'", - "iot_wash_mix_and_coloured_xl": "\u6df7\u5408\u6750\u8d28\u548c\u5f69\u8272 XL", - "iot_wash_new_clothes": "\u65b0\u8863\u7269", - "iot_wash_perfect_white": "\u5b8c\u7f8e\u767d\u8272", - "iot_wash_perfect_white_steam": "\u5b8c\u7f8e\u767d\u8272 + \u84b8\u6c7d", - "iot_wash_pets": "\u5ba0\u7269\u7528\u54c1", - "iot_wash_pets_hair_removal": "\u5ba0\u7269\u6bdb\u53d1\u6e05\u9664", - "iot_wash_pets_odours_stains_removal": "\u5ba0\u7269\u5f02\u5473\u548c\u6c61\u6e0d\u6e05\u9664", - "iot_wash_pets_steam": "\u5ba0\u7269\u7528\u54c1", - "iot_wash_playsuits": "\u8fd0\u52a8\u88c5", - "iot_wash_playsuits_steam": "\u8fd0\u52a8\u88c5 + \u84b8\u6c7d", - "iot_wash_quick_drum_cleaner": "\u5feb\u901f\u6eda\u7b52\u6e05\u6d01\u5668", - "iot_wash_rapid_14": "\u5feb\u901f 14\u2019", - "iot_wash_rapid_30": "\u5feb\u901f 30\u2019", - "iot_wash_rapid_44": "\u5feb\u901f 44\u2019", - "iot_wash_rapid_59": "\u5feb\u901f 59\u2019", - "iot_wash_rapid_59_steam": "\u5feb\u901f 59' + \u84b8\u6c7d", - "iot_wash_refresh_14_min": "\u6e05\u65b0 14'", - "iot_wash_resistant_colored": "\u97e7\u6027\u5f69\u8272\u8863\u7269", - "iot_wash_resistant_dark": "\u97e7\u6027\u6df1\u8272\u8863\u7269", - "iot_wash_resistant_whites": "\u97e7\u6027\u767d\u8272\u8863\u7269", - "iot_wash_rinse": "\u6f02\u6d17", - "iot_wash_shirts": "\u886c\u886b", - "iot_wash_shirts_steam": "\u886c\u886b + \u84b8\u6c7d", - "iot_wash_silk": "\u4e1d\u7ef8", - "iot_wash_ski_suit": "\u6ed1\u96ea\u670d", - "iot_wash_ski_suit_zelig": "\u6ed1\u96ea\u670d", - "iot_wash_spin": "\u7529\u5e72", - "iot_wash_sport": "\u8fd0\u52a8\u88c5", - "iot_wash_sport_anti_odor": "\u9632\u4f53\u5473\u8fd0\u52a8\u670d", - "iot_wash_sport_anti_odor_zelig": "\u9632\u4f53\u5473\u8fd0\u52a8\u670d", - "iot_wash_stains_remover": "\u53bb\u6c61", - "iot_wash_swimsuits_and_bikinis": "\u6cf3\u8863", - "iot_wash_synthetic": "\u5408\u6210\u7ea4\u7ef4", - "iot_wash_synthetic_steam": "\u5408\u6210\u7ea4\u7ef4 + \u84b8\u6c7d", - "iot_wash_tablecloths": "\u684c\u5e03", - "iot_wash_tablecloths_steam": "\u684c\u5e03 + \u84b8\u6c7d", - "iot_wash_technical_fabrics": "\u5de5\u827a\u7ec7\u7269", - "iot_wash_technical_fabrics_zelig": "\u5de5\u827a\u7ec7\u7269", - "iot_wash_technical_jackets": "\u51b2\u950b\u8863", - "iot_wash_technical_jackets_zelig": "\u51b2\u950b\u8863", - "iot_wash_trainers": "\u8fd0\u52a8\u978b", - "iot_wash_whites": "\u767d\u8272\u8863\u7269", - "iot_wash_whites_44": "\u767d\u8272\u8863\u7269 44'", - "iot_wash_whites_59": "\u767d\u8272\u8863\u7269 59'", - "iot_wash_whites_xl": "\u767d\u8272\u8863\u7269 XL", - "iot_wash_wine_stains": "\u8461\u8404\u9152\u6e0d", - "iot_wash_wool": "\u7f8a\u6bdb\u8863\u7269", - "jeans": "\u725b\u4ed4\u88e4", - "jeans_60": "\u725b\u4ed4\u88e4", - "low_dry": "\u6df7\u5408\u6750\u8d28\u70d8\u5e72", - "mixed": "\u6df7\u5408\u6750\u8d28", - "mixed_and_colored_59": "\u6df7\u5408\u6750\u8d28\u548c\u5f69\u8272 59'", - "mixed_steam": "\u6df7\u5408 + \u84b8\u6c7d", - "mix_and_colour_59": "\u6df7\u5408\u548c\u5f69\u8272 59 \u5206", - "mix_and_colour_59_steam": "\u6df7\u5408\u6750\u8d28\u548c\u5f69\u8272 59' + \u84b8\u6c7d", - "night_and_day": "\u665a\u95f4\u548c\u65e5\u95f4", - "night_wash": "\u8fc7\u591c\u5faa\u73af", - "perfect_59": "\u5b8c\u7f8e 59'", - "perfect_cotton_59": "\u5b8c\u7f8e\u68c9\u8d28 59 \u5206", - "perfect_cotton_59_steam": "\u5b8c\u7f8e\u68c9\u8d28 59 \u5206", - "perfect_whites_59": "\u5b8c\u7f8e\u62a4\u8272 59'", - "rapid_14_min": "\u5feb\u6d1714\u5206\u949f", - "rapid_30_min": "30\u5206\u949f\u5feb\u6d17", - "rapid_44_min": "44\u5206\u949f\u5feb\u6d17", - "rapid_a_class_60": "\u5feb\u901f A \u7ea7 60", - "rapid_a_class_60_steam": "\u5feb\u901f A \u7ea7 60 + \u84b8\u6c7d", - "rapid_wash_and_dry_59_min": "\u6d17\u6da4\u5e76\u70d8\u5e72 59'", - "resistant_cotton": "\u68c9\u5e03", - "resistant_cotton_steam": "\u68c9\u8d28 + \u84b8\u6c7d", - "rinse": "\u6f02\u6d17", - "shirts_steam": "\u886c\u886b + \u84b8\u6c7d", - "silent_night": "\u8fc7\u591c\u5faa\u73af", - "single_item": "\u5355\u4ef6\u5546\u54c1", - "single_item_steam": "\u5355\u4ef6\u7269\u54c1 + \u84b8\u6c7d", - "smart_wash": "\u667a\u80fd\u6d17\u6da4", - "soft_care": "\u67d4\u8f6f\u4fdd\u517b", + "iot_wash_delicate": "精致衣物", + "iot_wash_delicate_antiallergy": "精致衣物的抗过敏程序", + "iot_wash_delicate_antiallergy_steam": "抗过敏精致衣物 + 蒸汽", + "iot_wash_delicate_antiallergy_zelig": "精致衣物的抗过敏程序", + "iot_wash_delicate_colors": "颜色精致衣物", + "iot_wash_delicate_colors_steam": "彩色 + 蒸汽", + "iot_wash_delicate_dark": "精致深色", + "iot_wash_delicate_steam": "精致衣物 + 蒸汽", + "iot_wash_delicate_tablecloths": "精致桌布", + "iot_wash_delicate_tablecloths_steam": "精致桌布 + 蒸汽", + "iot_wash_delicate_whites": "精致白色衣物", + "iot_wash_denim_jeans": "牛仔布 - 牛仔裤", + "iot_wash_diving_suits": "潜水服", + "iot_wash_diving_suits_zelig": "潜水服", + "iot_wash_down_jackets": "羽绒服", + "iot_wash_down_jackets_zelig": "羽绒服", + "iot_wash_duvet": "羽绒服", + "iot_wash_fruit_stains": "水果渍", + "iot_wash_gym_fit": "运动 - 健身衣物", + "iot_wash_handwash": "手洗", + "iot_wash_handwash_colored": "彩色手洗", + "iot_wash_handwash_dark": "深色手洗", + "iot_wash_lingerie": "内衣", + "iot_wash_masks_refresh": "口罩清洗", + "iot_wash_masks_sanification": "口罩消毒", + "iot_wash_masks_sanification_steam": "口罩消毒 + 蒸汽", + "iot_wash_mats": "地毯", + "iot_wash_men_s_trousers": "裤子", + "iot_wash_mixed": "混合材质", + "iot_wash_mixed_steam": "混合 + 蒸汽", + "iot_wash_mix_and_coloured_44": "混合材质和彩色 44'", + "iot_wash_mix_and_coloured_59": "混合材质和彩色 59'", + "iot_wash_mix_and_coloured_xl": "混合材质和彩色 XL", + "iot_wash_new_clothes": "新衣物", + "iot_wash_perfect_white": "完美白色", + "iot_wash_perfect_white_steam": "完美白色 + 蒸汽", + "iot_wash_pets": "宠物用品", + "iot_wash_pets_hair_removal": "宠物毛发清除", + "iot_wash_pets_odours_stains_removal": "宠物异味和污渍清除", + "iot_wash_pets_steam": "宠物用品", + "iot_wash_playsuits": "运动装", + "iot_wash_playsuits_steam": "运动装 + 蒸汽", + "iot_wash_quick_drum_cleaner": "快速滚筒清洁器", + "iot_wash_rapid_14": "快速 14’", + "iot_wash_rapid_30": "快速 30’", + "iot_wash_rapid_44": "快速 44’", + "iot_wash_rapid_59": "快速 59’", + "iot_wash_rapid_59_steam": "快速 59' + 蒸汽", + "iot_wash_refresh_14_min": "清新 14'", + "iot_wash_resistant_colored": "韧性彩色衣物", + "iot_wash_resistant_dark": "韧性深色衣物", + "iot_wash_resistant_whites": "韧性白色衣物", + "iot_wash_rinse": "漂洗", + "iot_wash_shirts": "衬衫", + "iot_wash_shirts_steam": "衬衫 + 蒸汽", + "iot_wash_silk": "丝绸", + "iot_wash_ski_suit": "滑雪服", + "iot_wash_ski_suit_zelig": "滑雪服", + "iot_wash_spin": "甩干", + "iot_wash_sport": "运动装", + "iot_wash_sport_anti_odor": "防体味运动服", + "iot_wash_sport_anti_odor_zelig": "防体味运动服", + "iot_wash_stains_remover": "去污", + "iot_wash_swimsuits_and_bikinis": "泳衣", + "iot_wash_synthetic": "合成纤维", + "iot_wash_synthetic_steam": "合成纤维 + 蒸汽", + "iot_wash_tablecloths": "桌布", + "iot_wash_tablecloths_steam": "桌布 + 蒸汽", + "iot_wash_technical_fabrics": "工艺织物", + "iot_wash_technical_fabrics_zelig": "工艺织物", + "iot_wash_technical_jackets": "冲锋衣", + "iot_wash_technical_jackets_zelig": "冲锋衣", + "iot_wash_trainers": "运动鞋", + "iot_wash_whites": "白色衣物", + "iot_wash_whites_44": "白色衣物 44'", + "iot_wash_whites_59": "白色衣物 59'", + "iot_wash_whites_xl": "白色衣物 XL", + "iot_wash_wine_stains": "葡萄酒渍", + "iot_wash_wool": "羊毛衣物", + "jeans": "牛仔裤", + "jeans_60": "牛仔裤", + "low_dry": "混合材质烘干", + "mixed": "混合材质", + "mixed_and_colored_59": "混合材质和彩色 59'", + "mixed_steam": "混合 + 蒸汽", + "mix_and_colour_59": "混合和彩色 59 分", + "mix_and_colour_59_steam": "混合材质和彩色 59' + 蒸汽", + "night_and_day": "晚间和日间", + "night_wash": "过夜循环", + "perfect_59": "完美 59'", + "perfect_cotton_59": "完美棉质 59 分", + "perfect_cotton_59_steam": "完美棉质 59 分", + "perfect_whites_59": "完美护色 59'", + "rapid_14_min": "快洗14分钟", + "rapid_30_min": "30分钟快洗", + "rapid_44_min": "44分钟快洗", + "rapid_a_class_60": "快速 A 级 60", + "rapid_a_class_60_steam": "快速 A 级 60 + 蒸汽", + "rapid_wash_and_dry_59_min": "洗涤并烘干 59'", + "resistant_cotton": "棉布", + "resistant_cotton_steam": "棉质 + 蒸汽", + "rinse": "漂洗", + "shirts_steam": "衬衫 + 蒸汽", + "silent_night": "过夜循环", + "single_item": "单件商品", + "single_item_steam": "单件物品 + 蒸汽", + "smart_wash": "智能洗涤", + "soft_care": "柔软保养", "soft_care_steam": "Soft Care + Steam", "soft_care_steam_title": "Soft Care + Steam", - "special_39": "\u6bcf\u65e5 39 \u5206", - "special_39_full_load": "\u6bcf\u65e5 39 \u5206", - "special_39_full_load_steam": "\u4e13\u7528 39' + \u84b8\u6c7d", - "special_49": "\u4e13\u7528 49'", - "sport_39": "\u8fd0\u52a8\u88c5 39'", - "sport_plus_29": "\u8fd0\u52a8\u589e\u5f3a 29 \u5206", - "sport_plus_39": "\u8fd0\u52a8\u589e\u5f3a 39 \u5206", - "steam_39": "\u84b8\u6c7d 39'", + "special_39": "每日 39 分", + "special_39_full_load": "每日 39 分", + "special_39_full_load_steam": "专用 39' + 蒸汽", + "special_49": "专用 49'", + "sport_39": "运动装 39'", + "sport_plus_29": "运动增强 29 分", + "sport_plus_39": "运动增强 39 分", + "steam_39": "蒸汽 39'", "steam_care_pro": "Steam Care Pro", - "steam_care_pro_cotton": "Steam Care Pro - \u68c9", - "steam_care_pro_delicates": "Steam Care Pro - \u7cbe\u81f4\u8863\u7269", - "steam_care_pro_synthetic": "Steam Care Pro - \u5316\u7ea4", - "steam_hygiene_plus": "\u536b\u751f\u589e\u5f3a\u84b8\u6c7d ", - "synthetics": "\u5408\u6210\u7ea4\u7ef4", - "synthetic_and_coloured": "\u5408\u6210\u7ea4\u7ef4\u548c\u5f69\u8272\u8863\u7269", - "synthetic_and_coloured_steam": "\u5316\u7ea4\u548c\u5f69\u8272 + \u84b8\u6c7d", + "steam_care_pro_cotton": "Steam Care Pro - 棉", + "steam_care_pro_delicates": "Steam Care Pro - 精致衣物", + "steam_care_pro_synthetic": "Steam Care Pro - 化纤", + "steam_hygiene_plus": "卫生增强蒸汽 ", + "synthetics": "合成纤维", + "synthetic_and_coloured": "合成纤维和彩色衣物", + "synthetic_and_coloured_steam": "化纤和彩色 + 蒸汽", "tailored_resistant_cotton": "Tailored Resistant Cotton", "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", - "total_care": "\u5168\u9762\u62a4\u7406", - "tumbling": "\u6eda\u7b52\u70d8\u5e72", - "wool": "\u7f8a\u6bdb\u8863\u7269", - "wool_and_delicates_49": "\u7f8a\u6bdb", - "wool_dry": "\u7f8a\u6bdb\u8863\u7269\u70d8\u5e72", - "wool_soft_care": "\u7f8a\u6bdb" + "total_care": "全面护理", + "tumbling": "滚筒烘干", + "wool": "羊毛衣物", + "wool_and_delicates_49": "羊毛", + "wool_dry": "羊毛衣物烘干", + "wool_soft_care": "羊毛" }, - "name": "\u7a0b\u5e8f" + "name": "程序" }, "dry_levels": { "state": { - "0": "\u4e0d\u70d8\u5e72", - "1": "\u71a8\u70eb", - "2": "\u8863\u67dc\u5c31\u7eea", - "3": "\u8863\u67dc\u5c31\u7eea", - "4": "\u7279\u5e72", - "12": "\u71a8\u70eb", - "13": "\u8863\u67dc\u5c31\u7eea", - "14": "\u53ef\u7a7f", - "15": "\u7279\u5e72" + "0": "不烘干", + "1": "熨烫", + "2": "衣柜就绪", + "3": "衣柜就绪", + "4": "特干", + "12": "熨烫", + "13": "衣柜就绪", + "14": "可穿", + "15": "特干" }, - "name": "\u70d8\u5e72\u6c34\u5e73" + "name": "烘干水平" }, "spin_speed": { - "name": "\u7529\u5e72" + "name": "甩干" }, "temperature": { - "name": "\u6e29\u5ea6" + "name": "温度" }, "dry_time": { - "name": "\u70d8\u5e72\u65f6\u95f4" + "name": "烘干时间" } }, "switch": { "anti_crease": { - "name": "\u6297\u76b1" + "name": "抗皱" }, "add_dish": { "name": "" }, "eco_express": { - "name": "\u8282\u80fd" + "name": "节能" }, "extra_dry": { - "name": "\u7279\u5e72" + "name": "特干" }, "half_load": { - "name": "\u534a\u8f7d" + "name": "半载" }, "open_door": { - "name": "\u5f00\u95e8" + "name": "开门" }, "three_in_one": { - "name": "\u4e09\u5408\u4e00" + "name": "三合一" }, "preheat": { - "name": "\u9884\u70ed" + "name": "预热" }, "dish_washer": { - "name": "\u6d17\u7897\u673a" + "name": "洗碗机" }, "tumble_dryer": { - "name": "\u6eda\u7b52\u70d8\u5e72\u673a" + "name": "滚筒烘干机" }, "washing_machine": { - "name": "\u6d17\u8863\u673a" + "name": "洗衣机" }, "washer_dryer": { - "name": "\u6d17\u8863\u70d8\u5e72\u4e24\u7528\u673a" + "name": "洗衣烘干两用机" }, "oven": { - "name": "\u70e4\u7089" + "name": "烤炉" }, "prewash": { - "name": "\u9884\u6d17" + "name": "预洗" }, "pause": { - "name": "\u6682\u505c" + "name": "暂停" }, "keep_fresh": { "name": "Keep Fresh" }, "delay_time": { - "name": "\u5ef6\u65f6\u542f\u52a8" + "name": "延时启动" } }, "binary_sensor": { "door_lock": { - "name": "\u95e8\u9501" + "name": "门锁" }, "extra_rinse_1": { - "name": "+1 \u6b21\u6f02\u6d17" + "name": "+1 次漂洗" }, "extra_rinse_2": { - "name": "+2 \u6b21\u6f02\u6d17" + "name": "+2 次漂洗" }, "extra_rinse_3": { - "name": "+3 \u6b21\u6f02\u6d17" + "name": "+3 次漂洗" }, "good_night": { - "name": "\u665a\u5b89" + "name": "晚安" }, "anti_crease": { - "name": "\u6297\u76b1" + "name": "抗皱" }, "aqua_plus": { "name": "Acquaplus" }, "spin_speed": { - "name": "\u7529\u5e72" + "name": "甩干" }, "programs_dw": { - "name": "\u7a0b\u5e8f" + "name": "程序" }, "programs_ih": { - "name": "\u7a0b\u5e8f" + "name": "程序" }, "programs_ov": { - "name": "\u7a0b\u5e8f" + "name": "程序" }, "programs_td": { - "name": "\u7a0b\u5e8f" + "name": "程序" }, "programs_wm": { - "name": "\u7a0b\u5e8f" + "name": "程序" }, "still_hot": { - "name": "\u4ecd\u7136\u70ed" + "name": "仍然热" }, "pan_status": { - "name": "\u70e4\u76d8" + "name": "烤盘" }, "remote_control": { - "name": "\u8fdc\u7a0b\u63a7\u5236" + "name": "远程控制" }, "rinse_aid": { - "name": "\u6f02\u6d17\u52a9\u5242\u6db2\u4f4d" + "name": "漂洗助剂液位" }, "salt_level": { - "name": "\u76d0\u6c34\u5e73" + "name": "盐水平" }, "door_open": { - "name": "\u95e8\u6253\u5f00" + "name": "门打开" }, "connection": { - "name": "\u8bbe\u5907\u8fde\u63a5" + "name": "设备连接" }, "child_lock": { - "name": "\u513f\u7ae5\u9501" + "name": "儿童锁" }, "on": { - "name": "\u6253\u5f00" + "name": "打开" }, "prewash": { - "name": "\u9884\u6d17" + "name": "预洗" } }, "number": { "power_management": { - "name": "\u7535\u6e90\u7ba1\u7406" + "name": "电源管理" }, "temperature": { - "name": "\u6e29\u5ea6" + "name": "温度" }, "delay_time": { - "name": "\u5ef6\u65f6\u542f\u52a8" + "name": "延时启动" }, "water_hard": { - "name": "\u6c34\u7684\u786c\u5ea6" + "name": "水的硬度" }, "program_duration": { - "name": "\u7a0b\u5e8f\u6301\u7eed\u65f6\u95f4" + "name": "程序持续时间" }, "target_temperature": { - "name": "\u76ee\u6807\u6e29\u5ea6" + "name": "目标温度" }, "rinse_iterations": { - "name": "\u6f02\u6d17\u6b21\u6570" + "name": "漂洗次数" }, "wash_time": { - "name": "\u6e05\u6d17\u65f6\u95f4" + "name": "清洗时间" }, "dry_time": { - "name": "\u70d8\u5e72\u65f6\u95f4" + "name": "烘干时间" } }, "button": { "induction_hob": { - "name": "\u7535\u78c1\u7089" + "name": "电磁炉" } } } diff --git a/scripts/generate_translation.py b/scripts/generate_translation.py index 6fe384c..e33ad91 100755 --- a/scripts/generate_translation.py +++ b/scripts/generate_translation.py @@ -262,7 +262,7 @@ def load_json(path): def save_json(path, keys): with open(path, "w") as json_file: - json_file.write(json.dumps(keys, indent=4)) + json_file.write(json.dumps(keys, indent=4, ensure_ascii=False)) def load_key(full_key, json_data, fallback=None): @@ -279,7 +279,7 @@ def load_key(full_key, json_data, fallback=None): def load_keys(full_key, json_data): - blacklist = ["description", "_recipe_", "_guided_"] + blacklist = ["description", "desctiption", "_recipe_", "_guided_"] first, last = full_key.split(".") data = json_data.get(first, {}).get(last, {}) return { -- 2.39.5 From 28a8ad16724b11b83651774afb6278b2f230f637 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 24 Apr 2023 22:40:20 +0200 Subject: [PATCH 074/205] Translate login --- custom_components/hon/translations/cs.json | 11 +++++++++++ custom_components/hon/translations/de.json | 11 +++++++++++ custom_components/hon/translations/el.json | 11 +++++++++++ custom_components/hon/translations/en.json | 4 ++-- custom_components/hon/translations/es.json | 11 +++++++++++ custom_components/hon/translations/fr.json | 11 +++++++++++ custom_components/hon/translations/he.json | 11 +++++++++++ custom_components/hon/translations/hr.json | 11 +++++++++++ custom_components/hon/translations/it.json | 4 ++-- custom_components/hon/translations/nl.json | 11 +++++++++++ custom_components/hon/translations/pl.json | 11 +++++++++++ custom_components/hon/translations/pt.json | 11 +++++++++++ custom_components/hon/translations/ro.json | 11 +++++++++++ custom_components/hon/translations/ru.json | 11 +++++++++++ custom_components/hon/translations/sk.json | 11 +++++++++++ custom_components/hon/translations/sl.json | 11 +++++++++++ custom_components/hon/translations/sr.json | 11 +++++++++++ custom_components/hon/translations/tr.json | 11 +++++++++++ custom_components/hon/translations/zh.json | 11 +++++++++++ scripts/generate_translation.py | 10 ++++++++++ 20 files changed, 201 insertions(+), 4 deletions(-) diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index db77f07..ffac5ea 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -981,5 +981,16 @@ "name": "Indukční varná deska" } } + }, + "config": { + "step": { + "user": { + "description": "Přihlaste se", + "data": { + "email": "E-mail", + "password": "Heslo" + } + } + } } } \ No newline at end of file diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index 3e20842..641fb45 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -981,5 +981,16 @@ "name": "Induktionskochfeld" } } + }, + "config": { + "step": { + "user": { + "description": "Melden Sie sich an.", + "data": { + "email": "E-Mail", + "password": "Kennwort" + } + } + } } } \ No newline at end of file diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index ae770f8..1b3818b 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -981,5 +981,16 @@ "name": "Επαγωγική εστία" } } + }, + "config": { + "step": { + "user": { + "description": "Do the login", + "data": { + "email": "Email", + "password": "Password" + } + } + } } } \ No newline at end of file diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index f4b385e..bd6281c 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -2,9 +2,9 @@ "config": { "step": { "user": { - "description": "Please enters your hOn credentials", + "description": "Do the login", "data": { - "email": "Email Address", + "email": "Email", "password": "Password" } } diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index 4b46965..7770637 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -981,5 +981,16 @@ "name": "Placa de inducción" } } + }, + "config": { + "step": { + "user": { + "description": "Inicia sesión", + "data": { + "email": "Correo electrónico", + "password": "Contraseña" + } + } + } } } \ No newline at end of file diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index 43ce44b..1ffd1a2 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -981,5 +981,16 @@ "name": "Table de cuisson à induction" } } + }, + "config": { + "step": { + "user": { + "description": "Connectez-vous.", + "data": { + "email": "E-mail", + "password": "Mot de passe" + } + } + } } } \ No newline at end of file diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index a674ea3..afa67d3 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -580,5 +580,16 @@ "name": "Induction Hob" } } + }, + "config": { + "step": { + "user": { + "description": "Do the login", + "data": { + "email": "Email", + "password": "Password" + } + } + } } } \ No newline at end of file diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index b828126..fcc04ea 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -981,5 +981,16 @@ "name": "Indukcijska ploča za kuhanje" } } + }, + "config": { + "step": { + "user": { + "description": "Do the login", + "data": { + "email": "E-pošta", + "password": "Password" + } + } + } } } \ No newline at end of file diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index 409fc62..001df55 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -2,9 +2,9 @@ "config": { "step": { "user": { - "description": "Inserisci le credenziali dell'app hOn", + "description": "Fai il login", "data": { - "email": "Indirizzo Email", + "email": "Email", "password": "Password" } } diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index c14eca0..c5666f2 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -981,5 +981,16 @@ "name": "Inductiekookplaat" } } + }, + "config": { + "step": { + "user": { + "description": "Log in", + "data": { + "email": "E-mail", + "password": "Wachtwoord" + } + } + } } } \ No newline at end of file diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index 72c3bac..b3ba23e 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -981,5 +981,16 @@ "name": "Płyta indukcyjna" } } + }, + "config": { + "step": { + "user": { + "description": "Zaloguj się", + "data": { + "email": "E-mail", + "password": "Hasło" + } + } + } } } \ No newline at end of file diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index b23c642..36fd66a 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -981,5 +981,16 @@ "name": "Placa de indução" } } + }, + "config": { + "step": { + "user": { + "description": "Faça login", + "data": { + "email": "E-mail", + "password": "Palavra-passe" + } + } + } } } \ No newline at end of file diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index 1aa55cb..7b2a432 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -981,5 +981,16 @@ "name": "Plita cu inducție" } } + }, + "config": { + "step": { + "user": { + "description": "Do the login", + "data": { + "email": "E-mail", + "password": "Password" + } + } + } } } \ No newline at end of file diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index 4f6f6bb..e97bd7f 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -981,5 +981,16 @@ "name": "Индукционная варочная панель" } } + }, + "config": { + "step": { + "user": { + "description": "Выполните вход", + "data": { + "email": "Электронная почта", + "password": "Пароль" + } + } + } } } \ No newline at end of file diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index 32713dc..46739d3 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -981,5 +981,16 @@ "name": "Indukčná varná doska" } } + }, + "config": { + "step": { + "user": { + "description": "Do the login", + "data": { + "email": "E-mail", + "password": "Password" + } + } + } } } \ No newline at end of file diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index 94b802e..98be657 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -981,5 +981,16 @@ "name": "Indukcijska kuhalna plošča" } } + }, + "config": { + "step": { + "user": { + "description": "Do the login", + "data": { + "email": "E-pošta", + "password": "Password" + } + } + } } } \ No newline at end of file diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index a4937f1..d9e8994 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -981,5 +981,16 @@ "name": "Indukciona ploča" } } + }, + "config": { + "step": { + "user": { + "description": "Do the login", + "data": { + "email": "E-adresa", + "password": "Password" + } + } + } } } \ No newline at end of file diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index 6ba195e..9b37205 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -981,5 +981,16 @@ "name": "İndüksiyonlu Ocak" } } + }, + "config": { + "step": { + "user": { + "description": "Do the login", + "data": { + "email": "E-posta", + "password": "Password" + } + } + } } } \ No newline at end of file diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index 2ff9849..a23879e 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -981,5 +981,16 @@ "name": "电磁炉" } } + }, + "config": { + "step": { + "user": { + "description": "Do the login", + "data": { + "email": "电子邮件", + "password": "Password" + } + } + } } } \ No newline at end of file diff --git a/scripts/generate_translation.py b/scripts/generate_translation.py index e33ad91..3077c43 100755 --- a/scripts/generate_translation.py +++ b/scripts/generate_translation.py @@ -298,6 +298,15 @@ def add_data(old, original, fallback, data, name, entity="sensor"): state[str(number)] = key +def translate_login(old, *args): + login = old.setdefault("config", {}).setdefault("step", {}).setdefault("user", {}) + login["description"] = load_key("CUBE90_ALEXA.HAIER_SMART_SKILLS.STEP_2", *args) + login.setdefault("data", {})["email"] = load_key( + "PET.EDIT_PET_PROFESSIONALS.EMAIL", *args + ) + login["data"]["password"] = load_key("CUBE90_GLOBAL.GENERAL.PASSWORD", *args) + + def main(): hass = load_hass_translations() hon = load_hon_translations() @@ -317,6 +326,7 @@ def main(): for name, key in data.items(): select = old.setdefault("entity", {}).setdefault(entity, {}) select.setdefault(name, {})["name"] = load_key(key, original, fallback) + translate_login(old, original, fallback) save_json(base_path / f"{language}.json", old) -- 2.39.5 From 8e4e491c330d356e017d6c82c01d044bd5dbedbe Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Tue, 25 Apr 2023 23:39:18 +0200 Subject: [PATCH 075/205] Output pyhon version --- custom_components/hon/button.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index 2227f58..79759b5 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -2,6 +2,7 @@ import logging import urllib from urllib.parse import quote +import pkg_resources from homeassistant.components.button import ButtonEntityDescription, ButtonEntity from homeassistant.config_entries import ConfigEntry from pyhon import Hon @@ -76,4 +77,6 @@ class HonFeatureRequestButton(HonEntity, ButtonEntity): self._attr_entity_registry_enabled_default = False async def async_press(self) -> None: - _LOGGER.error("Device Info:\n" + self._device.diagnose) + pyhon_version = pkg_resources.get_distribution("pyhon").version + info = f"Device Info:\n{self._device.diagnose}pyhOnVersion: {pyhon_version}" + _LOGGER.error(info) -- 2.39.5 From 8aa8563b9b880e19de277fbf13aaefbea2845ae6 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Wed, 26 Apr 2023 23:57:44 +0200 Subject: [PATCH 076/205] Control air conditioners --- README.md | 18 +++ custom_components/hon/climate.py | 148 +++++++++++++++++++++ custom_components/hon/const.py | 31 +++++ custom_components/hon/number.py | 12 ++ custom_components/hon/select.py | 16 +++ custom_components/hon/switch.py | 63 +++++++++ custom_components/hon/translations/cs.json | 70 ++++++++++ custom_components/hon/translations/de.json | 70 ++++++++++ custom_components/hon/translations/el.json | 70 ++++++++++ custom_components/hon/translations/en.json | 70 ++++++++++ custom_components/hon/translations/es.json | 70 ++++++++++ custom_components/hon/translations/fr.json | 70 ++++++++++ custom_components/hon/translations/he.json | 54 ++++++++ custom_components/hon/translations/hr.json | 70 ++++++++++ custom_components/hon/translations/it.json | 70 ++++++++++ custom_components/hon/translations/nl.json | 70 ++++++++++ custom_components/hon/translations/pl.json | 70 ++++++++++ custom_components/hon/translations/pt.json | 70 ++++++++++ custom_components/hon/translations/ro.json | 70 ++++++++++ custom_components/hon/translations/ru.json | 70 ++++++++++ custom_components/hon/translations/sk.json | 70 ++++++++++ custom_components/hon/translations/sl.json | 70 ++++++++++ custom_components/hon/translations/sr.json | 70 ++++++++++ custom_components/hon/translations/tr.json | 70 ++++++++++ custom_components/hon/translations/zh.json | 70 ++++++++++ scripts/generate_translation.py | 40 +++++- 26 files changed, 1641 insertions(+), 1 deletion(-) create mode 100644 custom_components/hon/climate.py diff --git a/README.md b/README.md index 3d6bc30..22a39b9 100644 --- a/README.md +++ b/README.md @@ -132,6 +132,24 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 ## Appliance Features +### Air conditioner +#### Configs +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| 10° Heating | | `switch` | `startProgram.10degreeHeatingStatus` | +| Echo | | `switch` | `startProgram.echoStatus` | +| Eco Mode | | `switch` | `startProgram.ecoMode` | +| Eco Pilot | | `select` | `startProgram.humanSensingStatus` | +| Health Mode | | `switch` | `startProgram.healthMode` | +| Mute | | `switch` | `startProgram.muteStatus` | +| Program | | `select` | `startProgram.program` | +| Rapid Mode | | `switch` | `startProgram.rapidMode` | +| Screen Display | | `switch` | `startProgram.screenDisplayStatus` | +| Self Cleaning | | `switch` | `startProgram.selfCleaningStatus` | +| Self Cleaning 56 | | `switch` | `startProgram.selfCleaning56Status` | +| Silent Sleep | | `switch` | `startProgram.silentSleepStatus` | +| Target Temperature | `thermometer` | `number` | `startProgram.tempSel` | + ### Dish washer #### Controls | Name | Icon | Entity | Key | diff --git a/custom_components/hon/climate.py b/custom_components/hon/climate.py new file mode 100644 index 0000000..7a972d5 --- /dev/null +++ b/custom_components/hon/climate.py @@ -0,0 +1,148 @@ +import logging + +from homeassistant.components.climate import ( + ClimateEntity, + ClimateEntityDescription, +) +from homeassistant.components.climate.const import ( + FAN_OFF, + SWING_OFF, + SWING_BOTH, + SWING_VERTICAL, + SWING_HORIZONTAL, + ClimateEntityFeature, + HVACMode, +) +from homeassistant.config_entries import ConfigEntry +from homeassistant.const import ( + ATTR_TEMPERATURE, + PRECISION_WHOLE, + TEMP_CELSIUS, +) +from homeassistant.core import callback +from pyhon import Hon +from pyhon.appliance import HonAppliance + +from custom_components.hon.const import HON_HVAC_MODE, HON_FAN, HON_HVAC_PROGRAM, DOMAIN +from custom_components.hon.hon import HonEntity, HonCoordinator + +_LOGGER = logging.getLogger(__name__) + +CLIMATES = { + "AC": (ClimateEntityDescription(key="startProgram"),), +} + + +async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: + hon: Hon = hass.data[DOMAIN][entry.unique_id] + coordinators = hass.data[DOMAIN]["coordinators"] + appliances = [] + for device in hon.appliances: + if device.unique_id in coordinators: + coordinator = hass.data[DOMAIN]["coordinators"][device.unique_id] + else: + coordinator = HonCoordinator(hass, device) + hass.data[DOMAIN]["coordinators"][device.unique_id] = coordinator + await coordinator.async_config_entry_first_refresh() + + if descriptions := CLIMATES.get(device.appliance_type): + for description in descriptions: + if not device.settings.get(description.key): + continue + appliances.extend( + [HonClimateEntity(hass, coordinator, entry, device, description)] + ) + async_add_entities(appliances) + + +class HonClimateEntity(HonEntity, ClimateEntity): + def __init__( + self, hass, coordinator, entry, device: HonAppliance, description + ) -> None: + super().__init__(hass, entry, coordinator, device) + self._coordinator = coordinator + self._device = coordinator.device + self.entity_description = description + self._hass = hass + self._attr_unique_id = f"{super().unique_id}climate" + + self._attr_temperature_unit = TEMP_CELSIUS + self._attr_target_temperature_step = PRECISION_WHOLE + self._attr_max_temp = device.settings["tempSel"].max + self._attr_min_temp = device.settings["tempSel"].min + + self._attr_hvac_modes = [HVACMode.OFF] + [ + HON_HVAC_MODE[mode] for mode in device.settings["machMode"].values + ] + self._attr_fan_modes = [FAN_OFF] + [ + HON_FAN[mode] for mode in device.settings["windSpeed"].values + ] + self._attr_swing_modes = [ + SWING_OFF, + SWING_VERTICAL, + SWING_HORIZONTAL, + SWING_BOTH, + ] + self._attr_supported_features = ( + ClimateEntityFeature.TARGET_TEMPERATURE + | ClimateEntityFeature.FAN_MODE + | ClimateEntityFeature.SWING_MODE + ) + + async def async_set_hvac_mode(self, hvac_mode): + if hvac_mode == HVACMode.OFF: + self._device.commands["stopProgram"].send() + else: + self._device.settings["program"].value = HON_HVAC_PROGRAM[hvac_mode] + self._device.commands["startProgram"].send() + self._attr_hvac_mode = hvac_mode + + async def async_set_fan_mode(self, fan_mode): + mode_number = list(HON_FAN.values()).index(fan_mode) + self._device.settings["windSpeed"].value = list(HON_FAN.keys())[mode_number] + self._device.commands["startProgram"].send() + + async def async_set_swing_mode(self, swing_mode): + horizontal = self._device.settings["windDirectionHorizontal"] + vertical = self._device.settings["windDirectionVertical"] + if swing_mode in [SWING_BOTH, SWING_HORIZONTAL]: + horizontal.value = "7" + if swing_mode in [SWING_BOTH, SWING_VERTICAL]: + vertical.value = "8" + if swing_mode in [SWING_OFF, SWING_HORIZONTAL] and vertical.value == "8": + vertical.value = "5" + if swing_mode in [SWING_OFF, SWING_VERTICAL] and horizontal.value == "7": + horizontal.value = "0" + self._attr_swing_mode = swing_mode + self._device.commands["startProgram"].send() + + async def async_set_temperature(self, **kwargs): + if (temperature := kwargs.get(ATTR_TEMPERATURE)) is None: + return False + self._device.settings["selTemp"].value = temperature + self._device.commands["startProgram"].send() + + @callback + def _handle_coordinator_update(self, update=True) -> None: + self._attr_target_temperature = int(float(self._device.get("tempSel"))) + self._attr_current_temperature = float(self._device.get("tempIndoor")) + self._attr_max_temp = self._device.settings["tempSel"].max + self._attr_min_temp = self._device.settings["tempSel"].min + + if self._device.get("onOffStatus") == "0": + self._attr_hvac_mode = HVACMode.OFF + else: + self._attr_hvac_mode = HON_HVAC_MODE[self._device.get("machMode")] + + self._attr_fan_mode = HON_FAN[self._device.settings["windSpeed"].value] + + horizontal = self._device.settings["windDirectionHorizontal"] + vertical = self._device.settings["windDirectionVertical"] + if horizontal == "7" and vertical == "8": + self._attr_swing_mode = SWING_BOTH + elif horizontal == "7": + self._attr_swing_mode = SWING_HORIZONTAL + elif vertical == "8": + self._attr_swing_mode = SWING_VERTICAL + else: + self._attr_swing_mode = SWING_OFF diff --git a/custom_components/hon/const.py b/custom_components/hon/const.py index 5dae56e..6a852a0 100644 --- a/custom_components/hon/const.py +++ b/custom_components/hon/const.py @@ -1,3 +1,7 @@ +from homeassistant.components.climate import HVACMode + +from custom_components.hon import climate + DOMAIN = "hon" PLATFORMS = [ @@ -7,4 +11,31 @@ PLATFORMS = [ "switch", "button", "binary_sensor", + "climate", ] + +HON_HVAC_MODE = { + "0": HVACMode.AUTO, + "1": HVACMode.COOL, + "2": HVACMode.COOL, + "3": HVACMode.DRY, + "4": HVACMode.HEAT, + "5": HVACMode.FAN_ONLY, + "6": HVACMode.FAN_ONLY, +} + +HON_HVAC_PROGRAM = { + HVACMode.AUTO: "iot_auto", + HVACMode.COOL: "iot_cool", + HVACMode.DRY: "iot_dry", + HVACMode.HEAT: "iot_heat", + HVACMode.FAN_ONLY: "iot_fan", +} + +HON_FAN = { + "1": climate.FAN_HIGH, + "2": climate.FAN_MEDIUM, + "3": climate.FAN_LOW, + "4": climate.FAN_AUTO, + "5": climate.FAN_AUTO, +} diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index c80f5fe..3983d45 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -135,6 +135,16 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { translation_key="water_hard", ), ), + "AC": ( + NumberEntityDescription( + key="startProgram.tempSel", + name="Target Temperature", + entity_category=EntityCategory.CONFIG, + icon="mdi:thermometer", + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + translation_key="target_temperature", + ), + ), } @@ -186,6 +196,8 @@ class HonNumberEntity(HonEntity, NumberEntity): isinstance(setting, HonParameter) or isinstance(setting, HonParameterFixed) ): setting.value = value + if self._device.appliance_type in ["AC"]: + self._device.commands["startProgram"].send() await self.coordinator.async_refresh() @callback diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index 8d614e1..9c76e82 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -97,6 +97,20 @@ SELECTS = { translation_key="programs_dw", ), ), + "AC": ( + SelectEntityDescription( + key="startProgram.program", + name="Program", + entity_category=EntityCategory.CONFIG, + translation_key="programs_ac", + ), + SelectEntityDescription( + key="startProgram.humanSensingStatus", + name="Eco Pilot", + entity_category=EntityCategory.CONFIG, + translation_key="eco_pilot", + ), + ), } @@ -147,6 +161,8 @@ class HonSelectEntity(HonEntity, SelectEntity): async def async_select_option(self, option: str) -> None: self._device.settings[self.entity_description.key].value = option + if self._device.appliance_type in ["AC"]: + self._device.commands["startProgram"].send() await self.coordinator.async_refresh() @callback diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 412c744..dc2218c 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -193,6 +193,65 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { translation_key="add_dish", ), ), + "AC": ( + HonSwitchEntityDescription( + key="startProgram.10degreeHeatingStatus", + name="10° Heating", + entity_category=EntityCategory.CONFIG, + translation_key="10_degree_heating", + ), + HonSwitchEntityDescription( + key="startProgram.echoStatus", + name="Echo", + entity_category=EntityCategory.CONFIG, + ), + HonSwitchEntityDescription( + key="startProgram.ecoMode", + name="Eco Mode", + entity_category=EntityCategory.CONFIG, + translation_key="eco_mode", + ), + HonSwitchEntityDescription( + key="startProgram.healthMode", + name="Health Mode", + entity_category=EntityCategory.CONFIG, + ), + HonSwitchEntityDescription( + key="startProgram.muteStatus", + name="Mute", + entity_category=EntityCategory.CONFIG, + translation_key="mute_mode", + ), + HonSwitchEntityDescription( + key="startProgram.rapidMode", + name="Rapid Mode", + entity_category=EntityCategory.CONFIG, + translation_key="rapid_mode", + ), + HonSwitchEntityDescription( + key="startProgram.screenDisplayStatus", + name="Screen Display", + entity_category=EntityCategory.CONFIG, + ), + HonSwitchEntityDescription( + key="startProgram.selfCleaning56Status", + name="Self Cleaning 56", + entity_category=EntityCategory.CONFIG, + translation_key="self_clean_56", + ), + HonSwitchEntityDescription( + key="startProgram.selfCleaningStatus", + name="Self Cleaning", + entity_category=EntityCategory.CONFIG, + translation_key="self_clean", + ), + HonSwitchEntityDescription( + key="startProgram.silentSleepStatus", + name="Silent Sleep", + entity_category=EntityCategory.CONFIG, + translation_key="silent_mode", + ), + ), } @@ -261,6 +320,8 @@ class HonSwitchEntity(HonEntity, SwitchEntity): setting.max if isinstance(setting, HonParameterRange) else "1" ) self.async_write_ha_state() + if self._device.appliance_type in ["AC"]: + self._device.commands["startProgram"].send() await self.coordinator.async_refresh() else: await self._device.commands[self.entity_description.turn_on_key].send() @@ -272,6 +333,8 @@ class HonSwitchEntity(HonEntity, SwitchEntity): setting.min if isinstance(setting, HonParameterRange) else "0" ) self.async_write_ha_state() + if self._device.appliance_type in ["AC"]: + self._device.commands["startProgram"].send() await self.coordinator.async_refresh() else: await self._device.commands[self.entity_description.turn_off_key].send() diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index ffac5ea..084c556 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -154,6 +154,17 @@ }, "water_current": { "name": "Efektivní využívání vody Aktuální" + }, + "mach_modes_ac": { + "state": { + "0": "Auto", + "1": "Chlazení", + "2": "Chlazení", + "3": "Odvlhčování", + "4": "Vytápění", + "5": "Ventilátor", + "6": "Ventilátor" + } } }, "select": { @@ -821,6 +832,44 @@ }, "dry_time": { "name": "Doba sušení" + }, + "eco_pilot": { + "state": { + "0": "Vypnuto", + "1": "Vyhybání", + "2": "Sledování" + }, + "name": "Senzor osob" + }, + "fan_mode": { + "state": { + "1": "Vysoký", + "2": "Střední ", + "3": "Nízký", + "4": "Auto", + "5": "Auto" + } + }, + "programs_ac": { + "state": { + "iot_10_heating": "Funkce Vytápění 10 °C", + "iot_auto": "Auto", + "iot_cool": "Chlazení", + "iot_dry": "Odvlhčování", + "iot_fan": "Ventilátor", + "iot_heat": "Vytápění", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Automatické čištění", + "iot_self_clean": "Samočištění zamrazením", + "iot_self_clean_56": "Samočištění 56°C sterilizace ", + "iot_simple_start": "Spustit nyní", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + auto", + "iot_uv_and_cool": "UV + zchlazení", + "iot_uv_and_dry": "UV + odstranění vlhkosti", + "iot_uv_and_fan": "UV + ventilátor", + "iot_uv_and_heat": "UV + ohřev" + } } }, "switch": { @@ -874,6 +923,27 @@ }, "delay_time": { "name": "Odložené spuštění" + }, + "rapid_mode": { + "name": "Rychlý režim" + }, + "eco_mode": { + "name": "Režim ECO" + }, + "10_degree_heating": { + "name": "Funkce Vytápění 10 °C" + }, + "self_clean": { + "name": "Samočištění zamrazením" + }, + "self_clean_56": { + "name": "Samočištění 56°C sterilizace " + }, + "silent_mode": { + "name": "Tichý režim" + }, + "mute_mode": { + "name": "Tichý režim" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index 641fb45..f9a026e 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -154,6 +154,17 @@ }, "water_current": { "name": "Wasserverbrauch Aktuell" + }, + "mach_modes_ac": { + "state": { + "0": "Auto", + "1": "Kühl", + "2": "Kühl", + "3": "Trocken", + "4": "Heizen", + "5": "Ventilator", + "6": "Ventilator" + } } }, "select": { @@ -821,6 +832,44 @@ }, "dry_time": { "name": "Trocknungsdauer" + }, + "eco_pilot": { + "state": { + "0": "Aus", + "1": "Berührung vermeiden", + "2": "Folgen" + }, + "name": "Eco Pilot" + }, + "fan_mode": { + "state": { + "1": "Hoch", + "2": "Mittel ", + "3": "Niedrig", + "4": "Auto", + "5": "Auto" + } + }, + "programs_ac": { + "state": { + "iot_10_heating": "10°C Heizfunktion", + "iot_auto": "Auto", + "iot_cool": "Kühl", + "iot_dry": "Trocken", + "iot_fan": "Ventilator", + "iot_heat": "Heizen", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Selbst reinigen", + "iot_self_clean": "Self-Clean", + "iot_self_clean_56": "Steri-Clean 56°C", + "iot_simple_start": "Jetzt beginnen", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Auto", + "iot_uv_and_cool": "UV + Kalt", + "iot_uv_and_dry": "UV + Entfeuchter", + "iot_uv_and_fan": "UV + Gebläse", + "iot_uv_and_heat": "UV + Heizen" + } } }, "switch": { @@ -874,6 +923,27 @@ }, "delay_time": { "name": "Einschaltverzögerung" + }, + "rapid_mode": { + "name": "Schnellmodus" + }, + "eco_mode": { + "name": "ECO-Modus" + }, + "10_degree_heating": { + "name": "10°C Heizfunktion" + }, + "self_clean": { + "name": "Self-Clean" + }, + "self_clean_56": { + "name": "Steri-Clean 56°C" + }, + "silent_mode": { + "name": "Silent-Modus" + }, + "mute_mode": { + "name": "Stummer Modus" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index 1b3818b..d5f660a 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -154,6 +154,17 @@ }, "water_current": { "name": "Απόδοση νερού Current" + }, + "mach_modes_ac": { + "state": { + "0": "Αυτόματο", + "1": "Ψύξη", + "2": "Ψύξη", + "3": "Στέγνωμα", + "4": "Ζέστη", + "5": "Ανεμιστήρας", + "6": "Ανεμιστήρας" + } } }, "select": { @@ -821,6 +832,44 @@ }, "dry_time": { "name": "Χρόνος στεγνώματος" + }, + "eco_pilot": { + "state": { + "0": "Απενεργοποιηση", + "1": "Αποφύγετε την αφή", + "2": "Σας ακολουθεί" + }, + "name": "Οικολογικός πιλότος" + }, + "fan_mode": { + "state": { + "1": "Υψηλό", + "2": "Μέτριο ", + "3": "Χαμηλό", + "4": "Αυτόματο", + "5": "Αυτόματο" + } + }, + "programs_ac": { + "state": { + "iot_10_heating": "10° C Λειτουργία θέρμανσης", + "iot_auto": "Αυτόματο", + "iot_cool": "Ψύξη", + "iot_dry": "Στέγνωμα", + "iot_fan": "Ανεμιστήρας", + "iot_heat": "Ζέστη", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Αυτοκαθαρισμός", + "iot_self_clean": "Αυτοκαθαρισμός", + "iot_self_clean_56": "Steri-Clean 56°C", + "iot_simple_start": "Εκκίνηση τώρα", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Auto", + "iot_uv_and_cool": "UV + Ψύξη", + "iot_uv_and_dry": "UV + Αφυγραντήρας", + "iot_uv_and_fan": "UV + Ανεμιστήρας", + "iot_uv_and_heat": "UV + Θέρμανση" + } } }, "switch": { @@ -874,6 +923,27 @@ }, "delay_time": { "name": "Καθυστερημένη έναρξη" + }, + "rapid_mode": { + "name": "Ταχεία λειτουργία" + }, + "eco_mode": { + "name": "Λειτουργία Eco" + }, + "10_degree_heating": { + "name": "10° C Λειτουργία θέρμανσης" + }, + "self_clean": { + "name": "Αυτοκαθαρισμός" + }, + "self_clean_56": { + "name": "Steri-Clean 56°C" + }, + "silent_mode": { + "name": "Αθόρυβη λειτουργία" + }, + "mute_mode": { + "name": "Σίγαση λειτουργίας" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index bd6281c..ce3bf5e 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -213,6 +213,17 @@ }, "water_current": { "name": "Water efficiency Current" + }, + "mach_modes_ac": { + "state": { + "0": "Auto", + "1": "Cool", + "2": "Cool", + "3": "Dry", + "4": "Heat", + "5": "Fan", + "6": "Fan" + } } }, "switch": { @@ -266,6 +277,27 @@ }, "delay_time": { "name": "Delay Start" + }, + "rapid_mode": { + "name": "Rapid mode" + }, + "eco_mode": { + "name": "ECO mode" + }, + "10_degree_heating": { + "name": "10°C Heating function" + }, + "self_clean": { + "name": "Self-clean" + }, + "self_clean_56": { + "name": "Steri-Clean 56°C" + }, + "silent_mode": { + "name": "Silent mode" + }, + "mute_mode": { + "name": "Mute mode" } }, "select": { @@ -941,6 +973,44 @@ }, "dry_time": { "name": "Drying time" + }, + "eco_pilot": { + "state": { + "0": "Off", + "1": "Avoid touch", + "2": "Follow" + }, + "name": "Eco pilot" + }, + "fan_mode": { + "state": { + "1": "High", + "2": "Medium ", + "3": "Low", + "4": "Auto", + "5": "Auto" + } + }, + "programs_ac": { + "state": { + "iot_10_heating": "10°C Heating function", + "iot_auto": "Auto", + "iot_cool": "Cool", + "iot_dry": "Dry", + "iot_fan": "Fan", + "iot_heat": "Heat", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Self-purify", + "iot_self_clean": "Self-clean", + "iot_self_clean_56": "Steri-Clean 56°C", + "iot_simple_start": "Start now", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Auto", + "iot_uv_and_cool": "UV + Cold", + "iot_uv_and_dry": "UV + Dehumidifier", + "iot_uv_and_fan": "UV + Fan", + "iot_uv_and_heat": "UV + Heat" + } } }, "binary_sensor": { diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index 7770637..89e2aba 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -154,6 +154,17 @@ }, "water_current": { "name": "Eficiencia hídrica Actual" + }, + "mach_modes_ac": { + "state": { + "0": "Automático", + "1": "Frío", + "2": "Frío", + "3": "Deshumidificar", + "4": "Calor", + "5": "Ventilador", + "6": "Ventilador" + } } }, "select": { @@ -821,6 +832,44 @@ }, "dry_time": { "name": "Tiempo de secado" + }, + "eco_pilot": { + "state": { + "0": "Apagado", + "1": "Evitar el contacto", + "2": "Sígueme" + }, + "name": "Eco pilot" + }, + "fan_mode": { + "state": { + "1": "Alta", + "2": "Media ", + "3": "Baja", + "4": "Automático", + "5": "Automático" + } + }, + "programs_ac": { + "state": { + "iot_10_heating": "Función de calentamiento de 10° C", + "iot_auto": "Automático", + "iot_cool": "Frío", + "iot_dry": "Deshumidificar", + "iot_fan": "Ventilador", + "iot_heat": "Calor", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Autopurificar", + "iot_self_clean": "Autolimpieza", + "iot_self_clean_56": "Limpieza desinfectante 56°", + "iot_simple_start": "Iniciar ahora", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Automático", + "iot_uv_and_cool": "UV + Frío", + "iot_uv_and_dry": "UV + Deshumidificador", + "iot_uv_and_fan": "UV + Ventilador", + "iot_uv_and_heat": "UV + Calor" + } } }, "switch": { @@ -874,6 +923,27 @@ }, "delay_time": { "name": "Inicio Diferido" + }, + "rapid_mode": { + "name": "Modo rápido" + }, + "eco_mode": { + "name": "Modo ECO" + }, + "10_degree_heating": { + "name": "Función de calentamiento de 10° C" + }, + "self_clean": { + "name": "Autolimpieza" + }, + "self_clean_56": { + "name": "Limpieza desinfectante 56°" + }, + "silent_mode": { + "name": "Modo silencioso" + }, + "mute_mode": { + "name": "Modo silencio" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index 1ffd1a2..faea7f7 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -154,6 +154,17 @@ }, "water_current": { "name": "Efficacité en eau Actuel" + }, + "mach_modes_ac": { + "state": { + "0": "Automatique", + "1": "Frais", + "2": "Frais", + "3": "Sec", + "4": "Chaleur", + "5": "Ventilateur", + "6": "Ventilateur" + } } }, "select": { @@ -821,6 +832,44 @@ }, "dry_time": { "name": "Temps de séchage" + }, + "eco_pilot": { + "state": { + "0": "Désactivé", + "1": "Évitez de toucher", + "2": "Suivi" + }, + "name": "Pilote éco" + }, + "fan_mode": { + "state": { + "1": "Élevé", + "2": "Intermédiaire ", + "3": "Faible", + "4": "Automatique", + "5": "Automatique" + } + }, + "programs_ac": { + "state": { + "iot_10_heating": "Fonction Chauffage 10 °C", + "iot_auto": "Automatique", + "iot_cool": "Frais", + "iot_dry": "Sec", + "iot_fan": "Ventilateur", + "iot_heat": "Chaleur", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Auto-purification", + "iot_self_clean": "Auto-nettoyage", + "iot_self_clean_56": "Steri-Clean 56°C", + "iot_simple_start": "Démarrez maintenant", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Auto", + "iot_uv_and_cool": "UV + Froid", + "iot_uv_and_dry": "UV + Déshumidificateur", + "iot_uv_and_fan": "UV + ventilateur", + "iot_uv_and_heat": "UV + Chaleur" + } } }, "switch": { @@ -874,6 +923,27 @@ }, "delay_time": { "name": "Démarrage Différé" + }, + "rapid_mode": { + "name": "Mode rapide" + }, + "eco_mode": { + "name": "Mode Eco" + }, + "10_degree_heating": { + "name": "Fonction Chauffage 10 °C" + }, + "self_clean": { + "name": "Auto-nettoyage" + }, + "self_clean_56": { + "name": "Steri-Clean 56°C" + }, + "silent_mode": { + "name": "Mode silencieux" + }, + "mute_mode": { + "name": "Mode muet" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index afa67d3..0589ec1 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -154,6 +154,17 @@ }, "water_current": { "name": "Water efficiency Current" + }, + "mach_modes_ac": { + "state": { + "0": "Auto", + "1": "Cool", + "2": "Cool", + "3": "Dry", + "4": "Heat", + "5": "Fan", + "6": "Fan" + } } }, "select": { @@ -420,6 +431,28 @@ }, "dry_time": { "name": "זמן ייבוש" + }, + "eco_pilot": { + "state": { + "0": "Off", + "1": "Avoid touch", + "2": "Follow" + }, + "name": "Eco pilot" + }, + "fan_mode": { + "state": { + "1": "High", + "2": "Medium ", + "3": "Low", + "4": "Auto", + "5": "Auto" + } + }, + "programs_ac": { + "state": { + "iot_simple_start": "התחל עכשיו" + } } }, "switch": { @@ -473,6 +506,27 @@ }, "delay_time": { "name": "Delay Start" + }, + "rapid_mode": { + "name": "Rapid mode" + }, + "eco_mode": { + "name": "ECO mode" + }, + "10_degree_heating": { + "name": "10°C Heating function" + }, + "self_clean": { + "name": "Self-clean" + }, + "self_clean_56": { + "name": "Steri-Clean 56°C" + }, + "silent_mode": { + "name": "Silent mode" + }, + "mute_mode": { + "name": "Mute mode" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index fcc04ea..e7c042a 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -154,6 +154,17 @@ }, "water_current": { "name": "Učinkovitost vode Current" + }, + "mach_modes_ac": { + "state": { + "0": "Automatski", + "1": "Hlađenje", + "2": "Hlađenje", + "3": "Sušenje", + "4": "Zagrijavanje", + "5": "Ventilator", + "6": "Ventilator" + } } }, "select": { @@ -821,6 +832,44 @@ }, "dry_time": { "name": "Trajanje sušenja" + }, + "eco_pilot": { + "state": { + "0": "Isključeno", + "1": "Izbjegavajte dodir", + "2": "Pratite" + }, + "name": "Eko-pilot" + }, + "fan_mode": { + "state": { + "1": "Visoko", + "2": "Srednje ", + "3": "Nisko", + "4": "Automatski", + "5": "Automatski" + } + }, + "programs_ac": { + "state": { + "iot_10_heating": "Funkcija grijanja na 10 °C", + "iot_auto": "Automatski", + "iot_cool": "Hlađenje", + "iot_dry": "Sušenje", + "iot_fan": "Ventilator", + "iot_heat": "Zagrijavanje", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Sampročišćavanje", + "iot_self_clean": "Samočišćenje", + "iot_self_clean_56": "Sterilno čišćenje 56°C", + "iot_simple_start": "Pokreni sada", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + automatski", + "iot_uv_and_cool": "UV + hladno", + "iot_uv_and_dry": "UV + odvlaživač", + "iot_uv_and_fan": "UV + ventilator", + "iot_uv_and_heat": "UV + grijanje" + } } }, "switch": { @@ -874,6 +923,27 @@ }, "delay_time": { "name": "Odgoda početka" + }, + "rapid_mode": { + "name": "Brzi način rada" + }, + "eco_mode": { + "name": "Način rada ECO" + }, + "10_degree_heating": { + "name": "Funkcija grijanja na 10 °C" + }, + "self_clean": { + "name": "Samočišćenje" + }, + "self_clean_56": { + "name": "Sterilno čišćenje 56°C" + }, + "silent_mode": { + "name": "Tihi način rada" + }, + "mute_mode": { + "name": "Bešumni način rada" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index 001df55..67d44df 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -206,6 +206,17 @@ }, "water_current": { "name": "Efficienza idrica Odierna" + }, + "mach_modes_ac": { + "state": { + "0": "Auto", + "1": "Freddo", + "2": "Freddo", + "3": "Deumidificazione", + "4": "Caldo", + "5": "Ventilatore", + "6": "Ventilatore" + } } }, "select": { @@ -873,6 +884,44 @@ }, "dry_time": { "name": "Tempo asciugatura" + }, + "eco_pilot": { + "state": { + "0": "Spento", + "1": "Avoid touch", + "2": "Segui" + }, + "name": "Eco pilot" + }, + "fan_mode": { + "state": { + "1": "Alto", + "2": "Medio", + "3": "Basso", + "4": "Auto", + "5": "Auto" + } + }, + "programs_ac": { + "state": { + "iot_10_heating": "Funzione 10°C Heating ", + "iot_auto": "Auto", + "iot_cool": "Freddo", + "iot_dry": "Deumidificazione", + "iot_fan": "Ventilatore", + "iot_heat": "Caldo", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Self purify", + "iot_self_clean": "Self clean", + "iot_self_clean_56": "Steri-Clean 56°C", + "iot_simple_start": "Avvia ora", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Auto", + "iot_uv_and_cool": "UV + Freddo", + "iot_uv_and_dry": "UV + Deumidificatore", + "iot_uv_and_fan": "UV + Ventola", + "iot_uv_and_heat": "UV + Caldo" + } } }, "switch": { @@ -926,6 +975,27 @@ }, "delay_time": { "name": "Utilizzo nelle ore notturne" + }, + "rapid_mode": { + "name": "Modalità rapida" + }, + "eco_mode": { + "name": "Modalità ECO" + }, + "10_degree_heating": { + "name": "Funzione 10°C Heating " + }, + "self_clean": { + "name": "Self clean" + }, + "self_clean_56": { + "name": "Steri-Clean 56°C" + }, + "silent_mode": { + "name": "Modalità silenziosa" + }, + "mute_mode": { + "name": "Modalità tacita" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index c5666f2..8284d2a 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -154,6 +154,17 @@ }, "water_current": { "name": "Efficiënt waterverbruik Huidige" + }, + "mach_modes_ac": { + "state": { + "0": "Automatisch", + "1": "Koelen", + "2": "Koelen", + "3": "Drogen", + "4": "Verwarming", + "5": "Ventilator", + "6": "Ventilator" + } } }, "select": { @@ -821,6 +832,44 @@ }, "dry_time": { "name": "Droogtijd" + }, + "eco_pilot": { + "state": { + "0": "Uit", + "1": "Voorkom aanraking", + "2": "Volgen" + }, + "name": "Eco pilot" + }, + "fan_mode": { + "state": { + "1": "Hoog", + "2": "Gemiddeld ", + "3": "Laag", + "4": "Automatisch", + "5": "Automatisch" + } + }, + "programs_ac": { + "state": { + "iot_10_heating": "10°C-verwarmingsfunctie", + "iot_auto": "Automatisch", + "iot_cool": "Koelen", + "iot_dry": "Drogen", + "iot_fan": "Ventilator", + "iot_heat": "Verwarming", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Zelfzuivering", + "iot_self_clean": "Zelfreiniging", + "iot_self_clean_56": "Sterilisatie reiniging 56°C", + "iot_simple_start": "Start nu", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Auto", + "iot_uv_and_cool": "UV + Koud", + "iot_uv_and_dry": "UV + Ontvochtiger", + "iot_uv_and_fan": "UV + Hetelucht", + "iot_uv_and_heat": "UV + Warmte" + } } }, "switch": { @@ -874,6 +923,27 @@ }, "delay_time": { "name": "Vertraag Start" + }, + "rapid_mode": { + "name": "Snelle modus" + }, + "eco_mode": { + "name": "ECO-modus" + }, + "10_degree_heating": { + "name": "10°C-verwarmingsfunctie" + }, + "self_clean": { + "name": "Zelfreiniging" + }, + "self_clean_56": { + "name": "Sterilisatie reiniging 56°C" + }, + "silent_mode": { + "name": "Stille modus" + }, + "mute_mode": { + "name": "Dempmodus" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index b3ba23e..fd22571 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -154,6 +154,17 @@ }, "water_current": { "name": "Wydajność zużycia wody Aktualne" + }, + "mach_modes_ac": { + "state": { + "0": "Auto", + "1": "Chłodzenie", + "2": "Chłodzenie", + "3": "Osuszanie", + "4": "Grzanie", + "5": "Wentylator", + "6": "Wentylator" + } } }, "select": { @@ -821,6 +832,44 @@ }, "dry_time": { "name": "Czas suszenia" + }, + "eco_pilot": { + "state": { + "0": "Wyłącz", + "1": "Unikanie kontaktu", + "2": "Podążanie" + }, + "name": "Eco pilot" + }, + "fan_mode": { + "state": { + "1": "Wysoki", + "2": "Średni ", + "3": "Niski", + "4": "Auto", + "5": "Auto" + } + }, + "programs_ac": { + "state": { + "iot_10_heating": "Funkcja grzania 10°C", + "iot_auto": "Auto", + "iot_cool": "Chłodzenie", + "iot_dry": "Osuszanie", + "iot_fan": "Wentylator", + "iot_heat": "Grzanie", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Self Purify", + "iot_self_clean": "Self Clean", + "iot_self_clean_56": "Steri Clean 56°C", + "iot_simple_start": "Uruchom teraz", + "iot_uv": "Sterylizacja UVC", + "iot_uv_and_auto": "UV + automat", + "iot_uv_and_cool": "UV + chłodzenie", + "iot_uv_and_dry": "UV + osuszacz powietrza", + "iot_uv_and_fan": "UV + wentylator", + "iot_uv_and_heat": "UV + podgrzewanie" + } } }, "switch": { @@ -874,6 +923,27 @@ }, "delay_time": { "name": "Opóźniony Start" + }, + "rapid_mode": { + "name": "Tryb szybki" + }, + "eco_mode": { + "name": "Tryb ECO" + }, + "10_degree_heating": { + "name": "Funkcja grzania 10°C" + }, + "self_clean": { + "name": "Self Clean" + }, + "self_clean_56": { + "name": "Steri Clean 56°C" + }, + "silent_mode": { + "name": "Tryb cichy" + }, + "mute_mode": { + "name": "Tryb wyciszenia" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index 36fd66a..4ce56f2 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -154,6 +154,17 @@ }, "water_current": { "name": "Eficiência da água Data" + }, + "mach_modes_ac": { + "state": { + "0": "Auto", + "1": "Frio", + "2": "Frio", + "3": "Secar", + "4": "Calor", + "5": "Ventilador", + "6": "Ventilador" + } } }, "select": { @@ -821,6 +832,44 @@ }, "dry_time": { "name": "Tempo de secagem" + }, + "eco_pilot": { + "state": { + "0": "Off", + "1": "Evitar o toque", + "2": "Seguir" + }, + "name": "Eco pilot" + }, + "fan_mode": { + "state": { + "1": "Alta", + "2": "Média ", + "3": "Baixa", + "4": "Auto", + "5": "Auto" + } + }, + "programs_ac": { + "state": { + "iot_10_heating": "Função de aquecimento de 10 °C", + "iot_auto": "Auto", + "iot_cool": "Frio", + "iot_dry": "Secar", + "iot_fan": "Ventilador", + "iot_heat": "Calor", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Autopurificação", + "iot_self_clean": "Autolimpeza", + "iot_self_clean_56": "Steri-Clean 56°C", + "iot_simple_start": "Iniciar agora", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Auto", + "iot_uv_and_cool": "UV + Frio", + "iot_uv_and_dry": "UV + Desumidificador", + "iot_uv_and_fan": "UV + Ventilação", + "iot_uv_and_heat": "UV + Calor" + } } }, "switch": { @@ -874,6 +923,27 @@ }, "delay_time": { "name": "Início adiado" + }, + "rapid_mode": { + "name": "Modo rápido" + }, + "eco_mode": { + "name": "Modo ECO" + }, + "10_degree_heating": { + "name": "Função de aquecimento de 10 °C" + }, + "self_clean": { + "name": "Autolimpeza" + }, + "self_clean_56": { + "name": "Steri-Clean 56°C" + }, + "silent_mode": { + "name": "Modo Silencioso" + }, + "mute_mode": { + "name": "Modo Mute" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index 7b2a432..c56b437 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -154,6 +154,17 @@ }, "water_current": { "name": "Eficiența apei Current" + }, + "mach_modes_ac": { + "state": { + "0": "Automat", + "1": "Răcire", + "2": "Răcire", + "3": "Uscare", + "4": "Încălzire", + "5": "Ventilare", + "6": "Ventilare" + } } }, "select": { @@ -821,6 +832,44 @@ }, "dry_time": { "name": "Timp de uscare" + }, + "eco_pilot": { + "state": { + "0": "Oprit", + "1": "Evitați atingerea", + "2": "Urmărire" + }, + "name": "Eco pilot" + }, + "fan_mode": { + "state": { + "1": "Ridicat", + "2": "Mediu ", + "3": "Scăzut", + "4": "Automat", + "5": "Automat" + } + }, + "programs_ac": { + "state": { + "iot_10_heating": "Funcția de încălzire la 10 °C", + "iot_auto": "Automat", + "iot_cool": "Răcire", + "iot_dry": "Uscare", + "iot_fan": "Ventilare", + "iot_heat": "Încălzire", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Auto-purificare", + "iot_self_clean": "Autocurățare", + "iot_self_clean_56": "Curățare-sterilizare la 56°C", + "iot_simple_start": "Începeți acum", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + automat", + "iot_uv_and_cool": "UV + răcire", + "iot_uv_and_dry": "UV + dezumidificator", + "iot_uv_and_fan": "UV + ventilator", + "iot_uv_and_heat": "UV + încălzire" + } } }, "switch": { @@ -874,6 +923,27 @@ }, "delay_time": { "name": "Pornire întârziată" + }, + "rapid_mode": { + "name": "Modul rapid" + }, + "eco_mode": { + "name": "Modul Eco" + }, + "10_degree_heating": { + "name": "Funcția de încălzire la 10 °C" + }, + "self_clean": { + "name": "Autocurățare" + }, + "self_clean_56": { + "name": "Curățare-sterilizare la 56°C" + }, + "silent_mode": { + "name": "Modul silențios" + }, + "mute_mode": { + "name": "Modul mut" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index e97bd7f..154d3c6 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -154,6 +154,17 @@ }, "water_current": { "name": "Эффективность расхода воды Текущий" + }, + "mach_modes_ac": { + "state": { + "0": "Авто", + "1": "Охлаждение", + "2": "Охлаждение", + "3": "Сушка", + "4": "Нагрев", + "5": "Вентилятор", + "6": "Вентилятор" + } } }, "select": { @@ -821,6 +832,44 @@ }, "dry_time": { "name": "Время сушки" + }, + "eco_pilot": { + "state": { + "0": "ВЫКЛ", + "1": "Не прикасайтесь", + "2": "Следование" + }, + "name": "Eco pilot" + }, + "fan_mode": { + "state": { + "1": "Высокий", + "2": "Средний ", + "3": "Низкий", + "4": "Авто", + "5": "Авто" + } + }, + "programs_ac": { + "state": { + "iot_10_heating": "Функция нагрева до 10°C", + "iot_auto": "Авто", + "iot_cool": "Охлаждение", + "iot_dry": "Сушка", + "iot_fan": "Вентилятор", + "iot_heat": "Нагрев", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Самоочищение", + "iot_self_clean": "Самоочистка", + "iot_self_clean_56": "Steri-Clean 56°C", + "iot_simple_start": "Пуск сейчас", + "iot_uv": "Ультрафиолет", + "iot_uv_and_auto": "УФ + Авто", + "iot_uv_and_cool": "УФ + Охлаждение", + "iot_uv_and_dry": "УФ + Осушитель", + "iot_uv_and_fan": "УФ + Вентилятор", + "iot_uv_and_heat": "УФ + Нагрев" + } } }, "switch": { @@ -874,6 +923,27 @@ }, "delay_time": { "name": "Отложенный пуск" + }, + "rapid_mode": { + "name": "Быстрый режим" + }, + "eco_mode": { + "name": "Режим ECO" + }, + "10_degree_heating": { + "name": "Функция нагрева до 10°C" + }, + "self_clean": { + "name": "Самоочистка" + }, + "self_clean_56": { + "name": "Steri-Clean 56°C" + }, + "silent_mode": { + "name": "Тихий режим" + }, + "mute_mode": { + "name": "Беззвучный режим" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index 46739d3..2ef0d42 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -154,6 +154,17 @@ }, "water_current": { "name": "Účinnosť vody Current" + }, + "mach_modes_ac": { + "state": { + "0": "Automatika", + "1": "Chladiť", + "2": "Chladiť", + "3": "Sušiť", + "4": "Ohrev", + "5": "Ventilátor", + "6": "Ventilátor" + } } }, "select": { @@ -821,6 +832,44 @@ }, "dry_time": { "name": "Čas sušenia" + }, + "eco_pilot": { + "state": { + "0": "Off (Vypnúť)", + "1": "Nedotýkať sa", + "2": "Nasledovať" + }, + "name": "Ekologický pilot" + }, + "fan_mode": { + "state": { + "1": "Vysoká", + "2": "Stredne ťažká ", + "3": "Nízka", + "4": "Automatika", + "5": "Automatika" + } + }, + "programs_ac": { + "state": { + "iot_10_heating": "Funkcia vykurovania na 10 °C", + "iot_auto": "Automatika", + "iot_cool": "Chladiť", + "iot_dry": "Sušiť", + "iot_fan": "Ventilátor", + "iot_heat": "Ohrev", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Samoprečisťovanie", + "iot_self_clean": "Samočistenie", + "iot_self_clean_56": "Sterilné čistenie 56°C", + "iot_simple_start": "Spustiť teraz", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Auto", + "iot_uv_and_cool": "UV + Studené", + "iot_uv_and_dry": "UV + Odvlhčovač", + "iot_uv_and_fan": "UV + Ventilátor", + "iot_uv_and_heat": "UV + Ohrev" + } } }, "switch": { @@ -874,6 +923,27 @@ }, "delay_time": { "name": "Odložený štart" + }, + "rapid_mode": { + "name": "Rýchly režim" + }, + "eco_mode": { + "name": "Režim ECO" + }, + "10_degree_heating": { + "name": "Funkcia vykurovania na 10 °C" + }, + "self_clean": { + "name": "Samočistenie" + }, + "self_clean_56": { + "name": "Sterilné čistenie 56°C" + }, + "silent_mode": { + "name": "Tichý režim" + }, + "mute_mode": { + "name": "Stlmený režim" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index 98be657..c2e8729 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -154,6 +154,17 @@ }, "water_current": { "name": "Učinkovita raba vode Current" + }, + "mach_modes_ac": { + "state": { + "0": "Samodejno", + "1": "Hlajenje", + "2": "Hlajenje", + "3": "Sušenje", + "4": "Segrevanje", + "5": "Ventilator", + "6": "Ventilator" + } } }, "select": { @@ -821,6 +832,44 @@ }, "dry_time": { "name": "Čas sušenja" + }, + "eco_pilot": { + "state": { + "0": "Izklop", + "1": "Brez dotika", + "2": "Sledenje" + }, + "name": "Eko pilot" + }, + "fan_mode": { + "state": { + "1": "Visoko", + "2": "Srednje ", + "3": "Nizko", + "4": "Samodejno", + "5": "Samodejno" + } + }, + "programs_ac": { + "state": { + "iot_10_heating": "Funkcija ogrevanja pri 10 °C", + "iot_auto": "Samodejno", + "iot_cool": "Hlajenje", + "iot_dry": "Sušenje", + "iot_fan": "Ventilator", + "iot_heat": "Segrevanje", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Samoočiščevanje", + "iot_self_clean": "Samodejno čiščenje", + "iot_self_clean_56": "Sterilno čiščenje 56°C", + "iot_simple_start": "Zaženi zdaj", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + samodejno", + "iot_uv_and_cool": "UV + hlajenje", + "iot_uv_and_dry": "UV + razvlaževanje", + "iot_uv_and_fan": "UV + ventilator", + "iot_uv_and_heat": "UV + gretje" + } } }, "switch": { @@ -874,6 +923,27 @@ }, "delay_time": { "name": "S funkcijo Zamik vklopa je možno odložiti začetek sušilnega cikla od 1 do 24 ur. Na zaslonu se prikaže izbrana zakasnitev. Da bi videli kako se zmanjšuje iz ure v uro, pritisnite ZAČETEK. Na ta način bo perilo suho takrat, ko boste to želeli, in zagnali cikel, ko vam to najbolj ustreza, celo ponoči." + }, + "rapid_mode": { + "name": "Hitri način" + }, + "eco_mode": { + "name": "Način ECO" + }, + "10_degree_heating": { + "name": "Funkcija ogrevanja pri 10 °C" + }, + "self_clean": { + "name": "Samodejno čiščenje" + }, + "self_clean_56": { + "name": "Sterilno čiščenje 56°C" + }, + "silent_mode": { + "name": "Tihi način" + }, + "mute_mode": { + "name": "Način z izklopljenim zvokom" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index d9e8994..eb5390e 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -154,6 +154,17 @@ }, "water_current": { "name": "Efikasnost vode Current" + }, + "mach_modes_ac": { + "state": { + "0": "Automatski", + "1": "Hlađenje", + "2": "Hlađenje", + "3": "Sušenje", + "4": "Toplota", + "5": "Ventilator", + "6": "Ventilator" + } } }, "select": { @@ -821,6 +832,44 @@ }, "dry_time": { "name": "Vreme sušenja" + }, + "eco_pilot": { + "state": { + "0": "Isključeno", + "1": "Izbegavajte dodir", + "2": "Pratiti" + }, + "name": "Eko pilot" + }, + "fan_mode": { + "state": { + "1": "Visoko", + "2": "Srednje ", + "3": "Nisko", + "4": "Automatski", + "5": "Automatski" + } + }, + "programs_ac": { + "state": { + "iot_10_heating": "Funkcija grejanja – 10° C", + "iot_auto": "Automatski", + "iot_cool": "Hlađenje", + "iot_dry": "Sušenje", + "iot_fan": "Ventilator", + "iot_heat": "Toplota", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Samopročišćavanje", + "iot_self_clean": "Samočišćenje", + "iot_self_clean_56": "Sterilno čišćenje 56°C", + "iot_simple_start": "Pokrenuti sada", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + automatsko", + "iot_uv_and_cool": "UV+ hladno", + "iot_uv_and_dry": "UV + odvlaživač", + "iot_uv_and_fan": "UV + ventilator", + "iot_uv_and_heat": "UV + toplota" + } } }, "switch": { @@ -874,6 +923,27 @@ }, "delay_time": { "name": "Odloženi start" + }, + "rapid_mode": { + "name": "Brzi režim rada" + }, + "eco_mode": { + "name": "ECO režim" + }, + "10_degree_heating": { + "name": "Funkcija grejanja – 10° C" + }, + "self_clean": { + "name": "Samočišćenje" + }, + "self_clean_56": { + "name": "Sterilno čišćenje 56°C" + }, + "silent_mode": { + "name": "Tihi režim" + }, + "mute_mode": { + "name": "Režim isključenog zvuka" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index 9b37205..96e3472 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -154,6 +154,17 @@ }, "water_current": { "name": "Su verimliliği Current" + }, + "mach_modes_ac": { + "state": { + "0": "Otomatik", + "1": "Soğuk", + "2": "Soğuk", + "3": "Kuru", + "4": "Isı", + "5": "Fan", + "6": "Fan" + } } }, "select": { @@ -821,6 +832,44 @@ }, "dry_time": { "name": "Kurutma zamanı" + }, + "eco_pilot": { + "state": { + "0": "Kapali", + "1": "Dokunmaktan kaçının", + "2": "Takip et" + }, + "name": "Eko pilot" + }, + "fan_mode": { + "state": { + "1": "Yüksek", + "2": "Orta ", + "3": "Düşük", + "4": "Otomatik", + "5": "Otomatik" + } + }, + "programs_ac": { + "state": { + "iot_10_heating": "10°C Isıtma fonksiyonu", + "iot_auto": "Otomatik", + "iot_cool": "Soğuk", + "iot_dry": "Kuru", + "iot_fan": "Fan", + "iot_heat": "Isı", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Kendi kendini arındırma", + "iot_self_clean": "Kendi kendini temizleme", + "iot_self_clean_56": "Steril Temizleme 56°C", + "iot_simple_start": "Şimdi başlat", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Otomatik", + "iot_uv_and_cool": "UV + Soğuk", + "iot_uv_and_dry": "UV + Nem giderici", + "iot_uv_and_fan": "UV + Fan", + "iot_uv_and_heat": "UV + Isıtma" + } } }, "switch": { @@ -874,6 +923,27 @@ }, "delay_time": { "name": "Gecikmeli Başlatma" + }, + "rapid_mode": { + "name": "Hızlı mod" + }, + "eco_mode": { + "name": "ECO modu" + }, + "10_degree_heating": { + "name": "10°C Isıtma fonksiyonu" + }, + "self_clean": { + "name": "Kendi kendini temizleme" + }, + "self_clean_56": { + "name": "Steril Temizleme 56°C" + }, + "silent_mode": { + "name": "Sessiz mod" + }, + "mute_mode": { + "name": "Ses Kapalı mod" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index a23879e..9a99238 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -154,6 +154,17 @@ }, "water_current": { "name": "用水效率 Current" + }, + "mach_modes_ac": { + "state": { + "0": "自动", + "1": "冷却", + "2": "冷却", + "3": "烘干", + "4": "加热", + "5": "风扇", + "6": "风扇" + } } }, "select": { @@ -821,6 +832,44 @@ }, "dry_time": { "name": "烘干时间" + }, + "eco_pilot": { + "state": { + "0": "关闭", + "1": "避免触摸", + "2": "跟随" + }, + "name": "节能模式" + }, + "fan_mode": { + "state": { + "1": "高", + "2": "中 ", + "3": "低", + "4": "自动", + "5": "自动" + } + }, + "programs_ac": { + "state": { + "iot_10_heating": "10°C 加热功能", + "iot_auto": "自动", + "iot_cool": "冷却", + "iot_dry": "烘干", + "iot_fan": "风扇", + "iot_heat": "加热", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "自净", + "iot_self_clean": "自洁", + "iot_self_clean_56": "无菌清洁 56°C", + "iot_simple_start": "立即启动", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + 自动", + "iot_uv_and_cool": "UV + 制冷", + "iot_uv_and_dry": "UV + 减湿器", + "iot_uv_and_fan": "UV + 风扇", + "iot_uv_and_heat": "UV + 加热" + } } }, "switch": { @@ -874,6 +923,27 @@ }, "delay_time": { "name": "延时启动" + }, + "rapid_mode": { + "name": "快速模式" + }, + "eco_mode": { + "name": "ECO 模式" + }, + "10_degree_heating": { + "name": "10°C 加热功能" + }, + "self_clean": { + "name": "自洁" + }, + "self_clean_56": { + "name": "无菌清洁 56°C" + }, + "silent_mode": { + "name": "夜静模式" + }, + "mute_mode": { + "name": "静音模式" } }, "binary_sensor": { diff --git a/scripts/generate_translation.py b/scripts/generate_translation.py index 3077c43..f7126bc 100755 --- a/scripts/generate_translation.py +++ b/scripts/generate_translation.py @@ -100,17 +100,47 @@ TUMBLE_DRYER_DRY_LEVEL = { 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", +} + 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, } -SELECT = {"dry_levels": TUMBLE_DRYER_DRY_LEVEL} +SELECT = { + "dry_levels": TUMBLE_DRYER_DRY_LEVEL, + "eco_pilot": AC_HUMAN_SENSE, + "fan_mode": AC_FAN_MODE, +} PROGRAMS = { + "programs_ac": "PROGRAMS.AC", "programs_dw": "PROGRAMS.DW", "programs_ih": "PROGRAMS.IH", "programs_ov": "PROGRAMS.OV", @@ -137,6 +167,13 @@ NAMES = { "pause": "GENERAL.PAUSE_PROGRAM", "keep_fresh": "GLOBALS.APPLIANCE_STATUS.TUMBLING", "delay_time": "HINTS.TIPS_TIME_ENERGY_SAVING.TIPS_USE_AT_NIGHT_TITLE", + "rapid_mode": "AC.PROGRAM_CARD.RAPID", + "eco_mode": "AC.PROGRAM_CARD.ECO_MODE", + "10_degree_heating": "PROGRAMS.AC.IOT_10_HEATING", + "self_clean": "PROGRAMS.AC.IOT_SELF_CLEAN", + "self_clean_56": "PROGRAMS.AC.IOT_SELF_CLEAN_56", + "silent_mode": "AC.PROGRAM_DETAIL.SILENT_MODE", + "mute_mode": "AC.PROGRAM_DETAIL.MUTE_MODE", }, "binary_sensor": { "door_lock": "WASHING_CMD&CTRL.CHECK_UP_RESULTS.DOOR_LOCK", @@ -171,6 +208,7 @@ NAMES = { "programs_ov": "WC.SET_PROGRAM.PROGRAM", "programs_td": "WC.SET_PROGRAM.PROGRAM", "programs_wm": "WC.SET_PROGRAM.PROGRAM", + "eco_pilot": "AC.PROGRAM_DETAIL.ECO_PILOT", }, "sensor": { "dry_levels": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_LEVEL", -- 2.39.5 From 2802bcad25bba45e84d39e66bcbe832a7ee3da49 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sun, 7 May 2023 00:52:54 +0200 Subject: [PATCH 077/205] Fix errors, bump pyhon --- README.md | 2 ++ custom_components/hon/climate.py | 6 +++--- custom_components/hon/const.py | 20 ++++++++++++-------- custom_components/hon/manifest.json | 4 ++-- custom_components/hon/number.py | 2 +- custom_components/hon/select.py | 3 ++- custom_components/hon/sensor.py | 9 +++++++++ custom_components/hon/switch.py | 2 +- info.md | 1 + requirements_dev.txt | 3 +++ 10 files changed, 36 insertions(+), 16 deletions(-) create mode 100644 requirements_dev.txt diff --git a/README.md b/README.md index 22a39b9..1a0630d 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ Home Assistant integration for Haier hOn: support for Haier/Candy/Hoover home ap - [Oven](https://github.com/Andre0512/hon#oven) - [Hob](https://github.com/Andre0512/hon#hob) - [Dish Washer](https://github.com/Andre0512/hon#dish-washer) +- [Air conditioner](https://github.com/Andre0512/hon#air-conditioner) [BETA] ## Installation **Method 1:** [![Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?owner=Andre0512&repository=hon&category=integration) @@ -323,6 +324,7 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 | Main Wash Time | `clock-start` | `number` | `startProgram.mainWashTime` | | Powder Detergent Dose | `cup` | `sensor` | `startProgram.powderDetergentDose` | | Program | | `select` | `startProgram.program` | +| Remaining Time | `timer` | `sensor` | `startProgram.remainingTime` | | Rinse Iterations | `rotate-right` | `number` | `startProgram.rinseIterations` | | Soak Prewash Selection | `tshirt-crew` | `switch` | `startProgram.haier_SoakPrewashSelection` | | Spin speed | `numeric` | `select` | `startProgram.spinSpeed` | diff --git a/custom_components/hon/climate.py b/custom_components/hon/climate.py index 7a972d5..ef4c520 100644 --- a/custom_components/hon/climate.py +++ b/custom_components/hon/climate.py @@ -23,8 +23,8 @@ from homeassistant.core import callback from pyhon import Hon from pyhon.appliance import HonAppliance -from custom_components.hon.const import HON_HVAC_MODE, HON_FAN, HON_HVAC_PROGRAM, DOMAIN -from custom_components.hon.hon import HonEntity, HonCoordinator +from .const import HON_HVAC_MODE, HON_FAN, HON_HVAC_PROGRAM, DOMAIN +from .hon import HonEntity, HonCoordinator _LOGGER = logging.getLogger(__name__) @@ -47,7 +47,7 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non if descriptions := CLIMATES.get(device.appliance_type): for description in descriptions: - if not device.settings.get(description.key): + if description.key not in device.available_settings: continue appliances.extend( [HonClimateEntity(hass, coordinator, entry, device, description)] diff --git a/custom_components/hon/const.py b/custom_components/hon/const.py index 6a852a0..44b39d2 100644 --- a/custom_components/hon/const.py +++ b/custom_components/hon/const.py @@ -1,6 +1,10 @@ -from homeassistant.components.climate import HVACMode - -from custom_components.hon import climate +from homeassistant.components.climate import ( + HVACMode, + FAN_LOW, + FAN_MEDIUM, + FAN_HIGH, + FAN_AUTO, +) DOMAIN = "hon" @@ -33,9 +37,9 @@ HON_HVAC_PROGRAM = { } HON_FAN = { - "1": climate.FAN_HIGH, - "2": climate.FAN_MEDIUM, - "3": climate.FAN_LOW, - "4": climate.FAN_AUTO, - "5": climate.FAN_AUTO, + "1": FAN_HIGH, + "2": FAN_MEDIUM, + "3": FAN_LOW, + "4": FAN_AUTO, + "5": FAN_AUTO, } diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 0545a37..8713a73 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -6,6 +6,6 @@ "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn==0.9.1"], - "version": "0.7.0-beta.7" + "requirements": ["pyhOn==0.10.3"], + "version": "0.7.0-beta.8" } diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index 3983d45..5ee087b 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -162,7 +162,7 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non if descriptions := NUMBERS.get(device.appliance_type): for description in descriptions: - if not device.settings.get(description.key): + if description.key not in device.available_settings: continue appliances.extend( [HonNumberEntity(hass, coordinator, entry, device, description)] diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index 9c76e82..66150e2 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -1,6 +1,7 @@ from __future__ import annotations import logging +import time from pyhon import Hon from pyhon.appliance import HonAppliance @@ -128,7 +129,7 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non if descriptions := SELECTS.get(device.appliance_type): for description in descriptions: - if not device.settings.get(description.key): + if description.key not in device.available_settings: continue appliances.extend( [HonSelectEntity(hass, coordinator, entry, device, description)] diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index a04b5ba..8eee227 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -131,6 +131,15 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { entity_category=EntityCategory.CONFIG, translation_key="det_dust", ), + SensorEntityDescription( + key="startProgram.remainingTime", + name="Remaining Time", + icon="mdi:timer", + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=UnitOfTime.MINUTES, + entity_category=EntityCategory.CONFIG, + translation_key="remaining_time", + ), ), "TD": ( SensorEntityDescription( diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index dc2218c..b3393b7 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -271,7 +271,7 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non for description in descriptions: if ( device.get(description.key) is not None - or device.commands.get(description.key) is not None + or description.key in device.available_settings ): appliances.extend( [HonSwitchEntity(hass, coordinator, entry, device, description)] diff --git a/info.md b/info.md index 031620c..19a323f 100644 --- a/info.md +++ b/info.md @@ -11,6 +11,7 @@ Support for home appliances of Haier's mobile app hOn. - [Oven](https://github.com/Andre0512/hon#oven) - [Hob](https://github.com/Andre0512/hon#hob) - [Dish Washer](https://github.com/Andre0512/hon#dish-washer) +- [Air conditioner](https://github.com/Andre0512/hon#air-conditioner) [BETA] ## Tested Appliances - Haier WD90-B14TEAM5 diff --git a/requirements_dev.txt b/requirements_dev.txt new file mode 100644 index 0000000..ba9cd59 --- /dev/null +++ b/requirements_dev.txt @@ -0,0 +1,3 @@ +pyhOn +black +homeassistant -- 2.39.5 From c0fda4cd1b1bcb54f4d50d98b3cd875651a44f82 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sun, 7 May 2023 02:10:30 +0200 Subject: [PATCH 078/205] Add more control for hoover washing machine #34 --- README.md | 13 +++++++ custom_components/hon/binary_sensor.py | 2 +- custom_components/hon/number.py | 19 ++++++++++ custom_components/hon/sensor.py | 28 +++++++++++++++ custom_components/hon/switch.py | 42 ++++++++++++++++++++++ custom_components/hon/translations/cs.json | 27 ++++++++++++++ custom_components/hon/translations/de.json | 27 ++++++++++++++ custom_components/hon/translations/el.json | 27 ++++++++++++++ custom_components/hon/translations/en.json | 27 ++++++++++++++ custom_components/hon/translations/es.json | 27 ++++++++++++++ custom_components/hon/translations/fr.json | 27 ++++++++++++++ custom_components/hon/translations/he.json | 27 ++++++++++++++ custom_components/hon/translations/hr.json | 27 ++++++++++++++ custom_components/hon/translations/it.json | 27 ++++++++++++++ custom_components/hon/translations/nl.json | 27 ++++++++++++++ custom_components/hon/translations/pl.json | 27 ++++++++++++++ custom_components/hon/translations/pt.json | 27 ++++++++++++++ custom_components/hon/translations/ro.json | 27 ++++++++++++++ custom_components/hon/translations/ru.json | 27 ++++++++++++++ custom_components/hon/translations/sk.json | 27 ++++++++++++++ custom_components/hon/translations/sl.json | 27 ++++++++++++++ custom_components/hon/translations/sr.json | 27 ++++++++++++++ custom_components/hon/translations/tr.json | 27 ++++++++++++++ custom_components/hon/translations/zh.json | 27 ++++++++++++++ scripts/generate_translation.py | 10 +++++- 25 files changed, 625 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1a0630d..ec73065 100644 --- a/README.md +++ b/README.md @@ -252,6 +252,8 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 | Dry level | `hair-dryer` | `select` | `startProgram.dryLevel` | | Energy Label | `lightning-bolt-circle` | `sensor` | `startProgram.energyLabel` | | Program | | `select` | `startProgram.program` | +| Steam Type | `weather-dust` | `sensor` | `steamType` | +| Steam level | `smoke` | `sensor` | `steamLevel` | | Sterilization | `clock-start` | `switch` | `startProgram.sterilizationStatus` | | Suggested Load | `weight-kilogram` | `sensor` | `startProgram.suggestedLoadD` | | Temperature level | `thermometer` | `number` | `startProgram.tempLevel` | @@ -316,9 +318,15 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 #### Configs | Name | Icon | Entity | Key | | --- | --- | --- | --- | +| Acqua Plus | `water-plus` | `switch` | `startProgram.acquaplus` | +| Auto Dose | `cup` | `switch` | `startProgram.autoDetergentStatus` | | Delay Status | `timer-check` | `switch` | `startProgram.delayStatus` | | Delay Time | `timer-plus` | `number` | `startProgram.delayTime` | | Energy Label | `lightning-bolt-circle` | `sensor` | `startProgram.energyLabel` | +| Extra Rinse 1 | `numeric-1-box-multiple-outline` | `switch` | `extraRinse1` | +| Extra Rinse 2 | `numeric-2-box-multiple-outline` | `switch` | `extraRinse2` | +| Extra Rinse 3 | `numeric-3-box-multiple-outline` | `switch` | `extraRinse3` | +| Good Night | `weather-night` | `switch` | `goodNight` | | Keep Fresh | `refresh-circle` | `switch` | `startProgram.autoSoftenerStatus` | | Liquid Detergent Dose | `cup-water` | `sensor` | `startProgram.liquidDetergentDose` | | Main Wash Time | `clock-start` | `number` | `startProgram.mainWashTime` | @@ -328,13 +336,18 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 | Rinse Iterations | `rotate-right` | `number` | `startProgram.rinseIterations` | | Soak Prewash Selection | `tshirt-crew` | `switch` | `startProgram.haier_SoakPrewashSelection` | | Spin speed | `numeric` | `select` | `startProgram.spinSpeed` | +| Steam Level | `weather-dust` | `number` | `startProgram.steamLevel` | +| Suggested Load | `weight-kilogram` | `sensor` | `startProgram.suggestedLoadW` | | Suggested weight | `weight-kilogram` | `sensor` | `startProgram.weight` | | Temperature | `thermometer` | `select` | `startProgram.temp` | +| Water hard | `water` | `number` | `startProgram.waterHard` | +| lang | | `number` | `startProgram.lang` | #### Sensors | Name | Icon | Entity | Key | | --- | --- | --- | --- | | Current Electricity Used | `lightning-bolt` | `sensor` | `currentElectricityUsed` | | Current Water Used | `water` | `sensor` | `currentWaterUsed` | +| Dirt level | `liquid-spot` | `sensor` | `dirtyLevel` | | Door | | `binary_sensor` | `doorStatus` | | Door Lock | | `binary_sensor` | `doorLockStatus` | | Error | `math-log` | `sensor` | `errors` | diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index 7550f27..a04bd80 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -94,7 +94,7 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { key="goodNight", name="Good Night Mode", translation_key="good_night" ), HonBinarySensorEntityDescription( - key="acquaplus", name="Acqua Plus", translation_key="aqua_plus" + key="acquaplus", name="Acqua Plus", translation_key="acqua_plus" ), HonBinarySensorEntityDescription( key="anticrease", name="Anti-Crease", translation_key="anti_crease" diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index 5ee087b..23f832e 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -42,6 +42,25 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { native_unit_of_measurement=UnitOfTime.MINUTES, translation_key="wash_time", ), + NumberEntityDescription( + key="startProgram.steamLevel", + name="Steam Level", + icon="mdi:weather-dust", + entity_category=EntityCategory.CONFIG, + translation_key="steam_level", + ), + NumberEntityDescription( + key="startProgram.waterHard", + name="Water hard", + icon="mdi:water", + entity_category=EntityCategory.CONFIG, + translation_key="water_hard", + ), + NumberEntityDescription( + key="startProgram.lang", + name="lang", + entity_category=EntityCategory.CONFIG, + ), ), "TD": ( NumberEntityDescription( diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 8eee227..d5f125e 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -140,6 +140,21 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { entity_category=EntityCategory.CONFIG, translation_key="remaining_time", ), + SensorEntityDescription( + key="dirtyLevel", + name="Dirt level", + icon="mdi:liquid-spot", + translation_key="dirt_level", + ), + SensorEntityDescription( + key="startProgram.suggestedLoadW", + name="Suggested Load", + icon="mdi:weight-kilogram", + entity_category=EntityCategory.CONFIG, + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=UnitOfMass.KILOGRAMS, + translation_key="suggested_load", + ), ), "TD": ( SensorEntityDescription( @@ -208,6 +223,19 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { entity_category=EntityCategory.CONFIG, translation_key="energy_label", ), + SensorEntityDescription( + key="steamLevel", + name="Steam level", + icon="mdi:smoke", + entity_category=EntityCategory.CONFIG, + translation_key="steam_level", + ), + SensorEntityDescription( + key="steamType", + name="Steam Type", + icon="mdi:weather-dust", + entity_category=EntityCategory.CONFIG, + ), ), "WD": ( SensorEntityDescription( diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index b3393b7..ea1a88f 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -67,6 +67,48 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { icon="mdi:refresh-circle", translation_key="keep_fresh", ), + HonSwitchEntityDescription( + key="startProgram.autoDetergentStatus", + name="Auto Dose", + entity_category=EntityCategory.CONFIG, + icon="mdi:cup", + translation_key="auto_dose", + ), + HonSwitchEntityDescription( + key="startProgram.acquaplus", + name="Acqua Plus", + entity_category=EntityCategory.CONFIG, + icon="mdi:water-plus", + translation_key="acqua_plus", + ), + HonSwitchEntityDescription( + key="extraRinse1", + name="Extra Rinse 1", + entity_category=EntityCategory.CONFIG, + icon="mdi:numeric-1-box-multiple-outline", + translation_key="extra_rinse_1", + ), + HonSwitchEntityDescription( + key="extraRinse2", + name="Extra Rinse 2", + entity_category=EntityCategory.CONFIG, + icon="mdi:numeric-2-box-multiple-outline", + translation_key="extra_rinse_2", + ), + HonSwitchEntityDescription( + key="extraRinse3", + name="Extra Rinse 3", + entity_category=EntityCategory.CONFIG, + icon="mdi:numeric-3-box-multiple-outline", + translation_key="extra_rinse_3", + ), + HonSwitchEntityDescription( + key="goodNight", + name="Good Night", + icon="mdi:weather-night", + entity_category=EntityCategory.CONFIG, + translation_key="good_night", + ), ), "TD": ( HonSwitchEntityDescription( diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index 084c556..0436faf 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -944,6 +944,24 @@ }, "mute_mode": { "name": "Tichý režim" + }, + "extra_rinse_1": { + "name": "+1 máchání" + }, + "extra_rinse_2": { + "name": "+2 máchání" + }, + "extra_rinse_3": { + "name": "+3 máchání" + }, + "acqua_plus": { + "name": "Aquaplus" + }, + "auto_dose": { + "name": "Automatické dávkování" + }, + "good_night": { + "name": "Dobrou noc" } }, "binary_sensor": { @@ -1015,6 +1033,12 @@ }, "prewash": { "name": "Předpírka\r\r\r\r\r\r\n" + }, + "acqua_plus": { + "name": "Aquaplus" + }, + "auto_dose": { + "name": "Automatické dávkování" } }, "number": { @@ -1044,6 +1068,9 @@ }, "dry_time": { "name": "Doba sušení" + }, + "steam_level": { + "name": "Úroveň páry" } }, "button": { diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index f9a026e..19b2ef7 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -944,6 +944,24 @@ }, "mute_mode": { "name": "Stummer Modus" + }, + "extra_rinse_1": { + "name": "+1 Spülgang" + }, + "extra_rinse_2": { + "name": "+2 Spülgänge" + }, + "extra_rinse_3": { + "name": "+3 Spülgänge" + }, + "acqua_plus": { + "name": "Acquaplus" + }, + "auto_dose": { + "name": "Autodosierung" + }, + "good_night": { + "name": "Gute Nacht" } }, "binary_sensor": { @@ -1015,6 +1033,12 @@ }, "prewash": { "name": "Vorspülen" + }, + "acqua_plus": { + "name": "Acquaplus" + }, + "auto_dose": { + "name": "Autodosierung" } }, "number": { @@ -1044,6 +1068,9 @@ }, "dry_time": { "name": "Trocknungsdauer" + }, + "steam_level": { + "name": "Dampfstufe" } }, "button": { diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index d5f660a..84608da 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -944,6 +944,24 @@ }, "mute_mode": { "name": "Σίγαση λειτουργίας" + }, + "extra_rinse_1": { + "name": "+1 Ξέβγαλμα" + }, + "extra_rinse_2": { + "name": "+2 Ξεβγάλματα" + }, + "extra_rinse_3": { + "name": "+3 Ξεβγάλματα" + }, + "acqua_plus": { + "name": "Acquaplus (προσθήκη νερού)" + }, + "auto_dose": { + "name": "Αυτόματη Δοσολογία" + }, + "good_night": { + "name": "Καληνυχτα" } }, "binary_sensor": { @@ -1015,6 +1033,12 @@ }, "prewash": { "name": "προπλυση" + }, + "acqua_plus": { + "name": "Acquaplus (προσθήκη νερού)" + }, + "auto_dose": { + "name": "Αυτόματη Δοσολογία" } }, "number": { @@ -1044,6 +1068,9 @@ }, "dry_time": { "name": "Χρόνος στεγνώματος" + }, + "steam_level": { + "name": "Επίπεδο ατμού" } }, "button": { diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index ce3bf5e..cc88ec9 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -298,6 +298,24 @@ }, "mute_mode": { "name": "Mute mode" + }, + "extra_rinse_1": { + "name": "+1 Rinse" + }, + "extra_rinse_2": { + "name": "+2 Rinses" + }, + "extra_rinse_3": { + "name": "+3 Rinses" + }, + "acqua_plus": { + "name": "Acquaplus" + }, + "auto_dose": { + "name": "Autodose" + }, + "good_night": { + "name": "Good Night" } }, "select": { @@ -1082,6 +1100,12 @@ }, "prewash": { "name": "Pre-wash " + }, + "acqua_plus": { + "name": "Acquaplus" + }, + "auto_dose": { + "name": "Autodose" } }, "number": { @@ -1111,6 +1135,9 @@ }, "dry_time": { "name": "Drying time" + }, + "steam_level": { + "name": "Steam Level" } }, "button": { diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index 89e2aba..be839ed 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -944,6 +944,24 @@ }, "mute_mode": { "name": "Modo silencio" + }, + "extra_rinse_1": { + "name": "+1 Aclarado" + }, + "extra_rinse_2": { + "name": "+2 Aclarados" + }, + "extra_rinse_3": { + "name": "+3 Aclarados" + }, + "acqua_plus": { + "name": "Acquaplus" + }, + "auto_dose": { + "name": "Dosificación automática" + }, + "good_night": { + "name": "Buenas noches" } }, "binary_sensor": { @@ -1015,6 +1033,12 @@ }, "prewash": { "name": "Pre-lavado" + }, + "acqua_plus": { + "name": "Acquaplus" + }, + "auto_dose": { + "name": "Dosificación automática" } }, "number": { @@ -1044,6 +1068,9 @@ }, "dry_time": { "name": "Tiempo de secado" + }, + "steam_level": { + "name": "Nivel de vapor" } }, "button": { diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index faea7f7..7b9dc46 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -944,6 +944,24 @@ }, "mute_mode": { "name": "Mode muet" + }, + "extra_rinse_1": { + "name": "+1 rinçage" + }, + "extra_rinse_2": { + "name": "+2 rinçages" + }, + "extra_rinse_3": { + "name": "+3 rinçages" + }, + "acqua_plus": { + "name": "Acquaplus" + }, + "auto_dose": { + "name": "Dose automatique" + }, + "good_night": { + "name": "Bonne nuit" } }, "binary_sensor": { @@ -1015,6 +1033,12 @@ }, "prewash": { "name": "Prélavage" + }, + "acqua_plus": { + "name": "Acquaplus" + }, + "auto_dose": { + "name": "Dose automatique" } }, "number": { @@ -1044,6 +1068,9 @@ }, "dry_time": { "name": "Temps de séchage" + }, + "steam_level": { + "name": "Niveau de vapeur" } }, "button": { diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index 0589ec1..895c659 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -527,6 +527,24 @@ }, "mute_mode": { "name": "Mute mode" + }, + "extra_rinse_1": { + "name": "+1 שטיפה" + }, + "extra_rinse_2": { + "name": "+2 שטיפות" + }, + "extra_rinse_3": { + "name": "+3 שטיפות" + }, + "acqua_plus": { + "name": "Acquaplus" + }, + "auto_dose": { + "name": "מינון אוטומטי" + }, + "good_night": { + "name": "לילה טוב" } }, "binary_sensor": { @@ -598,6 +616,12 @@ }, "prewash": { "name": "שטיפה מראש" + }, + "acqua_plus": { + "name": "Acquaplus" + }, + "auto_dose": { + "name": "מינון אוטומטי" } }, "number": { @@ -627,6 +651,9 @@ }, "dry_time": { "name": "זמן ייבוש" + }, + "steam_level": { + "name": "מפלס קיטור" } }, "button": { diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index e7c042a..4296a2d 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -944,6 +944,24 @@ }, "mute_mode": { "name": "Bešumni način rada" + }, + "extra_rinse_1": { + "name": "+1 ispiranje " + }, + "extra_rinse_2": { + "name": "+2 ispiranja " + }, + "extra_rinse_3": { + "name": "+3 ispiranja " + }, + "acqua_plus": { + "name": "Aquaplus" + }, + "auto_dose": { + "name": "Automatsko doziranje" + }, + "good_night": { + "name": "Good Night" } }, "binary_sensor": { @@ -1015,6 +1033,12 @@ }, "prewash": { "name": "Pretpranje" + }, + "acqua_plus": { + "name": "Aquaplus" + }, + "auto_dose": { + "name": "Automatsko doziranje" } }, "number": { @@ -1044,6 +1068,9 @@ }, "dry_time": { "name": "Trajanje sušenja" + }, + "steam_level": { + "name": "Razina pare" } }, "button": { diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index 67d44df..08aa93f 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -996,6 +996,24 @@ }, "mute_mode": { "name": "Modalità tacita" + }, + "extra_rinse_1": { + "name": "+1 Risciacquo" + }, + "extra_rinse_2": { + "name": "+2 Risciacqui" + }, + "extra_rinse_3": { + "name": "+3 Risciacqui" + }, + "acqua_plus": { + "name": "Acquaplus" + }, + "auto_dose": { + "name": "Autodose" + }, + "good_night": { + "name": "Buona notte" } }, "binary_sensor": { @@ -1067,6 +1085,12 @@ }, "prewash": { "name": "Prelavaggio" + }, + "acqua_plus": { + "name": "Acquaplus" + }, + "auto_dose": { + "name": "Autodose" } }, "number": { @@ -1096,6 +1120,9 @@ }, "dry_time": { "name": "Tempo asciugatura" + }, + "steam_level": { + "name": "Livello vapore" } }, "button": { diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index 8284d2a..e1287e4 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -944,6 +944,24 @@ }, "mute_mode": { "name": "Dempmodus" + }, + "extra_rinse_1": { + "name": "+1 keer spoelen" + }, + "extra_rinse_2": { + "name": "+2 keer spoelen" + }, + "extra_rinse_3": { + "name": "+3 keer spoelen" + }, + "acqua_plus": { + "name": "Acquaplus" + }, + "auto_dose": { + "name": "Automatisch doseren" + }, + "good_night": { + "name": "Goede nacht" } }, "binary_sensor": { @@ -1015,6 +1033,12 @@ }, "prewash": { "name": "Voorwas" + }, + "acqua_plus": { + "name": "Acquaplus" + }, + "auto_dose": { + "name": "Automatisch doseren" } }, "number": { @@ -1044,6 +1068,9 @@ }, "dry_time": { "name": "Droogtijd" + }, + "steam_level": { + "name": "Stoomniveau" } }, "button": { diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index fd22571..82d6e44 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -944,6 +944,24 @@ }, "mute_mode": { "name": "Tryb wyciszenia" + }, + "extra_rinse_1": { + "name": "+1 płukanie" + }, + "extra_rinse_2": { + "name": "+2 płukania" + }, + "extra_rinse_3": { + "name": "+3 płukania" + }, + "acqua_plus": { + "name": "Acquaplus" + }, + "auto_dose": { + "name": "Automatyczne dozowanie" + }, + "good_night": { + "name": "Dobranoc" } }, "binary_sensor": { @@ -1015,6 +1033,12 @@ }, "prewash": { "name": "Mycie wstępne" + }, + "acqua_plus": { + "name": "Acquaplus" + }, + "auto_dose": { + "name": "Automatyczne dozowanie" } }, "number": { @@ -1044,6 +1068,9 @@ }, "dry_time": { "name": "Czas suszenia" + }, + "steam_level": { + "name": "Poziom pary" } }, "button": { diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index 4ce56f2..c2027ee 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -944,6 +944,24 @@ }, "mute_mode": { "name": "Modo Mute" + }, + "extra_rinse_1": { + "name": "+1 enxaguamento" + }, + "extra_rinse_2": { + "name": "+2 enxaguamentos" + }, + "extra_rinse_3": { + "name": "+3 enxaguamentos" + }, + "acqua_plus": { + "name": "Acquaplus" + }, + "auto_dose": { + "name": "Autodosagem" + }, + "good_night": { + "name": "Boa Noite" } }, "binary_sensor": { @@ -1015,6 +1033,12 @@ }, "prewash": { "name": "Pré-lavagem" + }, + "acqua_plus": { + "name": "Acquaplus" + }, + "auto_dose": { + "name": "Autodosagem" } }, "number": { @@ -1044,6 +1068,9 @@ }, "dry_time": { "name": "Tempo de secagem" + }, + "steam_level": { + "name": "Nível de vapor" } }, "button": { diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index c56b437..10acf14 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -944,6 +944,24 @@ }, "mute_mode": { "name": "Modul mut" + }, + "extra_rinse_1": { + "name": "+1 clătire" + }, + "extra_rinse_2": { + "name": "+2 clătiri" + }, + "extra_rinse_3": { + "name": "+3 clătiri" + }, + "acqua_plus": { + "name": "Acquaplus" + }, + "auto_dose": { + "name": "Autodozare" + }, + "good_night": { + "name": "Noapte bună" } }, "binary_sensor": { @@ -1015,6 +1033,12 @@ }, "prewash": { "name": "Prespălare" + }, + "acqua_plus": { + "name": "Acquaplus" + }, + "auto_dose": { + "name": "Autodozare" } }, "number": { @@ -1044,6 +1068,9 @@ }, "dry_time": { "name": "Timp de uscare" + }, + "steam_level": { + "name": "Nivel abur" } }, "button": { diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index 154d3c6..34ae234 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -944,6 +944,24 @@ }, "mute_mode": { "name": "Беззвучный режим" + }, + "extra_rinse_1": { + "name": "+1 полоскание" + }, + "extra_rinse_2": { + "name": "+2 полоскания" + }, + "extra_rinse_3": { + "name": "+3 полоскания" + }, + "acqua_plus": { + "name": "Акваплюс" + }, + "auto_dose": { + "name": "Автодозирование" + }, + "good_night": { + "name": "Спокойной ночи" } }, "binary_sensor": { @@ -1015,6 +1033,12 @@ }, "prewash": { "name": "предварительная мойка" + }, + "acqua_plus": { + "name": "Акваплюс" + }, + "auto_dose": { + "name": "Автодозирование" } }, "number": { @@ -1044,6 +1068,9 @@ }, "dry_time": { "name": "Время сушки" + }, + "steam_level": { + "name": "Уровень пара" } }, "button": { diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index 2ef0d42..fbbb86d 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -944,6 +944,24 @@ }, "mute_mode": { "name": "Stlmený režim" + }, + "extra_rinse_1": { + "name": "+ 1 oplachovanie" + }, + "extra_rinse_2": { + "name": "+ 2 oplachovania" + }, + "extra_rinse_3": { + "name": "+ 3 oplachovania" + }, + "acqua_plus": { + "name": "Aquaplus" + }, + "auto_dose": { + "name": "Automatická dávka" + }, + "good_night": { + "name": "Dobrú noc" } }, "binary_sensor": { @@ -1015,6 +1033,12 @@ }, "prewash": { "name": "Predumývanie" + }, + "acqua_plus": { + "name": "Aquaplus" + }, + "auto_dose": { + "name": "Automatická dávka" } }, "number": { @@ -1044,6 +1068,9 @@ }, "dry_time": { "name": "Čas sušenia" + }, + "steam_level": { + "name": "Úroveň nastavenia pary" } }, "button": { diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index c2e8729..ef585d9 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -944,6 +944,24 @@ }, "mute_mode": { "name": "Način z izklopljenim zvokom" + }, + "extra_rinse_1": { + "name": " + 1 izpiranje" + }, + "extra_rinse_2": { + "name": " + 2 izpiranji" + }, + "extra_rinse_3": { + "name": " + 3 izpiranja" + }, + "acqua_plus": { + "name": "Acquaplus" + }, + "auto_dose": { + "name": "Samodejno odmerjanje" + }, + "good_night": { + "name": "Lahko noč" } }, "binary_sensor": { @@ -1015,6 +1033,12 @@ }, "prewash": { "name": "Predpranje" + }, + "acqua_plus": { + "name": "Acquaplus" + }, + "auto_dose": { + "name": "Samodejno odmerjanje" } }, "number": { @@ -1044,6 +1068,9 @@ }, "dry_time": { "name": "Čas sušenja" + }, + "steam_level": { + "name": "Količina pare" } }, "button": { diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index eb5390e..5a70358 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -944,6 +944,24 @@ }, "mute_mode": { "name": "Režim isključenog zvuka" + }, + "extra_rinse_1": { + "name": "+1 ispiranje" + }, + "extra_rinse_2": { + "name": "+2 ispiranja" + }, + "extra_rinse_3": { + "name": "+3 ispiranja" + }, + "acqua_plus": { + "name": "Viši nivo vode" + }, + "auto_dose": { + "name": "Automatsko doziranje" + }, + "good_night": { + "name": "Laku noć" } }, "binary_sensor": { @@ -1015,6 +1033,12 @@ }, "prewash": { "name": "Predpranje" + }, + "acqua_plus": { + "name": "Viši nivo vode" + }, + "auto_dose": { + "name": "Automatsko doziranje" } }, "number": { @@ -1044,6 +1068,9 @@ }, "dry_time": { "name": "Vreme sušenja" + }, + "steam_level": { + "name": "Nivo pare" } }, "button": { diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index 96e3472..a77224a 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -944,6 +944,24 @@ }, "mute_mode": { "name": "Ses Kapalı mod" + }, + "extra_rinse_1": { + "name": "+1 Durulama" + }, + "extra_rinse_2": { + "name": "+2 Durulama" + }, + "extra_rinse_3": { + "name": "+3 Durulama" + }, + "acqua_plus": { + "name": "Acquaplus" + }, + "auto_dose": { + "name": "Otomatik doz" + }, + "good_night": { + "name": "İyi Geceler" } }, "binary_sensor": { @@ -1015,6 +1033,12 @@ }, "prewash": { "name": "Pre-wash" + }, + "acqua_plus": { + "name": "Acquaplus" + }, + "auto_dose": { + "name": "Otomatik doz" } }, "number": { @@ -1044,6 +1068,9 @@ }, "dry_time": { "name": "Kurutma zamanı" + }, + "steam_level": { + "name": "Buhar Seviyesi" } }, "button": { diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index 9a99238..57c0d7d 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -944,6 +944,24 @@ }, "mute_mode": { "name": "静音模式" + }, + "extra_rinse_1": { + "name": "+1 次漂洗" + }, + "extra_rinse_2": { + "name": "+2 次漂洗" + }, + "extra_rinse_3": { + "name": "+3 次漂洗" + }, + "acqua_plus": { + "name": "Acquaplus" + }, + "auto_dose": { + "name": "自动定量" + }, + "good_night": { + "name": "晚安" } }, "binary_sensor": { @@ -1015,6 +1033,12 @@ }, "prewash": { "name": "预洗" + }, + "acqua_plus": { + "name": "Acquaplus" + }, + "auto_dose": { + "name": "自动定量" } }, "number": { @@ -1044,6 +1068,9 @@ }, "dry_time": { "name": "烘干时间" + }, + "steam_level": { + "name": "蒸汽档位" } }, "button": { diff --git a/scripts/generate_translation.py b/scripts/generate_translation.py index f7126bc..a6ea560 100755 --- a/scripts/generate_translation.py +++ b/scripts/generate_translation.py @@ -174,6 +174,12 @@ NAMES = { "self_clean_56": "PROGRAMS.AC.IOT_SELF_CLEAN_56", "silent_mode": "AC.PROGRAM_DETAIL.SILENT_MODE", "mute_mode": "AC.PROGRAM_DETAIL.MUTE_MODE", + "extra_rinse_1": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.EXTRARINSE1", + "extra_rinse_2": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.EXTRARINSE2", + "extra_rinse_3": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.EXTRARINSE3", + "acqua_plus": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.ACQUAPLUS", + "auto_dose": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.AUTODOSE", + "good_night": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.GOODNIGHT", }, "binary_sensor": { "door_lock": "WASHING_CMD&CTRL.CHECK_UP_RESULTS.DOOR_LOCK", @@ -182,7 +188,8 @@ NAMES = { "extra_rinse_3": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.EXTRARINSE3", "good_night": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.GOODNIGHT", "anti_crease": "HDRY_CMD&CTRL.PROGRAM_CYCLE_DETAIL.ANTICREASE_TITLE", - "aqua_plus": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.ACQUAPLUS", + "acqua_plus": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.ACQUAPLUS", + "auto_dose": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.AUTODOSE", "spin_speed": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.SPINSPEED", "still_hot": "IH.COILS_STATUS.STILL_HOT", "pan_status": "IH.COILS_STATUS.PAN", @@ -264,6 +271,7 @@ NAMES = { "rinse_iterations": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL.DRAWER_HEADER_RINSE", "wash_time": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL.WASHING_TIME", "dry_time": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_TIME", + "steam_level": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.STEAM_LEVEL", }, } -- 2.39.5 From 7e40afae68d8f0218a602904ed24eede8aaf70db Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sun, 7 May 2023 02:34:41 +0200 Subject: [PATCH 079/205] Flag enums as enums with option list #35 --- custom_components/hon/sensor.py | 80 +++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index d5f125e..4210c52 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -34,7 +34,34 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { key="prPhase", name="Program Phase", icon="mdi:washing-machine", + device_class=SensorDeviceClass.ENUM, translation_key="program_phases_wm", + options=[ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "20", + "24", + "25", + "26", + "27", + ], ), SensorEntityDescription( key="totalElectricityUsed", @@ -88,7 +115,9 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { key="machMode", name="Machine Status", icon="mdi:information", + device_class=SensorDeviceClass.ENUM, translation_key="washing_modes", + options=["0", "1", "3", "4", "5", "6", "7"], ), SensorEntityDescription( key="errors", name="Error", icon="mdi:math-log", translation_key="errors" @@ -161,7 +190,9 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { key="machMode", name="Machine Status", icon="mdi:information", + device_class=SensorDeviceClass.ENUM, translation_key="washing_modes", + options=["0", "1", "3", "4", "5", "6", "7"], ), SensorEntityDescription( key="errors", name="Error", icon="mdi:math-log", translation_key="errors" @@ -192,13 +223,29 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { key="prPhase", name="Program Phase", icon="mdi:washing-machine", + device_class=SensorDeviceClass.ENUM, translation_key="program_phases_td", + options=[ + "0", + "1", + "2", + "3", + "13", + "14", + "15", + "16", + "18", + "19", + "20", + ], ), SensorEntityDescription( key="dryLevel", name="Dry level", icon="mdi:hair-dryer", + device_class=SensorDeviceClass.ENUM, translation_key="dry_levels", + options=["0", "1", "2", "3", "4", "12", "13", "14", "15"], ), SensorEntityDescription( key="tempLevel", @@ -290,7 +337,9 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { key="machMode", name="Machine Status", icon="mdi:information", + device_class=SensorDeviceClass.ENUM, translation_key="washing_modes", + options=["0", "1", "3", "4", "5", "6", "7"], ), SensorEntityDescription( key="spinSpeed", @@ -318,7 +367,34 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { key="prPhase", name="Program Phase", icon="mdi:washing-machine", + device_class=SensorDeviceClass.ENUM, translation_key="program_phases_wm", + options=[ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "20", + "24", + "25", + "26", + "27", + ], ), SensorEntityDescription( key="dryLevel", @@ -458,7 +534,9 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { key="machMode", name="Machine Status", icon="mdi:information", + device_class=SensorDeviceClass.ENUM, translation_key="washing_modes", + options=["0", "1", "3", "4", "5", "6", "7"], ), SensorEntityDescription( key="errors", name="Error", icon="mdi:math-log", translation_key="errors" @@ -475,7 +553,9 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { key="prPhase", name="Program Phase", icon="mdi:washing-machine", + device_class=SensorDeviceClass.ENUM, translation_key="program_phases_dw", + options=["0", "1", "2", "3", "4", "5", "6"], ), ), } -- 2.39.5 From dae8b4807584022ddaeacb9e507749d5a3fe1a3d Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sun, 7 May 2023 13:47:19 +0200 Subject: [PATCH 080/205] Use names for some td entities, fix #36 --- custom_components/hon/const.py | 302 +++++++++++++++++++++ custom_components/hon/sensor.py | 88 +----- custom_components/hon/translations/cs.json | 153 ++++++++++- custom_components/hon/translations/de.json | 153 ++++++++++- custom_components/hon/translations/el.json | 153 ++++++++++- custom_components/hon/translations/en.json | 153 ++++++++++- custom_components/hon/translations/es.json | 153 ++++++++++- custom_components/hon/translations/fr.json | 153 ++++++++++- custom_components/hon/translations/he.json | 34 ++- custom_components/hon/translations/hr.json | 153 ++++++++++- custom_components/hon/translations/it.json | 153 ++++++++++- custom_components/hon/translations/nl.json | 153 ++++++++++- custom_components/hon/translations/pl.json | 153 ++++++++++- custom_components/hon/translations/pt.json | 153 ++++++++++- custom_components/hon/translations/ro.json | 153 ++++++++++- custom_components/hon/translations/ru.json | 153 ++++++++++- custom_components/hon/translations/sk.json | 153 ++++++++++- custom_components/hon/translations/sl.json | 153 ++++++++++- custom_components/hon/translations/sr.json | 153 ++++++++++- custom_components/hon/translations/tr.json | 153 ++++++++++- custom_components/hon/translations/zh.json | 153 ++++++++++- scripts/generate_translation.py | 167 ++---------- 22 files changed, 3039 insertions(+), 306 deletions(-) diff --git a/custom_components/hon/const.py b/custom_components/hon/const.py index 44b39d2..59e1863 100644 --- a/custom_components/hon/const.py +++ b/custom_components/hon/const.py @@ -43,3 +43,305 @@ HON_FAN = { "4": FAN_AUTO, "5": FAN_AUTO, } + +# 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", # NO_STATE + "1": "WASHING_CMD&CTRL.PHASE_READY.TITLE", # SELECTION_MODE + "2": "WASHING_CMD&CTRL.PHASE_RUNNING.TITLE", # EXECUTION_MODE + "3": "WASHING_CMD&CTRL.PHASE_PAUSE.TITLE", # PAUSE_MODE + "4": "WASHING_CMD&CTRL.PHASE_SCHEDULED.TITLE", # DELAY_START_SELECTION_MODE + "5": "WASHING_CMD&CTRL.PHASE_SCHEDULED.TITLE", # DELAY_START_EXECUTION_MODE + "6": "WASHING_CMD&CTRL.PHASE_ERROR.TITLE", # ERROR_MODE + "7": "WASHING_CMD&CTRL.PHASE_READY.TITLE", # END_MODE + "8": "Test", # TEST_MODE + "9": "GLOBALS.APPLIANCE_STATUS.ENDING_PROGRAM", # STOP_MODE +} +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", + "11": "WASHING_CMD&CTRL.PHASE_READY.TITLE", + "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", + "17": "unknown", + "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", + "11": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.NO_DRY", + "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", +} + +TUMBLE_DRYER_PROGRAMS = [ + "hqd_baby_care" + "hqd_bath_towel" + "hqd_bed_sheets" + "hqd_bulky" + "hqd_casual" + "hqd_cold_wind_30" + "hqd_cold_wind_timing" + "hqd_cotton" + "hqd_curtain" + "hqd_delicate" + "hqd_diaper" + "hqd_duvet" + "hqd_feather" + "hqd_hot_wind_timing" + "hqd_hygienic" + "hqd_i_refresh" + "hqd_i_refresh_pro" + "hqd_jacket" + "hqd_jeans" + "hqd_luxury" + "hqd_mix" + "hqd_night_dry" + "hqd_outdoor" + "hqd_precious_cure" + "hqd_quick_20" + "hqd_quick_30" + "hqd_quick_dry" + "hqd_quilt" + "hqd_refresh" + "hqd_school_uniform" + "hqd_shirt" + "hqd_shoes" + "hqd_silk" + "hqd_sports" + "hqd_synthetics" + "hqd_timer" + "hqd_towel" + "hqd_underwear" + "hqd_warm_up" + "hqd_wool" + "hqd_working_suit" +] + +PROGRAMS_TD = [ + "active_dry", + "allergy_care", + "all_in_one", + "antiallergy", + "anti_odours", + "auto_care", + "baby", + "bed_quilt", + "care_30", + "care_45", + "care_59", + "coloured", + "daily_45_min", + "daily_perfect_59_min", + "darks_and_coloured", + "delicates", + "duvet", + "eco", + "ecospeed_cottons", + "ecospeed_delicates", + "ecospeed_mixed", + "extra_hygiene", + "fitness", + "fresh_care", + "genius", + "hqd_baby_care", + "hqd_bath_towel", + "hqd_bed_sheets", + "hqd_bulky", + "hqd_casual", + "hqd_cold_wind_30", + "hqd_cold_wind_timing", + "hqd_cotton", + "hqd_curtain", + "hqd_delicate", + "hqd_diaper", + "hqd_duvet", + "hqd_feather", + "hqd_hot_wind_timing", + "hqd_hygienic", + "hqd_i_refresh", + "hqd_i_refresh_pro", + "hqd_jacket", + "hqd_jeans", + "hqd_luxury", + "hqd_mix", + "hqd_night_dry", + "hqd_outdoor", + "hqd_precious_cure", + "hqd_quick_20", + "hqd_quick_30", + "hqd_quick_dry", + "hqd_quilt", + "hqd_refresh", + "hqd_school_uniform", + "hqd_shirt", + "hqd_shoes", + "hqd_silk", + "hqd_sports", + "hqd_synthetics", + "hqd_timer", + "hqd_towel", + "hqd_underwear", + "hqd_warm_up", + "hqd_wool", + "hqd_working_suit", + "hygiene", + "iot_checkup", + "iot_dry_anti_mites", + "iot_dry_baby", + "iot_dry_backpacks", + "iot_dry_bathrobe", + "iot_dry_bed_linen", + "iot_dry_bed_quilt", + "iot_dry_cotton", + "iot_dry_cuddly_toys", + "iot_dry_curtains", + "iot_dry_dehumidifier", + "iot_dry_delicates", + "iot_dry_delicate_tablecloths", + "iot_dry_denim_jeans", + "iot_dry_down_jacket", + "iot_dry_duvet", + "iot_dry_easy_iron_cotton", + "iot_dry_easy_iron_synthetics", + "iot_dry_gym_fit", + "iot_dry_lingerie", + "iot_dry_mixed", + "iot_dry_playsuits", + "iot_dry_rapid_30", + "iot_dry_rapid_59", + "iot_dry_refresh", + "iot_dry_regenerates_waterproof", + "iot_dry_relax_creases", + "iot_dry_shirts", + "iot_dry_small_load", + "iot_dry_swimsuits_and_bikinis", + "iot_dry_synthetics", + "iot_dry_synthetic_dry", + "iot_dry_tablecloths", + "iot_dry_technical_fabrics", + "iot_dry_warm_embrace", + "iot_dry_wool", + "jeans", + "mix_and_dry", + "pets", + "pre_iron", + "rapid_30", + "rapid_45", + "rapid_59", + "refresh", + "relax_creases", + "saving_30_min", + "shirts", + "shoes", + "small_load", + "soft_care", + "sport_plus", + "super_easy_iron_misti", + "super_easy_iron_xxl", + "super_fast_cottons", + "super_fast_delicates", + "synthetics", + "total_care", + "trainers", + "ultra_care", + "waterproof_revitalize", + "whites", + "wool", + "woolmark", + "xxl_load", + "zoom_59", +] diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 4210c52..9f48d77 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -23,11 +23,13 @@ from homeassistant.helpers.entity import EntityCategory from homeassistant.helpers.typing import StateType from homeassistant.const import PERCENTAGE +from . import const from .const import DOMAIN from .hon import HonCoordinator, HonEntity _LOGGER = logging.getLogger(__name__) + SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { "WM": ( SensorEntityDescription( @@ -36,32 +38,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:washing-machine", device_class=SensorDeviceClass.ENUM, translation_key="program_phases_wm", - options=[ - "0", - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "9", - "10", - "11", - "12", - "13", - "14", - "15", - "16", - "17", - "18", - "19", - "20", - "24", - "25", - "26", - "27", - ], + options=list(const.WASHING_PR_PHASE), ), SensorEntityDescription( key="totalElectricityUsed", @@ -117,7 +94,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:information", device_class=SensorDeviceClass.ENUM, translation_key="washing_modes", - options=["0", "1", "3", "4", "5", "6", "7"], + options=list(const.MACH_MODE), ), SensorEntityDescription( key="errors", name="Error", icon="mdi:math-log", translation_key="errors" @@ -192,7 +169,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:information", device_class=SensorDeviceClass.ENUM, translation_key="washing_modes", - options=["0", "1", "3", "4", "5", "6", "7"], + options=list(const.MACH_MODE), ), SensorEntityDescription( key="errors", name="Error", icon="mdi:math-log", translation_key="errors" @@ -214,10 +191,12 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { translation_key="delay_time", ), SensorEntityDescription( - key="prCode", + key="programName", name="Program", icon="mdi:tumble-dryer", - translation_key="tumbledryerprogram", + device_class=SensorDeviceClass.ENUM, + translation_key="programs_td", + options=const.PROGRAMS_TD, ), SensorEntityDescription( key="prPhase", @@ -225,19 +204,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:washing-machine", device_class=SensorDeviceClass.ENUM, translation_key="program_phases_td", - options=[ - "0", - "1", - "2", - "3", - "13", - "14", - "15", - "16", - "18", - "19", - "20", - ], + options=list(const.TUMBLE_DRYER_PR_PHASE), ), SensorEntityDescription( key="dryLevel", @@ -245,7 +212,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:hair-dryer", device_class=SensorDeviceClass.ENUM, translation_key="dry_levels", - options=["0", "1", "2", "3", "4", "12", "13", "14", "15"], + options=list(const.TUMBLE_DRYER_DRY_LEVEL), ), SensorEntityDescription( key="tempLevel", @@ -339,7 +306,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:information", device_class=SensorDeviceClass.ENUM, translation_key="washing_modes", - options=["0", "1", "3", "4", "5", "6", "7"], + options=list(const.MACH_MODE), ), SensorEntityDescription( key="spinSpeed", @@ -369,32 +336,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:washing-machine", device_class=SensorDeviceClass.ENUM, translation_key="program_phases_wm", - options=[ - "0", - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "9", - "10", - "11", - "12", - "13", - "14", - "15", - "16", - "17", - "18", - "19", - "20", - "24", - "25", - "26", - "27", - ], + options=list(const.WASHING_PR_PHASE), ), SensorEntityDescription( key="dryLevel", @@ -536,7 +478,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:information", device_class=SensorDeviceClass.ENUM, translation_key="washing_modes", - options=["0", "1", "3", "4", "5", "6", "7"], + options=list(const.MACH_MODE), ), SensorEntityDescription( key="errors", name="Error", icon="mdi:math-log", translation_key="errors" @@ -555,7 +497,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:washing-machine", device_class=SensorDeviceClass.ENUM, translation_key="program_phases_dw", - options=["0", "1", "2", "3", "4", "5", "6"], + options=list(const.DISHWASHER_PR_PHASE), ), ), } diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index 0436faf..b802992 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -9,7 +9,10 @@ "4": "Naplánováno", "5": "Naplánováno", "6": "Chyba", - "7": "Připraveno" + "7": "Připraveno", + "2": "Program běží", + "8": "Test", + "9": "Zastavování cyklu…" } }, "program_phases_wm": { @@ -53,7 +56,9 @@ "16": "Vychladnutí", "18": "Keep Fresh", "19": "Sušení", - "20": "Sušení" + "20": "Sušení", + "11": "Připraveno", + "17": "unknown" }, "name": "Fáze" }, @@ -79,7 +84,8 @@ "12": "Žehlení", "13": "Do skříně", "14": "Připraveno k oblečení", - "15": "Extra suché" + "15": "Extra suché", + "11": "Bez sušení" }, "name": "Úroveň sušení" }, @@ -165,6 +171,142 @@ "5": "Ventilátor", "6": "Ventilátor" } + }, + "programs_td": { + "state": { + "active_dry": "Aktivní sušení", + "allergy_care": "Antialergický", + "all_in_one": "All in One", + "antiallergy": "Antialergický", + "anti_odours": "Proti zápachu", + "auto_care": "Automatická péče", + "baby": "Dětské", + "bed_quilt": "Ložní přikrývka", + "care_30": "Péče 30", + "care_45": "Péče 45", + "care_59": "Péče 59", + "coloured": "Barevné", + "daily_45_min": "DENNI 45'", + "daily_perfect_59_min": "DENNI PERFEKTNI 59'", + "darks_and_coloured": "Tmavé a barevné", + "delicates": "Jemné", + "duvet": "Přikrývky", + "eco": "Eco bavlna", + "ecospeed_cottons": "Ecospeed bavlna", + "ecospeed_delicates": "Eco rychly - jemne", + "ecospeed_mixed": "Ecospeed směsné", + "extra_hygiene": "HYGIENA EXTRA", + "fitness": "Cvičení", + "fresh_care": "Svěží péče", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Ručníky", + "hqd_bed_sheets": "Povlečení", + "hqd_bulky": "Objemné kusy", + "hqd_casual": "Casual", + "hqd_cold_wind_30": "Chladný vánek 30 minut", + "hqd_cold_wind_timing": "Chladný vánek ", + "hqd_cotton": "Bavlna", + "hqd_curtain": "Záclony", + "hqd_delicate": "Jemné", + "hqd_diaper": "Pleny", + "hqd_duvet": "Přikrývky", + "hqd_feather": "Prošívané bundy", + "hqd_hot_wind_timing": "Horký vzduch", + "hqd_hygienic": "Dezinfekce", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Bundy", + "hqd_jeans": "Džíny", + "hqd_luxury": "Luxusní", + "hqd_mix": "Směsné", + "hqd_night_dry": "Sušení přes noc", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Rychlý 20", + "hqd_quick_30": "Rychlý 30", + "hqd_quick_dry": "Rychlé sušení", + "hqd_quilt": "Deky", + "hqd_refresh": "Osvěžení", + "hqd_school_uniform": "Školní uniformy", + "hqd_shirt": "Košile", + "hqd_shoes": "Obuv", + "hqd_silk": "Hedvábí", + "hqd_sports": "Sportovní", + "hqd_synthetics": "Syntetika", + "hqd_timer": "Načasováno", + "hqd_towel": "Ručníky", + "hqd_underwear": "Spodní prádlo", + "hqd_warm_up": "Ohřátí", + "hqd_wool": "Vlna", + "hqd_working_suit": "Pracovní oděvy", + "hygiene": "Hygiena", + "iot_checkup": "Kontrola", + "iot_dry_anti_mites": "Proti roztočům", + "iot_dry_baby": "Dětské", + "iot_dry_backpacks": "Batohy", + "iot_dry_bathrobe": "Župany", + "iot_dry_bed_linen": "Ložní prádlo", + "iot_dry_bed_quilt": "Ložní přikrývka", + "iot_dry_cotton": "Bavlna", + "iot_dry_cuddly_toys": "Plyšové hračky", + "iot_dry_curtains": "Závěsy", + "iot_dry_dehumidifier": "Odstraňovač vlhkosti", + "iot_dry_delicates": "Jemné prádlo", + "iot_dry_delicate_tablecloths": "Jemné ubrusy", + "iot_dry_denim_jeans": "Džínovina - džíny", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Přikrývky", + "iot_dry_easy_iron_cotton": "Super snadné žehlení", + "iot_dry_easy_iron_synthetics": "Velmi snadné žehlení - syntetika", + "iot_dry_gym_fit": "Sportovní oblečení", + "iot_dry_lingerie": "Spodní prádlo", + "iot_dry_mixed": "Smíšené", + "iot_dry_playsuits": "Tepláky", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Rychlý 59'.", + "iot_dry_refresh": "Osvěžení", + "iot_dry_regenerates_waterproof": "Oživení nepromokavých tkanin", + "iot_dry_relax_creases": "Uvolnění záhybů", + "iot_dry_shirts": "Košile", + "iot_dry_small_load": "Malá náplň", + "iot_dry_swimsuits_and_bikinis": "Plavky", + "iot_dry_synthetics": "Syntetika", + "iot_dry_synthetic_dry": "Syntetika - suché", + "iot_dry_tablecloths": "Ubrusy", + "iot_dry_technical_fabrics": "Technické tkaniny", + "iot_dry_warm_embrace": "Dětská zavinovačka", + "iot_dry_wool": "Woolmark", + "jeans": "Džíny", + "mix_and_dry": "Mix a suché", + "pets": "Zvířata", + "pre_iron": "Před žehlením", + "rapid_30": "Rapid 30", + "rapid_45": "Rychlý 45 min", + "rapid_59": "Perfektně rychlý 59 min", + "refresh": "Osvěžení", + "relax_creases": "Uvolnění záhybů", + "saving_30_min": "USPORNY 30'", + "shirts": "Košile", + "shoes": "Obuv", + "small_load": "Malá náplň", + "soft_care": "Měkká péče", + "sport_plus": "Sport", + "super_easy_iron_misti": "Velmi snadné žehlení – smíšené", + "super_easy_iron_xxl": "Velmi snadné žehlení – XXL", + "super_fast_cottons": "Super rychlý bavlna", + "super_fast_delicates": "Super rychlý jemné", + "synthetics": "Syntetika", + "total_care": "Total Care", + "trainers": "Sportovní obuv", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Obnovení voděodolnosti", + "whites": "Bílé prádlo", + "wool": "Sušení vlny", + "woolmark": "Woolmark", + "xxl_load": "XXL náplň", + "zoom_59": "Zoom 59" + } } }, "select": { @@ -820,7 +962,8 @@ "12": "Žehlení", "13": "Do skříně", "14": "Připraveno k oblečení", - "15": "Extra suché" + "15": "Extra suché", + "11": "Bez sušení" }, "name": "Úroveň sušení" }, @@ -877,7 +1020,7 @@ "name": "Proti pomačkání" }, "add_dish": { - "name": "" + "name": "Přidat nádobí" }, "eco_express": { "name": "Eco" diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index 19b2ef7..ab7fcee 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -9,7 +9,10 @@ "4": "Geplant", "5": "Geplant", "6": "Fehler", - "7": "Bereit" + "7": "Bereit", + "2": "Programm läuft", + "8": "Test", + "9": "Programm wird angehalten..." } }, "program_phases_wm": { @@ -53,7 +56,9 @@ "16": "Abkühlen", "18": "Auffrischen", "19": "Trocknen", - "20": "Trocknen" + "20": "Trocknen", + "11": "Bereit", + "17": "unknown" }, "name": "Phase" }, @@ -79,7 +84,8 @@ "12": "Bügeln", "13": "Wäsche fertig", "14": "Bereit zum Anziehen", - "15": "Extra trocken" + "15": "Extra trocken", + "11": "Keine Trocknung" }, "name": "Trocknungsstufe" }, @@ -165,6 +171,142 @@ "5": "Ventilator", "6": "Ventilator" } + }, + "programs_td": { + "state": { + "active_dry": "Active Dry", + "allergy_care": "Anti-Allergie-Programm", + "all_in_one": "All in One", + "antiallergy": "Anti-Allergie-Programm", + "anti_odours": "Anti-Geruch", + "auto_care": "Auto Care", + "baby": "Baby", + "bed_quilt": "Bettdecken", + "care_30": "Pflege 30", + "care_45": "Pflege 45", + "care_59": "Pflege 59", + "coloured": "Buntwäsche", + "daily_45_min": "DAILY 45'", + "daily_perfect_59_min": "DAILY PERFECT 59'", + "darks_and_coloured": "Dunkles & Buntwäsche", + "delicates": "Feinwäsche", + "duvet": "Oberbetten", + "eco": "Eco-Baumwolle", + "ecospeed_cottons": "Ecospeed Baumwolle", + "ecospeed_delicates": "Ecospeed Feinwaesche", + "ecospeed_mixed": "Ecospeed Mischwäsche", + "extra_hygiene": "Extra Hygiene", + "fitness": "Fitness", + "fresh_care": "Fresh Care", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Handtücher", + "hqd_bed_sheets": "Bettwäsche", + "hqd_bulky": "Schwere Textilien", + "hqd_casual": "Casual", + "hqd_cold_wind_30": "Kühle Brise 30 Minuten", + "hqd_cold_wind_timing": "Kühle Brise ", + "hqd_cotton": "Baumwolle", + "hqd_curtain": "Vorhänge", + "hqd_delicate": "Feinwäsche", + "hqd_diaper": "Windeln", + "hqd_duvet": "Bettdecke", + "hqd_feather": "Daunenjacken", + "hqd_hot_wind_timing": "Heiße Luft", + "hqd_hygienic": "Desinfektion", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Jacken", + "hqd_jeans": "Jeans", + "hqd_luxury": "Luxury", + "hqd_mix": "Gemischt", + "hqd_night_dry": "Trocknung über Nacht", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious Cure", + "hqd_quick_20": "Schnell 20", + "hqd_quick_30": "Schnell 30", + "hqd_quick_dry": "Schnell trocken", + "hqd_quilt": "Steppdecken", + "hqd_refresh": "Auffrischen", + "hqd_school_uniform": "Schuluniform", + "hqd_shirt": "Hemden", + "hqd_shoes": "Schuhe", + "hqd_silk": "Seide", + "hqd_sports": "Sport", + "hqd_synthetics": "Synthetik", + "hqd_timer": "Zeitgesteuert", + "hqd_towel": "Handtücher", + "hqd_underwear": "Unterwäsche", + "hqd_warm_up": "Erwärmen", + "hqd_wool": "Wolle", + "hqd_working_suit": "Arbeitskleidung", + "hygiene": "Hygiene", + "iot_checkup": "Check-up", + "iot_dry_anti_mites": "Anti-Milben-Programm", + "iot_dry_baby": "Baby", + "iot_dry_backpacks": "Rucksäcke", + "iot_dry_bathrobe": "Bademäntel", + "iot_dry_bed_linen": "Bettwäsche", + "iot_dry_bed_quilt": "Bettdecken", + "iot_dry_cotton": "Baumwolle", + "iot_dry_cuddly_toys": "Stofftiere", + "iot_dry_curtains": "Vorhänge", + "iot_dry_dehumidifier": "Entfeuchter", + "iot_dry_delicates": "Feinwäsche", + "iot_dry_delicate_tablecloths": "Empfindliche Tischdecken", + "iot_dry_denim_jeans": "Denim - Jeans", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Oberbetten", + "iot_dry_easy_iron_cotton": "Superleichtes Bügeln", + "iot_dry_easy_iron_synthetics": "Super Leichtbügeln Synthetik", + "iot_dry_gym_fit": "Gymnastik & Fitness – Sportkleidung", + "iot_dry_lingerie": "Unterwäsche", + "iot_dry_mixed": "Gemischt", + "iot_dry_playsuits": "Jumpsuits", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Rapid 59'.", + "iot_dry_refresh": "Auffrischen", + "iot_dry_regenerates_waterproof": "Auffrischung – wasserdichte Kleidung", + "iot_dry_relax_creases": "Falten glätten", + "iot_dry_shirts": "Hemden", + "iot_dry_small_load": "Kleine Beladung", + "iot_dry_swimsuits_and_bikinis": "Badeanzüge", + "iot_dry_synthetics": "Synthetische", + "iot_dry_synthetic_dry": "Synthetik trocken", + "iot_dry_tablecloths": "Tischdecken", + "iot_dry_technical_fabrics": "Technisches Gewebe", + "iot_dry_warm_embrace": "Superschon", + "iot_dry_wool": "Wolle", + "jeans": "Jeans", + "mix_and_dry": "Mix&Dry", + "pets": "Haustiere", + "pre_iron": "Vorbügeln", + "rapid_30": "Rapid 30", + "rapid_45": "Schnell 45 Min", + "rapid_59": "Perfekt Schnellwaschgang 59 Min.", + "refresh": "Auffrischen", + "relax_creases": "Falten glätten", + "saving_30_min": "ECO 30'", + "shirts": "Hemden", + "shoes": "Schuhe", + "small_load": "Kleine Beladung", + "soft_care": "Sanfte Pflege", + "sport_plus": "Sports", + "super_easy_iron_misti": "Super Leichtbügeln Gemischt", + "super_easy_iron_xxl": "Super Leichtbügeln XXL", + "super_fast_cottons": "Superschnell Baumwolle", + "super_fast_delicates": "Superschnell Feinwäsche", + "synthetics": "Synthetische", + "total_care": "Total Care", + "trainers": "Turnschuhe", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Auffrischen wasserdichter Stoffe", + "whites": "Weißen", + "wool": "Wolle Trocknen", + "woolmark": "Wolle", + "xxl_load": "XXL-Beladung", + "zoom_59": "Zoom 59" + } } }, "select": { @@ -820,7 +962,8 @@ "12": "Bügeln", "13": "Wäsche fertig", "14": "Bereit zum Anziehen", - "15": "Extra trocken" + "15": "Extra trocken", + "11": "Keine Trocknung" }, "name": "Trocknungsstufe" }, @@ -877,7 +1020,7 @@ "name": "Knitterschutz" }, "add_dish": { - "name": "" + "name": "Geschirr hinzufügen" }, "eco_express": { "name": "Eco" diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index 84608da..e79c1a6 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -9,7 +9,10 @@ "4": "Προγραμματισμένος", "5": "Προγραμματισμένος", "6": "Λάθος", - "7": "Ετοιμος" + "7": "Ετοιμος", + "2": "Το πρόγραμμα εκτελείται", + "8": "Test", + "9": "Διακοπή κύκλου..." } }, "program_phases_wm": { @@ -53,7 +56,9 @@ "16": "Περίοδος αναμονής", "18": "Κρατήστε τη φρεσκάδα", "19": "Στέγνωμα", - "20": "Στέγνωμα" + "20": "Στέγνωμα", + "11": "Ετοιμος", + "17": "unknown" }, "name": "Φάση" }, @@ -79,7 +84,8 @@ "12": "Σιδέρωμα", "13": "Στέγνωμα για Αποθήκευση ", "14": "Ετοιμο να φορεθεί", - "15": "Επιπλέον στέγνωμα" + "15": "Επιπλέον στέγνωμα", + "11": "Χωρίς στέγνωμα" }, "name": "Επίπεδο στεγνώματος" }, @@ -165,6 +171,142 @@ "5": "Ανεμιστήρας", "6": "Ανεμιστήρας" } + }, + "programs_td": { + "state": { + "active_dry": "Ενεργό στέγνωμα", + "allergy_care": "Αντιαλλεργικο", + "all_in_one": "Ολα σε ενα", + "antiallergy": "Αντιαλλεργικο", + "anti_odours": "Εναντια στιws", + "auto_care": "Αυτόματη φροντίδα", + "baby": "Μωρουδιακά", + "bed_quilt": "Καλυμματα κρεβατιου", + "care_30": "Φροντίδα 30", + "care_45": "Φροντίδα 45", + "care_59": "Φροντίδα 59", + "coloured": "χρωματιστα", + "daily_45_min": "ΚΑΘΗΜΕΡΙΝΟ 45'", + "daily_perfect_59_min": "ΚΑΘΗΜΕΡΙΝΟ ΙΔΑΝΙΚΟ 59'", + "darks_and_coloured": "Μαυρα & Χρωματιστα", + "delicates": "Ευαίσθητα", + "duvet": "Παπλώματα", + "eco": "Βαμβακερά οικολογικά", + "ecospeed_cottons": "Ecospeed βαμβακερα", + "ecospeed_delicates": "Ecospeed ευαισθητα", + "ecospeed_mixed": "Ecospeed αναμεικτα", + "extra_hygiene": "ΕΠΙΠΛΕΟΝ ΥΓΙΕΙΝΗ", + "fitness": "Καταλληλότητα", + "fresh_care": "Φρέσκια φροντίδα", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Πετσέτες", + "hqd_bed_sheets": "Σεντόνια κρεβατιού", + "hqd_bulky": "Ογκώδη αντικείμενα", + "hqd_casual": "Καθημερινά ρούχα", + "hqd_cold_wind_30": "Δροσερό αεράκι 30 λεπτά", + "hqd_cold_wind_timing": "Δροσερό αεράκι ", + "hqd_cotton": "Βαμβακερό", + "hqd_curtain": "Κουρτίνες", + "hqd_delicate": "Ευαίσθητα", + "hqd_diaper": "Πάνες", + "hqd_duvet": "Πάπλωμα", + "hqd_feather": "Φουσκωτά μπουφάν", + "hqd_hot_wind_timing": "Ζεστός αέρας", + "hqd_hygienic": "Υγιεινή", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Ζακέτες", + "hqd_jeans": "Τζιν παντελονια", + "hqd_luxury": "Luxury", + "hqd_mix": "Μικτά", + "hqd_night_dry": "Ολονύκτιο στέγνωμα", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Γρήγορα 20", + "hqd_quick_30": "Γρήγορα 30", + "hqd_quick_dry": "Γρήγορο στέγνωμα", + "hqd_quilt": "Παπλώματα", + "hqd_refresh": "Φρεσκάρισμα", + "hqd_school_uniform": "Σχολική στολή", + "hqd_shirt": "Πουκάμισα", + "hqd_shoes": "Παπούτσια", + "hqd_silk": "Μεταξωτά", + "hqd_sports": "Αθλητικά", + "hqd_synthetics": "Συνθετικά", + "hqd_timer": "Χρονομετρημένο", + "hqd_towel": "Πετσέτες", + "hqd_underwear": "Εσώρουχα", + "hqd_warm_up": "Ζέσταμα", + "hqd_wool": "Μάλλινα", + "hqd_working_suit": "Ενδύματα εργασίας", + "hygiene": "Υγιεινή", + "iot_checkup": "Έλεγχος", + "iot_dry_anti_mites": "Ενάντια στα ακάρεα", + "iot_dry_baby": "Μωρουδιακά", + "iot_dry_backpacks": "Σακίδια πλάτης", + "iot_dry_bathrobe": "Μπουρνούζι", + "iot_dry_bed_linen": "Κλινοσκεπάσματα", + "iot_dry_bed_quilt": "Καλυμματα κρεβατιου", + "iot_dry_cotton": "Βαμβακερό", + "iot_dry_cuddly_toys": "Λούτρινα Αρκουδάκια", + "iot_dry_curtains": "Κουρτίνες", + "iot_dry_dehumidifier": "Αφαίρεση υγρασίας", + "iot_dry_delicates": "Ευαισθητα", + "iot_dry_delicate_tablecloths": "Ευαίσθητα τραπεζομάντηλα", + "iot_dry_denim_jeans": "Ντένιμ - τζιν", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Παπλώματα", + "iot_dry_easy_iron_cotton": "Super Easy Iron", + "iot_dry_easy_iron_synthetics": "Εξαιρετικά εύκολο σιδέρωμα - Συνθετικά", + "iot_dry_gym_fit": "Γυμναστήριο", + "iot_dry_lingerie": "Εσώρουχα", + "iot_dry_mixed": "Μικτά", + "iot_dry_playsuits": "Στολές", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Γρήγορο 59'.", + "iot_dry_refresh": "Refresh", + "iot_dry_regenerates_waterproof": "Ανανέωση αδιάβροχων", + "iot_dry_relax_creases": "ΧΑΛΑΡΩΣΗ", + "iot_dry_shirts": "Πουκάμισα", + "iot_dry_small_load": "ΜΙΚΡΟ ΦΟΡΤΙΟ", + "iot_dry_swimsuits_and_bikinis": "Μαγιό", + "iot_dry_synthetics": "Συνθετικα", + "iot_dry_synthetic_dry": "Συνθετικά στέγνωμα", + "iot_dry_tablecloths": "Τραπεζομάντηλα", + "iot_dry_technical_fabrics": "Τεχνικά υφάσματα", + "iot_dry_warm_embrace": "Ζεστή Αγκαλιά", + "iot_dry_wool": "Μαλλινα", + "jeans": "τζιν", + "mix_and_dry": "Μικτά & Στέγνωμα", + "pets": "Κατοικίδια", + "pre_iron": "Προ-σιδερωμα", + "rapid_30": "Rapid 30", + "rapid_45": "Rapid 45 min", + "rapid_59": "Τέλειο Γρήγορο 59 λεπτά", + "refresh": "Φρεσκάρισμα", + "relax_creases": "ΧΑΛΑΡΩΣΗ", + "saving_30_min": "ΕΞΟΙΚΟΝΟΜΗΣΗ 30'", + "shirts": "Πουκάμισα", + "shoes": "Παπούτσια", + "small_load": "ΜΙΚΡΟ ΦΟΡΤΙΟ", + "soft_care": "Απαλή φροντίδα", + "sport_plus": "ΣΠΟΡ", + "super_easy_iron_misti": "Εξαιρετικά εύκολο σιδέρωμα για ανάμεικτα", + "super_easy_iron_xxl": "Εξαιρετικά εύκολο σιδέρωμα για XXL", + "super_fast_cottons": "Εξαιρετικα ΓΡΗΓΟΡΟ βαμβακερα", + "super_fast_delicates": "Εξαιρετικα ΓΡΗΓΟΡΟ ευαισθητα", + "synthetics": "Συνθετικα", + "total_care": "Ολικη Φροντιδα", + "trainers": "Αθλητικά παπούτσια", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Αναζωογονηση αδιαβροχων", + "whites": "Λευκά", + "wool": "Στέγνωμα Μάλλινων", + "woolmark": "Μαλλινα", + "xxl_load": "XXL Φορτιο", + "zoom_59": "Zoom 59" + } } }, "select": { @@ -820,7 +962,8 @@ "12": "Σιδέρωμα", "13": "Στέγνωμα για Αποθήκευση ", "14": "Ετοιμο να φορεθεί", - "15": "Επιπλέον στέγνωμα" + "15": "Επιπλέον στέγνωμα", + "11": "Χωρίς στέγνωμα" }, "name": "Επίπεδο στεγνώματος" }, @@ -877,7 +1020,7 @@ "name": "Λιγότερες ζάρες" }, "add_dish": { - "name": "" + "name": "Προσθήκη πιάτων" }, "eco_express": { "name": "Οικολογικό" diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index cc88ec9..c08e540 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -77,7 +77,10 @@ "4": "Scheduled", "5": "Scheduled", "6": "Error", - "7": "Ready" + "7": "Ready", + "2": "Program running", + "8": "Test", + "9": "Stopping cycle…" } }, "program_phases_wm": { @@ -121,7 +124,9 @@ "16": "Cooldown", "18": "Keep Fresh", "19": "Drying", - "20": "Drying" + "20": "Drying", + "11": "Ready", + "17": "unknown" }, "name": "Phase" }, @@ -147,7 +152,8 @@ "12": "Iron dry", "13": "Cupboard Dry", "14": "Ready to wear", - "15": "Extra dry" + "15": "Extra dry", + "11": "No drying" }, "name": "Drying level" }, @@ -224,6 +230,142 @@ "5": "Fan", "6": "Fan" } + }, + "programs_td": { + "state": { + "active_dry": "Active Dry", + "allergy_care": "Anti-allergy", + "all_in_one": "All in One", + "antiallergy": "Anti-allergy", + "anti_odours": "Anti-odours", + "auto_care": "Auto Care", + "baby": "Baby", + "bed_quilt": "Bed Quilt", + "care_30": "Care 30", + "care_45": "Care 45", + "care_59": "Care 59", + "coloured": "Colored", + "daily_45_min": "Daily 45'", + "daily_perfect_59_min": "Daily Perfect 59'", + "darks_and_coloured": "Darks & Colored", + "delicates": "Delicates", + "duvet": "Duvet", + "eco": "Eco Cotton", + "ecospeed_cottons": "Ecospeed Cottons", + "ecospeed_delicates": "Ecospeed Delicates", + "ecospeed_mixed": "Ecospeed Mixed", + "extra_hygiene": "Extra Hygiene", + "fitness": "Fitness", + "fresh_care": "Fresh Care", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Towels", + "hqd_bed_sheets": "Bed Sheets", + "hqd_bulky": "Bulky Items", + "hqd_casual": "Casual", + "hqd_cold_wind_30": "Cool Breeze 30 minutes", + "hqd_cold_wind_timing": "Cool Breeze ", + "hqd_cotton": "Cotton", + "hqd_curtain": "Curtains", + "hqd_delicate": "Delicates", + "hqd_diaper": "Diapers", + "hqd_duvet": "Duvet", + "hqd_feather": "Down Jackets", + "hqd_hot_wind_timing": "Hot Air", + "hqd_hygienic": "Hygienising", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Jackets", + "hqd_jeans": "Jeans", + "hqd_luxury": "Luxury", + "hqd_mix": "Mixed", + "hqd_night_dry": "Overnight drying", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious Cure", + "hqd_quick_20": "Quick 20", + "hqd_quick_30": "Quick 30", + "hqd_quick_dry": "Quick dry", + "hqd_quilt": "Quilts", + "hqd_refresh": "Refresh", + "hqd_school_uniform": "School Uniform", + "hqd_shirt": "Shirts", + "hqd_shoes": "Shoes", + "hqd_silk": "Silk", + "hqd_sports": "Sports", + "hqd_synthetics": "Synthetics", + "hqd_timer": "Timed", + "hqd_towel": "Towels", + "hqd_underwear": "Underwear", + "hqd_warm_up": "Warm up", + "hqd_wool": "Wool", + "hqd_working_suit": "Workwear", + "hygiene": "Hygiene", + "iot_checkup": "Check-Up", + "iot_dry_anti_mites": "Anti-mites", + "iot_dry_baby": "Baby", + "iot_dry_backpacks": "Backpacks", + "iot_dry_bathrobe": "Bathrobe", + "iot_dry_bed_linen": "Bed Linen", + "iot_dry_bed_quilt": "Bed Quilt", + "iot_dry_cotton": "Cotton", + "iot_dry_cuddly_toys": "Cuddly Toys", + "iot_dry_curtains": "Curtains", + "iot_dry_dehumidifier": "Humidity Remover", + "iot_dry_delicates": "Delicates", + "iot_dry_delicate_tablecloths": "Delicate Tablecloths", + "iot_dry_denim_jeans": "Denim - Jeans", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Duvet", + "iot_dry_easy_iron_cotton": "Super Easy Iron", + "iot_dry_easy_iron_synthetics": "Super Easy Iron Synthetics", + "iot_dry_gym_fit": "Gym fit - Fitness", + "iot_dry_lingerie": "Lingerie", + "iot_dry_mixed": "Mixed", + "iot_dry_playsuits": "Playsuits", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Rapid 59'", + "iot_dry_refresh": "Refresh", + "iot_dry_regenerates_waterproof": "Regenerates Waterproof", + "iot_dry_relax_creases": "Relax Creases", + "iot_dry_shirts": "Shirts", + "iot_dry_small_load": "Small Load", + "iot_dry_swimsuits_and_bikinis": "Swimsuits and Bikinis", + "iot_dry_synthetics": "Synthetics", + "iot_dry_synthetic_dry": "Synthetic Dry", + "iot_dry_tablecloths": "Tablecloths", + "iot_dry_technical_fabrics": "Technical Fabrics", + "iot_dry_warm_embrace": "Warm Embrace", + "iot_dry_wool": "Wool", + "jeans": "Jeans", + "mix_and_dry": "Mix&Dry", + "pets": "Pets", + "pre_iron": "Pre-Iron", + "rapid_30": "Rapid 30", + "rapid_45": "Rapid 45 min", + "rapid_59": "Perfect Rapid 59 Min", + "refresh": "Refresh", + "relax_creases": "Relax Creases", + "saving_30_min": "Saving 30'", + "shirts": "Shirts", + "shoes": "Shoes", + "small_load": "Small Load", + "soft_care": "Soft Care", + "sport_plus": "Sport Plus", + "super_easy_iron_misti": "Super Easy Iron Mixed", + "super_easy_iron_xxl": "Super Easy Iron XXL", + "super_fast_cottons": "Super Fast Cottons", + "super_fast_delicates": "Super Fast Delicates", + "synthetics": "Syntethics", + "total_care": "Total Care", + "trainers": "Trainers", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Waterproof Revitalize", + "whites": "Whites", + "wool": "Dry Wool", + "woolmark": "Wool", + "xxl_load": "XXL Load", + "zoom_59": "Zoom 59" + } } }, "switch": { @@ -231,7 +373,7 @@ "name": "Anticrease" }, "add_dish": { - "name": "" + "name": "Add dishes" }, "eco_express": { "name": "Eco" @@ -329,7 +471,8 @@ "12": "Iron dry", "13": "Cupboard Dry", "14": "Ready to wear", - "15": "Extra dry" + "15": "Extra dry", + "11": "No drying" }, "name": "Drying level" }, diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index be839ed..990ffbd 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -9,7 +9,10 @@ "4": "Programado", "5": "Programado", "6": "Error", - "7": "Listo" + "7": "Listo", + "2": "Programa en marcha", + "8": "Test", + "9": "Parada del ciclo..." } }, "program_phases_wm": { @@ -53,7 +56,9 @@ "16": "Enfriar", "18": "Ropa fresca", "19": "Secado", - "20": "Secado" + "20": "Secado", + "11": "Listo", + "17": "unknown" }, "name": "Fase" }, @@ -79,7 +84,8 @@ "12": "Planchar", "13": "Listo para guardar", "14": "Listo para llevar", - "15": "Extraseco" + "15": "Extraseco", + "11": "Sin secado" }, "name": "Nivel de secado" }, @@ -165,6 +171,142 @@ "5": "Ventilador", "6": "Ventilador" } + }, + "programs_td": { + "state": { + "active_dry": "Secado activo", + "allergy_care": "Antialergénico", + "all_in_one": "All in One", + "antiallergy": "Antialergénico", + "anti_odours": "Anti-olor", + "auto_care": "Autocuidado", + "baby": "Baby", + "bed_quilt": "Edredón", + "care_30": "Cuidado 30", + "care_45": "Cuidado 45", + "care_59": "Cuidado 59", + "coloured": "Color", + "daily_45_min": "DIARIO 45'", + "daily_perfect_59_min": "DIARIO PERFECTO 59'", + "darks_and_coloured": "Oscuro & Color", + "delicates": "Delicados", + "duvet": "Edredón", + "eco": "Algodón Eco", + "ecospeed_cottons": "Ecospeed Algodón", + "ecospeed_delicates": "Ecospeed Delicados", + "ecospeed_mixed": "Ecospeed Mixtos", + "extra_hygiene": "Higiene Extra", + "fitness": "Deporte", + "fresh_care": "Cuidado y frescor", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Toallas", + "hqd_bed_sheets": "Sábanas", + "hqd_bulky": "Objetos voluminosos", + "hqd_casual": "Casual", + "hqd_cold_wind_30": "Brisa fresca 30 minutos", + "hqd_cold_wind_timing": "Brisa fresca ", + "hqd_cotton": "Algodón", + "hqd_curtain": "Cortinas", + "hqd_delicate": "Ropa delicada", + "hqd_diaper": "Pañales", + "hqd_duvet": "Edredones", + "hqd_feather": "Plumíferos", + "hqd_hot_wind_timing": "Aire caliente", + "hqd_hygienic": "Higienizar", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Chaquetas", + "hqd_jeans": "Vaqueros", + "hqd_luxury": "Lujo", + "hqd_mix": "Ropa mixta", + "hqd_night_dry": "Secado nocturno", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Rápido 20", + "hqd_quick_30": "Rápido 30", + "hqd_quick_dry": "Secado rápido", + "hqd_quilt": "Colchas", + "hqd_refresh": "Refrescar", + "hqd_school_uniform": "Uniformes escolares", + "hqd_shirt": "Camisas", + "hqd_shoes": "Zapatos", + "hqd_silk": "Seda", + "hqd_sports": "Deporte", + "hqd_synthetics": "Sintéticos", + "hqd_timer": "Temporizado", + "hqd_towel": "Toallas", + "hqd_underwear": "Ropa interior", + "hqd_warm_up": "Calentar", + "hqd_wool": "Lana", + "hqd_working_suit": "Ropa de trabajo", + "hygiene": "Higiene", + "iot_checkup": "Revisión", + "iot_dry_anti_mites": "Antiácaros", + "iot_dry_baby": "Baby", + "iot_dry_backpacks": "Mochilas", + "iot_dry_bathrobe": "Ropa de Baño", + "iot_dry_bed_linen": "Ropa de Cama", + "iot_dry_bed_quilt": "Edredón", + "iot_dry_cotton": "Algodón", + "iot_dry_cuddly_toys": "Peluches", + "iot_dry_curtains": "Cortinas", + "iot_dry_dehumidifier": "Eliminador de humedad", + "iot_dry_delicates": "Delicados", + "iot_dry_delicate_tablecloths": "Mantelería Delicada", + "iot_dry_denim_jeans": "Denim - Vaqueros", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Edredón", + "iot_dry_easy_iron_cotton": "Planchado Súper Fácil", + "iot_dry_easy_iron_synthetics": "Planchado muy fácil - Sintéticos", + "iot_dry_gym_fit": "Ropa de Deporte - Fitness", + "iot_dry_lingerie": "Lencería", + "iot_dry_mixed": "Ropa mixta", + "iot_dry_playsuits": "Prendas de una pieza - Mono", + "iot_dry_rapid_30": "Rápido 30’", + "iot_dry_rapid_59": "Rápido 59’", + "iot_dry_refresh": "Refresh", + "iot_dry_regenerates_waterproof": "Regeneración Tejidos Impermeables", + "iot_dry_relax_creases": "Reducción Arrugas", + "iot_dry_shirts": "Camisas", + "iot_dry_small_load": "Carga reducida", + "iot_dry_swimsuits_and_bikinis": "Trajes de baño", + "iot_dry_synthetics": "Sintéticos", + "iot_dry_synthetic_dry": "Secado de prendas sintéticas", + "iot_dry_tablecloths": "Mantelería", + "iot_dry_technical_fabrics": "Tejidos Técnicos", + "iot_dry_warm_embrace": "Abrazo cálido", + "iot_dry_wool": "Woolmark", + "jeans": "Vaqueros", + "mix_and_dry": "Mix&Dry", + "pets": "Mascotas", + "pre_iron": "Pre-Planchado", + "rapid_30": "Rápido 30 min", + "rapid_45": "Rápido 45 min", + "rapid_59": "Perfecto Rápido 59 Min", + "refresh": "Refresh", + "relax_creases": "Reducción Arrugas", + "saving_30_min": "ECO 30'", + "shirts": "Camisas", + "shoes": "Zapatos", + "small_load": "Carga reducida", + "soft_care": "Cuidado suave", + "sport_plus": "Deporte", + "super_easy_iron_misti": "Planchado muy fácil ropa mixta", + "super_easy_iron_xxl": "Planchado muy fácil XXL", + "super_fast_cottons": "Algodón Súper Rápido", + "super_fast_delicates": "Delicados Súper Rápidos", + "synthetics": "Sintéticos", + "total_care": "Total Care", + "trainers": "Calzado Deportivo", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Revitalizante Waterproof", + "whites": "Blanco", + "wool": "Secado Lana", + "woolmark": "Woolmark", + "xxl_load": "Carga XXL", + "zoom_59": "Zoom 59" + } } }, "select": { @@ -820,7 +962,8 @@ "12": "Planchar", "13": "Listo para guardar", "14": "Listo para llevar", - "15": "Extraseco" + "15": "Extraseco", + "11": "Sin secado" }, "name": "Nivel de secado" }, @@ -877,7 +1020,7 @@ "name": "Antiarrugas" }, "add_dish": { - "name": "" + "name": "Añade platos" }, "eco_express": { "name": "Eco" diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index 7b9dc46..21c7d10 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -9,7 +9,10 @@ "4": "Planifié", "5": "Planifié", "6": "Erreur", - "7": "Prêt" + "7": "Prêt", + "2": "Programme en cours", + "8": "Test", + "9": "Arrêt du cycle en cours…" } }, "program_phases_wm": { @@ -53,7 +56,9 @@ "16": "Refroidissement", "18": "Keep Fresh", "19": "Séchage", - "20": "Séchage" + "20": "Séchage", + "11": "Prêt", + "17": "unknown" }, "name": "Phase" }, @@ -79,7 +84,8 @@ "12": "Fer", "13": "Prêt à ranger", "14": "Prêt à porter", - "15": "Extra sec" + "15": "Extra sec", + "11": "Pas de séchage" }, "name": "Niveau de séchage" }, @@ -165,6 +171,142 @@ "5": "Ventilateur", "6": "Ventilateur" } + }, + "programs_td": { + "state": { + "active_dry": "Séchage actif", + "allergy_care": "Anti-allergies", + "all_in_one": "Tout en 1", + "antiallergy": "Anti-allergies", + "anti_odours": "Anti-odeurs", + "auto_care": "Soin automatique", + "baby": "Baby", + "bed_quilt": "Couette", + "care_30": "Soin 30", + "care_45": "Soin 45", + "care_59": "Soin 59", + "coloured": "Couleurs", + "daily_45_min": "QUOTIDIEN 45'", + "daily_perfect_59_min": "QUOTIDIEN PARFAIT 59'", + "darks_and_coloured": "Couleurs dont foncées", + "delicates": "Délicat", + "duvet": "Couette", + "eco": "Coton Éco", + "ecospeed_cottons": "Ecospeed coton", + "ecospeed_delicates": "Delicats ecospeed", + "ecospeed_mixed": "Ecospeed mixte", + "extra_hygiene": "Extra Hygiene", + "fitness": "Fitness", + "fresh_care": "Soin frais", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Serviettes", + "hqd_bed_sheets": "Draps", + "hqd_bulky": "Articles volumineux", + "hqd_casual": "Journalier", + "hqd_cold_wind_30": "Brise rafraîchissante 30 minutes", + "hqd_cold_wind_timing": "Brise rafraîchissante ", + "hqd_cotton": "Coton", + "hqd_curtain": "Rideaux", + "hqd_delicate": "Délicats", + "hqd_diaper": "Couches", + "hqd_duvet": "Couette", + "hqd_feather": "Vestes en duvet", + "hqd_hot_wind_timing": "Air chaud", + "hqd_hygienic": "Hygiénisation", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Vestes", + "hqd_jeans": "Jeans", + "hqd_luxury": "Luxury", + "hqd_mix": "Tissus mélangés", + "hqd_night_dry": "Séchage toute la nuit", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Rapide 20’", + "hqd_quick_30": "Rapide 30’", + "hqd_quick_dry": "Séchage rapide", + "hqd_quilt": "Couvertures", + "hqd_refresh": "Rafraîchissement", + "hqd_school_uniform": "Uniforme scolaire", + "hqd_shirt": "Chemises", + "hqd_shoes": "Chaussures", + "hqd_silk": "Soie", + "hqd_sports": "Sport", + "hqd_synthetics": "Synthétiques", + "hqd_timer": "Temporisé", + "hqd_towel": "Serviettes", + "hqd_underwear": "Sous-vêtements", + "hqd_warm_up": "Réveil", + "hqd_wool": "Laine", + "hqd_working_suit": "Vêtements de travail", + "hygiene": "Hygiène", + "iot_checkup": "Vérification", + "iot_dry_anti_mites": "Anti-acariens", + "iot_dry_baby": "Baby", + "iot_dry_backpacks": "Sac à dos", + "iot_dry_bathrobe": "Peignoir", + "iot_dry_bed_linen": "Linge de lit", + "iot_dry_bed_quilt": "Couette", + "iot_dry_cotton": "Coton", + "iot_dry_cuddly_toys": "Jouets en peluche", + "iot_dry_curtains": "Rideaux", + "iot_dry_dehumidifier": "Élimination de l\\'humidité", + "iot_dry_delicates": "Délicats", + "iot_dry_delicate_tablecloths": "Nappes délicates", + "iot_dry_denim_jeans": "Denim - jeans", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Couette", + "iot_dry_easy_iron_cotton": "Repassage super facile", + "iot_dry_easy_iron_synthetics": "Repassage super facile des synthétiques", + "iot_dry_gym_fit": "Sport", + "iot_dry_lingerie": "Lingerie", + "iot_dry_mixed": "Tissus mélangés", + "iot_dry_playsuits": "Combinaisons", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Rapide 59'.", + "iot_dry_refresh": "Coup d\\'éclat", + "iot_dry_regenerates_waterproof": "Imperméabilisant", + "iot_dry_relax_creases": "Anti-plis", + "iot_dry_shirts": "Chemises", + "iot_dry_small_load": "Faible charge", + "iot_dry_swimsuits_and_bikinis": "Maillots de bain", + "iot_dry_synthetics": "Synthétiques", + "iot_dry_synthetic_dry": "Séchage des synthétiques", + "iot_dry_tablecloths": "Nappes", + "iot_dry_technical_fabrics": "Textiles techniques", + "iot_dry_warm_embrace": "Chauffage délicat", + "iot_dry_wool": "Woolmark", + "jeans": "Jeans", + "mix_and_dry": "Mix&Dry", + "pets": "Animaux de compagnie", + "pre_iron": "Pré-repassage", + "rapid_30": "Rapid 30", + "rapid_45": "Rapide 45 min", + "rapid_59": "Lavage Parfait 59 Min", + "refresh": "Coup d'éclat", + "relax_creases": "Anti-plis", + "saving_30_min": "ECO 30'", + "shirts": "Chemises", + "shoes": "Chaussures", + "small_load": "Faible charge", + "soft_care": "Soin Doux", + "sport_plus": "Sports", + "super_easy_iron_misti": "Repassage super facile des mixtes", + "super_easy_iron_xxl": "Repassage super facile XXL", + "super_fast_cottons": "Super rapide coton", + "super_fast_delicates": "Super rapide délicat", + "synthetics": "Synthétiques", + "total_care": "Total Care", + "trainers": "Baskets", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Entretien imperméable", + "whites": "Blancs", + "wool": "Séchage Laine", + "woolmark": "Woolmark", + "xxl_load": "Charge XXL", + "zoom_59": "Zoom 59" + } } }, "select": { @@ -820,7 +962,8 @@ "12": "Fer", "13": "Prêt à ranger", "14": "Prêt à porter", - "15": "Extra sec" + "15": "Extra sec", + "11": "Pas de séchage" }, "name": "Niveau de séchage" }, @@ -877,7 +1020,7 @@ "name": "Anti-pli" }, "add_dish": { - "name": "" + "name": "Ajoutez de la vaisselle" }, "eco_express": { "name": "Éco" diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index 895c659..fda7b1d 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -9,7 +9,10 @@ "4": "מתוזמן", "5": "מתוזמן", "6": "שְׁגִיאָה", - "7": "מוּכָן" + "7": "מוּכָן", + "2": "התוכנית פועלת", + "8": "Test", + "9": "Stopping cycle…" } }, "program_phases_wm": { @@ -53,7 +56,9 @@ "16": "Cooldown", "18": "Keep Fresh", "19": "יִבּוּשׁ", - "20": "יִבּוּשׁ" + "20": "יִבּוּשׁ", + "11": "מוּכָן", + "17": "unknown" }, "name": "שלב" }, @@ -79,7 +84,8 @@ "12": "בַּרזֶל", "13": "ארון יבש", "14": "Ready to wear", - "15": "יבש במיוחד" + "15": "יבש במיוחד", + "11": "ללא ייבוש" }, "name": "רמת ייבוש" }, @@ -165,6 +171,23 @@ "5": "Fan", "6": "Fan" } + }, + "programs_td": { + "state": { + "genius": "Genius", + "hqd_bath_towel": "Bath towel", + "hqd_bulky": "Bulky", + "hqd_cold_wind_30": "Cold wind 30 minutes", + "hqd_cold_wind_timing": "Cold wind", + "hqd_hot_wind_timing": "Hot wind", + "hqd_luxury": "Luxury", + "hqd_night_dry": "Night dry", + "hqd_refresh": "Refresh", + "hqd_timer": "תוזמן", + "hqd_warm_up": "Warm up", + "hqd_working_suit": "Working suit", + "iot_dry_synthetic_dry": "סינתטי יבש" + } } }, "select": { @@ -419,7 +442,8 @@ "12": "בַּרזֶל", "13": "ארון יבש", "14": "Ready to wear", - "15": "יבש במיוחד" + "15": "יבש במיוחד", + "11": "ללא ייבוש" }, "name": "רמת ייבוש" }, @@ -460,7 +484,7 @@ "name": "Anticrease" }, "add_dish": { - "name": "" + "name": "Add dishes" }, "eco_express": { "name": "Eco" diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index 4296a2d..f53749c 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -9,7 +9,10 @@ "4": "Zakazano", "5": "Zakazano", "6": "Greška", - "7": "Spremno" + "7": "Spremno", + "2": "Program u tijeku", + "8": "Test", + "9": "Zaustavljanje ciklusa…" } }, "program_phases_wm": { @@ -53,7 +56,9 @@ "16": "Hlađenje", "18": "Održi svježim", "19": "Sušenje", - "20": "Sušenje" + "20": "Sušenje", + "11": "Spremno", + "17": "unknown" }, "name": "Faza" }, @@ -79,7 +84,8 @@ "12": "Suho za glačanje", "13": "Suho za spremanje", "14": "Spremno za nošenje", - "15": "Potpuno suho" + "15": "Potpuno suho", + "11": "Bez sušenja" }, "name": "Stupanj suhoće" }, @@ -165,6 +171,142 @@ "5": "Ventilator", "6": "Ventilator" } + }, + "programs_td": { + "state": { + "active_dry": "Aktivno sušenje", + "allergy_care": "Antialergijski", + "all_in_one": "All in One", + "antiallergy": "Antialergijski", + "anti_odours": "Protiv neugodnih mirisa", + "auto_care": "Auto Care", + "baby": "Dječje rublje", + "bed_quilt": "Pokrivači", + "care_30": "Njega 30", + "care_45": "Njega 45", + "care_59": "Njega 59", + "coloured": "Šareno", + "daily_45_min": "Dnevni 45'", + "daily_perfect_59_min": "Dnevni Perfect 59'", + "darks_and_coloured": "Tamno & Šareno", + "delicates": "Osjetljivo", + "duvet": "Popluni", + "eco": "Ekološki pamuk", + "ecospeed_cottons": "Ecospeed Pamuk", + "ecospeed_delicates": "Ecospeed osjetljivo", + "ecospeed_mixed": "Ecospeed Miješane tkanine", + "extra_hygiene": "Extra higijenski", + "fitness": "Fitness", + "fresh_care": "Svježa njega", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Ručnici", + "hqd_bed_sheets": "Plahte", + "hqd_bulky": "Glomazni komadi", + "hqd_casual": "Opušteno", + "hqd_cold_wind_30": "Hladni zrak, 30 minuta", + "hqd_cold_wind_timing": "Hladni zrak ", + "hqd_cotton": "Pamuk", + "hqd_curtain": "Zavjese", + "hqd_delicate": "Osjetljivo rublje", + "hqd_diaper": "Pelene", + "hqd_duvet": "Poplun", + "hqd_feather": "Jakne punjene paperjem", + "hqd_hot_wind_timing": "Vrući zrak", + "hqd_hygienic": "Higijenizacija", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Jakne", + "hqd_jeans": "Traperice", + "hqd_luxury": "Luxury", + "hqd_mix": "Miješano rublje", + "hqd_night_dry": "Sušenje preko noći", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious Cure", + "hqd_quick_20": "Brzo 20", + "hqd_quick_30": "Brzo 30", + "hqd_quick_dry": "Brzo sušenje", + "hqd_quilt": "Popluni", + "hqd_refresh": "Protiv neugodnih mirisa", + "hqd_school_uniform": "Školska uniforma", + "hqd_shirt": "Majice", + "hqd_shoes": "Cipele", + "hqd_silk": "Svila", + "hqd_sports": "Sportska odjeća", + "hqd_synthetics": "Sintetika", + "hqd_timer": "Vremenski definirano", + "hqd_towel": "Ručnici", + "hqd_underwear": "Donje rublje", + "hqd_warm_up": "Zagrijavanje", + "hqd_wool": "Vuna", + "hqd_working_suit": "Radna odjeća", + "hygiene": "Higijena", + "iot_checkup": "Kontrolni pregled", + "iot_dry_anti_mites": "Protiv grinja", + "iot_dry_baby": "Dječje rublje", + "iot_dry_backpacks": "Ruksaci", + "iot_dry_bathrobe": "Kupaonski ogrtači", + "iot_dry_bed_linen": "Posteljina", + "iot_dry_bed_quilt": "Pokrivači", + "iot_dry_cotton": "Pamuk", + "iot_dry_cuddly_toys": "Plišane igračke", + "iot_dry_curtains": "Zavjese", + "iot_dry_dehumidifier": "Odstranjivač vlage", + "iot_dry_delicates": "Osjetljivo", + "iot_dry_delicate_tablecloths": "Osjetljivi stolnjaci", + "iot_dry_denim_jeans": "Traper – Traperice", + "iot_dry_down_jacket": "Jakna", + "iot_dry_duvet": "Popluni", + "iot_dry_easy_iron_cotton": "Super Easy Iron", + "iot_dry_easy_iron_synthetics": "Super Easy Iron za sintetičko rublje", + "iot_dry_gym_fit": "Fitness odjeća", + "iot_dry_lingerie": "Donje rublje", + "iot_dry_mixed": "Miješane tkanine", + "iot_dry_playsuits": "Kombinezoni", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Brzi program 59’.", + "iot_dry_refresh": "Osvježavanje", + "iot_dry_regenerates_waterproof": "Regeneracija vodootporne odjeće", + "iot_dry_relax_creases": "Smanjenje nabora", + "iot_dry_shirts": "Košulje", + "iot_dry_small_load": "Mali kapacitet", + "iot_dry_swimsuits_and_bikinis": "Kupaći kostimi", + "iot_dry_synthetics": "Sintetika", + "iot_dry_synthetic_dry": "Suha sintetika", + "iot_dry_tablecloths": "Stolnjaci", + "iot_dry_technical_fabrics": "Tehničko platno", + "iot_dry_warm_embrace": "Zagrijavanje", + "iot_dry_wool": "Woolmark", + "jeans": "Traper", + "mix_and_dry": "Mix&Dry", + "pets": "Kućni ljubimci", + "pre_iron": "Prije glačanja", + "rapid_30": "Rapid 30", + "rapid_45": "Brzi 45 min", + "rapid_59": "Perfect Rapid 59 Min", + "refresh": "Osvježavanje", + "relax_creases": "Smanjenje nabora", + "saving_30_min": "ECO 30'", + "shirts": "Košulje", + "shoes": "Cipele", + "small_load": "Mali kapacitet", + "soft_care": "Soft Care", + "sport_plus": "Sport Plus", + "super_easy_iron_misti": "Iznimno jednostavno glačanje za raznovrsne tkanine", + "super_easy_iron_xxl": "Iznimno jednostavno glačanje XXL", + "super_fast_cottons": "Super brzi Pamuk", + "super_fast_delicates": "Super brzi Osjetljivo", + "synthetics": "Sintetika", + "total_care": "Total Care", + "trainers": "Trenirke i sportska obuća", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Regeneracija vodootporne odjeće", + "whites": "Bijelo", + "wool": "Sušenje vune", + "woolmark": "Woolmark", + "xxl_load": "XXL kapacitet", + "zoom_59": "Zoom 59" + } } }, "select": { @@ -820,7 +962,8 @@ "12": "Suho za glačanje", "13": "Suho za spremanje", "14": "Spremno za nošenje", - "15": "Potpuno suho" + "15": "Potpuno suho", + "11": "Bez sušenja" }, "name": "Stupanj suhoće" }, @@ -877,7 +1020,7 @@ "name": "Sprečavanje gužvanja" }, "add_dish": { - "name": "" + "name": "Dodaj posuđe" }, "eco_express": { "name": "Ekološki" diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index 08aa93f..5afa329 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -67,7 +67,10 @@ "4": "Pianificato", "5": "Pianificato", "6": "Errore", - "7": "Pronta" + "7": "Pronta", + "2": "Programma in esecuzione", + "8": "Test", + "9": "Arresto il ciclo..." } }, "program_phases_wm": { @@ -111,7 +114,9 @@ "16": "Raffreddamento", "18": "Keep Fresh", "19": "Asciugatura", - "20": "Asciugatura" + "20": "Asciugatura", + "11": "Pronta", + "17": "unknown" }, "name": "Fase" }, @@ -137,7 +142,8 @@ "12": "Stiro facile", "13": "Armadio", "14": "Pronto da indossare", - "15": "Extra asciutto" + "15": "Extra asciutto", + "11": "Nessuna asciugatura" }, "name": "Livello Asciugatura" }, @@ -217,6 +223,142 @@ "5": "Ventilatore", "6": "Ventilatore" } + }, + "programs_td": { + "state": { + "active_dry": "Active Dry", + "allergy_care": "Anti-allergie", + "all_in_one": "Tutto in Uno", + "antiallergy": "Anti-allergie", + "anti_odours": "Anti-odori", + "auto_care": "Auto Care", + "baby": "Baby", + "bed_quilt": "Trapunte-Piumoni", + "care_30": "Care 30", + "care_45": "Care 45", + "care_59": "Care 59", + "coloured": "Colorati", + "daily_45_min": "Quotidiano 45'", + "daily_perfect_59_min": "Daily Perfect 59'", + "darks_and_coloured": "Scuri e Colorati", + "delicates": "Delicati", + "duvet": "Piumone", + "eco": "Eco Cotton", + "ecospeed_cottons": "Ecospeed Cotone", + "ecospeed_delicates": "Ecospeed Delicati", + "ecospeed_mixed": "Ecospeed Misti", + "extra_hygiene": "Igiene Extra", + "fitness": "Fitness", + "fresh_care": "Fresh Care", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Asciugamani", + "hqd_bed_sheets": "Lenzuola", + "hqd_bulky": "Vestiti voluminosi", + "hqd_casual": "Casual", + "hqd_cold_wind_30": "Brezza rinfrescante 30 minuti", + "hqd_cold_wind_timing": "Brezza rinfrescante", + "hqd_cotton": "Cotone", + "hqd_curtain": "Tende", + "hqd_delicate": "Delicati", + "hqd_diaper": "Pannolini", + "hqd_duvet": "Piumone", + "hqd_feather": "Piumini", + "hqd_hot_wind_timing": "Aria calda", + "hqd_hygienic": "Igienizzante", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Giacche", + "hqd_jeans": "Jeans", + "hqd_luxury": "Vestiti preziosi", + "hqd_mix": "Misti", + "hqd_night_dry": "Asciugatura notturna", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Rapido 20", + "hqd_quick_30": "Rapido 30", + "hqd_quick_dry": "Asciugatura veloce", + "hqd_quilt": "Trapunte", + "hqd_refresh": "Refresh", + "hqd_school_uniform": "Uniforme scolastica", + "hqd_shirt": "Camicie", + "hqd_shoes": "Scarpe", + "hqd_silk": "Seta", + "hqd_sports": "Sport", + "hqd_synthetics": "Sintetici", + "hqd_timer": "A tempo", + "hqd_towel": "Asciugamani", + "hqd_underwear": "Intimo", + "hqd_warm_up": "Riscaldamento", + "hqd_wool": "Lana", + "hqd_working_suit": "Completo da lavoro", + "hygiene": "Igiene", + "iot_checkup": "Check-Up", + "iot_dry_anti_mites": "Anti-Acari", + "iot_dry_baby": "Baby", + "iot_dry_backpacks": "Zaini", + "iot_dry_bathrobe": "Accappatoi e Spugne", + "iot_dry_bed_linen": "Lenzuola", + "iot_dry_bed_quilt": "Trapunte-Piumoni", + "iot_dry_cotton": "Cotone", + "iot_dry_cuddly_toys": "Peluches", + "iot_dry_curtains": "Tende", + "iot_dry_dehumidifier": "Rimuovi umidità", + "iot_dry_delicates": "Delicati", + "iot_dry_delicate_tablecloths": "Tovaglie delicate", + "iot_dry_denim_jeans": "Denim - jeans", + "iot_dry_down_jacket": "Giacche", + "iot_dry_duvet": "Piumone", + "iot_dry_easy_iron_cotton": "Stira facile", + "iot_dry_easy_iron_synthetics": "Stira facile Sintetici", + "iot_dry_gym_fit": "Gym fit - Fitness", + "iot_dry_lingerie": "Lingerie", + "iot_dry_mixed": "Misti", + "iot_dry_playsuits": "Tutine", + "iot_dry_rapid_30": "Rapido 30", + "iot_dry_rapid_59": "Rapido 59'.", + "iot_dry_refresh": "Rinfresca", + "iot_dry_regenerates_waterproof": "Rigenera Tessuti Impermeabili", + "iot_dry_relax_creases": "Meno Pieghe", + "iot_dry_shirts": "Camicie", + "iot_dry_small_load": "Carico Small", + "iot_dry_swimsuits_and_bikinis": "Costumi e Bikini", + "iot_dry_synthetics": "Sintetici", + "iot_dry_synthetic_dry": "Asciugatura Sintetici", + "iot_dry_tablecloths": "Tovaglie", + "iot_dry_technical_fabrics": "Tessuti Tecnici", + "iot_dry_warm_embrace": "Caldo abbraccio", + "iot_dry_wool": "Lana", + "jeans": "Jeans", + "mix_and_dry": "Mix&Dry", + "pets": "Pets", + "pre_iron": "Pre-Stiro", + "rapid_30": "Rapido 30", + "rapid_45": "Rapido 45 min", + "rapid_59": "Perfect Rapid 59 Min", + "refresh": "Rinfresca", + "relax_creases": "Meno Pieghe", + "saving_30_min": "Risparmio 30'", + "shirts": "Camicie", + "shoes": "Scarpe", + "small_load": "Carico Small", + "soft_care": "Soft Care", + "sport_plus": "Sport Plus", + "super_easy_iron_misti": "Super Easy Iron misti", + "super_easy_iron_xxl": "Super Easy Iron XXL", + "super_fast_cottons": "Super Fast Cotone", + "super_fast_delicates": "Super Fast Delicati", + "synthetics": "Sintetici", + "total_care": "Total Care", + "trainers": "Scarpe da ginnastica", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Impermeabilizzazione", + "whites": "Bianchi", + "wool": "Asciugatura Lana", + "woolmark": "Lana", + "xxl_load": "Carico XXL", + "zoom_59": "Zoom 59" + } } }, "select": { @@ -872,7 +1014,8 @@ "12": "Stiro facile", "13": "Armadio", "14": "Pronto da indossare", - "15": "Extra asciutto" + "15": "Extra asciutto", + "11": "Nessuna asciugatura" }, "name": "Livello Asciugatura" }, @@ -929,7 +1072,7 @@ "name": "Antipieghe " }, "add_dish": { - "name": "" + "name": "Aggiungi stoviglie" }, "eco_express": { "name": "Eco" diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index e1287e4..f0bd7cb 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -9,7 +9,10 @@ "4": "Gepland", "5": "Gepland", "6": "Fout", - "7": "Klaar" + "7": "Klaar", + "2": "Programma draait", + "8": "Test", + "9": "Programma stoppen…" } }, "program_phases_wm": { @@ -53,7 +56,9 @@ "16": "Afkoelen", "18": "Fris houden", "19": "Drogen", - "20": "Drogen" + "20": "Drogen", + "11": "Klaar", + "17": "unknown" }, "name": "Fase" }, @@ -79,7 +84,8 @@ "12": "Strijken", "13": "Kastdroog", "14": "Klaar om te dragen", - "15": "Extra droog" + "15": "Extra droog", + "11": "Niet drogen" }, "name": "Droogniveau" }, @@ -165,6 +171,142 @@ "5": "Ventilator", "6": "Ventilator" } + }, + "programs_td": { + "state": { + "active_dry": "Actief drogen", + "allergy_care": "Anti-allergie", + "all_in_one": "All in One", + "antiallergy": "Anti-allergie", + "anti_odours": "Anti geuren", + "auto_care": "Automatische verzorging", + "baby": "Baby", + "bed_quilt": "Dekbed", + "care_30": "Verzorging 30'", + "care_45": "Verzorging 45'", + "care_59": "Verzorging 59'", + "coloured": "Gekleurd", + "daily_45_min": "DAILY 45'", + "daily_perfect_59_min": "DAILY PERFECT 59'", + "darks_and_coloured": "Donker & Gekleurd", + "delicates": "Fijne was", + "duvet": "Dekbed", + "eco": "Eco katoen", + "ecospeed_cottons": "Ecospeed Katoen", + "ecospeed_delicates": "Ecospeed fijne was", + "ecospeed_mixed": "Ecospeed Gemengd", + "extra_hygiene": "Extra Hygiene", + "fitness": "Fitness", + "fresh_care": "Opfrisverzorging", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Handdoeken", + "hqd_bed_sheets": "Beddengoed", + "hqd_bulky": "Grote artikelen", + "hqd_casual": "Casual", + "hqd_cold_wind_30": "30 minuten koel briesje", + "hqd_cold_wind_timing": "Koel briesje ", + "hqd_cotton": "Katoen", + "hqd_curtain": "Gordijnen", + "hqd_delicate": "Fijne was", + "hqd_diaper": "Luiers", + "hqd_duvet": "Dekbed", + "hqd_feather": "Donsjassen", + "hqd_hot_wind_timing": "Hete lucht", + "hqd_hygienic": "Ontsmetten", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Jassen", + "hqd_jeans": "Jeans", + "hqd_luxury": "Luxury", + "hqd_mix": "Gemengde vezels", + "hqd_night_dry": "Nachtelijk droogprogramma", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Quick 20", + "hqd_quick_30": "Quick 30", + "hqd_quick_dry": "Quick dry", + "hqd_quilt": "Quilts", + "hqd_refresh": "Opfrissen", + "hqd_school_uniform": "Schooluniform", + "hqd_shirt": "Overhemden", + "hqd_shoes": "Schoenen", + "hqd_silk": "Zijde", + "hqd_sports": "Sport", + "hqd_synthetics": "Synthetische stoffen", + "hqd_timer": "Getimed", + "hqd_towel": "Handdoeken", + "hqd_underwear": "Ondergoed", + "hqd_warm_up": "Opwarmen", + "hqd_wool": "Wol", + "hqd_working_suit": "Werkkleding", + "hygiene": "Hygiëne", + "iot_checkup": "Controle", + "iot_dry_anti_mites": "Anti-mijten", + "iot_dry_baby": "Baby", + "iot_dry_backpacks": "Rugzakken", + "iot_dry_bathrobe": "Badjas", + "iot_dry_bed_linen": "Bed Linnen", + "iot_dry_bed_quilt": "Dekbed", + "iot_dry_cotton": "Katoen", + "iot_dry_cuddly_toys": "Knufflels", + "iot_dry_curtains": "Gordijnen", + "iot_dry_dehumidifier": "Vochtigheidsverwijderaar", + "iot_dry_delicates": "Delicate was", + "iot_dry_delicate_tablecloths": "Delicate tafelkleden", + "iot_dry_denim_jeans": "Denim – Jeans", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Dekbed", + "iot_dry_easy_iron_cotton": "Super Gemakkelijk strijken", + "iot_dry_easy_iron_synthetics": "Synthetische stoffen gemakkelijk strijken", + "iot_dry_gym_fit": "Gym fit - Fitness", + "iot_dry_lingerie": "Lingerie", + "iot_dry_mixed": "Gemengde vezels", + "iot_dry_playsuits": "Jumpsuits", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Snel 59'", + "iot_dry_refresh": "Opfrissen", + "iot_dry_regenerates_waterproof": "Regenereert Waterproof", + "iot_dry_relax_creases": "Ontkreuken", + "iot_dry_shirts": "Overhemden", + "iot_dry_small_load": "Kleine lading", + "iot_dry_swimsuits_and_bikinis": "Badkleding", + "iot_dry_synthetics": "Synthetisch", + "iot_dry_synthetic_dry": "Synthetische stoffen drogen", + "iot_dry_tablecloths": "Tafelkleden", + "iot_dry_technical_fabrics": "Technische Vezels", + "iot_dry_warm_embrace": "Warme Knuffel", + "iot_dry_wool": "Wol", + "jeans": "Jeans", + "mix_and_dry": "Gemengd&Droog", + "pets": "Huisdieren", + "pre_iron": "Gemakkelijk strijken", + "rapid_30": "Rapid 30", + "rapid_45": "Snel 45 min", + "rapid_59": "Perfect Rapid 59 Min", + "refresh": "Opfrissen", + "relax_creases": "Ontkreuken", + "saving_30_min": "ECO 30'", + "shirts": "Overhemden", + "shoes": "Schoenen", + "small_load": "Kleine lading", + "soft_care": "Zachte verzorging", + "sport_plus": "Sports", + "super_easy_iron_misti": "Super eenvoudig strijken gemengd", + "super_easy_iron_xxl": "Super eenvoudig strijken XXL", + "super_fast_cottons": "Super Snel Katoen", + "super_fast_delicates": "Super Snel Delicaat", + "synthetics": "Synthetisch", + "total_care": "Total Care", + "trainers": "Trainers", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Waterproof Revitaliseren", + "whites": "Witte was", + "wool": "Droge Wol", + "woolmark": "Wol", + "xxl_load": "XXL Lading", + "zoom_59": "Zoom 59" + } } }, "select": { @@ -820,7 +962,8 @@ "12": "Strijken", "13": "Kastdroog", "14": "Klaar om te dragen", - "15": "Extra droog" + "15": "Extra droog", + "11": "Niet drogen" }, "name": "Droogniveau" }, @@ -877,7 +1020,7 @@ "name": "Kreukherstellend" }, "add_dish": { - "name": "" + "name": "Vaatwerk toevoegen" }, "eco_express": { "name": "Eco" diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index 82d6e44..0795ddd 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -9,7 +9,10 @@ "4": "Zaplanowane", "5": "Zaplanowane", "6": "Błąd", - "7": "Gotowe" + "7": "Gotowe", + "2": "Program uruchomiony", + "8": "Test", + "9": "Zatrzymanie cyklu…" } }, "program_phases_wm": { @@ -53,7 +56,9 @@ "16": "Chłodzenie", "18": "Utrzymaj świeżość", "19": "Suszenie", - "20": "Suszenie" + "20": "Suszenie", + "11": "Gotowe", + "17": "unknown" }, "name": "Faza" }, @@ -79,7 +84,8 @@ "12": "Prasowanie", "13": "Gotowe do garderoby", "14": "Gotowe do włożenia", - "15": "Ekstra suchy" + "15": "Ekstra suchy", + "11": "Bez suszenia" }, "name": "Poziom suszenia" }, @@ -165,6 +171,142 @@ "5": "Wentylator", "6": "Wentylator" } + }, + "programs_td": { + "state": { + "active_dry": "Aktywne suche", + "allergy_care": "Antiallergy", + "all_in_one": "All in One", + "antiallergy": "Antiallergy", + "anti_odours": "Odświeżenie", + "auto_care": "Auto Care", + "baby": "Dzieci", + "bed_quilt": "Bed Quilt", + "care_30": "Care 30", + "care_45": "Care 45", + "care_59": "Care 59", + "coloured": "Kolorowe", + "daily_45_min": "CODZIENNY 45'", + "daily_perfect_59_min": "CODZIENNY PERFEKT 59'", + "darks_and_coloured": "Darks & Coloured", + "delicates": "Delikatne", + "duvet": "Kołdry", + "eco": "Bawełna ekologiczna", + "ecospeed_cottons": "Ecospeed Cottons", + "ecospeed_delicates": "Szybki Eco do tkanin delikatnych", + "ecospeed_mixed": "Ecospeed Mixed", + "extra_hygiene": "HIGIENICZNY", + "fitness": "Fitness", + "fresh_care": "Fresh Care", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Ręczniki", + "hqd_bed_sheets": "Prześcieradła", + "hqd_bulky": "Elementy wielkogabarytowe", + "hqd_casual": "Nieformalny", + "hqd_cold_wind_30": "Chłodna bryza 30 minut", + "hqd_cold_wind_timing": "Chłodny wietrzyk ", + "hqd_cotton": "Bawełna", + "hqd_curtain": "Zasłony", + "hqd_delicate": "Delikatne", + "hqd_diaper": "Pieluchy", + "hqd_duvet": "Kołdry", + "hqd_feather": "Kurtki puchowe", + "hqd_hot_wind_timing": "Gorące powietrze", + "hqd_hygienic": "Higienizacja", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Kurtki", + "hqd_jeans": "Dżins", + "hqd_luxury": "Luxury", + "hqd_mix": "Mieszane", + "hqd_night_dry": "Suszenie nocne", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Szybkie 20", + "hqd_quick_30": "Szybkie 30", + "hqd_quick_dry": "Szybkoschnące", + "hqd_quilt": "Kołdry", + "hqd_refresh": "Odświeżanie", + "hqd_school_uniform": "Mundurek szkolny", + "hqd_shirt": "Koszule", + "hqd_shoes": "Buty", + "hqd_silk": "Jedwab", + "hqd_sports": "Odzież sportowa", + "hqd_synthetics": "Syntetyki", + "hqd_timer": "Czasowe", + "hqd_towel": "Ręczniki", + "hqd_underwear": "Bielizna", + "hqd_warm_up": "Podgrzej", + "hqd_wool": "Wełna", + "hqd_working_suit": "Odzież robocza", + "hygiene": "Higiena", + "iot_checkup": "Kontrola", + "iot_dry_anti_mites": "Przeciw roztoczom", + "iot_dry_baby": "Dzieci", + "iot_dry_backpacks": "Plecaki", + "iot_dry_bathrobe": "Szlafroki", + "iot_dry_bed_linen": "Pościel", + "iot_dry_bed_quilt": "Bed Quilt", + "iot_dry_cotton": "Bawełna", + "iot_dry_cuddly_toys": "Zabawki pluszowe", + "iot_dry_curtains": "Zasłony", + "iot_dry_dehumidifier": "Środek do usuwania wilgoci", + "iot_dry_delicates": "Bielizna", + "iot_dry_delicate_tablecloths": "Delikatne obrusy", + "iot_dry_denim_jeans": "Dżinsy", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Kołdry", + "iot_dry_easy_iron_cotton": "Super Easy Iron", + "iot_dry_easy_iron_synthetics": "Super łatwe prasowanie tkanin syntetycznych", + "iot_dry_gym_fit": "Gimnastyczne - Fitness", + "iot_dry_lingerie": "Bielizna", + "iot_dry_mixed": "Mieszane", + "iot_dry_playsuits": "Pajacyki", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Szybki 59’.", + "iot_dry_refresh": "Refresh", + "iot_dry_regenerates_waterproof": "Regeneracja wodoodpornych", + "iot_dry_relax_creases": "Relax Creases", + "iot_dry_shirts": "Koszule", + "iot_dry_small_load": "Small Load", + "iot_dry_swimsuits_and_bikinis": "Stroje kąpielowe", + "iot_dry_synthetics": "Syntetyczne", + "iot_dry_synthetic_dry": "Suszenie materiałów syntetycznych", + "iot_dry_tablecloths": "Obrusy", + "iot_dry_technical_fabrics": "Materiały techniczne", + "iot_dry_warm_embrace": "Ciepłe objęcie", + "iot_dry_wool": "Woolmark", + "jeans": "Dżinsy", + "mix_and_dry": "Mix&Dry", + "pets": "Zwierzęta domowe", + "pre_iron": "Pre-Iron", + "rapid_30": "Rapid 30", + "rapid_45": "Rapid 45 min", + "rapid_59": "Perfekcyjne szybkie w 59 min", + "refresh": "Odświeżanie", + "relax_creases": "Relax Creases", + "saving_30_min": "ECO 30'", + "shirts": "Koszule", + "shoes": "Buty", + "small_load": "Small Load", + "soft_care": "Soft Care", + "sport_plus": "Sportowe", + "super_easy_iron_misti": "Super łatwe prasowanie tkanin mieszanych", + "super_easy_iron_xxl": "Super łatwe prasowanie XXL", + "super_fast_cottons": "Super Fast Cottons", + "super_fast_delicates": "Super Fast Delicates", + "synthetics": "Syntetyczne", + "total_care": "Total Care", + "trainers": "Buty sportowe", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Waterproof Revitalize", + "whites": "Białe", + "wool": "Suszenie wełny", + "woolmark": "Woolmark", + "xxl_load": "XXL Load", + "zoom_59": "Zoom 59" + } } }, "select": { @@ -820,7 +962,8 @@ "12": "Prasowanie", "13": "Gotowe do garderoby", "14": "Gotowe do włożenia", - "15": "Ekstra suchy" + "15": "Ekstra suchy", + "11": "Bez suszenia" }, "name": "Poziom suszenia" }, @@ -877,7 +1020,7 @@ "name": "Przeciw gnieceniu" }, "add_dish": { - "name": "" + "name": "Dodaj naczynia" }, "eco_express": { "name": "Eco" diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index c2027ee..29c3af0 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -9,7 +9,10 @@ "4": "Agendado", "5": "Agendado", "6": "Erro", - "7": "Pronto" + "7": "Pronto", + "2": "Programa em execução", + "8": "Test", + "9": "Ciclo de paragem…" } }, "program_phases_wm": { @@ -53,7 +56,9 @@ "16": "Arrefecimento", "18": "Manter Fresco", "19": "Secagem", - "20": "Secagem" + "20": "Secagem", + "11": "Pronto", + "17": "unknown" }, "name": "Fase" }, @@ -79,7 +84,8 @@ "12": "Engomar", "13": "Guarda-Roupa pronto", "14": "Pronto a usar", - "15": "Extra seco" + "15": "Extra seco", + "11": "Sem secagem" }, "name": "Nível de secagem" }, @@ -165,6 +171,142 @@ "5": "Ventilador", "6": "Ventilador" } + }, + "programs_td": { + "state": { + "active_dry": "Secagem ativa", + "allergy_care": "Anti alergias", + "all_in_one": "All in One", + "antiallergy": "Anti alergias", + "anti_odours": "Anti-odor", + "auto_care": "Auto Care", + "baby": "Roupa de bebé", + "bed_quilt": "Colchas", + "care_30": "Cuidado 30", + "care_45": "Cuidado 45", + "care_59": "Cuidado 59", + "coloured": "Cores", + "daily_45_min": "DIARIO 45'", + "daily_perfect_59_min": "DIARIO PERFEITO 59'", + "darks_and_coloured": "Roupa escura e colorida", + "delicates": "Delicados", + "duvet": "Edredãos", + "eco": "Eco Algodão", + "ecospeed_cottons": "Velocidade eco algodões", + "ecospeed_delicates": "Ecospeed roupa delicada", + "ecospeed_mixed": "Velocidade eco mistos", + "extra_hygiene": "Higiene Extra", + "fitness": "Fitness", + "fresh_care": "Cuidado Fresco", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Toalhas", + "hqd_bed_sheets": "Lençóis", + "hqd_bulky": "Itens volumosos", + "hqd_casual": "Casual", + "hqd_cold_wind_30": "Brisa fresca durante 30 minutos", + "hqd_cold_wind_timing": "Brisa fresca ", + "hqd_cotton": "Algodão", + "hqd_curtain": "Cortinas", + "hqd_delicate": "Roupa delicada", + "hqd_diaper": "Fraldas", + "hqd_duvet": "Edredões", + "hqd_feather": "Blusões", + "hqd_hot_wind_timing": "Ar quente", + "hqd_hygienic": "Higienização", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Casacos", + "hqd_jeans": "Jeans", + "hqd_luxury": "Peças requintadas", + "hqd_mix": "Mistos", + "hqd_night_dry": "Secagem durante a noite", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Rápido 20", + "hqd_quick_30": "Rápido 30", + "hqd_quick_dry": "Secagem rápida", + "hqd_quilt": "Colchas", + "hqd_refresh": "Refrescar", + "hqd_school_uniform": "Farda da escola", + "hqd_shirt": "Camisas", + "hqd_shoes": "Calçado", + "hqd_silk": "Seda", + "hqd_sports": "Desporto", + "hqd_synthetics": "Sintéticos", + "hqd_timer": "Temporizado", + "hqd_towel": "Toalhas", + "hqd_underwear": "Roupa interior", + "hqd_warm_up": "Aquecer", + "hqd_wool": "Lãs", + "hqd_working_suit": "Roupa de trabalho", + "hygiene": "Higiene", + "iot_checkup": "Check-Up", + "iot_dry_anti_mites": "Anti-ácaros", + "iot_dry_baby": "Roupa de bebé", + "iot_dry_backpacks": "Mochilas", + "iot_dry_bathrobe": "Roupões", + "iot_dry_bed_linen": "Roupa de cama", + "iot_dry_bed_quilt": "Colchas", + "iot_dry_cotton": "Algodão", + "iot_dry_cuddly_toys": "Brinquedos macios", + "iot_dry_curtains": "Cortinas", + "iot_dry_dehumidifier": "Removedor de humidade", + "iot_dry_delicates": "Roupa delicada", + "iot_dry_delicate_tablecloths": "Roupa de mesa delicada", + "iot_dry_denim_jeans": "Ganga - Jeans", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Edredãos", + "iot_dry_easy_iron_cotton": "Engomar fácil", + "iot_dry_easy_iron_synthetics": "Engomar Super Fácil de Sintéticos", + "iot_dry_gym_fit": "Roupa de desporto - Fitness", + "iot_dry_lingerie": "Roupa interior", + "iot_dry_mixed": "Mistos", + "iot_dry_playsuits": "Macacões", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Rápido 59’.", + "iot_dry_refresh": "Refrescar", + "iot_dry_regenerates_waterproof": "Regeneração da Impermeabilização (?)", + "iot_dry_relax_creases": "Menos vincos", + "iot_dry_shirts": "Camisas", + "iot_dry_small_load": "Pequena carga", + "iot_dry_swimsuits_and_bikinis": "Fatos de banho", + "iot_dry_synthetics": "Sintéticos", + "iot_dry_synthetic_dry": "Secagem de Sintéticos", + "iot_dry_tablecloths": "Roupa de mesa", + "iot_dry_technical_fabrics": "Tecidos técnicos", + "iot_dry_warm_embrace": "Warm Embrace (?)", + "iot_dry_wool": "Woolmark", + "jeans": "Jeans", + "mix_and_dry": "Mix&Dry (Mista e Seca)", + "pets": "Animais de estimação", + "pre_iron": "Pré engomar", + "rapid_30": "Rapid 30", + "rapid_45": "Rápido 45 min", + "rapid_59": "Rápida Perfeita 59 min", + "refresh": "Refrescar", + "relax_creases": "Menos vincos", + "saving_30_min": "ECO 30'", + "shirts": "Camisas", + "shoes": "Calçado", + "small_load": "Pequena carga", + "soft_care": "Cuidado Suave", + "sport_plus": "Roupa desportiva", + "super_easy_iron_misti": "Engomar Super Fácil de mistos", + "super_easy_iron_xxl": "Engomar Super Fácil XXL", + "super_fast_cottons": "Algodões super rápido", + "super_fast_delicates": "Delicados super rápido", + "synthetics": "Sintéticos", + "total_care": "Total Care", + "trainers": "Ténis", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Revitalização da impermeabialização", + "whites": "Roupa branca", + "wool": "Secagem de lãs", + "woolmark": "Woolmark", + "xxl_load": "Carga XXL", + "zoom_59": "Zoom 59" + } } }, "select": { @@ -820,7 +962,8 @@ "12": "Engomar", "13": "Guarda-Roupa pronto", "14": "Pronto a usar", - "15": "Extra seco" + "15": "Extra seco", + "11": "Sem secagem" }, "name": "Nível de secagem" }, @@ -877,7 +1020,7 @@ "name": "Anti-vincos" }, "add_dish": { - "name": "" + "name": "Adicionar pratos" }, "eco_express": { "name": "Eco" diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index 10acf14..2f5f788 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -9,7 +9,10 @@ "4": "Programat", "5": "Programat", "6": "Eroare", - "7": "Pregătit" + "7": "Pregătit", + "2": "Program în desfășurare", + "8": "Test", + "9": "Ciclul de oprire..." } }, "program_phases_wm": { @@ -53,7 +56,9 @@ "16": "Răcire", "18": "Menținere prospețime", "19": "Uscare", - "20": "Uscare" + "20": "Uscare", + "11": "Pregătit", + "17": "unknown" }, "name": "Fază" }, @@ -79,7 +84,8 @@ "12": "Călcare", "13": "Șifonier pregătit", "14": "Gata de purtat", - "15": "Uscare suplimentară" + "15": "Uscare suplimentară", + "11": "Fără uscare" }, "name": "Nivel de uscare" }, @@ -165,6 +171,142 @@ "5": "Ventilare", "6": "Ventilare" } + }, + "programs_td": { + "state": { + "active_dry": "Uscare activă", + "allergy_care": "Anti-alergic", + "all_in_one": "Tot în unu", + "antiallergy": "Anti-alergic", + "anti_odours": "Anti mirosuri", + "auto_care": "Îngrijire automată", + "baby": "Haine copii", + "bed_quilt": "Pilote", + "care_30": "Îngrijire 30", + "care_45": "Îngrijire 45", + "care_59": "Îngrijire 59", + "coloured": "Colorate", + "daily_45_min": "ZILNIC 45'", + "daily_perfect_59_min": "ZILNIC PERFECT 59'", + "darks_and_coloured": "Țesături închise & colorate", + "delicates": "Delicate", + "duvet": "Pătură", + "eco": "Bumbac Eco", + "ecospeed_cottons": "Bumbac Ecospeed", + "ecospeed_delicates": "Delicate Ecospeed", + "ecospeed_mixed": "Țesături mixte Ecospeed", + "extra_hygiene": "EXTRA IGIENIZARE", + "fitness": "Fitness", + "fresh_care": "Îngrijire proaspătă", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Prosoape", + "hqd_bed_sheets": "Cearceafuri", + "hqd_bulky": "Articole voluminoase", + "hqd_casual": "Articole obișnuite", + "hqd_cold_wind_30": "Vânt rece 30 minute", + "hqd_cold_wind_timing": "Vânt rece ", + "hqd_cotton": "Bumbac", + "hqd_curtain": "Perdele", + "hqd_delicate": "Delicate", + "hqd_diaper": "Scutece", + "hqd_duvet": "Cuvertură", + "hqd_feather": "Geci", + "hqd_hot_wind_timing": "Aer cald", + "hqd_hygienic": "Igienizare", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Jachete", + "hqd_jeans": "Blugi", + "hqd_luxury": "Luxury", + "hqd_mix": "Mixte", + "hqd_night_dry": "Uscare peste noapte", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Rapid 20", + "hqd_quick_30": "Rapid 30", + "hqd_quick_dry": "Uscare rapidă", + "hqd_quilt": "Pilote", + "hqd_refresh": "Reîmprospătare", + "hqd_school_uniform": "Uniformă școlară", + "hqd_shirt": "Cămăși", + "hqd_shoes": "Încălțăminte", + "hqd_silk": "Mătase", + "hqd_sports": "Articole sportive", + "hqd_synthetics": "Sintetice", + "hqd_timer": "Cronometrat", + "hqd_towel": "Prosoape", + "hqd_underwear": "Lenjerie", + "hqd_warm_up": "Încălzire", + "hqd_wool": "Lână", + "hqd_working_suit": "Îmbrăcăminte de lucru", + "hygiene": "Igienizare", + "iot_checkup": "Verificare", + "iot_dry_anti_mites": "Anti-acarieni", + "iot_dry_baby": "Haine copii", + "iot_dry_backpacks": "Rucsaci", + "iot_dry_bathrobe": "Halat de baie", + "iot_dry_bed_linen": "Lenjerie de pat", + "iot_dry_bed_quilt": "Pilote", + "iot_dry_cotton": "Bumbac", + "iot_dry_cuddly_toys": "Jucării", + "iot_dry_curtains": "Perdele", + "iot_dry_dehumidifier": "Dispozitiv pentru îndepărtarea umidității", + "iot_dry_delicates": "Delicate", + "iot_dry_delicate_tablecloths": "Fețe de masă delicate", + "iot_dry_denim_jeans": "Denim - Blugi", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Pătură", + "iot_dry_easy_iron_cotton": "Călcare Super Easy", + "iot_dry_easy_iron_synthetics": "Călcare super ușoară a rufelor sintetice", + "iot_dry_gym_fit": "Articole sportive - Fitness", + "iot_dry_lingerie": "Lenjerie", + "iot_dry_mixed": "Mixte", + "iot_dry_playsuits": "Haine de joacă", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Rapid 59'.", + "iot_dry_refresh": "Reîmprospătare", + "iot_dry_regenerates_waterproof": "Rezistente la apă", + "iot_dry_relax_creases": "Reducere șifonare", + "iot_dry_shirts": "Cămăși", + "iot_dry_small_load": "Încărcare mică", + "iot_dry_swimsuits_and_bikinis": "Costume de baie", + "iot_dry_synthetics": "Sintetice", + "iot_dry_synthetic_dry": "Uscare material sintetic", + "iot_dry_tablecloths": "Fețe de masă", + "iot_dry_technical_fabrics": "Țesături industriale", + "iot_dry_warm_embrace": "Îmbrățișare caldă", + "iot_dry_wool": "Woolmark", + "jeans": "Jeans", + "mix_and_dry": "Mix&Uscare", + "pets": "Animale de companie", + "pre_iron": "Pre-Călcare", + "rapid_30": "Rapid 30", + "rapid_45": "Rapid 45 min", + "rapid_59": "Rapid Perfect 59 Min", + "refresh": "Reîmprospătare", + "relax_creases": "Reducere șifonare", + "saving_30_min": "ECO 30'", + "shirts": "Cămăși", + "shoes": "Încălțăminte", + "small_load": "Încărcare mică", + "soft_care": "Îngrijire blândă", + "sport_plus": "Haine sport", + "super_easy_iron_misti": "Călcare super ușoară a rufelor cu fibre mixte", + "super_easy_iron_xxl": "Călcare super ușoară a rufelor XXL", + "super_fast_cottons": "Bumbac Super Rapid", + "super_fast_delicates": "Delicate Super Rapid", + "synthetics": "Sintetice", + "total_care": "Total Care", + "trainers": "Încălțăminte sport", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Revitalizare impermeabile", + "whites": "Albe", + "wool": "Uscare lână", + "woolmark": "Woolmark", + "xxl_load": "Încărcare XXL", + "zoom_59": "Zoom 59" + } } }, "select": { @@ -820,7 +962,8 @@ "12": "Călcare", "13": "Șifonier pregătit", "14": "Gata de purtat", - "15": "Uscare suplimentară" + "15": "Uscare suplimentară", + "11": "Fără uscare" }, "name": "Nivel de uscare" }, @@ -877,7 +1020,7 @@ "name": "Antișifonare" }, "add_dish": { - "name": "" + "name": "Adaugă vase" }, "eco_express": { "name": "Eco" diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index 34ae234..9313961 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -9,7 +9,10 @@ "4": "Запланировано", "5": "Запланировано", "6": "Ошибка", - "7": "Готово" + "7": "Готово", + "2": "Выполнение программы", + "8": "Test", + "9": "Остановка цикла..." } }, "program_phases_wm": { @@ -53,7 +56,9 @@ "16": "Охлаждение", "18": "Keep Fresh (Сохранение свежести)", "19": "Сушка", - "20": "Сушка" + "20": "Сушка", + "11": "Готово", + "17": "unknown" }, "name": "Фаза" }, @@ -79,7 +84,8 @@ "12": "Под утюг", "13": "Готово в шкаф", "14": "Готово для надевания", - "15": "Экстра сушка" + "15": "Экстра сушка", + "11": "Без сушки" }, "name": "Уровень сухости" }, @@ -165,6 +171,142 @@ "5": "Вентилятор", "6": "Вентилятор" } + }, + "programs_td": { + "state": { + "active_dry": "Активная сушка", + "allergy_care": "Противоаллергическое действие", + "all_in_one": "Все в одном", + "antiallergy": "Противоаллергическое действие", + "anti_odours": "Против запаха", + "auto_care": "Автоуход", + "baby": "Детская одежда", + "bed_quilt": "Стеганые и пуховые одеяла", + "care_30": "Уход 30", + "care_45": "Уход 45", + "care_59": "Уход 59", + "coloured": "цветные", + "daily_45_min": "ЕЖЕДНЕВНАЯ 45'", + "daily_perfect_59_min": "ЕЖЕДНЕВНАЯ ИДЕАЛЬНАЯ 59'", + "darks_and_coloured": "Темные и Цветные", + "delicates": "Деликатные", + "duvet": "Пуховое одеяло", + "eco": "Эко хлопок", + "ecospeed_cottons": "Эко скорость хлопок", + "ecospeed_delicates": "Эко скорость деликатные", + "ecospeed_mixed": "Эко скорость смешанные", + "extra_hygiene": "ЭКСТРА ГИГИЕНА", + "fitness": "Фитнес", + "fresh_care": "Свежесть", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Полотенца", + "hqd_bed_sheets": "Простыни", + "hqd_bulky": "Объемные изделия", + "hqd_casual": "Повседневная одежда", + "hqd_cold_wind_30": "Прохладный обдув 30 минут", + "hqd_cold_wind_timing": "Прохладный обдув ", + "hqd_cotton": "Хлопок", + "hqd_curtain": "Шторы", + "hqd_delicate": "Деликатные вещи", + "hqd_diaper": "Пеленки", + "hqd_duvet": "Пуховое одеяло", + "hqd_feather": "Пуховики", + "hqd_hot_wind_timing": "Горячий воздух", + "hqd_hygienic": "Санитарная обработка", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Куртки", + "hqd_jeans": "Джинсы", + "hqd_luxury": "Люксовые изделия", + "hqd_mix": "Смешанные ткани", + "hqd_night_dry": "Ночная сушка", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Быстрая 20", + "hqd_quick_30": "Быстрая 30", + "hqd_quick_dry": "Быстрая сушка", + "hqd_quilt": "Стеганые одеяла", + "hqd_refresh": "Освежение", + "hqd_school_uniform": "Школьная форма", + "hqd_shirt": "Рубашки", + "hqd_shoes": "Обувь", + "hqd_silk": "Шелк", + "hqd_sports": "Спортивная одежда", + "hqd_synthetics": "Синтетика", + "hqd_timer": "Timed", + "hqd_towel": "Полотенца", + "hqd_underwear": "Нижнее белье", + "hqd_warm_up": "Подогрев", + "hqd_wool": "Шерсть", + "hqd_working_suit": "Рабочая одежда", + "hygiene": "Гигиена", + "iot_checkup": "Проверка", + "iot_dry_anti_mites": "Противоклещевая обработка", + "iot_dry_baby": "Детская одежда", + "iot_dry_backpacks": "Рюкзаки", + "iot_dry_bathrobe": "Банные халаты", + "iot_dry_bed_linen": "Постельное белье", + "iot_dry_bed_quilt": "Стеганые и пуховые одеяла", + "iot_dry_cotton": "Хлопок", + "iot_dry_cuddly_toys": "Мягкие игрушки", + "iot_dry_curtains": "Шторы", + "iot_dry_dehumidifier": "Влагопоглотитель", + "iot_dry_delicates": "Деликатные", + "iot_dry_delicate_tablecloths": "Деликатные скатерти", + "iot_dry_denim_jeans": "Деним – джинсы", + "iot_dry_down_jacket": "Куртки", + "iot_dry_duvet": "Пуховое одеяло", + "iot_dry_easy_iron_cotton": "Сверхлегкая глажка", + "iot_dry_easy_iron_synthetics": "Суперудобная глажка синтетики", + "iot_dry_gym_fit": "Одежда для спортзала – Фитнес", + "iot_dry_lingerie": "Белье", + "iot_dry_mixed": "Смешанные ткани", + "iot_dry_playsuits": "Пляжные костюмы", + "iot_dry_rapid_30": "Быстрая 30'", + "iot_dry_rapid_59": "Быстрая 59 мин.", + "iot_dry_refresh": "Освежить", + "iot_dry_regenerates_waterproof": "Восстановление водонепроницаемых тканей", + "iot_dry_relax_creases": "Уменьшение образования складок", + "iot_dry_shirts": "Рубашки", + "iot_dry_small_load": "Малая загрузка", + "iot_dry_swimsuits_and_bikinis": "Купальники", + "iot_dry_synthetics": "Синтетика", + "iot_dry_synthetic_dry": "Сушка синтетики", + "iot_dry_tablecloths": "Скатерти", + "iot_dry_technical_fabrics": "Технические ткани", + "iot_dry_warm_embrace": "Обработка теплом", + "iot_dry_wool": "Шерсть", + "jeans": "джинсы", + "mix_and_dry": "Смешанные+сушка", + "pets": "Животные", + "pre_iron": "Предварительная глажка", + "rapid_30": "Быстрая 30'", + "rapid_45": "Быстрая 45 мин", + "rapid_59": "Быстрая идеальная 59 мин.", + "refresh": "Освежить", + "relax_creases": "Уменьшение образования складок", + "saving_30_min": "ЭКО 30'", + "shirts": "Рубашки", + "shoes": "Обувь", + "small_load": "Малая загрузка", + "soft_care": "Деликатный уход", + "sport_plus": "Спорт", + "super_easy_iron_misti": "Суперлегкая глажка смешанные", + "super_easy_iron_xxl": "Суперлегкая глажка XXL", + "super_fast_cottons": "Супер-БЫСТРАЯ хлопок", + "super_fast_delicates": "Супер-БЫСТРАЯ деликатные", + "synthetics": "Синтетика", + "total_care": "Общии уход", + "trainers": "Спортивная обувь", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Восстановление водонепроницаемости", + "whites": "Белые ткани", + "wool": "Сушка шерсти", + "woolmark": "Шерсть", + "xxl_load": "Объемные вещи", + "zoom_59": "Zoom 59 (Зум 59)" + } } }, "select": { @@ -820,7 +962,8 @@ "12": "Под утюг", "13": "Готово в шкаф", "14": "Готово для надевания", - "15": "Экстра сушка" + "15": "Экстра сушка", + "11": "Без сушки" }, "name": "Уровень сухости" }, @@ -877,7 +1020,7 @@ "name": "Противосминание" }, "add_dish": { - "name": "" + "name": "Добавьте посуду" }, "eco_express": { "name": "Эко" diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index fbbb86d..638d0be 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -9,7 +9,10 @@ "4": "Naplánované", "5": "Naplánované", "6": "Chyba", - "7": "Pripravené" + "7": "Pripravené", + "2": "Program beží", + "8": "Test", + "9": "Cyklus zastavenia…" } }, "program_phases_wm": { @@ -53,7 +56,9 @@ "16": "Schladiť", "18": "Uchovať svieže", "19": "Sušenie", - "20": "Sušenie" + "20": "Sušenie", + "11": "Pripravené", + "17": "unknown" }, "name": "Fáza" }, @@ -79,7 +84,8 @@ "12": "Žehlenie", "13": "Šatník pripravený", "14": "Hotové na nosenie", - "15": "Extra sušenie" + "15": "Extra sušenie", + "11": "Bez sušenia" }, "name": "Úroveň sušenia" }, @@ -165,6 +171,142 @@ "5": "Ventilátor", "6": "Ventilátor" } + }, + "programs_td": { + "state": { + "active_dry": "Aktívne sušenie", + "allergy_care": "Antialergický", + "all_in_one": "All in One", + "antiallergy": "Antialergický", + "anti_odours": "Oživenie", + "auto_care": "Automatická starostlivosť", + "baby": "Detská", + "bed_quilt": "Posteľná prikrývka", + "care_30": "Starostlivosť 30", + "care_45": "Starostlivosť 45", + "care_59": "Starostlivosť 59", + "coloured": "Farebná", + "daily_45_min": "DENNY 45'", + "daily_perfect_59_min": "DAILY PERFECT 59'", + "darks_and_coloured": "Tmavá a farebná", + "delicates": "Jemné", + "duvet": "Prikrývky", + "eco": "Eco bavlna", + "ecospeed_cottons": "Ecospeed bavlna", + "ecospeed_delicates": "Eco rychly - jemne", + "ecospeed_mixed": "Ecospeed zmiešaná", + "extra_hygiene": "EXTRA HYGIENA", + "fitness": "Fitnes", + "fresh_care": "Svieža starostlivosť", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Osušky", + "hqd_bed_sheets": "Posteľná bielizeň", + "hqd_bulky": "Objemné položky", + "hqd_casual": "Neformálne", + "hqd_cold_wind_30": "Chladný vánok 30 minút", + "hqd_cold_wind_timing": "Studený vánok ", + "hqd_cotton": "Bavlna", + "hqd_curtain": "Záclony", + "hqd_delicate": "Jemné materiály", + "hqd_diaper": "Plienky", + "hqd_duvet": "Paplón", + "hqd_feather": "Prešívané bundy", + "hqd_hot_wind_timing": "Horúci vzduch", + "hqd_hygienic": "Hygienizácia", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Bundy", + "hqd_jeans": "Džínsy", + "hqd_luxury": "Luxury", + "hqd_mix": "Zmiešané", + "hqd_night_dry": "Nočné sušenie", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Rýchle 20", + "hqd_quick_30": "Rýchle 30", + "hqd_quick_dry": "Rýchle sušenie", + "hqd_quilt": "Prikrývky", + "hqd_refresh": "Osvieženie", + "hqd_school_uniform": "Školská uniforma", + "hqd_shirt": "Košele", + "hqd_shoes": "Obuv", + "hqd_silk": "Hodváb", + "hqd_sports": "Šport", + "hqd_synthetics": "Syntetika", + "hqd_timer": "Načasované", + "hqd_towel": "Osušky", + "hqd_underwear": "Spodná bielizeň", + "hqd_warm_up": "Zahriatie", + "hqd_wool": "Vlna", + "hqd_working_suit": "Pracovné odevy", + "hygiene": "Hygiena", + "iot_checkup": "Kontrola", + "iot_dry_anti_mites": "Proti roztočom", + "iot_dry_baby": "Detská", + "iot_dry_backpacks": "Batohy", + "iot_dry_bathrobe": "Bathrobe", + "iot_dry_bed_linen": "Posteľná bielizeň", + "iot_dry_bed_quilt": "Posteľná prikrývka", + "iot_dry_cotton": "Bavlna", + "iot_dry_cuddly_toys": "Plyšové hračky", + "iot_dry_curtains": "Závesy", + "iot_dry_dehumidifier": "Odstraňovač vlhkosti", + "iot_dry_delicates": "Jemná", + "iot_dry_delicate_tablecloths": "Jemné obrusy", + "iot_dry_denim_jeans": "Džínsovina – džínsy", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Prikrývky", + "iot_dry_easy_iron_cotton": "Super ľahké žehlenie", + "iot_dry_easy_iron_synthetics": "Super ľahké žehlenie syntetiky", + "iot_dry_gym_fit": "Športovné oblečenie", + "iot_dry_lingerie": "Spodná bielizeň", + "iot_dry_mixed": "Zmiešané", + "iot_dry_playsuits": "Tepláky", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Rýchly 59 min.", + "iot_dry_refresh": "Osvieženie", + "iot_dry_regenerates_waterproof": "Oživení nepromokavých tkanin", + "iot_dry_relax_creases": "Uvoľnenie záhybov", + "iot_dry_shirts": "Košele", + "iot_dry_small_load": "Malá náplň", + "iot_dry_swimsuits_and_bikinis": "Plavky", + "iot_dry_synthetics": "Syntetická", + "iot_dry_synthetic_dry": "Syntetika – sušenie", + "iot_dry_tablecloths": "Obrusy", + "iot_dry_technical_fabrics": "Technické tkaniny", + "iot_dry_warm_embrace": "Detská zavinovačka", + "iot_dry_wool": "Woolmark", + "jeans": "Džínsy", + "mix_and_dry": "Mix&Dry", + "pets": "Domáce zvieratá", + "pre_iron": "Pred žehlením", + "rapid_30": "Rapid 30", + "rapid_45": "Rýchly 45 min", + "rapid_59": "Perfektne rýchly 59 min", + "refresh": "Osvieženie", + "relax_creases": "Uvoľnenie záhybov", + "saving_30_min": "EKONOMICKY 30'", + "shirts": "Košele", + "shoes": "Obuv", + "small_load": "Malá náplň", + "soft_care": "Jemná starostlivosť", + "sport_plus": "Sportovy", + "super_easy_iron_misti": "Super ľahké žehlenie pre Zmiešané", + "super_easy_iron_xxl": "Super ľahké žehlenie XXL", + "super_fast_cottons": "Super rýchly bavlna", + "super_fast_delicates": "Super rýchly jemná", + "synthetics": "Syntetická", + "total_care": "Total Care", + "trainers": "Športová obuv", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Obnovenie vodeodolnosti", + "whites": "Biela", + "wool": "Sušenie vlny", + "woolmark": "Woolmark", + "xxl_load": "XXL náplň", + "zoom_59": "Zoom 59" + } } }, "select": { @@ -820,7 +962,8 @@ "12": "Žehlenie", "13": "Šatník pripravený", "14": "Hotové na nosenie", - "15": "Extra sušenie" + "15": "Extra sušenie", + "11": "Bez sušenia" }, "name": "Úroveň sušenia" }, @@ -877,7 +1020,7 @@ "name": "Proti pokrčeniu" }, "add_dish": { - "name": "" + "name": "Pridať riad" }, "eco_express": { "name": "Eko" diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index ef585d9..53af0a8 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -9,7 +9,10 @@ "4": "Načrtovano", "5": "Načrtovano", "6": "Napaka", - "7": "Pripravljen" + "7": "Pripravljen", + "2": "Program poteka", + "8": "Test", + "9": "Ustavljanje cikla …" } }, "program_phases_wm": { @@ -53,7 +56,9 @@ "16": "Hlajenje", "18": "Ohrani sveže", "19": "Sušenje", - "20": "Sušenje" + "20": "Sušenje", + "11": "Pripravljen", + "17": "unknown" }, "name": "Faza" }, @@ -79,7 +84,8 @@ "12": "Likanje", "13": "Suho za omaro", "14": "Pripravljeno za uporabo", - "15": "Zelo suho" + "15": "Zelo suho", + "11": "Brez sušenja" }, "name": "Stopnja sušenja" }, @@ -165,6 +171,142 @@ "5": "Ventilator", "6": "Ventilator" } + }, + "programs_td": { + "state": { + "active_dry": "Aktivno sušenje", + "allergy_care": "Protialergijski", + "all_in_one": "Vse hkrati", + "antiallergy": "Protialergijski", + "anti_odours": "Odstranjevanje vonjav", + "auto_care": "Samodejna nega", + "baby": "Oblačila dojenčkov", + "bed_quilt": "Prešite odeje", + "care_30": "Nega 30 min", + "care_45": "Nega 45 min", + "care_59": "Nega 59 min", + "coloured": "Barvno", + "daily_45_min": "DNEVNO 45 min", + "daily_perfect_59_min": "DNEVNO POPOLNO 59 min", + "darks_and_coloured": "Temno in barvno", + "delicates": "Občutljivo perilo", + "duvet": "Prešite odeje", + "eco": "Eko bombaž", + "ecospeed_cottons": "Eko hitri za bombaž", + "ecospeed_delicates": "Eko hitri za občutljivo", + "ecospeed_mixed": "Eko hitri za mešano", + "extra_hygiene": "DODATNA HIGIENA", + "fitness": "Fitnes", + "fresh_care": "Nega za svežino", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Brisače", + "hqd_bed_sheets": "Rjuhe", + "hqd_bulky": "Večji kosi", + "hqd_casual": "Za prosti čas", + "hqd_cold_wind_30": "Hladen vetrič 30 minut", + "hqd_cold_wind_timing": "Hladen vetrič ", + "hqd_cotton": "Bombaž", + "hqd_curtain": "Zavese", + "hqd_delicate": "Občutljive tkanine", + "hqd_diaper": "Plenice", + "hqd_duvet": "Prešite odeje", + "hqd_feather": "Puhovke", + "hqd_hot_wind_timing": "Vroč zrak", + "hqd_hygienic": "Higienizacija", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Suknjiči", + "hqd_jeans": "Kavbojke", + "hqd_luxury": "Luxury", + "hqd_mix": "Mešano", + "hqd_night_dry": "Sušenje čez noč", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Hitro 20", + "hqd_quick_30": "Hitro 30", + "hqd_quick_dry": "Hitro sušenje", + "hqd_quilt": "Posteljna pregrinjala", + "hqd_refresh": "Osvežitev", + "hqd_school_uniform": "Šolska uniforma", + "hqd_shirt": "Srajce", + "hqd_shoes": "Obuvala", + "hqd_silk": "Svila", + "hqd_sports": "Šport", + "hqd_synthetics": "Sintetika", + "hqd_timer": "Časovno", + "hqd_towel": "Brisače", + "hqd_underwear": "Spodnje perilo", + "hqd_warm_up": "Pogrevanje", + "hqd_wool": "Volna", + "hqd_working_suit": "Delovna oblačila", + "hygiene": "Higiena", + "iot_checkup": "Pregled", + "iot_dry_anti_mites": "Proti pršicam", + "iot_dry_baby": "Oblačila dojenčkov", + "iot_dry_backpacks": "Nahrbtniki", + "iot_dry_bathrobe": "Kopalni plašč", + "iot_dry_bed_linen": "Posteljnina", + "iot_dry_bed_quilt": "Prešite odeje", + "iot_dry_cotton": "Bombaž", + "iot_dry_cuddly_toys": "Plišaste igračke", + "iot_dry_curtains": "Zavese", + "iot_dry_dehumidifier": "Odstranjevalec vlage", + "iot_dry_delicates": "Občutljivo", + "iot_dry_delicate_tablecloths": "Občutljivi namizni prti", + "iot_dry_denim_jeans": "Denim – jeans", + "iot_dry_down_jacket": "Suknjiči", + "iot_dry_duvet": "Prešite odeje", + "iot_dry_easy_iron_cotton": "Super lažje likanje", + "iot_dry_easy_iron_synthetics": "Super lažje likanje sintetike", + "iot_dry_gym_fit": "Oblačila za telovadbo in fitnes", + "iot_dry_lingerie": "Spodnje perilo", + "iot_dry_mixed": "Mešano", + "iot_dry_playsuits": "Pajaci", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Hitro 59’", + "iot_dry_refresh": "Osvežitev", + "iot_dry_regenerates_waterproof": "Obnovitev nepremočljivih oblačil", + "iot_dry_relax_creases": "Mehčanje gub", + "iot_dry_shirts": "Srajce", + "iot_dry_small_load": "Malo perila", + "iot_dry_swimsuits_and_bikinis": "Kopalke", + "iot_dry_synthetics": "Sintetika", + "iot_dry_synthetic_dry": "Sušenje sintetike", + "iot_dry_tablecloths": "Namizni prti", + "iot_dry_technical_fabrics": "Tehnične tkanine", + "iot_dry_warm_embrace": "Mehkoba", + "iot_dry_wool": "Woolmark", + "jeans": "Džins", + "mix_and_dry": "Sušenje – mešana sestava", + "pets": "Hišne živali", + "pre_iron": "Pred likanjem", + "rapid_30": "Rapid 30", + "rapid_45": "Hitri 45 min", + "rapid_59": "Popolni hitri program 59 min.", + "refresh": "Osvežitev", + "relax_creases": "Mehčanje gub", + "saving_30_min": "EKO 30 min", + "shirts": "Srajce", + "shoes": "Obuvala", + "small_load": "Malo perila", + "soft_care": "Nega za mehkobo", + "sport_plus": "Športna oblacila", + "super_easy_iron_misti": "Super lažje likanje mešanih tkanin", + "super_easy_iron_xxl": "Super lažje likanje XXL", + "super_fast_cottons": "Super hitri za bombaž", + "super_fast_delicates": "Super hitri za občutljivo", + "synthetics": "Sintetika", + "total_care": "Total Care", + "trainers": "Športna obutev", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Obnovitev nepremočljivih oblačil", + "whites": "Belo", + "wool": "Sušenje volne", + "woolmark": "Woolmark", + "xxl_load": "Zelo veliki kosi perila", + "zoom_59": "Zoom 59" + } } }, "select": { @@ -820,7 +962,8 @@ "12": "Likanje", "13": "Suho za omaro", "14": "Pripravljeno za uporabo", - "15": "Zelo suho" + "15": "Zelo suho", + "11": "Brez sušenja" }, "name": "Stopnja sušenja" }, @@ -877,7 +1020,7 @@ "name": "Proti mečkanju" }, "add_dish": { - "name": "" + "name": "Dodaj posodo" }, "eco_express": { "name": "Varčno" diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index 5a70358..bf8c93d 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -9,7 +9,10 @@ "4": "Planirano", "5": "Planirano", "6": "Greška", - "7": "Spremno" + "7": "Spremno", + "2": "Program u toku", + "8": "Test", + "9": "Zaustavljanje ciklusa..." } }, "program_phases_wm": { @@ -53,7 +56,9 @@ "16": "Hlađenje", "18": "Očuvanje svežine", "19": "Sušenje", - "20": "Sušenje" + "20": "Sušenje", + "11": "Spremno", + "17": "unknown" }, "name": "Faza" }, @@ -79,7 +84,8 @@ "12": "Peglanje", "13": "Suvo za ormar", "14": "Spremno za nošenje", - "15": "Ekstra suvo" + "15": "Ekstra suvo", + "11": "Bez sušenja" }, "name": "Nivo sušenja" }, @@ -165,6 +171,142 @@ "5": "Ventilator", "6": "Ventilator" } + }, + "programs_td": { + "state": { + "active_dry": "Aktivno sušenje", + "allergy_care": "Antialergijski", + "all_in_one": "All in One", + "antiallergy": "Antialergijski", + "anti_odours": "Protiv neugodnih mirisa", + "auto_care": "Aktivna nega", + "baby": "Baby", + "bed_quilt": "Ćebad i jorgani", + "care_30": "Nega 30", + "care_45": "Nega 45", + "care_59": "Nega 59", + "coloured": "Obojeno", + "daily_45_min": "SVAKODNEVNI 45'", + "daily_perfect_59_min": "PERFECT SVAKODNEVNI 59'", + "darks_and_coloured": "Tamno i obojeno", + "delicates": "Osetljivo", + "duvet": "Jorgani", + "eco": "Eko pamuk", + "ecospeed_cottons": "Ecospeed Pamuk", + "ecospeed_delicates": "Ecospeed osetljive tkanine", + "ecospeed_mixed": "Ecospeed Mešano", + "extra_hygiene": "EXTRA HIGIJENA", + "fitness": "Fitnes", + "fresh_care": "Tretman za osvežavanje", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Peškiri", + "hqd_bed_sheets": "Posteljina", + "hqd_bulky": "Glomazni artikli", + "hqd_casual": "Neformalno", + "hqd_cold_wind_30": "Hladan vazduh 30 minuta", + "hqd_cold_wind_timing": "Hladan vazduh ", + "hqd_cotton": "Pamuk", + "hqd_curtain": "Zavese", + "hqd_delicate": "Osetljive tkanine", + "hqd_diaper": "Pelene", + "hqd_duvet": "Jorgan", + "hqd_feather": "Perjane jakne", + "hqd_hot_wind_timing": "Vruć vazduh", + "hqd_hygienic": "Higijenski", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Jakne", + "hqd_jeans": "Džins", + "hqd_luxury": "Luksuzno", + "hqd_mix": "Mešovito", + "hqd_night_dry": "Noćno sušenje", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Brzo 20", + "hqd_quick_30": "Brzo 30", + "hqd_quick_dry": "Brzo sušenje", + "hqd_quilt": "Jorgani", + "hqd_refresh": "Osvežavanje", + "hqd_school_uniform": "Školska uniforma", + "hqd_shirt": "Košulje", + "hqd_shoes": "Cipele", + "hqd_silk": "Svila", + "hqd_sports": "Sportska odeća", + "hqd_synthetics": "Sintetika", + "hqd_timer": "Vremenski ograničeno", + "hqd_towel": "Peškiri", + "hqd_underwear": "Donji veš", + "hqd_warm_up": "Zagrevanje", + "hqd_wool": "Vuna", + "hqd_working_suit": "Radna odeća", + "hygiene": "Higijena", + "iot_checkup": "Provera", + "iot_dry_anti_mites": "Anti-grinje", + "iot_dry_baby": "Baby", + "iot_dry_backpacks": "Rančevi", + "iot_dry_bathrobe": "Bade-mantili", + "iot_dry_bed_linen": "Posteljine", + "iot_dry_bed_quilt": "Ćebad i jorgani", + "iot_dry_cotton": "Pamuk", + "iot_dry_cuddly_toys": "Plišane igračke", + "iot_dry_curtains": "Zavese", + "iot_dry_dehumidifier": "Uklanjanje vlage", + "iot_dry_delicates": "Delikatni", + "iot_dry_delicate_tablecloths": "Osetljivi stoljnjaci", + "iot_dry_denim_jeans": "Teksas - džins", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Jorgani", + "iot_dry_easy_iron_cotton": "Super Lako peglanje", + "iot_dry_easy_iron_synthetics": "Sintetika koja se veoma lako pegla", + "iot_dry_gym_fit": "Gym fit - Fitness", + "iot_dry_lingerie": "Donji veš", + "iot_dry_mixed": "Mešani veš", + "iot_dry_playsuits": "Kostimi", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Brzi program 59'.", + "iot_dry_refresh": "Osvežavanje", + "iot_dry_regenerates_waterproof": "Regenerisanje vodootpornosti", + "iot_dry_relax_creases": "Otpuštanje prevoja", + "iot_dry_shirts": "Košulje", + "iot_dry_small_load": "Mala količina veša", + "iot_dry_swimsuits_and_bikinis": "Odeća za kupanje", + "iot_dry_synthetics": "Sintetika", + "iot_dry_synthetic_dry": "Sušenje sintetike", + "iot_dry_tablecloths": "Stolnjaci", + "iot_dry_technical_fabrics": "Sintetički materijali", + "iot_dry_warm_embrace": "Topao zagrljaj", + "iot_dry_wool": "Woolmark", + "jeans": "Jeans", + "mix_and_dry": "Mix&Dry", + "pets": "Ljubimci", + "pre_iron": "Pre-peglanje", + "rapid_30": "Rapid 30", + "rapid_45": "Brzi 45 min", + "rapid_59": "Perfect Rapid 59 Min", + "refresh": "Osvežavanje", + "relax_creases": "Otpuštanje prevoja", + "saving_30_min": "EKO 30'", + "shirts": "Košulje", + "shoes": "Cipele", + "small_load": "Mala količina veša", + "soft_care": "Blagi tretman", + "sport_plus": "Sportska odeca", + "super_easy_iron_misti": "Mešani veš koji se veoma lako pegla", + "super_easy_iron_xxl": "XXL veš koji se veoma lako pegla", + "super_fast_cottons": "Super brzo Pamuk", + "super_fast_delicates": "Super brzo Osetljivo", + "synthetics": "Sintetika", + "total_care": "Total Care", + "trainers": "Trenerke i sportska obuća", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Revitalizacija vodootpornosti", + "whites": "Beli veš", + "wool": "Sušenje vune", + "woolmark": "Woolmark", + "xxl_load": "XXL veš", + "zoom_59": "Zoom 59" + } } }, "select": { @@ -820,7 +962,8 @@ "12": "Peglanje", "13": "Suvo za ormar", "14": "Spremno za nošenje", - "15": "Ekstra suvo" + "15": "Ekstra suvo", + "11": "Bez sušenja" }, "name": "Nivo sušenja" }, @@ -877,7 +1020,7 @@ "name": "Protiv gužvanja" }, "add_dish": { - "name": "" + "name": "Dodajte posuđe" }, "eco_express": { "name": "Eko" diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index a77224a..4a3d539 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -9,7 +9,10 @@ "4": "Planlandı", "5": "Planlandı", "6": "Hata", - "7": "Hazır" + "7": "Hazır", + "2": "Program çalışıyor", + "8": "Test", + "9": "Program durduruluyor…" } }, "program_phases_wm": { @@ -53,7 +56,9 @@ "16": "Soğutma", "18": "Tazeleme", "19": "Kurutma", - "20": "Kurutma" + "20": "Kurutma", + "11": "Hazır", + "17": "unknown" }, "name": "Aşama" }, @@ -79,7 +84,8 @@ "12": "Ütü", "13": "Gardırop hazır", "14": "Giyilmeye hazır", - "15": "Ekstra kurutma" + "15": "Ekstra kurutma", + "11": "Kurutma yok" }, "name": "Kurutma seviyesi" }, @@ -165,6 +171,142 @@ "5": "Fan", "6": "Fan" } + }, + "programs_td": { + "state": { + "active_dry": "Aktif Kurutma", + "allergy_care": "Antialerji", + "all_in_one": "Hepsi Bir Arada", + "antiallergy": "Antialerji", + "anti_odours": "Koku giderme", + "auto_care": "Oto. Bakım", + "baby": "Bebek", + "bed_quilt": "Yorgan", + "care_30": "Bakım 30", + "care_45": "Bakım 45", + "care_59": "Bakım 59", + "coloured": "Renkli", + "daily_45_min": "GUNLUK 45'", + "daily_perfect_59_min": "GUNLUK 59'", + "darks_and_coloured": "Koyu Renkliler ve Renkliler", + "delicates": "Hassas", + "duvet": "Yorgan", + "eco": "Eko Pamuk", + "ecospeed_cottons": "Eko hız Pamuklu", + "ecospeed_delicates": "ECOSEPEED Hassas", + "ecospeed_mixed": "Eko hız Karışık", + "extra_hygiene": "EKSTRA HIJYEN", + "fitness": "Fitness", + "fresh_care": "Yenileme Bakımı", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Havlular", + "hqd_bed_sheets": "Çarşaflar", + "hqd_bulky": "Hacimli eşyalar", + "hqd_casual": "Gündelik", + "hqd_cold_wind_30": "Serin esinti 30 dakika", + "hqd_cold_wind_timing": "Serin esinti ", + "hqd_cotton": "Pamuk", + "hqd_curtain": "Perdeler", + "hqd_delicate": "Narin Çamaşırlar", + "hqd_diaper": "Bebek bezi", + "hqd_duvet": "Nevresim", + "hqd_feather": "Şişme montlar", + "hqd_hot_wind_timing": "Sıcak hava", + "hqd_hygienic": "Hijyen", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Ceketler", + "hqd_jeans": "Kot pantolon", + "hqd_luxury": "Konfor", + "hqd_mix": "Karışık", + "hqd_night_dry": "Gece kurutma", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Hızlı 20", + "hqd_quick_30": "Hızlı 30", + "hqd_quick_dry": "Hızlı kurutma", + "hqd_quilt": "Yorganlar", + "hqd_refresh": "Yenileme", + "hqd_school_uniform": "Okul üniforması", + "hqd_shirt": "Gömlekler", + "hqd_shoes": "Ayakkabılar", + "hqd_silk": "İpek", + "hqd_sports": "Spor", + "hqd_synthetics": "Sentetikler", + "hqd_timer": "Zaman Ayarlı", + "hqd_towel": "Havlular", + "hqd_underwear": "İç çamaşırı", + "hqd_warm_up": "Isıtma", + "hqd_wool": "Yün", + "hqd_working_suit": "İş giysisi", + "hygiene": "Hijyen", + "iot_checkup": "Kontrol", + "iot_dry_anti_mites": "Anti-akar", + "iot_dry_baby": "Bebek", + "iot_dry_backpacks": "Sırt Çantaları", + "iot_dry_bathrobe": "Bornoz", + "iot_dry_bed_linen": "Çarşaf", + "iot_dry_bed_quilt": "Yorgan", + "iot_dry_cotton": "Pamuklular", + "iot_dry_cuddly_toys": "Yumuşak Oyuncaklar", + "iot_dry_curtains": "Perdeler", + "iot_dry_dehumidifier": "Nem giderici", + "iot_dry_delicates": "Hassas", + "iot_dry_delicate_tablecloths": "Hassas masa örtüleri", + "iot_dry_denim_jeans": "Denim - kot pantolon", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Yorgan", + "iot_dry_easy_iron_cotton": "Süper Kolay Ütüleme", + "iot_dry_easy_iron_synthetics": "Sentetikler Süper Kolay Ütü", + "iot_dry_gym_fit": "Spor kıyafetleri", + "iot_dry_lingerie": "İç Çamaşırı", + "iot_dry_mixed": "Karışık", + "iot_dry_playsuits": "Oyun elbiseleri", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Hızlı 59'.", + "iot_dry_refresh": "Yenileme", + "iot_dry_regenerates_waterproof": "Su geçirmezliği artırmak", + "iot_dry_relax_creases": "Kırışıklık Açma", + "iot_dry_shirts": "Gömlek", + "iot_dry_small_load": "Az Çamaşır", + "iot_dry_swimsuits_and_bikinis": "Mayolar", + "iot_dry_synthetics": "Sentetik", + "iot_dry_synthetic_dry": "Sentetik Kurutma", + "iot_dry_tablecloths": "Masa örtüleri", + "iot_dry_technical_fabrics": "Teknik Kumaşlar", + "iot_dry_warm_embrace": "Sıcak Hava", + "iot_dry_wool": "Saf yün markası", + "jeans": "Kot", + "mix_and_dry": "Karışık ve Kuru", + "pets": "Evcil hayvanlar", + "pre_iron": "Ön Ütüleme", + "rapid_30": "Rapid 30", + "rapid_45": "45 dak. hızlı", + "rapid_59": "Mükemmel Hızlı 59 dk", + "refresh": "Yenileme", + "relax_creases": "Kırışıklık Açma", + "saving_30_min": "EKO 30'", + "shirts": "Gömlekler", + "shoes": "Ayakkabılar", + "small_load": "Az Çamaşır", + "soft_care": "Yumuşak Bakım", + "sport_plus": "Spor+", + "super_easy_iron_misti": "Süper Kolay Ütü karışık", + "super_easy_iron_xxl": "Süper Kolay Ütü XXL", + "super_fast_cottons": "Süper Hızlı Pamuklu", + "super_fast_delicates": "Süper Hızlı Hassas", + "synthetics": "Sentetik", + "total_care": "Total Care", + "trainers": "Spor Ayakkabıları", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Su Geçirmez Canlandırma", + "whites": "Beyazlar", + "wool": "Yünlüleri Kurutma", + "woolmark": "Saf yün markası", + "xxl_load": "XXL Çamaşır", + "zoom_59": "Yakınlaştır 59" + } } }, "select": { @@ -820,7 +962,8 @@ "12": "Ütü", "13": "Gardırop hazır", "14": "Giyilmeye hazır", - "15": "Ekstra kurutma" + "15": "Ekstra kurutma", + "11": "Kurutma yok" }, "name": "Kurutma seviyesi" }, @@ -877,7 +1020,7 @@ "name": "Kırışık açma" }, "add_dish": { - "name": "" + "name": "Bulaşıkları ekle" }, "eco_express": { "name": "Eko" diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index 57c0d7d..4b23f1c 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -9,7 +9,10 @@ "4": "已计划", "5": "已计划", "6": "错误", - "7": "就绪" + "7": "就绪", + "2": "程序运行中", + "8": "Test", + "9": "正在停止循环..." } }, "program_phases_wm": { @@ -53,7 +56,9 @@ "16": "冷却", "18": "保持清新", "19": "烘干", - "20": "烘干" + "20": "烘干", + "11": "就绪", + "17": "unknown" }, "name": "阶段" }, @@ -79,7 +84,8 @@ "12": "熨烫", "13": "衣柜就绪", "14": "可穿", - "15": "特干" + "15": "特干", + "11": "不烘干" }, "name": "烘干水平" }, @@ -165,6 +171,142 @@ "5": "风扇", "6": "风扇" } + }, + "programs_td": { + "state": { + "active_dry": "主动干燥", + "allergy_care": "Antiallergy", + "all_in_one": "All in One", + "antiallergy": "抗过敏", + "anti_odours": "除味", + "auto_care": "自动护理", + "baby": "婴儿服", + "bed_quilt": "床被", + "care_30": "护理 30", + "care_45": "护理 45", + "care_59": "护理 59", + "coloured": "彩色衣物", + "daily_45_min": "每日 45 分钟", + "daily_perfect_59_min": "每日完美 59 分钟", + "darks_and_coloured": "深色和彩色衣物", + "delicates": "精细织物", + "duvet": "羽绒服", + "eco": "生态棉", + "ecospeed_cottons": "经济速度棉质衣物", + "ecospeed_delicates": "经济速度精致衣物", + "ecospeed_mixed": "经济速度混合衣物", + "extra_hygiene": "额外卫生", + "fitness": "健身衣物", + "fresh_care": "清新护理", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "毛巾", + "hqd_bed_sheets": "床单", + "hqd_bulky": "大件物品", + "hqd_casual": "休闲", + "hqd_cold_wind_30": "凉风 30 分钟", + "hqd_cold_wind_timing": "凉风 ", + "hqd_cotton": "棉布", + "hqd_curtain": "窗帘", + "hqd_delicate": "精致衣物", + "hqd_diaper": "纸尿裤", + "hqd_duvet": "羽绒被", + "hqd_feather": "羽绒服", + "hqd_hot_wind_timing": "热空气", + "hqd_hygienic": "卫生保护", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "夹克", + "hqd_jeans": "牛仔裤", + "hqd_luxury": "奢侈衣物", + "hqd_mix": "混合材质", + "hqd_night_dry": "过夜烘干", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "快洗 20", + "hqd_quick_30": "快洗 30", + "hqd_quick_dry": "快速干燥", + "hqd_quilt": "棉被", + "hqd_refresh": "清新", + "hqd_school_uniform": "校服", + "hqd_shirt": "衬衫", + "hqd_shoes": "鞋子", + "hqd_silk": "丝绸", + "hqd_sports": "运动装", + "hqd_synthetics": "合成纤维", + "hqd_timer": "定时", + "hqd_towel": "毛巾", + "hqd_underwear": "内衣", + "hqd_warm_up": "加热", + "hqd_wool": "羊毛衣物", + "hqd_working_suit": "工作服", + "hygiene": "卫生", + "iot_checkup": "检测", + "iot_dry_anti_mites": "除螨", + "iot_dry_baby": "婴儿服", + "iot_dry_backpacks": "背包", + "iot_dry_bathrobe": "浴衣", + "iot_dry_bed_linen": "被单枕套", + "iot_dry_bed_quilt": "床被", + "iot_dry_cotton": "棉布", + "iot_dry_cuddly_toys": "毛绒玩具", + "iot_dry_curtains": "窗帘", + "iot_dry_dehumidifier": "除湿机", + "iot_dry_delicates": "精细织物", + "iot_dry_delicate_tablecloths": "精细台布", + "iot_dry_denim_jeans": "牛仔布 - 牛仔裤", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "羽绒服", + "iot_dry_easy_iron_cotton": "Super Easy Iron", + "iot_dry_easy_iron_synthetics": "超级易熨合成织物", + "iot_dry_gym_fit": "健身服", + "iot_dry_lingerie": "女性内衣", + "iot_dry_mixed": "混合材质", + "iot_dry_playsuits": "运动装", + "iot_dry_rapid_30": "快速 30", + "iot_dry_rapid_59": "快速 59’", + "iot_dry_refresh": "Refresh", + "iot_dry_regenerates_waterproof": "防水布", + "iot_dry_relax_creases": "Relax Creases", + "iot_dry_shirts": "衬衫", + "iot_dry_small_load": "Small Load", + "iot_dry_swimsuits_and_bikinis": "泳衣", + "iot_dry_synthetics": "合成纤维衣物", + "iot_dry_synthetic_dry": "合成纤维烘干", + "iot_dry_tablecloths": "台布", + "iot_dry_technical_fabrics": "弹性织物", + "iot_dry_warm_embrace": "衣物蓬松", + "iot_dry_wool": "Woolmark", + "jeans": "牛仔裤", + "mix_and_dry": "混合化纤洗干一体", + "pets": "宠物", + "pre_iron": "熨烫前", + "rapid_30": "快速 30", + "rapid_45": "快速 45 分钟", + "rapid_59": "完美快洗59′", + "refresh": "清新", + "relax_creases": "Relax Creases", + "saving_30_min": "节约 30 分钟", + "shirts": "衬衫", + "shoes": "鞋子", + "small_load": "Small Load", + "soft_care": "柔软保养", + "sport_plus": "Sport Plus", + "super_easy_iron_misti": "超易熨烫混合衣物", + "super_easy_iron_xxl": "超易熨烫超大衣物", + "super_fast_cottons": "Super Fast Cottons", + "super_fast_delicates": "Super Fast Delicates", + "synthetics": "合成纤维衣物", + "total_care": "Total Care", + "trainers": "运动鞋", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Waterproof Revitalize", + "whites": "浅色衣物", + "wool": "烘干羊毛衣物", + "woolmark": "Woolmark", + "xxl_load": "XXL Load", + "zoom_59": "缩放 59" + } } }, "select": { @@ -820,7 +962,8 @@ "12": "熨烫", "13": "衣柜就绪", "14": "可穿", - "15": "特干" + "15": "特干", + "11": "不烘干" }, "name": "烘干水平" }, @@ -877,7 +1020,7 @@ "name": "抗皱" }, "add_dish": { - "name": "" + "name": "添加碗碟" }, "eco_express": { "name": "节能" diff --git a/scripts/generate_translation.py b/scripts/generate_translation.py index a6ea560..1775a40 100755 --- a/scripts/generate_translation.py +++ b/scripts/generate_translation.py @@ -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, {}) -- 2.39.5 From 0e9bd97c7b45d19c829e9639fadd397175823fa7 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sun, 7 May 2023 13:53:05 +0200 Subject: [PATCH 081/205] Remove useless warning, bump version --- custom_components/hon/binary_sensor.py | 3 --- custom_components/hon/manifest.json | 2 +- custom_components/hon/sensor.py | 3 --- custom_components/hon/switch.py | 4 ---- 4 files changed, 1 insertion(+), 11 deletions(-) diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index a04bd80..95dde48 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -223,9 +223,6 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non if descriptions := BINARY_SENSORS.get(device.appliance_type): for description in descriptions: if not device.get(description.key): - _LOGGER.warning( - "[%s] Can't setup %s", device.appliance_type, description.key - ) continue appliances.extend( [ diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 8713a73..ec140c2 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -7,5 +7,5 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": ["pyhOn==0.10.3"], - "version": "0.7.0-beta.8" + "version": "0.7.0" } diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 9f48d77..83a2244 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -520,9 +520,6 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non if not device.get(description.key) and not device.settings.get( description.key ): - _LOGGER.warning( - "[%s] Can't setup %s", device.appliance_type, description.key - ) continue appliances.extend( [HonSensorEntity(hass, coordinator, entry, device, description)] diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index ea1a88f..d711a13 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -318,10 +318,6 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non appliances.extend( [HonSwitchEntity(hass, coordinator, entry, device, description)] ) - else: - _LOGGER.warning( - "[%s] Can't setup %s", device.appliance_type, description.key - ) async_add_entities(appliances) -- 2.39.5 From 7b80acb6b9d056db2c8e24134c25eca17e382bcd Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sun, 7 May 2023 14:59:04 +0200 Subject: [PATCH 082/205] Update readme --- README.md | 69 +++++++++++++++++---------------- info.md | 23 ++++++----- scripts/generate_translation.py | 4 ++ 3 files changed, 52 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index ec73065..b81d710 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,39 @@ _Restart Home Assistant_ **Method 2**: Settings > Devices & Services > Add Integration > **Haier hOn** _If the integration is not in the list, you need to clear the browser cache._ + +## Supported Models +Support was confirmed for these models. If a supported model is missing, please [add it with this form](https://forms.gle/bTSD8qFotdZFytbf8). +- Haier WD90-B14TEAM5 +- Haier HD80-A3959 +- Haier HWO60SM2F3XH +- Hoover H-WASH 500 +- Candy CIS633SCTTWIFI +- Haier XIB 3B2SFS-80 +- Haier XIB 6B2D3FB + +## Supported Languages +Translation of internal names like programs are available for all languages which are official supported by the hOn app: +* 🇨🇳 Chinese +* 🇭🇷 Croatian +* 🇨🇿 Czech +* 🇳🇱 Dutch +* 🇬🇧 English +* 🇫🇷 French +* 🇩🇪 German +* 🇬🇷 Greek +* 🇮🇱 Hebrew +* 🇮🇹 Italian +* 🇵🇱 Polish +* 🇵🇹 Portuguese +* 🇷🇴 Romanian +* 🇷🇺 Russian +* 🇷🇸 Serbian +* 🇸🇰 Slovak +* 🇸🇮 Slovenian +* 🇪🇸 Spanish +* 🇹🇷 Turkish + ## Contribute Any kind of contribution is welcome! ### Read out device data @@ -92,39 +125,7 @@ For every device exists a hidden button which can be used to log all info of you #### Tips and Tricks - If you want to have some states humanreadable, have a look at the `translation_key` parameter of the `EntityDescription`. - If you need to implement some more logic, create a pull request to the underlying library. There we collect special requirements in the `appliances` directory. -- Use [pyhOn's translate command](https://github.com/Andre0512/pyhOn#translation) to read out the official translations - -## Tested Devices -- Haier WD90-B14TEAM5 -- Haier HD80-A3959 -- Haier HWO60SM2F3XH -- Hoover H-WASH 500 -- Candy CIS633SCTTWIFI -- Haier XIB 3B2SFS-80 -- Haier XIB 6B2D3FB - -## Supported Languages -Translation of internal names like programs are available for all languages which are official supported by the hOn app: -* 🇨🇳 Chinese -* 🇭🇷 Croatian -* 🇨🇿 Czech -* 🇳🇱 Dutch -* 🇬🇧 English -* 🇫🇷 French -* 🇩🇪 German -* 🇬🇷 Greek -* 🇮🇱 Hebrew -* 🇮🇹 Italian -* 🇵🇱 Polish -* 🇵🇹 Portuguese -* 🇷🇴 Romanian -* 🇷🇺 Russian -* 🇷🇸 Serbian -* 🇸🇰 Slovak -* 🇸🇮 Slovenian -* 🇪🇸 Spanish -* 🇹🇷 Turkish - +- Use [pyhOn's translate command](https://github.com/Andre0512/pyhOn#translation) to read out the official translations ## About this Repo The existing integrations missed some features from the app I liked to have in HomeAssistant. @@ -265,7 +266,7 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 | Dry level | `hair-dryer` | `sensor` | `dryLevel` | | Error | `math-log` | `sensor` | `errors` | | Machine Status | `information` | `sensor` | `machMode` | -| Program | `tumble-dryer` | `sensor` | `prCode` | +| Program | `tumble-dryer` | `sensor` | `programName` | | Program Phase | `washing-machine` | `sensor` | `prPhase` | | Remaining Time | `timer` | `sensor` | `remainingTimeMM` | | Start Time | `clock-start` | `sensor` | `delayTime` | diff --git a/info.md b/info.md index 19a323f..3a0b71c 100644 --- a/info.md +++ b/info.md @@ -13,12 +13,6 @@ Support for home appliances of Haier's mobile app hOn. - [Dish Washer](https://github.com/Andre0512/hon#dish-washer) - [Air conditioner](https://github.com/Andre0512/hon#air-conditioner) [BETA] -## Tested Appliances -- Haier WD90-B14TEAM5 -- Haier HD80-A3959 -- Haier HWO60SM2F3XH -- Hoover H-WASH 500 - ## Configuration **Method 1**: [![Open your Home Assistant instance and start setting up a new integration.](https://my.home-assistant.io/badges/config_flow_start.svg)](https://my.home-assistant.io/redirect/config_flow_start/?domain=hon) @@ -26,9 +20,15 @@ Support for home appliances of Haier's mobile app hOn. **Method 2**: Settings > Devices & Services > Add Integration > **Haier hOn** _If the integration is not in the list, you need to clear the browser cache._ -## Contribute -Want to help us to support more appliances? Or add more sensors? Or help with translating? Or beautify some icons or captions? -Check out the [project on GitHub](https://github.com/Andre0512/hon), every contribution is welcome! +## Supported Models +Support was confirmed for these models. If a supported model is missing, please [add it with this form](https://forms.gle/bTSD8qFotdZFytbf8). +- Haier WD90-B14TEAM5 +- Haier HD80-A3959 +- Haier HWO60SM2F3XH +- Hoover H-WASH 500 +- Candy CIS633SCTTWIFI +- Haier XIB 3B2SFS-80 +- Haier XIB 6B2D3FB ## Supported Languages Translation of internal names like programs are available for all languages which are official supported by the hOn app: @@ -52,10 +52,13 @@ Translation of internal names like programs are available for all languages whic * 🇪🇸 Spanish * 🇹🇷 Turkish +## Contribute +Want to help us to support more appliances? Or add more sensors? Or help with translating? Or beautify some icons or captions? +Check out the [project on GitHub](https://github.com/Andre0512/hon), every contribution is welcome! + ## Useful Links * [GitHub repository](https://github.com/Andre0512/hon) (please add a star if you like this integration!) * [pyhOn library](https://github.com/Andre0512/pyhOn) * [Release notes](https://github.com/Andre0512/hon/releases) * [Discussion and help](https://github.com/Andre0512/hon/discussions) * [Issues](https://github.com/Andre0512/hon/issues) - diff --git a/scripts/generate_translation.py b/scripts/generate_translation.py index 1775a40..83ce67b 100755 --- a/scripts/generate_translation.py +++ b/scripts/generate_translation.py @@ -3,10 +3,14 @@ import asyncio import json import re +import sys from pathlib import Path from pyhon import HonAPI +if __name__ == "__main__": + sys.path.insert(0, str(Path(__file__).parent.parent)) + from custom_components.hon import const SENSOR = { -- 2.39.5 From 155b1ff91a777da222671e305e3e43451dfaea04 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sun, 7 May 2023 16:39:45 +0200 Subject: [PATCH 083/205] Add all wm and td sensors to wd --- README.md | 55 +++++++++-- custom_components/hon/binary_sensor.py | 55 +++++------ custom_components/hon/hon.py | 9 ++ custom_components/hon/number.py | 14 +-- custom_components/hon/select.py | 12 +-- custom_components/hon/sensor.py | 127 ++----------------------- custom_components/hon/switch.py | 9 +- 7 files changed, 102 insertions(+), 179 deletions(-) diff --git a/README.md b/README.md index b81d710..2073bf6 100644 --- a/README.md +++ b/README.md @@ -254,13 +254,14 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 | Energy Label | `lightning-bolt-circle` | `sensor` | `startProgram.energyLabel` | | Program | | `select` | `startProgram.program` | | Steam Type | `weather-dust` | `sensor` | `steamType` | -| Steam level | `smoke` | `sensor` | `steamLevel` | +| Steam level | `smoke` | `sensor` | `startProgram.steamLevel` | | Sterilization | `clock-start` | `switch` | `startProgram.sterilizationStatus` | | Suggested Load | `weight-kilogram` | `sensor` | `startProgram.suggestedLoadD` | | Temperature level | `thermometer` | `number` | `startProgram.tempLevel` | #### Sensors | Name | Icon | Entity | Key | | --- | --- | --- | --- | +| Anti-Crease | | `binary_sensor` | `anticrease` | | Connection | | `binary_sensor` | `attributes.lastConnEvent.category` | | Door | | `binary_sensor` | `doorStatus` | | Dry level | `hair-dryer` | `sensor` | `dryLevel` | @@ -270,42 +271,78 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 | Program Phase | `washing-machine` | `sensor` | `prPhase` | | Remaining Time | `timer` | `sensor` | `remainingTimeMM` | | Start Time | `clock-start` | `sensor` | `delayTime` | +| Steam level | `smoke` | `sensor` | `steamLevel` | | Temperature level | `thermometer` | `sensor` | `tempLevel` | ### Washer dryer #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | -| Pause Washing Machine | `pause` | `switch` | `pauseProgram` / `resumeProgram` | -| Washing Machine | `washing-machine` | `switch` | `startProgram` / `stopProgram` | +| Pause Washer Dryer | `pause` | `switch` | `pauseProgram` / `resumeProgram` | +| Washer Dryer | `washing-machine` | `switch` | `startProgram` / `stopProgram` | #### Configs | Name | Icon | Entity | Key | | --- | --- | --- | --- | +| Acqua Plus | `water-plus` | `switch` | `startProgram.acquaplus` | +| Anti-Crease | `timer` | `switch` | `startProgram.antiCreaseTime` | +| Anti-Crease | `timer` | `switch` | `startProgram.anticrease` | +| Auto Dose | `cup` | `switch` | `startProgram.autoDetergentStatus` | +| Delay Status | `timer-check` | `switch` | `startProgram.delayStatus` | | Delay Time | `timer-plus` | `number` | `startProgram.delayTime` | +| Dry Time | | `number` | `startProgram.dryTime` | +| Dry Time | `timer` | `select` | `startProgram.dryTimeMM` | +| Dry level | `hair-dryer` | `select` | `startProgram.dryLevel` | +| Energy Label | `lightning-bolt-circle` | `sensor` | `startProgram.energyLabel` | +| Extra Rinse 1 | `numeric-1-box-multiple-outline` | `switch` | `extraRinse1` | +| Extra Rinse 2 | `numeric-2-box-multiple-outline` | `switch` | `extraRinse2` | +| Extra Rinse 3 | `numeric-3-box-multiple-outline` | `switch` | `extraRinse3` | +| Good Night | `weather-night` | `switch` | `goodNight` | +| Keep Fresh | `refresh-circle` | `switch` | `startProgram.autoSoftenerStatus` | +| Liquid Detergent Dose | `cup-water` | `sensor` | `startProgram.liquidDetergentDose` | +| Main Wash Time | `clock-start` | `number` | `startProgram.mainWashTime` | +| Powder Detergent Dose | `cup` | `sensor` | `startProgram.powderDetergentDose` | | Program | | `select` | `startProgram.program` | +| Remaining Time | `timer` | `sensor` | `startProgram.remainingTime` | +| Rinse Iterations | `rotate-right` | `number` | `startProgram.rinseIterations` | +| Soak Prewash Selection | `tshirt-crew` | `switch` | `startProgram.haier_SoakPrewashSelection` | +| Spin speed | `numeric` | `select` | `startProgram.spinSpeed` | +| Steam Level | `weather-dust` | `number` | `startProgram.steamLevel` | +| Steam Type | `weather-dust` | `sensor` | `steamType` | +| Steam level | `smoke` | `sensor` | `startProgram.steamLevel` | +| Sterilization | `clock-start` | `switch` | `startProgram.sterilizationStatus` | +| Suggested Load | `weight-kilogram` | `sensor` | `startProgram.suggestedLoadW` | +| Suggested Load | `weight-kilogram` | `sensor` | `startProgram.suggestedLoadD` | | Suggested weight | `weight-kilogram` | `sensor` | `startProgram.weight` | +| Temperature | `thermometer` | `select` | `startProgram.temp` | +| Temperature level | `thermometer` | `number` | `startProgram.tempLevel` | +| Water hard | `water` | `number` | `startProgram.waterHard` | +| lang | | `number` | `startProgram.lang` | #### Sensors | Name | Icon | Entity | Key | | --- | --- | --- | --- | | Acqua Plus | | `binary_sensor` | `acquaplus` | | Anti-Crease | | `binary_sensor` | `anticrease` | | Current Electricity Used | `lightning-bolt` | `sensor` | `currentElectricityUsed` | -| Current Program | `tumble-dryer` | `sensor` | `prCode` | -| Current Temperature | `thermometer` | `sensor` | `temp` | | Current Water Used | `water` | `sensor` | `currentWaterUsed` | | Dirt level | `liquid-spot` | `sensor` | `dirtyLevel` | +| Door | | `binary_sensor` | `doorStatus` | +| Door Lock | | `binary_sensor` | `doorLockStatus` | | Dry level | `hair-dryer` | `sensor` | `dryLevel` | +| Error | `math-log` | `sensor` | `errors` | | Extra Rinse 1 | | `binary_sensor` | `extraRinse1` | | Extra Rinse 2 | | `binary_sensor` | `extraRinse2` | | Extra Rinse 3 | | `binary_sensor` | `extraRinse3` | | Good Night Mode | | `binary_sensor` | `goodNight` | | Machine Status | `information` | `sensor` | `machMode` | | Pre Wash | | `binary_sensor` | `startProgram.prewash` | +| Program | `tumble-dryer` | `sensor` | `programName` | | Program Phase | `washing-machine` | `sensor` | `prPhase` | | Remaining Time | `timer` | `sensor` | `remainingTimeMM` | | Remote Control | `remote` | `binary_sensor` | `attributes.lastConnEvent.category` | -| Spin Speed | `fast-forward-outline` | `sensor` | `spinSpeed` | +| Spin Speed | `speedometer` | `sensor` | `spinSpeed` | +| Start Time | `clock-start` | `sensor` | `delayTime` | | Steam level | `smoke` | `sensor` | `steamLevel` | +| Temperature level | `thermometer` | `sensor` | `tempLevel` | | Total Power | | `sensor` | `totalElectricityUsed` | | Total Wash Cycle | `counter` | `sensor` | `totalWashCycle` | | Total Water | | `sensor` | `totalWaterUsed` | @@ -346,13 +383,19 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 #### Sensors | Name | Icon | Entity | Key | | --- | --- | --- | --- | +| Acqua Plus | | `binary_sensor` | `acquaplus` | | Current Electricity Used | `lightning-bolt` | `sensor` | `currentElectricityUsed` | | Current Water Used | `water` | `sensor` | `currentWaterUsed` | | Dirt level | `liquid-spot` | `sensor` | `dirtyLevel` | | Door | | `binary_sensor` | `doorStatus` | | Door Lock | | `binary_sensor` | `doorLockStatus` | | Error | `math-log` | `sensor` | `errors` | +| Extra Rinse 1 | | `binary_sensor` | `extraRinse1` | +| Extra Rinse 2 | | `binary_sensor` | `extraRinse2` | +| Extra Rinse 3 | | `binary_sensor` | `extraRinse3` | +| Good Night Mode | | `binary_sensor` | `goodNight` | | Machine Status | `information` | `sensor` | `machMode` | +| Pre Wash | | `binary_sensor` | `startProgram.prewash` | | Program Phase | `washing-machine` | `sensor` | `prPhase` | | Remaining Time | `timer` | `sensor` | `remainingTimeMM` | | Remote Control | `remote` | `binary_sensor` | `attributes.lastConnEvent.category` | diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index 95dde48..e024fd0 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -11,7 +11,7 @@ from homeassistant.components.binary_sensor import ( from homeassistant.config_entries import ConfigEntry from homeassistant.core import callback from .const import DOMAIN -from .hon import HonCoordinator, HonEntity +from .hon import HonCoordinator, HonEntity, unique_entities _LOGGER = logging.getLogger(__name__) @@ -52,32 +52,6 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { on_value="1", translation_key="door_open", ), - ), - "TD": ( - HonBinarySensorEntityDescription( - key="attributes.lastConnEvent.category", - name="Connection", - device_class=BinarySensorDeviceClass.CONNECTIVITY, - on_value="CONNECTED", - translation_key="connection", - ), - HonBinarySensorEntityDescription( - key="doorStatus", - name="Door", - device_class=BinarySensorDeviceClass.DOOR, - on_value="1", - translation_key="door_open", - ), - ), - "WD": ( - HonBinarySensorEntityDescription( - key="attributes.lastConnEvent.category", - name="Remote Control", - device_class=BinarySensorDeviceClass.CONNECTIVITY, - on_value="CONNECTED", - icon="mdi:remote", - translation_key="remote_control", - ), HonBinarySensorEntityDescription( key="startProgram.prewash", name="Pre Wash", translation_key="prewash" ), @@ -96,6 +70,22 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { HonBinarySensorEntityDescription( key="acquaplus", name="Acqua Plus", translation_key="acqua_plus" ), + ), + "TD": ( + HonBinarySensorEntityDescription( + key="attributes.lastConnEvent.category", + name="Connection", + device_class=BinarySensorDeviceClass.CONNECTIVITY, + on_value="CONNECTED", + translation_key="connection", + ), + HonBinarySensorEntityDescription( + key="doorStatus", + name="Door", + device_class=BinarySensorDeviceClass.DOOR, + on_value="1", + translation_key="door_open", + ), HonBinarySensorEntityDescription( key="anticrease", name="Anti-Crease", translation_key="anti_crease" ), @@ -208,6 +198,9 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { } +BINARY_SENSORS["WD"] = unique_entities(BINARY_SENSORS["WM"], BINARY_SENSORS["TD"]) + + async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: hon: Hon = hass.data[DOMAIN][entry.unique_id] coordinators = hass.data[DOMAIN]["coordinators"] @@ -224,12 +217,8 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non for description in descriptions: if not device.get(description.key): continue - appliances.extend( - [ - HonBinarySensorEntity( - hass, coordinator, entry, device, description - ) - ] + appliances.append( + HonBinarySensorEntity(hass, coordinator, entry, device, description) ) async_add_entities(appliances) diff --git a/custom_components/hon/hon.py b/custom_components/hon/hon.py index f55f761..762bf43 100644 --- a/custom_components/hon/hon.py +++ b/custom_components/hon/hon.py @@ -50,3 +50,12 @@ class HonCoordinator(DataUpdateCoordinator): async def _async_update_data(self): await self._device.update() + + +def unique_entities(base_entities, new_entities): + result = list(base_entities) + existing_entities = [entity.key for entity in base_entities] + for entity in new_entities: + if entity.key not in existing_entities: + result.append(entity) + return tuple(result) diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index 23f832e..cfd8345 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -15,7 +15,7 @@ from homeassistant.core import callback from homeassistant.helpers.entity import EntityCategory from .const import DOMAIN -from .hon import HonEntity, HonCoordinator +from .hon import HonEntity, HonCoordinator, unique_entities NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { "WM": ( @@ -85,16 +85,6 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { translation_key="dry_time", ), ), - "WD": ( - NumberEntityDescription( - key="startProgram.delayTime", - name="Delay Time", - icon="mdi:timer-plus", - entity_category=EntityCategory.CONFIG, - native_unit_of_measurement=UnitOfTime.MINUTES, - translation_key="delay_time", - ), - ), "OV": ( NumberEntityDescription( key="startProgram.delayTime", @@ -166,6 +156,8 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { ), } +NUMBERS["WD"] = unique_entities(NUMBERS["WM"], NUMBERS["TD"]) + async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: hon: Hon = hass.data[DOMAIN][entry.unique_id] diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index 66150e2..a27df1d 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -14,7 +14,7 @@ from homeassistant.core import callback from homeassistant.helpers.entity import EntityCategory from .const import DOMAIN -from .hon import HonEntity, HonCoordinator +from .hon import HonEntity, HonCoordinator, unique_entities _LOGGER = logging.getLogger(__name__) @@ -66,14 +66,6 @@ SELECTS = { translation_key="dry_levels", ), ), - "WD": ( - SelectEntityDescription( - key="startProgram.program", - name="Program", - entity_category=EntityCategory.CONFIG, - translation_key="programs_wm", - ), - ), "OV": ( SelectEntityDescription( key="startProgram.program", @@ -114,6 +106,8 @@ SELECTS = { ), } +SELECTS["WD"] = unique_entities(SELECTS["WM"], SELECTS["TD"]) + async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: hon: Hon = hass.data[DOMAIN][entry.unique_id] diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 83a2244..0dd08dd 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -25,7 +25,7 @@ from homeassistant.const import PERCENTAGE from . import const from .const import DOMAIN -from .hon import HonCoordinator, HonEntity +from .hon import HonCoordinator, HonEntity, unique_entities _LOGGER = logging.getLogger(__name__) @@ -112,7 +112,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { name="Spin Speed", icon="mdi:speedometer", state_class=SensorStateClass.MEASUREMENT, - native_unit_of_measurement=UnitOfTime.MINUTES, + native_unit_of_measurement=REVOLUTIONS_PER_MINUTE, translation_key="spin_speed", ), SensorEntityDescription( @@ -238,12 +238,18 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { translation_key="energy_label", ), SensorEntityDescription( - key="steamLevel", + key="startProgram.steamLevel", name="Steam level", icon="mdi:smoke", entity_category=EntityCategory.CONFIG, translation_key="steam_level", ), + SensorEntityDescription( + key="steamLevel", + name="Steam level", + icon="mdi:smoke", + translation_key="steam_level", + ), SensorEntityDescription( key="steamType", name="Steam Type", @@ -251,120 +257,6 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { entity_category=EntityCategory.CONFIG, ), ), - "WD": ( - SensorEntityDescription( - key="totalElectricityUsed", - name="Total Power", - device_class=SensorDeviceClass.ENERGY, - state_class=SensorStateClass.TOTAL_INCREASING, - native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, - translation_key="energy_total", - ), - SensorEntityDescription( - key="totalWaterUsed", - name="Total Water", - device_class=SensorDeviceClass.WATER, - state_class=SensorStateClass.TOTAL_INCREASING, - native_unit_of_measurement=UnitOfVolume.LITERS, - translation_key="water_total", - ), - SensorEntityDescription( - key="totalWashCycle", - name="Total Wash Cycle", - state_class=SensorStateClass.TOTAL_INCREASING, - icon="mdi:counter", - translation_key="cycles_total", - ), - SensorEntityDescription( - key="currentElectricityUsed", - name="Current Electricity Used", - state_class=SensorStateClass.MEASUREMENT, - device_class=SensorDeviceClass.POWER, - native_unit_of_measurement=UnitOfPower.KILO_WATT, - icon="mdi:lightning-bolt", - translation_key="energy_current", - ), - SensorEntityDescription( - key="currentWaterUsed", - name="Current Water Used", - state_class=SensorStateClass.MEASUREMENT, - icon="mdi:water", - translation_key="water_current", - ), - SensorEntityDescription( - key="startProgram.weight", - name="Suggested weight", - state_class=SensorStateClass.MEASUREMENT, - entity_category=EntityCategory.CONFIG, - native_unit_of_measurement=UnitOfMass.KILOGRAMS, - icon="mdi:weight-kilogram", - translation_key="suggested_load", - ), - SensorEntityDescription( - key="machMode", - name="Machine Status", - icon="mdi:information", - device_class=SensorDeviceClass.ENUM, - translation_key="washing_modes", - options=list(const.MACH_MODE), - ), - SensorEntityDescription( - key="spinSpeed", - name="Spin Speed", - icon="mdi:fast-forward-outline", - state_class=SensorStateClass.MEASUREMENT, - native_unit_of_measurement=REVOLUTIONS_PER_MINUTE, - translation_key="spin_speed", - ), - SensorEntityDescription( - key="remainingTimeMM", - name="Remaining Time", - icon="mdi:timer", - state_class=SensorStateClass.MEASUREMENT, - native_unit_of_measurement=UnitOfTime.MINUTES, - translation_key="remaining_time", - ), - SensorEntityDescription( - key="prCode", - name="Current Program", - icon="mdi:tumble-dryer", - translation_key="programs", - ), - SensorEntityDescription( - key="prPhase", - name="Program Phase", - icon="mdi:washing-machine", - device_class=SensorDeviceClass.ENUM, - translation_key="program_phases_wm", - options=list(const.WASHING_PR_PHASE), - ), - SensorEntityDescription( - key="dryLevel", - name="Dry level", - icon="mdi:hair-dryer", - translation_key="dry_levels", - ), - SensorEntityDescription( - key="dirtyLevel", - name="Dirt level", - icon="mdi:liquid-spot", - translation_key="dirt_level", - ), - SensorEntityDescription( - key="steamLevel", - name="Steam level", - icon="mdi:smoke", - translation_key="steam_level", - ), - SensorEntityDescription( - key="temp", - name="Current Temperature", - icon="mdi:thermometer", - state_class=SensorStateClass.MEASUREMENT, - native_unit_of_measurement=UnitOfTemperature.CELSIUS, - translation_key="temperature", - ), - ), "OV": ( SensorEntityDescription( key="remainingTimeMM", @@ -501,6 +393,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { ), ), } +SENSORS["WD"] = unique_entities(SENSORS["WM"], SENSORS["TD"]) async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index d711a13..a6e6989 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -10,7 +10,7 @@ from pyhon.appliance import HonAppliance from pyhon.parameter.range import HonParameterRange from .const import DOMAIN -from .hon import HonCoordinator, HonEntity +from .hon import HonCoordinator, HonEntity, unique_entities _LOGGER = logging.getLogger(__name__) @@ -168,7 +168,7 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { "WD": ( HonSwitchEntityDescription( key="active", - name="Washing Machine", + name="Washer Dryer", icon="mdi:washing-machine", turn_on_key="startProgram", turn_off_key="stopProgram", @@ -176,7 +176,7 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { ), HonSwitchEntityDescription( key="pause", - name="Pause Washing Machine", + name="Pause Washer Dryer", icon="mdi:pause", turn_on_key="pauseProgram", turn_off_key="resumeProgram", @@ -296,6 +296,9 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { ), } +SWITCHES["WD"] = unique_entities(SWITCHES["WD"], SWITCHES["WM"]) +SWITCHES["WD"] = unique_entities(SWITCHES["WD"], SWITCHES["TD"]) + async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: hon: Hon = hass.data[DOMAIN][entry.unique_id] -- 2.39.5 From 74f5887bb290a80508a4283a069f83cc7b4dee34 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sun, 7 May 2023 17:42:28 +0200 Subject: [PATCH 084/205] Bump pyhon to fix #36 --- custom_components/hon/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index ec140c2..28ead90 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -6,6 +6,6 @@ "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn==0.10.3"], - "version": "0.7.0" + "requirements": ["pyhOn==0.10.4"], + "version": "0.7.1" } -- 2.39.5 From 6935f5f07f729d78627d16003f74f3552af47d7e Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sun, 7 May 2023 19:12:45 +0200 Subject: [PATCH 085/205] Deactivate contols when remotectrl disabled, fixes #28 --- README.md | 2 -- custom_components/hon/binary_sensor.py | 16 ---------------- custom_components/hon/button.py | 5 +++++ custom_components/hon/switch.py | 8 ++++++++ 4 files changed, 13 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 2073bf6..6c137cd 100644 --- a/README.md +++ b/README.md @@ -209,7 +209,6 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 | Pan Status | `pot-mix` | `binary_sensor` | `panStatus` | | Power | `lightning-bolt` | `sensor` | `power` | | Remaining Time | `timer` | `sensor` | `remainingTimeMM` | -| Remote Control | `remote` | `binary_sensor` | `attributes.parameters.remoteCtrValid` | | Temperature | `thermometer` | `sensor` | `temp` | ### Oven @@ -231,7 +230,6 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 | Connection | `wifi` | `binary_sensor` | `attributes.lastConnEvent.category` | | On | `power-cycle` | `binary_sensor` | `attributes.parameters.onOffStatus` | | Remaining Time | `timer` | `sensor` | `remainingTimeMM` | -| Remote Control | `remote` | `binary_sensor` | `attributes.parameters.remoteCtrValid` | | Start Time | `clock-start` | `sensor` | `delayTime` | | Temperature | `thermometer` | `sensor` | `temp` | | Temperature Selected | `thermometer` | `sensor` | `tempSel` | diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index e024fd0..f7c0437 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -99,14 +99,6 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { icon="mdi:wifi", translation_key="connection", ), - HonBinarySensorEntityDescription( - key="attributes.parameters.remoteCtrValid", - name="Remote Control", - device_class=BinarySensorDeviceClass.CONNECTIVITY, - on_value="1", - icon="mdi:remote", - translation_key="remote_control", - ), HonBinarySensorEntityDescription( key="attributes.parameters.onOffStatus", name="On", @@ -125,14 +117,6 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { icon="mdi:wifi", translation_key="connection", ), - HonBinarySensorEntityDescription( - key="attributes.parameters.remoteCtrValid", - name="Remote Control", - device_class=BinarySensorDeviceClass.CONNECTIVITY, - on_value="1", - icon="mdi:remote", - translation_key="remote_control", - ), HonBinarySensorEntityDescription( key="attributes.parameters.onOffStatus", name="On", diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index 79759b5..5cf0497 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -80,3 +80,8 @@ class HonFeatureRequestButton(HonEntity, ButtonEntity): pyhon_version = pkg_resources.get_distribution("pyhon").version info = f"Device Info:\n{self._device.diagnose}pyhOnVersion: {pyhon_version}" _LOGGER.error(info) + + @property + def available(self) -> bool: + """Return True if entity is available.""" + return super().available and self._device.get("remoteCtrValid") == "1" diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index a6e6989..9b751c3 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -379,3 +379,11 @@ class HonSwitchEntity(HonEntity, SwitchEntity): await self.coordinator.async_refresh() else: await self._device.commands[self.entity_description.turn_off_key].send() + + @property + def available(self) -> bool: + """Return True if entity is available.""" + if self.entity_category == EntityCategory.CONFIG: + return super().available + else: + return super().available and self._device.get("remoteCtrValid") == "1" -- 2.39.5 From a5c7b99569e7d088f28f3bd8a530d249f8bcf730 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 8 May 2023 02:05:04 +0200 Subject: [PATCH 086/205] Improve air conditioner support --- README.md | 24 +++++++------- custom_components/hon/climate.py | 56 ++++++++++++++++++-------------- custom_components/hon/const.py | 13 ++++++++ custom_components/hon/number.py | 2 +- custom_components/hon/select.py | 3 +- custom_components/hon/switch.py | 29 +++++++++++------ 6 files changed, 78 insertions(+), 49 deletions(-) diff --git a/README.md b/README.md index 6c137cd..6f9c8db 100644 --- a/README.md +++ b/README.md @@ -138,19 +138,19 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 #### Configs | Name | Icon | Entity | Key | | --- | --- | --- | --- | -| 10° Heating | | `switch` | `startProgram.10degreeHeatingStatus` | -| Echo | | `switch` | `startProgram.echoStatus` | -| Eco Mode | | `switch` | `startProgram.ecoMode` | -| Eco Pilot | | `select` | `startProgram.humanSensingStatus` | -| Health Mode | | `switch` | `startProgram.healthMode` | -| Mute | | `switch` | `startProgram.muteStatus` | +| 10° Heating | `heat-wave` | `switch` | `settings.10degreeHeatingStatus` | +| Echo | `account-voice` | `switch` | `settings.echoStatus` | +| Eco Mode | | `switch` | `settings.ecoMode` | +| Eco Pilot | `run` | `select` | `settings.humanSensingStatus` | +| Health Mode | `medication-outline` | `switch` | `settings.healthMode` | +| Mute | `volume-off` | `switch` | `settings.muteStatus` | | Program | | `select` | `startProgram.program` | -| Rapid Mode | | `switch` | `startProgram.rapidMode` | -| Screen Display | | `switch` | `startProgram.screenDisplayStatus` | -| Self Cleaning | | `switch` | `startProgram.selfCleaningStatus` | -| Self Cleaning 56 | | `switch` | `startProgram.selfCleaning56Status` | -| Silent Sleep | | `switch` | `startProgram.silentSleepStatus` | -| Target Temperature | `thermometer` | `number` | `startProgram.tempSel` | +| Rapid Mode | `run-fast` | `switch` | `settings.rapidMode` | +| Screen Display | `monitor-small` | `switch` | `settings.screenDisplayStatus` | +| Self Cleaning | `air-filter` | `switch` | `settings.selfCleaningStatus` | +| Self Cleaning 56 | `air-filter` | `switch` | `settings.selfCleaning56Status` | +| Silent Sleep | `bed` | `switch` | `settings.silentSleepStatus` | +| Target Temperature | `thermometer` | `number` | `settings.tempSel` | ### Dish washer #### Controls diff --git a/custom_components/hon/climate.py b/custom_components/hon/climate.py index ef4c520..d5998a7 100644 --- a/custom_components/hon/climate.py +++ b/custom_components/hon/climate.py @@ -29,7 +29,7 @@ from .hon import HonEntity, HonCoordinator _LOGGER = logging.getLogger(__name__) CLIMATES = { - "AC": (ClimateEntityDescription(key="startProgram"),), + "AC": (ClimateEntityDescription(key="startProgram", icon="mdi:air-conditioner"),), } @@ -47,7 +47,7 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non if descriptions := CLIMATES.get(device.appliance_type): for description in descriptions: - if description.key not in device.available_settings: + if description.key not in list(device.commands): continue appliances.extend( [HonClimateEntity(hass, coordinator, entry, device, description)] @@ -61,21 +61,21 @@ class HonClimateEntity(HonEntity, ClimateEntity): ) -> None: super().__init__(hass, entry, coordinator, device) self._coordinator = coordinator - self._device = coordinator.device + self._device = device self.entity_description = description self._hass = hass self._attr_unique_id = f"{super().unique_id}climate" self._attr_temperature_unit = TEMP_CELSIUS self._attr_target_temperature_step = PRECISION_WHOLE - self._attr_max_temp = device.settings["tempSel"].max - self._attr_min_temp = device.settings["tempSel"].min + self._attr_max_temp = device.settings["settings.tempSel"].max + self._attr_min_temp = device.settings["settings.tempSel"].min self._attr_hvac_modes = [HVACMode.OFF] + [ - HON_HVAC_MODE[mode] for mode in device.settings["machMode"].values + HON_HVAC_MODE[mode] for mode in device.settings["settings.machMode"].values ] self._attr_fan_modes = [FAN_OFF] + [ - HON_FAN[mode] for mode in device.settings["windSpeed"].values + HON_FAN[mode] for mode in device.settings["settings.windSpeed"].values ] self._attr_swing_modes = [ SWING_OFF, @@ -89,22 +89,28 @@ class HonClimateEntity(HonEntity, ClimateEntity): | ClimateEntityFeature.SWING_MODE ) + self._handle_coordinator_update() + async def async_set_hvac_mode(self, hvac_mode): if hvac_mode == HVACMode.OFF: - self._device.commands["stopProgram"].send() + await self._device.commands["stopProgram"].send() else: - self._device.settings["program"].value = HON_HVAC_PROGRAM[hvac_mode] - self._device.commands["startProgram"].send() + self._device.settings["startProgram.program"].value = HON_HVAC_PROGRAM[ + hvac_mode + ] + await self._device.commands["startProgram"].send() self._attr_hvac_mode = hvac_mode async def async_set_fan_mode(self, fan_mode): mode_number = list(HON_FAN.values()).index(fan_mode) - self._device.settings["windSpeed"].value = list(HON_FAN.keys())[mode_number] - self._device.commands["startProgram"].send() + self._device.settings["settings.windSpeed"].value = list(HON_FAN.keys())[ + mode_number + ] + await self._device.commands["settings"].send() async def async_set_swing_mode(self, swing_mode): - horizontal = self._device.settings["windDirectionHorizontal"] - vertical = self._device.settings["windDirectionVertical"] + horizontal = self._device.settings["settings.windDirectionHorizontal"] + vertical = self._device.settings["settings.windDirectionVertical"] if swing_mode in [SWING_BOTH, SWING_HORIZONTAL]: horizontal.value = "7" if swing_mode in [SWING_BOTH, SWING_VERTICAL]: @@ -114,30 +120,30 @@ class HonClimateEntity(HonEntity, ClimateEntity): if swing_mode in [SWING_OFF, SWING_VERTICAL] and horizontal.value == "7": horizontal.value = "0" self._attr_swing_mode = swing_mode - self._device.commands["startProgram"].send() + await self._device.commands["settings"].send() async def async_set_temperature(self, **kwargs): if (temperature := kwargs.get(ATTR_TEMPERATURE)) is None: return False - self._device.settings["selTemp"].value = temperature - self._device.commands["startProgram"].send() + self._device.settings["settings.selTemp"].value = temperature + await self._device.commands["settings"].send() @callback def _handle_coordinator_update(self, update=True) -> None: - self._attr_target_temperature = int(float(self._device.get("tempSel"))) - self._attr_current_temperature = float(self._device.get("tempIndoor")) - self._attr_max_temp = self._device.settings["tempSel"].max - self._attr_min_temp = self._device.settings["tempSel"].min + # self._attr_target_temperature = int(float(self._device.get("tempSel"))) + # self._attr_current_temperature = float(self._device.get("tempIndoor")) + self._attr_max_temp = self._device.settings["settings.tempSel"].max + self._attr_min_temp = self._device.settings["settings.tempSel"].min if self._device.get("onOffStatus") == "0": self._attr_hvac_mode = HVACMode.OFF else: - self._attr_hvac_mode = HON_HVAC_MODE[self._device.get("machMode")] + self._attr_hvac_mode = HON_HVAC_MODE[self._device.get("machMode") or "0"] - self._attr_fan_mode = HON_FAN[self._device.settings["windSpeed"].value] + self._attr_fan_mode = HON_FAN[self._device.settings["settings.windSpeed"].value] - horizontal = self._device.settings["windDirectionHorizontal"] - vertical = self._device.settings["windDirectionVertical"] + horizontal = self._device.settings["settings.windDirectionHorizontal"] + vertical = self._device.settings["settings.windDirectionVertical"] if horizontal == "7" and vertical == "8": self._attr_swing_mode = SWING_BOTH elif horizontal == "7": diff --git a/custom_components/hon/const.py b/custom_components/hon/const.py index 59e1863..13c4961 100644 --- a/custom_components/hon/const.py +++ b/custom_components/hon/const.py @@ -120,6 +120,19 @@ TUMBLE_DRYER_PR_PHASE = { "19": "WASHING_CMD&CTRL.PHASE_DRYING.TITLE", "20": "WASHING_CMD&CTRL.PHASE_DRYING.TITLE", } +DIRTY_LEVEL = { + "1": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OPTIONS_VALUES_DESCRIPTION.LITTLE", + "2": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OPTIONS_VALUES_DESCRIPTION.NORMAL", + "3": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OPTIONS_VALUES_DESCRIPTION.VERY", +} + +STEAM_LEVEL = { + "0": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OPTIONS_VALUES_DESCRIPTION.NO_STEAM", + "1": "WASHING_CMD&CTRL.GUIDED_WASHING_SYMBOLS_FABRICS.COTTON_TITLE", + "2": "WASHING_CMD&CTRL.GUIDED_WASHING_SYMBOLS_FABRICS.DELICATE_TITLE", + "3": "WASHING_CMD&CTRL.GUIDED_WASHING_SYMBOLS_FABRICS.SYNTHETIC_TITLE", +} + DISHWASHER_PR_PHASE = { "0": "WASHING_CMD&CTRL.PHASE_READY.TITLE", "1": "WASHING_CMD&CTRL.PHASE_PREWASH.TITLE", diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index cfd8345..2aed8b3 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -146,7 +146,7 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { ), "AC": ( NumberEntityDescription( - key="startProgram.tempSel", + key="settings.tempSel", name="Target Temperature", entity_category=EntityCategory.CONFIG, icon="mdi:thermometer", diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index a27df1d..0f65bc9 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -98,8 +98,9 @@ SELECTS = { translation_key="programs_ac", ), SelectEntityDescription( - key="startProgram.humanSensingStatus", + key="settings.humanSensingStatus", name="Eco Pilot", + icon="mdi:run", entity_category=EntityCategory.CONFIG, translation_key="eco_pilot", ), diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 9b751c3..671572c 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -237,59 +237,68 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { ), "AC": ( HonSwitchEntityDescription( - key="startProgram.10degreeHeatingStatus", + key="settings.10degreeHeatingStatus", name="10° Heating", + icon="mdi:heat-wave", entity_category=EntityCategory.CONFIG, translation_key="10_degree_heating", ), HonSwitchEntityDescription( - key="startProgram.echoStatus", + key="settings.echoStatus", name="Echo", + icon="mdi:account-voice", entity_category=EntityCategory.CONFIG, ), HonSwitchEntityDescription( - key="startProgram.ecoMode", + key="settings.ecoMode", name="Eco Mode", entity_category=EntityCategory.CONFIG, translation_key="eco_mode", ), HonSwitchEntityDescription( - key="startProgram.healthMode", + key="settings.healthMode", name="Health Mode", + icon="mdi:medication-outline", entity_category=EntityCategory.CONFIG, ), HonSwitchEntityDescription( - key="startProgram.muteStatus", + key="settings.muteStatus", name="Mute", + icon="mdi:volume-off", entity_category=EntityCategory.CONFIG, translation_key="mute_mode", ), HonSwitchEntityDescription( - key="startProgram.rapidMode", + key="settings.rapidMode", name="Rapid Mode", + icon="mdi:run-fast", entity_category=EntityCategory.CONFIG, translation_key="rapid_mode", ), HonSwitchEntityDescription( - key="startProgram.screenDisplayStatus", + key="settings.screenDisplayStatus", name="Screen Display", + icon="mdi:monitor-small", entity_category=EntityCategory.CONFIG, ), HonSwitchEntityDescription( - key="startProgram.selfCleaning56Status", + key="settings.selfCleaning56Status", name="Self Cleaning 56", + icon="mdi:air-filter", entity_category=EntityCategory.CONFIG, translation_key="self_clean_56", ), HonSwitchEntityDescription( - key="startProgram.selfCleaningStatus", + key="settings.selfCleaningStatus", name="Self Cleaning", + icon="mdi:air-filter", entity_category=EntityCategory.CONFIG, translation_key="self_clean", ), HonSwitchEntityDescription( - key="startProgram.silentSleepStatus", + key="settings.silentSleepStatus", name="Silent Sleep", + icon="mdi:bed", entity_category=EntityCategory.CONFIG, translation_key="silent_mode", ), -- 2.39.5 From 44794c35ca9be8260cd9f6f6b0033e5f359b95ea Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 8 May 2023 02:35:54 +0200 Subject: [PATCH 087/205] Fix missing entities #34 --- custom_components/hon/manifest.json | 4 ++-- custom_components/hon/switch.py | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 28ead90..d8e8893 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -6,6 +6,6 @@ "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn==0.10.4"], - "version": "0.7.1" + "requirements": ["pyhOn==0.10.6"], + "version": "0.7.2" } diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 671572c..25bd1cc 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -326,6 +326,8 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non if ( device.get(description.key) is not None or description.key in device.available_settings + or description.turn_on_key in list(device.commands) + or description.turn_off_key in list(device.commands) ): appliances.extend( [HonSwitchEntity(hass, coordinator, entry, device, description)] -- 2.39.5 From 240dc85ff3924e574e17c2a9dbe47459990bf8fa Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 8 May 2023 19:17:08 +0200 Subject: [PATCH 088/205] Small fixes, fix KeyError for switches #38 --- README.md | 17 +++++++++-------- custom_components/hon/button.py | 10 +++++----- custom_components/hon/climate.py | 4 ++-- custom_components/hon/manifest.json | 2 +- custom_components/hon/switch.py | 26 +++++++++++++++----------- info.md | 1 + 6 files changed, 33 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index 6f9c8db..cbe19e1 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,7 @@ Support was confirmed for these models. If a supported model is missing, please - Candy CIS633SCTTWIFI - Haier XIB 3B2SFS-80 - Haier XIB 6B2D3FB +- Hoover HSOT3161WG ## Supported Languages Translation of internal names like programs are available for all languages which are official supported by the hOn app: @@ -291,10 +292,10 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 | Dry Time | `timer` | `select` | `startProgram.dryTimeMM` | | Dry level | `hair-dryer` | `select` | `startProgram.dryLevel` | | Energy Label | `lightning-bolt-circle` | `sensor` | `startProgram.energyLabel` | -| Extra Rinse 1 | `numeric-1-box-multiple-outline` | `switch` | `extraRinse1` | -| Extra Rinse 2 | `numeric-2-box-multiple-outline` | `switch` | `extraRinse2` | -| Extra Rinse 3 | `numeric-3-box-multiple-outline` | `switch` | `extraRinse3` | -| Good Night | `weather-night` | `switch` | `goodNight` | +| Extra Rinse 1 | `numeric-1-box-multiple-outline` | `switch` | `startProgram.extraRinse1` | +| Extra Rinse 2 | `numeric-2-box-multiple-outline` | `switch` | `startProgram.extraRinse2` | +| Extra Rinse 3 | `numeric-3-box-multiple-outline` | `switch` | `startProgram.extraRinse3` | +| Good Night | `weather-night` | `switch` | `startProgram.goodNight` | | Keep Fresh | `refresh-circle` | `switch` | `startProgram.autoSoftenerStatus` | | Liquid Detergent Dose | `cup-water` | `sensor` | `startProgram.liquidDetergentDose` | | Main Wash Time | `clock-start` | `number` | `startProgram.mainWashTime` | @@ -359,10 +360,10 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 | Delay Status | `timer-check` | `switch` | `startProgram.delayStatus` | | Delay Time | `timer-plus` | `number` | `startProgram.delayTime` | | Energy Label | `lightning-bolt-circle` | `sensor` | `startProgram.energyLabel` | -| Extra Rinse 1 | `numeric-1-box-multiple-outline` | `switch` | `extraRinse1` | -| Extra Rinse 2 | `numeric-2-box-multiple-outline` | `switch` | `extraRinse2` | -| Extra Rinse 3 | `numeric-3-box-multiple-outline` | `switch` | `extraRinse3` | -| Good Night | `weather-night` | `switch` | `goodNight` | +| Extra Rinse 1 | `numeric-1-box-multiple-outline` | `switch` | `startProgram.extraRinse1` | +| Extra Rinse 2 | `numeric-2-box-multiple-outline` | `switch` | `startProgram.extraRinse2` | +| Extra Rinse 3 | `numeric-3-box-multiple-outline` | `switch` | `startProgram.extraRinse3` | +| Good Night | `weather-night` | `switch` | `startProgram.goodNight` | | Keep Fresh | `refresh-circle` | `switch` | `startProgram.autoSoftenerStatus` | | Liquid Detergent Dose | `cup-water` | `sensor` | `startProgram.liquidDetergentDose` | | Main Wash Time | `clock-start` | `number` | `startProgram.mainWashTime` | diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index 5cf0497..5882b95 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -64,6 +64,11 @@ class HonButtonEntity(HonEntity, ButtonEntity): async def async_press(self) -> None: await self._device.commands[self.entity_description.key].send() + @property + def available(self) -> bool: + """Return True if entity is available.""" + return super().available and self._device.get("remoteCtrValid") == "1" + class HonFeatureRequestButton(HonEntity, ButtonEntity): def __init__(self, hass, coordinator, entry, device: HonAppliance) -> None: @@ -80,8 +85,3 @@ class HonFeatureRequestButton(HonEntity, ButtonEntity): pyhon_version = pkg_resources.get_distribution("pyhon").version info = f"Device Info:\n{self._device.diagnose}pyhOnVersion: {pyhon_version}" _LOGGER.error(info) - - @property - def available(self) -> bool: - """Return True if entity is available.""" - return super().available and self._device.get("remoteCtrValid") == "1" diff --git a/custom_components/hon/climate.py b/custom_components/hon/climate.py index d5998a7..63a9966 100644 --- a/custom_components/hon/climate.py +++ b/custom_components/hon/climate.py @@ -130,8 +130,8 @@ class HonClimateEntity(HonEntity, ClimateEntity): @callback def _handle_coordinator_update(self, update=True) -> None: - # self._attr_target_temperature = int(float(self._device.get("tempSel"))) - # self._attr_current_temperature = float(self._device.get("tempIndoor")) + self._attr_target_temperature = int(float(self._device.get("tempSel"))) + self._attr_current_temperature = float(self._device.get("tempIndoor")) self._attr_max_temp = self._device.settings["settings.tempSel"].max self._attr_min_temp = self._device.settings["settings.tempSel"].min diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index d8e8893..f7a9afc 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -7,5 +7,5 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": ["pyhOn==0.10.6"], - "version": "0.7.2" + "version": "0.7.3-beta.0" } diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 25bd1cc..6979dc1 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -82,28 +82,28 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { translation_key="acqua_plus", ), HonSwitchEntityDescription( - key="extraRinse1", + key="startProgram.extraRinse1", name="Extra Rinse 1", entity_category=EntityCategory.CONFIG, icon="mdi:numeric-1-box-multiple-outline", translation_key="extra_rinse_1", ), HonSwitchEntityDescription( - key="extraRinse2", + key="startProgram.extraRinse2", name="Extra Rinse 2", entity_category=EntityCategory.CONFIG, icon="mdi:numeric-2-box-multiple-outline", translation_key="extra_rinse_2", ), HonSwitchEntityDescription( - key="extraRinse3", + key="startProgram.extraRinse3", name="Extra Rinse 3", entity_category=EntityCategory.CONFIG, icon="mdi:numeric-3-box-multiple-outline", translation_key="extra_rinse_3", ), HonSwitchEntityDescription( - key="goodNight", + key="startProgram.goodNight", name="Good Night", icon="mdi:weather-night", entity_category=EntityCategory.CONFIG, @@ -324,14 +324,18 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non if descriptions := SWITCHES.get(device.appliance_type): for description in descriptions: if ( - device.get(description.key) is not None - or description.key in device.available_settings - or description.turn_on_key in list(device.commands) - or description.turn_off_key in list(device.commands) - ): - appliances.extend( - [HonSwitchEntity(hass, coordinator, entry, device, description)] + description.entity_category == EntityCategory.CONFIG + and description.key not in device.available_settings + or not any( + device.get(description.key) is not None + or description.turn_on_key in list(device.commands) + or description.turn_off_key in list(device.commands) ) + ): + continue + appliances.extend( + [HonSwitchEntity(hass, coordinator, entry, device, description)] + ) async_add_entities(appliances) diff --git a/info.md b/info.md index 3a0b71c..afeb914 100644 --- a/info.md +++ b/info.md @@ -29,6 +29,7 @@ Support was confirmed for these models. If a supported model is missing, please - Candy CIS633SCTTWIFI - Haier XIB 3B2SFS-80 - Haier XIB 6B2D3FB +- Hoover HSOT3161WG ## Supported Languages Translation of internal names like programs are available for all languages which are official supported by the hOn app: -- 2.39.5 From a56d3e5f88e599bfd3a3de92e59439f50ba26bb3 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 8 May 2023 19:39:52 +0200 Subject: [PATCH 089/205] Fix missing temperature #38 --- README.md | 2 ++ custom_components/hon/manifest.json | 2 +- custom_components/hon/sensor.py | 8 ++++++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index cbe19e1..bad973d 100644 --- a/README.md +++ b/README.md @@ -322,6 +322,7 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 | Acqua Plus | | `binary_sensor` | `acquaplus` | | Anti-Crease | | `binary_sensor` | `anticrease` | | Current Electricity Used | `lightning-bolt` | `sensor` | `currentElectricityUsed` | +| Current Temperature | `thermometer` | `sensor` | `temp` | | Current Water Used | `water` | `sensor` | `currentWaterUsed` | | Dirt level | `liquid-spot` | `sensor` | `dirtyLevel` | | Door | | `binary_sensor` | `doorStatus` | @@ -384,6 +385,7 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 | --- | --- | --- | --- | | Acqua Plus | | `binary_sensor` | `acquaplus` | | Current Electricity Used | `lightning-bolt` | `sensor` | `currentElectricityUsed` | +| Current Temperature | `thermometer` | `sensor` | `temp` | | Current Water Used | `water` | `sensor` | `currentWaterUsed` | | Dirt level | `liquid-spot` | `sensor` | `dirtyLevel` | | Door | | `binary_sensor` | `doorStatus` | diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index f7a9afc..ea962e3 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -7,5 +7,5 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": ["pyhOn==0.10.6"], - "version": "0.7.3-beta.0" + "version": "0.7.3-beta.1" } diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 0dd08dd..79b0648 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -161,6 +161,14 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { native_unit_of_measurement=UnitOfMass.KILOGRAMS, translation_key="suggested_load", ), + SensorEntityDescription( + key="temp", + name="Current Temperature", + icon="mdi:thermometer", + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + translation_key="temperature", + ), ), "TD": ( SensorEntityDescription( -- 2.39.5 From 6828f3e9a89f0667ea03196e5b0bba7cef097448 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 8 May 2023 21:30:07 +0200 Subject: [PATCH 090/205] Fix missing switches again --- custom_components/hon/manifest.json | 2 +- custom_components/hon/switch.py | 22 ++++++++++++---------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index ea962e3..85cbf29 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -7,5 +7,5 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": ["pyhOn==0.10.6"], - "version": "0.7.3-beta.1" + "version": "0.7.3-beta.2" } diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 6979dc1..8b7e0f5 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -323,16 +323,18 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non if descriptions := SWITCHES.get(device.appliance_type): for description in descriptions: - if ( - description.entity_category == EntityCategory.CONFIG - and description.key not in device.available_settings - or not any( - device.get(description.key) is not None - or description.turn_on_key in list(device.commands) - or description.turn_off_key in list(device.commands) - ) - ): - continue + if description.entity_category == EntityCategory.CONFIG: + if description.key not in device.available_settings: + continue + else: + if not any( + [ + device.get(description.key) is not None, + description.turn_on_key in list(device.commands), + description.turn_off_key in list(device.commands), + ] + ): + continue appliances.extend( [HonSwitchEntity(hass, coordinator, entry, device, description)] ) -- 2.39.5 From 0afbfe997db3ab54416ec285bb25e1a94a52c1e0 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Tue, 9 May 2023 12:41:41 +0200 Subject: [PATCH 091/205] Fix log device info #40 --- custom_components/hon/button.py | 2 +- custom_components/hon/manifest.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index 5882b95..8f01f15 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -83,5 +83,5 @@ class HonFeatureRequestButton(HonEntity, ButtonEntity): async def async_press(self) -> None: pyhon_version = pkg_resources.get_distribution("pyhon").version - info = f"Device Info:\n{self._device.diagnose}pyhOnVersion: {pyhon_version}" + info = f"Device Info:\n{self._device.diagnose()}pyhOnVersion: {pyhon_version}" _LOGGER.error(info) diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 85cbf29..ab9352c 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -7,5 +7,5 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": ["pyhOn==0.10.6"], - "version": "0.7.3-beta.2" + "version": "0.7.3" } -- 2.39.5 From 146e7108813541c0d1771c3144aed83f614334a0 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Wed, 10 May 2023 18:13:05 +0200 Subject: [PATCH 092/205] Add first fridge sensors #41 --- README.md | 37 ++++++++++++++++-- custom_components/hon/binary_sensor.py | 4 +- custom_components/hon/button.py | 4 +- custom_components/hon/climate.py | 9 ++++- custom_components/hon/config_flow.py | 1 - custom_components/hon/const.py | 44 ---------------------- custom_components/hon/hon.py | 3 +- custom_components/hon/number.py | 9 ++--- custom_components/hon/select.py | 16 +++++--- custom_components/hon/sensor.py | 25 ++++++++++-- custom_components/hon/translations/cs.json | 33 ++++++++++++++++ custom_components/hon/translations/de.json | 33 ++++++++++++++++ custom_components/hon/translations/el.json | 33 ++++++++++++++++ custom_components/hon/translations/en.json | 34 +++++++++++++++++ custom_components/hon/translations/es.json | 33 ++++++++++++++++ custom_components/hon/translations/fr.json | 33 ++++++++++++++++ custom_components/hon/translations/he.json | 22 +++++++++++ custom_components/hon/translations/hr.json | 33 ++++++++++++++++ custom_components/hon/translations/it.json | 33 ++++++++++++++++ custom_components/hon/translations/nl.json | 33 ++++++++++++++++ custom_components/hon/translations/pl.json | 33 ++++++++++++++++ custom_components/hon/translations/pt.json | 33 ++++++++++++++++ custom_components/hon/translations/ro.json | 33 ++++++++++++++++ custom_components/hon/translations/ru.json | 33 ++++++++++++++++ custom_components/hon/translations/sk.json | 33 ++++++++++++++++ custom_components/hon/translations/sl.json | 33 ++++++++++++++++ custom_components/hon/translations/sr.json | 33 ++++++++++++++++ custom_components/hon/translations/tr.json | 33 ++++++++++++++++ custom_components/hon/translations/zh.json | 33 ++++++++++++++++ info.md | 23 +++++++++-- scripts/generate_translation.py | 4 ++ scripts/sensor_docs.py | 9 ++++- 32 files changed, 730 insertions(+), 75 deletions(-) diff --git a/README.md b/README.md index bad973d..4bce269 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ Home Assistant integration for Haier hOn: support for Haier/Candy/Hoover home ap - [Hob](https://github.com/Andre0512/hon#hob) - [Dish Washer](https://github.com/Andre0512/hon#dish-washer) - [Air conditioner](https://github.com/Andre0512/hon#air-conditioner) [BETA] +- [Fridge](https://github.com/Andre0512/hon#fridge) [BETA] ## Installation **Method 1:** [![Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?owner=Andre0512&repository=hon&category=integration) @@ -32,15 +33,28 @@ _If the integration is not in the list, you need to clear the browser cache._ ## Supported Models -Support was confirmed for these models. If a supported model is missing, please [add it with this form](https://forms.gle/bTSD8qFotdZFytbf8). -- Haier WD90-B14TEAM5 +Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +- Haier EG9012B19SU1JD - Haier HD80-A3959 +- Haier HW90-B14TEAM5 +- Haier HWD100-B14979 - Haier HWO60SM2F3XH -- Hoover H-WASH 500 -- Candy CIS633SCTTWIFI - Haier XIB 3B2SFS-80 - Haier XIB 6B2D3FB +- Candy CIS633SCTTWIFI +- Candy CSOE C10DE-80 +- Candy ROE H9A3TCEX-S +- Candy RPW41066BWMR/1-S +- Hoover H-WASH 500 +- Hoover H-DRY 500 +- Hoover H7W4 48MBC-S +- Hoover H9A3TCBEXS-S +- Hoover HFB 6B2S3FX +- Hoover HLE C10DCE-80 - Hoover HSOT3161WG +- Hoover HWPD 69AMBC/1-S +- Hoover NDE H10A2TCE-80 +- Hoover NDPHY10A2TCBEXSS ## Supported Languages Translation of internal names like programs are available for all languages which are official supported by the hOn app: @@ -136,6 +150,10 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 ## Appliance Features ### Air conditioner +#### Controls +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Air Conditioner | `air-conditioner` | `climate` | `settings` | #### Configs | Name | Icon | Entity | Key | | --- | --- | --- | --- | @@ -235,6 +253,17 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 | Temperature | `thermometer` | `sensor` | `temp` | | Temperature Selected | `thermometer` | `sensor` | `tempSel` | +### Fridge +#### Configs +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Program | | `select` | `startProgram.program` | +#### Sensors +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Room Humidity | `water-percent` | `sensor` | `humidityEnv` | +| Room Temperature | `thermometer` | `sensor` | `tempEnv` | + ### Tumble dryer #### Controls | Name | Icon | Entity | Key | diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index f7c0437..9c29827 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -1,8 +1,6 @@ import logging from dataclasses import dataclass -from pyhon import Hon - from homeassistant.components.binary_sensor import ( BinarySensorEntityDescription, BinarySensorDeviceClass, @@ -10,6 +8,8 @@ from homeassistant.components.binary_sensor import ( ) from homeassistant.config_entries import ConfigEntry from homeassistant.core import callback +from pyhon import Hon + from .const import DOMAIN from .hon import HonCoordinator, HonEntity, unique_entities diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index 8f01f15..5dd5269 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -1,14 +1,12 @@ import logging -import urllib -from urllib.parse import quote import pkg_resources from homeassistant.components.button import ButtonEntityDescription, ButtonEntity from homeassistant.config_entries import ConfigEntry +from homeassistant.const import EntityCategory from pyhon import Hon from pyhon.appliance import HonAppliance -from homeassistant.const import EntityCategory from .const import DOMAIN from .hon import HonCoordinator, HonEntity diff --git a/custom_components/hon/climate.py b/custom_components/hon/climate.py index 63a9966..0ad8994 100644 --- a/custom_components/hon/climate.py +++ b/custom_components/hon/climate.py @@ -29,7 +29,14 @@ from .hon import HonEntity, HonCoordinator _LOGGER = logging.getLogger(__name__) CLIMATES = { - "AC": (ClimateEntityDescription(key="startProgram", icon="mdi:air-conditioner"),), + "AC": ( + ClimateEntityDescription( + key="settings", + name="Air Conditioner", + icon="mdi:air-conditioner", + translation_key="air_conditioner", + ), + ), } diff --git a/custom_components/hon/config_flow.py b/custom_components/hon/config_flow.py index 442d109..e084ce9 100644 --- a/custom_components/hon/config_flow.py +++ b/custom_components/hon/config_flow.py @@ -1,7 +1,6 @@ import logging import voluptuous as vol - from homeassistant import config_entries from homeassistant.const import CONF_EMAIL, CONF_PASSWORD diff --git a/custom_components/hon/const.py b/custom_components/hon/const.py index 13c4961..03b73be 100644 --- a/custom_components/hon/const.py +++ b/custom_components/hon/const.py @@ -180,50 +180,6 @@ AC_HUMAN_SENSE = { "2": "AC.PROGRAM_DETAIL.FOLLOW_TOUCH", } -TUMBLE_DRYER_PROGRAMS = [ - "hqd_baby_care" - "hqd_bath_towel" - "hqd_bed_sheets" - "hqd_bulky" - "hqd_casual" - "hqd_cold_wind_30" - "hqd_cold_wind_timing" - "hqd_cotton" - "hqd_curtain" - "hqd_delicate" - "hqd_diaper" - "hqd_duvet" - "hqd_feather" - "hqd_hot_wind_timing" - "hqd_hygienic" - "hqd_i_refresh" - "hqd_i_refresh_pro" - "hqd_jacket" - "hqd_jeans" - "hqd_luxury" - "hqd_mix" - "hqd_night_dry" - "hqd_outdoor" - "hqd_precious_cure" - "hqd_quick_20" - "hqd_quick_30" - "hqd_quick_dry" - "hqd_quilt" - "hqd_refresh" - "hqd_school_uniform" - "hqd_shirt" - "hqd_shoes" - "hqd_silk" - "hqd_sports" - "hqd_synthetics" - "hqd_timer" - "hqd_towel" - "hqd_underwear" - "hqd_warm_up" - "hqd_wool" - "hqd_working_suit" -] - PROGRAMS_TD = [ "active_dry", "allergy_care", diff --git a/custom_components/hon/hon.py b/custom_components/hon/hon.py index 762bf43..a446fb8 100644 --- a/custom_components/hon/hon.py +++ b/custom_components/hon/hon.py @@ -1,11 +1,10 @@ import logging from datetime import timedelta -from pyhon.appliance import HonAppliance - from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.update_coordinator import CoordinatorEntity from homeassistant.helpers.update_coordinator import DataUpdateCoordinator +from pyhon.appliance import HonAppliance from .const import DOMAIN diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index 2aed8b3..2942a53 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -1,10 +1,5 @@ from __future__ import annotations -from pyhon import Hon -from pyhon.parameter.base import HonParameter -from pyhon.parameter.fixed import HonParameterFixed -from pyhon.parameter.range import HonParameterRange - from homeassistant.components.number import ( NumberEntity, NumberEntityDescription, @@ -13,6 +8,10 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.const import UnitOfTime, UnitOfTemperature from homeassistant.core import callback from homeassistant.helpers.entity import EntityCategory +from pyhon import Hon +from pyhon.parameter.base import HonParameter +from pyhon.parameter.fixed import HonParameterFixed +from pyhon.parameter.range import HonParameterRange from .const import DOMAIN from .hon import HonEntity, HonCoordinator, unique_entities diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index 0f65bc9..e743760 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -1,17 +1,15 @@ from __future__ import annotations import logging -import time - -from pyhon import Hon -from pyhon.appliance import HonAppliance -from pyhon.parameter.fixed import HonParameterFixed from homeassistant.components.select import SelectEntity, SelectEntityDescription from homeassistant.config_entries import ConfigEntry from homeassistant.const import UnitOfTemperature, UnitOfTime, REVOLUTIONS_PER_MINUTE from homeassistant.core import callback from homeassistant.helpers.entity import EntityCategory +from pyhon import Hon +from pyhon.appliance import HonAppliance +from pyhon.parameter.fixed import HonParameterFixed from .const import DOMAIN from .hon import HonEntity, HonCoordinator, unique_entities @@ -105,6 +103,14 @@ SELECTS = { translation_key="eco_pilot", ), ), + "REF": ( + SelectEntityDescription( + key="startProgram.program", + name="Program", + entity_category=EntityCategory.CONFIG, + translation_key="programs_ref", + ), + ), } SELECTS["WD"] = unique_entities(SELECTS["WM"], SELECTS["TD"]) diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 79b0648..62bc1a4 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -1,7 +1,5 @@ import logging -from pyhon import Hon - from homeassistant.components.sensor import ( SensorEntity, SensorDeviceClass, @@ -9,6 +7,7 @@ from homeassistant.components.sensor import ( SensorEntityDescription, ) from homeassistant.config_entries import ConfigEntry +from homeassistant.const import PERCENTAGE from homeassistant.const import ( REVOLUTIONS_PER_MINUTE, UnitOfEnergy, @@ -21,7 +20,7 @@ from homeassistant.const import ( from homeassistant.core import callback from homeassistant.helpers.entity import EntityCategory from homeassistant.helpers.typing import StateType -from homeassistant.const import PERCENTAGE +from pyhon import Hon from . import const from .const import DOMAIN @@ -400,6 +399,26 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { options=list(const.DISHWASHER_PR_PHASE), ), ), + "REF": ( + SensorEntityDescription( + key="humidityEnv", + name="Room Humidity", + icon="mdi:water-percent", + device_class=SensorDeviceClass.HUMIDITY, + native_unit_of_measurement=PERCENTAGE, + state_class=SensorStateClass.MEASUREMENT, + translation_key="humidity", + ), + SensorEntityDescription( + key="tempEnv", + name="Room Temperature", + icon="mdi:thermometer", + state_class=SensorStateClass.MEASUREMENT, + device_class=SensorDeviceClass.TEMPERATURE, + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + translation_key="room_temperature", + ), + ), } SENSORS["WD"] = unique_entities(SENSORS["WM"], SENSORS["TD"]) diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index b802992..b2e7522 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -307,6 +307,12 @@ "xxl_load": "XXL náplň", "zoom_59": "Zoom 59" } + }, + "room_temperature": { + "name": "Pokojová teplota" + }, + "humidity": { + "name": "Vlhkost" } }, "select": { @@ -1013,6 +1019,28 @@ "iot_uv_and_fan": "UV + ventilátor", "iot_uv_and_heat": "UV + ohřev" } + }, + "programs_ref": { + "state": { + "auto_set": "AUTOMATICKÉ NASTAVENÍ", + "cheese": "Sýr", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Režim Eco", + "fruits_and_veg": "Fruit&Veg", + "fruit_and_veg": "Fruit & Veg", + "holiday": "DOVOLENÁ", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Není vybrán žádný režim", + "quick_cool": "QUICK COOL", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER CHLAZENÍ", + "super_freeze": "SUPER MRAZENÍ", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1220,6 +1248,11 @@ "induction_hob": { "name": "Indukční varná deska" } + }, + "climate": { + "air_conditioner": { + "name": "Klimatizační jednotka" + } } }, "config": { diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index ab7fcee..38539b8 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -307,6 +307,12 @@ "xxl_load": "XXL-Beladung", "zoom_59": "Zoom 59" } + }, + "room_temperature": { + "name": "Raumtemperatur" + }, + "humidity": { + "name": "Luftfeuchtigkeit" } }, "select": { @@ -1013,6 +1019,28 @@ "iot_uv_and_fan": "UV + Gebläse", "iot_uv_and_heat": "UV + Heizen" } + }, + "programs_ref": { + "state": { + "auto_set": "AUTOMATISCHE EINSTELLUNG", + "cheese": "Käse", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Eco-Modus", + "fruits_and_veg": "Obst und Genüse", + "fruit_and_veg": "Fruit & Veg", + "holiday": "URLAUBSFUNKTION", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Kein Modus ausgewählt", + "quick_cool": "SCHNELLKÜHLUNG", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1220,6 +1248,11 @@ "induction_hob": { "name": "Induktionskochfeld" } + }, + "climate": { + "air_conditioner": { + "name": "Klimaanlage" + } } }, "config": { diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index e79c1a6..ed35e25 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -307,6 +307,12 @@ "xxl_load": "XXL Φορτιο", "zoom_59": "Zoom 59" } + }, + "room_temperature": { + "name": "Θερμοκρασία δωματίου" + }, + "humidity": { + "name": "Υγρασία" } }, "select": { @@ -1013,6 +1019,28 @@ "iot_uv_and_fan": "UV + Ανεμιστήρας", "iot_uv_and_heat": "UV + Θέρμανση" } + }, + "programs_ref": { + "state": { + "auto_set": "ΑΥΤΌΜΑΤΗ ΡΎΘΜΙΣΗ", + "cheese": "Τυρί", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Λειτουργία Eco", + "fruits_and_veg": "ΦΡΟΥΤΑ & ΛΑΧΑΝΙΚΑ", + "fruit_and_veg": "Fruit & Veg", + "holiday": "Ρυθμίστε το ψυγείο στους 17°C και διατηρήστε την κατάψυξη σε λειτουργία για μεγάλο χρονικό διάστημα.", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Δεν επιλέχθηκε λειτουργία", + "quick_cool": "ΓΡΗΓΟΡΗ ΨΥΞΗ", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1220,6 +1248,11 @@ "induction_hob": { "name": "Επαγωγική εστία" } + }, + "climate": { + "air_conditioner": { + "name": "Κλιματιστικό" + } } }, "config": { diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index c08e540..6bdb794 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -366,6 +366,12 @@ "xxl_load": "XXL Load", "zoom_59": "Zoom 59" } + }, + "room_temperature": { + "name": "Room temperature" + }, + "humidity": { + "name": "Humidity" } }, "switch": { @@ -1172,6 +1178,29 @@ "iot_uv_and_fan": "UV + Fan", "iot_uv_and_heat": "UV + Heat" } + }, + "programs_ref": { + "state": { + "auto_set": "AUTO-SET", + "cheese": "Cheese", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Eco mode", + "fruits_and_veg": "Fruit&Veg", + "fruit_and_veg": "Fruit&Veg", + "holiday": "HOLIDAY", + "keep_fresh": "0° Fresh", + "no_mode_selected": "No mode selected", + "quick_cool": "QUICK COOL", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "soft_frozen\n": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "binary_sensor": { @@ -1287,6 +1316,11 @@ "induction_hob": { "name": "Induction Hob" } + }, + "climate": { + "air_conditioner": { + "name": "Air conditioner" + } } } } \ No newline at end of file diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index 990ffbd..22c4e1d 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -307,6 +307,12 @@ "xxl_load": "Carga XXL", "zoom_59": "Zoom 59" } + }, + "room_temperature": { + "name": "Temperatura ambiente" + }, + "humidity": { + "name": "Humedad" } }, "select": { @@ -1013,6 +1019,28 @@ "iot_uv_and_fan": "UV + Ventilador", "iot_uv_and_heat": "UV + Calor" } + }, + "programs_ref": { + "state": { + "auto_set": "AJUSTE AUTOMÁTICO", + "cheese": "Queso", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Modo Eco", + "fruits_and_veg": "Frutas Y Verduras", + "fruit_and_veg": "Frutas Y Verduras", + "holiday": "VACACIONES", + "keep_fresh": "0° Fresh", + "no_mode_selected": "No se ha seleccionado ningún modo", + "quick_cool": "QUICK COOL", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1220,6 +1248,11 @@ "induction_hob": { "name": "Placa de inducción" } + }, + "climate": { + "air_conditioner": { + "name": "Aire acondicionado" + } } }, "config": { diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index 21c7d10..468ce20 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -307,6 +307,12 @@ "xxl_load": "Charge XXL", "zoom_59": "Zoom 59" } + }, + "room_temperature": { + "name": "Température ambiante" + }, + "humidity": { + "name": "Humidité" } }, "select": { @@ -1013,6 +1019,28 @@ "iot_uv_and_fan": "UV + ventilateur", "iot_uv_and_heat": "UV + Chaleur" } + }, + "programs_ref": { + "state": { + "auto_set": "AUTO-SET", + "cheese": "Fromage", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Mode Eco", + "fruits_and_veg": "Fruit&Veg", + "fruit_and_veg": "Fruit & Veg", + "holiday": "HOLIDAY", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Aucun mode sélectionné", + "quick_cool": "QUICK COOL", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1220,6 +1248,11 @@ "induction_hob": { "name": "Table de cuisson à induction" } + }, + "climate": { + "air_conditioner": { + "name": "Climatiseur" + } } }, "config": { diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index fda7b1d..742ff8f 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -188,6 +188,12 @@ "hqd_working_suit": "Working suit", "iot_dry_synthetic_dry": "סינתטי יבש" } + }, + "room_temperature": { + "name": "Room temperature" + }, + "humidity": { + "name": "Humidity" } }, "select": { @@ -477,6 +483,17 @@ "state": { "iot_simple_start": "התחל עכשיו" } + }, + "programs_ref": { + "state": { + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "fruit_and_veg": "Fruit & Veg", + "keep_fresh": "0° Fresh", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "tea": "Cold drinks or Beverages" + } } }, "switch": { @@ -684,6 +701,11 @@ "induction_hob": { "name": "Induction Hob" } + }, + "climate": { + "air_conditioner": { + "name": "Air conditioner" + } } }, "config": { diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index f53749c..55d72b2 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -307,6 +307,12 @@ "xxl_load": "XXL kapacitet", "zoom_59": "Zoom 59" } + }, + "room_temperature": { + "name": "Sobna temperatura" + }, + "humidity": { + "name": "Vlažnost" } }, "select": { @@ -1013,6 +1019,28 @@ "iot_uv_and_fan": "UV + ventilator", "iot_uv_and_heat": "UV + grijanje" } + }, + "programs_ref": { + "state": { + "auto_set": "AUTOMATSKA POSTAVKA", + "cheese": "Sir", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Način rada Eco", + "fruits_and_veg": "Voće i Povrće", + "fruit_and_veg": "Fruit & Veg", + "holiday": "ODMOR", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Nije odabran način rada", + "quick_cool": "BRZO HLAĐENJE", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER HLAĐENJE", + "super_freeze": "SUPER ZAMRZAVANJE", + "tea": "Hladna pića i napitci", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1220,6 +1248,11 @@ "induction_hob": { "name": "Indukcijska ploča za kuhanje" } + }, + "climate": { + "air_conditioner": { + "name": "Klimatizacijski uređaj" + } } }, "config": { diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index 5afa329..5103d9c 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -359,6 +359,12 @@ "xxl_load": "Carico XXL", "zoom_59": "Zoom 59" } + }, + "room_temperature": { + "name": "Temperatura ambiente" + }, + "humidity": { + "name": "Umidità" } }, "select": { @@ -1065,6 +1071,28 @@ "iot_uv_and_fan": "UV + Ventola", "iot_uv_and_heat": "UV + Caldo" } + }, + "programs_ref": { + "state": { + "auto_set": "AUTO-SET", + "cheese": "Formaggio", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Modalità Eco", + "fruits_and_veg": "Fruit&Veg", + "fruit_and_veg": "Fruit & Veg", + "holiday": "HOLIDAY", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Nessuna modalità selezionata", + "quick_cool": " QUICK COOL", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1272,6 +1300,11 @@ "induction_hob": { "name": "Piano cottura a induzione" } + }, + "climate": { + "air_conditioner": { + "name": "Condizionatore" + } } } } \ No newline at end of file diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index f0bd7cb..66c5455 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -307,6 +307,12 @@ "xxl_load": "XXL Lading", "zoom_59": "Zoom 59" } + }, + "room_temperature": { + "name": "Omgevingstemperatuur" + }, + "humidity": { + "name": "Luchtvochtigheid" } }, "select": { @@ -1013,6 +1019,28 @@ "iot_uv_and_fan": "UV + Hetelucht", "iot_uv_and_heat": "UV + Warmte" } + }, + "programs_ref": { + "state": { + "auto_set": "AUTO-SET", + "cheese": "Kaas", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Eco-modus", + "fruits_and_veg": "Fruit&Veg", + "fruit_and_veg": "Fruit & Veg", + "holiday": "HOLIDAY", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Geen modus geselecteerd", + "quick_cool": "QUICK KOEL", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1220,6 +1248,11 @@ "induction_hob": { "name": "Inductiekookplaat" } + }, + "climate": { + "air_conditioner": { + "name": "Airconditioner" + } } }, "config": { diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index 0795ddd..6f8a19b 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -307,6 +307,12 @@ "xxl_load": "XXL Load", "zoom_59": "Zoom 59" } + }, + "room_temperature": { + "name": "Temperatura pokojowa" + }, + "humidity": { + "name": "Wilgotność" } }, "select": { @@ -1013,6 +1019,28 @@ "iot_uv_and_fan": "UV + wentylator", "iot_uv_and_heat": "UV + podgrzewanie" } + }, + "programs_ref": { + "state": { + "auto_set": "AUTO-SET", + "cheese": "Ser", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Tryb Eco", + "fruits_and_veg": "Fruit&Veg", + "fruit_and_veg": "Fruit & Veg", + "holiday": "HOLIDAY", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Nie wybrano żadnego trybu", + "quick_cool": "QUICK COOL", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1220,6 +1248,11 @@ "induction_hob": { "name": "Płyta indukcyjna" } + }, + "climate": { + "air_conditioner": { + "name": "Klimatyzator" + } } }, "config": { diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index 29c3af0..df61677 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -307,6 +307,12 @@ "xxl_load": "Carga XXL", "zoom_59": "Zoom 59" } + }, + "room_temperature": { + "name": "Temperatura ambiente" + }, + "humidity": { + "name": "Humidade" } }, "select": { @@ -1013,6 +1019,28 @@ "iot_uv_and_fan": "UV + Ventilação", "iot_uv_and_heat": "UV + Calor" } + }, + "programs_ref": { + "state": { + "auto_set": "AUTO-SET", + "cheese": "Queijo", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Modo Eco", + "fruits_and_veg": "Fruit&Veg", + "fruit_and_veg": "Fruit & Veg", + "holiday": "HOLIDAY", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Nenhum modo selecionado", + "quick_cool": "QUICK COOL", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1220,6 +1248,11 @@ "induction_hob": { "name": "Placa de indução" } + }, + "climate": { + "air_conditioner": { + "name": "Ar Condicionado" + } } }, "config": { diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index 2f5f788..18d5b3a 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -307,6 +307,12 @@ "xxl_load": "Încărcare XXL", "zoom_59": "Zoom 59" } + }, + "room_temperature": { + "name": "Temperatura camerei" + }, + "humidity": { + "name": "Umiditate" } }, "select": { @@ -1013,6 +1019,28 @@ "iot_uv_and_fan": "UV + ventilator", "iot_uv_and_heat": "UV + încălzire" } + }, + "programs_ref": { + "state": { + "auto_set": "AUTO-SET (Setare automată)", + "cheese": "Brânză", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Modul Eco", + "fruits_and_veg": "Fruit&Veg (Fructe și legume)", + "fruit_and_veg": "Fruit & Veg", + "holiday": "HOLIDAY (Perioadă de neutilizare)", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Niciun mod selectat", + "quick_cool": "QUICK COOL", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL (Răcire rapidă)", + "super_freeze": "SUPER FREEZE (Congelare rapidă)", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1220,6 +1248,11 @@ "induction_hob": { "name": "Plita cu inducție" } + }, + "climate": { + "air_conditioner": { + "name": "Aer condiționat" + } } }, "config": { diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index 9313961..faa5767 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -307,6 +307,12 @@ "xxl_load": "Объемные вещи", "zoom_59": "Zoom 59 (Зум 59)" } + }, + "room_temperature": { + "name": "Комнатная температура" + }, + "humidity": { + "name": "Влажность" } }, "select": { @@ -1013,6 +1019,28 @@ "iot_uv_and_fan": "УФ + Вентилятор", "iot_uv_and_heat": "УФ + Нагрев" } + }, + "programs_ref": { + "state": { + "auto_set": "АВТОМАТИЧЕСКАЯ НАСТРОЙКА", + "cheese": "Сыр", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Режим Eco", + "fruits_and_veg": "Фрукты и овощи", + "fruit_and_veg": "Fruit & Veg", + "holiday": "HOLIDAY", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Режим не выбран", + "quick_cool": " БЫСТРОЕ ОХЛАЖДЕНИЕ", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1220,6 +1248,11 @@ "induction_hob": { "name": "Индукционная варочная панель" } + }, + "climate": { + "air_conditioner": { + "name": "Кондиционер воздуха" + } } }, "config": { diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index 638d0be..cfc4520 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -307,6 +307,12 @@ "xxl_load": "XXL náplň", "zoom_59": "Zoom 59" } + }, + "room_temperature": { + "name": "Izbová teplota" + }, + "humidity": { + "name": "Vlhkosť" } }, "select": { @@ -1013,6 +1019,28 @@ "iot_uv_and_fan": "UV + Ventilátor", "iot_uv_and_heat": "UV + Ohrev" } + }, + "programs_ref": { + "state": { + "auto_set": "AUTOMATICKÉ NASTAVENIE", + "cheese": "Syr", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Režim Eco", + "fruits_and_veg": "Fruit&Veg", + "fruit_and_veg": "Fruit & Veg", + "holiday": "DOVOLENKA", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Nie je vybraný žiadny režim", + "quick_cool": "QUICK COOL", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER CHLADENIE", + "super_freeze": "SUPER MRAZENIE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1220,6 +1248,11 @@ "induction_hob": { "name": "Indukčná varná doska" } + }, + "climate": { + "air_conditioner": { + "name": "Klimatizácia" + } } }, "config": { diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index 53af0a8..15983be 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -307,6 +307,12 @@ "xxl_load": "Zelo veliki kosi perila", "zoom_59": "Zoom 59" } + }, + "room_temperature": { + "name": "Sobna temperatura" + }, + "humidity": { + "name": "Vlaga " } }, "select": { @@ -1013,6 +1019,28 @@ "iot_uv_and_fan": "UV + ventilator", "iot_uv_and_heat": "UV + gretje" } + }, + "programs_ref": { + "state": { + "auto_set": "SAMODEJNA NASTAVITEV", + "cheese": "Sir", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Način Eco", + "fruits_and_veg": "Sadje In Zelenjava", + "fruit_and_veg": "Sadje in zelenjava", + "holiday": "POČITNICE", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Izbran ni noben način", + "quick_cool": " HITRO HLAJENJE", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER HLAJENJE", + "super_freeze": "SUPER ZAMRZOVANJE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1220,6 +1248,11 @@ "induction_hob": { "name": "Indukcijska kuhalna plošča" } + }, + "climate": { + "air_conditioner": { + "name": "Klimatska naprava" + } } }, "config": { diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index bf8c93d..d96ab97 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -307,6 +307,12 @@ "xxl_load": "XXL veš", "zoom_59": "Zoom 59" } + }, + "room_temperature": { + "name": "Sobna temperatura" + }, + "humidity": { + "name": "Vlažnost" } }, "select": { @@ -1013,6 +1019,28 @@ "iot_uv_and_fan": "UV + ventilator", "iot_uv_and_heat": "UV + toplota" } + }, + "programs_ref": { + "state": { + "auto_set": "AUTOMATSKO PODEŠAVANJE", + "cheese": "Sir", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Eco režim", + "fruits_and_veg": "Voće i Povrće", + "fruit_and_veg": "Fruit & Veg", + "holiday": "ODMOR", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Nije izabran nijedan režim", + "quick_cool": "BRZO HLAĐENJE", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER HLAĐENJE", + "super_freeze": "SUPER ZAMRZAVANJE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1220,6 +1248,11 @@ "induction_hob": { "name": "Indukciona ploča" } + }, + "climate": { + "air_conditioner": { + "name": "Klima uređaj" + } } }, "config": { diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index 4a3d539..3670fdb 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -307,6 +307,12 @@ "xxl_load": "XXL Çamaşır", "zoom_59": "Yakınlaştır 59" } + }, + "room_temperature": { + "name": "Oda sıcaklığı" + }, + "humidity": { + "name": "Nem" } }, "select": { @@ -1013,6 +1019,28 @@ "iot_uv_and_fan": "UV + Fan", "iot_uv_and_heat": "UV + Isıtma" } + }, + "programs_ref": { + "state": { + "auto_set": "OTOMATİK AYAR", + "cheese": "Peynir", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Eco modu", + "fruits_and_veg": "Meyve Ve Sebze", + "fruit_and_veg": "Fruit & Veg", + "holiday": "TATİL ", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Hiç mod seçilmedi", + "quick_cool": "HIZLI SOĞUTMA", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1220,6 +1248,11 @@ "induction_hob": { "name": "İndüksiyonlu Ocak" } + }, + "climate": { + "air_conditioner": { + "name": "Klima" + } } }, "config": { diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index 4b23f1c..3357bfb 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -307,6 +307,12 @@ "xxl_load": "XXL Load", "zoom_59": "缩放 59" } + }, + "room_temperature": { + "name": "室温" + }, + "humidity": { + "name": "湿度" } }, "select": { @@ -1013,6 +1019,28 @@ "iot_uv_and_fan": "UV + 风扇", "iot_uv_and_heat": "UV + 加热" } + }, + "programs_ref": { + "state": { + "auto_set": "AUTO-SET(自动设置)", + "cheese": "奶酪", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Eco 模式", + "fruits_and_veg": "Fruit&Veg(水果和蔬菜)", + "fruit_and_veg": "Fruit & Veg", + "holiday": "HOLIDAY(假日模式)", + "keep_fresh": "0° Fresh", + "no_mode_selected": "未选择模式", + "quick_cool": "QUICK COOL(快速冷却)", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL(超级冷却)", + "super_freeze": "SUPER FREEZE(超级冷冻)", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1220,6 +1248,11 @@ "induction_hob": { "name": "电磁炉" } + }, + "climate": { + "air_conditioner": { + "name": "空调" + } } }, "config": { diff --git a/info.md b/info.md index afeb914..b3e62a4 100644 --- a/info.md +++ b/info.md @@ -12,6 +12,7 @@ Support for home appliances of Haier's mobile app hOn. - [Hob](https://github.com/Andre0512/hon#hob) - [Dish Washer](https://github.com/Andre0512/hon#dish-washer) - [Air conditioner](https://github.com/Andre0512/hon#air-conditioner) [BETA] +- [Fridge](https://github.com/Andre0512/hon#fridge) [BETA] ## Configuration @@ -21,15 +22,29 @@ Support for home appliances of Haier's mobile app hOn. _If the integration is not in the list, you need to clear the browser cache._ ## Supported Models -Support was confirmed for these models. If a supported model is missing, please [add it with this form](https://forms.gle/bTSD8qFotdZFytbf8). -- Haier WD90-B14TEAM5 +Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +- Haier EG9012B19SU1JD - Haier HD80-A3959 +- Haier HW90-B14TEAM5 +- Haier HWD100-B14979 - Haier HWO60SM2F3XH -- Hoover H-WASH 500 -- Candy CIS633SCTTWIFI - Haier XIB 3B2SFS-80 - Haier XIB 6B2D3FB +- Candy CIS633SCTTWIFI +- Candy CSOE C10DE-80 +- Candy ROE H9A3TCEX-S +- Candy RPW41066BWMR/1-S +- Hoover H-WASH 500 +- Hoover H-DRY 500 +- Hoover H7W4 48MBC-S +- Hoover H9A3TCBEXS-S +- Hoover HFB 6B2S3FX +- Hoover HLE C10DCE-80 - Hoover HSOT3161WG +- Hoover HWPD 69AMBC/1-S +- Hoover NDE H10A2TCE-80 +- Hoover NDPHY10A2TCBEXSS + ## Supported Languages Translation of internal names like programs are available for all languages which are official supported by the hOn app: diff --git a/scripts/generate_translation.py b/scripts/generate_translation.py index 83ce67b..5cfbffa 100755 --- a/scripts/generate_translation.py +++ b/scripts/generate_translation.py @@ -36,6 +36,7 @@ PROGRAMS = { "programs_ov": "PROGRAMS.OV", "programs_td": "PROGRAMS.TD", "programs_wm": "PROGRAMS.WM_WD", + "programs_ref": "PROGRAMS.REF", }, "sensor": { "programs_td": "PROGRAMS.TD", @@ -134,6 +135,8 @@ NAMES = { "det_liquid": "HUBS.WIDGET.STAINS_WIDGET.STAINS.SUGGESTED_DET_LIQUID", "errors": "ROBOT_CMD&CTRL.PHASE_ERROR.TITLE", "programs": "OV.TABS.CURRENT_PROGRAM", + "room_temperature": "REF.SMART_DRINK_ASSISTANT.AMBIENT", + "humidity": "AP.TITLES.HUMIDITY", "cycles_total": [ "WASHING_CMD&CTRL.GENERAL.CYCLES", "WC.VIRTUAL_WINE_STATS_COUNTRY.TOTAL", @@ -167,6 +170,7 @@ NAMES = { "dry_time": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_TIME", "steam_level": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.STEAM_LEVEL", }, + "climate": {"air_conditioner": "GLOBALS.APPLIANCES_NAME.AC"}, } diff --git a/scripts/sensor_docs.py b/scripts/sensor_docs.py index 2c125f8..6514edd 100755 --- a/scripts/sensor_docs.py +++ b/scripts/sensor_docs.py @@ -4,11 +4,13 @@ import re import sys from pathlib import Path + if __name__ == "__main__": sys.path.insert(0, str(Path(__file__).parent.parent)) from custom_components.hon.binary_sensor import BINARY_SENSORS from custom_components.hon.button import BUTTONS +from custom_components.hon.climate import CLIMATES from custom_components.hon.number import NUMBERS from custom_components.hon.select import SELECTS from custom_components.hon.sensor import SENSORS @@ -41,6 +43,7 @@ entities = { "select": SELECTS, "sensor": SENSORS, "switch": SWITCHES, + "climate": CLIMATES, } result = {} @@ -55,7 +58,11 @@ for entity_type, appliances in entities.items(): else: key = entity.key attributes = (key, entity.name, entity.icon, entity_type) - category = "control" if entity_type in ["switch", "button"] else "sensor" + category = ( + "control" + if entity_type in ["switch", "button", "climate"] + else "sensor" + ) result.setdefault(appliance, {}).setdefault( entity.entity_category or category, [] ).append(attributes) -- 2.39.5 From aefe2cf88d489503d873949fe8dbc10b262b31d9 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Thu, 11 May 2023 23:59:01 +0200 Subject: [PATCH 093/205] Add supported models --- README.md | 91 +++++++++++++++----------------- assets/washing_machine.png | Bin 0 -> 206913 bytes custom_components/hon/button.py | 9 +++- info.md | 57 +++++++++++--------- 4 files changed, 83 insertions(+), 74 deletions(-) create mode 100644 assets/washing_machine.png diff --git a/README.md b/README.md index 4bce269..5104554 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,18 @@ # Haier hOn [![hacs_badge](https://img.shields.io/badge/HACS-Default-41BDF5.svg)](https://hacs.xyz) [![GitHub release (latest by date)](https://img.shields.io/github/v/release/Andre0512/hon?color=green)](https://github.com/Andre0512/hon/releases/latest) +[![PyPI](https://img.shields.io/pypi/v/pyhon?label=pyhOn)](https://github.com/Andre0512/pyhOn) [![GitHub](https://img.shields.io/github/license/Andre0512/hon?color=red)](https://github.com/Andre0512/hon/blob/main/LICENSE) [![GitHub all releases](https://img.shields.io/github/downloads/Andre0512/hon/total?color=blue)](https://tooomm.github.io/github-release-stats/?username=Andre0512&repository=hon) -Home Assistant integration for Haier hOn: support for Haier/Candy/Hoover home appliances like washing machines. +Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.com/). ## Supported Appliances - [Washing Machine](https://github.com/Andre0512/hon#washing-machine) - [Tumble Dryer](https://github.com/Andre0512/hon#tumble-dryer) - [Washer Dryer](https://github.com/Andre0512/hon#washer-dryer) - [Oven](https://github.com/Andre0512/hon#oven) -- [Hob](https://github.com/Andre0512/hon#hob) - [Dish Washer](https://github.com/Andre0512/hon#dish-washer) +- [Hob](https://github.com/Andre0512/hon#hob) [BETA] - [Air conditioner](https://github.com/Andre0512/hon#air-conditioner) [BETA] - [Fridge](https://github.com/Andre0512/hon#fridge) [BETA] @@ -31,31 +32,6 @@ _Restart Home Assistant_ **Method 2**: Settings > Devices & Services > Add Integration > **Haier hOn** _If the integration is not in the list, you need to clear the browser cache._ - -## Supported Models -Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). -- Haier EG9012B19SU1JD -- Haier HD80-A3959 -- Haier HW90-B14TEAM5 -- Haier HWD100-B14979 -- Haier HWO60SM2F3XH -- Haier XIB 3B2SFS-80 -- Haier XIB 6B2D3FB -- Candy CIS633SCTTWIFI -- Candy CSOE C10DE-80 -- Candy ROE H9A3TCEX-S -- Candy RPW41066BWMR/1-S -- Hoover H-WASH 500 -- Hoover H-DRY 500 -- Hoover H7W4 48MBC-S -- Hoover H9A3TCBEXS-S -- Hoover HFB 6B2S3FX -- Hoover HLE C10DCE-80 -- Hoover HSOT3161WG -- Hoover HWPD 69AMBC/1-S -- Hoover NDE H10A2TCE-80 -- Hoover NDPHY10A2TCBEXSS - ## Supported Languages Translation of internal names like programs are available for all languages which are official supported by the hOn app: * 🇨🇳 Chinese @@ -78,26 +54,47 @@ Translation of internal names like programs are available for all languages whic * 🇪🇸 Spanish * 🇹🇷 Turkish +## Examples +### Washing Machine +![washing_machine.png](assets/washing_machine.png) + +## Supported Models +Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +- Haier AS25PBAHRA +- Haier EG9012B19SU1JD +- Haier HD80-A3959 +- Haier HW90-B14TEAM5 +- Haier HW100-B14959U1 +- Haier HWD100-B14979 +- Haier HWO60SM2F3XH +- Haier XIB 3B2SFS-80 +- Haier XIB 6B2D3FB +- Candy CIS633SCTTWIFI +- Candy CSOE C10DE-80 +- Candy ROE H9A3TCEX-S +- Candy RPW41066BWMR/1-S +- Hoover H-WASH 500 +- Hoover H-DRY 500 +- Hoover H7W4 48MBC-S +- Hoover H9A3TCBEXS-S +- Hoover HFB 6B2S3FX +- Hoover HLE C10DCE-80 +- Hoover HSOT3161WG +- Hoover HWPD 69AMBC/1-S +- Hoover HWPS4954DAMR-11 +- Hoover NDE H10A2TCE-80 +- Hoover NDE H9A2TSBEXS-S +- Hoover NDPHY10A2TCBEXSS + ## Contribute Any kind of contribution is welcome! ### Read out device data If you want to make a request for adding new appliances or additional attributes and don't want to use the command line, here is how you can read out your device data. -For every device exists a hidden button which can be used to log all info of your appliance. -1. Enable the "Log Device Info" button +For every device exists a hidden button which can be used to log all infos of your appliance. +1. Enable the "Show Device Info" button _This button can be found in the diagnostic section of your device or in the entity overview if "show disabled entities" is enabled._ -2. Press the button -3. Go to Settings > System > Logs, click _load full logs_ and scroll down - _The formatting is messy if you not load full logs_ -4. Here you can find all data which can be read out via the api - ```yaml - data: - appliance: - applianceId: 12-34-56-78-90-ab#2022-10-25T19:47:11Z - applianceModelId: 1569 - ... - ``` -5. Copy this data and create a [new issue](https://github.com/Andre0512/hon/issues/new) with your request - +2. Press the button to create a notification +3. Open home assistant notifications and copy the message (Crtl+A, Ctrl+C) ### Add appliances or additional attributes 1. Install [pyhOn](https://github.com/Andre0512/pyhOn) ```commandline @@ -142,13 +139,13 @@ For every device exists a hidden button which can be used to log all info of you - If you need to implement some more logic, create a pull request to the underlying library. There we collect special requirements in the `appliances` directory. - Use [pyhOn's translate command](https://github.com/Andre0512/pyhOn#translation) to read out the official translations -## About this Repo -The existing integrations missed some features from the app I liked to have in HomeAssistant. -I tried to create a pull request, but in the structures of these existing repos, I find it hard to fit in my needs, so I basically rewrote everything. -I moved the api related stuff into the package [pyhOn](https://github.com/Andre0512/pyhOn). +## Special Thanks +- to [@alexandre-leites](https://github.com/alexandre-leites), [@MiguelAngelLV](https://github.com/MiguelAngelLV) and [@drudgebg](https://github.com/drudgebg) for contributing early to this project and adding new integrations. +- to [gvigroux/hon](https://github.com/gvigroux/hon), [signalize/hon-app-research](https://github.com/signalize/hon-app-research) and [slegars56/hon](https://github.com/slegars56/hon) for inspiring me to do this integration and for doing pioneer work on the hOn api. +- to everyone who contributed, created an issue, gave this repo a star, and used this integration. +- to the patience of my girlfriend as I work on this integration. ## Appliance Features - ### Air conditioner #### Controls | Name | Icon | Entity | Key | diff --git a/assets/washing_machine.png b/assets/washing_machine.png new file mode 100644 index 0000000000000000000000000000000000000000..845773ceb188eff94b93b9b92db7bb9db6b1753c GIT binary patch literal 206913 zcmeFZhdb8)`#yfFG?X+*$!J(16fz2xN=C>gqZG=@mf55zDJt27?7epxNtEnOR>o~a z_WYjDUZ3xAeE)*q@%tUWujBoGCEf1(`FuPc*L9uOd7jtPQ%OOZnu>vnL?ThkT)v=8 zB5j%@k+yJc-He~iz9PTEADe8>%cyR}m&?{$&q$<0B$*56RPP0kbvXum&#tde4b=pA zzYo#kzaa50UE>|?)x)MP+Pm)1)3M0Bp7TAWEXx}4#4Lj6sNB`;TX%R2Sza74y1_5- zE?{xBS9s`ji>UG3V6f?#iJXqkV6toS{H$A8^$SNw-N}maudj~=G$m-z;~I#szm^X6 zTmJi&M9b(Y{@=Hso?ITI`0rcx3kEd*eaC-zkMn=uJ=pfTb>n~E%0DY-{_nf%=UH)= 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

dstuBe*+Yi+zSh&NZnX`Ib6TmV||{#w@XK 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%0Av|GWCxz8Gfwy0pB^8ur<1W3#{& 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 literal 0 HcmV?d00001 diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index 5dd5269..1d4e85f 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -1,6 +1,8 @@ import logging import pkg_resources + +from homeassistant.components import persistent_notification from homeassistant.components.button import ButtonEntityDescription, ButtonEntity from homeassistant.config_entries import ConfigEntry from homeassistant.const import EntityCategory @@ -71,15 +73,18 @@ class HonButtonEntity(HonEntity, ButtonEntity): class HonFeatureRequestButton(HonEntity, ButtonEntity): def __init__(self, hass, coordinator, entry, device: HonAppliance) -> None: super().__init__(hass, entry, coordinator, device) + self._hass = hass self._device = device self._attr_unique_id = f"{super().unique_id}_log_device_info" self._attr_icon = "mdi:information" - self._attr_name = "Log Device Info" + self._attr_name = "Show Device Info" self._attr_entity_category = EntityCategory.DIAGNOSTIC self._attr_entity_registry_enabled_default = False async def async_press(self) -> None: pyhon_version = pkg_resources.get_distribution("pyhon").version info = f"Device Info:\n{self._device.diagnose()}pyhOnVersion: {pyhon_version}" - _LOGGER.error(info) + title = f"{self._device.nick_name} Device Info" + persistent_notification.create(self._hass, f"```\n```{info}```\n```", title) + _LOGGER.info(info.replace(" ", "\u200B ")) diff --git a/info.md b/info.md index b3e62a4..a1bb002 100644 --- a/info.md +++ b/info.md @@ -21,31 +21,6 @@ Support for home appliances of Haier's mobile app hOn. **Method 2**: Settings > Devices & Services > Add Integration > **Haier hOn** _If the integration is not in the list, you need to clear the browser cache._ -## Supported Models -Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). -- Haier EG9012B19SU1JD -- Haier HD80-A3959 -- Haier HW90-B14TEAM5 -- Haier HWD100-B14979 -- Haier HWO60SM2F3XH -- Haier XIB 3B2SFS-80 -- Haier XIB 6B2D3FB -- Candy CIS633SCTTWIFI -- Candy CSOE C10DE-80 -- Candy ROE H9A3TCEX-S -- Candy RPW41066BWMR/1-S -- Hoover H-WASH 500 -- Hoover H-DRY 500 -- Hoover H7W4 48MBC-S -- Hoover H9A3TCBEXS-S -- Hoover HFB 6B2S3FX -- Hoover HLE C10DCE-80 -- Hoover HSOT3161WG -- Hoover HWPD 69AMBC/1-S -- Hoover NDE H10A2TCE-80 -- Hoover NDPHY10A2TCBEXSS - - ## Supported Languages Translation of internal names like programs are available for all languages which are official supported by the hOn app: * 🇨🇳 Chinese @@ -68,6 +43,38 @@ Translation of internal names like programs are available for all languages whic * 🇪🇸 Spanish * 🇹🇷 Turkish +## Examples +### Washing Machine +![washing_machine.png](assets/washing_machine.png) + +## Supported Models +Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +- Haier AS25PBAHRA +- Haier EG9012B19SU1JD +- Haier HD80-A3959 +- Haier HW90-B14TEAM5 +- Haier HW100-B14959U1 +- Haier HWD100-B14979 +- Haier HWO60SM2F3XH +- Haier XIB 3B2SFS-80 +- Haier XIB 6B2D3FB +- Candy CIS633SCTTWIFI +- Candy CSOE C10DE-80 +- Candy ROE H9A3TCEX-S +- Candy RPW41066BWMR/1-S +- Hoover H-WASH 500 +- Hoover H-DRY 500 +- Hoover H7W4 48MBC-S +- Hoover H9A3TCBEXS-S +- Hoover HFB 6B2S3FX +- Hoover HLE C10DCE-80 +- Hoover HSOT3161WG +- Hoover HWPD 69AMBC/1-S +- Hoover HWPS4954DAMR-11 +- Hoover NDE H10A2TCE-80 +- Hoover NDE H9A2TSBEXS-S +- Hoover NDPHY10A2TCBEXSS + ## Contribute Want to help us to support more appliances? Or add more sensors? Or help with translating? Or beautify some icons or captions? Check out the [project on GitHub](https://github.com/Andre0512/hon), every contribution is welcome! -- 2.39.5 From 593d3912afd9cfe054634b43994cc2d424f95e5b Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sat, 13 May 2023 01:20:02 +0200 Subject: [PATCH 094/205] Fix wrong wm keep fresh key --- README.md | 11 +++++++---- custom_components/hon/switch.py | 13 ++++++++++--- custom_components/hon/translations/cs.json | 6 ++++++ custom_components/hon/translations/de.json | 6 ++++++ custom_components/hon/translations/el.json | 6 ++++++ custom_components/hon/translations/en.json | 6 ++++++ custom_components/hon/translations/es.json | 6 ++++++ custom_components/hon/translations/fr.json | 6 ++++++ custom_components/hon/translations/he.json | 6 ++++++ custom_components/hon/translations/hr.json | 6 ++++++ custom_components/hon/translations/it.json | 6 ++++++ custom_components/hon/translations/nl.json | 6 ++++++ custom_components/hon/translations/pl.json | 6 ++++++ custom_components/hon/translations/pt.json | 6 ++++++ custom_components/hon/translations/ro.json | 6 ++++++ custom_components/hon/translations/ru.json | 6 ++++++ custom_components/hon/translations/sk.json | 6 ++++++ custom_components/hon/translations/sl.json | 6 ++++++ custom_components/hon/translations/sr.json | 6 ++++++ custom_components/hon/translations/tr.json | 6 ++++++ custom_components/hon/translations/zh.json | 6 ++++++ scripts/generate_translation.py | 10 ++++++++-- 22 files changed, 139 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 5104554..ba27525 100644 --- a/README.md +++ b/README.md @@ -146,6 +146,7 @@ For every device exists a hidden button which can be used to log all infos of yo - to the patience of my girlfriend as I work on this integration. ## Appliance Features + ### Air conditioner #### Controls | Name | Icon | Entity | Key | @@ -311,7 +312,8 @@ For every device exists a hidden button which can be used to log all infos of yo | Acqua Plus | `water-plus` | `switch` | `startProgram.acquaplus` | | Anti-Crease | `timer` | `switch` | `startProgram.antiCreaseTime` | | Anti-Crease | `timer` | `switch` | `startProgram.anticrease` | -| Auto Dose | `cup` | `switch` | `startProgram.autoDetergentStatus` | +| Auto Dose Detergent | `cup` | `switch` | `startProgram.autoDetergentStatus` | +| Auto Dose Softener | `teddy-bear` | `switch` | `startProgram.autoSoftenerStatus` | | Delay Status | `timer-check` | `switch` | `startProgram.delayStatus` | | Delay Time | `timer-plus` | `number` | `startProgram.delayTime` | | Dry Time | | `number` | `startProgram.dryTime` | @@ -322,7 +324,7 @@ For every device exists a hidden button which can be used to log all infos of yo | Extra Rinse 2 | `numeric-2-box-multiple-outline` | `switch` | `startProgram.extraRinse2` | | Extra Rinse 3 | `numeric-3-box-multiple-outline` | `switch` | `startProgram.extraRinse3` | | Good Night | `weather-night` | `switch` | `startProgram.goodNight` | -| Keep Fresh | `refresh-circle` | `switch` | `startProgram.autoSoftenerStatus` | +| Keep Fresh | `refresh-circle` | `switch` | `startProgram.permanentPressStatus` | | Liquid Detergent Dose | `cup-water` | `sensor` | `startProgram.liquidDetergentDose` | | Main Wash Time | `clock-start` | `number` | `startProgram.mainWashTime` | | Powder Detergent Dose | `cup` | `sensor` | `startProgram.powderDetergentDose` | @@ -383,7 +385,8 @@ For every device exists a hidden button which can be used to log all infos of yo | Name | Icon | Entity | Key | | --- | --- | --- | --- | | Acqua Plus | `water-plus` | `switch` | `startProgram.acquaplus` | -| Auto Dose | `cup` | `switch` | `startProgram.autoDetergentStatus` | +| Auto Dose Detergent | `cup` | `switch` | `startProgram.autoDetergentStatus` | +| Auto Dose Softener | `teddy-bear` | `switch` | `startProgram.autoSoftenerStatus` | | Delay Status | `timer-check` | `switch` | `startProgram.delayStatus` | | Delay Time | `timer-plus` | `number` | `startProgram.delayTime` | | Energy Label | `lightning-bolt-circle` | `sensor` | `startProgram.energyLabel` | @@ -391,7 +394,7 @@ For every device exists a hidden button which can be used to log all infos of yo | Extra Rinse 2 | `numeric-2-box-multiple-outline` | `switch` | `startProgram.extraRinse2` | | Extra Rinse 3 | `numeric-3-box-multiple-outline` | `switch` | `startProgram.extraRinse3` | | Good Night | `weather-night` | `switch` | `startProgram.goodNight` | -| Keep Fresh | `refresh-circle` | `switch` | `startProgram.autoSoftenerStatus` | +| Keep Fresh | `refresh-circle` | `switch` | `startProgram.permanentPressStatus` | | Liquid Detergent Dose | `cup-water` | `sensor` | `startProgram.liquidDetergentDose` | | Main Wash Time | `clock-start` | `number` | `startProgram.mainWashTime` | | Powder Detergent Dose | `cup` | `sensor` | `startProgram.powderDetergentDose` | diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 8b7e0f5..2240491 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -61,18 +61,25 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { translation_key="prewash", ), HonSwitchEntityDescription( - key="startProgram.autoSoftenerStatus", + key="startProgram.permanentPressStatus", name="Keep Fresh", entity_category=EntityCategory.CONFIG, icon="mdi:refresh-circle", translation_key="keep_fresh", ), + HonSwitchEntityDescription( + key="startProgram.autoSoftenerStatus", + name="Auto Dose Softener", + entity_category=EntityCategory.CONFIG, + icon="mdi:teddy-bear", + translation_key="auto_dose_softener", + ), HonSwitchEntityDescription( key="startProgram.autoDetergentStatus", - name="Auto Dose", + name="Auto Dose Detergent", entity_category=EntityCategory.CONFIG, icon="mdi:cup", - translation_key="auto_dose", + translation_key="auto_dose_detergent", ), HonSwitchEntityDescription( key="startProgram.acquaplus", diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index b2e7522..1747903 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -1133,6 +1133,12 @@ }, "good_night": { "name": "Dobrou noc" + }, + "auto_dose_softener": { + "name": "Automatické dávkování Avivážní prostředek" + }, + "auto_dose_detergent": { + "name": "Automatické dávkování Prací prostředek" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index 38539b8..d2f5c3f 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -1133,6 +1133,12 @@ }, "good_night": { "name": "Gute Nacht" + }, + "auto_dose_softener": { + "name": "Autodosierung Weichspüler" + }, + "auto_dose_detergent": { + "name": "Autodosierung Spülmittel" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index ed35e25..8f7a4a9 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -1133,6 +1133,12 @@ }, "good_night": { "name": "Καληνυχτα" + }, + "auto_dose_softener": { + "name": "Αυτόματη Δοσολογία Μαλακτικό" + }, + "auto_dose_detergent": { + "name": "Αυτόματη Δοσολογία Απορρυπαντικό" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 6bdb794..e317c31 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -464,6 +464,12 @@ }, "good_night": { "name": "Good Night" + }, + "auto_dose_softener": { + "name": "Autodose Softener" + }, + "auto_dose_detergent": { + "name": "Autodose Detergent" } }, "select": { diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index 22c4e1d..e9ce449 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -1133,6 +1133,12 @@ }, "good_night": { "name": "Buenas noches" + }, + "auto_dose_softener": { + "name": "Dosificación automática Suavizante" + }, + "auto_dose_detergent": { + "name": "Dosificación automática Detergente" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index 468ce20..3aee4c1 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -1133,6 +1133,12 @@ }, "good_night": { "name": "Bonne nuit" + }, + "auto_dose_softener": { + "name": "Dose automatique Adoucissant" + }, + "auto_dose_detergent": { + "name": "Dose automatique Lessive" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index 742ff8f..99a6e01 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -586,6 +586,12 @@ }, "good_night": { "name": "לילה טוב" + }, + "auto_dose_softener": { + "name": "מינון אוטומטי מרכך" + }, + "auto_dose_detergent": { + "name": "מינון אוטומטי חומר ניקוי" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index 55d72b2..b0546a6 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -1133,6 +1133,12 @@ }, "good_night": { "name": "Good Night" + }, + "auto_dose_softener": { + "name": "Automatsko doziranje Omekšivač" + }, + "auto_dose_detergent": { + "name": "Automatsko doziranje Deterdžent" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index 5103d9c..fdaf966 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -1185,6 +1185,12 @@ }, "good_night": { "name": "Buona notte" + }, + "auto_dose_softener": { + "name": "Autodose Ammorbidente" + }, + "auto_dose_detergent": { + "name": "Autodose Detergente" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index 66c5455..4129beb 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -1133,6 +1133,12 @@ }, "good_night": { "name": "Goede nacht" + }, + "auto_dose_softener": { + "name": "Automatisch doseren Wasverzachter" + }, + "auto_dose_detergent": { + "name": "Automatisch doseren Wasmiddel" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index 6f8a19b..982e653 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -1133,6 +1133,12 @@ }, "good_night": { "name": "Dobranoc" + }, + "auto_dose_softener": { + "name": "Automatyczne dozowanie Środek zmiękczający" + }, + "auto_dose_detergent": { + "name": "Automatyczne dozowanie Detergent" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index df61677..a6853aa 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -1133,6 +1133,12 @@ }, "good_night": { "name": "Boa Noite" + }, + "auto_dose_softener": { + "name": "Autodosagem Amaciador" + }, + "auto_dose_detergent": { + "name": "Autodosagem Detergente" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index 18d5b3a..c7b49cc 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -1133,6 +1133,12 @@ }, "good_night": { "name": "Noapte bună" + }, + "auto_dose_softener": { + "name": "Autodozare Balsam" + }, + "auto_dose_detergent": { + "name": "Autodozare Detergent" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index faa5767..56d4969 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -1133,6 +1133,12 @@ }, "good_night": { "name": "Спокойной ночи" + }, + "auto_dose_softener": { + "name": "Автодозирование Кондиционер" + }, + "auto_dose_detergent": { + "name": "Автодозирование Средство для стирки" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index cfc4520..a247594 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -1133,6 +1133,12 @@ }, "good_night": { "name": "Dobrú noc" + }, + "auto_dose_softener": { + "name": "Automatická dávka Aviváž" + }, + "auto_dose_detergent": { + "name": "Automatická dávka Prací prostriedok" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index 15983be..32d0800 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -1133,6 +1133,12 @@ }, "good_night": { "name": "Lahko noč" + }, + "auto_dose_softener": { + "name": "Samodejno odmerjanje Mehčalec" + }, + "auto_dose_detergent": { + "name": "Samodejno odmerjanje Detergent" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index d96ab97..005291e 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -1133,6 +1133,12 @@ }, "good_night": { "name": "Laku noć" + }, + "auto_dose_softener": { + "name": "Automatsko doziranje Omekšivač" + }, + "auto_dose_detergent": { + "name": "Automatsko doziranje Deterdžent" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index 3670fdb..1a7ea62 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -1133,6 +1133,12 @@ }, "good_night": { "name": "İyi Geceler" + }, + "auto_dose_softener": { + "name": "Otomatik doz Yumuşatıcı" + }, + "auto_dose_detergent": { + "name": "Otomatik doz Deterjan" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index 3357bfb..2e17260 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -1133,6 +1133,12 @@ }, "good_night": { "name": "晚安" + }, + "auto_dose_softener": { + "name": "自动定量 柔软剂" + }, + "auto_dose_detergent": { + "name": "自动定量 洗涤剂" } }, "binary_sensor": { diff --git a/scripts/generate_translation.py b/scripts/generate_translation.py index 5cfbffa..4b43d08 100755 --- a/scripts/generate_translation.py +++ b/scripts/generate_translation.py @@ -73,7 +73,14 @@ NAMES = { "extra_rinse_2": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.EXTRARINSE2", "extra_rinse_3": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.EXTRARINSE3", "acqua_plus": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.ACQUAPLUS", - "auto_dose": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.AUTODOSE", + "auto_dose_softener": [ + "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.AUTODOSE", + "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.SOFTENER", + ], + "auto_dose_detergent": [ + "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.AUTODOSE", + "WASHING_CMD&CTRL.DASHBOARD_MENU_MORE_SETTINGS_WATER.DETERGENT", + ], "good_night": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.GOODNIGHT", }, "binary_sensor": { @@ -84,7 +91,6 @@ NAMES = { "good_night": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.GOODNIGHT", "anti_crease": "HDRY_CMD&CTRL.PROGRAM_CYCLE_DETAIL.ANTICREASE_TITLE", "acqua_plus": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.ACQUAPLUS", - "auto_dose": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.AUTODOSE", "spin_speed": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.SPINSPEED", "still_hot": "IH.COILS_STATUS.STILL_HOT", "pan_status": "IH.COILS_STATUS.PAN", -- 2.39.5 From 17d4d14eada45f4f1a86ef816b4168fccb04acbb Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sat, 13 May 2023 22:09:41 +0200 Subject: [PATCH 095/205] Show controls always unavailable when diconnected #43 --- custom_components/hon/button.py | 6 +++++- custom_components/hon/switch.py | 7 ++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index 1d4e85f..ce8f9d4 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -67,7 +67,11 @@ class HonButtonEntity(HonEntity, ButtonEntity): @property def available(self) -> bool: """Return True if entity is available.""" - return super().available and self._device.get("remoteCtrValid") == "1" + return ( + super().available + and self._device.get("remoteCtrValid") == "1" + and self._device.get("attributes.lastConnEvent.category") != "DISCONNECTED" + ) class HonFeatureRequestButton(HonEntity, ButtonEntity): diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 2240491..af554cc 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -410,4 +410,9 @@ class HonSwitchEntity(HonEntity, SwitchEntity): if self.entity_category == EntityCategory.CONFIG: return super().available else: - return super().available and self._device.get("remoteCtrValid") == "1" + return ( + super().available + and self._device.get("remoteCtrValid") == "1" + and self._device.get("attributes.lastConnEvent.category") + != "DISCONNECTED" + ) -- 2.39.5 From 845adc75c98337a76bf5e6156964a70d80aa1e35 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sun, 14 May 2023 03:16:21 +0200 Subject: [PATCH 096/205] Instant send settings --- custom_components/hon/number.py | 4 +++- custom_components/hon/select.py | 4 +++- custom_components/hon/switch.py | 8 ++++++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index 2942a53..55890ff 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -206,7 +206,9 @@ class HonNumberEntity(HonEntity, NumberEntity): isinstance(setting, HonParameter) or isinstance(setting, HonParameterFixed) ): setting.value = value - if self._device.appliance_type in ["AC"]: + if "settings." in self.entity_description: + self._device.commands["settings"].send() + elif self._device.appliance_type in ["AC"]: self._device.commands["startProgram"].send() await self.coordinator.async_refresh() diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index e743760..3a75fea 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -163,7 +163,9 @@ class HonSelectEntity(HonEntity, SelectEntity): async def async_select_option(self, option: str) -> None: self._device.settings[self.entity_description.key].value = option - if self._device.appliance_type in ["AC"]: + if "settings." in self.entity_description: + self._device.commands["settings"].send() + elif self._device.appliance_type in ["AC"]: self._device.commands["startProgram"].send() await self.coordinator.async_refresh() diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index af554cc..17487f1 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -385,7 +385,9 @@ class HonSwitchEntity(HonEntity, SwitchEntity): setting.max if isinstance(setting, HonParameterRange) else "1" ) self.async_write_ha_state() - if self._device.appliance_type in ["AC"]: + if "settings." in self.entity_description: + self._device.commands["settings"].send() + elif self._device.appliance_type in ["AC"]: self._device.commands["startProgram"].send() await self.coordinator.async_refresh() else: @@ -398,7 +400,9 @@ class HonSwitchEntity(HonEntity, SwitchEntity): setting.min if isinstance(setting, HonParameterRange) else "0" ) self.async_write_ha_state() - if self._device.appliance_type in ["AC"]: + if "settings." in self.entity_description: + self._device.commands["settings"].send() + elif self._device.appliance_type in ["AC"]: self._device.commands["startProgram"].send() await self.coordinator.async_refresh() else: -- 2.39.5 From e777fe1ec93b44cdc92b1a1d6323a1affbdc90ac Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sun, 14 May 2023 03:17:58 +0200 Subject: [PATCH 097/205] Add more dw conifgs --- README.md | 3 +++ custom_components/hon/select.py | 16 ++++++++++++++++ custom_components/hon/switch.py | 7 +++++++ custom_components/hon/translations/cs.json | 6 ++++++ custom_components/hon/translations/de.json | 6 ++++++ custom_components/hon/translations/el.json | 6 ++++++ custom_components/hon/translations/en.json | 6 ++++++ custom_components/hon/translations/es.json | 6 ++++++ custom_components/hon/translations/fr.json | 6 ++++++ custom_components/hon/translations/he.json | 6 ++++++ custom_components/hon/translations/hr.json | 6 ++++++ custom_components/hon/translations/it.json | 6 ++++++ custom_components/hon/translations/nl.json | 6 ++++++ custom_components/hon/translations/pl.json | 6 ++++++ custom_components/hon/translations/pt.json | 6 ++++++ custom_components/hon/translations/ro.json | 6 ++++++ custom_components/hon/translations/ru.json | 6 ++++++ custom_components/hon/translations/sk.json | 6 ++++++ custom_components/hon/translations/sl.json | 6 ++++++ custom_components/hon/translations/sr.json | 6 ++++++ custom_components/hon/translations/tr.json | 6 ++++++ custom_components/hon/translations/zh.json | 6 ++++++ scripts/generate_translation.py | 2 ++ 23 files changed, 142 insertions(+) diff --git a/README.md b/README.md index ba27525..3569143 100644 --- a/README.md +++ b/README.md @@ -178,6 +178,7 @@ For every device exists a hidden button which can be used to log all infos of yo | Name | Icon | Entity | Key | | --- | --- | --- | --- | | Add Dish | `silverware-fork-knife` | `switch` | `startProgram.addDish` | +| Buzzer Disabled | `volume-off` | `switch` | `settings.buzzerDisabled` | | Delay time | `timer-plus` | `number` | `startProgram.delayTime` | | Eco Express | `sprout` | `switch` | `startProgram.ecoExpress` | | Eco Index | `sprout` | `sensor` | `startProgram.ecoIndex` | @@ -186,6 +187,8 @@ For every device exists a hidden button which can be used to log all infos of yo | Half Load | `fraction-one-half` | `switch` | `startProgram.halfLoad` | | Open Door | `door-open` | `switch` | `startProgram.openDoor` | | Program | | `select` | `startProgram.program` | +| Remaining Time | `timer` | `select` | `startProgram.remainingTime` | +| Temperature | `thermometer` | `select` | `startProgram.temp` | | Temperature | `thermometer` | `sensor` | `startProgram.temp` | | Three in One | `numeric-3-box-outline` | `switch` | `startProgram.threeInOne` | | Time | `timer` | `sensor` | `startProgram.remainingTime` | diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index 3a75fea..46d077f 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -87,6 +87,22 @@ SELECTS = { entity_category=EntityCategory.CONFIG, translation_key="programs_dw", ), + SelectEntityDescription( + key="startProgram.temp", + name="Temperature", + entity_category=EntityCategory.CONFIG, + icon="mdi:thermometer", + unit_of_measurement=UnitOfTemperature.CELSIUS, + translation_key="temperature", + ), + SelectEntityDescription( + key="startProgram.remainingTime", + name="Remaining Time", + entity_category=EntityCategory.CONFIG, + icon="mdi:timer", + unit_of_measurement=UnitOfTime.MINUTES, + translation_key="remaining_time", + ), ), "AC": ( SelectEntityDescription( diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 17487f1..7e872c9 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -241,6 +241,13 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { entity_category=EntityCategory.CONFIG, translation_key="add_dish", ), + HonSwitchEntityDescription( + key="settings.buzzerDisabled", + name="Buzzer Disabled", + icon="mdi:volume-off", + entity_category=EntityCategory.CONFIG, + translation_key="buzzer", + ), ), "AC": ( HonSwitchEntityDescription( diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index 1747903..58d0d31 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -1041,6 +1041,9 @@ "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" } + }, + "remaining_time": { + "name": "Zbývající čas" } }, "switch": { @@ -1216,6 +1219,9 @@ }, "auto_dose": { "name": "Automatické dávkování" + }, + "buzzer": { + "name": "Zvuková signalizace konce cyklu" } }, "number": { diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index d2f5c3f..11e1594 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -1041,6 +1041,9 @@ "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" } + }, + "remaining_time": { + "name": "Verbleibende Zeit" } }, "switch": { @@ -1216,6 +1219,9 @@ }, "auto_dose": { "name": "Autodosierung" + }, + "buzzer": { + "name": "Signalton zum Programmende" } }, "number": { diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index 8f7a4a9..a5b2cd2 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -1041,6 +1041,9 @@ "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" } + }, + "remaining_time": { + "name": "Χρόνος που απομένει" } }, "switch": { @@ -1216,6 +1219,9 @@ }, "auto_dose": { "name": "Αυτόματη Δοσολογία" + }, + "buzzer": { + "name": "Κουδούνισμα τέλους κύκλου" } }, "number": { diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index e317c31..ef7520f 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -1207,6 +1207,9 @@ "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" } + }, + "remaining_time": { + "name": "Time remaining" } }, "binary_sensor": { @@ -1284,6 +1287,9 @@ }, "auto_dose": { "name": "Autodose" + }, + "buzzer": { + "name": "Cycle end chime" } }, "number": { diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index e9ce449..79b2180 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -1041,6 +1041,9 @@ "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" } + }, + "remaining_time": { + "name": "Tiempo restante" } }, "switch": { @@ -1216,6 +1219,9 @@ }, "auto_dose": { "name": "Dosificación automática" + }, + "buzzer": { + "name": "Campana de fin de ciclo" } }, "number": { diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index 3aee4c1..54b6c92 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -1041,6 +1041,9 @@ "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" } + }, + "remaining_time": { + "name": "Temps restant" } }, "switch": { @@ -1216,6 +1219,9 @@ }, "auto_dose": { "name": "Dose automatique" + }, + "buzzer": { + "name": "Sonnerie de fin de cycle" } }, "number": { diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index 99a6e01..6ac3918 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -494,6 +494,9 @@ "soft_frozen": "Soft freezing", "tea": "Cold drinks or Beverages" } + }, + "remaining_time": { + "name": "זמן שנותר" } }, "switch": { @@ -669,6 +672,9 @@ }, "auto_dose": { "name": "מינון אוטומטי" + }, + "buzzer": { + "name": "Cycle end chime" } }, "number": { diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index b0546a6..63f3f39 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -1041,6 +1041,9 @@ "tea": "Hladna pića i napitci", "zero_fresh": "0° Fresh" } + }, + "remaining_time": { + "name": "Preostalo vrijeme" } }, "switch": { @@ -1216,6 +1219,9 @@ }, "auto_dose": { "name": "Automatsko doziranje" + }, + "buzzer": { + "name": "Zvono za završetak ciklusa" } }, "number": { diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index fdaf966..e518dfa 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -1093,6 +1093,9 @@ "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" } + }, + "remaining_time": { + "name": "Tempo rimanente" } }, "switch": { @@ -1268,6 +1271,9 @@ }, "auto_dose": { "name": "Autodose" + }, + "buzzer": { + "name": "Avviso di fine ciclo" } }, "number": { diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index 4129beb..50d376b 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -1041,6 +1041,9 @@ "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" } + }, + "remaining_time": { + "name": "Resterende tijd" } }, "switch": { @@ -1216,6 +1219,9 @@ }, "auto_dose": { "name": "Automatisch doseren" + }, + "buzzer": { + "name": "Bel voor einde cyclus" } }, "number": { diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index 982e653..36f4a22 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -1041,6 +1041,9 @@ "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" } + }, + "remaining_time": { + "name": "Pozostały czas" } }, "switch": { @@ -1216,6 +1219,9 @@ }, "auto_dose": { "name": "Automatyczne dozowanie" + }, + "buzzer": { + "name": "Sygnał dźwiękowy końca cyklu" } }, "number": { diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index a6853aa..c9420cd 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -1041,6 +1041,9 @@ "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" } + }, + "remaining_time": { + "name": "Tempo restante" } }, "switch": { @@ -1216,6 +1219,9 @@ }, "auto_dose": { "name": "Autodosagem" + }, + "buzzer": { + "name": "Besouro de fim de ciclo" } }, "number": { diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index c7b49cc..37e0742 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -1041,6 +1041,9 @@ "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" } + }, + "remaining_time": { + "name": "Timp rămas" } }, "switch": { @@ -1216,6 +1219,9 @@ }, "auto_dose": { "name": "Autodozare" + }, + "buzzer": { + "name": "Sonerie la finalul ciclului" } }, "number": { diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index 56d4969..28423de 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -1041,6 +1041,9 @@ "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" } + }, + "remaining_time": { + "name": "Оставшееся время" } }, "switch": { @@ -1216,6 +1219,9 @@ }, "auto_dose": { "name": "Автодозирование" + }, + "buzzer": { + "name": "Звуковой сигнал окончания цикла" } }, "number": { diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index a247594..beca28f 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -1041,6 +1041,9 @@ "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" } + }, + "remaining_time": { + "name": "Zostávajúci čas" } }, "switch": { @@ -1216,6 +1219,9 @@ }, "auto_dose": { "name": "Automatická dávka" + }, + "buzzer": { + "name": "Signál na konci cyklu" } }, "number": { diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index 32d0800..bb433de 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -1041,6 +1041,9 @@ "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" } + }, + "remaining_time": { + "name": "Time remaining" } }, "switch": { @@ -1216,6 +1219,9 @@ }, "auto_dose": { "name": "Samodejno odmerjanje" + }, + "buzzer": { + "name": "Zvočni signal ob koncu cikla" } }, "number": { diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index 005291e..4675a34 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -1041,6 +1041,9 @@ "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" } + }, + "remaining_time": { + "name": "Preostalo vreme" } }, "switch": { @@ -1216,6 +1219,9 @@ }, "auto_dose": { "name": "Automatsko doziranje" + }, + "buzzer": { + "name": "Zvono na kraju ciklusa" } }, "number": { diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index 1a7ea62..36b8692 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -1041,6 +1041,9 @@ "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" } + }, + "remaining_time": { + "name": "Kalan süre" } }, "switch": { @@ -1216,6 +1219,9 @@ }, "auto_dose": { "name": "Otomatik doz" + }, + "buzzer": { + "name": "Program sonu zili" } }, "number": { diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index 2e17260..39605c7 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -1041,6 +1041,9 @@ "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" } + }, + "remaining_time": { + "name": "剩余时间" } }, "switch": { @@ -1216,6 +1219,9 @@ }, "auto_dose": { "name": "自动定量" + }, + "buzzer": { + "name": "循环结束提示音" } }, "number": { diff --git a/scripts/generate_translation.py b/scripts/generate_translation.py index 4b43d08..04cdaa7 100755 --- a/scripts/generate_translation.py +++ b/scripts/generate_translation.py @@ -102,6 +102,7 @@ NAMES = { "child_lock": "AP.FOOTER_MENU_MORE.SECURITY_LOCK_TITLE", "on": "GLOBALS.GENERAL.ON", "prewash": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.PREWASH", + "buzzer": "DW_CMD&CTRL.SETTINGS.END_CYCLE_BUZZER", }, "button": { "induction_hob": "GLOBALS.APPLIANCES_NAME.IH", @@ -117,6 +118,7 @@ NAMES = { "programs_td": "WC.SET_PROGRAM.PROGRAM", "programs_wm": "WC.SET_PROGRAM.PROGRAM", "eco_pilot": "AC.PROGRAM_DETAIL.ECO_PILOT", + "remaining_time": "ENROLLMENT_COMMON.GENERAL.REMAINING_TIME", }, "sensor": { "dry_levels": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_LEVEL", -- 2.39.5 From 9a65eaba775730fa656aaea1fc93b9199a5c6521 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sun, 14 May 2023 22:39:34 +0200 Subject: [PATCH 098/205] Fix errors in changing settings --- custom_components/hon/number.py | 6 +++--- custom_components/hon/select.py | 14 ++++++++------ custom_components/hon/switch.py | 12 ++++++------ 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index 55890ff..14429f4 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -206,10 +206,10 @@ class HonNumberEntity(HonEntity, NumberEntity): isinstance(setting, HonParameter) or isinstance(setting, HonParameterFixed) ): setting.value = value - if "settings." in self.entity_description: - self._device.commands["settings"].send() + if "settings." in self.entity_description.key: + await self._device.commands["settings"].send() elif self._device.appliance_type in ["AC"]: - self._device.commands["startProgram"].send() + await self._device.commands["startProgram"].send() await self.coordinator.async_refresh() @callback diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index 46d077f..e136ccf 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -165,10 +165,12 @@ class HonSelectEntity(HonEntity, SelectEntity): self.entity_description = description self._attr_unique_id = f"{super().unique_id}{description.key}" - if not isinstance(self._device.settings[description.key], HonParameterFixed): - self._attr_options: list[str] = device.settings[description.key].values + if not (setting := self._device.settings.get(description.key)): + self._attr_options: list[str] = [] + elif not isinstance(setting, HonParameterFixed): + self._attr_options: list[str] = setting.value else: - self._attr_options: list[str] = [device.settings[description.key].value] + self._attr_options: list[str] = [setting.value] @property def current_option(self) -> str | None: @@ -179,10 +181,10 @@ class HonSelectEntity(HonEntity, SelectEntity): async def async_select_option(self, option: str) -> None: self._device.settings[self.entity_description.key].value = option - if "settings." in self.entity_description: - self._device.commands["settings"].send() + if "settings." in self.entity_description.key: + await self._device.commands["settings"].send() elif self._device.appliance_type in ["AC"]: - self._device.commands["startProgram"].send() + await self._device.commands["startProgram"].send() await self.coordinator.async_refresh() @callback diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 7e872c9..494d815 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -392,10 +392,10 @@ class HonSwitchEntity(HonEntity, SwitchEntity): setting.max if isinstance(setting, HonParameterRange) else "1" ) self.async_write_ha_state() - if "settings." in self.entity_description: - self._device.commands["settings"].send() + if "settings." in self.entity_description.key: + await self._device.commands["settings"].send() elif self._device.appliance_type in ["AC"]: - self._device.commands["startProgram"].send() + await self._device.commands["startProgram"].send() await self.coordinator.async_refresh() else: await self._device.commands[self.entity_description.turn_on_key].send() @@ -407,10 +407,10 @@ class HonSwitchEntity(HonEntity, SwitchEntity): setting.min if isinstance(setting, HonParameterRange) else "0" ) self.async_write_ha_state() - if "settings." in self.entity_description: - self._device.commands["settings"].send() + if "settings." in self.entity_description.key: + await self._device.commands["settings"].send() elif self._device.appliance_type in ["AC"]: - self._device.commands["startProgram"].send() + await self._device.commands["startProgram"].send() await self.coordinator.async_refresh() else: await self._device.commands[self.entity_description.turn_off_key].send() -- 2.39.5 From 604cf1b3c691a3ab8ed607525b0089a21fdf44ce Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 15 May 2023 00:38:41 +0200 Subject: [PATCH 099/205] Add more fridge sensor #41 --- README.md | 8 ++++ custom_components/hon/binary_sensor.py | 50 ++++++++++++++++++++++ custom_components/hon/number.py | 18 ++++++++ custom_components/hon/translations/cs.json | 24 +++++++++++ custom_components/hon/translations/de.json | 24 +++++++++++ custom_components/hon/translations/el.json | 24 +++++++++++ custom_components/hon/translations/en.json | 24 +++++++++++ custom_components/hon/translations/es.json | 24 +++++++++++ custom_components/hon/translations/fr.json | 24 +++++++++++ custom_components/hon/translations/he.json | 24 +++++++++++ custom_components/hon/translations/hr.json | 24 +++++++++++ custom_components/hon/translations/it.json | 24 +++++++++++ custom_components/hon/translations/nl.json | 24 +++++++++++ custom_components/hon/translations/pl.json | 24 +++++++++++ custom_components/hon/translations/pt.json | 24 +++++++++++ custom_components/hon/translations/ro.json | 24 +++++++++++ custom_components/hon/translations/ru.json | 24 +++++++++++ custom_components/hon/translations/sk.json | 24 +++++++++++ custom_components/hon/translations/sl.json | 24 +++++++++++ custom_components/hon/translations/sr.json | 24 +++++++++++ custom_components/hon/translations/tr.json | 24 +++++++++++ custom_components/hon/translations/zh.json | 24 +++++++++++ scripts/generate_translation.py | 8 ++++ 23 files changed, 540 insertions(+) diff --git a/README.md b/README.md index 3569143..f1ffbac 100644 --- a/README.md +++ b/README.md @@ -258,12 +258,20 @@ For every device exists a hidden button which can be used to log all infos of yo #### Configs | Name | Icon | Entity | Key | | --- | --- | --- | --- | +| Freezer Temperature | `thermometer` | `number` | `settings.tempSelZ2` | +| Fridge Temperature | `thermometer` | `number` | `settings.tempSelZ1` | | Program | | `select` | `startProgram.program` | #### Sensors | Name | Icon | Entity | Key | | --- | --- | --- | --- | +| Auto-Set Mode | `robot-outline` | `binary_sensor` | `intelligenceMode` | +| Door Status Freezer | `fridge-top` | `binary_sensor` | `doorStatusZ1` | +| Door Status Fridge | `fridge-bottom` | `binary_sensor` | `door2StatusZ1` | +| Holiday Mode | `palm-tree` | `binary_sensor` | `holidayMode` | | Room Humidity | `water-percent` | `sensor` | `humidityEnv` | | Room Temperature | `thermometer` | `sensor` | `tempEnv` | +| Super Cool | `snowflake` | `binary_sensor` | `quickModeZ2` | +| Super Freeze | `snowflake-variant` | `binary_sensor` | `quickModeZ1` | ### Tumble dryer #### Controls diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index 9c29827..aad651b 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -179,6 +179,56 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { translation_key="door_open", ), ), + "REF": ( + HonBinarySensorEntityDescription( + key="quickModeZ2", + name="Super Cool", + icon="mdi:snowflake", + device_class=BinarySensorDeviceClass.RUNNING, + on_value="1", + translation_key="super_cool", + ), + HonBinarySensorEntityDescription( + key="quickModeZ1", + name="Super Freeze", + icon="mdi:snowflake-variant", + device_class=BinarySensorDeviceClass.RUNNING, + on_value="1", + translation_key="super_freeze", + ), + HonBinarySensorEntityDescription( + key="doorStatusZ1", + name="Door Status Freezer", + device_class=BinarySensorDeviceClass.DOOR, + icon="mdi:fridge-top", + on_value="1", + translation_key="freezer_door", + ), + HonBinarySensorEntityDescription( + key="door2StatusZ1", + name="Door Status Fridge", + icon="mdi:fridge-bottom", + device_class=BinarySensorDeviceClass.DOOR, + on_value="1", + translation_key="fridge_door", + ), + HonBinarySensorEntityDescription( + key="intelligenceMode", + name="Auto-Set Mode", + icon="mdi:robot-outline", + device_class=BinarySensorDeviceClass.RUNNING, + on_value="1", + translation_key="auto_set", + ), + HonBinarySensorEntityDescription( + key="holidayMode", + name="Holiday Mode", + icon="mdi:palm-tree", + device_class=BinarySensorDeviceClass.RUNNING, + on_value="1", + translation_key="holiday_mode", + ), + ), } diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index 14429f4..3f9d3a2 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -153,6 +153,24 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { translation_key="target_temperature", ), ), + "REF": ( + NumberEntityDescription( + key="settings.tempSelZ1", + name="Fridge Temperature", + entity_category=EntityCategory.CONFIG, + icon="mdi:thermometer", + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + translation_key="fridge_temp_sel", + ), + NumberEntityDescription( + key="settings.tempSelZ2", + name="Freezer Temperature", + entity_category=EntityCategory.CONFIG, + icon="mdi:thermometer", + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + translation_key="freezer_temp_sel", + ), + ), } NUMBERS["WD"] = unique_entities(NUMBERS["WM"], NUMBERS["TD"]) diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index 58d0d31..2f3fc35 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -1222,6 +1222,24 @@ }, "buzzer": { "name": "Zvuková signalizace konce cyklu" + }, + "holiday_mode": { + "name": "Režim Holiday" + }, + "auto_set": { + "name": "Automatické nastavení" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" + }, + "freezer_door": { + "name": "Otevřená dvířka Mraznička" + }, + "fridge_door": { + "name": "Otevřená dvířka Chladnička" } }, "number": { @@ -1254,6 +1272,12 @@ }, "steam_level": { "name": "Úroveň páry" + }, + "freezer_temp_sel": { + "name": "Cílová teplota Mraznička" + }, + "fridge_temp_sel": { + "name": "Cílová teplota Chladnička" } }, "button": { diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index 11e1594..bcf3ca3 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -1222,6 +1222,24 @@ }, "buzzer": { "name": "Signalton zum Programmende" + }, + "holiday_mode": { + "name": "Holiday-Modus" + }, + "auto_set": { + "name": "Auto-Set" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" + }, + "freezer_door": { + "name": "Tür offen Gefrierschrank" + }, + "fridge_door": { + "name": "Tür offen Kühlschrank" } }, "number": { @@ -1254,6 +1272,12 @@ }, "steam_level": { "name": "Dampfstufe" + }, + "freezer_temp_sel": { + "name": "Zieltemperatur Gefrierschrank" + }, + "fridge_temp_sel": { + "name": "Zieltemperatur Kühlschrank" } }, "button": { diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index a5b2cd2..a63b37d 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -1222,6 +1222,24 @@ }, "buzzer": { "name": "Κουδούνισμα τέλους κύκλου" + }, + "holiday_mode": { + "name": "Λειτουργια Holiday" + }, + "auto_set": { + "name": "Αυτόματη ρύθμιση" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" + }, + "freezer_door": { + "name": "Πόρτα ανοιχτή Καταψύκτης" + }, + "fridge_door": { + "name": "Πόρτα ανοιχτή Ψυγείο" } }, "number": { @@ -1254,6 +1272,12 @@ }, "steam_level": { "name": "Επίπεδο ατμού" + }, + "freezer_temp_sel": { + "name": "Στοχευμένη θερμοκρασία Καταψύκτης" + }, + "fridge_temp_sel": { + "name": "Στοχευμένη θερμοκρασία Ψυγείο" } }, "button": { diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index ef7520f..981e064 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -1290,6 +1290,24 @@ }, "buzzer": { "name": "Cycle end chime" + }, + "holiday_mode": { + "name": "Holiday Mode" + }, + "auto_set": { + "name": "Auto-Set" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" + }, + "freezer_door": { + "name": "Door open Freezer" + }, + "fridge_door": { + "name": "Door open Fridge" } }, "number": { @@ -1322,6 +1340,12 @@ }, "steam_level": { "name": "Steam Level" + }, + "freezer_temp_sel": { + "name": "Target temperature Freezer" + }, + "fridge_temp_sel": { + "name": "Target temperature Fridge" } }, "button": { diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index 79b2180..9b5646c 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -1222,6 +1222,24 @@ }, "buzzer": { "name": "Campana de fin de ciclo" + }, + "holiday_mode": { + "name": "Modo Holiday" + }, + "auto_set": { + "name": "Auto-Set" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" + }, + "freezer_door": { + "name": "Puerta abierta Congelador" + }, + "fridge_door": { + "name": "Puerta abierta Frigorífico" } }, "number": { @@ -1254,6 +1272,12 @@ }, "steam_level": { "name": "Nivel de vapor" + }, + "freezer_temp_sel": { + "name": "Temperatura deseada Congelador" + }, + "fridge_temp_sel": { + "name": "Temperatura deseada Frigorífico" } }, "button": { diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index 54b6c92..dd26ebc 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -1222,6 +1222,24 @@ }, "buzzer": { "name": "Sonnerie de fin de cycle" + }, + "holiday_mode": { + "name": "Mode Holiday" + }, + "auto_set": { + "name": "Réglage automatique" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" + }, + "freezer_door": { + "name": "Porte ouverte Congélateur" + }, + "fridge_door": { + "name": "Porte ouverte Réfrigérateur" } }, "number": { @@ -1254,6 +1272,12 @@ }, "steam_level": { "name": "Niveau de vapeur" + }, + "freezer_temp_sel": { + "name": "Température cible Congélateur" + }, + "fridge_temp_sel": { + "name": "Température cible Réfrigérateur" } }, "button": { diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index 6ac3918..07ee09d 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -675,6 +675,24 @@ }, "buzzer": { "name": "Cycle end chime" + }, + "holiday_mode": { + "name": "Holiday Mode" + }, + "auto_set": { + "name": "Auto-Set" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" + }, + "freezer_door": { + "name": "Door open Freezer" + }, + "fridge_door": { + "name": "Door open Fridge" } }, "number": { @@ -707,6 +725,12 @@ }, "steam_level": { "name": "מפלס קיטור" + }, + "freezer_temp_sel": { + "name": "Target temperature Freezer" + }, + "fridge_temp_sel": { + "name": "Target temperature Fridge" } }, "button": { diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index 63f3f39..8df62bb 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -1222,6 +1222,24 @@ }, "buzzer": { "name": "Zvono za završetak ciklusa" + }, + "holiday_mode": { + "name": "Način rada Holiday" + }, + "auto_set": { + "name": "Automatsko postavljanje" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" + }, + "freezer_door": { + "name": "Otvorena vrata Zamrzivač" + }, + "fridge_door": { + "name": "Otvorena vrata Hladnjak" } }, "number": { @@ -1254,6 +1272,12 @@ }, "steam_level": { "name": "Razina pare" + }, + "freezer_temp_sel": { + "name": "Ciljana temperatura Zamrzivač" + }, + "fridge_temp_sel": { + "name": "Ciljana temperatura Hladnjak" } }, "button": { diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index e518dfa..7e23e09 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -1274,6 +1274,24 @@ }, "buzzer": { "name": "Avviso di fine ciclo" + }, + "holiday_mode": { + "name": "Modalità Holiday" + }, + "auto_set": { + "name": "Impostazione automatica" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" + }, + "freezer_door": { + "name": "Porta aperta Congelatore" + }, + "fridge_door": { + "name": "Porta aperta Frigorifero" } }, "number": { @@ -1306,6 +1324,12 @@ }, "steam_level": { "name": "Livello vapore" + }, + "freezer_temp_sel": { + "name": "Temperatura target Congelatore" + }, + "fridge_temp_sel": { + "name": "Temperatura target Frigorifero" } }, "button": { diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index 50d376b..fb59800 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -1222,6 +1222,24 @@ }, "buzzer": { "name": "Bel voor einde cyclus" + }, + "holiday_mode": { + "name": "Holiday-modus (Vakantie)" + }, + "auto_set": { + "name": "Automatisch instellen" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" + }, + "freezer_door": { + "name": "Deur open Vriezer" + }, + "fridge_door": { + "name": "Deur open Koelkast" } }, "number": { @@ -1254,6 +1272,12 @@ }, "steam_level": { "name": "Stoomniveau" + }, + "freezer_temp_sel": { + "name": "Doeltemperatuur Vriezer" + }, + "fridge_temp_sel": { + "name": "Doeltemperatuur Koelkast" } }, "button": { diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index 36f4a22..1f99cc2 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -1222,6 +1222,24 @@ }, "buzzer": { "name": "Sygnał dźwiękowy końca cyklu" + }, + "holiday_mode": { + "name": "Tryb Holiday" + }, + "auto_set": { + "name": "Ustawianie automatyczne" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" + }, + "freezer_door": { + "name": "Drzwi otwarte Zamrażarka" + }, + "fridge_door": { + "name": "Drzwi otwarte Lodówka" } }, "number": { @@ -1254,6 +1272,12 @@ }, "steam_level": { "name": "Poziom pary" + }, + "freezer_temp_sel": { + "name": "Temperatura docelowa Zamrażarka" + }, + "fridge_temp_sel": { + "name": "Temperatura docelowa Lodówka" } }, "button": { diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index c9420cd..c38ea95 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -1222,6 +1222,24 @@ }, "buzzer": { "name": "Besouro de fim de ciclo" + }, + "holiday_mode": { + "name": "Modo Holiday" + }, + "auto_set": { + "name": "Ajuste automático" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" + }, + "freezer_door": { + "name": "Porta aberta Congelador" + }, + "fridge_door": { + "name": "Porta aberta Frigorífico" } }, "number": { @@ -1254,6 +1272,12 @@ }, "steam_level": { "name": "Nível de vapor" + }, + "freezer_temp_sel": { + "name": "Temperatura alvo Congelador" + }, + "fridge_temp_sel": { + "name": "Temperatura alvo Frigorífico" } }, "button": { diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index 37e0742..d8c3c7b 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -1222,6 +1222,24 @@ }, "buzzer": { "name": "Sonerie la finalul ciclului" + }, + "holiday_mode": { + "name": "Mod Holiday" + }, + "auto_set": { + "name": "Setare automată" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" + }, + "freezer_door": { + "name": "Ușă deschisă Congelator" + }, + "fridge_door": { + "name": "Ușă deschisă Frigider" } }, "number": { @@ -1254,6 +1272,12 @@ }, "steam_level": { "name": "Nivel abur" + }, + "freezer_temp_sel": { + "name": "Temperatură vizată Congelator" + }, + "fridge_temp_sel": { + "name": "Temperatură vizată Frigider" } }, "button": { diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index 28423de..3c9e3e5 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -1222,6 +1222,24 @@ }, "buzzer": { "name": "Звуковой сигнал окончания цикла" + }, + "holiday_mode": { + "name": "Режим Holiday (режим отпуска)" + }, + "auto_set": { + "name": "Автоматическая установка" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" + }, + "freezer_door": { + "name": "Дверца открыта Морозильник" + }, + "fridge_door": { + "name": "Дверца открыта Холодильник" } }, "number": { @@ -1254,6 +1272,12 @@ }, "steam_level": { "name": "Уровень пара" + }, + "freezer_temp_sel": { + "name": "Заданная температура Морозильник" + }, + "fridge_temp_sel": { + "name": "Заданная температура Холодильник" } }, "button": { diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index beca28f..2e8aaa5 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -1222,6 +1222,24 @@ }, "buzzer": { "name": "Signál na konci cyklu" + }, + "holiday_mode": { + "name": "Režim Holiday" + }, + "auto_set": { + "name": "Automatické nastavenie" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" + }, + "freezer_door": { + "name": "Otvorené dvere Mraznička" + }, + "fridge_door": { + "name": "Otvorené dvere Chladnička" } }, "number": { @@ -1254,6 +1272,12 @@ }, "steam_level": { "name": "Úroveň nastavenia pary" + }, + "freezer_temp_sel": { + "name": "Cieľová teplota Mraznička" + }, + "fridge_temp_sel": { + "name": "Cieľová teplota Chladnička" } }, "button": { diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index bb433de..33b6dc7 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -1222,6 +1222,24 @@ }, "buzzer": { "name": "Zvočni signal ob koncu cikla" + }, + "holiday_mode": { + "name": "Način Holiday" + }, + "auto_set": { + "name": "Samodejna nastavitev" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" + }, + "freezer_door": { + "name": "Door open Zamrzovalnik" + }, + "fridge_door": { + "name": "Door open Hladilnik" } }, "number": { @@ -1254,6 +1272,12 @@ }, "steam_level": { "name": "Količina pare" + }, + "freezer_temp_sel": { + "name": "Ciljna temperatura Zamrzovalnik" + }, + "fridge_temp_sel": { + "name": "Ciljna temperatura Hladilnik" } }, "button": { diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index 4675a34..15c382d 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -1222,6 +1222,24 @@ }, "buzzer": { "name": "Zvono na kraju ciklusa" + }, + "holiday_mode": { + "name": "Režim Holiday" + }, + "auto_set": { + "name": "Automatsko podešavanje" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" + }, + "freezer_door": { + "name": "Vrata su otvorena Zamrzivač" + }, + "fridge_door": { + "name": "Vrata su otvorena Frižider" } }, "number": { @@ -1254,6 +1272,12 @@ }, "steam_level": { "name": "Nivo pare" + }, + "freezer_temp_sel": { + "name": "Željena temperatura Zamrzivač" + }, + "fridge_temp_sel": { + "name": "Željena temperatura Frižider" } }, "button": { diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index 36b8692..132a60e 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -1222,6 +1222,24 @@ }, "buzzer": { "name": "Program sonu zili" + }, + "holiday_mode": { + "name": "Holiday Modu" + }, + "auto_set": { + "name": "Otomatik Ayarla" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" + }, + "freezer_door": { + "name": "Kapı açık Dondurucu" + }, + "fridge_door": { + "name": "Kapı açık Buzdolabı" } }, "number": { @@ -1254,6 +1272,12 @@ }, "steam_level": { "name": "Buhar Seviyesi" + }, + "freezer_temp_sel": { + "name": "Hedef sıcaklık Dondurucu" + }, + "fridge_temp_sel": { + "name": "Hedef sıcaklık Buzdolabı" } }, "button": { diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index 39605c7..842186b 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -1222,6 +1222,24 @@ }, "buzzer": { "name": "循环结束提示音" + }, + "holiday_mode": { + "name": "Holiday 模式" + }, + "auto_set": { + "name": "自动设置" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" + }, + "freezer_door": { + "name": "门打开 冷藏箱" + }, + "fridge_door": { + "name": "门打开 冰箱" } }, "number": { @@ -1254,6 +1272,12 @@ }, "steam_level": { "name": "蒸汽档位" + }, + "freezer_temp_sel": { + "name": "目标温度 冷藏箱" + }, + "fridge_temp_sel": { + "name": "目标温度 冰箱" } }, "button": { diff --git a/scripts/generate_translation.py b/scripts/generate_translation.py index 04cdaa7..973a4e3 100755 --- a/scripts/generate_translation.py +++ b/scripts/generate_translation.py @@ -103,6 +103,12 @@ NAMES = { "on": "GLOBALS.GENERAL.ON", "prewash": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.PREWASH", "buzzer": "DW_CMD&CTRL.SETTINGS.END_CYCLE_BUZZER", + "holiday_mode": "REF.DASHBOARD_MENU_MORE_NOTIFICATIONS.HOLIDAY_MODE", + "auto_set": "REF_CMD&CTRL.MODALITIES.ECO", + "super_cool": "REF_CMD&CTRL.MODALITIES.SUPER_COOL", + "super_freeze": "REF_CMD&CTRL.MODALITIES.SUPER_FREEZE", + "freezer_door": ["GLOBALS.APPLIANCE_STATUS.DOOR_OPEN", "REF.ZONES.FREEZER"], + "fridge_door": ["GLOBALS.APPLIANCE_STATUS.DOOR_OPEN", "REF.ZONES.FRIDGE"], }, "button": { "induction_hob": "GLOBALS.APPLIANCES_NAME.IH", @@ -177,6 +183,8 @@ NAMES = { "wash_time": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL.WASHING_TIME", "dry_time": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_TIME", "steam_level": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.STEAM_LEVEL", + "freezer_temp_sel": ["OV.COMMON.GOAL_TEMPERATURE", "REF.ZONES.FREEZER"], + "fridge_temp_sel": ["OV.COMMON.GOAL_TEMPERATURE", "REF.ZONES.FRIDGE"], }, "climate": {"air_conditioner": "GLOBALS.APPLIANCES_NAME.AC"}, } -- 2.39.5 From 81676771c75055eab13ab24df04255b77549bffd Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 15 May 2023 19:23:53 +0200 Subject: [PATCH 100/205] Add some fridge sensors, change some configs to controls --- README.md | 33 ++++++++++------ custom_components/hon/binary_sensor.py | 2 +- custom_components/hon/number.py | 18 ++++++--- custom_components/hon/select.py | 24 +++++++++--- custom_components/hon/sensor.py | 20 +++++++++- custom_components/hon/switch.py | 45 ++++++++++++++-------- custom_components/hon/translations/cs.json | 15 ++++++++ custom_components/hon/translations/de.json | 15 ++++++++ custom_components/hon/translations/el.json | 15 ++++++++ custom_components/hon/translations/en.json | 15 ++++++++ custom_components/hon/translations/es.json | 15 ++++++++ custom_components/hon/translations/fr.json | 15 ++++++++ custom_components/hon/translations/he.json | 15 ++++++++ custom_components/hon/translations/hr.json | 15 ++++++++ custom_components/hon/translations/it.json | 15 ++++++++ custom_components/hon/translations/nl.json | 15 ++++++++ custom_components/hon/translations/pl.json | 15 ++++++++ custom_components/hon/translations/pt.json | 15 ++++++++ custom_components/hon/translations/ro.json | 15 ++++++++ custom_components/hon/translations/ru.json | 15 ++++++++ custom_components/hon/translations/sk.json | 15 ++++++++ custom_components/hon/translations/sl.json | 15 ++++++++ custom_components/hon/translations/sr.json | 15 ++++++++ custom_components/hon/translations/tr.json | 15 ++++++++ custom_components/hon/translations/zh.json | 15 ++++++++ scripts/generate_translation.py | 5 +++ scripts/sensor_docs.py | 1 + 27 files changed, 392 insertions(+), 41 deletions(-) diff --git a/README.md b/README.md index f1ffbac..9e2d912 100644 --- a/README.md +++ b/README.md @@ -151,34 +151,37 @@ For every device exists a hidden button which can be used to log all infos of yo #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | -| Air Conditioner | `air-conditioner` | `climate` | `settings` | -#### Configs -| Name | Icon | Entity | Key | -| --- | --- | --- | --- | | 10° Heating | `heat-wave` | `switch` | `settings.10degreeHeatingStatus` | +| Air Conditioner | `air-conditioner` | `climate` | `settings` | | Echo | `account-voice` | `switch` | `settings.echoStatus` | | Eco Mode | | `switch` | `settings.ecoMode` | -| Eco Pilot | `run` | `select` | `settings.humanSensingStatus` | | Health Mode | `medication-outline` | `switch` | `settings.healthMode` | | Mute | `volume-off` | `switch` | `settings.muteStatus` | -| Program | | `select` | `startProgram.program` | | Rapid Mode | `run-fast` | `switch` | `settings.rapidMode` | | Screen Display | `monitor-small` | `switch` | `settings.screenDisplayStatus` | | Self Cleaning | `air-filter` | `switch` | `settings.selfCleaningStatus` | | Self Cleaning 56 | `air-filter` | `switch` | `settings.selfCleaning56Status` | | Silent Sleep | `bed` | `switch` | `settings.silentSleepStatus` | +#### Configs +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Program | | `select` | `startProgram.program` | +#### Sensors +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Eco Pilot | `run` | `select` | `settings.humanSensingStatus` | | Target Temperature | `thermometer` | `number` | `settings.tempSel` | ### Dish washer #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | +| Buzzer Disabled | `volume-off` | `switch` | `settings.buzzerDisabled` | | Dish Washer | `dishwasher` | `switch` | `startProgram` / `stopProgram` | #### Configs | Name | Icon | Entity | Key | | --- | --- | --- | --- | | Add Dish | `silverware-fork-knife` | `switch` | `startProgram.addDish` | -| Buzzer Disabled | `volume-off` | `switch` | `settings.buzzerDisabled` | | Delay time | `timer-plus` | `number` | `startProgram.delayTime` | | Eco Express | `sprout` | `switch` | `startProgram.ecoExpress` | | Eco Index | `sprout` | `sensor` | `startProgram.ecoIndex` | @@ -255,23 +258,31 @@ For every device exists a hidden button which can be used to log all infos of yo | Temperature Selected | `thermometer` | `sensor` | `tempSel` | ### Fridge +#### Controls +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Auto-Set Mode | `thermometer-auto` | `switch` | `settings.intelligenceMode` | +| Super Cool | `snowflake` | `switch` | `settings.quickModeZ2` | +| Super Freeze | `snowflake-variant` | `switch` | `settings.quickModeZ1` | #### Configs | Name | Icon | Entity | Key | | --- | --- | --- | --- | -| Freezer Temperature | `thermometer` | `number` | `settings.tempSelZ2` | -| Fridge Temperature | `thermometer` | `number` | `settings.tempSelZ1` | | Program | | `select` | `startProgram.program` | #### Sensors | Name | Icon | Entity | Key | | --- | --- | --- | --- | -| Auto-Set Mode | `robot-outline` | `binary_sensor` | `intelligenceMode` | +| Auto-Set Mode | `thermometer-auto` | `binary_sensor` | `intelligenceMode` | | Door Status Freezer | `fridge-top` | `binary_sensor` | `doorStatusZ1` | | Door Status Fridge | `fridge-bottom` | `binary_sensor` | `door2StatusZ1` | +| Freezer Temperature | `thermometer` | `number` | `settings.tempSelZ2` | +| Fridge Temperature | `thermometer` | `number` | `settings.tempSelZ1` | | Holiday Mode | `palm-tree` | `binary_sensor` | `holidayMode` | | Room Humidity | `water-percent` | `sensor` | `humidityEnv` | -| Room Temperature | `thermometer` | `sensor` | `tempEnv` | +| Room Temperature | `home-thermometer-outline` | `sensor` | `tempEnv` | | Super Cool | `snowflake` | `binary_sensor` | `quickModeZ2` | | Super Freeze | `snowflake-variant` | `binary_sensor` | `quickModeZ1` | +| Temperature Freezer | `snowflake-thermometer` | `sensor` | `tempZ2` | +| Temperature Fridge | `thermometer` | `sensor` | `tempZ1` | ### Tumble dryer #### Controls diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index aad651b..e9d3e0b 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -215,7 +215,7 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { HonBinarySensorEntityDescription( key="intelligenceMode", name="Auto-Set Mode", - icon="mdi:robot-outline", + icon="mdi:thermometer-auto", device_class=BinarySensorDeviceClass.RUNNING, on_value="1", translation_key="auto_set", diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index 3f9d3a2..01aaac7 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -147,7 +147,6 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { NumberEntityDescription( key="settings.tempSel", name="Target Temperature", - entity_category=EntityCategory.CONFIG, icon="mdi:thermometer", native_unit_of_measurement=UnitOfTemperature.CELSIUS, translation_key="target_temperature", @@ -157,7 +156,6 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { NumberEntityDescription( key="settings.tempSelZ1", name="Fridge Temperature", - entity_category=EntityCategory.CONFIG, icon="mdi:thermometer", native_unit_of_measurement=UnitOfTemperature.CELSIUS, translation_key="fridge_temp_sel", @@ -165,7 +163,6 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { NumberEntityDescription( key="settings.tempSelZ2", name="Freezer Temperature", - entity_category=EntityCategory.CONFIG, icon="mdi:thermometer", native_unit_of_measurement=UnitOfTemperature.CELSIUS, translation_key="freezer_temp_sel", @@ -226,8 +223,6 @@ class HonNumberEntity(HonEntity, NumberEntity): setting.value = value if "settings." in self.entity_description.key: await self._device.commands["settings"].send() - elif self._device.appliance_type in ["AC"]: - await self._device.commands["startProgram"].send() await self.coordinator.async_refresh() @callback @@ -239,3 +234,16 @@ class HonNumberEntity(HonEntity, NumberEntity): self._attr_native_step = setting.step self._attr_native_value = setting.value self.async_write_ha_state() + + @property + def available(self) -> bool: + """Return True if entity is available.""" + if self.entity_category == EntityCategory.CONFIG: + return super().available + else: + return ( + super().available + and self._device.get("remoteCtrValid") == "1" + and self._device.get("attributes.lastConnEvent.category") + != "DISCONNECTED" + ) diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index e136ccf..43b43ed 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -2,15 +2,15 @@ from __future__ import annotations import logging +from pyhon import Hon +from pyhon.appliance import HonAppliance +from pyhon.parameter.fixed import HonParameterFixed + from homeassistant.components.select import SelectEntity, SelectEntityDescription from homeassistant.config_entries import ConfigEntry from homeassistant.const import UnitOfTemperature, UnitOfTime, REVOLUTIONS_PER_MINUTE from homeassistant.core import callback from homeassistant.helpers.entity import EntityCategory -from pyhon import Hon -from pyhon.appliance import HonAppliance -from pyhon.parameter.fixed import HonParameterFixed - from .const import DOMAIN from .hon import HonEntity, HonCoordinator, unique_entities @@ -115,7 +115,6 @@ SELECTS = { key="settings.humanSensingStatus", name="Eco Pilot", icon="mdi:run", - entity_category=EntityCategory.CONFIG, translation_key="eco_pilot", ), ), @@ -168,7 +167,7 @@ class HonSelectEntity(HonEntity, SelectEntity): if not (setting := self._device.settings.get(description.key)): self._attr_options: list[str] = [] elif not isinstance(setting, HonParameterFixed): - self._attr_options: list[str] = setting.value + self._attr_options: list[str] = setting.values else: self._attr_options: list[str] = [setting.value] @@ -199,3 +198,16 @@ class HonSelectEntity(HonEntity, SelectEntity): self._attr_options: list[str] = setting.values self._attr_native_value = setting.value self.async_write_ha_state() + + @property + def available(self) -> bool: + """Return True if entity is available.""" + if self.entity_category == EntityCategory.CONFIG: + return super().available + else: + return ( + super().available + and self._device.get("remoteCtrValid") == "1" + and self._device.get("attributes.lastConnEvent.category") + != "DISCONNECTED" + ) diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 62bc1a4..14956b6 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -412,12 +412,30 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { SensorEntityDescription( key="tempEnv", name="Room Temperature", - icon="mdi:thermometer", + icon="mdi:home-thermometer-outline", state_class=SensorStateClass.MEASUREMENT, device_class=SensorDeviceClass.TEMPERATURE, native_unit_of_measurement=UnitOfTemperature.CELSIUS, translation_key="room_temperature", ), + SensorEntityDescription( + key="tempZ1", + name="Temperature Fridge", + icon="mdi:thermometer", + state_class=SensorStateClass.MEASUREMENT, + device_class=SensorDeviceClass.TEMPERATURE, + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + translation_key="fridge_temp", + ), + SensorEntityDescription( + key="tempZ2", + name="Temperature Freezer", + icon="mdi:snowflake-thermometer", + state_class=SensorStateClass.MEASUREMENT, + device_class=SensorDeviceClass.TEMPERATURE, + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + translation_key="freezer_temp", + ), ), } SENSORS["WD"] = unique_entities(SENSORS["WM"], SENSORS["TD"]) diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 494d815..b32ccba 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -245,7 +245,6 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { key="settings.buzzerDisabled", name="Buzzer Disabled", icon="mdi:volume-off", - entity_category=EntityCategory.CONFIG, translation_key="buzzer", ), ), @@ -254,69 +253,79 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { key="settings.10degreeHeatingStatus", name="10° Heating", icon="mdi:heat-wave", - entity_category=EntityCategory.CONFIG, translation_key="10_degree_heating", ), HonSwitchEntityDescription( key="settings.echoStatus", name="Echo", icon="mdi:account-voice", - entity_category=EntityCategory.CONFIG, ), HonSwitchEntityDescription( key="settings.ecoMode", name="Eco Mode", - entity_category=EntityCategory.CONFIG, translation_key="eco_mode", ), HonSwitchEntityDescription( key="settings.healthMode", name="Health Mode", icon="mdi:medication-outline", - entity_category=EntityCategory.CONFIG, ), HonSwitchEntityDescription( key="settings.muteStatus", name="Mute", icon="mdi:volume-off", - entity_category=EntityCategory.CONFIG, translation_key="mute_mode", ), HonSwitchEntityDescription( key="settings.rapidMode", name="Rapid Mode", icon="mdi:run-fast", - entity_category=EntityCategory.CONFIG, translation_key="rapid_mode", ), HonSwitchEntityDescription( key="settings.screenDisplayStatus", name="Screen Display", icon="mdi:monitor-small", - entity_category=EntityCategory.CONFIG, ), HonSwitchEntityDescription( key="settings.selfCleaning56Status", name="Self Cleaning 56", icon="mdi:air-filter", - entity_category=EntityCategory.CONFIG, translation_key="self_clean_56", ), HonSwitchEntityDescription( key="settings.selfCleaningStatus", name="Self Cleaning", icon="mdi:air-filter", - entity_category=EntityCategory.CONFIG, translation_key="self_clean", ), HonSwitchEntityDescription( key="settings.silentSleepStatus", name="Silent Sleep", icon="mdi:bed", - entity_category=EntityCategory.CONFIG, translation_key="silent_mode", ), ), + "REF": ( + HonSwitchEntityDescription( + key="settings.intelligenceMode", + name="Auto-Set Mode", + icon="mdi:thermometer-auto", + translation_key="auto_set", + ), + HonSwitchEntityDescription( + key="settings.quickModeZ1", + name="Super Freeze", + icon="mdi:snowflake-variant", + translation_key="super_freeze", + ), + HonSwitchEntityDescription( + key="settings.quickModeZ2", + name="Super Cool", + icon="mdi:snowflake", + translation_key="super_cool", + ), + ), } SWITCHES["WD"] = unique_entities(SWITCHES["WD"], SWITCHES["WM"]) @@ -386,7 +395,10 @@ class HonSwitchEntity(HonEntity, SwitchEntity): return self._device.get(self.entity_description.key, False) async def async_turn_on(self, **kwargs: Any) -> None: - if self.entity_category == EntityCategory.CONFIG: + if ( + self.entity_category == EntityCategory.CONFIG + or "settings." in self.entity_description.key + ): setting = self._device.settings[self.entity_description.key] setting.value = ( setting.max if isinstance(setting, HonParameterRange) else "1" @@ -394,14 +406,15 @@ class HonSwitchEntity(HonEntity, SwitchEntity): self.async_write_ha_state() if "settings." in self.entity_description.key: await self._device.commands["settings"].send() - elif self._device.appliance_type in ["AC"]: - await self._device.commands["startProgram"].send() await self.coordinator.async_refresh() else: await self._device.commands[self.entity_description.turn_on_key].send() async def async_turn_off(self, **kwargs: Any) -> None: - if self.entity_category == EntityCategory.CONFIG: + if ( + self.entity_category == EntityCategory.CONFIG + or "settings." in self.entity_description.key + ): setting = self._device.settings[self.entity_description.key] setting.value = ( setting.min if isinstance(setting, HonParameterRange) else "0" @@ -409,8 +422,6 @@ class HonSwitchEntity(HonEntity, SwitchEntity): self.async_write_ha_state() if "settings." in self.entity_description.key: await self._device.commands["settings"].send() - elif self._device.appliance_type in ["AC"]: - await self._device.commands["startProgram"].send() await self.coordinator.async_refresh() else: await self._device.commands[self.entity_description.turn_off_key].send() diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index 2f3fc35..45c7584 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -313,6 +313,12 @@ }, "humidity": { "name": "Vlhkost" + }, + "freezer_temp": { + "name": "Teplota mrazničky" + }, + "fridge_temp": { + "name": "Teplota chladničky" } }, "select": { @@ -1142,6 +1148,15 @@ }, "auto_dose_detergent": { "name": "Automatické dávkování Prací prostředek" + }, + "auto_set": { + "name": "Automatické nastavení" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index bcf3ca3..227cb6d 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -313,6 +313,12 @@ }, "humidity": { "name": "Luftfeuchtigkeit" + }, + "freezer_temp": { + "name": "Gefrierschrank-Temperatur" + }, + "fridge_temp": { + "name": "Temperatur des Kühlschranks" } }, "select": { @@ -1142,6 +1148,15 @@ }, "auto_dose_detergent": { "name": "Autodosierung Spülmittel" + }, + "auto_set": { + "name": "Auto-Set" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index a63b37d..43ae6ea 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -313,6 +313,12 @@ }, "humidity": { "name": "Υγρασία" + }, + "freezer_temp": { + "name": "Θερμοκρασία καταψύκτη" + }, + "fridge_temp": { + "name": "Θερμοκρασία ψυγείου" } }, "select": { @@ -1142,6 +1148,15 @@ }, "auto_dose_detergent": { "name": "Αυτόματη Δοσολογία Απορρυπαντικό" + }, + "auto_set": { + "name": "Αυτόματη ρύθμιση" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 981e064..632fd4d 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -372,6 +372,12 @@ }, "humidity": { "name": "Humidity" + }, + "freezer_temp": { + "name": "Freezer temperature" + }, + "fridge_temp": { + "name": "Fridge temperature" } }, "switch": { @@ -470,6 +476,15 @@ }, "auto_dose_detergent": { "name": "Autodose Detergent" + }, + "auto_set": { + "name": "Auto-Set" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" } }, "select": { diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index 9b5646c..6a75256 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -313,6 +313,12 @@ }, "humidity": { "name": "Humedad" + }, + "freezer_temp": { + "name": "Temperatura del congelador" + }, + "fridge_temp": { + "name": "Temperatura del frigorífico" } }, "select": { @@ -1142,6 +1148,15 @@ }, "auto_dose_detergent": { "name": "Dosificación automática Detergente" + }, + "auto_set": { + "name": "Auto-Set" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index dd26ebc..f296121 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -313,6 +313,12 @@ }, "humidity": { "name": "Humidité" + }, + "freezer_temp": { + "name": "Température du congélateur" + }, + "fridge_temp": { + "name": "Température du réfrigérateur" } }, "select": { @@ -1142,6 +1148,15 @@ }, "auto_dose_detergent": { "name": "Dose automatique Lessive" + }, + "auto_set": { + "name": "Réglage automatique" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index 07ee09d..b4c1d85 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -194,6 +194,12 @@ }, "humidity": { "name": "Humidity" + }, + "freezer_temp": { + "name": "Freezer temperature" + }, + "fridge_temp": { + "name": "Fridge temperature" } }, "select": { @@ -595,6 +601,15 @@ }, "auto_dose_detergent": { "name": "מינון אוטומטי חומר ניקוי" + }, + "auto_set": { + "name": "Auto-Set" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index 8df62bb..3bcaf38 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -313,6 +313,12 @@ }, "humidity": { "name": "Vlažnost" + }, + "freezer_temp": { + "name": "Temperatura zamrzivača" + }, + "fridge_temp": { + "name": "Temperatura hladnjaka" } }, "select": { @@ -1142,6 +1148,15 @@ }, "auto_dose_detergent": { "name": "Automatsko doziranje Deterdžent" + }, + "auto_set": { + "name": "Automatsko postavljanje" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index 7e23e09..93d6a54 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -365,6 +365,12 @@ }, "humidity": { "name": "Umidità" + }, + "freezer_temp": { + "name": "Temperatura del congelatore" + }, + "fridge_temp": { + "name": "Temperatura del frigorifero" } }, "select": { @@ -1194,6 +1200,15 @@ }, "auto_dose_detergent": { "name": "Autodose Detergente" + }, + "auto_set": { + "name": "Impostazione automatica" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index fb59800..da1e42e 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -313,6 +313,12 @@ }, "humidity": { "name": "Luchtvochtigheid" + }, + "freezer_temp": { + "name": "Vriezertemperatuur" + }, + "fridge_temp": { + "name": "Koelkasttemperatuur" } }, "select": { @@ -1142,6 +1148,15 @@ }, "auto_dose_detergent": { "name": "Automatisch doseren Wasmiddel" + }, + "auto_set": { + "name": "Automatisch instellen" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index 1f99cc2..e709445 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -313,6 +313,12 @@ }, "humidity": { "name": "Wilgotność" + }, + "freezer_temp": { + "name": "Temperatura zamrażarki" + }, + "fridge_temp": { + "name": "Temperatura lodówki" } }, "select": { @@ -1142,6 +1148,15 @@ }, "auto_dose_detergent": { "name": "Automatyczne dozowanie Detergent" + }, + "auto_set": { + "name": "Ustawianie automatyczne" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index c38ea95..3bdd0a7 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -313,6 +313,12 @@ }, "humidity": { "name": "Humidade" + }, + "freezer_temp": { + "name": "Temperatura do congelador" + }, + "fridge_temp": { + "name": "Temperatura do frigorífico" } }, "select": { @@ -1142,6 +1148,15 @@ }, "auto_dose_detergent": { "name": "Autodosagem Detergente" + }, + "auto_set": { + "name": "Ajuste automático" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index d8c3c7b..af0b9a6 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -313,6 +313,12 @@ }, "humidity": { "name": "Umiditate" + }, + "freezer_temp": { + "name": "Temperatura congelatorului" + }, + "fridge_temp": { + "name": "Temperatura frigiderului" } }, "select": { @@ -1142,6 +1148,15 @@ }, "auto_dose_detergent": { "name": "Autodozare Detergent" + }, + "auto_set": { + "name": "Setare automată" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index 3c9e3e5..78b9c58 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -313,6 +313,12 @@ }, "humidity": { "name": "Влажность" + }, + "freezer_temp": { + "name": "Температура в морозильном отделении" + }, + "fridge_temp": { + "name": "Температура в холодильнике" } }, "select": { @@ -1142,6 +1148,15 @@ }, "auto_dose_detergent": { "name": "Автодозирование Средство для стирки" + }, + "auto_set": { + "name": "Автоматическая установка" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index 2e8aaa5..584ad91 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -313,6 +313,12 @@ }, "humidity": { "name": "Vlhkosť" + }, + "freezer_temp": { + "name": "Teplota mrazničky" + }, + "fridge_temp": { + "name": "Teplota chladničky" } }, "select": { @@ -1142,6 +1148,15 @@ }, "auto_dose_detergent": { "name": "Automatická dávka Prací prostriedok" + }, + "auto_set": { + "name": "Automatické nastavenie" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index 33b6dc7..49369f3 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -313,6 +313,12 @@ }, "humidity": { "name": "Vlaga " + }, + "freezer_temp": { + "name": "Temperatura zamrzovalnika" + }, + "fridge_temp": { + "name": "Temperatura hladilnika" } }, "select": { @@ -1142,6 +1148,15 @@ }, "auto_dose_detergent": { "name": "Samodejno odmerjanje Detergent" + }, + "auto_set": { + "name": "Samodejna nastavitev" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index 15c382d..527189a 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -313,6 +313,12 @@ }, "humidity": { "name": "Vlažnost" + }, + "freezer_temp": { + "name": "Temperatura zamrzivača" + }, + "fridge_temp": { + "name": "Temperatura frižidera" } }, "select": { @@ -1142,6 +1148,15 @@ }, "auto_dose_detergent": { "name": "Automatsko doziranje Deterdžent" + }, + "auto_set": { + "name": "Automatsko podešavanje" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index 132a60e..f984169 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -313,6 +313,12 @@ }, "humidity": { "name": "Nem" + }, + "freezer_temp": { + "name": "Dondurucu sıcaklığı" + }, + "fridge_temp": { + "name": "Buzdolabı sıcaklığı" } }, "select": { @@ -1142,6 +1148,15 @@ }, "auto_dose_detergent": { "name": "Otomatik doz Deterjan" + }, + "auto_set": { + "name": "Otomatik Ayarla" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index 842186b..afc50dd 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -313,6 +313,12 @@ }, "humidity": { "name": "湿度" + }, + "freezer_temp": { + "name": "冷藏室温度" + }, + "fridge_temp": { + "name": "冰箱温度" } }, "select": { @@ -1142,6 +1148,15 @@ }, "auto_dose_detergent": { "name": "自动定量 洗涤剂" + }, + "auto_set": { + "name": "自动设置" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" } }, "binary_sensor": { diff --git a/scripts/generate_translation.py b/scripts/generate_translation.py index 973a4e3..08465ab 100755 --- a/scripts/generate_translation.py +++ b/scripts/generate_translation.py @@ -82,6 +82,9 @@ NAMES = { "WASHING_CMD&CTRL.DASHBOARD_MENU_MORE_SETTINGS_WATER.DETERGENT", ], "good_night": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.GOODNIGHT", + "auto_set": "REF_CMD&CTRL.MODALITIES.ECO", + "super_cool": "REF_CMD&CTRL.MODALITIES.SUPER_COOL", + "super_freeze": "REF_CMD&CTRL.MODALITIES.SUPER_FREEZE", }, "binary_sensor": { "door_lock": "WASHING_CMD&CTRL.CHECK_UP_RESULTS.DOOR_LOCK", @@ -171,6 +174,8 @@ NAMES = { "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_RESULT.WATER_EFFICIENCY", "CUBE90_GLOBAL.GENERAL.CURRENT", ], + "freezer_temp": "REF_CMD&CTRL.TEMPERATURE_DRAWER_FREEZER.FREEZER_TEMPERATURE_TITLE", + "fridge_temp": "REF_CMD&CTRL.TEMPERATURE_DRAWER_FRIDGE.FRIDGE_TEMPERATURE_TITLE", }, "number": { "power_management": "HINTS.COOKING_WITH_INDUCTION.POWER_MANAGEMENT", diff --git a/scripts/sensor_docs.py b/scripts/sensor_docs.py index 6514edd..f13345c 100755 --- a/scripts/sensor_docs.py +++ b/scripts/sensor_docs.py @@ -53,6 +53,7 @@ for entity_type, appliances in entities.items(): if ( isinstance(entity, HonSwitchEntityDescription) and entity.entity_category != "config" + and "settings." not in entity.key ): key = f"{entity.turn_on_key}` / `{entity.turn_off_key}" else: -- 2.39.5 From 617ea0f99a43b79c174d294e3446561d195f5c7a Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Tue, 16 May 2023 00:06:55 +0200 Subject: [PATCH 101/205] Fix wrong ac attribute #49 --- custom_components/hon/climate.py | 2 +- custom_components/hon/manifest.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/hon/climate.py b/custom_components/hon/climate.py index 0ad8994..7058ced 100644 --- a/custom_components/hon/climate.py +++ b/custom_components/hon/climate.py @@ -132,7 +132,7 @@ class HonClimateEntity(HonEntity, ClimateEntity): async def async_set_temperature(self, **kwargs): if (temperature := kwargs.get(ATTR_TEMPERATURE)) is None: return False - self._device.settings["settings.selTemp"].value = temperature + self._device.settings["settings.tempSel"].value = int(temperature) await self._device.commands["settings"].send() @callback diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index ab9352c..287afc9 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -7,5 +7,5 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": ["pyhOn==0.10.6"], - "version": "0.7.3" + "version": "0.8.0-beta.1" } -- 2.39.5 From fae4c4c87913b70daf96a8eb7f0a940c30a1765d Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Tue, 16 May 2023 20:34:05 +0200 Subject: [PATCH 102/205] Check remote control only if available, fix #50 --- custom_components/hon/button.py | 2 +- custom_components/hon/number.py | 2 +- custom_components/hon/select.py | 2 +- custom_components/hon/switch.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index ce8f9d4..b9063d0 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -69,7 +69,7 @@ class HonButtonEntity(HonEntity, ButtonEntity): """Return True if entity is available.""" return ( super().available - and self._device.get("remoteCtrValid") == "1" + and self._device.get("remoteCtrValid", "1") == "1" and self._device.get("attributes.lastConnEvent.category") != "DISCONNECTED" ) diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index 01aaac7..81e8d21 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -243,7 +243,7 @@ class HonNumberEntity(HonEntity, NumberEntity): else: return ( super().available - and self._device.get("remoteCtrValid") == "1" + and self._device.get("remoteCtrValid", "1") == "1" and self._device.get("attributes.lastConnEvent.category") != "DISCONNECTED" ) diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index 43b43ed..d769d3b 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -207,7 +207,7 @@ class HonSelectEntity(HonEntity, SelectEntity): else: return ( super().available - and self._device.get("remoteCtrValid") == "1" + and self._device.get("remoteCtrValid", "1") == "1" and self._device.get("attributes.lastConnEvent.category") != "DISCONNECTED" ) diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index b32ccba..5d58ef8 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -434,7 +434,7 @@ class HonSwitchEntity(HonEntity, SwitchEntity): else: return ( super().available - and self._device.get("remoteCtrValid") == "1" + and self._device.get("remoteCtrValid", "1") == "1" and self._device.get("attributes.lastConnEvent.category") != "DISCONNECTED" ) -- 2.39.5 From d39deba973aeaafd6386f34ce3d54304befaee5a Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Tue, 16 May 2023 20:52:17 +0200 Subject: [PATCH 103/205] Bump version --- custom_components/hon/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 287afc9..92a1db4 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -6,6 +6,6 @@ "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn==0.10.6"], - "version": "0.8.0-beta.1" + "requirements": ["pyhOn==0.10.7"], + "version": "0.8.0-beta.2" } -- 2.39.5 From a4ec3290bac34c24de3239aa16b808a723df4c97 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Wed, 17 May 2023 00:01:33 +0200 Subject: [PATCH 104/205] Many air conditioner fixes for #52 --- README.md | 23 ++++--- custom_components/hon/binary_sensor.py | 18 +++++- custom_components/hon/climate.py | 21 ++++--- custom_components/hon/config_flow.py | 2 +- custom_components/hon/const.py | 2 +- custom_components/hon/hon.py | 4 +- custom_components/hon/select.py | 1 - custom_components/hon/sensor.py | 70 +++++++++++++++++++++- custom_components/hon/switch.py | 26 +++++++- custom_components/hon/translations/cs.json | 3 + custom_components/hon/translations/de.json | 3 + custom_components/hon/translations/el.json | 3 + custom_components/hon/translations/en.json | 3 + custom_components/hon/translations/es.json | 3 + custom_components/hon/translations/fr.json | 3 + custom_components/hon/translations/he.json | 3 + custom_components/hon/translations/hr.json | 3 + custom_components/hon/translations/it.json | 3 + custom_components/hon/translations/nl.json | 3 + custom_components/hon/translations/pl.json | 3 + custom_components/hon/translations/pt.json | 3 + custom_components/hon/translations/ro.json | 3 + custom_components/hon/translations/ru.json | 3 + custom_components/hon/translations/sk.json | 3 + custom_components/hon/translations/sl.json | 3 + custom_components/hon/translations/sr.json | 3 + custom_components/hon/translations/tr.json | 3 + custom_components/hon/translations/zh.json | 3 + scripts/generate_translation.py | 1 + scripts/sensor_docs.py | 4 +- 30 files changed, 199 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index 9e2d912..45595e8 100644 --- a/README.md +++ b/README.md @@ -155,6 +155,7 @@ For every device exists a hidden button which can be used to log all infos of yo | Air Conditioner | `air-conditioner` | `climate` | `settings` | | Echo | `account-voice` | `switch` | `settings.echoStatus` | | Eco Mode | | `switch` | `settings.ecoMode` | +| Eco Pilot | `run` | `select` | `settings.humanSensingStatus` | | Health Mode | `medication-outline` | `switch` | `settings.healthMode` | | Mute | `volume-off` | `switch` | `settings.muteStatus` | | Rapid Mode | `run-fast` | `switch` | `settings.rapidMode` | @@ -162,15 +163,21 @@ For every device exists a hidden button which can be used to log all infos of yo | Self Cleaning | `air-filter` | `switch` | `settings.selfCleaningStatus` | | Self Cleaning 56 | `air-filter` | `switch` | `settings.selfCleaning56Status` | | Silent Sleep | `bed` | `switch` | `settings.silentSleepStatus` | -#### Configs -| Name | Icon | Entity | Key | -| --- | --- | --- | --- | -| Program | | `select` | `startProgram.program` | +| Target Temperature | `thermometer` | `number` | `settings.tempSel` | #### Sensors | Name | Icon | Entity | Key | | --- | --- | --- | --- | -| Eco Pilot | `run` | `select` | `settings.humanSensingStatus` | -| Target Temperature | `thermometer` | `number` | `settings.tempSel` | +| Air Temperature Outdoor | `thermometer` | `sensor` | `tempAirOutdoor` | +| Ch2O Cleaning | | `binary_sensor` | `ch2oCleaningStatus` | +| Coiler Temperature Indoor | `thermometer` | `sensor` | `tempCoilerIndoor` | +| Coiler Temperature Outside | `thermometer` | `sensor` | `tempCoilerOutdoor` | +| Defrost Temperature Outdoor | `thermometer` | `sensor` | `tempDefrostOutdoor` | +| Filter Replacement | | `binary_sensor` | `filterChangeStatusLocal` | +| In Air Temperature Outdoor | `thermometer` | `sensor` | `tempInAirOutdoor` | +| Indoor Temperature | `thermometer` | `sensor` | `tempIndoor` | +| Outdoor Temperature | `thermometer` | `sensor` | `tempOutdoor` | +| Program | | `select` | `startProgram.program` | +| Selected Temperature | `thermometer` | `sensor` | `tempSel` | ### Dish washer #### Controls @@ -262,6 +269,8 @@ For every device exists a hidden button which can be used to log all infos of yo | Name | Icon | Entity | Key | | --- | --- | --- | --- | | Auto-Set Mode | `thermometer-auto` | `switch` | `settings.intelligenceMode` | +| Freezer Temperature | `thermometer` | `number` | `settings.tempSelZ2` | +| Fridge Temperature | `thermometer` | `number` | `settings.tempSelZ1` | | Super Cool | `snowflake` | `switch` | `settings.quickModeZ2` | | Super Freeze | `snowflake-variant` | `switch` | `settings.quickModeZ1` | #### Configs @@ -274,8 +283,6 @@ For every device exists a hidden button which can be used to log all infos of yo | Auto-Set Mode | `thermometer-auto` | `binary_sensor` | `intelligenceMode` | | Door Status Freezer | `fridge-top` | `binary_sensor` | `doorStatusZ1` | | Door Status Fridge | `fridge-bottom` | `binary_sensor` | `door2StatusZ1` | -| Freezer Temperature | `thermometer` | `number` | `settings.tempSelZ2` | -| Fridge Temperature | `thermometer` | `number` | `settings.tempSelZ1` | | Holiday Mode | `palm-tree` | `binary_sensor` | `holidayMode` | | Room Humidity | `water-percent` | `sensor` | `humidityEnv` | | Room Temperature | `home-thermometer-outline` | `sensor` | `tempEnv` | diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index e9d3e0b..0a44cd9 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -1,6 +1,8 @@ import logging from dataclasses import dataclass +from pyhon import Hon + from homeassistant.components.binary_sensor import ( BinarySensorEntityDescription, BinarySensorDeviceClass, @@ -8,8 +10,6 @@ from homeassistant.components.binary_sensor import ( ) from homeassistant.config_entries import ConfigEntry from homeassistant.core import callback -from pyhon import Hon - from .const import DOMAIN from .hon import HonCoordinator, HonEntity, unique_entities @@ -179,6 +179,20 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { translation_key="door_open", ), ), + "AC": ( + HonBinarySensorEntityDescription( + key="filterChangeStatusLocal", + name="Filter Replacement", + device_class=BinarySensorDeviceClass.PROBLEM, + on_value="1", + translation_key="filter_replacement", + ), + HonBinarySensorEntityDescription( + key="ch2oCleaningStatus", + name="Ch2O Cleaning", + on_value="1", + ), + ), "REF": ( HonBinarySensorEntityDescription( key="quickModeZ2", diff --git a/custom_components/hon/climate.py b/custom_components/hon/climate.py index 7058ced..29b7764 100644 --- a/custom_components/hon/climate.py +++ b/custom_components/hon/climate.py @@ -1,5 +1,8 @@ import logging +from pyhon import Hon +from pyhon.appliance import HonAppliance + from homeassistant.components.climate import ( ClimateEntity, ClimateEntityDescription, @@ -20,9 +23,6 @@ from homeassistant.const import ( TEMP_CELSIUS, ) from homeassistant.core import callback -from pyhon import Hon -from pyhon.appliance import HonAppliance - from .const import HON_HVAC_MODE, HON_FAN, HON_HVAC_PROGRAM, DOMAIN from .hon import HonEntity, HonCoordinator @@ -107,6 +107,7 @@ class HonClimateEntity(HonEntity, ClimateEntity): ] await self._device.commands["startProgram"].send() self._attr_hvac_mode = hvac_mode + self.async_write_ha_state() async def async_set_fan_mode(self, fan_mode): mode_number = list(HON_FAN.values()).index(fan_mode) @@ -114,6 +115,7 @@ class HonClimateEntity(HonEntity, ClimateEntity): mode_number ] await self._device.commands["settings"].send() + self.async_write_ha_state() async def async_set_swing_mode(self, swing_mode): horizontal = self._device.settings["settings.windDirectionHorizontal"] @@ -128,29 +130,29 @@ class HonClimateEntity(HonEntity, ClimateEntity): horizontal.value = "0" self._attr_swing_mode = swing_mode await self._device.commands["settings"].send() + self.async_write_ha_state() async def async_set_temperature(self, **kwargs): if (temperature := kwargs.get(ATTR_TEMPERATURE)) is None: return False - self._device.settings["settings.tempSel"].value = int(temperature) + self._device.settings["settings.tempSel"].value = str(int(temperature)) await self._device.commands["settings"].send() + self.async_write_ha_state() @callback def _handle_coordinator_update(self, update=True) -> None: self._attr_target_temperature = int(float(self._device.get("tempSel"))) self._attr_current_temperature = float(self._device.get("tempIndoor")) - self._attr_max_temp = self._device.settings["settings.tempSel"].max - self._attr_min_temp = self._device.settings["settings.tempSel"].min if self._device.get("onOffStatus") == "0": self._attr_hvac_mode = HVACMode.OFF else: self._attr_hvac_mode = HON_HVAC_MODE[self._device.get("machMode") or "0"] - self._attr_fan_mode = HON_FAN[self._device.settings["settings.windSpeed"].value] + self._attr_fan_mode = HON_FAN[self._device.get("windSpeed")] - horizontal = self._device.settings["settings.windDirectionHorizontal"] - vertical = self._device.settings["settings.windDirectionVertical"] + horizontal = self._device.get("windDirectionHorizontal") + vertical = self._device.get("windDirectionVertical") if horizontal == "7" and vertical == "8": self._attr_swing_mode = SWING_BOTH elif horizontal == "7": @@ -159,3 +161,4 @@ class HonClimateEntity(HonEntity, ClimateEntity): self._attr_swing_mode = SWING_VERTICAL else: self._attr_swing_mode = SWING_OFF + self.async_write_ha_state() diff --git a/custom_components/hon/config_flow.py b/custom_components/hon/config_flow.py index e084ce9..468ba42 100644 --- a/custom_components/hon/config_flow.py +++ b/custom_components/hon/config_flow.py @@ -1,9 +1,9 @@ import logging import voluptuous as vol + from homeassistant import config_entries from homeassistant.const import CONF_EMAIL, CONF_PASSWORD - from .const import DOMAIN _LOGGER = logging.getLogger(__name__) diff --git a/custom_components/hon/const.py b/custom_components/hon/const.py index 03b73be..e441167 100644 --- a/custom_components/hon/const.py +++ b/custom_components/hon/const.py @@ -21,7 +21,7 @@ PLATFORMS = [ HON_HVAC_MODE = { "0": HVACMode.AUTO, "1": HVACMode.COOL, - "2": HVACMode.COOL, + "2": HVACMode.DRY, "3": HVACMode.DRY, "4": HVACMode.HEAT, "5": HVACMode.FAN_ONLY, diff --git a/custom_components/hon/hon.py b/custom_components/hon/hon.py index a446fb8..ea171db 100644 --- a/custom_components/hon/hon.py +++ b/custom_components/hon/hon.py @@ -1,11 +1,11 @@ import logging from datetime import timedelta +from pyhon.appliance import HonAppliance + from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.update_coordinator import CoordinatorEntity from homeassistant.helpers.update_coordinator import DataUpdateCoordinator -from pyhon.appliance import HonAppliance - from .const import DOMAIN _LOGGER = logging.getLogger(__name__) diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index d769d3b..6f66cf4 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -108,7 +108,6 @@ SELECTS = { SelectEntityDescription( key="startProgram.program", name="Program", - entity_category=EntityCategory.CONFIG, translation_key="programs_ac", ), SelectEntityDescription( diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 14956b6..72520d3 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -1,5 +1,7 @@ import logging +from pyhon import Hon + from homeassistant.components.sensor import ( SensorEntity, SensorDeviceClass, @@ -20,8 +22,6 @@ from homeassistant.const import ( from homeassistant.core import callback from homeassistant.helpers.entity import EntityCategory from homeassistant.helpers.typing import StateType -from pyhon import Hon - from . import const from .const import DOMAIN from .hon import HonCoordinator, HonEntity, unique_entities @@ -399,6 +399,72 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { options=list(const.DISHWASHER_PR_PHASE), ), ), + "AC": ( + SensorEntityDescription( + key="tempAirOutdoor", + name="Air Temperature Outdoor", + icon="mdi:thermometer", + state_class=SensorStateClass.MEASUREMENT, + device_class=SensorDeviceClass.TEMPERATURE, + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + ), + SensorEntityDescription( + key="tempCoilerIndoor", + name="Coiler Temperature Indoor", + icon="mdi:thermometer", + state_class=SensorStateClass.MEASUREMENT, + device_class=SensorDeviceClass.TEMPERATURE, + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + ), + SensorEntityDescription( + key="tempCoilerOutdoor", + name="Coiler Temperature Outside", + icon="mdi:thermometer", + state_class=SensorStateClass.MEASUREMENT, + device_class=SensorDeviceClass.TEMPERATURE, + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + ), + SensorEntityDescription( + key="tempDefrostOutdoor", + name="Defrost Temperature Outdoor", + icon="mdi:thermometer", + state_class=SensorStateClass.MEASUREMENT, + device_class=SensorDeviceClass.TEMPERATURE, + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + ), + SensorEntityDescription( + key="tempInAirOutdoor", + name="In Air Temperature Outdoor", + icon="mdi:thermometer", + state_class=SensorStateClass.MEASUREMENT, + device_class=SensorDeviceClass.TEMPERATURE, + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + ), + SensorEntityDescription( + key="tempIndoor", + name="Indoor Temperature", + icon="mdi:thermometer", + state_class=SensorStateClass.MEASUREMENT, + device_class=SensorDeviceClass.TEMPERATURE, + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + ), + SensorEntityDescription( + key="tempOutdoor", + name="Outdoor Temperature", + icon="mdi:thermometer", + state_class=SensorStateClass.MEASUREMENT, + device_class=SensorDeviceClass.TEMPERATURE, + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + ), + SensorEntityDescription( + key="tempSel", + name="Selected Temperature", + icon="mdi:thermometer", + state_class=SensorStateClass.MEASUREMENT, + device_class=SensorDeviceClass.TEMPERATURE, + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + ), + ), "REF": ( SensorEntityDescription( key="humidityEnv", diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 5d58ef8..cf71aed 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -2,13 +2,14 @@ import logging from dataclasses import dataclass from typing import Any -from homeassistant.components.switch import SwitchEntityDescription, SwitchEntity -from homeassistant.config_entries import ConfigEntry -from homeassistant.const import EntityCategory from pyhon import Hon from pyhon.appliance import HonAppliance from pyhon.parameter.range import HonParameterRange +from homeassistant.components.switch import SwitchEntityDescription, SwitchEntity +from homeassistant.config_entries import ConfigEntry +from homeassistant.const import EntityCategory +from homeassistant.core import callback from .const import DOMAIN from .hon import HonCoordinator, HonEntity, unique_entities @@ -19,6 +20,7 @@ _LOGGER = logging.getLogger(__name__) class HonSwitchEntityDescriptionMixin: turn_on_key: str = "" turn_off_key: str = "" + status_key: str = "" @dataclass @@ -251,12 +253,14 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { "AC": ( HonSwitchEntityDescription( key="settings.10degreeHeatingStatus", + status_key="10degreeHeatingStatus", name="10° Heating", icon="mdi:heat-wave", translation_key="10_degree_heating", ), HonSwitchEntityDescription( key="settings.echoStatus", + status_key="echoStatus", name="Echo", icon="mdi:account-voice", ), @@ -267,23 +271,27 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { ), HonSwitchEntityDescription( key="settings.healthMode", + status_key="healthMode", name="Health Mode", icon="mdi:medication-outline", ), HonSwitchEntityDescription( key="settings.muteStatus", + status_key="muteStatus", name="Mute", icon="mdi:volume-off", translation_key="mute_mode", ), HonSwitchEntityDescription( key="settings.rapidMode", + status_key="rapidMode", name="Rapid Mode", icon="mdi:run-fast", translation_key="rapid_mode", ), HonSwitchEntityDescription( key="settings.screenDisplayStatus", + status_key="screenDisplayStatus", name="Screen Display", icon="mdi:monitor-small", ), @@ -295,12 +303,14 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { ), HonSwitchEntityDescription( key="settings.selfCleaningStatus", + status_key="selfCleaningStatus", name="Self Cleaning", icon="mdi:air-filter", translation_key="self_clean", ), HonSwitchEntityDescription( key="settings.silentSleepStatus", + status_key="silentSleepStatus", name="Silent Sleep", icon="mdi:bed", translation_key="silent_mode", @@ -392,6 +402,8 @@ class HonSwitchEntity(HonEntity, SwitchEntity): or hasattr(setting, "min") and setting.value != setting.min ) + elif self.entity_description.status_key: + return self._device.get(self.entity_description.status_key, "0") == "1" return self._device.get(self.entity_description.key, False) async def async_turn_on(self, **kwargs: Any) -> None: @@ -438,3 +450,11 @@ class HonSwitchEntity(HonEntity, SwitchEntity): and self._device.get("attributes.lastConnEvent.category") != "DISCONNECTED" ) + + @callback + def _handle_coordinator_update(self): + if not self.entity_description.status_key: + return + value = self._device.get(self.entity_description.status_key, "0") + self._attr_state = value == "1" + self.async_write_ha_state() diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index 45c7584..6e469fa 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -1255,6 +1255,9 @@ }, "fridge_door": { "name": "Otevřená dvířka Chladnička" + }, + "filter_replacement": { + "name": "Výměna filtru" } }, "number": { diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index 227cb6d..8ce7b77 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -1255,6 +1255,9 @@ }, "fridge_door": { "name": "Tür offen Kühlschrank" + }, + "filter_replacement": { + "name": "Filteraustausch" } }, "number": { diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index 43ae6ea..5eb9b50 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -1255,6 +1255,9 @@ }, "fridge_door": { "name": "Πόρτα ανοιχτή Ψυγείο" + }, + "filter_replacement": { + "name": "Αντικατάσταση φίλτρου" } }, "number": { diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 632fd4d..cbb5df0 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -1323,6 +1323,9 @@ }, "fridge_door": { "name": "Door open Fridge" + }, + "filter_replacement": { + "name": "Filter replacement" } }, "number": { diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index 6a75256..fba0c2b 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -1255,6 +1255,9 @@ }, "fridge_door": { "name": "Puerta abierta Frigorífico" + }, + "filter_replacement": { + "name": "Sustitución del filtro" } }, "number": { diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index f296121..1370cd0 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -1255,6 +1255,9 @@ }, "fridge_door": { "name": "Porte ouverte Réfrigérateur" + }, + "filter_replacement": { + "name": "Remplacement du filtre" } }, "number": { diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index b4c1d85..84b8d8c 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -708,6 +708,9 @@ }, "fridge_door": { "name": "Door open Fridge" + }, + "filter_replacement": { + "name": "Filter replacement" } }, "number": { diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index 3bcaf38..cd3c594 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -1255,6 +1255,9 @@ }, "fridge_door": { "name": "Otvorena vrata Hladnjak" + }, + "filter_replacement": { + "name": "Zamjena filtra" } }, "number": { diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index 93d6a54..f90510f 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -1307,6 +1307,9 @@ }, "fridge_door": { "name": "Porta aperta Frigorifero" + }, + "filter_replacement": { + "name": "Sostituzione filtro" } }, "number": { diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index da1e42e..fbbf1c3 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -1255,6 +1255,9 @@ }, "fridge_door": { "name": "Deur open Koelkast" + }, + "filter_replacement": { + "name": "Filter vervangen" } }, "number": { diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index e709445..5a4dd32 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -1255,6 +1255,9 @@ }, "fridge_door": { "name": "Drzwi otwarte Lodówka" + }, + "filter_replacement": { + "name": "Wymiana filtra" } }, "number": { diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index 3bdd0a7..81e669f 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -1255,6 +1255,9 @@ }, "fridge_door": { "name": "Porta aberta Frigorífico" + }, + "filter_replacement": { + "name": "Substituição do filtro" } }, "number": { diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index af0b9a6..7ed2d58 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -1255,6 +1255,9 @@ }, "fridge_door": { "name": "Ușă deschisă Frigider" + }, + "filter_replacement": { + "name": "Înlocuirea filtrului" } }, "number": { diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index 78b9c58..b828f6b 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -1255,6 +1255,9 @@ }, "fridge_door": { "name": "Дверца открыта Холодильник" + }, + "filter_replacement": { + "name": "Замена фильтра" } }, "number": { diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index 584ad91..29d2542 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -1255,6 +1255,9 @@ }, "fridge_door": { "name": "Otvorené dvere Chladnička" + }, + "filter_replacement": { + "name": "Výmena filtra" } }, "number": { diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index 49369f3..bad6238 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -1255,6 +1255,9 @@ }, "fridge_door": { "name": "Door open Hladilnik" + }, + "filter_replacement": { + "name": "Menjava filtra" } }, "number": { diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index 527189a..84f3d08 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -1255,6 +1255,9 @@ }, "fridge_door": { "name": "Vrata su otvorena Frižider" + }, + "filter_replacement": { + "name": "Zamena filtera" } }, "number": { diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index f984169..ca30528 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -1255,6 +1255,9 @@ }, "fridge_door": { "name": "Kapı açık Buzdolabı" + }, + "filter_replacement": { + "name": "Filtre değişimi" } }, "number": { diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index afc50dd..756c123 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -1255,6 +1255,9 @@ }, "fridge_door": { "name": "门打开 冰箱" + }, + "filter_replacement": { + "name": "更换过滤器" } }, "number": { diff --git a/scripts/generate_translation.py b/scripts/generate_translation.py index 08465ab..6c1bd79 100755 --- a/scripts/generate_translation.py +++ b/scripts/generate_translation.py @@ -112,6 +112,7 @@ NAMES = { "super_freeze": "REF_CMD&CTRL.MODALITIES.SUPER_FREEZE", "freezer_door": ["GLOBALS.APPLIANCE_STATUS.DOOR_OPEN", "REF.ZONES.FREEZER"], "fridge_door": ["GLOBALS.APPLIANCE_STATUS.DOOR_OPEN", "REF.ZONES.FRIDGE"], + "filter_replacement": "AP.MAINTENANCE.FILTER_REPLACEMENT", }, "button": { "induction_hob": "GLOBALS.APPLIANCES_NAME.IH", diff --git a/scripts/sensor_docs.py b/scripts/sensor_docs.py index f13345c..022027c 100755 --- a/scripts/sensor_docs.py +++ b/scripts/sensor_docs.py @@ -61,7 +61,9 @@ for entity_type, appliances in entities.items(): attributes = (key, entity.name, entity.icon, entity_type) category = ( "control" - if entity_type in ["switch", "button", "climate"] + if entity.key.startswith("settings") + or hasattr(entity, "turn_on_key") + or entity_type in ["button", "climate"] else "sensor" ) result.setdefault(appliance, {}).setdefault( -- 2.39.5 From 29238d3d08008262faa48216c347affb8b018e41 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Thu, 18 May 2023 23:48:19 +0200 Subject: [PATCH 105/205] Add supported devices --- README.md | 3 +++ custom_components/hon/manifest.json | 2 +- info.md | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 45595e8..64e5ca8 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,10 @@ Translation of internal names like programs are available for all languages whic ## Supported Models Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +- Haier AD105S2SM3FA - Haier AS25PBAHRA +- Haier AS25TADHRA-2 +- Haier AS35TADHRA-2 - Haier EG9012B19SU1JD - Haier HD80-A3959 - Haier HW90-B14TEAM5 diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 92a1db4..2b1cb6a 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -7,5 +7,5 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": ["pyhOn==0.10.7"], - "version": "0.8.0-beta.2" + "version": "0.8.0-beta.3" } diff --git a/info.md b/info.md index a1bb002..56ca7b7 100644 --- a/info.md +++ b/info.md @@ -49,7 +49,10 @@ Translation of internal names like programs are available for all languages whic ## Supported Models Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +- Haier AD105S2SM3FA - Haier AS25PBAHRA +- Haier AS25TADHRA-2 +- Haier AS35TADHRA-2 - Haier EG9012B19SU1JD - Haier HD80-A3959 - Haier HW90-B14TEAM5 -- 2.39.5 From d963086dbf9373fc0fe5395cf3e333ff396b2fcc Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Fri, 19 May 2023 01:27:44 +0200 Subject: [PATCH 106/205] Fix climate not available #52 --- custom_components/hon/binary_sensor.py | 2 -- custom_components/hon/button.py | 10 ++++------ custom_components/hon/climate.py | 12 +++++------- custom_components/hon/hon.py | 1 + custom_components/hon/manifest.json | 4 ++-- custom_components/hon/number.py | 2 -- custom_components/hon/select.py | 2 -- custom_components/hon/sensor.py | 2 -- custom_components/hon/switch.py | 3 +-- 9 files changed, 13 insertions(+), 25 deletions(-) diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index 0a44cd9..469ee17 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -278,8 +278,6 @@ class HonBinarySensorEntity(HonEntity, BinarySensorEntity): def __init__(self, hass, coordinator, entry, device, description) -> None: super().__init__(hass, entry, coordinator, device) - self._coordinator = coordinator - self.entity_description = description self._attr_unique_id = f"{super().unique_id}{description.key}" diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index b9063d0..c627131 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -56,8 +56,6 @@ class HonButtonEntity(HonEntity, ButtonEntity): ) -> None: super().__init__(hass, entry, coordinator, device) - self._coordinator = coordinator - self._device = device self.entity_description = description self._attr_unique_id = f"{super().unique_id}{description.key}" @@ -77,9 +75,7 @@ class HonButtonEntity(HonEntity, ButtonEntity): class HonFeatureRequestButton(HonEntity, ButtonEntity): def __init__(self, hass, coordinator, entry, device: HonAppliance) -> None: super().__init__(hass, entry, coordinator, device) - self._hass = hass - self._device = device self._attr_unique_id = f"{super().unique_id}_log_device_info" self._attr_icon = "mdi:information" self._attr_name = "Show Device Info" @@ -88,7 +84,9 @@ class HonFeatureRequestButton(HonEntity, ButtonEntity): async def async_press(self) -> None: pyhon_version = pkg_resources.get_distribution("pyhon").version - info = f"Device Info:\n{self._device.diagnose()}pyhOnVersion: {pyhon_version}" + info = f"{self._device.diagnose()}pyhOnVersion: {pyhon_version}" title = f"{self._device.nick_name} Device Info" - persistent_notification.create(self._hass, f"```\n```{info}```\n```", title) + persistent_notification.create( + self._hass, f"````\n```\n{info}\n```\n````", title + ) _LOGGER.info(info.replace(" ", "\u200B ")) diff --git a/custom_components/hon/climate.py b/custom_components/hon/climate.py index 29b7764..e8b55b1 100644 --- a/custom_components/hon/climate.py +++ b/custom_components/hon/climate.py @@ -56,8 +56,8 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non for description in descriptions: if description.key not in list(device.commands): continue - appliances.extend( - [HonClimateEntity(hass, coordinator, entry, device, description)] + appliances.append( + HonClimateEntity(hass, coordinator, entry, device, description) ) async_add_entities(appliances) @@ -67,10 +67,7 @@ class HonClimateEntity(HonEntity, ClimateEntity): self, hass, coordinator, entry, device: HonAppliance, description ) -> None: super().__init__(hass, entry, coordinator, device) - self._coordinator = coordinator - self._device = device self.entity_description = description - self._hass = hass self._attr_unique_id = f"{super().unique_id}climate" self._attr_temperature_unit = TEMP_CELSIUS @@ -96,7 +93,7 @@ class HonClimateEntity(HonEntity, ClimateEntity): | ClimateEntityFeature.SWING_MODE ) - self._handle_coordinator_update() + self._handle_coordinator_update(update=False) async def async_set_hvac_mode(self, hvac_mode): if hvac_mode == HVACMode.OFF: @@ -161,4 +158,5 @@ class HonClimateEntity(HonEntity, ClimateEntity): self._attr_swing_mode = SWING_VERTICAL else: self._attr_swing_mode = SWING_OFF - self.async_write_ha_state() + if update: + self.async_write_ha_state() diff --git a/custom_components/hon/hon.py b/custom_components/hon/hon.py index ea171db..c88283b 100644 --- a/custom_components/hon/hon.py +++ b/custom_components/hon/hon.py @@ -19,6 +19,7 @@ class HonEntity(CoordinatorEntity): self._hon = hass.data[DOMAIN][entry.unique_id] self._hass = hass + self._coordinator = coordinator self._device = device self._attr_unique_id = self._device.unique_id diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 2b1cb6a..206782d 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -6,6 +6,6 @@ "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn==0.10.7"], - "version": "0.8.0-beta.3" + "requirements": ["pyhOn==0.10.9"], + "version": "0.8.0-beta.4" } diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index 81e8d21..bf1d8f3 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -200,8 +200,6 @@ class HonNumberEntity(HonEntity, NumberEntity): def __init__(self, hass, coordinator, entry, device, description) -> None: super().__init__(hass, entry, coordinator, device) - self._coordinator = coordinator - self._device = device self._data = device.settings[description.key] self.entity_description = description self._attr_unique_id = f"{super().unique_id}{description.key}" diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index 6f66cf4..b413ff3 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -158,8 +158,6 @@ class HonSelectEntity(HonEntity, SelectEntity): ) -> None: super().__init__(hass, entry, coordinator, device) - self._coordinator = coordinator - self._device = device self.entity_description = description self._attr_unique_id = f"{super().unique_id}{description.key}" diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 72520d3..d963427 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -536,8 +536,6 @@ class HonSensorEntity(HonEntity, SensorEntity): def __init__(self, hass, coordinator, entry, device, description) -> None: super().__init__(hass, entry, coordinator, device) - self._coordinator = coordinator - self.entity_description = description self._attr_unique_id = f"{super().unique_id}{description.key}" diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index cf71aed..8fca28a 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -387,8 +387,7 @@ class HonSwitchEntity(HonEntity, SwitchEntity): description: HonSwitchEntityDescription, ) -> None: super().__init__(hass, entry, coordinator, device) - self._coordinator = coordinator - self._device = device + self.entity_description = description self._attr_unique_id = f"{super().unique_id}{description.key}" -- 2.39.5 From 833c395c9735903f52b54d22c388dc8fa71471a1 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sat, 20 May 2023 13:28:18 +0200 Subject: [PATCH 107/205] Bump pyhon --- custom_components/hon/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 206782d..b2dc291 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -6,6 +6,6 @@ "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn==0.10.9"], - "version": "0.8.0-beta.4" + "requirements": ["pyhOn==0.10.10"], + "version": "0.8.0-beta.5" } -- 2.39.5 From bf1a6e8fe26a87342ff8ee28ff10a64be88a1bbe Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sun, 21 May 2023 20:51:20 +0200 Subject: [PATCH 108/205] Improve fridge support #41 --- README.md | 6 ++ custom_components/hon/button.py | 14 ++++ custom_components/hon/const.py | 7 ++ custom_components/hon/manifest.json | 8 +- custom_components/hon/number.py | 2 +- custom_components/hon/select.py | 7 ++ custom_components/hon/sensor.py | 3 + custom_components/hon/switch.py | 48 ++++++++---- custom_components/hon/translations/cs.json | 56 ++++++++++---- custom_components/hon/translations/de.json | 46 ++++++++--- custom_components/hon/translations/el.json | 42 ++++++++--- custom_components/hon/translations/en.json | 74 +++++++++++------- custom_components/hon/translations/es.json | 54 +++++++++---- custom_components/hon/translations/fr.json | 58 +++++++++----- custom_components/hon/translations/he.json | 21 +++++- custom_components/hon/translations/hr.json | 48 +++++++++--- custom_components/hon/translations/it.json | 88 ++++++++++++++-------- custom_components/hon/translations/nl.json | 42 ++++++++--- custom_components/hon/translations/pl.json | 46 ++++++++--- custom_components/hon/translations/pt.json | 64 +++++++++++----- custom_components/hon/translations/ro.json | 40 ++++++++-- custom_components/hon/translations/ru.json | 46 ++++++++--- custom_components/hon/translations/sk.json | 50 ++++++++---- custom_components/hon/translations/sl.json | 50 ++++++++---- custom_components/hon/translations/sr.json | 48 +++++++++--- custom_components/hon/translations/tr.json | 48 +++++++++--- custom_components/hon/translations/zh.json | 44 ++++++++--- info.md | 1 + scripts/generate_translation.py | 5 ++ 29 files changed, 788 insertions(+), 278 deletions(-) diff --git a/README.md b/README.md index 64e5ca8..8df2315 100644 --- a/README.md +++ b/README.md @@ -72,6 +72,7 @@ Support has been confirmed for these models, but many more will work. Please add - Haier HWO60SM2F3XH - Haier XIB 3B2SFS-80 - Haier XIB 6B2D3FB +- Candy BCTDH7A1TE - Candy CIS633SCTTWIFI - Candy CSOE C10DE-80 - Candy ROE H9A3TCEX-S @@ -274,18 +275,23 @@ For every device exists a hidden button which can be used to log all infos of yo | Auto-Set Mode | `thermometer-auto` | `switch` | `settings.intelligenceMode` | | Freezer Temperature | `thermometer` | `number` | `settings.tempSelZ2` | | Fridge Temperature | `thermometer` | `number` | `settings.tempSelZ1` | +| Holiday Mode | `palm-tree` | `switch` | `settings.holidayMode` | +| Program Start | `play` | `button` | `startProgram` | +| Program Stop | `stop` | `button` | `stopProgram` | | Super Cool | `snowflake` | `switch` | `settings.quickModeZ2` | | Super Freeze | `snowflake-variant` | `switch` | `settings.quickModeZ1` | #### Configs | Name | Icon | Entity | Key | | --- | --- | --- | --- | | Program | | `select` | `startProgram.program` | +| Zone | `radiobox-marked` | `select` | `startProgram.zone` | #### Sensors | Name | Icon | Entity | Key | | --- | --- | --- | --- | | Auto-Set Mode | `thermometer-auto` | `binary_sensor` | `intelligenceMode` | | Door Status Freezer | `fridge-top` | `binary_sensor` | `doorStatusZ1` | | Door Status Fridge | `fridge-bottom` | `binary_sensor` | `door2StatusZ1` | +| Error | `math-log` | `sensor` | `errors` | | Holiday Mode | `palm-tree` | `binary_sensor` | `holidayMode` | | Room Humidity | `water-percent` | `sensor` | `humidityEnv` | | Room Temperature | `home-thermometer-outline` | `sensor` | `tempEnv` | diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index c627131..160e450 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -23,6 +23,20 @@ BUTTONS: dict[str, tuple[ButtonEntityDescription, ...]] = { translation_key="induction_hob", ), ), + "REF": ( + ButtonEntityDescription( + key="startProgram", + name="Program Start", + icon="mdi:play", + translation_key="start_program", + ), + ButtonEntityDescription( + key="stopProgram", + name="Program Stop", + icon="mdi:stop", + translation_key="stop_program", + ), + ), } diff --git a/custom_components/hon/const.py b/custom_components/hon/const.py index e441167..398f88a 100644 --- a/custom_components/hon/const.py +++ b/custom_components/hon/const.py @@ -180,6 +180,13 @@ AC_HUMAN_SENSE = { "2": "AC.PROGRAM_DETAIL.FOLLOW_TOUCH", } +REF_ZONES = { + "fridge": "REF.ZONES.FRIDGE", + "freezer": "REF.ZONES.FREEZER", + "vtRoom1": "REF.ZONES.MY_ZONE_1", + "[fridge|freezer]": ["REF.ZONES.FRIDGE", " & ", "REF.ZONES.FREEZER"], +} + PROGRAMS_TD = [ "active_dry", "allergy_care", diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index b2dc291..6762874 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -1,11 +1,15 @@ { "domain": "hon", "name": "Haier hOn", - "codeowners": ["@Andre0512"], + "codeowners": [ + "@Andre0512" + ], "config_flow": true, "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn==0.10.10"], + "requirements": [ + "pyhOn==0.11.0" + ], "version": "0.8.0-beta.5" } diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index bf1d8f3..dbca6dc 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -216,7 +216,7 @@ class HonNumberEntity(HonEntity, NumberEntity): async def async_set_native_value(self, value: float) -> None: setting = self._device.settings[self.entity_description.key] if not ( - isinstance(setting, HonParameter) or isinstance(setting, HonParameterFixed) + type(setting) == HonParameter or isinstance(setting, HonParameterFixed) ): setting.value = value if "settings." in self.entity_description.key: diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index b413ff3..40764f8 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -124,6 +124,13 @@ SELECTS = { entity_category=EntityCategory.CONFIG, translation_key="programs_ref", ), + SelectEntityDescription( + key="startProgram.zone", + name="Zone", + icon="mdi:radiobox-marked", + entity_category=EntityCategory.CONFIG, + translation_key="ref_zones", + ), ), } diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index d963427..64d782b 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -502,6 +502,9 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { native_unit_of_measurement=UnitOfTemperature.CELSIUS, translation_key="freezer_temp", ), + SensorEntityDescription( + key="errors", name="Error", icon="mdi:math-log", translation_key="errors" + ), ), } SENSORS["WD"] = unique_entities(SENSORS["WM"], SENSORS["TD"]) diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 8fca28a..fb4e78c 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -4,6 +4,7 @@ from typing import Any from pyhon import Hon from pyhon.appliance import HonAppliance +from pyhon.parameter.base import HonParameter from pyhon.parameter.range import HonParameterRange from homeassistant.components.switch import SwitchEntityDescription, SwitchEntity @@ -319,22 +320,32 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { "REF": ( HonSwitchEntityDescription( key="settings.intelligenceMode", + status_key="intelligenceMode", name="Auto-Set Mode", icon="mdi:thermometer-auto", translation_key="auto_set", ), HonSwitchEntityDescription( key="settings.quickModeZ1", + status_key="quickModeZ1", name="Super Freeze", icon="mdi:snowflake-variant", translation_key="super_freeze", ), HonSwitchEntityDescription( key="settings.quickModeZ2", + status_key="quickModeZ2", name="Super Cool", icon="mdi:snowflake", translation_key="super_cool", ), + HonSwitchEntityDescription( + key="settings.holidayMode", + status_key="holidayMode", + name="Holiday Mode", + icon="mdi:palm-tree", + translation_key="holiday_mode", + ), ), } @@ -411,13 +422,14 @@ class HonSwitchEntity(HonEntity, SwitchEntity): or "settings." in self.entity_description.key ): setting = self._device.settings[self.entity_description.key] - setting.value = ( - setting.max if isinstance(setting, HonParameterRange) else "1" - ) - self.async_write_ha_state() - if "settings." in self.entity_description.key: - await self._device.commands["settings"].send() - await self.coordinator.async_refresh() + if not type(setting) == HonParameter: + setting.value = ( + setting.max if isinstance(setting, HonParameterRange) else "1" + ) + self.async_write_ha_state() + await self.coordinator.async_refresh() + if "settings." in self.entity_description.key: + await self._device.commands["settings"].send() else: await self._device.commands[self.entity_description.turn_on_key].send() @@ -427,13 +439,14 @@ class HonSwitchEntity(HonEntity, SwitchEntity): or "settings." in self.entity_description.key ): setting = self._device.settings[self.entity_description.key] - setting.value = ( - setting.min if isinstance(setting, HonParameterRange) else "0" - ) - self.async_write_ha_state() - if "settings." in self.entity_description.key: - await self._device.commands["settings"].send() - await self.coordinator.async_refresh() + if not type(setting) == HonParameter: + setting.value = ( + setting.min if isinstance(setting, HonParameterRange) else "0" + ) + self.async_write_ha_state() + if "settings." in self.entity_description.key: + await self._device.commands["settings"].send() + await self.coordinator.async_refresh() else: await self._device.commands[self.entity_description.turn_off_key].send() @@ -452,8 +465,11 @@ class HonSwitchEntity(HonEntity, SwitchEntity): @callback def _handle_coordinator_update(self): - if not self.entity_description.status_key: + if self.entity_description.status_key: + value = self._device.get(self.entity_description.status_key, "0") + elif self.entity_category == EntityCategory.CONFIG: + value = self._device.settings.get(self.entity_description.key, "0") + else: return - value = self._device.get(self.entity_description.status_key, "0") self._attr_state = value == "1" self.async_write_ha_state() diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index 6e469fa..2dba578 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -225,7 +225,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Rychlý 20", "hqd_quick_30": "Rychlý 30", - "hqd_quick_dry": "Rychlé sušení", + "hqd_quick_dry": "Rychlé sušení 30", "hqd_quilt": "Deky", "hqd_refresh": "Osvěžení", "hqd_school_uniform": "Školní uniformy", @@ -409,6 +409,11 @@ "silent": "Noc", "silent_care": "Silent Care", "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", "special": "speciální", "special_pw_prz": "speciální", "steam": "Parní 75 °C", @@ -465,19 +470,20 @@ "programs_ov": { "state": { "bakery": "Těstoviny a pečivo", - "bakery_steam": "Chléb pečený v páře", + "bakery_steam": "Pára v troubě", "bottom_heating": "Spodní ohřev", "bottom_heating_fan": "Spodní ohřev + ventilátor", "bread": "Chléb", - "bread_steam": "Pečivo pečené v páře", + "bread_steam": "Chléb pečený v páře", + "combi": "Combi", "convection_fan": "Statický + ventilátor", "convection_fan_turnspit": "Konvekce + ventilátor + rožeň", "conventional": "Statický", - "conventional_turnspit": "Konvekční + rožeň", + "conventional_turnspit": "Konvekce + rožeň", "defrost": "Rozmrazování", "descaling": "Odstraňování vodního kamene", "fish": "Ryby", - "fish_steam": "Ryby připravované v páře", + "fish_steam": "Ryby v páře", "grill_cata": "Gril", "grill_fan_cata": "Ventilátor grilu", "grill_fan_pyro": "Gril + ventilátor", @@ -487,13 +493,13 @@ "iot_h20_clean": "h2O clean", "leavening": "Kynutí", "low_temp_cooking": "Příprava při nízkých teplotách", - "low_temp_cooking_fish": "Příprava ryb při nízkých teplotách", - "low_temp_cooking_fish_steam": "Příprava ryb v páře při nízkých teplotách", - "low_temp_cooking_meat": "Příprava masa při nízkých teplotách", - "low_temp_cooking_meat_steam": "Příprava masa v páře při nízkých teplotách", + "low_temp_cooking_fish": "Příprava při nízkých teplotách – ryby", + "low_temp_cooking_fish_steam": "Příprava při nízkých teplotách – ryby v páře", + "low_temp_cooking_meat": "Příprava při nízkých teplotách – maso", + "low_temp_cooking_meat_steam": "Příprava při nízkých teplotách - dušené maso", "low_temp_cooking_steam": "Příprava v páře při nízkých teplotách", "meat": "Maso", - "meat_steam": "Maso připravované v páře", + "meat_steam": "Maso v páře", "multi_level": "Víceúrovňové", "paella": "Paella", "pasta_and_bakery": "Těstoviny a pečivo", @@ -501,7 +507,7 @@ "pyrolysis": "Pyrolýza", "pyrolysis_plus": "Pyrolýza +", "red_meat": "Tmavé maso", - "red_meat_steam": "Červené maso připravované v páře", + "red_meat_steam": "Červené maso vařené v páře", "regenerate": "Regenerace", "soft_plus": "Soft +", "super_grill": "Super gril", @@ -511,9 +517,9 @@ "vegetables": "Zelenina", "vegetables_cata": "Zelenina", "vegetables_pyro": "Zelenina", - "water_discharge": "Odtok vody", + "water_discharge": "Vypouštění vody", "white_meat": "Bílé maso", - "white_meat_steam": "Bílé maso připravované v páře" + "white_meat_steam": "Bílé maso vařené v páře" }, "name": "Program" }, @@ -570,7 +576,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Rychlý 20", "hqd_quick_30": "Rychlý 30", - "hqd_quick_dry": "Rychlé sušení", + "hqd_quick_dry": "Rychlé sušení 30", "hqd_quilt": "Deky", "hqd_refresh": "Osvěžení", "hqd_school_uniform": "Školní uniformy", @@ -1050,6 +1056,15 @@ }, "remaining_time": { "name": "Zbývající čas" + }, + "ref_zones": { + "state": { + "fridge": "Chladnička", + "freezer": "Mraznička", + "vtRoom1": "My Zone", + "[fridge|freezer]": "Chladnička & Mraznička" + }, + "name": "Zóna" } }, "switch": { @@ -1093,7 +1108,7 @@ "name": "Trouba" }, "prewash": { - "name": "Předpírka\r\r\r\r\r\r\n" + "name": "Předpírka\r\r\r\r\r\r\r\n" }, "pause": { "name": "Pozastavit" @@ -1157,6 +1172,9 @@ }, "super_freeze": { "name": "Super Freeze" + }, + "refrigerator": { + "name": "Chladnička" } }, "binary_sensor": { @@ -1227,7 +1245,7 @@ "name": "Zapnout" }, "prewash": { - "name": "Předpírka\r\r\r\r\r\r\n" + "name": "Předpírka\r\r\r\r\r\r\r\n" }, "acqua_plus": { "name": "Aquaplus" @@ -1301,6 +1319,12 @@ "button": { "induction_hob": { "name": "Indukční varná deska" + }, + "start_program": { + "name": "Program Zahájení" + }, + "stop_program": { + "name": "Program Zastavit" } }, "climate": { diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index 8ce7b77..2bb040c 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -225,7 +225,7 @@ "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Schnell 20", "hqd_quick_30": "Schnell 30", - "hqd_quick_dry": "Schnell trocken", + "hqd_quick_dry": "Schnell trocken 30", "hqd_quilt": "Steppdecken", "hqd_refresh": "Auffrischen", "hqd_school_uniform": "Schuluniform", @@ -409,6 +409,11 @@ "silent": "Nacht", "silent_care": "Silent Care", "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", "special": "spezial", "special_pw_prz": "spezial", "steam": "Dampf 75 °C", @@ -465,11 +470,12 @@ "programs_ov": { "state": { "bakery": "Teigwaren und Brot", - "bakery_steam": "Mit Dampf gebackenes Brot", + "bakery_steam": "Dampf im Backofen", "bottom_heating": "Unterhitze", "bottom_heating_fan": "Unterhitze + Umluft", "bread": "Brot", - "bread_steam": "Mit Dampf gebackenes Gebäck", + "bread_steam": "Mit Dampf gebackenes Brot", + "combi": "Combi", "convection_fan": "Umluft", "convection_fan_turnspit": "Heißluft + Drehspieß", "conventional": "Ober-Unterhitze", @@ -477,7 +483,7 @@ "defrost": "Auftauen", "descaling": "Entkalkung", "fish": "Fisch", - "fish_steam": "Dampfgegarter Fisch", + "fish_steam": "Gedünsteter Fisch", "grill_cata": "Grill", "grill_fan_cata": "Grill Umluft", "grill_fan_pyro": "Grill + Umluft", @@ -488,12 +494,12 @@ "leavening": "Aufgehen", "low_temp_cooking": "Garen bei niedriger Temperatur", "low_temp_cooking_fish": "Garen bei niedriger Temperatur - Fisch", - "low_temp_cooking_fish_steam": "Dampfgaren bei niedriger Temperatur - Fisch", + "low_temp_cooking_fish_steam": "Niedertemperaturgaren - Gedünsteter Fisch", "low_temp_cooking_meat": "Garen bei niedriger Temperatur - Fleisch", - "low_temp_cooking_meat_steam": "Niedertemperatur-Dampfgaren - Fleisch", + "low_temp_cooking_meat_steam": "Niedertemperaturgaren - Gedämpftes Fleisch", "low_temp_cooking_steam": "Niedertemperatur-Dampfgaren", "meat": "Fleisch", - "meat_steam": "Dampfgegartes Fleisch", + "meat_steam": "Fleisch Dampf", "multi_level": "Multi-Level", "paella": "Paella", "pasta_and_bakery": "Teigwaren und Brot", @@ -501,8 +507,8 @@ "pyrolysis": "Pyrolyse", "pyrolysis_plus": "Pyrolyse +", "red_meat": "Rotes Fleisch", - "red_meat_steam": "Dampfgegartes rotes Fleisch", - "regenerate": "Regeneration", + "red_meat_steam": "Gedünstetes rotes Fleisch", + "regenerate": "Regenerieren", "soft_plus": "Soft+", "super_grill": "Super Grill", "tailor_bake": "Tailor bake", @@ -513,7 +519,7 @@ "vegetables_pyro": "Gemüse", "water_discharge": "Wasserabfluss", "white_meat": "Weißes Fleisch", - "white_meat_steam": "Dampfgegartes weißes Fleisch" + "white_meat_steam": "Gedämpftes weißes Fleisch" }, "name": "Programm" }, @@ -570,7 +576,7 @@ "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Schnell 20", "hqd_quick_30": "Schnell 30", - "hqd_quick_dry": "Schnell trocken", + "hqd_quick_dry": "Schnell trocken 30", "hqd_quilt": "Steppdecken", "hqd_refresh": "Auffrischen", "hqd_school_uniform": "Schuluniform", @@ -1050,6 +1056,15 @@ }, "remaining_time": { "name": "Verbleibende Zeit" + }, + "ref_zones": { + "state": { + "fridge": "Kühlschrank", + "freezer": "Gefrierschrank", + "vtRoom1": "My Zone", + "[fridge|freezer]": "Kühlschrank & Gefrierschrank" + }, + "name": "Zone" } }, "switch": { @@ -1157,6 +1172,9 @@ }, "super_freeze": { "name": "Super Freeze" + }, + "refrigerator": { + "name": "Kühlschrank" } }, "binary_sensor": { @@ -1301,6 +1319,12 @@ "button": { "induction_hob": { "name": "Induktionskochfeld" + }, + "start_program": { + "name": "Programm Start" + }, + "stop_program": { + "name": "Programm Stopp" } }, "climate": { diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index 5eb9b50..0a95dc4 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -225,7 +225,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Γρήγορα 20", "hqd_quick_30": "Γρήγορα 30", - "hqd_quick_dry": "Γρήγορο στέγνωμα", + "hqd_quick_dry": "Γρήγορο στέγνωμα 30", "hqd_quilt": "Παπλώματα", "hqd_refresh": "Φρεσκάρισμα", "hqd_school_uniform": "Σχολική στολή", @@ -409,6 +409,11 @@ "silent": "Νύχτα", "silent_care": "Silent Care", "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", "special": "σπεσιαλ", "special_pw_prz": "σπεσιαλ", "steam": "ατμος 75°C", @@ -465,11 +470,12 @@ "programs_ov": { "state": { "bakery": "Ζυμαρικά και αρτοποιήματα", - "bakery_steam": "Ψωμί ατμού", + "bakery_steam": "Ατμός φούρνου", "bottom_heating": "Κάτω στοιχείο", "bottom_heating_fan": "Κάτω στοιχείο + ανεμιστήρας", "bread": "Ψωμί", - "bread_steam": "Αρτοσκευάσματα ατμού", + "bread_steam": "Ψωμί ατμού", + "combi": "Combi", "convection_fan": "Θερμοσ αερασ", "convection_fan_turnspit": "Θερμός αέρας + Ανεμιστήρας + Σούβλα", "conventional": "Ανω - κατω θερμανση", @@ -477,7 +483,7 @@ "defrost": "Απόψυξη", "descaling": "Αφαλάτωση", "fish": "Ψάρια", - "fish_steam": "Ψάρι στον ατμό", + "fish_steam": "Ψάρια στον ατμό", "grill_cata": "Γκριλ", "grill_fan_cata": "Ανεμιστήρας γκριλ", "grill_fan_pyro": "Γκριλ + ανεμιστήρας", @@ -488,9 +494,9 @@ "leavening": "Ζυμωση", "low_temp_cooking": "Μαγείρεμα σε χαμηλή θερμοκρασία", "low_temp_cooking_fish": "Μαγείρεμα σε χαμηλή θερμοκρασία - Ψάρι", - "low_temp_cooking_fish_steam": "Μαγείρεμα με ατμό σε χαμηλή θερμοκρασία - Ψάρι", + "low_temp_cooking_fish_steam": "Μαγείρεμα σε χαμηλή θερμοκρασία - Ψάρια στον ατμό", "low_temp_cooking_meat": "Μαγείρεμα σε χαμηλή θερμοκρασία - Κρέας", - "low_temp_cooking_meat_steam": "Μαγείρεμα με ατμό σε χαμηλή θερμοκρασία - Κρέας", + "low_temp_cooking_meat_steam": "Μαγείρεμα σε χαμηλή θερμοκρασία - Κρέας στον ατμό", "low_temp_cooking_steam": "Μαγείρεμα με ατμό σε χαμηλή θερμοκρασία", "meat": "Κρέας", "meat_steam": "Κρέας στον ατμό", @@ -511,7 +517,7 @@ "vegetables": "Λαχανικά", "vegetables_cata": "Λαχανικά", "vegetables_pyro": "Λαχανικά", - "water_discharge": "Αποστράγγιση νερού", + "water_discharge": "Απόρριψη νερού", "white_meat": "Λευκό κρέας", "white_meat_steam": "Λευκό κρέας στον ατμό" }, @@ -570,7 +576,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Γρήγορα 20", "hqd_quick_30": "Γρήγορα 30", - "hqd_quick_dry": "Γρήγορο στέγνωμα", + "hqd_quick_dry": "Γρήγορο στέγνωμα 30", "hqd_quilt": "Παπλώματα", "hqd_refresh": "Φρεσκάρισμα", "hqd_school_uniform": "Σχολική στολή", @@ -1050,6 +1056,15 @@ }, "remaining_time": { "name": "Χρόνος που απομένει" + }, + "ref_zones": { + "state": { + "fridge": "Ψυγείο", + "freezer": "Καταψύκτης", + "vtRoom1": "My Zone", + "[fridge|freezer]": "Ψυγείο & Καταψύκτης" + }, + "name": "Ζώνη" } }, "switch": { @@ -1157,6 +1172,9 @@ }, "super_freeze": { "name": "Super Freeze" + }, + "refrigerator": { + "name": "Ψυγείο" } }, "binary_sensor": { @@ -1206,7 +1224,7 @@ "name": "Τηγάνι" }, "remote_control": { - "name": "Τηλεχειριστήριο" + "name": "Daljinsko upravljanje" }, "rinse_aid": { "name": "Επίπεδο λαμπρυντικού" @@ -1301,6 +1319,12 @@ "button": { "induction_hob": { "name": "Επαγωγική εστία" + }, + "start_program": { + "name": "Πρόγραμμα Εκκίνηση" + }, + "stop_program": { + "name": "Πρόγραμμα Διακοπή" } }, "climate": { diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index cbb5df0..8556936 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -263,7 +263,7 @@ "hqd_bed_sheets": "Bed Sheets", "hqd_bulky": "Bulky Items", "hqd_casual": "Casual", - "hqd_cold_wind_30": "Cool Breeze 30 minutes", + "hqd_cold_wind_30": "Cool Breeze 30m", "hqd_cold_wind_timing": "Cool Breeze ", "hqd_cotton": "Cotton", "hqd_curtain": "Curtains", @@ -282,9 +282,9 @@ "hqd_night_dry": "Overnight drying", "hqd_outdoor": "Outdoor", "hqd_precious_cure": "Precious Cure", - "hqd_quick_20": "Quick 20", - "hqd_quick_30": "Quick 30", - "hqd_quick_dry": "Quick dry", + "hqd_quick_20": "Quick 20m", + "hqd_quick_30": "Quick 30m", + "hqd_quick_dry": "Quick dry (30 min)", "hqd_quilt": "Quilts", "hqd_refresh": "Refresh", "hqd_school_uniform": "School Uniform", @@ -322,7 +322,7 @@ "iot_dry_lingerie": "Lingerie", "iot_dry_mixed": "Mixed", "iot_dry_playsuits": "Playsuits", - "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_30": "Rapid 30m", "iot_dry_rapid_59": "Rapid 59'", "iot_dry_refresh": "Refresh", "iot_dry_regenerates_waterproof": "Regenerates Waterproof", @@ -485,6 +485,9 @@ }, "super_freeze": { "name": "Super Freeze" + }, + "refrigerator": { + "name": "Refrigerator" } }, "select": { @@ -508,9 +511,9 @@ "59_min": "Rapid 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", - "auto_hygiene": "Auto Hygiene", "auto_plus": "AutoPlus", - "auto_rapid": "Auto Rapid", + "auto_plus_soil": "Auto Plus Soil", + "auto_rapid_soil": "Auto rapid Soil", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Auto Universal 50 - 60°C", @@ -554,7 +557,7 @@ "iot_eco_bldc": "Eco 45°C", "iot_eco_synch": "Eco 45°C", "iot_extra_hygiene": "Extra Hygiene", - "iot_fairy_quick_cycle": "Fairy Short", + "iot_fairy_quick_cycle": "Fairy Quick", "iot_happy_hour": "Happy Hour", "iot_jar_quick_cycle": "Jar Quick", "iot_party": "Party", @@ -593,7 +596,10 @@ "silent_care": "Silent Care", "smart_ai": "Smart AI", "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", "special": "Special", "special_pw_prz": "Special", "steam": "Steam 75°C", @@ -650,21 +656,21 @@ }, "programs_ov": { "state": { - "bakery": "Pasta and Pastries", - "bakery_steam": "Steam-baked bread", + "bakery": "Pasta and Bakery", + "bakery_steam": "Steam oven", "bottom_heating": "Bottom Heating", "bottom_heating_fan": "Bottom Heating + Fan", "bread": "Bread", - "bread_steam": "Steam-baked pastries", + "bread_steam": "Steam baked bread", "combi": "Combi", "convection_fan": "Convection + Fan", "convection_fan_turnspit": "Convection + Fan + Turnspit", "conventional": "Conventional", "conventional_turnspit": "Convection + Turnspit", - "defrost": "Defrost", + "defrost": "Defrosting", "descaling": "Descaling", "fish": "Fish", - "fish_steam": "Steam-cooked fish", + "fish_steam": "Steamed fish", "grill_cata": "Grill", "grill_fan_cata": "Grill fan", "grill_fan_pyro": "Grill + Fan", @@ -673,16 +679,15 @@ "iot_bread": "Bread", "iot_h20_clean": "h2O clean", "leavening": "Leavening", - "light_fan": "Light Fan", "light_fan\n": "Light Fan", "low_temp_cooking": "Low Temperature Cooking", "low_temp_cooking_fish": "Low Temperature Cooking - Fish", - "low_temp_cooking_fish_steam": "Low Temperature Steam Cooking - Fish", + "low_temp_cooking_fish_steam": "Low Temperature Cooking - Steamed fish", "low_temp_cooking_meat": "Low Temperature Cooking - Meat", - "low_temp_cooking_meat_steam": "Low Temperature Steam Cooking - Meat", + "low_temp_cooking_meat_steam": "Low Temperature Cooking - Steamed meat", "low_temp_cooking_steam": "Low Temperature Steam Cooking", "meat": "Meat", - "meat_steam": "Steam-cooked meat", + "meat_steam": "Steamed meat", "multi_level": "Multi-Level", "paella": "Paella", "pasta_and_bakery": "Pasta and Bakery", @@ -690,8 +695,8 @@ "pyrolysis": "Pyrolysis", "pyrolysis_plus": "Pyrolysis +", "red_meat": "Red Meat", - "red_meat_steam": "Steam-cooked red meat", - "regenerate": "Regeneration", + "red_meat_steam": "Steamed red meat", + "regenerate": "Regenerate", "soft_plus": "Soft+", "super_grill": "Super Grill", "tailor_bake": "Tailor bake", @@ -700,9 +705,9 @@ "vegetables": "Vegetables", "vegetables_cata": "Vegetables", "vegetables_pyro": "Vegetables", - "water_discharge": "Water Drain", + "water_discharge": "Water Discharge", "white_meat": "White Meat", - "white_meat_steam": "Steam-cooked white meat" + "white_meat_steam": "Steamed white meat" }, "name": "Program" }, @@ -738,7 +743,7 @@ "hqd_bed_sheets": "Bed Sheets", "hqd_bulky": "Bulky Items", "hqd_casual": "Casual", - "hqd_cold_wind_30": "Cool Breeze 30 minutes", + "hqd_cold_wind_30": "Cool Breeze 30m", "hqd_cold_wind_timing": "Cool Breeze ", "hqd_cotton": "Cotton", "hqd_curtain": "Curtains", @@ -757,9 +762,9 @@ "hqd_night_dry": "Overnight drying", "hqd_outdoor": "Outdoor", "hqd_precious_cure": "Precious Cure", - "hqd_quick_20": "Quick 20", - "hqd_quick_30": "Quick 30", - "hqd_quick_dry": "Quick dry", + "hqd_quick_20": "Quick 20m", + "hqd_quick_30": "Quick 30m", + "hqd_quick_dry": "Quick dry (30 min)", "hqd_quilt": "Quilts", "hqd_refresh": "Refresh", "hqd_school_uniform": "School Uniform", @@ -797,7 +802,7 @@ "iot_dry_lingerie": "Lingerie", "iot_dry_mixed": "Mixed", "iot_dry_playsuits": "Playsuits", - "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_30": "Rapid 30m", "iot_dry_rapid_59": "Rapid 59'", "iot_dry_refresh": "Refresh", "iot_dry_regenerates_waterproof": "Regenerates Waterproof", @@ -856,7 +861,7 @@ "all_in_one_59": "All in One 59'", "all_in_one_59_steam": "Active Wash + Steam", "autocare": "Autocare", - "autoclean": "Drum Cleaning", + "autoclean": "Drum cleaning and descaling ", "baby_60": "All Baby 60°C", "care_14": "Rapid Care 14'", "care_30": "Rapid Care 30'", @@ -1225,6 +1230,15 @@ }, "remaining_time": { "name": "Time remaining" + }, + "ref_zones": { + "state": { + "fridge": "Fridge", + "freezer": "Freezer", + "vtRoom1": "My Zone", + "[fridge|freezer]": "Fridge & Freezer" + }, + "name": "Zone" } }, "binary_sensor": { @@ -1369,6 +1383,12 @@ "button": { "induction_hob": { "name": "Induction Hob" + }, + "start_program": { + "name": "Program Start" + }, + "stop_program": { + "name": "Program Stop" } }, "climate": { diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index fba0c2b..dfb7e48 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -225,7 +225,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Rápido 20", "hqd_quick_30": "Rápido 30", - "hqd_quick_dry": "Secado rápido", + "hqd_quick_dry": "Secado rápido 30", "hqd_quilt": "Colchas", "hqd_refresh": "Refrescar", "hqd_school_uniform": "Uniformes escolares", @@ -409,6 +409,11 @@ "silent": "Noche", "silent_care": "Silent Care", "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", "special": "Especial", "special_pw_prz": "Especial", "steam": "Vapor 75 °C", @@ -465,15 +470,16 @@ "programs_ov": { "state": { "bakery": "Pasta y Panadería", - "bakery_steam": "Pan al vapor", + "bakery_steam": "Oven steam", "bottom_heating": "Calentamiento Inferior", "bottom_heating_fan": "Calentamiento Inferior + Ventilador", "bread": "Pan", - "bread_steam": "Bollería al vapor", + "bread_steam": "Pan al vapor", + "combi": "Combi", "convection_fan": "Convección + Ventilador", - "convection_fan_turnspit": "Convección + Ventilador + Rustepollos", + "convection_fan_turnspit": "Asador giratorio convencional ventilada", "conventional": "Convección", - "conventional_turnspit": "Convección + Rustepollos", + "conventional_turnspit": "Asador giratorio convencional", "defrost": "Descongelación", "descaling": "Descalcificación", "fish": "Pescado", @@ -487,13 +493,13 @@ "iot_h20_clean": "h2O clean", "leavening": "Fermentación", "low_temp_cooking": "Cocción a baja temperatura", - "low_temp_cooking_fish": "Cocción a baja temperatura - Pescado", - "low_temp_cooking_fish_steam": "Cocción al vapor a baja temperatura - Pescado", - "low_temp_cooking_meat": "Cocción a baja temperatura - Carne", - "low_temp_cooking_meat_steam": "Cocción al vapor a baja temperatura - Carne", - "low_temp_cooking_steam": "Cocción al vapor a baja temperatura", + "low_temp_cooking_fish": "Cocción a baja temperatura Pescado", + "low_temp_cooking_fish_steam": "Cocción a baja temperatura Pescado", + "low_temp_cooking_meat": "Cocción a baja temperatura Carne", + "low_temp_cooking_meat_steam": "Cocción a baja temperatura Carne al vapor", + "low_temp_cooking_steam": "Cocción a baja temperatura al vapor", "meat": "Carne", - "meat_steam": "Carne al vapor", + "meat_steam": "Meat steam", "multi_level": "Múltiples niveles", "paella": "Paella", "pasta_and_bakery": "Pasta y Panadería", @@ -502,7 +508,7 @@ "pyrolysis_plus": "Pirólisis +", "red_meat": "Carne roja", "red_meat_steam": "Carne roja al vapor", - "regenerate": "Regeneración", + "regenerate": "Regenerar", "soft_plus": "Soft+", "super_grill": "Super Grill", "tailor_bake": "Tailor bake", @@ -511,7 +517,7 @@ "vegetables": "Verduras", "vegetables_cata": "Verduras", "vegetables_pyro": "Verdura", - "water_discharge": "Drenaje del agua", + "water_discharge": "Descarga de agua", "white_meat": "Carne blanca", "white_meat_steam": "Carne blanca al vapor" }, @@ -570,7 +576,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Rápido 20", "hqd_quick_30": "Rápido 30", - "hqd_quick_dry": "Secado rápido", + "hqd_quick_dry": "Secado rápido 30", "hqd_quilt": "Colchas", "hqd_refresh": "Refrescar", "hqd_school_uniform": "Uniformes escolares", @@ -1050,6 +1056,15 @@ }, "remaining_time": { "name": "Tiempo restante" + }, + "ref_zones": { + "state": { + "fridge": "Frigorífico", + "freezer": "Congelador", + "vtRoom1": "My Zone", + "[fridge|freezer]": "Frigorífico & Congelador" + }, + "name": "Zona" } }, "switch": { @@ -1157,6 +1172,9 @@ }, "super_freeze": { "name": "Super Freeze" + }, + "refrigerator": { + "name": "Frigorífico" } }, "binary_sensor": { @@ -1206,7 +1224,7 @@ "name": "Sartén" }, "remote_control": { - "name": "Control remoto" + "name": "Τηλεχειριστήριο" }, "rinse_aid": { "name": "Nivel del agente de enjuague" @@ -1301,6 +1319,12 @@ "button": { "induction_hob": { "name": "Placa de inducción" + }, + "start_program": { + "name": "Programa Inicio" + }, + "stop_program": { + "name": "Programa Detener" } }, "climate": { diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index 1370cd0..1b286eb 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -225,7 +225,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Rapide 20’", "hqd_quick_30": "Rapide 30’", - "hqd_quick_dry": "Séchage rapide", + "hqd_quick_dry": "Séchage rapide 30", "hqd_quilt": "Couvertures", "hqd_refresh": "Rafraîchissement", "hqd_school_uniform": "Uniforme scolaire", @@ -409,6 +409,11 @@ "silent": "Nuit", "silent_care": "Silent Care", "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", "special": "spécial", "special_pw_prz": "spécial", "steam": "Vapeur 75 °C", @@ -465,19 +470,20 @@ "programs_ov": { "state": { "bakery": "Pâtes et pains", - "bakery_steam": "Pain cuit à la vapeur", + "bakery_steam": "Four à vapeur", "bottom_heating": "Sole", "bottom_heating_fan": "Sole brassée", "bread": "Pain", - "bread_steam": "Pâtisseries cuites à la vapeur", + "bread_steam": "Pain àla vapeur", + "combi": "Combi", "convection_fan": "Chaleur tournante", - "convection_fan_turnspit": "Convection + Ventilateur + Tournebroche", + "convection_fan_turnspit": "Tournebrocheà convection ventilée", "conventional": "Convection naturelle", - "conventional_turnspit": "Convection + Tournebroche", + "conventional_turnspit": "Tournebroche conventionnel", "defrost": "Décongélation", "descaling": "Détartrage", "fish": "Poisson", - "fish_steam": "Poisson cuit à la vapeur", + "fish_steam": "Poisson à la vapeur", "grill_cata": "Gril", "grill_fan_cata": "Turbogril", "grill_fan_pyro": "Turbogril", @@ -487,13 +493,13 @@ "iot_h20_clean": "h2O clean", "leavening": "Étuve", "low_temp_cooking": "Cuisson à basse température", - "low_temp_cooking_fish": "Cuisson à basse température - Poisson", - "low_temp_cooking_fish_steam": "Cuisson à la vapeur à basse température - Poisson", - "low_temp_cooking_meat": "Cuisson à basse température - Viande", - "low_temp_cooking_meat_steam": "Cuisson à la vapeur à basse température - Viande", - "low_temp_cooking_steam": "Cuisson à la vapeur à basse température", + "low_temp_cooking_fish": "Cuisson à basse température Poisson", + "low_temp_cooking_fish_steam": "Cuisson à basse température Poisson à la vapeur", + "low_temp_cooking_meat": "Cuisson à basse température Viande", + "low_temp_cooking_meat_steam": "Cuisson à basse température Viande à la vapeur", + "low_temp_cooking_steam": "Cuisson à basse température à la vapeur", "meat": "Viande", - "meat_steam": "Viande cuite à la vapeur", + "meat_steam": "Viande à la vapeur", "multi_level": "Chaleur pulsée", "paella": "Paella", "pasta_and_bakery": "Pâtes et pains", @@ -501,8 +507,8 @@ "pyrolysis": "Pyrolyse", "pyrolysis_plus": "Pyrolyse +", "red_meat": "Viande rouge", - "red_meat_steam": "Viande rouge cuite à la vapeur", - "regenerate": "Régénération", + "red_meat_steam": "Viande rouge à la vapeur", + "regenerate": "Régénérer", "soft_plus": "Soft+", "super_grill": "Super Gril", "tailor_bake": "Tailor bake", @@ -511,9 +517,9 @@ "vegetables": "Légumes", "vegetables_cata": "Légumes", "vegetables_pyro": "Légumes", - "water_discharge": "Vidange de l’eau", + "water_discharge": "Décharge d'eau", "white_meat": "Viande blanche", - "white_meat_steam": "Viande blanche cuite à la vapeur" + "white_meat_steam": "Viande blanche à la vapeur" }, "name": "Programme" }, @@ -570,7 +576,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Rapide 20’", "hqd_quick_30": "Rapide 30’", - "hqd_quick_dry": "Séchage rapide", + "hqd_quick_dry": "Séchage rapide 30", "hqd_quilt": "Couvertures", "hqd_refresh": "Rafraîchissement", "hqd_school_uniform": "Uniforme scolaire", @@ -1050,6 +1056,15 @@ }, "remaining_time": { "name": "Temps restant" + }, + "ref_zones": { + "state": { + "fridge": "Réfrigérateur", + "freezer": "Congélateur", + "vtRoom1": "My Zone", + "[fridge|freezer]": "Réfrigérateur & Congélateur" + }, + "name": "Zone" } }, "switch": { @@ -1157,6 +1172,9 @@ }, "super_freeze": { "name": "Super Freeze" + }, + "refrigerator": { + "name": "Réfrigérateur" } }, "binary_sensor": { @@ -1301,6 +1319,12 @@ "button": { "induction_hob": { "name": "Table de cuisson à induction" + }, + "start_program": { + "name": "Programme Démarrer" + }, + "stop_program": { + "name": "Programme Arrêter" } }, "climate": { diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index 84b8d8c..dbe576b 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -211,7 +211,8 @@ "iot_fairy_quick_cycle": "Fairy Quick", "iot_jar_quick_cycle": "Jar Quick", "iot_yes_quick_cycle": "Yes Quick", - "smart_ai": "Smart AI" + "smart_ai": "Smart AI", + "smart_ai_soil": "Smart AI" }, "name": "Program" }, @@ -503,6 +504,15 @@ }, "remaining_time": { "name": "זמן שנותר" + }, + "ref_zones": { + "state": { + "fridge": "Fridge", + "freezer": "Freezer", + "vtRoom1": "My Zone", + "[fridge|freezer]": "Fridge & Freezer" + }, + "name": "Zone" } }, "switch": { @@ -610,6 +620,9 @@ }, "super_freeze": { "name": "Super Freeze" + }, + "refrigerator": { + "name": "Refrigerator" } }, "binary_sensor": { @@ -754,6 +767,12 @@ "button": { "induction_hob": { "name": "Induction Hob" + }, + "start_program": { + "name": "Program Start" + }, + "stop_program": { + "name": "Program Stop" } }, "climate": { diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index cd3c594..a2a35d9 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -225,7 +225,7 @@ "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Brzo 20", "hqd_quick_30": "Brzo 30", - "hqd_quick_dry": "Brzo sušenje", + "hqd_quick_dry": "Brzo sušenje 30", "hqd_quilt": "Popluni", "hqd_refresh": "Protiv neugodnih mirisa", "hqd_school_uniform": "Školska uniforma", @@ -409,6 +409,11 @@ "silent": "Noć", "silent_care": "Silent Care", "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", "special": "Posebno", "special_pw_prz": "Posebno", "steam": "Steam (Para) 75 °C", @@ -465,11 +470,12 @@ "programs_ov": { "state": { "bakery": "Tjestenina i tijesta", - "bakery_steam": "Kruh pečen na pari", + "bakery_steam": "Para u pećnici", "bottom_heating": "Donji grijač", "bottom_heating_fan": "Donji grijač + Ventilator", "bread": "Kruh", - "bread_steam": "Peciva pečena na pari", + "bread_steam": "Kruh pečen na pari", + "combi": "Combi", "convection_fan": "Konvekcija + Ventilator", "convection_fan_turnspit": "Konvekcija + ventilator + ražanj", "conventional": "Konvekcijska", @@ -477,7 +483,7 @@ "defrost": "Odmrzavanje", "descaling": "Uklanjanje kamenca", "fish": "Riba", - "fish_steam": "Riba kuhana na pari", + "fish_steam": "Riba na pari", "grill_cata": "Pečenje", "grill_fan_cata": "Ventilator za pečenje", "grill_fan_pyro": "Grijač + ventilator", @@ -488,12 +494,12 @@ "leavening": "Dizanje tijesta", "low_temp_cooking": "Kuhanje na niskoj temperaturi", "low_temp_cooking_fish": "Kuhanje na niskoj temperaturi - riba", - "low_temp_cooking_fish_steam": "Kuhanje na pari i na niskoj temperaturi - riba", + "low_temp_cooking_fish_steam": "Kuhanje na niskoj temperaturi - riba na pari", "low_temp_cooking_meat": "Kuhanje na niskoj temperaturi - meso", - "low_temp_cooking_meat_steam": "Kuhanje na pari i na niskoj temperaturi - meso", + "low_temp_cooking_meat_steam": "Kuhanje na niskoj temperaturi - meso na pari", "low_temp_cooking_steam": "Kuhanje na pari i na niskoj temperaturi", "meat": "Meso", - "meat_steam": "Meso kuhano na pari", + "meat_steam": "Meso na pari", "multi_level": "Više razina", "paella": "Paella", "pasta_and_bakery": "Tjestenina i tijesta", @@ -501,7 +507,7 @@ "pyrolysis": "Piroliza", "pyrolysis_plus": "Piroliza +", "red_meat": "Crveno meso", - "red_meat_steam": "Crveno meso kuhano na pari", + "red_meat_steam": "Kuhano crveno meso", "regenerate": "Regeneracija", "soft_plus": "Mekano+", "super_grill": "Super roštilj", @@ -511,9 +517,9 @@ "vegetables": "Povrće", "vegetables_cata": "Povrće", "vegetables_pyro": "Povrće", - "water_discharge": "Odvod vode", + "water_discharge": "Ispuštanje vode", "white_meat": "Bijelo meso", - "white_meat_steam": "Bijelo meso kuhano na pari" + "white_meat_steam": "Kuhano bijelo meso na pari" }, "name": "Program" }, @@ -570,7 +576,7 @@ "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Brzo 20", "hqd_quick_30": "Brzo 30", - "hqd_quick_dry": "Brzo sušenje", + "hqd_quick_dry": "Brzo sušenje 30", "hqd_quilt": "Popluni", "hqd_refresh": "Protiv neugodnih mirisa", "hqd_school_uniform": "Školska uniforma", @@ -1050,6 +1056,15 @@ }, "remaining_time": { "name": "Preostalo vrijeme" + }, + "ref_zones": { + "state": { + "fridge": "Hladnjak", + "freezer": "Zamrzivač", + "vtRoom1": "My Zone", + "[fridge|freezer]": "Hladnjak & Zamrzivač" + }, + "name": "Zona" } }, "switch": { @@ -1157,6 +1172,9 @@ }, "super_freeze": { "name": "Super Freeze" + }, + "refrigerator": { + "name": "Hladnjak" } }, "binary_sensor": { @@ -1206,7 +1224,7 @@ "name": "Tava" }, "remote_control": { - "name": "Upravljanje na daljinu" + "name": "Daljinski upravljač" }, "rinse_aid": { "name": "Razina sredstva za ispiranje" @@ -1301,6 +1319,12 @@ "button": { "induction_hob": { "name": "Indukcijska ploča za kuhanje" + }, + "start_program": { + "name": "Program Početak" + }, + "stop_program": { + "name": "Program Zaustavi" } }, "climate": { diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index f90510f..e84d3a7 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -256,7 +256,7 @@ "hqd_bed_sheets": "Lenzuola", "hqd_bulky": "Vestiti voluminosi", "hqd_casual": "Casual", - "hqd_cold_wind_30": "Brezza rinfrescante 30 minuti", + "hqd_cold_wind_30": "Brezza rinfrescante 30m", "hqd_cold_wind_timing": "Brezza rinfrescante", "hqd_cotton": "Cotone", "hqd_curtain": "Tende", @@ -270,14 +270,14 @@ "hqd_i_refresh_pro": "I-Refresh Pro", "hqd_jacket": "Giacche", "hqd_jeans": "Jeans", - "hqd_luxury": "Vestiti preziosi", + "hqd_luxury": "Capi Pregiati", "hqd_mix": "Misti", "hqd_night_dry": "Asciugatura notturna", "hqd_outdoor": "Outdoor", "hqd_precious_cure": "Precious cure", - "hqd_quick_20": "Rapido 20", - "hqd_quick_30": "Rapido 30", - "hqd_quick_dry": "Asciugatura veloce", + "hqd_quick_20": "Rapido 20m", + "hqd_quick_30": "Rapido 30m", + "hqd_quick_dry": "Asciugatura veloce (30 min)", "hqd_quilt": "Trapunte", "hqd_refresh": "Refresh", "hqd_school_uniform": "Uniforme scolastica", @@ -291,7 +291,7 @@ "hqd_underwear": "Intimo", "hqd_warm_up": "Riscaldamento", "hqd_wool": "Lana", - "hqd_working_suit": "Completo da lavoro", + "hqd_working_suit": "Abbigliamento da lavoro", "hygiene": "Igiene", "iot_checkup": "Check-Up", "iot_dry_anti_mites": "Anti-Acari", @@ -315,7 +315,7 @@ "iot_dry_lingerie": "Lingerie", "iot_dry_mixed": "Misti", "iot_dry_playsuits": "Tutine", - "iot_dry_rapid_30": "Rapido 30", + "iot_dry_rapid_30": "Rapido 30m", "iot_dry_rapid_59": "Rapido 59'.", "iot_dry_refresh": "Rinfresca", "iot_dry_regenerates_waterproof": "Rigenera Tessuti Impermeabili", @@ -461,6 +461,11 @@ "silent": "Notte", "silent_care": "Silent Care", "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", "special": "Speciale", "special_pw_prz": "Speciale", "steam": "Vapore 75°C", @@ -517,19 +522,20 @@ "programs_ov": { "state": { "bakery": "Pasta e Pasticceria", - "bakery_steam": "Pane a vapore", + "bakery_steam": "Vapore da forno", "bottom_heating": "Resistenza Inferiore", "bottom_heating_fan": "Resistenza Inferiore Ventilata", "bread": "Pane", - "bread_steam": "Pasticceria a vapore", + "bread_steam": "Pane al vapore", + "combi": "Combi", "convection_fan": "Cottura Ventilata", - "convection_fan_turnspit": "Girarrosto + statico ventilato", + "convection_fan_turnspit": "Girarrosto a convenzione ventilata", "conventional": "Statico", - "conventional_turnspit": "Girarrosto + statico", + "conventional_turnspit": "Girarrosto a convenzione", "defrost": "Decongelamento", - "descaling": "Disincrostazione", + "descaling": "Decalcificazione", "fish": "Pesce", - "fish_steam": "Pesce a vapore", + "fish_steam": "Pesce al vapore", "grill_cata": "Grill", "grill_fan_cata": "Grill fan", "grill_fan_pyro": "Grill Ventilato", @@ -539,13 +545,13 @@ "iot_h20_clean": "h2O clean", "leavening": "Lievitazione", "low_temp_cooking": "Cottura a bassa temperatura", - "low_temp_cooking_fish": "Cottura a bassa temperatura del pesce", - "low_temp_cooking_fish_steam": "Cottura a bassa temperatura del pesce a vapore", - "low_temp_cooking_meat": "Cottura a bassa temperatura della carne", - "low_temp_cooking_meat_steam": "Cottura a vapore a bassa temperatura di carne", - "low_temp_cooking_steam": "Cottura a vapore a bassa temperatura", + "low_temp_cooking_fish": "Cottura a bassa temperatura Pesce", + "low_temp_cooking_fish_steam": "Cottura a bassa temperatura Pesce al vapore", + "low_temp_cooking_meat": "Cottura a bassa temperatura Carne", + "low_temp_cooking_meat_steam": "Cottura a bassa temperatura Carne al vapore", + "low_temp_cooking_steam": "Cottura a bassa temperatura al vapore", "meat": "Carne", - "meat_steam": "Carne a vapore", + "meat_steam": "Carne al vapore", "multi_level": "Cottura Multilivello", "paella": "Paella", "pasta_and_bakery": "Pasta e Pasticceria", @@ -553,8 +559,8 @@ "pyrolysis": "Pirolisi", "pyrolysis_plus": "Pirolisi +", "red_meat": "Carne rossa", - "red_meat_steam": "Carne rossa a vapore", - "regenerate": "Rigenerazione", + "red_meat_steam": "Carne rossa al vapore", + "regenerate": "Rigenerare", "soft_plus": "Soft+", "super_grill": "Supergriglia", "tailor_bake": "Tailor bake", @@ -563,9 +569,9 @@ "vegetables": "Verdure", "vegetables_cata": "Verdure", "vegetables_pyro": "Verdure", - "water_discharge": "Scarico d'acqua", - "white_meat": "Carne bianca", - "white_meat_steam": "Carne bianca a vapore" + "water_discharge": "Scarico dell'acqua", + "white_meat": "Carne Bianca", + "white_meat_steam": "Carne bianca al vapore" }, "name": "Programma" }, @@ -601,7 +607,7 @@ "hqd_bed_sheets": "Lenzuola", "hqd_bulky": "Vestiti voluminosi", "hqd_casual": "Casual", - "hqd_cold_wind_30": "Brezza rinfrescante 30 minuti", + "hqd_cold_wind_30": "Brezza rinfrescante 30m", "hqd_cold_wind_timing": "Brezza rinfrescante", "hqd_cotton": "Cotone", "hqd_curtain": "Tende", @@ -615,14 +621,14 @@ "hqd_i_refresh_pro": "I-Refresh Pro", "hqd_jacket": "Giacche", "hqd_jeans": "Jeans", - "hqd_luxury": "Vestiti preziosi", + "hqd_luxury": "Capi Pregiati", "hqd_mix": "Misti", "hqd_night_dry": "Asciugatura notturna", "hqd_outdoor": "Outdoor", "hqd_precious_cure": "Precious cure", - "hqd_quick_20": "Rapido 20", - "hqd_quick_30": "Rapido 30", - "hqd_quick_dry": "Asciugatura veloce", + "hqd_quick_20": "Rapido 20m", + "hqd_quick_30": "Rapido 30m", + "hqd_quick_dry": "Asciugatura veloce (30 min)", "hqd_quilt": "Trapunte", "hqd_refresh": "Refresh", "hqd_school_uniform": "Uniforme scolastica", @@ -636,7 +642,7 @@ "hqd_underwear": "Intimo", "hqd_warm_up": "Riscaldamento", "hqd_wool": "Lana", - "hqd_working_suit": "Completo da lavoro", + "hqd_working_suit": "Abbigliamento da lavoro", "hygiene": "Igiene", "iot_checkup": "Check-Up", "iot_dry_anti_mites": "Anti-Acari", @@ -660,7 +666,7 @@ "iot_dry_lingerie": "Lingerie", "iot_dry_mixed": "Misti", "iot_dry_playsuits": "Tutine", - "iot_dry_rapid_30": "Rapido 30", + "iot_dry_rapid_30": "Rapido 30m", "iot_dry_rapid_59": "Rapido 59'.", "iot_dry_refresh": "Rinfresca", "iot_dry_regenerates_waterproof": "Rigenera Tessuti Impermeabili", @@ -1102,6 +1108,15 @@ }, "remaining_time": { "name": "Tempo rimanente" + }, + "ref_zones": { + "state": { + "fridge": "Frigorifero", + "freezer": "Congelatore", + "vtRoom1": "My Zone", + "[fridge|freezer]": "Frigorifero & Congelatore" + }, + "name": "Zona" } }, "switch": { @@ -1209,6 +1224,9 @@ }, "super_freeze": { "name": "Super Freeze" + }, + "refrigerator": { + "name": "Frigo" } }, "binary_sensor": { @@ -1258,7 +1276,7 @@ "name": "Pentola" }, "remote_control": { - "name": "Controllo remoto" + "name": "远程控制" }, "rinse_aid": { "name": "Livello Brillantante" @@ -1353,6 +1371,12 @@ "button": { "induction_hob": { "name": "Piano cottura a induzione" + }, + "start_program": { + "name": "Programma Inizia" + }, + "stop_program": { + "name": "Programma Stop" } }, "climate": { diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index fbbf1c3..3049f65 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -225,7 +225,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Quick 20", "hqd_quick_30": "Quick 30", - "hqd_quick_dry": "Quick dry", + "hqd_quick_dry": "Quick dry 30", "hqd_quilt": "Quilts", "hqd_refresh": "Opfrissen", "hqd_school_uniform": "Schooluniform", @@ -409,6 +409,11 @@ "silent": "Nacht", "silent_care": "Silent Care", "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", "special": "speciaal", "special_pw_prz": "speciaal", "steam": "Stoom 75°C", @@ -465,11 +470,12 @@ "programs_ov": { "state": { "bakery": "Pasta en bakkersproducten", - "bakery_steam": "Stoomgebakken brood", + "bakery_steam": "Oven stomen", "bottom_heating": "Bodemverwarming", "bottom_heating_fan": "Bodemverwarming + Ventilator", "bread": "Brood", - "bread_steam": "Stoomgebakken pasteien", + "bread_steam": "Stoomgebakken brood", + "combi": "Combi", "convection_fan": "Met ventilator", "convection_fan_turnspit": "Convectie + ventilator + draaispit", "conventional": "Conventioneel", @@ -488,12 +494,12 @@ "leavening": "Gisting", "low_temp_cooking": "Bereiding op lage temperatuur", "low_temp_cooking_fish": "Bereiding op lage temperatuur – Vis", - "low_temp_cooking_fish_steam": "Stomen bij lage temperatuur – Vis", + "low_temp_cooking_fish_steam": "Bereiding op lage temperatuur – Gestoomde vis", "low_temp_cooking_meat": "Bereiding op lage temperatuur – Vlees", - "low_temp_cooking_meat_steam": "Stomen bij lage temperatuur – Vlees", + "low_temp_cooking_meat_steam": "Bereiding op lage temperatuur – Gestoomd vlees", "low_temp_cooking_steam": "Stomen bij lage temperatuur", "meat": "Vlees", - "meat_steam": "Gestoomd vlees", + "meat_steam": "Vlees stomen", "multi_level": "Multi-level", "paella": "Paella", "pasta_and_bakery": "Pasta en bakkersproducten", @@ -502,7 +508,7 @@ "pyrolysis_plus": "Pyrolyse +", "red_meat": "Rood vlees", "red_meat_steam": "Gestoomd rood vlees", - "regenerate": "Regeneratie", + "regenerate": "Regenereren", "soft_plus": "Soft+", "super_grill": "Super grill", "tailor_bake": "Tailor bake", @@ -511,7 +517,7 @@ "vegetables": "Groenten", "vegetables_cata": "Groenten", "vegetables_pyro": "Groenten", - "water_discharge": "Waterafvoer", + "water_discharge": "Afvoer van water", "white_meat": "Wit vlees", "white_meat_steam": "Gestoomd wit vlees" }, @@ -570,7 +576,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Quick 20", "hqd_quick_30": "Quick 30", - "hqd_quick_dry": "Quick dry", + "hqd_quick_dry": "Quick dry 30", "hqd_quilt": "Quilts", "hqd_refresh": "Opfrissen", "hqd_school_uniform": "Schooluniform", @@ -1050,6 +1056,15 @@ }, "remaining_time": { "name": "Resterende tijd" + }, + "ref_zones": { + "state": { + "fridge": "Koelkast", + "freezer": "Vriezer", + "vtRoom1": "My Zone", + "[fridge|freezer]": "Koelkast & Vriezer" + }, + "name": "Zone" } }, "switch": { @@ -1157,6 +1172,9 @@ }, "super_freeze": { "name": "Super Freeze" + }, + "refrigerator": { + "name": "Koelkast" } }, "binary_sensor": { @@ -1301,6 +1319,12 @@ "button": { "induction_hob": { "name": "Inductiekookplaat" + }, + "start_program": { + "name": "Programma Start" + }, + "stop_program": { + "name": "Programma Stoppen" } }, "climate": { diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index 5a4dd32..529af01 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -225,7 +225,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Szybkie 20", "hqd_quick_30": "Szybkie 30", - "hqd_quick_dry": "Szybkoschnące", + "hqd_quick_dry": "Szybkoschnące 30", "hqd_quilt": "Kołdry", "hqd_refresh": "Odświeżanie", "hqd_school_uniform": "Mundurek szkolny", @@ -409,6 +409,11 @@ "silent": "Nocny", "silent_care": "Silent Care", "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", "special": "specjalne", "special_pw_prz": "specjalne", "steam": "Para 75°C", @@ -465,11 +470,12 @@ "programs_ov": { "state": { "bakery": "Makaron i Piekarnia", - "bakery_steam": "Chleb pieczony na parze", + "bakery_steam": "Para z piekarnika", "bottom_heating": "Grzanie dolne", "bottom_heating_fan": "Grzanie Dolne + Termoobieg", "bread": "Chleb", - "bread_steam": "Ciasteczka pieczone na parze", + "bread_steam": "Chleb pieczony na parze", + "combi": "Kombi", "convection_fan": "Termoobieg", "convection_fan_turnspit": "Termoobieg + Fan + Rożen", "conventional": "Konwencjonalny", @@ -477,7 +483,7 @@ "defrost": "Rozmrażanie", "descaling": "Odkamienianie", "fish": "Ryby", - "fish_steam": "Ryba gotowana na parze", + "fish_steam": "Ryba na parze", "grill_cata": "Grill", "grill_fan_cata": "Grill + termoobieg", "grill_fan_pyro": "Grill + termoobieg", @@ -488,12 +494,12 @@ "leavening": "Zaczyn", "low_temp_cooking": "Pieczenie w niskiej temperaturze", "low_temp_cooking_fish": "Pieczenie w niskiej temperaturze - ryby", - "low_temp_cooking_fish_steam": "Gotowanie na parze w niskiej temperaturze — ryby", + "low_temp_cooking_fish_steam": "Gotowanie w niskiej temperaturze - ryba gotowana na parze", "low_temp_cooking_meat": "Pieczenie w niskiej temperaturze - mięso", - "low_temp_cooking_meat_steam": "Gotowanie na parze w niskiej temperaturze — mięso", + "low_temp_cooking_meat_steam": "Gotowanie w niskiej temperaturze — mięso gotowane na parze", "low_temp_cooking_steam": "Gotowanie na parze w niskiej temperaturze", "meat": "Mięso", - "meat_steam": "Mięso gotowane na parze", + "meat_steam": "Mięso na parze", "multi_level": "Wielopoziomowo", "paella": "Paella", "pasta_and_bakery": "Makaron i Piekarnia", @@ -501,8 +507,8 @@ "pyrolysis": "Pyroliza", "pyrolysis_plus": "Pyroliza +", "red_meat": "Czerwone mięso", - "red_meat_steam": "Czerwone mięso gotowane na parze", - "regenerate": "Regeneracja", + "red_meat_steam": "Czerwone mięso na parze", + "regenerate": "Podgrzewanie", "soft_plus": "Soft+", "super_grill": "Super Grill", "tailor_bake": "Tailor bake", @@ -511,7 +517,7 @@ "vegetables": "Warzywa", "vegetables_cata": "Warzywa", "vegetables_pyro": "Warzywa", - "water_discharge": "Odpływ wody", + "water_discharge": "Odprowadzanie wody", "white_meat": "Białe mięso", "white_meat_steam": "Białe mięso gotowane na parze" }, @@ -570,7 +576,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Szybkie 20", "hqd_quick_30": "Szybkie 30", - "hqd_quick_dry": "Szybkoschnące", + "hqd_quick_dry": "Szybkoschnące 30", "hqd_quilt": "Kołdry", "hqd_refresh": "Odświeżanie", "hqd_school_uniform": "Mundurek szkolny", @@ -1050,6 +1056,15 @@ }, "remaining_time": { "name": "Pozostały czas" + }, + "ref_zones": { + "state": { + "fridge": "Lodówka", + "freezer": "Zamrażarka", + "vtRoom1": "My Zone", + "[fridge|freezer]": "Lodówka & Zamrażarka" + }, + "name": "Strefa" } }, "switch": { @@ -1157,6 +1172,9 @@ }, "super_freeze": { "name": "Super Freeze" + }, + "refrigerator": { + "name": "Lodówka" } }, "binary_sensor": { @@ -1301,6 +1319,12 @@ "button": { "induction_hob": { "name": "Płyta indukcyjna" + }, + "start_program": { + "name": "Program Początek" + }, + "stop_program": { + "name": "Program Zatrzymaj" } }, "climate": { diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index 81e669f..3baa522 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -225,7 +225,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Rápido 20", "hqd_quick_30": "Rápido 30", - "hqd_quick_dry": "Secagem rápida", + "hqd_quick_dry": "Secagem rápida 30", "hqd_quilt": "Colchas", "hqd_refresh": "Refrescar", "hqd_school_uniform": "Farda da escola", @@ -409,6 +409,11 @@ "silent": "Noite", "silent_care": "Silent Care", "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", "special": "especial", "special_pw_prz": "especial", "steam": "Vapor 75 °C", @@ -465,19 +470,20 @@ "programs_ov": { "state": { "bakery": "Massas e bolos", - "bakery_steam": "Pão cozido a vapor", + "bakery_steam": "Vapor do forno", "bottom_heating": "Aquecimento inferior", "bottom_heating_fan": "Aquecimento Inferior + Ventilação", "bread": "Pão", - "bread_steam": "Pastelaria cozida a vapor", + "bread_steam": "Pão no vapor", + "combi": "Combi", "convection_fan": "Convecção + Ventilador", - "convection_fan_turnspit": "Convecção + Ventilador + Espeto giratório", + "convection_fan_turnspit": "Espeto com convecção ventilada", "conventional": "Estático", - "conventional_turnspit": "Convecção + Espeto giratório", + "conventional_turnspit": "Espeto convencional", "defrost": "Descongelar", "descaling": "Descalcificação", "fish": "Peixe", - "fish_steam": "Peixe cozinhado a vapor", + "fish_steam": "Peixe no vapor", "grill_cata": "Grelhar", "grill_fan_cata": "Grelhar com ventilação", "grill_fan_pyro": "Grelhar + Ventilação", @@ -486,23 +492,23 @@ "iot_bread": "Pão", "iot_h20_clean": "h2O clean", "leavening": "Levedação", - "low_temp_cooking": "Cozinhar a baixa temperatura", - "low_temp_cooking_fish": "Cozinhar carne a baixa temperatura - Peixe", - "low_temp_cooking_fish_steam": "Cozedura a vapor a baixa temperatura - Peixe", - "low_temp_cooking_meat": "Cozinhar carne a baixa temperatura - Carne", - "low_temp_cooking_meat_steam": "Cozedura a vapor a baixa temperatura - Carne", - "low_temp_cooking_steam": "Cozedura a vapor a baixa temperatura", + "low_temp_cooking": "Cozimento em baixa temperatura", + "low_temp_cooking_fish": "Cozimento em baixa temperatura Peixe", + "low_temp_cooking_fish_steam": "Cozimento em baixa temperatura Peixe a vapor", + "low_temp_cooking_meat": "Cozimento em baixa temperatura Carne", + "low_temp_cooking_meat_steam": "Cozimento em baixa temperatura Carne no vapor", + "low_temp_cooking_steam": "Cozimento em baixa temperatura no vapor", "meat": "Carne", - "meat_steam": "Carne cozinhada a vapor", + "meat_steam": "Vapor de carne", "multi_level": "Multinível", "paella": "Paella", "pasta_and_bakery": "Massas e bolos", "pizza": "Pizza", "pyrolysis": "Pirólise", "pyrolysis_plus": "Pirólise +", - "red_meat": "Carne vermelha", - "red_meat_steam": "Carne vermelha cozinhada a vapor", - "regenerate": "Regeneração", + "red_meat": "Carne Vermelha", + "red_meat_steam": "Carne Vermelha no vapor", + "regenerate": "Regenerar", "soft_plus": "Soft+", "super_grill": "Super Grelhador", "tailor_bake": "Tailor bake", @@ -511,9 +517,9 @@ "vegetables": "Vegetais", "vegetables_cata": "Legumes", "vegetables_pyro": "Legumes", - "water_discharge": "Drenagem de água", - "white_meat": "Carne branca", - "white_meat_steam": "Carne branca cozinhada a vapor" + "water_discharge": "Descarga d'água", + "white_meat": "Carne Branca", + "white_meat_steam": "Carne Branca no vapor" }, "name": "Programa" }, @@ -570,7 +576,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Rápido 20", "hqd_quick_30": "Rápido 30", - "hqd_quick_dry": "Secagem rápida", + "hqd_quick_dry": "Secagem rápida 30", "hqd_quilt": "Colchas", "hqd_refresh": "Refrescar", "hqd_school_uniform": "Farda da escola", @@ -1050,6 +1056,15 @@ }, "remaining_time": { "name": "Tempo restante" + }, + "ref_zones": { + "state": { + "fridge": "Frigorífico", + "freezer": "Congelador", + "vtRoom1": "My Zone", + "[fridge|freezer]": "Frigorífico & Congelador" + }, + "name": "Zona" } }, "switch": { @@ -1157,6 +1172,9 @@ }, "super_freeze": { "name": "Super Freeze" + }, + "refrigerator": { + "name": "Frigorífico" } }, "binary_sensor": { @@ -1301,6 +1319,12 @@ "button": { "induction_hob": { "name": "Placa de indução" + }, + "start_program": { + "name": "Programa Início" + }, + "stop_program": { + "name": "Programa Parar" } }, "climate": { diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index 7ed2d58..f272bc8 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -225,7 +225,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Rapid 20", "hqd_quick_30": "Rapid 30", - "hqd_quick_dry": "Uscare rapidă", + "hqd_quick_dry": "Uscare rapidă 30", "hqd_quilt": "Pilote", "hqd_refresh": "Reîmprospătare", "hqd_school_uniform": "Uniformă școlară", @@ -409,6 +409,11 @@ "silent": "Noapte", "silent_care": "Silent Care", "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", "special": "special", "special_pw_prz": "special", "steam": "Abur 75 °C", @@ -464,12 +469,13 @@ }, "programs_ov": { "state": { - "bakery": "Paste și patiserie", - "bakery_steam": "Pâine gătită la abur", + "bakery": "Paste și produse de patiserie", + "bakery_steam": "În cuptor la abur", "bottom_heating": "Încălzire de jos", "bottom_heating_fan": "Încălzire De Jos + Ventilație", "bread": "Pâine", - "bread_steam": "Produse de patiserie gătite la abur", + "bread_steam": "Pâine gătită la abur", + "combi": "Combi", "convection_fan": "Convecție și ventilație", "convection_fan_turnspit": "Convecție + Ventilator + Rotisor", "conventional": "Convențional", @@ -488,9 +494,9 @@ "leavening": "Dospire", "low_temp_cooking": "Gătire la temperatură scăzută", "low_temp_cooking_fish": "Gătire la temperatură scăzută - Pește", - "low_temp_cooking_fish_steam": "Gătitul cu abur la temperatură scăzută - Pește", + "low_temp_cooking_fish_steam": "Gătitul la temperaturi scăzute - Pește gătit la abur", "low_temp_cooking_meat": "Gătire la temperatură scăzută - Carne", - "low_temp_cooking_meat_steam": "Gătitul la abur la temperatură scăzută - carne", + "low_temp_cooking_meat_steam": "Gătitul la temperaturi scăzute - Carne gătită la abur", "low_temp_cooking_steam": "Gătitul la abur la temperaturi scăzute", "meat": "Carne", "meat_steam": "Carne gătită la abur", @@ -511,7 +517,7 @@ "vegetables": "Legume", "vegetables_cata": "Legume", "vegetables_pyro": "Legume", - "water_discharge": "Scurgerea apei", + "water_discharge": "Evacuare apă", "white_meat": "Carne albă", "white_meat_steam": "Carne albă gătită la abur" }, @@ -570,7 +576,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Rapid 20", "hqd_quick_30": "Rapid 30", - "hqd_quick_dry": "Uscare rapidă", + "hqd_quick_dry": "Uscare rapidă 30", "hqd_quilt": "Pilote", "hqd_refresh": "Reîmprospătare", "hqd_school_uniform": "Uniformă școlară", @@ -1050,6 +1056,15 @@ }, "remaining_time": { "name": "Timp rămas" + }, + "ref_zones": { + "state": { + "fridge": "Frigider", + "freezer": "Congelator", + "vtRoom1": "My Zone", + "[fridge|freezer]": "Frigider & Congelator" + }, + "name": "Zonă" } }, "switch": { @@ -1157,6 +1172,9 @@ }, "super_freeze": { "name": "Super Freeze" + }, + "refrigerator": { + "name": "Frigider" } }, "binary_sensor": { @@ -1301,6 +1319,12 @@ "button": { "induction_hob": { "name": "Plita cu inducție" + }, + "start_program": { + "name": "Program Pornire" + }, + "stop_program": { + "name": "Program Oprire" } }, "climate": { diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index b828f6b..67a4885 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -225,7 +225,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Быстрая 20", "hqd_quick_30": "Быстрая 30", - "hqd_quick_dry": "Быстрая сушка", + "hqd_quick_dry": "Быстрая сушка 30", "hqd_quilt": "Стеганые одеяла", "hqd_refresh": "Освежение", "hqd_school_uniform": "Школьная форма", @@ -409,6 +409,11 @@ "silent": "Ночь", "silent_care": "Silent Care", "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", "special": "специальные", "special_pw_prz": "специальные", "steam": "пар 75°C", @@ -465,11 +470,12 @@ "programs_ov": { "state": { "bakery": "Паста и выпечка", - "bakery_steam": "Хлеб, испеченный на пару", + "bakery_steam": "Пар в духовом шкафу", "bottom_heating": "Нижний элемент", "bottom_heating_fan": "Нижний элемент + вентилятор", "bread": "Хлеб", - "bread_steam": "Выпечка, приготовленная на пару", + "bread_steam": "Хлеб, испеченный на пару", + "combi": "Combi", "convection_fan": "Верхний и нижний нагрев с вентилятором", "convection_fan_turnspit": "Обыкновенная духовка + вентилятор + вертел", "conventional": "Верхний и нижний нагрев", @@ -477,7 +483,7 @@ "defrost": "Размораживание", "descaling": "Удаление накипи", "fish": "Рыба", - "fish_steam": "Рыба, приготовленная на пару", + "fish_steam": "Рыба на пару", "grill_cata": "Гриль", "grill_fan_cata": "Гриль с вентилятором", "grill_fan_pyro": "Гриль + вентилятор", @@ -488,12 +494,12 @@ "leavening": "Заквашивание", "low_temp_cooking": "Приготовление при низкой температуре", "low_temp_cooking_fish": "Приготовление при низкой температуре - Рыба", - "low_temp_cooking_fish_steam": "Приготовление при низкой температуре на пару - Рыба", + "low_temp_cooking_fish_steam": "Приготовление при низкой температуре - Рыба на пару", "low_temp_cooking_meat": "Приготовление при низкой температуре - Мясо", - "low_temp_cooking_meat_steam": "Приготовление при низкой температуре на пару - Мясо", + "low_temp_cooking_meat_steam": "Приготовление при низкой температуре - Мясо на пару", "low_temp_cooking_steam": "Приготовление при низкой температуре на пару", "meat": "Мясо", - "meat_steam": "Мясо, приготовленное на пару", + "meat_steam": "Мясо на пару", "multi_level": "Многоуровневое приготовление", "paella": "Paella", "pasta_and_bakery": "Паста и выпечка", @@ -501,7 +507,7 @@ "pyrolysis": "Пиролиз", "pyrolysis_plus": "Пиролиз +", "red_meat": "Красное мясо", - "red_meat_steam": "Красное мясо, приготовленное на пару", + "red_meat_steam": "Красное мясо на пару", "regenerate": "Регенерация", "soft_plus": "Soft+", "super_grill": "Супер-гриль", @@ -511,9 +517,9 @@ "vegetables": "Овощи", "vegetables_cata": "Овощи", "vegetables_pyro": "Овощи", - "water_discharge": "Водоотвод", + "water_discharge": "Слив воды", "white_meat": "Белое мясо", - "white_meat_steam": "Белое мясо, приготовленное на пару" + "white_meat_steam": "Белое мясо на пару" }, "name": "Программа" }, @@ -570,7 +576,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Быстрая 20", "hqd_quick_30": "Быстрая 30", - "hqd_quick_dry": "Быстрая сушка", + "hqd_quick_dry": "Быстрая сушка 30", "hqd_quilt": "Стеганые одеяла", "hqd_refresh": "Освежение", "hqd_school_uniform": "Школьная форма", @@ -1050,6 +1056,15 @@ }, "remaining_time": { "name": "Оставшееся время" + }, + "ref_zones": { + "state": { + "fridge": "Холодильник", + "freezer": "Морозильник", + "vtRoom1": "My Zone", + "[fridge|freezer]": "Холодильник & Морозильник" + }, + "name": "Зона" } }, "switch": { @@ -1157,6 +1172,9 @@ }, "super_freeze": { "name": "Super Freeze" + }, + "refrigerator": { + "name": "Холодильник" } }, "binary_sensor": { @@ -1301,6 +1319,12 @@ "button": { "induction_hob": { "name": "Индукционная варочная панель" + }, + "start_program": { + "name": "Программа Начать" + }, + "stop_program": { + "name": "Программа Стоп" } }, "climate": { diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index 29d2542..82ffc9d 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -225,7 +225,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Rýchle 20", "hqd_quick_30": "Rýchle 30", - "hqd_quick_dry": "Rýchle sušenie", + "hqd_quick_dry": "Rýchle sušenie 30", "hqd_quilt": "Prikrývky", "hqd_refresh": "Osvieženie", "hqd_school_uniform": "Školská uniforma", @@ -409,6 +409,11 @@ "silent": "Noc", "silent_care": "Silent Care", "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", "special": "špeciál", "special_pw_prz": "špeciál", "steam": "Para 75 °C", @@ -465,11 +470,12 @@ "programs_ov": { "state": { "bakery": "Cestoviny a pečenie", - "bakery_steam": "Chlieb pečený v pare", + "bakery_steam": "Parná rúra", "bottom_heating": "Spodný ohrev", "bottom_heating_fan": "Spodný ohrev + Ventilátor", "bread": "Chlieb", - "bread_steam": "Pečivo pečené v pare", + "bread_steam": "Chlieb pečený v pare", + "combi": "Combi", "convection_fan": "Statický + ventilátor", "convection_fan_turnspit": "Statické + ventilátor + otočný ražeň", "conventional": "Statický", @@ -477,7 +483,7 @@ "defrost": "Rozmraziť", "descaling": "Odstránenie vodného kameňa", "fish": "Ryby", - "fish_steam": "Ryby varené v pare", + "fish_steam": "Ryby pripravené v pare", "grill_cata": "Gril", "grill_fan_cata": "Gril + ventilátor", "grill_fan_pyro": "Gril + ventilátor", @@ -488,12 +494,12 @@ "leavening": "Kysnutie", "low_temp_cooking": "Varenie pri nízkych teplotách", "low_temp_cooking_fish": "Varenie pri nízkych teplotách – Ryby", - "low_temp_cooking_fish_steam": "Varenie pri nízkych teplotách v pare – Ryby", + "low_temp_cooking_fish_steam": "Varenie pri nízkych teplotách – ryby pripravené v pare", "low_temp_cooking_meat": "Varenie pri nízkych teplotách – Mäso", - "low_temp_cooking_meat_steam": "Varenie pri nízkych teplotách v pare", + "low_temp_cooking_meat_steam": "Varenie pri nízkych teplotách - mäso dusené v pare", "low_temp_cooking_steam": "Varenie pri nízkych teplotách v pare", "meat": "Mäso", - "meat_steam": "Mäso uvarené v pare", + "meat_steam": "Mäso v pare", "multi_level": "Viacúrovňové", "paella": "Paella", "pasta_and_bakery": "Cestoviny a pečenie", @@ -501,8 +507,8 @@ "pyrolysis": "Pyrolýza", "pyrolysis_plus": "Pyrolýza +", "red_meat": "Červené mäso", - "red_meat_steam": "Červené mäso varené v pare", - "regenerate": "Regenerácia", + "red_meat_steam": "Červené mäso dusené v pare", + "regenerate": "Regenerovať", "soft_plus": "Soft+", "super_grill": "Super Gril", "tailor_bake": "Tailor bake", @@ -511,9 +517,9 @@ "vegetables": "Zelenina", "vegetables_cata": "Zelenina", "vegetables_pyro": "Zelenina", - "water_discharge": "Odtok vody", + "water_discharge": "Vypúšťanie vody", "white_meat": "Biele mäso", - "white_meat_steam": "Biele mäso varené v pare" + "white_meat_steam": "Biele mäso pripravené v pare" }, "name": "Program" }, @@ -570,7 +576,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Rýchle 20", "hqd_quick_30": "Rýchle 30", - "hqd_quick_dry": "Rýchle sušenie", + "hqd_quick_dry": "Rýchle sušenie 30", "hqd_quilt": "Prikrývky", "hqd_refresh": "Osvieženie", "hqd_school_uniform": "Školská uniforma", @@ -1050,6 +1056,15 @@ }, "remaining_time": { "name": "Zostávajúci čas" + }, + "ref_zones": { + "state": { + "fridge": "Chladnička", + "freezer": "Mraznička", + "vtRoom1": "My Zone", + "[fridge|freezer]": "Chladnička & Mraznička" + }, + "name": "Zóna" } }, "switch": { @@ -1157,6 +1172,9 @@ }, "super_freeze": { "name": "Super Freeze" + }, + "refrigerator": { + "name": "Chladnička" } }, "binary_sensor": { @@ -1206,7 +1224,7 @@ "name": "Panvica" }, "remote_control": { - "name": "Diaľkové ovládanie" + "name": "Daljinsko upravljanje" }, "rinse_aid": { "name": "Úroveň prostriedku na oplachovanie" @@ -1301,6 +1319,12 @@ "button": { "induction_hob": { "name": "Indukčná varná doska" + }, + "start_program": { + "name": "Program Začiatok" + }, + "stop_program": { + "name": "Program Zastaviť" } }, "climate": { diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index bad6238..0e6fbe8 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -225,7 +225,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Hitro 20", "hqd_quick_30": "Hitro 30", - "hqd_quick_dry": "Hitro sušenje", + "hqd_quick_dry": "Hitro sušenje 30", "hqd_quilt": "Posteljna pregrinjala", "hqd_refresh": "Osvežitev", "hqd_school_uniform": "Šolska uniforma", @@ -409,6 +409,11 @@ "silent": "Noč", "silent_care": "Silent Care", "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", "special": "posebno", "special_pw_prz": "Posebno", "steam": "Para 75 °C", @@ -465,11 +470,12 @@ "programs_ov": { "state": { "bakery": "Testenine in pekovski izdelki", - "bakery_steam": "V sopari pečen kruh", + "bakery_steam": "Parna pečica", "bottom_heating": "Spodnji grelnik", "bottom_heating_fan": "Spodnji grelnik + Ventilator", "bread": "Kruh", - "bread_steam": "V sopari pečeno pecivo", + "bread_steam": "V sopari pečen kruh", + "combi": "Kombinirano", "convection_fan": "Konvekcija + ventilator", "convection_fan_turnspit": "Konvekcija + ventilator + raženj", "conventional": "Konvenkcijsko", @@ -486,14 +492,14 @@ "iot_bread": "Kruh", "iot_h20_clean": "h2O clean", "leavening": "Vzhajanje", - "low_temp_cooking": "Priprava pri nizki temperaturi", - "low_temp_cooking_fish": "Priprava pri nizki temperaturi – ribe", - "low_temp_cooking_fish_steam": "Soparjenje pri nizki temperaturi – ribe", - "low_temp_cooking_meat": "Priprava pri nizki temperaturi – meso", - "low_temp_cooking_meat_steam": "Soparjenje pri nizki temperaturi – meso", + "low_temp_cooking": "Kuhanje pri nizki temperaturi", + "low_temp_cooking_fish": "Kuhanje pri nizki temperaturi – ribe", + "low_temp_cooking_fish_steam": "Kuhanje pri nizki temperaturi – soparjene ribe", + "low_temp_cooking_meat": "Kuhanje pri nizki temperaturi – meso", + "low_temp_cooking_meat_steam": "Kuhanje pri nizki temperaturi – soparjeno meso", "low_temp_cooking_steam": "Soparjenje pri nizki temperaturi", "meat": "Meso", - "meat_steam": "Soparjeno meso", + "meat_steam": "Soparjenje mesa", "multi_level": "Na več nivojih", "paella": "Paella", "pasta_and_bakery": "Testenine in pekovski izdelki", @@ -502,7 +508,7 @@ "pyrolysis_plus": "Piroliza +", "red_meat": "Rdeče meso", "red_meat_steam": "Soparjeno rdeče meso", - "regenerate": "Obnavljanje", + "regenerate": "Regeneracija", "soft_plus": "Soft+", "super_grill": "Super Grill", "tailor_bake": "Tailor bake", @@ -511,7 +517,7 @@ "vegetables": "Zelenjava", "vegetables_cata": "Zelenjava", "vegetables_pyro": "Zelenjava", - "water_discharge": "Odtok za vodo", + "water_discharge": "Izpust vode", "white_meat": "Belo meso", "white_meat_steam": "Soparjeno belo meso" }, @@ -570,7 +576,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Hitro 20", "hqd_quick_30": "Hitro 30", - "hqd_quick_dry": "Hitro sušenje", + "hqd_quick_dry": "Hitro sušenje 30", "hqd_quilt": "Posteljna pregrinjala", "hqd_refresh": "Osvežitev", "hqd_school_uniform": "Šolska uniforma", @@ -1050,6 +1056,15 @@ }, "remaining_time": { "name": "Time remaining" + }, + "ref_zones": { + "state": { + "fridge": "Hladilnik", + "freezer": "Zamrzovalnik", + "vtRoom1": "My Zone", + "[fridge|freezer]": "Hladilnik & Zamrzovalnik" + }, + "name": "Cona" } }, "switch": { @@ -1157,6 +1172,9 @@ }, "super_freeze": { "name": "Super Freeze" + }, + "refrigerator": { + "name": "Hladilnik" } }, "binary_sensor": { @@ -1206,7 +1224,7 @@ "name": "Posoda" }, "remote_control": { - "name": "Daljinsko upravljanje" + "name": "Diaľkové ovládanie" }, "rinse_aid": { "name": "Nivo sredstva za sijaj" @@ -1301,6 +1319,12 @@ "button": { "induction_hob": { "name": "Indukcijska kuhalna plošča" + }, + "start_program": { + "name": "Program Start" + }, + "stop_program": { + "name": "Program Stop" } }, "climate": { diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index 84f3d08..bd741df 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -225,7 +225,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Brzo 20", "hqd_quick_30": "Brzo 30", - "hqd_quick_dry": "Brzo sušenje", + "hqd_quick_dry": "Brzo sušenje 30", "hqd_quilt": "Jorgani", "hqd_refresh": "Osvežavanje", "hqd_school_uniform": "Školska uniforma", @@ -409,6 +409,11 @@ "silent": "Noć", "silent_care": "Silent Care", "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", "special": "posebno", "special_pw_prz": "posebno", "steam": "Para 75°C", @@ -465,11 +470,12 @@ "programs_ov": { "state": { "bakery": "Testenine i pecivo", - "bakery_steam": "Hleb pečen na pari", + "bakery_steam": "Priprema na pari u rerni", "bottom_heating": "Donje grejanje", "bottom_heating_fan": "Donje grejanje + Ventilator", "bread": "Hleb", - "bread_steam": "Peciva pečena na pari", + "bread_steam": "Hleb pečen na pari", + "combi": "Kombinovani", "convection_fan": "Konvekcija + ventilator", "convection_fan_turnspit": "Konvekcija + ventilator + ražanj", "conventional": "Konvekcija", @@ -477,7 +483,7 @@ "defrost": "Odmrzavanje", "descaling": "Uklanjanje kamenca", "fish": "Riba", - "fish_steam": "Riba kuvana na pari", + "fish_steam": "Riba na pari", "grill_cata": "Roštilj", "grill_fan_cata": "Roštilj sa ventilatorom", "grill_fan_pyro": "Gril + ventilator", @@ -488,12 +494,12 @@ "leavening": "Narastanje", "low_temp_cooking": "Kuvanje na niskoj temperaturi", "low_temp_cooking_fish": "Kuvanje na niskoj temperaturi – riba", - "low_temp_cooking_fish_steam": "Kuvanje na pari na niskoj temperaturi – riba", + "low_temp_cooking_fish_steam": "Kuvanje na niskoj temperaturi – riba na pari", "low_temp_cooking_meat": "Kuvanje na niskoj temperaturi – meso", - "low_temp_cooking_meat_steam": "Kuvanje na pari na niskoj temperaturi – meso", + "low_temp_cooking_meat_steam": "Kuvanje na niskoj temperaturi – meso na pari", "low_temp_cooking_steam": "Kuvanje na pari na niskoj temperaturi", "meat": "Meso", - "meat_steam": "Meso kuvano na pari", + "meat_steam": "Priprema mesa na pari", "multi_level": "Više nivoa", "paella": "Paella", "pasta_and_bakery": "Testenine i pecivo", @@ -501,7 +507,7 @@ "pyrolysis": "Piroliza", "pyrolysis_plus": "Piroliza +", "red_meat": "Crveno meso", - "red_meat_steam": "Crveno meso kuvano na pari", + "red_meat_steam": "Crveno meso na pari", "regenerate": "Regeneracija", "soft_plus": "Meko+", "super_grill": "Super gril", @@ -511,9 +517,9 @@ "vegetables": "Povrće", "vegetables_cata": "Povrće", "vegetables_pyro": "Povrće", - "water_discharge": "Odvod vode", + "water_discharge": "Ispuštanje vode", "white_meat": "Belo meso", - "white_meat_steam": "Belo meso kuvano na pari" + "white_meat_steam": "Belo meso na pari" }, "name": "Program" }, @@ -570,7 +576,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Brzo 20", "hqd_quick_30": "Brzo 30", - "hqd_quick_dry": "Brzo sušenje", + "hqd_quick_dry": "Brzo sušenje 30", "hqd_quilt": "Jorgani", "hqd_refresh": "Osvežavanje", "hqd_school_uniform": "Školska uniforma", @@ -1050,6 +1056,15 @@ }, "remaining_time": { "name": "Preostalo vreme" + }, + "ref_zones": { + "state": { + "fridge": "Frižider", + "freezer": "Zamrzivač", + "vtRoom1": "My Zone", + "[fridge|freezer]": "Frižider & Zamrzivač" + }, + "name": "Zona" } }, "switch": { @@ -1157,6 +1172,9 @@ }, "super_freeze": { "name": "Super Freeze" + }, + "refrigerator": { + "name": "Frižider" } }, "binary_sensor": { @@ -1206,7 +1224,7 @@ "name": "Tiganj" }, "remote_control": { - "name": "Daljinsko upravljanje" + "name": "Upravljanje na daljinu" }, "rinse_aid": { "name": "Nivo sredstva za ispiranje" @@ -1301,6 +1319,12 @@ "button": { "induction_hob": { "name": "Indukciona ploča" + }, + "start_program": { + "name": "Program Pokretanje" + }, + "stop_program": { + "name": "Program Zaustavi" } }, "climate": { diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index ca30528..d305dea 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -225,7 +225,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Hızlı 20", "hqd_quick_30": "Hızlı 30", - "hqd_quick_dry": "Hızlı kurutma", + "hqd_quick_dry": "Hızlı kurutma 30", "hqd_quilt": "Yorganlar", "hqd_refresh": "Yenileme", "hqd_school_uniform": "Okul üniforması", @@ -409,6 +409,11 @@ "silent": "Gece", "silent_care": "Silent Care", "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", "special": "özel", "special_pw_prz": "özel", "steam": "Buhar 75°C", @@ -465,11 +470,12 @@ "programs_ov": { "state": { "bakery": "Makarna ve Ekmek", - "bakery_steam": "Buharda pişmiş ekmek", + "bakery_steam": "Fırın buharı", "bottom_heating": "Alt ısıtıcı", "bottom_heating_fan": "Alt ısıtıcı + Fan", "bread": "Ekmek", - "bread_steam": "Buharda pişmiş hamur işleri", + "bread_steam": "Buharda pişmiş ekmek", + "combi": "Kombi", "convection_fan": "Fan desteklı", "convection_fan_turnspit": "Konveksiyon + Fan + Şiş Çevirme", "conventional": "Statık", @@ -477,7 +483,7 @@ "defrost": "Buz çözme", "descaling": "Kireç çözme", "fish": "Balık", - "fish_steam": "Buharda pişmiş balık", + "fish_steam": "Balık buğulama", "grill_cata": "Izgara", "grill_fan_cata": "Izgara fan", "grill_fan_pyro": "Izgara + Fan", @@ -488,12 +494,12 @@ "leavening": "Mayalama", "low_temp_cooking": "Düşük Sıcaklıkta Pişirme", "low_temp_cooking_fish": "Düşük Sıcaklıkta Pişirme - Balık", - "low_temp_cooking_fish_steam": "Düşük Sıcaklıkta Buharda Pişirme - Balık", + "low_temp_cooking_fish_steam": "Düşük Isıda Pişirme - Balık buğulama", "low_temp_cooking_meat": "Düşük Sıcaklıkta Pişirme - Et", - "low_temp_cooking_meat_steam": "Düşük Sıcaklıkta Buharda Pişirme - Et", + "low_temp_cooking_meat_steam": "Düşük Isıda Pişirme - Buharda et", "low_temp_cooking_steam": "Düşük Sıcaklıkta Buharda Pişirme", "meat": "Et", - "meat_steam": "Buharda pişmiş et", + "meat_steam": "Et buharı", "multi_level": "Çok Seviyeli", "paella": "Paella", "pasta_and_bakery": "Makarna ve Ekmek", @@ -501,8 +507,8 @@ "pyrolysis": "Piroliz", "pyrolysis_plus": "Piroliz +", "red_meat": "Kırmızı Et", - "red_meat_steam": "Buharda pişmiş kırmızı et", - "regenerate": "Yenileme", + "red_meat_steam": "Buharda kırmızı et", + "regenerate": "Yeniden oluştur", "soft_plus": "Yumuşak+", "super_grill": "Süper Izgara", "tailor_bake": "Tailor bake", @@ -511,9 +517,9 @@ "vegetables": "Sebzeler", "vegetables_cata": "Sebzeler", "vegetables_pyro": "Sebzeler", - "water_discharge": "Su Drenajı", + "water_discharge": "Su Tahliyesi", "white_meat": "Beyaz Et", - "white_meat_steam": "Buharda pişmiş beyaz et" + "white_meat_steam": "Buharda beyaz et" }, "name": "Program" }, @@ -570,7 +576,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Hızlı 20", "hqd_quick_30": "Hızlı 30", - "hqd_quick_dry": "Hızlı kurutma", + "hqd_quick_dry": "Hızlı kurutma 30", "hqd_quilt": "Yorganlar", "hqd_refresh": "Yenileme", "hqd_school_uniform": "Okul üniforması", @@ -1050,6 +1056,15 @@ }, "remaining_time": { "name": "Kalan süre" + }, + "ref_zones": { + "state": { + "fridge": "Buzdolabı", + "freezer": "Dondurucu", + "vtRoom1": "My Zone", + "[fridge|freezer]": "Buzdolabı & Dondurucu" + }, + "name": "Ocak gözü" } }, "switch": { @@ -1157,6 +1172,9 @@ }, "super_freeze": { "name": "Super Freeze" + }, + "refrigerator": { + "name": "Buzdolabı" } }, "binary_sensor": { @@ -1301,6 +1319,12 @@ "button": { "induction_hob": { "name": "İndüksiyonlu Ocak" + }, + "start_program": { + "name": "Program Başlangıç" + }, + "stop_program": { + "name": "Program Durdur" } }, "climate": { diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index 756c123..dbc86ec 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -409,6 +409,11 @@ "silent": "夜间", "silent_care": "Silent Care", "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", "special": "特殊", "special_pw_prz": "特殊", "steam": "蒸汽洗75°C", @@ -465,11 +470,12 @@ "programs_ov": { "state": { "bakery": "意大利面和烘焙食品", - "bakery_steam": "蒸烤的面包", + "bakery_steam": "烤炉蒸汽", "bottom_heating": "底部加热 ", "bottom_heating_fan": "底部加热 + 风扇", "bread": "面包", - "bread_steam": "蒸烤的甜点", + "bread_steam": "蒸烤的面包", + "combi": "Combi", "convection_fan": "对流 + 风扇", "convection_fan_turnspit": "对流 + 风扇 + 烤叉", "conventional": "对流", @@ -477,7 +483,7 @@ "defrost": "解冻", "descaling": "除垢", "fish": "鱼", - "fish_steam": "蒸煮的鱼", + "fish_steam": "蒸鱼", "grill_cata": "烤架", "grill_fan_cata": "烤架风扇", "grill_fan_pyro": "烤架 + 风扇", @@ -488,12 +494,12 @@ "leavening": "发酵", "low_temp_cooking": "低温烹饪", "low_temp_cooking_fish": "低温烹饪 - 鱼类", - "low_temp_cooking_fish_steam": "低温蒸汽烹饪 - 鱼类", + "low_temp_cooking_fish_steam": "低温烹饪 - 蒸鱼", "low_temp_cooking_meat": "低温烹饪 - 肉类", - "low_temp_cooking_meat_steam": "低温蒸汽烹饪 - 肉类", + "low_temp_cooking_meat_steam": "低温烹饪 - 蒸肉", "low_temp_cooking_steam": "低温蒸汽烹饪", "meat": "肉", - "meat_steam": "蒸煮的肉", + "meat_steam": "肉类蒸汽", "multi_level": "多层", "paella": "Paella", "pasta_and_bakery": "意大利面和烘焙食品", @@ -501,8 +507,8 @@ "pyrolysis": "热解", "pyrolysis_plus": "热解 +", "red_meat": "红肉", - "red_meat_steam": "蒸煮的红肉", - "regenerate": "再生", + "red_meat_steam": "蒸红肉", + "regenerate": "再加热", "soft_plus": "软+", "super_grill": "超级烤架", "tailor_bake": "Tailor bake", @@ -513,7 +519,7 @@ "vegetables_pyro": "蔬菜", "water_discharge": "排水", "white_meat": "白肉", - "white_meat_steam": "蒸煮的白肉" + "white_meat_steam": "蒸白肉" }, "name": "程序" }, @@ -1050,6 +1056,15 @@ }, "remaining_time": { "name": "剩余时间" + }, + "ref_zones": { + "state": { + "fridge": "冰箱", + "freezer": "冷藏箱", + "vtRoom1": "My Zone", + "[fridge|freezer]": "冰箱 & 冷藏箱" + }, + "name": "区域" } }, "switch": { @@ -1157,6 +1172,9 @@ }, "super_freeze": { "name": "Super Freeze" + }, + "refrigerator": { + "name": "冰箱" } }, "binary_sensor": { @@ -1206,7 +1224,7 @@ "name": "烤盘" }, "remote_control": { - "name": "远程控制" + "name": "Control remoto" }, "rinse_aid": { "name": "漂洗助剂液位" @@ -1301,6 +1319,12 @@ "button": { "induction_hob": { "name": "电磁炉" + }, + "start_program": { + "name": "程序 开始" + }, + "stop_program": { + "name": "程序 停止" } }, "climate": { diff --git a/info.md b/info.md index 56ca7b7..07cb11c 100644 --- a/info.md +++ b/info.md @@ -61,6 +61,7 @@ Support has been confirmed for these models, but many more will work. Please add - Haier HWO60SM2F3XH - Haier XIB 3B2SFS-80 - Haier XIB 6B2D3FB +- Candy BCTDH7A1TE - Candy CIS633SCTTWIFI - Candy CSOE C10DE-80 - Candy ROE H9A3TCEX-S diff --git a/scripts/generate_translation.py b/scripts/generate_translation.py index 6c1bd79..2b068b0 100755 --- a/scripts/generate_translation.py +++ b/scripts/generate_translation.py @@ -26,6 +26,7 @@ SELECT = { "dry_levels": const.TUMBLE_DRYER_DRY_LEVEL, "eco_pilot": const.AC_HUMAN_SENSE, "fan_mode": const.AC_FAN_MODE, + "ref_zones": const.REF_ZONES, } PROGRAMS = { @@ -85,6 +86,7 @@ NAMES = { "auto_set": "REF_CMD&CTRL.MODALITIES.ECO", "super_cool": "REF_CMD&CTRL.MODALITIES.SUPER_COOL", "super_freeze": "REF_CMD&CTRL.MODALITIES.SUPER_FREEZE", + "refrigerator": "REF.NAME", }, "binary_sensor": { "door_lock": "WASHING_CMD&CTRL.CHECK_UP_RESULTS.DOOR_LOCK", @@ -116,6 +118,8 @@ NAMES = { }, "button": { "induction_hob": "GLOBALS.APPLIANCES_NAME.IH", + "start_program": ["WC.SET_PROGRAM.PROGRAM", "GLOBALS.GENERAL.START_ON"], + "stop_program": ["WC.SET_PROGRAM.PROGRAM", "GLOBALS.GENERAL.STOP"], }, "select": { "dry_levels": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_LEVEL", @@ -129,6 +133,7 @@ NAMES = { "programs_wm": "WC.SET_PROGRAM.PROGRAM", "eco_pilot": "AC.PROGRAM_DETAIL.ECO_PILOT", "remaining_time": "ENROLLMENT_COMMON.GENERAL.REMAINING_TIME", + "ref_zones": "IH.COMMON.COIL", }, "sensor": { "dry_levels": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_LEVEL", -- 2.39.5 From 9518031f242647dd6921db5d801416d31c5eac93 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 22 May 2023 01:12:51 +0200 Subject: [PATCH 109/205] Fix problematic char in translation keys --- custom_components/hon/const.py | 4 ++-- custom_components/hon/manifest.json | 2 +- custom_components/hon/translations/cs.json | 4 ++-- custom_components/hon/translations/de.json | 4 ++-- custom_components/hon/translations/el.json | 4 ++-- custom_components/hon/translations/en.json | 4 ++-- custom_components/hon/translations/es.json | 4 ++-- custom_components/hon/translations/fr.json | 4 ++-- custom_components/hon/translations/he.json | 4 ++-- custom_components/hon/translations/hr.json | 4 ++-- custom_components/hon/translations/it.json | 4 ++-- custom_components/hon/translations/nl.json | 4 ++-- custom_components/hon/translations/pl.json | 4 ++-- custom_components/hon/translations/pt.json | 4 ++-- custom_components/hon/translations/ro.json | 4 ++-- custom_components/hon/translations/ru.json | 4 ++-- custom_components/hon/translations/sk.json | 4 ++-- custom_components/hon/translations/sl.json | 4 ++-- custom_components/hon/translations/sr.json | 4 ++-- custom_components/hon/translations/tr.json | 4 ++-- custom_components/hon/translations/zh.json | 4 ++-- 21 files changed, 41 insertions(+), 41 deletions(-) diff --git a/custom_components/hon/const.py b/custom_components/hon/const.py index 398f88a..fb93850 100644 --- a/custom_components/hon/const.py +++ b/custom_components/hon/const.py @@ -183,8 +183,8 @@ AC_HUMAN_SENSE = { REF_ZONES = { "fridge": "REF.ZONES.FRIDGE", "freezer": "REF.ZONES.FREEZER", - "vtRoom1": "REF.ZONES.MY_ZONE_1", - "[fridge|freezer]": ["REF.ZONES.FRIDGE", " & ", "REF.ZONES.FREEZER"], + "vtroom1": "REF.ZONES.MY_ZONE_1", + "fridge_freezer": ["REF.ZONES.FRIDGE", " & ", "REF.ZONES.FREEZER"], } PROGRAMS_TD = [ diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 6762874..a07b706 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -9,7 +9,7 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": [ - "pyhOn==0.11.0" + "pyhOn==0.11.1" ], "version": "0.8.0-beta.5" } diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index 2dba578..ec0f574 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -1061,8 +1061,8 @@ "state": { "fridge": "Chladnička", "freezer": "Mraznička", - "vtRoom1": "My Zone", - "[fridge|freezer]": "Chladnička & Mraznička" + "vtroom1": "My Zone", + "fridge_freezer": "Chladnička & Mraznička" }, "name": "Zóna" } diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index 2bb040c..d8068b4 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -1061,8 +1061,8 @@ "state": { "fridge": "Kühlschrank", "freezer": "Gefrierschrank", - "vtRoom1": "My Zone", - "[fridge|freezer]": "Kühlschrank & Gefrierschrank" + "vtroom1": "My Zone", + "fridge_freezer": "Kühlschrank & Gefrierschrank" }, "name": "Zone" } diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index 0a95dc4..e6d6f29 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -1061,8 +1061,8 @@ "state": { "fridge": "Ψυγείο", "freezer": "Καταψύκτης", - "vtRoom1": "My Zone", - "[fridge|freezer]": "Ψυγείο & Καταψύκτης" + "vtroom1": "My Zone", + "fridge_freezer": "Ψυγείο & Καταψύκτης" }, "name": "Ζώνη" } diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 8556936..9616ad5 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -1235,8 +1235,8 @@ "state": { "fridge": "Fridge", "freezer": "Freezer", - "vtRoom1": "My Zone", - "[fridge|freezer]": "Fridge & Freezer" + "vtroom1": "My Zone", + "fridge_freezer": "Fridge & Freezer" }, "name": "Zone" } diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index dfb7e48..37e1747 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -1061,8 +1061,8 @@ "state": { "fridge": "Frigorífico", "freezer": "Congelador", - "vtRoom1": "My Zone", - "[fridge|freezer]": "Frigorífico & Congelador" + "vtroom1": "My Zone", + "fridge_freezer": "Frigorífico & Congelador" }, "name": "Zona" } diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index 1b286eb..89f8ebd 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -1061,8 +1061,8 @@ "state": { "fridge": "Réfrigérateur", "freezer": "Congélateur", - "vtRoom1": "My Zone", - "[fridge|freezer]": "Réfrigérateur & Congélateur" + "vtroom1": "My Zone", + "fridge_freezer": "Réfrigérateur & Congélateur" }, "name": "Zone" } diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index dbe576b..32370f7 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -509,8 +509,8 @@ "state": { "fridge": "Fridge", "freezer": "Freezer", - "vtRoom1": "My Zone", - "[fridge|freezer]": "Fridge & Freezer" + "vtroom1": "My Zone", + "fridge_freezer": "Fridge & Freezer" }, "name": "Zone" } diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index a2a35d9..ad83654 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -1061,8 +1061,8 @@ "state": { "fridge": "Hladnjak", "freezer": "Zamrzivač", - "vtRoom1": "My Zone", - "[fridge|freezer]": "Hladnjak & Zamrzivač" + "vtroom1": "My Zone", + "fridge_freezer": "Hladnjak & Zamrzivač" }, "name": "Zona" } diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index e84d3a7..aee11ae 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -1113,8 +1113,8 @@ "state": { "fridge": "Frigorifero", "freezer": "Congelatore", - "vtRoom1": "My Zone", - "[fridge|freezer]": "Frigorifero & Congelatore" + "vtroom1": "My Zone", + "fridge_freezer": "Frigorifero & Congelatore" }, "name": "Zona" } diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index 3049f65..b5f63e1 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -1061,8 +1061,8 @@ "state": { "fridge": "Koelkast", "freezer": "Vriezer", - "vtRoom1": "My Zone", - "[fridge|freezer]": "Koelkast & Vriezer" + "vtroom1": "My Zone", + "fridge_freezer": "Koelkast & Vriezer" }, "name": "Zone" } diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index 529af01..1abd892 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -1061,8 +1061,8 @@ "state": { "fridge": "Lodówka", "freezer": "Zamrażarka", - "vtRoom1": "My Zone", - "[fridge|freezer]": "Lodówka & Zamrażarka" + "vtroom1": "My Zone", + "fridge_freezer": "Lodówka & Zamrażarka" }, "name": "Strefa" } diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index 3baa522..12ed37e 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -1061,8 +1061,8 @@ "state": { "fridge": "Frigorífico", "freezer": "Congelador", - "vtRoom1": "My Zone", - "[fridge|freezer]": "Frigorífico & Congelador" + "vtroom1": "My Zone", + "fridge_freezer": "Frigorífico & Congelador" }, "name": "Zona" } diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index f272bc8..f8f8329 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -1061,8 +1061,8 @@ "state": { "fridge": "Frigider", "freezer": "Congelator", - "vtRoom1": "My Zone", - "[fridge|freezer]": "Frigider & Congelator" + "vtroom1": "My Zone", + "fridge_freezer": "Frigider & Congelator" }, "name": "Zonă" } diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index 67a4885..0b7c819 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -1061,8 +1061,8 @@ "state": { "fridge": "Холодильник", "freezer": "Морозильник", - "vtRoom1": "My Zone", - "[fridge|freezer]": "Холодильник & Морозильник" + "vtroom1": "My Zone", + "fridge_freezer": "Холодильник & Морозильник" }, "name": "Зона" } diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index 82ffc9d..e883362 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -1061,8 +1061,8 @@ "state": { "fridge": "Chladnička", "freezer": "Mraznička", - "vtRoom1": "My Zone", - "[fridge|freezer]": "Chladnička & Mraznička" + "vtroom1": "My Zone", + "fridge_freezer": "Chladnička & Mraznička" }, "name": "Zóna" } diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index 0e6fbe8..eb5dbab 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -1061,8 +1061,8 @@ "state": { "fridge": "Hladilnik", "freezer": "Zamrzovalnik", - "vtRoom1": "My Zone", - "[fridge|freezer]": "Hladilnik & Zamrzovalnik" + "vtroom1": "My Zone", + "fridge_freezer": "Hladilnik & Zamrzovalnik" }, "name": "Cona" } diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index bd741df..18694e1 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -1061,8 +1061,8 @@ "state": { "fridge": "Frižider", "freezer": "Zamrzivač", - "vtRoom1": "My Zone", - "[fridge|freezer]": "Frižider & Zamrzivač" + "vtroom1": "My Zone", + "fridge_freezer": "Frižider & Zamrzivač" }, "name": "Zona" } diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index d305dea..32654c7 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -1061,8 +1061,8 @@ "state": { "fridge": "Buzdolabı", "freezer": "Dondurucu", - "vtRoom1": "My Zone", - "[fridge|freezer]": "Buzdolabı & Dondurucu" + "vtroom1": "My Zone", + "fridge_freezer": "Buzdolabı & Dondurucu" }, "name": "Ocak gözü" } diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index dbc86ec..4cf64bb 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -1061,8 +1061,8 @@ "state": { "fridge": "冰箱", "freezer": "冷藏箱", - "vtRoom1": "My Zone", - "[fridge|freezer]": "冰箱 & 冷藏箱" + "vtroom1": "My Zone", + "fridge_freezer": "冰箱 & 冷藏箱" }, "name": "区域" } -- 2.39.5 From e9d1bb2056f6f61318a0378f146d8dd511ff4c29 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Thu, 25 May 2023 00:52:54 +0200 Subject: [PATCH 110/205] Refactor get coordinator --- custom_components/hon/binary_sensor.py | 13 ++++--------- custom_components/hon/button.py | 10 ++-------- custom_components/hon/climate.py | 15 +++++---------- custom_components/hon/config_flow.py | 2 +- custom_components/hon/hon.py | 14 ++++++++++++-- custom_components/hon/number.py | 9 ++------- custom_components/hon/select.py | 17 ++++++----------- custom_components/hon/sensor.py | 13 ++++--------- custom_components/hon/switch.py | 19 +++++++------------ 9 files changed, 43 insertions(+), 69 deletions(-) diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index 469ee17..08738d7 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -1,8 +1,6 @@ import logging from dataclasses import dataclass -from pyhon import Hon - from homeassistant.components.binary_sensor import ( BinarySensorEntityDescription, BinarySensorDeviceClass, @@ -10,8 +8,10 @@ from homeassistant.components.binary_sensor import ( ) from homeassistant.config_entries import ConfigEntry from homeassistant.core import callback +from pyhon import Hon + from .const import DOMAIN -from .hon import HonCoordinator, HonEntity, unique_entities +from .hon import HonEntity, unique_entities, get_coordinator _LOGGER = logging.getLogger(__name__) @@ -251,14 +251,9 @@ BINARY_SENSORS["WD"] = unique_entities(BINARY_SENSORS["WM"], BINARY_SENSORS["TD" async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: hon: Hon = hass.data[DOMAIN][entry.unique_id] - coordinators = hass.data[DOMAIN]["coordinators"] appliances = [] for device in hon.appliances: - if device.unique_id in coordinators: - coordinator = hass.data[DOMAIN]["coordinators"][device.unique_id] - else: - coordinator = HonCoordinator(hass, device) - hass.data[DOMAIN]["coordinators"][device.unique_id] = coordinator + coordinator = get_coordinator(hass, device) await coordinator.async_config_entry_first_refresh() if descriptions := BINARY_SENSORS.get(device.appliance_type): diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index 160e450..caf7531 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -1,7 +1,6 @@ import logging import pkg_resources - from homeassistant.components import persistent_notification from homeassistant.components.button import ButtonEntityDescription, ButtonEntity from homeassistant.config_entries import ConfigEntry @@ -10,7 +9,7 @@ from pyhon import Hon from pyhon.appliance import HonAppliance from .const import DOMAIN -from .hon import HonCoordinator, HonEntity +from .hon import HonEntity, get_coordinator _LOGGER = logging.getLogger(__name__) @@ -42,14 +41,9 @@ BUTTONS: dict[str, tuple[ButtonEntityDescription, ...]] = { async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: hon: Hon = hass.data[DOMAIN][entry.unique_id] - coordinators = hass.data[DOMAIN]["coordinators"] appliances = [] for device in hon.appliances: - if device.unique_id in coordinators: - coordinator = hass.data[DOMAIN]["coordinators"][device.unique_id] - else: - coordinator = HonCoordinator(hass, device) - hass.data[DOMAIN]["coordinators"][device.unique_id] = coordinator + coordinator = get_coordinator(hass, device) await coordinator.async_config_entry_first_refresh() if descriptions := BUTTONS.get(device.appliance_type): diff --git a/custom_components/hon/climate.py b/custom_components/hon/climate.py index e8b55b1..3b72c04 100644 --- a/custom_components/hon/climate.py +++ b/custom_components/hon/climate.py @@ -1,8 +1,5 @@ import logging -from pyhon import Hon -from pyhon.appliance import HonAppliance - from homeassistant.components.climate import ( ClimateEntity, ClimateEntityDescription, @@ -23,8 +20,11 @@ from homeassistant.const import ( TEMP_CELSIUS, ) from homeassistant.core import callback +from pyhon import Hon +from pyhon.appliance import HonAppliance + from .const import HON_HVAC_MODE, HON_FAN, HON_HVAC_PROGRAM, DOMAIN -from .hon import HonEntity, HonCoordinator +from .hon import HonEntity, get_coordinator _LOGGER = logging.getLogger(__name__) @@ -42,14 +42,9 @@ CLIMATES = { async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: hon: Hon = hass.data[DOMAIN][entry.unique_id] - coordinators = hass.data[DOMAIN]["coordinators"] appliances = [] for device in hon.appliances: - if device.unique_id in coordinators: - coordinator = hass.data[DOMAIN]["coordinators"][device.unique_id] - else: - coordinator = HonCoordinator(hass, device) - hass.data[DOMAIN]["coordinators"][device.unique_id] = coordinator + coordinator = get_coordinator(hass, device) await coordinator.async_config_entry_first_refresh() if descriptions := CLIMATES.get(device.appliance_type): diff --git a/custom_components/hon/config_flow.py b/custom_components/hon/config_flow.py index 468ba42..e084ce9 100644 --- a/custom_components/hon/config_flow.py +++ b/custom_components/hon/config_flow.py @@ -1,9 +1,9 @@ import logging import voluptuous as vol - from homeassistant import config_entries from homeassistant.const import CONF_EMAIL, CONF_PASSWORD + from .const import DOMAIN _LOGGER = logging.getLogger(__name__) diff --git a/custom_components/hon/hon.py b/custom_components/hon/hon.py index c88283b..2b4e624 100644 --- a/custom_components/hon/hon.py +++ b/custom_components/hon/hon.py @@ -1,11 +1,11 @@ import logging from datetime import timedelta -from pyhon.appliance import HonAppliance - from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.update_coordinator import CoordinatorEntity from homeassistant.helpers.update_coordinator import DataUpdateCoordinator +from pyhon.appliance import HonAppliance + from .const import DOMAIN _LOGGER = logging.getLogger(__name__) @@ -59,3 +59,13 @@ def unique_entities(base_entities, new_entities): if entity.key not in existing_entities: result.append(entity) return tuple(result) + + +def get_coordinator(hass, appliance): + coordinators = hass.data[DOMAIN]["coordinators"] + if appliance.unique_id in coordinators: + coordinator = hass.data[DOMAIN]["coordinators"][appliance.unique_id] + else: + coordinator = HonCoordinator(hass, appliance) + hass.data[DOMAIN]["coordinators"][appliance.unique_id] = coordinator + return coordinator diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index dbca6dc..04b15ad 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -14,7 +14,7 @@ from pyhon.parameter.fixed import HonParameterFixed from pyhon.parameter.range import HonParameterRange from .const import DOMAIN -from .hon import HonEntity, HonCoordinator, unique_entities +from .hon import HonEntity, unique_entities, get_coordinator NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { "WM": ( @@ -175,14 +175,9 @@ NUMBERS["WD"] = unique_entities(NUMBERS["WM"], NUMBERS["TD"]) async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: hon: Hon = hass.data[DOMAIN][entry.unique_id] - coordinators = hass.data[DOMAIN]["coordinators"] appliances = [] for device in hon.appliances: - if device.unique_id in coordinators: - coordinator = hass.data[DOMAIN]["coordinators"][device.unique_id] - else: - coordinator = HonCoordinator(hass, device) - hass.data[DOMAIN]["coordinators"][device.unique_id] = coordinator + coordinator = get_coordinator(hass, device) await coordinator.async_config_entry_first_refresh() if descriptions := NUMBERS.get(device.appliance_type): diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index 40764f8..6a7b2d0 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -2,17 +2,17 @@ from __future__ import annotations import logging -from pyhon import Hon -from pyhon.appliance import HonAppliance -from pyhon.parameter.fixed import HonParameterFixed - from homeassistant.components.select import SelectEntity, SelectEntityDescription from homeassistant.config_entries import ConfigEntry from homeassistant.const import UnitOfTemperature, UnitOfTime, REVOLUTIONS_PER_MINUTE from homeassistant.core import callback from homeassistant.helpers.entity import EntityCategory +from pyhon import Hon +from pyhon.appliance import HonAppliance +from pyhon.parameter.fixed import HonParameterFixed + from .const import DOMAIN -from .hon import HonEntity, HonCoordinator, unique_entities +from .hon import HonEntity, unique_entities, get_coordinator _LOGGER = logging.getLogger(__name__) @@ -139,14 +139,9 @@ SELECTS["WD"] = unique_entities(SELECTS["WM"], SELECTS["TD"]) async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: hon: Hon = hass.data[DOMAIN][entry.unique_id] - coordinators = hass.data[DOMAIN]["coordinators"] appliances = [] for device in hon.appliances: - if device.unique_id in coordinators: - coordinator = hass.data[DOMAIN]["coordinators"][device.unique_id] - else: - coordinator = HonCoordinator(hass, device) - hass.data[DOMAIN]["coordinators"][device.unique_id] = coordinator + coordinator = get_coordinator(hass, device) await coordinator.async_config_entry_first_refresh() if descriptions := SELECTS.get(device.appliance_type): diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 64d782b..cfe03b7 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -1,7 +1,5 @@ import logging -from pyhon import Hon - from homeassistant.components.sensor import ( SensorEntity, SensorDeviceClass, @@ -22,9 +20,11 @@ from homeassistant.const import ( from homeassistant.core import callback from homeassistant.helpers.entity import EntityCategory from homeassistant.helpers.typing import StateType +from pyhon import Hon + from . import const from .const import DOMAIN -from .hon import HonCoordinator, HonEntity, unique_entities +from .hon import HonEntity, unique_entities, get_coordinator _LOGGER = logging.getLogger(__name__) @@ -512,14 +512,9 @@ SENSORS["WD"] = unique_entities(SENSORS["WM"], SENSORS["TD"]) async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: hon: Hon = hass.data[DOMAIN][entry.unique_id] - coordinators = hass.data[DOMAIN]["coordinators"] appliances = [] for device in hon.appliances: - if device.unique_id in coordinators: - coordinator = hass.data[DOMAIN]["coordinators"][device.unique_id] - else: - coordinator = HonCoordinator(hass, device) - hass.data[DOMAIN]["coordinators"][device.unique_id] = coordinator + coordinator = get_coordinator(hass, device) await coordinator.async_config_entry_first_refresh() if descriptions := SENSORS.get(device.appliance_type): diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index fb4e78c..41d6edb 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -2,17 +2,17 @@ import logging from dataclasses import dataclass from typing import Any -from pyhon import Hon -from pyhon.appliance import HonAppliance -from pyhon.parameter.base import HonParameter -from pyhon.parameter.range import HonParameterRange - from homeassistant.components.switch import SwitchEntityDescription, SwitchEntity from homeassistant.config_entries import ConfigEntry from homeassistant.const import EntityCategory from homeassistant.core import callback +from pyhon import Hon +from pyhon.appliance import HonAppliance +from pyhon.parameter.base import HonParameter +from pyhon.parameter.range import HonParameterRange + from .const import DOMAIN -from .hon import HonCoordinator, HonEntity, unique_entities +from .hon import HonEntity, unique_entities, get_coordinator _LOGGER = logging.getLogger(__name__) @@ -355,14 +355,9 @@ SWITCHES["WD"] = unique_entities(SWITCHES["WD"], SWITCHES["TD"]) async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: hon: Hon = hass.data[DOMAIN][entry.unique_id] - coordinators = hass.data[DOMAIN]["coordinators"] appliances = [] for device in hon.appliances: - if device.unique_id in coordinators: - coordinator = hass.data[DOMAIN]["coordinators"][device.unique_id] - else: - coordinator = HonCoordinator(hass, device) - hass.data[DOMAIN]["coordinators"][device.unique_id] = coordinator + coordinator = get_coordinator(hass, device) await coordinator.async_config_entry_first_refresh() if descriptions := SWITCHES.get(device.appliance_type): -- 2.39.5 From 696dc136ebc72d74a006976ab4984ca1d55ab363 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Thu, 25 May 2023 01:30:33 +0200 Subject: [PATCH 111/205] Refactor entry setup --- custom_components/hon/binary_sensor.py | 31 +++++++--------- custom_components/hon/button.py | 40 +++++++++------------ custom_components/hon/climate.py | 32 +++++++---------- custom_components/hon/hon.py | 3 +- custom_components/hon/number.py | 31 +++++++--------- custom_components/hon/select.py | 32 +++++++---------- custom_components/hon/sensor.py | 34 ++++++++---------- custom_components/hon/switch.py | 49 +++++++++++--------------- 8 files changed, 101 insertions(+), 151 deletions(-) diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index 08738d7..856d17d 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -8,10 +8,9 @@ from homeassistant.components.binary_sensor import ( ) from homeassistant.config_entries import ConfigEntry from homeassistant.core import callback -from pyhon import Hon from .const import DOMAIN -from .hon import HonEntity, unique_entities, get_coordinator +from .hon import HonEntity, unique_entities _LOGGER = logging.getLogger(__name__) @@ -250,28 +249,22 @@ BINARY_SENSORS["WD"] = unique_entities(BINARY_SENSORS["WM"], BINARY_SENSORS["TD" async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: - hon: Hon = hass.data[DOMAIN][entry.unique_id] - appliances = [] - for device in hon.appliances: - coordinator = get_coordinator(hass, device) - await coordinator.async_config_entry_first_refresh() - - if descriptions := BINARY_SENSORS.get(device.appliance_type): - for description in descriptions: - if not device.get(description.key): - continue - appliances.append( - HonBinarySensorEntity(hass, coordinator, entry, device, description) - ) - - async_add_entities(appliances) + entities = [] + for device in hass.data[DOMAIN][entry.unique_id].appliances: + for description in BINARY_SENSORS.get(device.appliance_type, []): + if not device.get(description.key): + continue + entity = HonBinarySensorEntity(hass, entry, device, description) + await entity.coordinator.async_config_entry_first_refresh() + entities.append(entity) + async_add_entities(entities) class HonBinarySensorEntity(HonEntity, BinarySensorEntity): entity_description: HonBinarySensorEntityDescription - def __init__(self, hass, coordinator, entry, device, description) -> None: - super().__init__(hass, entry, coordinator, device) + def __init__(self, hass, entry, device, description) -> None: + super().__init__(hass, entry, device) self.entity_description = description self._attr_unique_id = f"{super().unique_id}{description.key}" diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index caf7531..10387d8 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -5,11 +5,10 @@ from homeassistant.components import persistent_notification from homeassistant.components.button import ButtonEntityDescription, ButtonEntity from homeassistant.config_entries import ConfigEntry from homeassistant.const import EntityCategory -from pyhon import Hon from pyhon.appliance import HonAppliance from .const import DOMAIN -from .hon import HonEntity, get_coordinator +from .hon import HonEntity _LOGGER = logging.getLogger(__name__) @@ -40,29 +39,22 @@ BUTTONS: dict[str, tuple[ButtonEntityDescription, ...]] = { async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: - hon: Hon = hass.data[DOMAIN][entry.unique_id] - appliances = [] - for device in hon.appliances: - coordinator = get_coordinator(hass, device) - await coordinator.async_config_entry_first_refresh() - - if descriptions := BUTTONS.get(device.appliance_type): - for description in descriptions: - if not device.commands.get(description.key): - continue - appliances.extend( - [HonButtonEntity(hass, coordinator, entry, device, description)] - ) - appliances.extend([HonFeatureRequestButton(hass, coordinator, entry, device)]) - - async_add_entities(appliances) + entities = [] + for device in hass.data[DOMAIN][entry.unique_id].appliances: + for description in BUTTONS.get(device.appliance_type, []): + if not device.commands.get(description.key): + continue + entity = HonButtonEntity(hass, entry, device, description) + await entity.coordinator.async_config_entry_first_refresh() + entities.append(entity) + entities.append(HonFeatureRequestButton(hass, entry, device)) + await entities[-1].coordinator.async_config_entry_first_refresh() + async_add_entities(entities) class HonButtonEntity(HonEntity, ButtonEntity): - def __init__( - self, hass, coordinator, entry, device: HonAppliance, description - ) -> None: - super().__init__(hass, entry, coordinator, device) + def __init__(self, hass, entry, device: HonAppliance, description) -> None: + super().__init__(hass, entry, device) self.entity_description = description self._attr_unique_id = f"{super().unique_id}{description.key}" @@ -81,8 +73,8 @@ class HonButtonEntity(HonEntity, ButtonEntity): class HonFeatureRequestButton(HonEntity, ButtonEntity): - def __init__(self, hass, coordinator, entry, device: HonAppliance) -> None: - super().__init__(hass, entry, coordinator, device) + def __init__(self, hass, entry, device: HonAppliance) -> None: + super().__init__(hass, entry, device) self._attr_unique_id = f"{super().unique_id}_log_device_info" self._attr_icon = "mdi:information" diff --git a/custom_components/hon/climate.py b/custom_components/hon/climate.py index 3b72c04..decbe65 100644 --- a/custom_components/hon/climate.py +++ b/custom_components/hon/climate.py @@ -20,11 +20,10 @@ from homeassistant.const import ( TEMP_CELSIUS, ) from homeassistant.core import callback -from pyhon import Hon from pyhon.appliance import HonAppliance from .const import HON_HVAC_MODE, HON_FAN, HON_HVAC_PROGRAM, DOMAIN -from .hon import HonEntity, get_coordinator +from .hon import HonEntity _LOGGER = logging.getLogger(__name__) @@ -41,27 +40,20 @@ CLIMATES = { async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: - hon: Hon = hass.data[DOMAIN][entry.unique_id] - appliances = [] - for device in hon.appliances: - coordinator = get_coordinator(hass, device) - await coordinator.async_config_entry_first_refresh() - - if descriptions := CLIMATES.get(device.appliance_type): - for description in descriptions: - if description.key not in list(device.commands): - continue - appliances.append( - HonClimateEntity(hass, coordinator, entry, device, description) - ) - async_add_entities(appliances) + entities = [] + for device in hass.data[DOMAIN][entry.unique_id].appliances: + for description in CLIMATES.get(device.appliance_type, []): + if description.key not in list(device.commands): + continue + entity = HonClimateEntity(hass, entry, device, description) + await entity.coordinator.async_config_entry_first_refresh() + entities.append(entity) + async_add_entities(entities) class HonClimateEntity(HonEntity, ClimateEntity): - def __init__( - self, hass, coordinator, entry, device: HonAppliance, description - ) -> None: - super().__init__(hass, entry, coordinator, device) + def __init__(self, hass, entry, device: HonAppliance, description) -> None: + super().__init__(hass, entry, device) self.entity_description = description self._attr_unique_id = f"{super().unique_id}climate" diff --git a/custom_components/hon/hon.py b/custom_components/hon/hon.py index 2b4e624..da7c45a 100644 --- a/custom_components/hon/hon.py +++ b/custom_components/hon/hon.py @@ -14,7 +14,8 @@ _LOGGER = logging.getLogger(__name__) class HonEntity(CoordinatorEntity): _attr_has_entity_name = True - def __init__(self, hass, entry, coordinator, device: HonAppliance) -> None: + def __init__(self, hass, entry, device: HonAppliance) -> None: + coordinator = get_coordinator(hass, device) super().__init__(coordinator) self._hon = hass.data[DOMAIN][entry.unique_id] diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index 04b15ad..2932cc1 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -8,13 +8,12 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.const import UnitOfTime, UnitOfTemperature from homeassistant.core import callback from homeassistant.helpers.entity import EntityCategory -from pyhon import Hon from pyhon.parameter.base import HonParameter from pyhon.parameter.fixed import HonParameterFixed from pyhon.parameter.range import HonParameterRange from .const import DOMAIN -from .hon import HonEntity, unique_entities, get_coordinator +from .hon import HonEntity, unique_entities NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { "WM": ( @@ -174,26 +173,20 @@ NUMBERS["WD"] = unique_entities(NUMBERS["WM"], NUMBERS["TD"]) async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: - hon: Hon = hass.data[DOMAIN][entry.unique_id] - appliances = [] - for device in hon.appliances: - coordinator = get_coordinator(hass, device) - await coordinator.async_config_entry_first_refresh() - - if descriptions := NUMBERS.get(device.appliance_type): - for description in descriptions: - if description.key not in device.available_settings: - continue - appliances.extend( - [HonNumberEntity(hass, coordinator, entry, device, description)] - ) - - async_add_entities(appliances) + entities = [] + for device in hass.data[DOMAIN][entry.unique_id].appliances: + for description in NUMBERS.get(device.appliance_type, []): + if description.key not in device.available_settings: + continue + entity = HonNumberEntity(hass, entry, device, description) + await entity.coordinator.async_config_entry_first_refresh() + entities.append(entity) + async_add_entities(entities) class HonNumberEntity(HonEntity, NumberEntity): - def __init__(self, hass, coordinator, entry, device, description) -> None: - super().__init__(hass, entry, coordinator, device) + def __init__(self, hass, entry, device, description) -> None: + super().__init__(hass, entry, device) self._data = device.settings[description.key] self.entity_description = description diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index 6a7b2d0..9e59d58 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -7,12 +7,11 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.const import UnitOfTemperature, UnitOfTime, REVOLUTIONS_PER_MINUTE from homeassistant.core import callback from homeassistant.helpers.entity import EntityCategory -from pyhon import Hon from pyhon.appliance import HonAppliance from pyhon.parameter.fixed import HonParameterFixed from .const import DOMAIN -from .hon import HonEntity, unique_entities, get_coordinator +from .hon import HonEntity, unique_entities _LOGGER = logging.getLogger(__name__) @@ -138,27 +137,20 @@ SELECTS["WD"] = unique_entities(SELECTS["WM"], SELECTS["TD"]) async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: - hon: Hon = hass.data[DOMAIN][entry.unique_id] - appliances = [] - for device in hon.appliances: - coordinator = get_coordinator(hass, device) - await coordinator.async_config_entry_first_refresh() - - if descriptions := SELECTS.get(device.appliance_type): - for description in descriptions: - if description.key not in device.available_settings: - continue - appliances.extend( - [HonSelectEntity(hass, coordinator, entry, device, description)] - ) - async_add_entities(appliances) + entities = [] + for device in hass.data[DOMAIN][entry.unique_id].appliances: + for description in SELECTS.get(device.appliance_type, []): + if description.key not in device.available_settings: + continue + entity = HonSelectEntity(hass, entry, device, description) + await entity.coordinator.async_config_entry_first_refresh() + entities.append(entity) + async_add_entities(entities) class HonSelectEntity(HonEntity, SelectEntity): - def __init__( - self, hass, coordinator, entry, device: HonAppliance, description - ) -> None: - super().__init__(hass, entry, coordinator, device) + def __init__(self, hass, entry, device: HonAppliance, description) -> None: + super().__init__(hass, entry, device) self.entity_description = description self._attr_unique_id = f"{super().unique_id}{description.key}" diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index cfe03b7..6ddfc62 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -20,11 +20,10 @@ from homeassistant.const import ( from homeassistant.core import callback from homeassistant.helpers.entity import EntityCategory from homeassistant.helpers.typing import StateType -from pyhon import Hon from . import const from .const import DOMAIN -from .hon import HonEntity, unique_entities, get_coordinator +from .hon import HonEntity, unique_entities _LOGGER = logging.getLogger(__name__) @@ -511,28 +510,23 @@ SENSORS["WD"] = unique_entities(SENSORS["WM"], SENSORS["TD"]) async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: - hon: Hon = hass.data[DOMAIN][entry.unique_id] - appliances = [] - for device in hon.appliances: - coordinator = get_coordinator(hass, device) - await coordinator.async_config_entry_first_refresh() + entities = [] + for device in hass.data[DOMAIN][entry.unique_id].appliances: + for description in SENSORS.get(device.appliance_type, []): + if not device.get(description.key) and not device.settings.get( + description.key + ): + continue + entity = HonSensorEntity(hass, entry, device, description) + await entity.coordinator.async_config_entry_first_refresh() + entities.append(entity) - if descriptions := SENSORS.get(device.appliance_type): - for description in descriptions: - if not device.get(description.key) and not device.settings.get( - description.key - ): - continue - appliances.extend( - [HonSensorEntity(hass, coordinator, entry, device, description)] - ) - - async_add_entities(appliances) + async_add_entities(entities) class HonSensorEntity(HonEntity, SensorEntity): - def __init__(self, hass, coordinator, entry, device, description) -> None: - super().__init__(hass, entry, coordinator, device) + def __init__(self, hass, entry, device, description) -> None: + super().__init__(hass, entry, device) self.entity_description = description self._attr_unique_id = f"{super().unique_id}{description.key}" diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 41d6edb..56ea512 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -6,13 +6,12 @@ from homeassistant.components.switch import SwitchEntityDescription, SwitchEntit from homeassistant.config_entries import ConfigEntry from homeassistant.const import EntityCategory from homeassistant.core import callback -from pyhon import Hon from pyhon.appliance import HonAppliance from pyhon.parameter.base import HonParameter from pyhon.parameter.range import HonParameterRange from .const import DOMAIN -from .hon import HonEntity, unique_entities, get_coordinator +from .hon import HonEntity, unique_entities _LOGGER = logging.getLogger(__name__) @@ -354,31 +353,26 @@ SWITCHES["WD"] = unique_entities(SWITCHES["WD"], SWITCHES["TD"]) async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: - hon: Hon = hass.data[DOMAIN][entry.unique_id] - appliances = [] - for device in hon.appliances: - coordinator = get_coordinator(hass, device) - await coordinator.async_config_entry_first_refresh() + entities = [] + for device in hass.data[DOMAIN][entry.unique_id].appliances: + for description in SWITCHES.get(device.appliance_type, []): + if description.entity_category == EntityCategory.CONFIG: + if description.key not in device.available_settings: + continue + else: + if not any( + [ + device.get(description.key) is not None, + description.turn_on_key in list(device.commands), + description.turn_off_key in list(device.commands), + ] + ): + continue + entity = HonSwitchEntity(hass, entry, device, description) + await entity.coordinator.async_config_entry_first_refresh() + entities.append(entity) - if descriptions := SWITCHES.get(device.appliance_type): - for description in descriptions: - if description.entity_category == EntityCategory.CONFIG: - if description.key not in device.available_settings: - continue - else: - if not any( - [ - device.get(description.key) is not None, - description.turn_on_key in list(device.commands), - description.turn_off_key in list(device.commands), - ] - ): - continue - appliances.extend( - [HonSwitchEntity(hass, coordinator, entry, device, description)] - ) - - async_add_entities(appliances) + async_add_entities(entities) class HonSwitchEntity(HonEntity, SwitchEntity): @@ -387,12 +381,11 @@ class HonSwitchEntity(HonEntity, SwitchEntity): def __init__( self, hass, - coordinator, entry, device: HonAppliance, description: HonSwitchEntityDescription, ) -> None: - super().__init__(hass, entry, coordinator, device) + super().__init__(hass, entry, device) self.entity_description = description self._attr_unique_id = f"{super().unique_id}{description.key}" -- 2.39.5 From a8762367edaf7b9b755e43a04e85ab74439b1905 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sun, 28 May 2023 00:30:08 +0200 Subject: [PATCH 112/205] Refactor hon entities --- custom_components/hon/binary_sensor.py | 6 - custom_components/hon/button.py | 6 +- custom_components/hon/climate.py | 4 +- custom_components/hon/hon.py | 8 +- custom_components/hon/number.py | 122 +++++----- custom_components/hon/select.py | 104 +++++---- custom_components/hon/sensor.py | 197 ++++++++-------- custom_components/hon/switch.py | 304 ++++++++++++------------- 8 files changed, 382 insertions(+), 369 deletions(-) diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index 856d17d..9cd96c3 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -263,12 +263,6 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non class HonBinarySensorEntity(HonEntity, BinarySensorEntity): entity_description: HonBinarySensorEntityDescription - def __init__(self, hass, entry, device, description) -> None: - super().__init__(hass, entry, device) - - self.entity_description = description - self._attr_unique_id = f"{super().unique_id}{description.key}" - @property def is_on(self) -> bool: return ( diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index 10387d8..a4d089d 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -53,11 +53,7 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non class HonButtonEntity(HonEntity, ButtonEntity): - def __init__(self, hass, entry, device: HonAppliance, description) -> None: - super().__init__(hass, entry, device) - - self.entity_description = description - self._attr_unique_id = f"{super().unique_id}{description.key}" + entity_description: ButtonEntityDescription async def async_press(self) -> None: await self._device.commands[self.entity_description.key].send() diff --git a/custom_components/hon/climate.py b/custom_components/hon/climate.py index decbe65..7690e35 100644 --- a/custom_components/hon/climate.py +++ b/custom_components/hon/climate.py @@ -53,9 +53,7 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non class HonClimateEntity(HonEntity, ClimateEntity): def __init__(self, hass, entry, device: HonAppliance, description) -> None: - super().__init__(hass, entry, device) - self.entity_description = description - self._attr_unique_id = f"{super().unique_id}climate" + super().__init__(hass, entry, device, description) self._attr_temperature_unit = TEMP_CELSIUS self._attr_target_temperature_step = PRECISION_WHOLE diff --git a/custom_components/hon/hon.py b/custom_components/hon/hon.py index da7c45a..b3e37d6 100644 --- a/custom_components/hon/hon.py +++ b/custom_components/hon/hon.py @@ -14,7 +14,7 @@ _LOGGER = logging.getLogger(__name__) class HonEntity(CoordinatorEntity): _attr_has_entity_name = True - def __init__(self, hass, entry, device: HonAppliance) -> None: + def __init__(self, hass, entry, device: HonAppliance, description=None) -> None: coordinator = get_coordinator(hass, device) super().__init__(coordinator) @@ -23,7 +23,11 @@ class HonEntity(CoordinatorEntity): self._coordinator = coordinator self._device = device - self._attr_unique_id = self._device.unique_id + if description is not None: + self.entity_description = description + self._attr_unique_id = f"{self._device.unique_id}{description.key}" + else: + self._attr_unique_id = self._device.unique_id @property def device_info(self): diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index 2932cc1..0d6268b 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -1,5 +1,7 @@ from __future__ import annotations +from dataclasses import dataclass + from homeassistant.components.number import ( NumberEntity, NumberEntityDescription, @@ -7,143 +9,136 @@ from homeassistant.components.number import ( from homeassistant.config_entries import ConfigEntry from homeassistant.const import UnitOfTime, UnitOfTemperature from homeassistant.core import callback -from homeassistant.helpers.entity import EntityCategory -from pyhon.parameter.base import HonParameter -from pyhon.parameter.fixed import HonParameterFixed +from homeassistant.helpers.entity import EntityCategory, Entity from pyhon.parameter.range import HonParameterRange from .const import DOMAIN from .hon import HonEntity, unique_entities + +@dataclass +class HonConfigNumberEntityDescription(NumberEntityDescription): + entity_category: EntityCategory = EntityCategory.CONFIG + + +@dataclass +class HonNumberEntityDescription(NumberEntityDescription): + pass + + NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { "WM": ( - NumberEntityDescription( + HonConfigNumberEntityDescription( key="startProgram.delayTime", name="Delay Time", icon="mdi:timer-plus", - entity_category=EntityCategory.CONFIG, native_unit_of_measurement=UnitOfTime.MINUTES, translation_key="delay_time", ), - NumberEntityDescription( + HonConfigNumberEntityDescription( key="startProgram.rinseIterations", name="Rinse Iterations", icon="mdi:rotate-right", - entity_category=EntityCategory.CONFIG, translation_key="rinse_iterations", ), - NumberEntityDescription( + HonConfigNumberEntityDescription( key="startProgram.mainWashTime", name="Main Wash Time", icon="mdi:clock-start", - entity_category=EntityCategory.CONFIG, native_unit_of_measurement=UnitOfTime.MINUTES, translation_key="wash_time", ), - NumberEntityDescription( + HonConfigNumberEntityDescription( key="startProgram.steamLevel", name="Steam Level", icon="mdi:weather-dust", - entity_category=EntityCategory.CONFIG, translation_key="steam_level", ), - NumberEntityDescription( + HonConfigNumberEntityDescription( key="startProgram.waterHard", name="Water hard", icon="mdi:water", - entity_category=EntityCategory.CONFIG, translation_key="water_hard", ), - NumberEntityDescription( + HonConfigNumberEntityDescription( key="startProgram.lang", name="lang", - entity_category=EntityCategory.CONFIG, ), ), "TD": ( - NumberEntityDescription( + HonConfigNumberEntityDescription( key="startProgram.delayTime", name="Delay time", icon="mdi:timer-plus", - entity_category=EntityCategory.CONFIG, native_unit_of_measurement=UnitOfTime.MINUTES, translation_key="delay_time", ), - NumberEntityDescription( + HonConfigNumberEntityDescription( key="startProgram.tempLevel", name="Temperature level", - entity_category=EntityCategory.CONFIG, icon="mdi:thermometer", translation_key="tumbledryertemplevel", ), - NumberEntityDescription( + HonConfigNumberEntityDescription( key="startProgram.dryTime", name="Dry Time", - entity_category=EntityCategory.CONFIG, translation_key="dry_time", ), ), "OV": ( - NumberEntityDescription( + HonConfigNumberEntityDescription( key="startProgram.delayTime", name="Delay time", icon="mdi:timer-plus", - entity_category=EntityCategory.CONFIG, native_unit_of_measurement=UnitOfTime.MINUTES, translation_key="delay_time", ), - NumberEntityDescription( + HonConfigNumberEntityDescription( key="startProgram.tempSel", name="Target Temperature", - entity_category=EntityCategory.CONFIG, icon="mdi:thermometer", native_unit_of_measurement=UnitOfTemperature.CELSIUS, translation_key="target_temperature", ), - NumberEntityDescription( + HonConfigNumberEntityDescription( key="startProgram.prTime", name="Program Duration", - entity_category=EntityCategory.CONFIG, icon="mdi:timelapse", native_unit_of_measurement=UnitOfTime.MINUTES, translation_key="program_duration", ), ), "IH": ( - NumberEntityDescription( + HonConfigNumberEntityDescription( key="startProgram.temp", name="Temperature", - entity_category=EntityCategory.CONFIG, icon="mdi:thermometer", translation_key="temperature", ), - NumberEntityDescription( + HonConfigNumberEntityDescription( key="startProgram.powerManagement", name="Power Management", - entity_category=EntityCategory.CONFIG, icon="mdi:timelapse", translation_key="power_management", ), ), "DW": ( - NumberEntityDescription( + HonConfigNumberEntityDescription( key="startProgram.delayTime", name="Delay time", icon="mdi:timer-plus", - entity_category=EntityCategory.CONFIG, native_unit_of_measurement=UnitOfTime.MINUTES, translation_key="delay_time", ), - NumberEntityDescription( + HonConfigNumberEntityDescription( key="startProgram.waterHard", name="Water hard", icon="mdi:water", - entity_category=EntityCategory.CONFIG, translation_key="water_hard", ), ), "AC": ( - NumberEntityDescription( + HonNumberEntityDescription( key="settings.tempSel", name="Target Temperature", icon="mdi:thermometer", @@ -152,14 +147,14 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { ), ), "REF": ( - NumberEntityDescription( + HonNumberEntityDescription( key="settings.tempSelZ1", name="Fridge Temperature", icon="mdi:thermometer", native_unit_of_measurement=UnitOfTemperature.CELSIUS, translation_key="fridge_temp_sel", ), - NumberEntityDescription( + HonNumberEntityDescription( key="settings.tempSelZ2", name="Freezer Temperature", icon="mdi:thermometer", @@ -178,20 +173,24 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non for description in NUMBERS.get(device.appliance_type, []): if description.key not in device.available_settings: continue - entity = HonNumberEntity(hass, entry, device, description) + if isinstance(description, HonNumberEntityDescription): + entity = HonNumberEntity(hass, entry, device, description) + elif isinstance(description, HonConfigNumberEntityDescription): + entity = HonConfigNumberEntity(hass, entry, device, description) + else: + continue await entity.coordinator.async_config_entry_first_refresh() entities.append(entity) async_add_entities(entities) class HonNumberEntity(HonEntity, NumberEntity): + entity_description: HonNumberEntityDescription + def __init__(self, hass, entry, device, description) -> None: - super().__init__(hass, entry, device) + super().__init__(hass, entry, device, description) self._data = device.settings[description.key] - self.entity_description = description - self._attr_unique_id = f"{super().unique_id}{description.key}" - if isinstance(self._data, HonParameterRange): self._attr_native_max_value = self._data.max self._attr_native_min_value = self._data.min @@ -203,12 +202,10 @@ class HonNumberEntity(HonEntity, NumberEntity): async def async_set_native_value(self, value: float) -> None: setting = self._device.settings[self.entity_description.key] - if not ( - type(setting) == HonParameter or isinstance(setting, HonParameterFixed) - ): + if isinstance(setting, HonParameterRange): setting.value = value - if "settings." in self.entity_description.key: - await self._device.commands["settings"].send() + command = self.entity_description.key.split(".")[0] + await self._device.commands[command].send() await self.coordinator.async_refresh() @callback @@ -224,12 +221,23 @@ class HonNumberEntity(HonEntity, NumberEntity): @property def available(self) -> bool: """Return True if entity is available.""" - if self.entity_category == EntityCategory.CONFIG: - return super().available - else: - return ( - super().available - and self._device.get("remoteCtrValid", "1") == "1" - and self._device.get("attributes.lastConnEvent.category") - != "DISCONNECTED" - ) + return ( + super().available + and self._device.get("remoteCtrValid", "1") == "1" + and self._device.get("attributes.lastConnEvent.category") != "DISCONNECTED" + ) + + +class HonConfigNumberEntity(HonNumberEntity): + entity_description: HonConfigNumberEntityDescription + + async def async_set_native_value(self, value: str) -> None: + setting = self._device.settings[self.entity_description.key] + if isinstance(setting, HonParameterRange): + setting.value = value + await self.coordinator.async_refresh() + + @property + def available(self) -> bool: + """Return True if entity is available.""" + return super(NumberEntity, self).available diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index 9e59d58..327c928 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -1,12 +1,13 @@ from __future__ import annotations import logging +from dataclasses import dataclass from homeassistant.components.select import SelectEntity, SelectEntityDescription from homeassistant.config_entries import ConfigEntry from homeassistant.const import UnitOfTemperature, UnitOfTime, REVOLUTIONS_PER_MINUTE from homeassistant.core import callback -from homeassistant.helpers.entity import EntityCategory +from homeassistant.helpers.entity import EntityCategory, Entity from pyhon.appliance import HonAppliance from pyhon.parameter.fixed import HonParameterFixed @@ -15,101 +16,101 @@ from .hon import HonEntity, unique_entities _LOGGER = logging.getLogger(__name__) + +@dataclass +class HonSelectEntityDescription(SelectEntityDescription): + pass + + +@dataclass +class HonConfigSelectEntityDescription(SelectEntityDescription): + entity_category: EntityCategory = EntityCategory.CONFIG + + SELECTS = { "WM": ( - SelectEntityDescription( + HonConfigSelectEntityDescription( key="startProgram.spinSpeed", name="Spin speed", - entity_category=EntityCategory.CONFIG, icon="mdi:numeric", unit_of_measurement=REVOLUTIONS_PER_MINUTE, translation_key="spin_speed", ), - SelectEntityDescription( + HonConfigSelectEntityDescription( key="startProgram.temp", name="Temperature", - entity_category=EntityCategory.CONFIG, icon="mdi:thermometer", unit_of_measurement=UnitOfTemperature.CELSIUS, translation_key="temperature", ), - SelectEntityDescription( + HonConfigSelectEntityDescription( key="startProgram.program", name="Program", - entity_category=EntityCategory.CONFIG, translation_key="programs_wm", ), ), "TD": ( - SelectEntityDescription( + HonConfigSelectEntityDescription( key="startProgram.program", name="Program", - entity_category=EntityCategory.CONFIG, translation_key="programs_td", ), - SelectEntityDescription( + HonConfigSelectEntityDescription( key="startProgram.dryTimeMM", name="Dry Time", - entity_category=EntityCategory.CONFIG, icon="mdi:timer", unit_of_measurement=UnitOfTime.MINUTES, translation_key="dry_time", ), - SelectEntityDescription( + HonConfigSelectEntityDescription( key="startProgram.dryLevel", name="Dry level", - entity_category=EntityCategory.CONFIG, icon="mdi:hair-dryer", translation_key="dry_levels", ), ), "OV": ( - SelectEntityDescription( + HonConfigSelectEntityDescription( key="startProgram.program", name="Program", - entity_category=EntityCategory.CONFIG, translation_key="programs_ov", ), ), "IH": ( - SelectEntityDescription( + HonConfigSelectEntityDescription( key="startProgram.program", name="Program", - entity_category=EntityCategory.CONFIG, translation_key="programs_ih", ), ), "DW": ( - SelectEntityDescription( + HonConfigSelectEntityDescription( key="startProgram.program", name="Program", - entity_category=EntityCategory.CONFIG, translation_key="programs_dw", ), - SelectEntityDescription( + HonConfigSelectEntityDescription( key="startProgram.temp", name="Temperature", - entity_category=EntityCategory.CONFIG, icon="mdi:thermometer", unit_of_measurement=UnitOfTemperature.CELSIUS, translation_key="temperature", ), - SelectEntityDescription( + HonConfigSelectEntityDescription( key="startProgram.remainingTime", name="Remaining Time", - entity_category=EntityCategory.CONFIG, icon="mdi:timer", unit_of_measurement=UnitOfTime.MINUTES, translation_key="remaining_time", ), ), "AC": ( - SelectEntityDescription( + HonSelectEntityDescription( key="startProgram.program", name="Program", translation_key="programs_ac", ), - SelectEntityDescription( + HonSelectEntityDescription( key="settings.humanSensingStatus", name="Eco Pilot", icon="mdi:run", @@ -117,17 +118,15 @@ SELECTS = { ), ), "REF": ( - SelectEntityDescription( + HonConfigSelectEntityDescription( key="startProgram.program", name="Program", - entity_category=EntityCategory.CONFIG, translation_key="programs_ref", ), - SelectEntityDescription( + HonConfigSelectEntityDescription( key="startProgram.zone", name="Zone", icon="mdi:radiobox-marked", - entity_category=EntityCategory.CONFIG, translation_key="ref_zones", ), ), @@ -142,18 +141,22 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non for description in SELECTS.get(device.appliance_type, []): if description.key not in device.available_settings: continue - entity = HonSelectEntity(hass, entry, device, description) + if isinstance(description, HonSelectEntityDescription): + entity = HonSelectEntity(hass, entry, device, description) + elif isinstance(description, HonConfigSelectEntityDescription): + entity = HonConfigSelectEntity(hass, entry, device, description) + else: + continue await entity.coordinator.async_config_entry_first_refresh() entities.append(entity) async_add_entities(entities) class HonSelectEntity(HonEntity, SelectEntity): - def __init__(self, hass, entry, device: HonAppliance, description) -> None: - super().__init__(hass, entry, device) + entity_description: HonSelectEntityDescription - self.entity_description = description - self._attr_unique_id = f"{super().unique_id}{description.key}" + def __init__(self, hass, entry, device: HonAppliance, description) -> None: + super().__init__(hass, entry, device, description) if not (setting := self._device.settings.get(description.key)): self._attr_options: list[str] = [] @@ -171,10 +174,8 @@ class HonSelectEntity(HonEntity, SelectEntity): async def async_select_option(self, option: str) -> None: self._device.settings[self.entity_description.key].value = option - if "settings." in self.entity_description.key: - await self._device.commands["settings"].send() - elif self._device.appliance_type in ["AC"]: - await self._device.commands["startProgram"].send() + command = self.entity_description.key.split(".")[0] + await self._device.commands[command].send() await self.coordinator.async_refresh() @callback @@ -193,12 +194,21 @@ class HonSelectEntity(HonEntity, SelectEntity): @property def available(self) -> bool: """Return True if entity is available.""" - if self.entity_category == EntityCategory.CONFIG: - return super().available - else: - return ( - super().available - and self._device.get("remoteCtrValid", "1") == "1" - and self._device.get("attributes.lastConnEvent.category") - != "DISCONNECTED" - ) + return ( + super().available + and self._device.get("remoteCtrValid", "1") == "1" + and self._device.get("attributes.lastConnEvent.category") != "DISCONNECTED" + ) + + +class HonConfigSelectEntity(HonSelectEntity): + entity_description: HonConfigSelectEntityDescription + + async def async_select_option(self, option: str) -> None: + self._device.settings[self.entity_description.key].value = option + await self.coordinator.async_refresh() + + @property + def available(self) -> bool: + """Return True if entity is available.""" + return super(SelectEntity, self).available diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 6ddfc62..8ceba4a 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -1,4 +1,5 @@ import logging +from dataclasses import dataclass from homeassistant.components.sensor import ( SensorEntity, @@ -20,7 +21,6 @@ from homeassistant.const import ( from homeassistant.core import callback from homeassistant.helpers.entity import EntityCategory from homeassistant.helpers.typing import StateType - from . import const from .const import DOMAIN from .hon import HonEntity, unique_entities @@ -28,9 +28,19 @@ from .hon import HonEntity, unique_entities _LOGGER = logging.getLogger(__name__) +@dataclass +class HonConfigSensorEntityDescription(SensorEntityDescription): + entity_category: EntityCategory = EntityCategory.CONFIG + + +@dataclass +class HonSensorEntityDescription(SensorEntityDescription): + pass + + SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { "WM": ( - SensorEntityDescription( + HonSensorEntityDescription( key="prPhase", name="Program Phase", icon="mdi:washing-machine", @@ -38,7 +48,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { translation_key="program_phases_wm", options=list(const.WASHING_PR_PHASE), ), - SensorEntityDescription( + HonSensorEntityDescription( key="totalElectricityUsed", name="Total Power", device_class=SensorDeviceClass.ENERGY, @@ -46,7 +56,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, translation_key="energy_total", ), - SensorEntityDescription( + HonSensorEntityDescription( key="totalWaterUsed", name="Total Water", device_class=SensorDeviceClass.WATER, @@ -54,14 +64,14 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { native_unit_of_measurement=UnitOfVolume.LITERS, translation_key="water_total", ), - SensorEntityDescription( + HonSensorEntityDescription( key="totalWashCycle", name="Total Wash Cycle", state_class=SensorStateClass.TOTAL_INCREASING, icon="mdi:counter", translation_key="cycles_total", ), - SensorEntityDescription( + HonSensorEntityDescription( key="currentElectricityUsed", name="Current Electricity Used", state_class=SensorStateClass.MEASUREMENT, @@ -70,23 +80,22 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:lightning-bolt", translation_key="energy_current", ), - SensorEntityDescription( + HonSensorEntityDescription( key="currentWaterUsed", name="Current Water Used", state_class=SensorStateClass.MEASUREMENT, icon="mdi:water", translation_key="water_current", ), - SensorEntityDescription( + HonConfigSensorEntityDescription( key="startProgram.weight", name="Suggested weight", state_class=SensorStateClass.MEASUREMENT, - entity_category=EntityCategory.CONFIG, native_unit_of_measurement=UnitOfMass.KILOGRAMS, icon="mdi:weight-kilogram", translation_key="suggested_load", ), - SensorEntityDescription( + HonSensorEntityDescription( key="machMode", name="Machine Status", icon="mdi:information", @@ -94,10 +103,10 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { translation_key="washing_modes", options=list(const.MACH_MODE), ), - SensorEntityDescription( + HonSensorEntityDescription( key="errors", name="Error", icon="mdi:math-log", translation_key="errors" ), - SensorEntityDescription( + HonSensorEntityDescription( key="remainingTimeMM", name="Remaining Time", icon="mdi:timer", @@ -105,7 +114,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { native_unit_of_measurement=UnitOfTime.MINUTES, translation_key="remaining_time", ), - SensorEntityDescription( + HonSensorEntityDescription( key="spinSpeed", name="Spin Speed", icon="mdi:speedometer", @@ -113,53 +122,48 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { native_unit_of_measurement=REVOLUTIONS_PER_MINUTE, translation_key="spin_speed", ), - SensorEntityDescription( + HonConfigSensorEntityDescription( key="startProgram.energyLabel", name="Energy Label", icon="mdi:lightning-bolt-circle", state_class=SensorStateClass.MEASUREMENT, - entity_category=EntityCategory.CONFIG, translation_key="energy_label", ), - SensorEntityDescription( + HonConfigSensorEntityDescription( key="startProgram.liquidDetergentDose", name="Liquid Detergent Dose", icon="mdi:cup-water", - entity_category=EntityCategory.CONFIG, translation_key="det_liquid", ), - SensorEntityDescription( + HonConfigSensorEntityDescription( key="startProgram.powderDetergentDose", name="Powder Detergent Dose", icon="mdi:cup", - entity_category=EntityCategory.CONFIG, translation_key="det_dust", ), - SensorEntityDescription( + HonConfigSensorEntityDescription( key="startProgram.remainingTime", name="Remaining Time", icon="mdi:timer", state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=UnitOfTime.MINUTES, - entity_category=EntityCategory.CONFIG, translation_key="remaining_time", ), - SensorEntityDescription( + HonSensorEntityDescription( key="dirtyLevel", name="Dirt level", icon="mdi:liquid-spot", translation_key="dirt_level", ), - SensorEntityDescription( + HonConfigSensorEntityDescription( key="startProgram.suggestedLoadW", name="Suggested Load", icon="mdi:weight-kilogram", - entity_category=EntityCategory.CONFIG, state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=UnitOfMass.KILOGRAMS, translation_key="suggested_load", ), - SensorEntityDescription( + HonSensorEntityDescription( key="temp", name="Current Temperature", icon="mdi:thermometer", @@ -169,7 +173,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { ), ), "TD": ( - SensorEntityDescription( + HonSensorEntityDescription( key="machMode", name="Machine Status", icon="mdi:information", @@ -177,10 +181,10 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { translation_key="washing_modes", options=list(const.MACH_MODE), ), - SensorEntityDescription( + HonSensorEntityDescription( key="errors", name="Error", icon="mdi:math-log", translation_key="errors" ), - SensorEntityDescription( + HonSensorEntityDescription( key="remainingTimeMM", name="Remaining Time", icon="mdi:timer", @@ -188,7 +192,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { native_unit_of_measurement=UnitOfTime.MINUTES, translation_key="remaining_time", ), - SensorEntityDescription( + HonSensorEntityDescription( key="delayTime", name="Start Time", icon="mdi:clock-start", @@ -196,7 +200,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { native_unit_of_measurement=UnitOfTime.MINUTES, translation_key="delay_time", ), - SensorEntityDescription( + HonSensorEntityDescription( key="programName", name="Program", icon="mdi:tumble-dryer", @@ -204,7 +208,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { translation_key="programs_td", options=const.PROGRAMS_TD, ), - SensorEntityDescription( + HonSensorEntityDescription( key="prPhase", name="Program Phase", icon="mdi:washing-machine", @@ -212,7 +216,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { translation_key="program_phases_td", options=list(const.TUMBLE_DRYER_PR_PHASE), ), - SensorEntityDescription( + HonSensorEntityDescription( key="dryLevel", name="Dry level", icon="mdi:hair-dryer", @@ -220,58 +224,54 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { translation_key="dry_levels", options=list(const.TUMBLE_DRYER_DRY_LEVEL), ), - SensorEntityDescription( + HonSensorEntityDescription( key="tempLevel", name="Temperature level", icon="mdi:thermometer", translation_key="tumbledryertemplevel", ), - SensorEntityDescription( + HonConfigSensorEntityDescription( key="startProgram.suggestedLoadD", name="Suggested Load", icon="mdi:weight-kilogram", - entity_category=EntityCategory.CONFIG, state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=UnitOfMass.KILOGRAMS, translation_key="suggested_load", ), - SensorEntityDescription( + HonConfigSensorEntityDescription( key="startProgram.energyLabel", name="Energy Label", icon="mdi:lightning-bolt-circle", state_class=SensorStateClass.MEASUREMENT, - entity_category=EntityCategory.CONFIG, translation_key="energy_label", ), - SensorEntityDescription( + HonConfigSensorEntityDescription( key="startProgram.steamLevel", name="Steam level", icon="mdi:smoke", - entity_category=EntityCategory.CONFIG, translation_key="steam_level", ), - SensorEntityDescription( + HonSensorEntityDescription( key="steamLevel", name="Steam level", icon="mdi:smoke", translation_key="steam_level", ), - SensorEntityDescription( + HonConfigSensorEntityDescription( key="steamType", name="Steam Type", icon="mdi:weather-dust", - entity_category=EntityCategory.CONFIG, ), ), "OV": ( - SensorEntityDescription( + HonSensorEntityDescription( key="remainingTimeMM", name="Remaining Time", icon="mdi:timer", native_unit_of_measurement=UnitOfTime.MINUTES, translation_key="remaining_time", ), - SensorEntityDescription( + HonSensorEntityDescription( key="delayTime", name="Start Time", icon="mdi:clock-start", @@ -279,13 +279,13 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { native_unit_of_measurement=UnitOfTime.MINUTES, translation_key="delay_time", ), - SensorEntityDescription( + HonSensorEntityDescription( key="temp", name="Temperature", icon="mdi:thermometer", translation_key="temperature", ), - SensorEntityDescription( + HonSensorEntityDescription( key="tempSel", name="Temperature Selected", icon="mdi:thermometer", @@ -293,14 +293,14 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { ), ), "IH": ( - SensorEntityDescription( + HonSensorEntityDescription( key="remainingTimeMM", name="Remaining Time", icon="mdi:timer", native_unit_of_measurement=UnitOfTime.MINUTES, translation_key="remaining_time", ), - SensorEntityDescription( + HonSensorEntityDescription( key="temp", name="Temperature", icon="mdi:thermometer", @@ -308,10 +308,10 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { native_unit_of_measurement=UnitOfTemperature.CELSIUS, translation_key="temperature", ), - SensorEntityDescription( + HonSensorEntityDescription( key="errors", name="Error", icon="mdi:math-log", translation_key="errors" ), - SensorEntityDescription( + HonSensorEntityDescription( key="power", name="Power", icon="mdi:lightning-bolt", @@ -320,57 +320,51 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { ), ), "DW": ( - SensorEntityDescription( + HonConfigSensorEntityDescription( key="startProgram.ecoIndex", name="Eco Index", icon="mdi:sprout", state_class=SensorStateClass.MEASUREMENT, - entity_category=EntityCategory.CONFIG, ), - SensorEntityDescription( + HonConfigSensorEntityDescription( key="startProgram.waterEfficiency", name="Water Efficiency", icon="mdi:water", state_class=SensorStateClass.MEASUREMENT, - entity_category=EntityCategory.CONFIG, translation_key="water_efficiency", ), - SensorEntityDescription( + HonConfigSensorEntityDescription( key="startProgram.waterSaving", name="Water Saving", icon="mdi:water-percent", state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=PERCENTAGE, - entity_category=EntityCategory.CONFIG, translation_key="water_saving", ), - SensorEntityDescription( + HonConfigSensorEntityDescription( key="startProgram.temp", name="Temperature", icon="mdi:thermometer", state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=UnitOfTemperature.CELSIUS, - entity_category=EntityCategory.CONFIG, translation_key="temperature", ), - SensorEntityDescription( + HonConfigSensorEntityDescription( key="startProgram.energyLabel", name="Energy Label", icon="mdi:lightning-bolt-circle", state_class=SensorStateClass.MEASUREMENT, - entity_category=EntityCategory.CONFIG, translation_key="energy_label", ), - SensorEntityDescription( + HonConfigSensorEntityDescription( key="startProgram.remainingTime", name="Time", icon="mdi:timer", state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=UnitOfTime.MINUTES, - entity_category=EntityCategory.CONFIG, translation_key="duration", ), - SensorEntityDescription( + HonSensorEntityDescription( key="machMode", name="Machine Status", icon="mdi:information", @@ -378,10 +372,10 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { translation_key="washing_modes", options=list(const.MACH_MODE), ), - SensorEntityDescription( + HonSensorEntityDescription( key="errors", name="Error", icon="mdi:math-log", translation_key="errors" ), - SensorEntityDescription( + HonSensorEntityDescription( key="remainingTimeMM", name="Remaining Time", icon="mdi:timer", @@ -389,7 +383,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { native_unit_of_measurement=UnitOfTime.MINUTES, translation_key="remaining_time", ), - SensorEntityDescription( + HonSensorEntityDescription( key="prPhase", name="Program Phase", icon="mdi:washing-machine", @@ -399,7 +393,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { ), ), "AC": ( - SensorEntityDescription( + HonSensorEntityDescription( key="tempAirOutdoor", name="Air Temperature Outdoor", icon="mdi:thermometer", @@ -407,7 +401,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { device_class=SensorDeviceClass.TEMPERATURE, native_unit_of_measurement=UnitOfTemperature.CELSIUS, ), - SensorEntityDescription( + HonSensorEntityDescription( key="tempCoilerIndoor", name="Coiler Temperature Indoor", icon="mdi:thermometer", @@ -415,7 +409,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { device_class=SensorDeviceClass.TEMPERATURE, native_unit_of_measurement=UnitOfTemperature.CELSIUS, ), - SensorEntityDescription( + HonSensorEntityDescription( key="tempCoilerOutdoor", name="Coiler Temperature Outside", icon="mdi:thermometer", @@ -423,7 +417,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { device_class=SensorDeviceClass.TEMPERATURE, native_unit_of_measurement=UnitOfTemperature.CELSIUS, ), - SensorEntityDescription( + HonSensorEntityDescription( key="tempDefrostOutdoor", name="Defrost Temperature Outdoor", icon="mdi:thermometer", @@ -431,7 +425,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { device_class=SensorDeviceClass.TEMPERATURE, native_unit_of_measurement=UnitOfTemperature.CELSIUS, ), - SensorEntityDescription( + HonSensorEntityDescription( key="tempInAirOutdoor", name="In Air Temperature Outdoor", icon="mdi:thermometer", @@ -439,7 +433,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { device_class=SensorDeviceClass.TEMPERATURE, native_unit_of_measurement=UnitOfTemperature.CELSIUS, ), - SensorEntityDescription( + HonSensorEntityDescription( key="tempIndoor", name="Indoor Temperature", icon="mdi:thermometer", @@ -447,7 +441,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { device_class=SensorDeviceClass.TEMPERATURE, native_unit_of_measurement=UnitOfTemperature.CELSIUS, ), - SensorEntityDescription( + HonSensorEntityDescription( key="tempOutdoor", name="Outdoor Temperature", icon="mdi:thermometer", @@ -455,7 +449,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { device_class=SensorDeviceClass.TEMPERATURE, native_unit_of_measurement=UnitOfTemperature.CELSIUS, ), - SensorEntityDescription( + HonSensorEntityDescription( key="tempSel", name="Selected Temperature", icon="mdi:thermometer", @@ -465,7 +459,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { ), ), "REF": ( - SensorEntityDescription( + HonSensorEntityDescription( key="humidityEnv", name="Room Humidity", icon="mdi:water-percent", @@ -474,7 +468,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { state_class=SensorStateClass.MEASUREMENT, translation_key="humidity", ), - SensorEntityDescription( + HonSensorEntityDescription( key="tempEnv", name="Room Temperature", icon="mdi:home-thermometer-outline", @@ -483,7 +477,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { native_unit_of_measurement=UnitOfTemperature.CELSIUS, translation_key="room_temperature", ), - SensorEntityDescription( + HonSensorEntityDescription( key="tempZ1", name="Temperature Fridge", icon="mdi:thermometer", @@ -492,7 +486,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { native_unit_of_measurement=UnitOfTemperature.CELSIUS, translation_key="fridge_temp", ), - SensorEntityDescription( + HonSensorEntityDescription( key="tempZ2", name="Temperature Freezer", icon="mdi:snowflake-thermometer", @@ -501,7 +495,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { native_unit_of_measurement=UnitOfTemperature.CELSIUS, translation_key="freezer_temp", ), - SensorEntityDescription( + HonSensorEntityDescription( key="errors", name="Error", icon="mdi:math-log", translation_key="errors" ), ), @@ -513,11 +507,16 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non entities = [] for device in hass.data[DOMAIN][entry.unique_id].appliances: for description in SENSORS.get(device.appliance_type, []): - if not device.get(description.key) and not device.settings.get( - description.key - ): + if isinstance(description, HonSensorEntityDescription): + if not device.get(description.key): + continue + entity = HonSensorEntity(hass, entry, device, description) + elif isinstance(description, HonConfigSensorEntityDescription): + if description.key not in device.available_settings: + continue + entity = HonConfigSensorEntity(hass, entry, device, description) + else: continue - entity = HonSensorEntity(hass, entry, device, description) await entity.coordinator.async_config_entry_first_refresh() entities.append(entity) @@ -525,18 +524,7 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non class HonSensorEntity(HonEntity, SensorEntity): - def __init__(self, hass, entry, device, description) -> None: - super().__init__(hass, entry, device) - - self.entity_description = description - self._attr_unique_id = f"{super().unique_id}{description.key}" - - @property - def native_value(self) -> StateType: - value = self._device.get(self.entity_description.key, "") - if not value and self.entity_description.state_class is not None: - return 0 - return value + entity_description: HonSensorEntityDescription @callback def _handle_coordinator_update(self): @@ -545,3 +533,22 @@ class HonSensorEntity(HonEntity, SensorEntity): self._attr_native_value = 0 self._attr_native_value = value self.async_write_ha_state() + + +class HonConfigSensorEntity(HonEntity, SensorEntity): + entity_description: HonConfigSensorEntityDescription + + @callback + def _handle_coordinator_update(self): + value = self._device.settings.get(self.entity_description.key, None) + if self.entity_description.state_class is not None: + if value and value.value: + print(value.value, type(value.value)) + self._attr_native_value = ( + float(value.value) if "." in str(value.value) else int(value.value) + ) + else: + self._attr_native_value = 0 + else: + self._attr_native_value = value.value + self.async_write_ha_state() diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 56ea512..9c0e9e1 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -6,7 +6,6 @@ from homeassistant.components.switch import SwitchEntityDescription, SwitchEntit from homeassistant.config_entries import ConfigEntry from homeassistant.const import EntityCategory from homeassistant.core import callback -from pyhon.appliance import HonAppliance from pyhon.parameter.base import HonParameter from pyhon.parameter.range import HonParameterRange @@ -20,19 +19,27 @@ _LOGGER = logging.getLogger(__name__) class HonSwitchEntityDescriptionMixin: turn_on_key: str = "" turn_off_key: str = "" - status_key: str = "" @dataclass -class HonSwitchEntityDescription( +class HonControlSwitchEntityDescription( HonSwitchEntityDescriptionMixin, SwitchEntityDescription ): pass +class HonSwitchEntityDescription(SwitchEntityDescription): + pass + + +@dataclass +class HonConfigSwitchEntityDescription(SwitchEntityDescription): + entity_category: EntityCategory = EntityCategory.CONFIG + + SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { "WM": ( - HonSwitchEntityDescription( + HonControlSwitchEntityDescription( key="active", name="Washing Machine", icon="mdi:washing-machine", @@ -40,7 +47,7 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { turn_off_key="stopProgram", translation_key="washing_machine", ), - HonSwitchEntityDescription( + HonControlSwitchEntityDescription( key="pause", name="Pause Washing Machine", icon="mdi:pause", @@ -48,79 +55,69 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { turn_off_key="resumeProgram", translation_key="pause", ), - HonSwitchEntityDescription( + HonConfigSwitchEntityDescription( key="startProgram.delayStatus", name="Delay Status", icon="mdi:timer-check", - entity_category=EntityCategory.CONFIG, translation_key="delay_time", ), - HonSwitchEntityDescription( + HonConfigSwitchEntityDescription( key="startProgram.haier_SoakPrewashSelection", name="Soak Prewash Selection", icon="mdi:tshirt-crew", - entity_category=EntityCategory.CONFIG, translation_key="prewash", ), - HonSwitchEntityDescription( + HonConfigSwitchEntityDescription( key="startProgram.permanentPressStatus", name="Keep Fresh", - entity_category=EntityCategory.CONFIG, icon="mdi:refresh-circle", translation_key="keep_fresh", ), - HonSwitchEntityDescription( + HonConfigSwitchEntityDescription( key="startProgram.autoSoftenerStatus", name="Auto Dose Softener", - entity_category=EntityCategory.CONFIG, icon="mdi:teddy-bear", translation_key="auto_dose_softener", ), - HonSwitchEntityDescription( + HonConfigSwitchEntityDescription( key="startProgram.autoDetergentStatus", name="Auto Dose Detergent", - entity_category=EntityCategory.CONFIG, icon="mdi:cup", translation_key="auto_dose_detergent", ), - HonSwitchEntityDescription( + HonConfigSwitchEntityDescription( key="startProgram.acquaplus", name="Acqua Plus", - entity_category=EntityCategory.CONFIG, icon="mdi:water-plus", translation_key="acqua_plus", ), - HonSwitchEntityDescription( + HonConfigSwitchEntityDescription( key="startProgram.extraRinse1", name="Extra Rinse 1", - entity_category=EntityCategory.CONFIG, icon="mdi:numeric-1-box-multiple-outline", translation_key="extra_rinse_1", ), - HonSwitchEntityDescription( + HonConfigSwitchEntityDescription( key="startProgram.extraRinse2", name="Extra Rinse 2", - entity_category=EntityCategory.CONFIG, icon="mdi:numeric-2-box-multiple-outline", translation_key="extra_rinse_2", ), - HonSwitchEntityDescription( + HonConfigSwitchEntityDescription( key="startProgram.extraRinse3", name="Extra Rinse 3", - entity_category=EntityCategory.CONFIG, icon="mdi:numeric-3-box-multiple-outline", translation_key="extra_rinse_3", ), - HonSwitchEntityDescription( + HonConfigSwitchEntityDescription( key="startProgram.goodNight", name="Good Night", icon="mdi:weather-night", - entity_category=EntityCategory.CONFIG, translation_key="good_night", ), ), "TD": ( - HonSwitchEntityDescription( + HonControlSwitchEntityDescription( key="active", name="Tumble Dryer", icon="mdi:tumble-dryer", @@ -128,7 +125,7 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { turn_off_key="stopProgram", translation_key="tumble_dryer", ), - HonSwitchEntityDescription( + HonControlSwitchEntityDescription( key="pause", name="Pause Tumble Dryer", icon="mdi:pause", @@ -136,29 +133,26 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { turn_off_key="resumeProgram", translation_key="pause", ), - HonSwitchEntityDescription( + HonConfigSwitchEntityDescription( key="startProgram.sterilizationStatus", name="Sterilization", icon="mdi:clock-start", - entity_category=EntityCategory.CONFIG, ), - HonSwitchEntityDescription( + HonConfigSwitchEntityDescription( key="startProgram.antiCreaseTime", name="Anti-Crease", - entity_category=EntityCategory.CONFIG, icon="mdi:timer", translation_key="anti_crease", ), - HonSwitchEntityDescription( + HonConfigSwitchEntityDescription( key="startProgram.anticrease", name="Anti-Crease", - entity_category=EntityCategory.CONFIG, icon="mdi:timer", translation_key="anti_crease", ), ), "OV": ( - HonSwitchEntityDescription( + HonControlSwitchEntityDescription( key="active", name="Oven", icon="mdi:toaster-oven", @@ -166,16 +160,15 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { turn_off_key="stopProgram", translation_key="oven", ), - HonSwitchEntityDescription( + HonConfigSwitchEntityDescription( key="startProgram.preheatStatus", name="Preheat", icon="mdi:thermometer-chevron-up", - entity_category=EntityCategory.CONFIG, translation_key="preheat", ), ), "WD": ( - HonSwitchEntityDescription( + HonControlSwitchEntityDescription( key="active", name="Washer Dryer", icon="mdi:washing-machine", @@ -183,7 +176,7 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { turn_off_key="stopProgram", translation_key="washer_dryer", ), - HonSwitchEntityDescription( + HonControlSwitchEntityDescription( key="pause", name="Pause Washer Dryer", icon="mdi:pause", @@ -193,7 +186,7 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { ), ), "DW": ( - HonSwitchEntityDescription( + HonControlSwitchEntityDescription( key="active", name="Dish Washer", icon="mdi:dishwasher", @@ -201,50 +194,44 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { turn_off_key="stopProgram", translation_key="dish_washer", ), - HonSwitchEntityDescription( + HonConfigSwitchEntityDescription( key="startProgram.extraDry", name="Extra Dry", icon="mdi:hair-dryer", - entity_category=EntityCategory.CONFIG, translation_key="extra_dry", ), - HonSwitchEntityDescription( + HonConfigSwitchEntityDescription( key="startProgram.halfLoad", name="Half Load", icon="mdi:fraction-one-half", - entity_category=EntityCategory.CONFIG, translation_key="half_load", ), - HonSwitchEntityDescription( + HonConfigSwitchEntityDescription( key="startProgram.openDoor", name="Open Door", icon="mdi:door-open", - entity_category=EntityCategory.CONFIG, translation_key="open_door", ), - HonSwitchEntityDescription( + HonConfigSwitchEntityDescription( key="startProgram.threeInOne", name="Three in One", icon="mdi:numeric-3-box-outline", - entity_category=EntityCategory.CONFIG, translation_key="three_in_one", ), - HonSwitchEntityDescription( + HonConfigSwitchEntityDescription( key="startProgram.ecoExpress", name="Eco Express", icon="mdi:sprout", - entity_category=EntityCategory.CONFIG, translation_key="eco", ), - HonSwitchEntityDescription( + HonConfigSwitchEntityDescription( key="startProgram.addDish", name="Add Dish", icon="mdi:silverware-fork-knife", - entity_category=EntityCategory.CONFIG, translation_key="add_dish", ), HonSwitchEntityDescription( - key="settings.buzzerDisabled", + key="buzzerDisabled", name="Buzzer Disabled", icon="mdi:volume-off", translation_key="buzzer", @@ -252,65 +239,57 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { ), "AC": ( HonSwitchEntityDescription( - key="settings.10degreeHeatingStatus", - status_key="10degreeHeatingStatus", + key="10degreeHeatingStatus", name="10° Heating", icon="mdi:heat-wave", translation_key="10_degree_heating", ), HonSwitchEntityDescription( - key="settings.echoStatus", - status_key="echoStatus", + key="echoStatus", name="Echo", icon="mdi:account-voice", ), HonSwitchEntityDescription( - key="settings.ecoMode", + key="ecoMode", name="Eco Mode", translation_key="eco_mode", ), HonSwitchEntityDescription( - key="settings.healthMode", - status_key="healthMode", + key="healthMode", name="Health Mode", icon="mdi:medication-outline", ), HonSwitchEntityDescription( - key="settings.muteStatus", - status_key="muteStatus", + key="muteStatus", name="Mute", icon="mdi:volume-off", translation_key="mute_mode", ), HonSwitchEntityDescription( - key="settings.rapidMode", - status_key="rapidMode", + key="rapidMode", name="Rapid Mode", icon="mdi:run-fast", translation_key="rapid_mode", ), HonSwitchEntityDescription( - key="settings.screenDisplayStatus", - status_key="screenDisplayStatus", + key="screenDisplayStatus", name="Screen Display", icon="mdi:monitor-small", ), HonSwitchEntityDescription( - key="settings.selfCleaning56Status", + key="selfCleaning56Status", name="Self Cleaning 56", icon="mdi:air-filter", translation_key="self_clean_56", ), HonSwitchEntityDescription( - key="settings.selfCleaningStatus", - status_key="selfCleaningStatus", + key="selfCleaningStatus", name="Self Cleaning", icon="mdi:air-filter", translation_key="self_clean", ), HonSwitchEntityDescription( - key="settings.silentSleepStatus", - status_key="silentSleepStatus", + key="silentSleepStatus", name="Silent Sleep", icon="mdi:bed", translation_key="silent_mode", @@ -318,29 +297,25 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { ), "REF": ( HonSwitchEntityDescription( - key="settings.intelligenceMode", - status_key="intelligenceMode", + key="intelligenceMode", name="Auto-Set Mode", icon="mdi:thermometer-auto", translation_key="auto_set", ), HonSwitchEntityDescription( - key="settings.quickModeZ1", - status_key="quickModeZ1", + key="quickModeZ1", name="Super Freeze", icon="mdi:snowflake-variant", translation_key="super_freeze", ), HonSwitchEntityDescription( - key="settings.quickModeZ2", - status_key="quickModeZ2", + key="quickModeZ2", name="Super Cool", icon="mdi:snowflake", translation_key="super_cool", ), HonSwitchEntityDescription( - key="settings.holidayMode", - status_key="holidayMode", + key="holidayMode", name="Holiday Mode", icon="mdi:palm-tree", translation_key="holiday_mode", @@ -356,19 +331,26 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non entities = [] for device in hass.data[DOMAIN][entry.unique_id].appliances: for description in SWITCHES.get(device.appliance_type, []): - if description.entity_category == EntityCategory.CONFIG: + if isinstance(description, HonConfigSwitchEntityDescription): if description.key not in device.available_settings: continue - else: - if not any( - [ - device.get(description.key) is not None, - description.turn_on_key in list(device.commands), - description.turn_off_key in list(device.commands), - ] + entity = HonConfigSwitchEntity(hass, entry, device, description) + elif isinstance(description, HonControlSwitchEntityDescription): + if not ( + device.get(description.key) is not None + or description.turn_on_key in list(device.commands) + or description.turn_off_key in list(device.commands) ): continue - entity = HonSwitchEntity(hass, entry, device, description) + entity = HonControlSwitchEntity(hass, entry, device, description) + elif isinstance(description, HonSwitchEntityDescription): + if description.key not in device.available_settings or not device.get( + description.key + ): + continue + entity = HonSwitchEntity(hass, entry, device, description) + else: + continue await entity.coordinator.async_config_entry_first_refresh() entities.append(entity) @@ -378,86 +360,100 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non class HonSwitchEntity(HonEntity, SwitchEntity): entity_description: HonSwitchEntityDescription - def __init__( - self, - hass, - entry, - device: HonAppliance, - description: HonSwitchEntityDescription, - ) -> None: - super().__init__(hass, entry, device) - - self.entity_description = description - self._attr_unique_id = f"{super().unique_id}{description.key}" - @property def is_on(self) -> bool | None: """Return True if entity is on.""" - if self.entity_category == EntityCategory.CONFIG: - setting = self._device.settings[self.entity_description.key] - return ( - setting.value == "1" - or hasattr(setting, "min") - and setting.value != setting.min - ) - elif self.entity_description.status_key: - return self._device.get(self.entity_description.status_key, "0") == "1" - return self._device.get(self.entity_description.key, False) + return self._device.get(self.entity_description.key, "0") == "1" async def async_turn_on(self, **kwargs: Any) -> None: - if ( - self.entity_category == EntityCategory.CONFIG - or "settings." in self.entity_description.key - ): - setting = self._device.settings[self.entity_description.key] - if not type(setting) == HonParameter: - setting.value = ( - setting.max if isinstance(setting, HonParameterRange) else "1" - ) - self.async_write_ha_state() - await self.coordinator.async_refresh() - if "settings." in self.entity_description.key: - await self._device.commands["settings"].send() - else: - await self._device.commands[self.entity_description.turn_on_key].send() + setting = self._device.settings[self.entity_description.key] + if type(setting) == HonParameter: + return + setting.value = setting.max if isinstance(setting, HonParameterRange) else "1" + self.async_write_ha_state() + await self._device.commands["settings"].send() + await self.coordinator.async_refresh() async def async_turn_off(self, **kwargs: Any) -> None: - if ( - self.entity_category == EntityCategory.CONFIG - or "settings." in self.entity_description.key - ): - setting = self._device.settings[self.entity_description.key] - if not type(setting) == HonParameter: - setting.value = ( - setting.min if isinstance(setting, HonParameterRange) else "0" - ) - self.async_write_ha_state() - if "settings." in self.entity_description.key: - await self._device.commands["settings"].send() - await self.coordinator.async_refresh() - else: - await self._device.commands[self.entity_description.turn_off_key].send() + setting = self._device.settings[self.entity_description.key] + if type(setting) == HonParameter: + return + setting.value = setting.min if isinstance(setting, HonParameterRange) else "0" + self.async_write_ha_state() + await self._device.commands["settings"].send() + await self.coordinator.async_refresh() @property def available(self) -> bool: """Return True if entity is available.""" - if self.entity_category == EntityCategory.CONFIG: - return super().available - else: - return ( - super().available - and self._device.get("remoteCtrValid", "1") == "1" - and self._device.get("attributes.lastConnEvent.category") - != "DISCONNECTED" - ) + return ( + super().available + and self._device.get("remoteCtrValid", "1") == "1" + and self._device.get("attributes.lastConnEvent.category") != "DISCONNECTED" + ) @callback def _handle_coordinator_update(self): - if self.entity_description.status_key: - value = self._device.get(self.entity_description.status_key, "0") - elif self.entity_category == EntityCategory.CONFIG: - value = self._device.settings.get(self.entity_description.key, "0") - else: - return + value = self._device.get(self.entity_description.key, "0") + self._attr_state = value == "1" + self.async_write_ha_state() + + +class HonControlSwitchEntity(HonEntity, SwitchEntity): + entity_description: HonControlSwitchEntityDescription + + @property + def is_on(self) -> bool | None: + """Return True if entity is on.""" + return self._device.get(self.entity_description.key, False) + + async def async_turn_on(self, **kwargs: Any) -> None: + await self._device.commands[self.entity_description.turn_on_key].send() + + async def async_turn_off(self, **kwargs: Any) -> None: + await self._device.commands[self.entity_description.turn_off_key].send() + + @property + def available(self) -> bool: + """Return True if entity is available.""" + return ( + super().available + and self._device.get("remoteCtrValid", "1") == "1" + and self._device.get("attributes.lastConnEvent.category") != "DISCONNECTED" + ) + + +class HonConfigSwitchEntity(HonEntity, SwitchEntity): + entity_description: HonConfigSwitchEntityDescription + + @property + def is_on(self) -> bool | None: + """Return True if entity is on.""" + setting = self._device.settings[self.entity_description.key] + return ( + setting.value == "1" + or hasattr(setting, "min") + and setting.value != setting.min + ) + + async def async_turn_on(self, **kwargs: Any) -> None: + setting = self._device.settings[self.entity_description.key] + if type(setting) == HonParameter: + return + setting.value = setting.max if isinstance(setting, HonParameterRange) else "1" + self.async_write_ha_state() + await self.coordinator.async_refresh() + + async def async_turn_off(self, **kwargs: Any) -> None: + setting = self._device.settings[self.entity_description.key] + if type(setting) == HonParameter: + return + setting.value = setting.min if isinstance(setting, HonParameterRange) else "0" + self.async_write_ha_state() + await self.coordinator.async_refresh() + + @callback + def _handle_coordinator_update(self): + value = self._device.settings.get(self.entity_description.key, "0") self._attr_state = value == "1" self.async_write_ha_state() -- 2.39.5 From cb660fa9e057f5bda170e997b4afd51775706d07 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sun, 28 May 2023 07:50:59 +0200 Subject: [PATCH 113/205] Add climate entites for fridge #41 --- README.md | 33 +++--- custom_components/hon/climate.py | 123 ++++++++++++++++++++- custom_components/hon/manifest.json | 4 +- custom_components/hon/sensor.py | 1 - custom_components/hon/switch.py | 15 +-- custom_components/hon/translations/cs.json | 27 +++++ custom_components/hon/translations/de.json | 27 +++++ custom_components/hon/translations/el.json | 27 +++++ custom_components/hon/translations/en.json | 27 +++++ custom_components/hon/translations/es.json | 27 +++++ custom_components/hon/translations/fr.json | 27 +++++ custom_components/hon/translations/he.json | 27 +++++ custom_components/hon/translations/hr.json | 27 +++++ custom_components/hon/translations/it.json | 27 +++++ custom_components/hon/translations/nl.json | 27 +++++ custom_components/hon/translations/pl.json | 27 +++++ custom_components/hon/translations/pt.json | 27 +++++ custom_components/hon/translations/ro.json | 27 +++++ custom_components/hon/translations/ru.json | 27 +++++ custom_components/hon/translations/sk.json | 27 +++++ custom_components/hon/translations/sl.json | 27 +++++ custom_components/hon/translations/sr.json | 27 +++++ custom_components/hon/translations/tr.json | 27 +++++ custom_components/hon/translations/zh.json | 27 +++++ info.md | 1 + scripts/generate_translation.py | 39 ++++++- scripts/sensor_docs.py | 15 +-- 27 files changed, 706 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index 8df2315..95cab8d 100644 --- a/README.md +++ b/README.md @@ -84,6 +84,7 @@ Support has been confirmed for these models, but many more will work. Please add - Hoover HFB 6B2S3FX - Hoover HLE C10DCE-80 - Hoover HSOT3161WG +- Hoover HW 68AMC/1-80 - Hoover HWPD 69AMBC/1-S - Hoover HWPS4954DAMR-11 - Hoover NDE H10A2TCE-80 @@ -155,18 +156,18 @@ For every device exists a hidden button which can be used to log all infos of yo #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | -| 10° Heating | `heat-wave` | `switch` | `settings.10degreeHeatingStatus` | +| 10° Heating | `heat-wave` | `switch` | `10degreeHeatingStatus` | | Air Conditioner | `air-conditioner` | `climate` | `settings` | -| Echo | `account-voice` | `switch` | `settings.echoStatus` | -| Eco Mode | | `switch` | `settings.ecoMode` | +| Echo | `account-voice` | `switch` | `echoStatus` | +| Eco Mode | | `switch` | `ecoMode` | | Eco Pilot | `run` | `select` | `settings.humanSensingStatus` | -| Health Mode | `medication-outline` | `switch` | `settings.healthMode` | -| Mute | `volume-off` | `switch` | `settings.muteStatus` | -| Rapid Mode | `run-fast` | `switch` | `settings.rapidMode` | -| Screen Display | `monitor-small` | `switch` | `settings.screenDisplayStatus` | -| Self Cleaning | `air-filter` | `switch` | `settings.selfCleaningStatus` | -| Self Cleaning 56 | `air-filter` | `switch` | `settings.selfCleaning56Status` | -| Silent Sleep | `bed` | `switch` | `settings.silentSleepStatus` | +| Health Mode | `medication-outline` | `switch` | `healthMode` | +| Mute | `volume-off` | `switch` | `muteStatus` | +| Rapid Mode | `run-fast` | `switch` | `rapidMode` | +| Screen Display | `monitor-small` | `switch` | `screenDisplayStatus` | +| Self Cleaning | `air-filter` | `switch` | `selfCleaningStatus` | +| Self Cleaning 56 | `air-filter` | `switch` | `selfCleaning56Status` | +| Silent Sleep | `bed` | `switch` | `silentSleepStatus` | | Target Temperature | `thermometer` | `number` | `settings.tempSel` | #### Sensors | Name | Icon | Entity | Key | @@ -187,7 +188,7 @@ For every device exists a hidden button which can be used to log all infos of yo #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | -| Buzzer Disabled | `volume-off` | `switch` | `settings.buzzerDisabled` | +| Buzzer Disabled | `volume-off` | `switch` | `buzzerDisabled` | | Dish Washer | `dishwasher` | `switch` | `startProgram` / `stopProgram` | #### Configs | Name | Icon | Entity | Key | @@ -272,14 +273,16 @@ For every device exists a hidden button which can be used to log all infos of yo #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | -| Auto-Set Mode | `thermometer-auto` | `switch` | `settings.intelligenceMode` | +| Auto-Set Mode | `thermometer-auto` | `switch` | `intelligenceMode` | +| Freezer | `snowflake-thermometer` | `climate` | `settings.tempSelZ2` | | Freezer Temperature | `thermometer` | `number` | `settings.tempSelZ2` | +| Fridge | `thermometer` | `climate` | `settings.tempSelZ1` | | Fridge Temperature | `thermometer` | `number` | `settings.tempSelZ1` | -| Holiday Mode | `palm-tree` | `switch` | `settings.holidayMode` | +| Holiday Mode | `palm-tree` | `switch` | `holidayMode` | | Program Start | `play` | `button` | `startProgram` | | Program Stop | `stop` | `button` | `stopProgram` | -| Super Cool | `snowflake` | `switch` | `settings.quickModeZ2` | -| Super Freeze | `snowflake-variant` | `switch` | `settings.quickModeZ1` | +| Super Cool | `snowflake` | `switch` | `quickModeZ2` | +| Super Freeze | `snowflake-variant` | `switch` | `quickModeZ1` | #### Configs | Name | Icon | Entity | Key | | --- | --- | --- | --- | diff --git a/custom_components/hon/climate.py b/custom_components/hon/climate.py index 7690e35..9691633 100644 --- a/custom_components/hon/climate.py +++ b/custom_components/hon/climate.py @@ -1,4 +1,5 @@ import logging +from dataclasses import dataclass from homeassistant.components.climate import ( ClimateEntity, @@ -20,6 +21,7 @@ from homeassistant.const import ( TEMP_CELSIUS, ) from homeassistant.core import callback +from pyhon import helper from pyhon.appliance import HonAppliance from .const import HON_HVAC_MODE, HON_FAN, HON_HVAC_PROGRAM, DOMAIN @@ -27,15 +29,40 @@ from .hon import HonEntity _LOGGER = logging.getLogger(__name__) + +@dataclass +class HonACClimateEntityDescription(ClimateEntityDescription): + pass + + +@dataclass +class HonREFClimateEntityDescription(ClimateEntityDescription): + pass + + CLIMATES = { "AC": ( - ClimateEntityDescription( + HonACClimateEntityDescription( key="settings", name="Air Conditioner", icon="mdi:air-conditioner", translation_key="air_conditioner", ), ), + "REF": ( + HonREFClimateEntityDescription( + key="settings.tempSelZ1", + name="Fridge", + icon="mdi:thermometer", + translation_key="fridge", + ), + HonREFClimateEntityDescription( + key="settings.tempSelZ2", + name="Freezer", + icon="mdi:snowflake-thermometer", + translation_key="freezer", + ), + ), } @@ -43,15 +70,22 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non entities = [] for device in hass.data[DOMAIN][entry.unique_id].appliances: for description in CLIMATES.get(device.appliance_type, []): - if description.key not in list(device.commands): + if isinstance(description, HonACClimateEntityDescription): + if description.key not in list(device.commands): + continue + entity = HonACClimateEntity(hass, entry, device, description) + elif isinstance(description, HonREFClimateEntityDescription): + if description.key not in device.available_settings: + continue + entity = HonREFClimateEntity(hass, entry, device, description) + else: continue - entity = HonClimateEntity(hass, entry, device, description) await entity.coordinator.async_config_entry_first_refresh() entities.append(entity) async_add_entities(entities) -class HonClimateEntity(HonEntity, ClimateEntity): +class HonACClimateEntity(HonEntity, ClimateEntity): def __init__(self, hass, entry, device: HonAppliance, description) -> None: super().__init__(hass, entry, device, description) @@ -81,6 +115,10 @@ class HonClimateEntity(HonEntity, ClimateEntity): self._handle_coordinator_update(update=False) async def async_set_hvac_mode(self, hvac_mode): + if self._device.get("onOffStatus") == "0": + self._attr_hvac_mode = HVACMode.OFF + else: + self._attr_hvac_mode = HON_HVAC_MODE[self._device.get("machMode")] if hvac_mode == HVACMode.OFF: await self._device.commands["stopProgram"].send() else: @@ -129,7 +167,7 @@ class HonClimateEntity(HonEntity, ClimateEntity): if self._device.get("onOffStatus") == "0": self._attr_hvac_mode = HVACMode.OFF else: - self._attr_hvac_mode = HON_HVAC_MODE[self._device.get("machMode") or "0"] + self._attr_hvac_mode = HON_HVAC_MODE[self._device.get("machMode")] self._attr_fan_mode = HON_FAN[self._device.get("windSpeed")] @@ -145,3 +183,78 @@ class HonClimateEntity(HonEntity, ClimateEntity): self._attr_swing_mode = SWING_OFF if update: self.async_write_ha_state() + + +class HonREFClimateEntity(HonEntity, ClimateEntity): + def __init__(self, hass, entry, device: HonAppliance, description) -> None: + super().__init__(hass, entry, device, description) + + self._attr_temperature_unit = TEMP_CELSIUS + self._attr_target_temperature_step = PRECISION_WHOLE + self._attr_max_temp = device.settings[description.key].max + self._attr_min_temp = device.settings[description.key].min + + self._attr_hvac_modes = [HVACMode.COOL] + self._attr_supported_features = ( + ClimateEntityFeature.TARGET_TEMPERATURE | ClimateEntityFeature.PRESET_MODE + ) + + self._handle_coordinator_update(update=False) + + modes = ["no_mode"] + for mode, data in device.commands["startProgram"].categories.items(): + if zone := data.parameters.get("zone"): + if self.entity_description.name.lower() in zone.values: + modes.append(mode) + self._attr_preset_modes = modes + + @property + def target_temperature(self) -> int | None: + """Return the temperature we try to reach.""" + return int(self._device.get(self.entity_description.key)) + + @property + def current_temperature(self) -> int | None: + """Return the current temperature.""" + temp_key = self.entity_description.key.split(".")[-1].replace("Sel", "") + return int(self._device.get(temp_key)) + + async def async_set_temperature(self, **kwargs): + if (temperature := kwargs.get(ATTR_TEMPERATURE)) is None: + return False + self._device.settings[self.entity_description.key].value = str(int(temperature)) + await self._device.commands["settings"].send() + self.async_write_ha_state() + + @property + def preset_mode(self) -> str | None: + """Return the current Preset for this channel.""" + return self._device.get(f"mode{self.entity_description.key[-2:]}", "no_mode") + + async def async_set_preset_mode(self, preset_mode: str) -> None: + """Set the new preset mode.""" + if preset_mode == "no_mode": + self._device.sync_command("stopProgram", "settings") + await self.coordinator.async_refresh() + await self._device.commands["stopProgram"].send() + else: + self._device.settings["startProgram.program"].value = preset_mode + self._device.settings[ + "startProgram.zone" + ].value = self.entity_description.name.lower() + self._device.sync_command("startProgram", "settings") + await self.coordinator.async_refresh() + await self._device.commands["startProgram"].send() + self.async_write_ha_state() + + @callback + def _handle_coordinator_update(self, update=True) -> None: + self._attr_target_temperature = int( + float(self._device.get(self.entity_description.key)) + ) + temp_key = self.entity_description.key.split(".")[-1].replace("Sel", "") + self._attr_current_temperature = int(self._device.get(temp_key)) + + self._attr_hvac_mode = HVACMode.COOL + if update: + self.async_write_ha_state() diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index a07b706..ead2196 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -9,7 +9,7 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": [ - "pyhOn==0.11.1" + "pyhOn==0.11.2" ], - "version": "0.8.0-beta.5" + "version": "0.8.0-beta.6" } diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 8ceba4a..838cde1 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -543,7 +543,6 @@ class HonConfigSensorEntity(HonEntity, SensorEntity): value = self._device.settings.get(self.entity_description.key, None) if self.entity_description.state_class is not None: if value and value.value: - print(value.value, type(value.value)) self._attr_native_value = ( float(value.value) if "." in str(value.value) else int(value.value) ) diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 9c0e9e1..01d3f81 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -344,8 +344,9 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non continue entity = HonControlSwitchEntity(hass, entry, device, description) elif isinstance(description, HonSwitchEntityDescription): - if description.key not in device.available_settings or not device.get( - description.key + if ( + f"settings.{description.key}" not in device.available_settings + or not device.get(description.key) ): continue entity = HonSwitchEntity(hass, entry, device, description) @@ -366,7 +367,7 @@ class HonSwitchEntity(HonEntity, SwitchEntity): return self._device.get(self.entity_description.key, "0") == "1" async def async_turn_on(self, **kwargs: Any) -> None: - setting = self._device.settings[self.entity_description.key] + setting = self._device.settings[f"settings.{self.entity_description.key}"] if type(setting) == HonParameter: return setting.value = setting.max if isinstance(setting, HonParameterRange) else "1" @@ -375,7 +376,7 @@ class HonSwitchEntity(HonEntity, SwitchEntity): await self.coordinator.async_refresh() async def async_turn_off(self, **kwargs: Any) -> None: - setting = self._device.settings[self.entity_description.key] + setting = self._device.settings[f"settings.{self.entity_description.key}"] if type(setting) == HonParameter: return setting.value = setting.min if isinstance(setting, HonParameterRange) else "0" @@ -431,9 +432,9 @@ class HonConfigSwitchEntity(HonEntity, SwitchEntity): """Return True if entity is on.""" setting = self._device.settings[self.entity_description.key] return ( - setting.value == "1" - or hasattr(setting, "min") - and setting.value != setting.min + setting.value != setting.min + if hasattr(setting, "min") + else setting.value == "1" ) async def async_turn_on(self, **kwargs: Any) -> None: diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index ec0f574..a1bffee 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -1330,6 +1330,33 @@ "climate": { "air_conditioner": { "name": "Klimatizační jednotka" + }, + "fridge": { + "name": "Chladnička", + "state_attributes": { + "preset_mode": { + "name": "Režimy chladničky", + "state": { + "auto_set": "Automatické nastavení", + "super_cool": "Super Cool", + "holiday": "Holiday", + "no_mode": "Není vybrán žádný režim" + } + } + } + }, + "freezer": { + "name": "Mraznička", + "state_attributes": { + "preset_mode": { + "name": "Režimy mrazničky", + "state": { + "auto_set": "Automatické nastavení", + "super_freeze": "Super Freeze", + "no_mode": "Není vybrán žádný režim" + } + } + } } } }, diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index d8068b4..8384518 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -1330,6 +1330,33 @@ "climate": { "air_conditioner": { "name": "Klimaanlage" + }, + "fridge": { + "name": "Kühlschrank", + "state_attributes": { + "preset_mode": { + "name": "Kühlschrank-Modi", + "state": { + "auto_set": "Auto-Set", + "super_cool": "Super Cool", + "holiday": "Holiday", + "no_mode": "Kein Modus ausgewählt" + } + } + } + }, + "freezer": { + "name": "Gefrierschrank", + "state_attributes": { + "preset_mode": { + "name": "Gefrierschrank-Modi", + "state": { + "auto_set": "Auto-Set", + "super_freeze": "Super Freeze", + "no_mode": "Kein Modus ausgewählt" + } + } + } } } }, diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index e6d6f29..679e40f 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -1330,6 +1330,33 @@ "climate": { "air_conditioner": { "name": "Κλιματιστικό" + }, + "fridge": { + "name": "Ψυγείο", + "state_attributes": { + "preset_mode": { + "name": "Λειτουργίες ψυγείου", + "state": { + "auto_set": "Αυτόματη ρύθμιση", + "super_cool": "Super Cool", + "holiday": "Holiday", + "no_mode": "Δεν επιλέχθηκε λειτουργία" + } + } + } + }, + "freezer": { + "name": "Καταψύκτης", + "state_attributes": { + "preset_mode": { + "name": "Λειτουργίες κατάψυξης", + "state": { + "auto_set": "Αυτόματη ρύθμιση", + "super_freeze": "Super Freeze", + "no_mode": "Δεν επιλέχθηκε λειτουργία" + } + } + } } } }, diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 9616ad5..9e73857 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -1394,6 +1394,33 @@ "climate": { "air_conditioner": { "name": "Air conditioner" + }, + "fridge": { + "name": "Fridge", + "state_attributes": { + "preset_mode": { + "name": "Fridge modes", + "state": { + "auto_set": "Auto-Set", + "super_cool": "Super Cool", + "holiday": "Holiday", + "no_mode": "No mode selected" + } + } + } + }, + "freezer": { + "name": "Freezer", + "state_attributes": { + "preset_mode": { + "name": "Freezer modes", + "state": { + "auto_set": "Auto-Set", + "super_freeze": "Super Freeze", + "no_mode": "No mode selected" + } + } + } } } } diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index 37e1747..3fd9436 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -1330,6 +1330,33 @@ "climate": { "air_conditioner": { "name": "Aire acondicionado" + }, + "fridge": { + "name": "Frigorífico", + "state_attributes": { + "preset_mode": { + "name": "Modos de frigorífico", + "state": { + "auto_set": "Auto-Set", + "super_cool": "Super Cool", + "holiday": "Holiday", + "no_mode": "No se ha seleccionado ningún modo" + } + } + } + }, + "freezer": { + "name": "Congelador", + "state_attributes": { + "preset_mode": { + "name": "Modos congelador", + "state": { + "auto_set": "Auto-Set", + "super_freeze": "Super Freeze", + "no_mode": "No se ha seleccionado ningún modo" + } + } + } } } }, diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index 89f8ebd..e9a6d70 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -1330,6 +1330,33 @@ "climate": { "air_conditioner": { "name": "Climatiseur" + }, + "fridge": { + "name": "Réfrigérateur", + "state_attributes": { + "preset_mode": { + "name": "Modes réfrigérateur", + "state": { + "auto_set": "Réglage automatique", + "super_cool": "Super Cool", + "holiday": "Holiday", + "no_mode": "Aucun mode sélectionné" + } + } + } + }, + "freezer": { + "name": "Congélateur", + "state_attributes": { + "preset_mode": { + "name": "Modes congélateur", + "state": { + "auto_set": "Réglage automatique", + "super_freeze": "Super Freeze", + "no_mode": "Aucun mode sélectionné" + } + } + } } } }, diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index 32370f7..57754e5 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -778,6 +778,33 @@ "climate": { "air_conditioner": { "name": "Air conditioner" + }, + "fridge": { + "name": "Fridge", + "state_attributes": { + "preset_mode": { + "name": "Fridge modes", + "state": { + "auto_set": "Auto-Set", + "super_cool": "Super Cool", + "holiday": "Holiday", + "no_mode": "No mode selected" + } + } + } + }, + "freezer": { + "name": "Freezer", + "state_attributes": { + "preset_mode": { + "name": "Freezer modes", + "state": { + "auto_set": "Auto-Set", + "super_freeze": "Super Freeze", + "no_mode": "No mode selected" + } + } + } } } }, diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index ad83654..21f0ee6 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -1330,6 +1330,33 @@ "climate": { "air_conditioner": { "name": "Klimatizacijski uređaj" + }, + "fridge": { + "name": "Hladnjak", + "state_attributes": { + "preset_mode": { + "name": "Načini rada za hladnjak", + "state": { + "auto_set": "Automatsko postavljanje", + "super_cool": "Super Cool", + "holiday": "Holiday", + "no_mode": "Nije odabran način rada" + } + } + } + }, + "freezer": { + "name": "Zamrzivač", + "state_attributes": { + "preset_mode": { + "name": "Načini rada za zamrzavanje", + "state": { + "auto_set": "Automatsko postavljanje", + "super_freeze": "Super Freeze", + "no_mode": "Nije odabran način rada" + } + } + } } } }, diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index aee11ae..566185a 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -1382,6 +1382,33 @@ "climate": { "air_conditioner": { "name": "Condizionatore" + }, + "fridge": { + "name": "Frigorifero", + "state_attributes": { + "preset_mode": { + "name": "Modalità del frigorifero", + "state": { + "auto_set": "Impostazione automatica", + "super_cool": "Super Cool", + "holiday": "Holiday", + "no_mode": "Nessuna modalità selezionata" + } + } + } + }, + "freezer": { + "name": "Congelatore", + "state_attributes": { + "preset_mode": { + "name": "Modalità del congelatore", + "state": { + "auto_set": "Impostazione automatica", + "super_freeze": "Super Freeze", + "no_mode": "Nessuna modalità selezionata" + } + } + } } } } diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index b5f63e1..4da4450 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -1330,6 +1330,33 @@ "climate": { "air_conditioner": { "name": "Airconditioner" + }, + "fridge": { + "name": "Koelkast", + "state_attributes": { + "preset_mode": { + "name": "Koelkastmodi", + "state": { + "auto_set": "Automatisch instellen", + "super_cool": "Super Cool", + "holiday": "Holiday", + "no_mode": "Geen modus geselecteerd" + } + } + } + }, + "freezer": { + "name": "Vriezer", + "state_attributes": { + "preset_mode": { + "name": "Vriezermodi", + "state": { + "auto_set": "Automatisch instellen", + "super_freeze": "Super Freeze", + "no_mode": "Geen modus geselecteerd" + } + } + } } } }, diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index 1abd892..d567c16 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -1330,6 +1330,33 @@ "climate": { "air_conditioner": { "name": "Klimatyzator" + }, + "fridge": { + "name": "Lodówka", + "state_attributes": { + "preset_mode": { + "name": "Tryby pracy lodówki", + "state": { + "auto_set": "Ustawianie automatyczne", + "super_cool": "Super Cool", + "holiday": "Holiday", + "no_mode": "Nie wybrano żadnego trybu" + } + } + } + }, + "freezer": { + "name": "Zamrażarka", + "state_attributes": { + "preset_mode": { + "name": "Tryby pracy zamrażarki", + "state": { + "auto_set": "Ustawianie automatyczne", + "super_freeze": "Super Freeze", + "no_mode": "Nie wybrano żadnego trybu" + } + } + } } } }, diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index 12ed37e..c0194a8 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -1330,6 +1330,33 @@ "climate": { "air_conditioner": { "name": "Ar Condicionado" + }, + "fridge": { + "name": "Frigorífico", + "state_attributes": { + "preset_mode": { + "name": "Modos do frigorífico", + "state": { + "auto_set": "Ajuste automático", + "super_cool": "Super Cool", + "holiday": "Holiday", + "no_mode": "Nenhum modo selecionado" + } + } + } + }, + "freezer": { + "name": "Congelador", + "state_attributes": { + "preset_mode": { + "name": "Modos do congelador", + "state": { + "auto_set": "Ajuste automático", + "super_freeze": "Super Freeze", + "no_mode": "Nenhum modo selecionado" + } + } + } } } }, diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index f8f8329..2013abf 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -1330,6 +1330,33 @@ "climate": { "air_conditioner": { "name": "Aer condiționat" + }, + "fridge": { + "name": "Frigider", + "state_attributes": { + "preset_mode": { + "name": "Moduri frigider", + "state": { + "auto_set": "Setare automată", + "super_cool": "Super Cool", + "holiday": "Holiday", + "no_mode": "Niciun mod selectat" + } + } + } + }, + "freezer": { + "name": "Congelator", + "state_attributes": { + "preset_mode": { + "name": "Moduri de congelare", + "state": { + "auto_set": "Setare automată", + "super_freeze": "Super Freeze", + "no_mode": "Niciun mod selectat" + } + } + } } } }, diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index 0b7c819..9a9b6e0 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -1330,6 +1330,33 @@ "climate": { "air_conditioner": { "name": "Кондиционер воздуха" + }, + "fridge": { + "name": "Холодильник", + "state_attributes": { + "preset_mode": { + "name": "Режимы холодильника", + "state": { + "auto_set": "Автоматическая установка", + "super_cool": "Super Cool", + "holiday": "Holiday", + "no_mode": "Режим не выбран" + } + } + } + }, + "freezer": { + "name": "Морозильник", + "state_attributes": { + "preset_mode": { + "name": "Режимы морозильного отделения", + "state": { + "auto_set": "Автоматическая установка", + "super_freeze": "Super Freeze", + "no_mode": "Режим не выбран" + } + } + } } } }, diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index e883362..d5c98b3 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -1330,6 +1330,33 @@ "climate": { "air_conditioner": { "name": "Klimatizácia" + }, + "fridge": { + "name": "Chladnička", + "state_attributes": { + "preset_mode": { + "name": "Režimy chladničky", + "state": { + "auto_set": "Automatické nastavenie", + "super_cool": "Super Cool", + "holiday": "Holiday", + "no_mode": "Nie je vybraný žiadny režim" + } + } + } + }, + "freezer": { + "name": "Mraznička", + "state_attributes": { + "preset_mode": { + "name": "Režimy mrazničky", + "state": { + "auto_set": "Automatické nastavenie", + "super_freeze": "Super Freeze", + "no_mode": "Nie je vybraný žiadny režim" + } + } + } } } }, diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index eb5dbab..d8837bf 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -1330,6 +1330,33 @@ "climate": { "air_conditioner": { "name": "Klimatska naprava" + }, + "fridge": { + "name": "Hladilnik", + "state_attributes": { + "preset_mode": { + "name": "Načini hladilnika", + "state": { + "auto_set": "Samodejna nastavitev", + "super_cool": "Super Cool", + "holiday": "Holiday", + "no_mode": "Izbran ni noben način" + } + } + } + }, + "freezer": { + "name": "Zamrzovalnik", + "state_attributes": { + "preset_mode": { + "name": "Načini zamrzovalnika", + "state": { + "auto_set": "Samodejna nastavitev", + "super_freeze": "Super Freeze", + "no_mode": "Izbran ni noben način" + } + } + } } } }, diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index 18694e1..c33a825 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -1330,6 +1330,33 @@ "climate": { "air_conditioner": { "name": "Klima uređaj" + }, + "fridge": { + "name": "Frižider", + "state_attributes": { + "preset_mode": { + "name": "Režimi frižidera", + "state": { + "auto_set": "Automatsko podešavanje", + "super_cool": "Super Cool", + "holiday": "Holiday", + "no_mode": "Nije izabran nijedan režim" + } + } + } + }, + "freezer": { + "name": "Zamrzivač", + "state_attributes": { + "preset_mode": { + "name": "Režimi zamrzivača", + "state": { + "auto_set": "Automatsko podešavanje", + "super_freeze": "Super Freeze", + "no_mode": "Nije izabran nijedan režim" + } + } + } } } }, diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index 32654c7..62e9eff 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -1330,6 +1330,33 @@ "climate": { "air_conditioner": { "name": "Klima" + }, + "fridge": { + "name": "Buzdolabı", + "state_attributes": { + "preset_mode": { + "name": "Buzdolabı modları", + "state": { + "auto_set": "Otomatik Ayarla", + "super_cool": "Super Cool", + "holiday": "Holiday", + "no_mode": "Hiç mod seçilmedi" + } + } + } + }, + "freezer": { + "name": "Dondurucu", + "state_attributes": { + "preset_mode": { + "name": "Dondurucu modları", + "state": { + "auto_set": "Otomatik Ayarla", + "super_freeze": "Super Freeze", + "no_mode": "Hiç mod seçilmedi" + } + } + } } } }, diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index 4cf64bb..4dd374e 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -1330,6 +1330,33 @@ "climate": { "air_conditioner": { "name": "空调" + }, + "fridge": { + "name": "冰箱", + "state_attributes": { + "preset_mode": { + "name": "冰箱模式", + "state": { + "auto_set": "自动设置", + "super_cool": "Super Cool", + "holiday": "Holiday", + "no_mode": "未选择模式" + } + } + } + }, + "freezer": { + "name": "冷藏箱", + "state_attributes": { + "preset_mode": { + "name": "冷藏室模式", + "state": { + "auto_set": "自动设置", + "super_freeze": "Super Freeze", + "no_mode": "未选择模式" + } + } + } } } }, diff --git a/info.md b/info.md index 07cb11c..ae81957 100644 --- a/info.md +++ b/info.md @@ -73,6 +73,7 @@ Support has been confirmed for these models, but many more will work. Please add - Hoover HFB 6B2S3FX - Hoover HLE C10DCE-80 - Hoover HSOT3161WG +- Hoover HW 68AMC/1-80 - Hoover HWPD 69AMBC/1-S - Hoover HWPS4954DAMR-11 - Hoover NDE H10A2TCE-80 diff --git a/scripts/generate_translation.py b/scripts/generate_translation.py index 2b068b0..c437420 100755 --- a/scripts/generate_translation.py +++ b/scripts/generate_translation.py @@ -44,6 +44,30 @@ PROGRAMS = { }, } +CLIMATE = { + "fridge": { + "preset_mode": { + "name": "REF_CMD&CTRL.MODE_SELECTION_DRAWER_FRIDGE.FRIDGE_MODE_TITLE", + "state": { + "auto_set": "REF_CMD&CTRL.MODALITIES.ECO", + "super_cool": "REF_CMD&CTRL.MODALITIES.SUPER_COOL", + "holiday": "REF_CMD&CTRL.MODALITIES.BACK_FROM_HOLIDAY", + "no_mode": "REF_CMD&CTRL.MODALITIES.NO_MODE_SELECTED", + }, + } + }, + "freezer": { + "preset_mode": { + "name": "REF_CMD&CTRL.MODE_SELECTION_DRAWER_FREEZER.FREEZER_MODE_TITLE", + "state": { + "auto_set": "REF_CMD&CTRL.MODALITIES.ECO", + "super_freeze": "REF_CMD&CTRL.MODALITIES.SHOCK_FREEZE", + "no_mode": "REF_CMD&CTRL.MODALITIES.NO_MODE_SELECTED", + }, + } + }, +} + NAMES = { "switch": { "anti_crease": "HDRY_CMD&CTRL.PROGRAM_CYCLE_DETAIL.ANTICREASE_TITLE", @@ -197,7 +221,11 @@ NAMES = { "freezer_temp_sel": ["OV.COMMON.GOAL_TEMPERATURE", "REF.ZONES.FREEZER"], "fridge_temp_sel": ["OV.COMMON.GOAL_TEMPERATURE", "REF.ZONES.FRIDGE"], }, - "climate": {"air_conditioner": "GLOBALS.APPLIANCES_NAME.AC"}, + "climate": { + "air_conditioner": "GLOBALS.APPLIANCES_NAME.AC", + "fridge": "REF.ZONES.FRIDGE", + "freezer": "REF.ZONES.FREEZER", + }, } @@ -298,6 +326,15 @@ def main(): for name, key in data.items(): select = old.setdefault("entity", {}).setdefault(entity, {}) select.setdefault(name, {})["name"] = load_key(key, original, fallback) + for name, modes in CLIMATE.items(): + climate = old.setdefault("entity", {}).setdefault("climate", {}) + attr = climate.setdefault(name, {}).setdefault("state_attributes", {}) + for mode, data in modes.items(): + mode_name = load_key(data["name"], original, fallback) + attr.setdefault(mode, {})["name"] = mode_name + for state, key in data["state"].items(): + mode_state = load_key(key, original, fallback) + attr[mode].setdefault("state", {})[state] = mode_state translate_login(old, original, fallback) save_json(base_path / f"{language}.json", old) diff --git a/scripts/sensor_docs.py b/scripts/sensor_docs.py index 022027c..655dbf6 100755 --- a/scripts/sensor_docs.py +++ b/scripts/sensor_docs.py @@ -14,7 +14,11 @@ from custom_components.hon.climate import CLIMATES from custom_components.hon.number import NUMBERS from custom_components.hon.select import SELECTS from custom_components.hon.sensor import SENSORS -from custom_components.hon.switch import SWITCHES, HonSwitchEntityDescription +from custom_components.hon.switch import ( + SWITCHES, + HonControlSwitchEntityDescription, + HonSwitchEntityDescription, +) APPLIANCES = { "AC": "Air conditioner", @@ -50,11 +54,7 @@ result = {} for entity_type, appliances in entities.items(): for appliance, data in appliances.items(): for entity in data: - if ( - isinstance(entity, HonSwitchEntityDescription) - and entity.entity_category != "config" - and "settings." not in entity.key - ): + if isinstance(entity, HonControlSwitchEntityDescription): key = f"{entity.turn_on_key}` / `{entity.turn_off_key}" else: key = entity.key @@ -62,7 +62,8 @@ for entity_type, appliances in entities.items(): category = ( "control" if entity.key.startswith("settings") - or hasattr(entity, "turn_on_key") + or isinstance(entity, HonSwitchEntityDescription) + or isinstance(entity, HonControlSwitchEntityDescription) or entity_type in ["button", "climate"] else "sensor" ) -- 2.39.5 From 6e9981c9ab3471cb6d4ebaf6226bea3b5fddfa13 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sun, 28 May 2023 17:38:56 +0200 Subject: [PATCH 114/205] Add climate entity for oven --- README.md | 1 + custom_components/hon/climate.py | 127 ++++++++++++++------- custom_components/hon/manifest.json | 4 +- custom_components/hon/translations/cs.json | 61 ++++++++++ custom_components/hon/translations/de.json | 61 ++++++++++ custom_components/hon/translations/el.json | 61 ++++++++++ custom_components/hon/translations/en.json | 62 ++++++++++ custom_components/hon/translations/es.json | 61 ++++++++++ custom_components/hon/translations/fr.json | 61 ++++++++++ custom_components/hon/translations/he.json | 13 +++ custom_components/hon/translations/hr.json | 61 ++++++++++ custom_components/hon/translations/it.json | 61 ++++++++++ custom_components/hon/translations/nl.json | 61 ++++++++++ custom_components/hon/translations/pl.json | 61 ++++++++++ custom_components/hon/translations/pt.json | 61 ++++++++++ custom_components/hon/translations/ro.json | 61 ++++++++++ custom_components/hon/translations/ru.json | 61 ++++++++++ custom_components/hon/translations/sk.json | 61 ++++++++++ custom_components/hon/translations/sl.json | 61 ++++++++++ custom_components/hon/translations/sr.json | 61 ++++++++++ custom_components/hon/translations/tr.json | 61 ++++++++++ custom_components/hon/translations/zh.json | 61 ++++++++++ scripts/generate_translation.py | 17 ++- 23 files changed, 1215 insertions(+), 46 deletions(-) diff --git a/README.md b/README.md index 95cab8d..62cff86 100644 --- a/README.md +++ b/README.md @@ -251,6 +251,7 @@ For every device exists a hidden button which can be used to log all infos of yo | Name | Icon | Entity | Key | | --- | --- | --- | --- | | Oven | `toaster-oven` | `switch` | `startProgram` / `stopProgram` | +| Oven | `thermometer` | `climate` | `settings.tempSel` | #### Configs | Name | Icon | Entity | Key | | --- | --- | --- | --- | diff --git a/custom_components/hon/climate.py b/custom_components/hon/climate.py index 9691633..d8d6f99 100644 --- a/custom_components/hon/climate.py +++ b/custom_components/hon/climate.py @@ -1,6 +1,8 @@ import logging from dataclasses import dataclass +from pyhon.appliance import HonAppliance + from homeassistant.components.climate import ( ClimateEntity, ClimateEntityDescription, @@ -17,13 +19,9 @@ from homeassistant.components.climate.const import ( from homeassistant.config_entries import ConfigEntry from homeassistant.const import ( ATTR_TEMPERATURE, - PRECISION_WHOLE, TEMP_CELSIUS, ) from homeassistant.core import callback -from pyhon import helper -from pyhon.appliance import HonAppliance - from .const import HON_HVAC_MODE, HON_FAN, HON_HVAC_PROGRAM, DOMAIN from .hon import HonEntity @@ -36,8 +34,8 @@ class HonACClimateEntityDescription(ClimateEntityDescription): @dataclass -class HonREFClimateEntityDescription(ClimateEntityDescription): - pass +class HonClimateEntityDescription(ClimateEntityDescription): + mode: HVACMode = "auto" CLIMATES = { @@ -50,19 +48,30 @@ CLIMATES = { ), ), "REF": ( - HonREFClimateEntityDescription( + HonClimateEntityDescription( key="settings.tempSelZ1", + mode=HVACMode.COOL, name="Fridge", icon="mdi:thermometer", translation_key="fridge", ), - HonREFClimateEntityDescription( + HonClimateEntityDescription( key="settings.tempSelZ2", + mode=HVACMode.COOL, name="Freezer", icon="mdi:snowflake-thermometer", translation_key="freezer", ), ), + "OV": ( + HonClimateEntityDescription( + key="settings.tempSel", + mode=HVACMode.HEAT, + name="Oven", + icon="mdi:thermometer", + translation_key="oven", + ), + ), } @@ -74,10 +83,10 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non if description.key not in list(device.commands): continue entity = HonACClimateEntity(hass, entry, device, description) - elif isinstance(description, HonREFClimateEntityDescription): + elif isinstance(description, HonClimateEntityDescription): if description.key not in device.available_settings: continue - entity = HonREFClimateEntity(hass, entry, device, description) + entity = HonClimateEntity(hass, entry, device, description) else: continue await entity.coordinator.async_config_entry_first_refresh() @@ -90,7 +99,7 @@ class HonACClimateEntity(HonEntity, ClimateEntity): super().__init__(hass, entry, device, description) self._attr_temperature_unit = TEMP_CELSIUS - self._attr_target_temperature_step = PRECISION_WHOLE + self._attr_target_temperature_step = device.settings["settings.tempSel"].step self._attr_max_temp = device.settings["settings.tempSel"].max self._attr_min_temp = device.settings["settings.tempSel"].min @@ -114,11 +123,14 @@ class HonACClimateEntity(HonEntity, ClimateEntity): self._handle_coordinator_update(update=False) - async def async_set_hvac_mode(self, hvac_mode): + @property + def hvac_mode(self) -> HVACMode | str | None: if self._device.get("onOffStatus") == "0": - self._attr_hvac_mode = HVACMode.OFF + return HVACMode.OFF else: - self._attr_hvac_mode = HON_HVAC_MODE[self._device.get("machMode")] + return HON_HVAC_MODE[self._device.get("machMode")] + + async def async_set_hvac_mode(self, hvac_mode): if hvac_mode == HVACMode.OFF: await self._device.commands["stopProgram"].send() else: @@ -185,29 +197,38 @@ class HonACClimateEntity(HonEntity, ClimateEntity): self.async_write_ha_state() -class HonREFClimateEntity(HonEntity, ClimateEntity): +class HonClimateEntity(HonEntity, ClimateEntity): + entity_description = HonClimateEntityDescription + def __init__(self, hass, entry, device: HonAppliance, description) -> None: super().__init__(hass, entry, device, description) self._attr_temperature_unit = TEMP_CELSIUS - self._attr_target_temperature_step = PRECISION_WHOLE - self._attr_max_temp = device.settings[description.key].max - self._attr_min_temp = device.settings[description.key].min + self._set_temperature_bound() - self._attr_hvac_modes = [HVACMode.COOL] self._attr_supported_features = ( ClimateEntityFeature.TARGET_TEMPERATURE | ClimateEntityFeature.PRESET_MODE ) - self._handle_coordinator_update(update=False) + self._attr_hvac_modes = [description.mode] + if device.get("onOffStatus"): + self._attr_hvac_modes += [HVACMode.OFF] + modes = [] + else: + modes = ["no_mode"] - modes = ["no_mode"] for mode, data in device.commands["startProgram"].categories.items(): + if mode not in data.parameters["program"].values: + continue if zone := data.parameters.get("zone"): if self.entity_description.name.lower() in zone.values: modes.append(mode) + else: + modes.append(mode) self._attr_preset_modes = modes + self._handle_coordinator_update(update=False) + @property def target_temperature(self) -> int | None: """Return the temperature we try to reach.""" @@ -226,35 +247,59 @@ class HonREFClimateEntity(HonEntity, ClimateEntity): await self._device.commands["settings"].send() self.async_write_ha_state() + @property + def hvac_mode(self) -> HVACMode | str | None: + if self._device.get("onOffStatus") == "0": + return HVACMode.OFF + else: + return self.entity_description.mode + + async def async_set_hvac_mode(self, hvac_mode): + if len(self.hvac_modes) <= 1: + return + if hvac_mode == HVACMode.OFF: + await self._device.commands["stopProgram"].send() + else: + await self._device.commands["startProgram"].send() + self._attr_hvac_mode = hvac_mode + self.async_write_ha_state() + @property def preset_mode(self) -> str | None: """Return the current Preset for this channel.""" - return self._device.get(f"mode{self.entity_description.key[-2:]}", "no_mode") + if self._device.get("onOffStatus") is not None: + return self._device.get("programName", "") + else: + return self._device.get( + f"mode{self.entity_description.key[-2:]}", "no_mode" + ) async def async_set_preset_mode(self, preset_mode: str) -> None: """Set the new preset mode.""" - if preset_mode == "no_mode": - self._device.sync_command("stopProgram", "settings") - await self.coordinator.async_refresh() - await self._device.commands["stopProgram"].send() - else: - self._device.settings["startProgram.program"].value = preset_mode - self._device.settings[ - "startProgram.zone" - ].value = self.entity_description.name.lower() - self._device.sync_command("startProgram", "settings") - await self.coordinator.async_refresh() - await self._device.commands["startProgram"].send() + command = "stopProgram" if preset_mode == "no_mode" else "startProgram" + if program := self._device.settings.get(f"{command}.program"): + program.value = preset_mode + if zone := self._device.settings.get(f"{command}.zone"): + zone.value = self.entity_description.name.lower() + self._device.sync_command(command, "settings") + self._set_temperature_bound() + await self.coordinator.async_refresh() + await self._device.commands[command].send() + self._attr_preset_mode = preset_mode self.async_write_ha_state() + def _set_temperature_bound(self): + self._attr_target_temperature_step = self._device.settings[ + self.entity_description.key + ].step + self._attr_max_temp = self._device.settings[self.entity_description.key].max + self._attr_min_temp = self._device.settings[self.entity_description.key].min + @callback def _handle_coordinator_update(self, update=True) -> None: - self._attr_target_temperature = int( - float(self._device.get(self.entity_description.key)) - ) - temp_key = self.entity_description.key.split(".")[-1].replace("Sel", "") - self._attr_current_temperature = int(self._device.get(temp_key)) - - self._attr_hvac_mode = HVACMode.COOL + self._attr_target_temperature = self.target_temperature + self._attr_current_temperature = self.current_temperature + self._attr_hvac_mode = self.hvac_mode + self._attr_preset_mode = self.preset_mode if update: self.async_write_ha_state() diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index ead2196..23f62da 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -9,7 +9,7 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": [ - "pyhOn==0.11.2" + "pyhOn==0.11.3" ], - "version": "0.8.0-beta.6" + "version": "0.8.0-beta.7" } diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index a1bffee..8fba491 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -1357,6 +1357,67 @@ } } } + }, + "oven": { + "name": "Trouba", + "state_attributes": { + "preset_mode": { + "name": "Programy", + "state": { + "bakery": "Těstoviny a pečivo", + "bakery_steam": "Pára v troubě", + "bottom_heating": "Spodní ohřev", + "bottom_heating_fan": "Spodní ohřev + ventilátor", + "bread": "Chléb", + "bread_steam": "Chléb pečený v páře", + "combi": "Combi", + "convection_fan": "Statický + ventilátor", + "convection_fan_turnspit": "Konvekce + ventilátor + rožeň", + "conventional": "Statický", + "conventional_turnspit": "Konvekce + rožeň", + "defrost": "Rozmrazování", + "descaling": "Odstraňování vodního kamene", + "fish": "Ryby", + "fish_steam": "Ryby v páře", + "grill_cata": "Gril", + "grill_fan_cata": "Ventilátor grilu", + "grill_fan_pyro": "Gril + ventilátor", + "grill_pyro": "Gril", + "h20_clean": "H2O-Clean", + "iot_bread": "Chléb", + "iot_h20_clean": "h2O clean", + "leavening": "Kynutí", + "low_temp_cooking": "Příprava při nízkých teplotách", + "low_temp_cooking_fish": "Příprava při nízkých teplotách – ryby", + "low_temp_cooking_fish_steam": "Příprava při nízkých teplotách – ryby v páře", + "low_temp_cooking_meat": "Příprava při nízkých teplotách – maso", + "low_temp_cooking_meat_steam": "Příprava při nízkých teplotách - dušené maso", + "low_temp_cooking_steam": "Příprava v páře při nízkých teplotách", + "meat": "Maso", + "meat_steam": "Maso v páře", + "multi_level": "Víceúrovňové", + "paella": "Paella", + "pasta_and_bakery": "Těstoviny a pečivo", + "pizza": "Pizza", + "pyrolysis": "Pyrolýza", + "pyrolysis_plus": "Pyrolýza +", + "red_meat": "Tmavé maso", + "red_meat_steam": "Červené maso vařené v páře", + "regenerate": "Regenerace", + "soft_plus": "Soft +", + "super_grill": "Super gril", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Zelenina", + "vegetables_cata": "Zelenina", + "vegetables_pyro": "Zelenina", + "water_discharge": "Vypouštění vody", + "white_meat": "Bílé maso", + "white_meat_steam": "Bílé maso vařené v páře" + } + } + } } } }, diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index 8384518..766ad3b 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -1357,6 +1357,67 @@ } } } + }, + "oven": { + "name": "Ofen", + "state_attributes": { + "preset_mode": { + "name": "Programme", + "state": { + "bakery": "Teigwaren und Brot", + "bakery_steam": "Dampf im Backofen", + "bottom_heating": "Unterhitze", + "bottom_heating_fan": "Unterhitze + Umluft", + "bread": "Brot", + "bread_steam": "Mit Dampf gebackenes Brot", + "combi": "Combi", + "convection_fan": "Umluft", + "convection_fan_turnspit": "Heißluft + Drehspieß", + "conventional": "Ober-Unterhitze", + "conventional_turnspit": "Ober-&Unterhitze + Bratspieß", + "defrost": "Auftauen", + "descaling": "Entkalkung", + "fish": "Fisch", + "fish_steam": "Gedünsteter Fisch", + "grill_cata": "Grill", + "grill_fan_cata": "Grill Umluft", + "grill_fan_pyro": "Grill + Umluft", + "grill_pyro": "Grill", + "h20_clean": "H2O-Clean", + "iot_bread": "Brot", + "iot_h20_clean": "h2O clean", + "leavening": "Aufgehen", + "low_temp_cooking": "Garen bei niedriger Temperatur", + "low_temp_cooking_fish": "Garen bei niedriger Temperatur - Fisch", + "low_temp_cooking_fish_steam": "Niedertemperaturgaren - Gedünsteter Fisch", + "low_temp_cooking_meat": "Garen bei niedriger Temperatur - Fleisch", + "low_temp_cooking_meat_steam": "Niedertemperaturgaren - Gedämpftes Fleisch", + "low_temp_cooking_steam": "Niedertemperatur-Dampfgaren", + "meat": "Fleisch", + "meat_steam": "Fleisch Dampf", + "multi_level": "Multi-Level", + "paella": "Paella", + "pasta_and_bakery": "Teigwaren und Brot", + "pizza": "Pizza", + "pyrolysis": "Pyrolyse", + "pyrolysis_plus": "Pyrolyse +", + "red_meat": "Rotes Fleisch", + "red_meat_steam": "Gedünstetes rotes Fleisch", + "regenerate": "Regenerieren", + "soft_plus": "Soft+", + "super_grill": "Super Grill", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Gemüse", + "vegetables_cata": "Gemüse", + "vegetables_pyro": "Gemüse", + "water_discharge": "Wasserabfluss", + "white_meat": "Weißes Fleisch", + "white_meat_steam": "Gedämpftes weißes Fleisch" + } + } + } } } }, diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index 679e40f..9b6ae68 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -1357,6 +1357,67 @@ } } } + }, + "oven": { + "name": "Φούρνος", + "state_attributes": { + "preset_mode": { + "name": "Προγράμματα", + "state": { + "bakery": "Ζυμαρικά και αρτοποιήματα", + "bakery_steam": "Ατμός φούρνου", + "bottom_heating": "Κάτω στοιχείο", + "bottom_heating_fan": "Κάτω στοιχείο + ανεμιστήρας", + "bread": "Ψωμί", + "bread_steam": "Ψωμί ατμού", + "combi": "Combi", + "convection_fan": "Θερμοσ αερασ", + "convection_fan_turnspit": "Θερμός αέρας + Ανεμιστήρας + Σούβλα", + "conventional": "Ανω - κατω θερμανση", + "conventional_turnspit": "Θερμός αέρας + Σούβλα", + "defrost": "Απόψυξη", + "descaling": "Αφαλάτωση", + "fish": "Ψάρια", + "fish_steam": "Ψάρια στον ατμό", + "grill_cata": "Γκριλ", + "grill_fan_cata": "Ανεμιστήρας γκριλ", + "grill_fan_pyro": "Γκριλ + ανεμιστήρας", + "grill_pyro": "Γκριλ", + "h20_clean": "H2O-Clean", + "iot_bread": "Ψωμί", + "iot_h20_clean": "h2O clean", + "leavening": "Ζυμωση", + "low_temp_cooking": "Μαγείρεμα σε χαμηλή θερμοκρασία", + "low_temp_cooking_fish": "Μαγείρεμα σε χαμηλή θερμοκρασία - Ψάρι", + "low_temp_cooking_fish_steam": "Μαγείρεμα σε χαμηλή θερμοκρασία - Ψάρια στον ατμό", + "low_temp_cooking_meat": "Μαγείρεμα σε χαμηλή θερμοκρασία - Κρέας", + "low_temp_cooking_meat_steam": "Μαγείρεμα σε χαμηλή θερμοκρασία - Κρέας στον ατμό", + "low_temp_cooking_steam": "Μαγείρεμα με ατμό σε χαμηλή θερμοκρασία", + "meat": "Κρέας", + "meat_steam": "Κρέας στον ατμό", + "multi_level": "Πολλαπλων Επιπεδων", + "paella": "Paella", + "pasta_and_bakery": "Ζυμαρικά και αρτοποιήματα", + "pizza": "Pizza", + "pyrolysis": "Πυρόλυση", + "pyrolysis_plus": "Πυρόλυση +", + "red_meat": "Κόκκινο κρέας", + "red_meat_steam": "Κόκκινο κρέας στον ατμό", + "regenerate": "Αναζωογόνηση", + "soft_plus": "Μαλακό +", + "super_grill": "Σούπερ γκριλ", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Λαχανικά", + "vegetables_cata": "Λαχανικά", + "vegetables_pyro": "Λαχανικά", + "water_discharge": "Απόρριψη νερού", + "white_meat": "Λευκό κρέας", + "white_meat_steam": "Λευκό κρέας στον ατμό" + } + } + } } } }, diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 9e73857..40d3135 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -1421,6 +1421,68 @@ } } } + }, + "oven": { + "name": "Oven", + "state_attributes": { + "preset_mode": { + "name": "Programs", + "state": { + "bakery": "Pasta and Bakery", + "bakery_steam": "Steam oven", + "bottom_heating": "Bottom Heating", + "bottom_heating_fan": "Bottom Heating + Fan", + "bread": "Bread", + "bread_steam": "Steam baked bread", + "combi": "Combi", + "convection_fan": "Convection + Fan", + "convection_fan_turnspit": "Convection + Fan + Turnspit", + "conventional": "Conventional", + "conventional_turnspit": "Convection + Turnspit", + "defrost": "Defrosting", + "descaling": "Descaling", + "fish": "Fish", + "fish_steam": "Steamed fish", + "grill_cata": "Grill", + "grill_fan_cata": "Grill fan", + "grill_fan_pyro": "Grill + Fan", + "grill_pyro": "Grill", + "h20_clean": "H2O-Clean", + "iot_bread": "Bread", + "iot_h20_clean": "h2O clean", + "leavening": "Leavening", + "light_fan\n": "Light Fan", + "low_temp_cooking": "Low Temperature Cooking", + "low_temp_cooking_fish": "Low Temperature Cooking - Fish", + "low_temp_cooking_fish_steam": "Low Temperature Cooking - Steamed fish", + "low_temp_cooking_meat": "Low Temperature Cooking - Meat", + "low_temp_cooking_meat_steam": "Low Temperature Cooking - Steamed meat", + "low_temp_cooking_steam": "Low Temperature Steam Cooking", + "meat": "Meat", + "meat_steam": "Steamed meat", + "multi_level": "Multi-Level", + "paella": "Paella", + "pasta_and_bakery": "Pasta and Bakery", + "pizza": "Pizza", + "pyrolysis": "Pyrolysis", + "pyrolysis_plus": "Pyrolysis +", + "red_meat": "Red Meat", + "red_meat_steam": "Steamed red meat", + "regenerate": "Regenerate", + "soft_plus": "Soft+", + "super_grill": "Super Grill", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Vegetables", + "vegetables_cata": "Vegetables", + "vegetables_pyro": "Vegetables", + "water_discharge": "Water Discharge", + "white_meat": "White Meat", + "white_meat_steam": "Steamed white meat" + } + } + } } } } diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index 3fd9436..1627934 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -1357,6 +1357,67 @@ } } } + }, + "oven": { + "name": "Horno", + "state_attributes": { + "preset_mode": { + "name": "Programas", + "state": { + "bakery": "Pasta y Panadería", + "bakery_steam": "Oven steam", + "bottom_heating": "Calentamiento Inferior", + "bottom_heating_fan": "Calentamiento Inferior + Ventilador", + "bread": "Pan", + "bread_steam": "Pan al vapor", + "combi": "Combi", + "convection_fan": "Convección + Ventilador", + "convection_fan_turnspit": "Asador giratorio convencional ventilada", + "conventional": "Convección", + "conventional_turnspit": "Asador giratorio convencional", + "defrost": "Descongelación", + "descaling": "Descalcificación", + "fish": "Pescado", + "fish_steam": "Pescado al vapor", + "grill_cata": "Grill", + "grill_fan_cata": "Grill y ventilador", + "grill_fan_pyro": "Grill + Ventilador", + "grill_pyro": "Grill", + "h20_clean": "H2O-Clean", + "iot_bread": "Pan", + "iot_h20_clean": "h2O clean", + "leavening": "Fermentación", + "low_temp_cooking": "Cocción a baja temperatura", + "low_temp_cooking_fish": "Cocción a baja temperatura Pescado", + "low_temp_cooking_fish_steam": "Cocción a baja temperatura Pescado", + "low_temp_cooking_meat": "Cocción a baja temperatura Carne", + "low_temp_cooking_meat_steam": "Cocción a baja temperatura Carne al vapor", + "low_temp_cooking_steam": "Cocción a baja temperatura al vapor", + "meat": "Carne", + "meat_steam": "Meat steam", + "multi_level": "Múltiples niveles", + "paella": "Paella", + "pasta_and_bakery": "Pasta y Panadería", + "pizza": "Pizza", + "pyrolysis": "Pirólisis", + "pyrolysis_plus": "Pirólisis +", + "red_meat": "Carne roja", + "red_meat_steam": "Carne roja al vapor", + "regenerate": "Regenerar", + "soft_plus": "Soft+", + "super_grill": "Super Grill", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Verduras", + "vegetables_cata": "Verduras", + "vegetables_pyro": "Verdura", + "water_discharge": "Descarga de agua", + "white_meat": "Carne blanca", + "white_meat_steam": "Carne blanca al vapor" + } + } + } } } }, diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index e9a6d70..295e444 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -1357,6 +1357,67 @@ } } } + }, + "oven": { + "name": "Four", + "state_attributes": { + "preset_mode": { + "name": "Programmes", + "state": { + "bakery": "Pâtes et pains", + "bakery_steam": "Four à vapeur", + "bottom_heating": "Sole", + "bottom_heating_fan": "Sole brassée", + "bread": "Pain", + "bread_steam": "Pain àla vapeur", + "combi": "Combi", + "convection_fan": "Chaleur tournante", + "convection_fan_turnspit": "Tournebrocheà convection ventilée", + "conventional": "Convection naturelle", + "conventional_turnspit": "Tournebroche conventionnel", + "defrost": "Décongélation", + "descaling": "Détartrage", + "fish": "Poisson", + "fish_steam": "Poisson à la vapeur", + "grill_cata": "Gril", + "grill_fan_cata": "Turbogril", + "grill_fan_pyro": "Turbogril", + "grill_pyro": "Gril", + "h20_clean": "H2O-Clean", + "iot_bread": "Pain", + "iot_h20_clean": "h2O clean", + "leavening": "Étuve", + "low_temp_cooking": "Cuisson à basse température", + "low_temp_cooking_fish": "Cuisson à basse température Poisson", + "low_temp_cooking_fish_steam": "Cuisson à basse température Poisson à la vapeur", + "low_temp_cooking_meat": "Cuisson à basse température Viande", + "low_temp_cooking_meat_steam": "Cuisson à basse température Viande à la vapeur", + "low_temp_cooking_steam": "Cuisson à basse température à la vapeur", + "meat": "Viande", + "meat_steam": "Viande à la vapeur", + "multi_level": "Chaleur pulsée", + "paella": "Paella", + "pasta_and_bakery": "Pâtes et pains", + "pizza": "Pizza", + "pyrolysis": "Pyrolyse", + "pyrolysis_plus": "Pyrolyse +", + "red_meat": "Viande rouge", + "red_meat_steam": "Viande rouge à la vapeur", + "regenerate": "Régénérer", + "soft_plus": "Soft+", + "super_grill": "Super Gril", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Légumes", + "vegetables_cata": "Légumes", + "vegetables_pyro": "Légumes", + "water_discharge": "Décharge d'eau", + "white_meat": "Viande blanche", + "white_meat_steam": "Viande blanche à la vapeur" + } + } + } } } }, diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index 57754e5..482e079 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -805,6 +805,19 @@ } } } + }, + "oven": { + "name": "Oven", + "state_attributes": { + "preset_mode": { + "name": "Programs", + "state": { + "iot_h20_clean": "h2O clean", + "pizza": "Pizza", + "tailor_bake": "Tailor bake" + } + } + } } } }, diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index 21f0ee6..c8fb4bb 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -1357,6 +1357,67 @@ } } } + }, + "oven": { + "name": "Pećnica", + "state_attributes": { + "preset_mode": { + "name": "Programi", + "state": { + "bakery": "Tjestenina i tijesta", + "bakery_steam": "Para u pećnici", + "bottom_heating": "Donji grijač", + "bottom_heating_fan": "Donji grijač + Ventilator", + "bread": "Kruh", + "bread_steam": "Kruh pečen na pari", + "combi": "Combi", + "convection_fan": "Konvekcija + Ventilator", + "convection_fan_turnspit": "Konvekcija + ventilator + ražanj", + "conventional": "Konvekcijska", + "conventional_turnspit": "Konvekcija + ražanj", + "defrost": "Odmrzavanje", + "descaling": "Uklanjanje kamenca", + "fish": "Riba", + "fish_steam": "Riba na pari", + "grill_cata": "Pečenje", + "grill_fan_cata": "Ventilator za pečenje", + "grill_fan_pyro": "Grijač + ventilator", + "grill_pyro": "Grijač", + "h20_clean": "H2O-Clean", + "iot_bread": "Kruh", + "iot_h20_clean": "h2O clean", + "leavening": "Dizanje tijesta", + "low_temp_cooking": "Kuhanje na niskoj temperaturi", + "low_temp_cooking_fish": "Kuhanje na niskoj temperaturi - riba", + "low_temp_cooking_fish_steam": "Kuhanje na niskoj temperaturi - riba na pari", + "low_temp_cooking_meat": "Kuhanje na niskoj temperaturi - meso", + "low_temp_cooking_meat_steam": "Kuhanje na niskoj temperaturi - meso na pari", + "low_temp_cooking_steam": "Kuhanje na pari i na niskoj temperaturi", + "meat": "Meso", + "meat_steam": "Meso na pari", + "multi_level": "Više razina", + "paella": "Paella", + "pasta_and_bakery": "Tjestenina i tijesta", + "pizza": "Pizza", + "pyrolysis": "Piroliza", + "pyrolysis_plus": "Piroliza +", + "red_meat": "Crveno meso", + "red_meat_steam": "Kuhano crveno meso", + "regenerate": "Regeneracija", + "soft_plus": "Mekano+", + "super_grill": "Super roštilj", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Povrće", + "vegetables_cata": "Povrće", + "vegetables_pyro": "Povrće", + "water_discharge": "Ispuštanje vode", + "white_meat": "Bijelo meso", + "white_meat_steam": "Kuhano bijelo meso na pari" + } + } + } } } }, diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index 566185a..de21a0a 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -1409,6 +1409,67 @@ } } } + }, + "oven": { + "name": "Forno", + "state_attributes": { + "preset_mode": { + "name": "Programmi", + "state": { + "bakery": "Pasta e Pasticceria", + "bakery_steam": "Vapore da forno", + "bottom_heating": "Resistenza Inferiore", + "bottom_heating_fan": "Resistenza Inferiore Ventilata", + "bread": "Pane", + "bread_steam": "Pane al vapore", + "combi": "Combi", + "convection_fan": "Cottura Ventilata", + "convection_fan_turnspit": "Girarrosto a convenzione ventilata", + "conventional": "Statico", + "conventional_turnspit": "Girarrosto a convenzione", + "defrost": "Decongelamento", + "descaling": "Decalcificazione", + "fish": "Pesce", + "fish_steam": "Pesce al vapore", + "grill_cata": "Grill", + "grill_fan_cata": "Grill fan", + "grill_fan_pyro": "Grill Ventilato", + "grill_pyro": "Grill", + "h20_clean": "H2O-Clean", + "iot_bread": "Pane", + "iot_h20_clean": "h2O clean", + "leavening": "Lievitazione", + "low_temp_cooking": "Cottura a bassa temperatura", + "low_temp_cooking_fish": "Cottura a bassa temperatura Pesce", + "low_temp_cooking_fish_steam": "Cottura a bassa temperatura Pesce al vapore", + "low_temp_cooking_meat": "Cottura a bassa temperatura Carne", + "low_temp_cooking_meat_steam": "Cottura a bassa temperatura Carne al vapore", + "low_temp_cooking_steam": "Cottura a bassa temperatura al vapore", + "meat": "Carne", + "meat_steam": "Carne al vapore", + "multi_level": "Cottura Multilivello", + "paella": "Paella", + "pasta_and_bakery": "Pasta e Pasticceria", + "pizza": "Pizza", + "pyrolysis": "Pirolisi", + "pyrolysis_plus": "Pirolisi +", + "red_meat": "Carne rossa", + "red_meat_steam": "Carne rossa al vapore", + "regenerate": "Rigenerare", + "soft_plus": "Soft+", + "super_grill": "Supergriglia", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Verdure", + "vegetables_cata": "Verdure", + "vegetables_pyro": "Verdure", + "water_discharge": "Scarico dell'acqua", + "white_meat": "Carne Bianca", + "white_meat_steam": "Carne bianca al vapore" + } + } + } } } } diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index 4da4450..8ebc602 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -1357,6 +1357,67 @@ } } } + }, + "oven": { + "name": "Oven", + "state_attributes": { + "preset_mode": { + "name": "Programma's", + "state": { + "bakery": "Pasta en bakkersproducten", + "bakery_steam": "Oven stomen", + "bottom_heating": "Bodemverwarming", + "bottom_heating_fan": "Bodemverwarming + Ventilator", + "bread": "Brood", + "bread_steam": "Stoomgebakken brood", + "combi": "Combi", + "convection_fan": "Met ventilator", + "convection_fan_turnspit": "Convectie + ventilator + draaispit", + "conventional": "Conventioneel", + "conventional_turnspit": "Convectie + draaispit", + "defrost": "Ontdooien", + "descaling": "Ontkalken", + "fish": "Vis", + "fish_steam": "Gestoomde vis", + "grill_cata": "Grill", + "grill_fan_cata": "Grill + ventilator", + "grill_fan_pyro": "Grill + ventilator", + "grill_pyro": "Grill", + "h20_clean": "H2O-Clean", + "iot_bread": "Brood", + "iot_h20_clean": "h2O clean", + "leavening": "Gisting", + "low_temp_cooking": "Bereiding op lage temperatuur", + "low_temp_cooking_fish": "Bereiding op lage temperatuur – Vis", + "low_temp_cooking_fish_steam": "Bereiding op lage temperatuur – Gestoomde vis", + "low_temp_cooking_meat": "Bereiding op lage temperatuur – Vlees", + "low_temp_cooking_meat_steam": "Bereiding op lage temperatuur – Gestoomd vlees", + "low_temp_cooking_steam": "Stomen bij lage temperatuur", + "meat": "Vlees", + "meat_steam": "Vlees stomen", + "multi_level": "Multi-level", + "paella": "Paella", + "pasta_and_bakery": "Pasta en bakkersproducten", + "pizza": "Pizza", + "pyrolysis": "Pyrolyse", + "pyrolysis_plus": "Pyrolyse +", + "red_meat": "Rood vlees", + "red_meat_steam": "Gestoomd rood vlees", + "regenerate": "Regenereren", + "soft_plus": "Soft+", + "super_grill": "Super grill", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Groenten", + "vegetables_cata": "Groenten", + "vegetables_pyro": "Groenten", + "water_discharge": "Afvoer van water", + "white_meat": "Wit vlees", + "white_meat_steam": "Gestoomd wit vlees" + } + } + } } } }, diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index d567c16..907c3dc 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -1357,6 +1357,67 @@ } } } + }, + "oven": { + "name": "Piekarnik", + "state_attributes": { + "preset_mode": { + "name": "Programy", + "state": { + "bakery": "Makaron i Piekarnia", + "bakery_steam": "Para z piekarnika", + "bottom_heating": "Grzanie dolne", + "bottom_heating_fan": "Grzanie Dolne + Termoobieg", + "bread": "Chleb", + "bread_steam": "Chleb pieczony na parze", + "combi": "Kombi", + "convection_fan": "Termoobieg", + "convection_fan_turnspit": "Termoobieg + Fan + Rożen", + "conventional": "Konwencjonalny", + "conventional_turnspit": "Statyczny + Rożen", + "defrost": "Rozmrażanie", + "descaling": "Odkamienianie", + "fish": "Ryby", + "fish_steam": "Ryba na parze", + "grill_cata": "Grill", + "grill_fan_cata": "Grill + termoobieg", + "grill_fan_pyro": "Grill + termoobieg", + "grill_pyro": "Grill", + "h20_clean": "H2O-Clean", + "iot_bread": "Chleb", + "iot_h20_clean": "h2O clean", + "leavening": "Zaczyn", + "low_temp_cooking": "Pieczenie w niskiej temperaturze", + "low_temp_cooking_fish": "Pieczenie w niskiej temperaturze - ryby", + "low_temp_cooking_fish_steam": "Gotowanie w niskiej temperaturze - ryba gotowana na parze", + "low_temp_cooking_meat": "Pieczenie w niskiej temperaturze - mięso", + "low_temp_cooking_meat_steam": "Gotowanie w niskiej temperaturze — mięso gotowane na parze", + "low_temp_cooking_steam": "Gotowanie na parze w niskiej temperaturze", + "meat": "Mięso", + "meat_steam": "Mięso na parze", + "multi_level": "Wielopoziomowo", + "paella": "Paella", + "pasta_and_bakery": "Makaron i Piekarnia", + "pizza": "Pizza", + "pyrolysis": "Pyroliza", + "pyrolysis_plus": "Pyroliza +", + "red_meat": "Czerwone mięso", + "red_meat_steam": "Czerwone mięso na parze", + "regenerate": "Podgrzewanie", + "soft_plus": "Soft+", + "super_grill": "Super Grill", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor bake", + "tailor_bake_pyro": "Tailor bake", + "vegetables": "Warzywa", + "vegetables_cata": "Warzywa", + "vegetables_pyro": "Warzywa", + "water_discharge": "Odprowadzanie wody", + "white_meat": "Białe mięso", + "white_meat_steam": "Białe mięso gotowane na parze" + } + } + } } } }, diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index c0194a8..e551803 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -1357,6 +1357,67 @@ } } } + }, + "oven": { + "name": "Forno", + "state_attributes": { + "preset_mode": { + "name": "Programas", + "state": { + "bakery": "Massas e bolos", + "bakery_steam": "Vapor do forno", + "bottom_heating": "Aquecimento inferior", + "bottom_heating_fan": "Aquecimento Inferior + Ventilação", + "bread": "Pão", + "bread_steam": "Pão no vapor", + "combi": "Combi", + "convection_fan": "Convecção + Ventilador", + "convection_fan_turnspit": "Espeto com convecção ventilada", + "conventional": "Estático", + "conventional_turnspit": "Espeto convencional", + "defrost": "Descongelar", + "descaling": "Descalcificação", + "fish": "Peixe", + "fish_steam": "Peixe no vapor", + "grill_cata": "Grelhar", + "grill_fan_cata": "Grelhar com ventilação", + "grill_fan_pyro": "Grelhar + Ventilação", + "grill_pyro": "Grelhar", + "h20_clean": "H2O-Clean", + "iot_bread": "Pão", + "iot_h20_clean": "h2O clean", + "leavening": "Levedação", + "low_temp_cooking": "Cozimento em baixa temperatura", + "low_temp_cooking_fish": "Cozimento em baixa temperatura Peixe", + "low_temp_cooking_fish_steam": "Cozimento em baixa temperatura Peixe a vapor", + "low_temp_cooking_meat": "Cozimento em baixa temperatura Carne", + "low_temp_cooking_meat_steam": "Cozimento em baixa temperatura Carne no vapor", + "low_temp_cooking_steam": "Cozimento em baixa temperatura no vapor", + "meat": "Carne", + "meat_steam": "Vapor de carne", + "multi_level": "Multinível", + "paella": "Paella", + "pasta_and_bakery": "Massas e bolos", + "pizza": "Pizza", + "pyrolysis": "Pirólise", + "pyrolysis_plus": "Pirólise +", + "red_meat": "Carne Vermelha", + "red_meat_steam": "Carne Vermelha no vapor", + "regenerate": "Regenerar", + "soft_plus": "Soft+", + "super_grill": "Super Grelhador", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Vegetais", + "vegetables_cata": "Legumes", + "vegetables_pyro": "Legumes", + "water_discharge": "Descarga d'água", + "white_meat": "Carne Branca", + "white_meat_steam": "Carne Branca no vapor" + } + } + } } } }, diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index 2013abf..4973c91 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -1357,6 +1357,67 @@ } } } + }, + "oven": { + "name": "Cuptor", + "state_attributes": { + "preset_mode": { + "name": "Programe", + "state": { + "bakery": "Paste și produse de patiserie", + "bakery_steam": "În cuptor la abur", + "bottom_heating": "Încălzire de jos", + "bottom_heating_fan": "Încălzire De Jos + Ventilație", + "bread": "Pâine", + "bread_steam": "Pâine gătită la abur", + "combi": "Combi", + "convection_fan": "Convecție și ventilație", + "convection_fan_turnspit": "Convecție + Ventilator + Rotisor", + "conventional": "Convențional", + "conventional_turnspit": "Convecție + Rotisor", + "defrost": "Decongelare", + "descaling": "Îndepărtarea calcarului", + "fish": "Pește", + "fish_steam": "Pește gătit la abur", + "grill_cata": "Gril", + "grill_fan_cata": "Grill + Ventilație", + "grill_fan_pyro": "Grill + Ventilație", + "grill_pyro": "Grill", + "h20_clean": "H2O-Clean", + "iot_bread": "Pâine", + "iot_h20_clean": "h2O clean", + "leavening": "Dospire", + "low_temp_cooking": "Gătire la temperatură scăzută", + "low_temp_cooking_fish": "Gătire la temperatură scăzută - Pește", + "low_temp_cooking_fish_steam": "Gătitul la temperaturi scăzute - Pește gătit la abur", + "low_temp_cooking_meat": "Gătire la temperatură scăzută - Carne", + "low_temp_cooking_meat_steam": "Gătitul la temperaturi scăzute - Carne gătită la abur", + "low_temp_cooking_steam": "Gătitul la abur la temperaturi scăzute", + "meat": "Carne", + "meat_steam": "Carne gătită la abur", + "multi_level": "Multi-Nivel", + "paella": "Paella", + "pasta_and_bakery": "Paste și patiserie", + "pizza": "Pizza", + "pyrolysis": "Piroliză", + "pyrolysis_plus": "Piroliză+", + "red_meat": "Carne roșie", + "red_meat_steam": "Carne roșie gătită la abur", + "regenerate": "Regenerare", + "soft_plus": "Soft+", + "super_grill": "Super Grill", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Legume", + "vegetables_cata": "Legume", + "vegetables_pyro": "Legume", + "water_discharge": "Evacuare apă", + "white_meat": "Carne albă", + "white_meat_steam": "Carne albă gătită la abur" + } + } + } } } }, diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index 9a9b6e0..7ea0195 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -1357,6 +1357,67 @@ } } } + }, + "oven": { + "name": "Духовой шкаф", + "state_attributes": { + "preset_mode": { + "name": "Программы", + "state": { + "bakery": "Паста и выпечка", + "bakery_steam": "Пар в духовом шкафу", + "bottom_heating": "Нижний элемент", + "bottom_heating_fan": "Нижний элемент + вентилятор", + "bread": "Хлеб", + "bread_steam": "Хлеб, испеченный на пару", + "combi": "Combi", + "convection_fan": "Верхний и нижний нагрев с вентилятором", + "convection_fan_turnspit": "Обыкновенная духовка + вентилятор + вертел", + "conventional": "Верхний и нижний нагрев", + "conventional_turnspit": "Обыкновенная духовка + вентилятор", + "defrost": "Размораживание", + "descaling": "Удаление накипи", + "fish": "Рыба", + "fish_steam": "Рыба на пару", + "grill_cata": "Гриль", + "grill_fan_cata": "Гриль с вентилятором", + "grill_fan_pyro": "Гриль + вентилятор", + "grill_pyro": "Гриль", + "h20_clean": "H2O-Clean", + "iot_bread": "Хлеб", + "iot_h20_clean": "h2O clean", + "leavening": "Заквашивание", + "low_temp_cooking": "Приготовление при низкой температуре", + "low_temp_cooking_fish": "Приготовление при низкой температуре - Рыба", + "low_temp_cooking_fish_steam": "Приготовление при низкой температуре - Рыба на пару", + "low_temp_cooking_meat": "Приготовление при низкой температуре - Мясо", + "low_temp_cooking_meat_steam": "Приготовление при низкой температуре - Мясо на пару", + "low_temp_cooking_steam": "Приготовление при низкой температуре на пару", + "meat": "Мясо", + "meat_steam": "Мясо на пару", + "multi_level": "Многоуровневое приготовление", + "paella": "Paella", + "pasta_and_bakery": "Паста и выпечка", + "pizza": "Pizza", + "pyrolysis": "Пиролиз", + "pyrolysis_plus": "Пиролиз +", + "red_meat": "Красное мясо", + "red_meat_steam": "Красное мясо на пару", + "regenerate": "Регенерация", + "soft_plus": "Soft+", + "super_grill": "Супер-гриль", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Овощи", + "vegetables_cata": "Овощи", + "vegetables_pyro": "Овощи", + "water_discharge": "Слив воды", + "white_meat": "Белое мясо", + "white_meat_steam": "Белое мясо на пару" + } + } + } } } }, diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index d5c98b3..b94883c 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -1357,6 +1357,67 @@ } } } + }, + "oven": { + "name": "Rúra na pečenie", + "state_attributes": { + "preset_mode": { + "name": "Programy", + "state": { + "bakery": "Cestoviny a pečenie", + "bakery_steam": "Parná rúra", + "bottom_heating": "Spodný ohrev", + "bottom_heating_fan": "Spodný ohrev + Ventilátor", + "bread": "Chlieb", + "bread_steam": "Chlieb pečený v pare", + "combi": "Combi", + "convection_fan": "Statický + ventilátor", + "convection_fan_turnspit": "Statické + ventilátor + otočný ražeň", + "conventional": "Statický", + "conventional_turnspit": "Statické + otočný ražeň", + "defrost": "Rozmraziť", + "descaling": "Odstránenie vodného kameňa", + "fish": "Ryby", + "fish_steam": "Ryby pripravené v pare", + "grill_cata": "Gril", + "grill_fan_cata": "Gril + ventilátor", + "grill_fan_pyro": "Gril + ventilátor", + "grill_pyro": "Gril", + "h20_clean": "H2O-Clean", + "iot_bread": "Chlieb", + "iot_h20_clean": "h2O clean", + "leavening": "Kysnutie", + "low_temp_cooking": "Varenie pri nízkych teplotách", + "low_temp_cooking_fish": "Varenie pri nízkych teplotách – Ryby", + "low_temp_cooking_fish_steam": "Varenie pri nízkych teplotách – ryby pripravené v pare", + "low_temp_cooking_meat": "Varenie pri nízkych teplotách – Mäso", + "low_temp_cooking_meat_steam": "Varenie pri nízkych teplotách - mäso dusené v pare", + "low_temp_cooking_steam": "Varenie pri nízkych teplotách v pare", + "meat": "Mäso", + "meat_steam": "Mäso v pare", + "multi_level": "Viacúrovňové", + "paella": "Paella", + "pasta_and_bakery": "Cestoviny a pečenie", + "pizza": "Pizza", + "pyrolysis": "Pyrolýza", + "pyrolysis_plus": "Pyrolýza +", + "red_meat": "Červené mäso", + "red_meat_steam": "Červené mäso dusené v pare", + "regenerate": "Regenerovať", + "soft_plus": "Soft+", + "super_grill": "Super Gril", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Zelenina", + "vegetables_cata": "Zelenina", + "vegetables_pyro": "Zelenina", + "water_discharge": "Vypúšťanie vody", + "white_meat": "Biele mäso", + "white_meat_steam": "Biele mäso pripravené v pare" + } + } + } } } }, diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index d8837bf..fde0ce7 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -1357,6 +1357,67 @@ } } } + }, + "oven": { + "name": "Pečica", + "state_attributes": { + "preset_mode": { + "name": "Programi", + "state": { + "bakery": "Testenine in pekovski izdelki", + "bakery_steam": "Parna pečica", + "bottom_heating": "Spodnji grelnik", + "bottom_heating_fan": "Spodnji grelnik + Ventilator", + "bread": "Kruh", + "bread_steam": "V sopari pečen kruh", + "combi": "Kombinirano", + "convection_fan": "Konvekcija + ventilator", + "convection_fan_turnspit": "Konvekcija + ventilator + raženj", + "conventional": "Konvenkcijsko", + "conventional_turnspit": "Konvekcija + raženj", + "defrost": "Odmrzovanje", + "descaling": "Odstranjevanje vodnega kamna", + "fish": "Ribe", + "fish_steam": "Soparjene ribe", + "grill_cata": "Žar", + "grill_fan_cata": "Žar in ventilator", + "grill_fan_pyro": "Žar + ventilator", + "grill_pyro": "Žar", + "h20_clean": "H2O-Clean", + "iot_bread": "Kruh", + "iot_h20_clean": "h2O clean", + "leavening": "Vzhajanje", + "low_temp_cooking": "Kuhanje pri nizki temperaturi", + "low_temp_cooking_fish": "Kuhanje pri nizki temperaturi – ribe", + "low_temp_cooking_fish_steam": "Kuhanje pri nizki temperaturi – soparjene ribe", + "low_temp_cooking_meat": "Kuhanje pri nizki temperaturi – meso", + "low_temp_cooking_meat_steam": "Kuhanje pri nizki temperaturi – soparjeno meso", + "low_temp_cooking_steam": "Soparjenje pri nizki temperaturi", + "meat": "Meso", + "meat_steam": "Soparjenje mesa", + "multi_level": "Na več nivojih", + "paella": "Paella", + "pasta_and_bakery": "Testenine in pekovski izdelki", + "pizza": "Pizza", + "pyrolysis": "Piroliza", + "pyrolysis_plus": "Piroliza +", + "red_meat": "Rdeče meso", + "red_meat_steam": "Soparjeno rdeče meso", + "regenerate": "Regeneracija", + "soft_plus": "Soft+", + "super_grill": "Super Grill", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Zelenjava", + "vegetables_cata": "Zelenjava", + "vegetables_pyro": "Zelenjava", + "water_discharge": "Izpust vode", + "white_meat": "Belo meso", + "white_meat_steam": "Soparjeno belo meso" + } + } + } } } }, diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index c33a825..09670fc 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -1357,6 +1357,67 @@ } } } + }, + "oven": { + "name": "Rerna", + "state_attributes": { + "preset_mode": { + "name": "Programi", + "state": { + "bakery": "Testenine i pecivo", + "bakery_steam": "Priprema na pari u rerni", + "bottom_heating": "Donje grejanje", + "bottom_heating_fan": "Donje grejanje + Ventilator", + "bread": "Hleb", + "bread_steam": "Hleb pečen na pari", + "combi": "Kombinovani", + "convection_fan": "Konvekcija + ventilator", + "convection_fan_turnspit": "Konvekcija + ventilator + ražanj", + "conventional": "Konvekcija", + "conventional_turnspit": "Konvekcija + ražanj", + "defrost": "Odmrzavanje", + "descaling": "Uklanjanje kamenca", + "fish": "Riba", + "fish_steam": "Riba na pari", + "grill_cata": "Roštilj", + "grill_fan_cata": "Roštilj sa ventilatorom", + "grill_fan_pyro": "Gril + ventilator", + "grill_pyro": "Gril", + "h20_clean": "H2O-Clean", + "iot_bread": "Hleb", + "iot_h20_clean": "h2O clean", + "leavening": "Narastanje", + "low_temp_cooking": "Kuvanje na niskoj temperaturi", + "low_temp_cooking_fish": "Kuvanje na niskoj temperaturi – riba", + "low_temp_cooking_fish_steam": "Kuvanje na niskoj temperaturi – riba na pari", + "low_temp_cooking_meat": "Kuvanje na niskoj temperaturi – meso", + "low_temp_cooking_meat_steam": "Kuvanje na niskoj temperaturi – meso na pari", + "low_temp_cooking_steam": "Kuvanje na pari na niskoj temperaturi", + "meat": "Meso", + "meat_steam": "Priprema mesa na pari", + "multi_level": "Više nivoa", + "paella": "Paella", + "pasta_and_bakery": "Testenine i pecivo", + "pizza": "Pizza", + "pyrolysis": "Piroliza", + "pyrolysis_plus": "Piroliza +", + "red_meat": "Crveno meso", + "red_meat_steam": "Crveno meso na pari", + "regenerate": "Regeneracija", + "soft_plus": "Meko+", + "super_grill": "Super gril", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Povrće", + "vegetables_cata": "Povrće", + "vegetables_pyro": "Povrće", + "water_discharge": "Ispuštanje vode", + "white_meat": "Belo meso", + "white_meat_steam": "Belo meso na pari" + } + } + } } } }, diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index 62e9eff..32dcbfa 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -1357,6 +1357,67 @@ } } } + }, + "oven": { + "name": "Fırın", + "state_attributes": { + "preset_mode": { + "name": "Programlar", + "state": { + "bakery": "Makarna ve Ekmek", + "bakery_steam": "Fırın buharı", + "bottom_heating": "Alt ısıtıcı", + "bottom_heating_fan": "Alt ısıtıcı + Fan", + "bread": "Ekmek", + "bread_steam": "Buharda pişmiş ekmek", + "combi": "Kombi", + "convection_fan": "Fan desteklı", + "convection_fan_turnspit": "Konveksiyon + Fan + Şiş Çevirme", + "conventional": "Statık", + "conventional_turnspit": "Konveksiyon + Şiş Çevirme", + "defrost": "Buz çözme", + "descaling": "Kireç çözme", + "fish": "Balık", + "fish_steam": "Balık buğulama", + "grill_cata": "Izgara", + "grill_fan_cata": "Izgara fan", + "grill_fan_pyro": "Izgara + Fan", + "grill_pyro": "Izgara", + "h20_clean": "H2O-Clean", + "iot_bread": "Ekmek", + "iot_h20_clean": "h2O clean", + "leavening": "Mayalama", + "low_temp_cooking": "Düşük Sıcaklıkta Pişirme", + "low_temp_cooking_fish": "Düşük Sıcaklıkta Pişirme - Balık", + "low_temp_cooking_fish_steam": "Düşük Isıda Pişirme - Balık buğulama", + "low_temp_cooking_meat": "Düşük Sıcaklıkta Pişirme - Et", + "low_temp_cooking_meat_steam": "Düşük Isıda Pişirme - Buharda et", + "low_temp_cooking_steam": "Düşük Sıcaklıkta Buharda Pişirme", + "meat": "Et", + "meat_steam": "Et buharı", + "multi_level": "Çok Seviyeli", + "paella": "Paella", + "pasta_and_bakery": "Makarna ve Ekmek", + "pizza": "Pizza", + "pyrolysis": "Piroliz", + "pyrolysis_plus": "Piroliz +", + "red_meat": "Kırmızı Et", + "red_meat_steam": "Buharda kırmızı et", + "regenerate": "Yeniden oluştur", + "soft_plus": "Yumuşak+", + "super_grill": "Süper Izgara", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Sebzeler", + "vegetables_cata": "Sebzeler", + "vegetables_pyro": "Sebzeler", + "water_discharge": "Su Tahliyesi", + "white_meat": "Beyaz Et", + "white_meat_steam": "Buharda beyaz et" + } + } + } } } }, diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index 4dd374e..90069c9 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -1357,6 +1357,67 @@ } } } + }, + "oven": { + "name": "烤炉", + "state_attributes": { + "preset_mode": { + "name": "程序", + "state": { + "bakery": "意大利面和烘焙食品", + "bakery_steam": "烤炉蒸汽", + "bottom_heating": "底部加热 ", + "bottom_heating_fan": "底部加热 + 风扇", + "bread": "面包", + "bread_steam": "蒸烤的面包", + "combi": "Combi", + "convection_fan": "对流 + 风扇", + "convection_fan_turnspit": "对流 + 风扇 + 烤叉", + "conventional": "对流", + "conventional_turnspit": "对流 + 烤叉", + "defrost": "解冻", + "descaling": "除垢", + "fish": "鱼", + "fish_steam": "蒸鱼", + "grill_cata": "烤架", + "grill_fan_cata": "烤架风扇", + "grill_fan_pyro": "烤架 + 风扇", + "grill_pyro": "烤架", + "h20_clean": "H2O-Clean", + "iot_bread": "面包", + "iot_h20_clean": "h2O clean", + "leavening": "发酵", + "low_temp_cooking": "低温烹饪", + "low_temp_cooking_fish": "低温烹饪 - 鱼类", + "low_temp_cooking_fish_steam": "低温烹饪 - 蒸鱼", + "low_temp_cooking_meat": "低温烹饪 - 肉类", + "low_temp_cooking_meat_steam": "低温烹饪 - 蒸肉", + "low_temp_cooking_steam": "低温蒸汽烹饪", + "meat": "肉", + "meat_steam": "肉类蒸汽", + "multi_level": "多层", + "paella": "Paella", + "pasta_and_bakery": "意大利面和烘焙食品", + "pizza": "Pizza", + "pyrolysis": "热解", + "pyrolysis_plus": "热解 +", + "red_meat": "红肉", + "red_meat_steam": "蒸红肉", + "regenerate": "再加热", + "soft_plus": "软+", + "super_grill": "超级烤架", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "蔬菜", + "vegetables_cata": "蔬菜", + "vegetables_pyro": "蔬菜", + "water_discharge": "排水", + "white_meat": "白肉", + "white_meat_steam": "蒸白肉" + } + } + } } } }, diff --git a/scripts/generate_translation.py b/scripts/generate_translation.py index c437420..6a57d05 100755 --- a/scripts/generate_translation.py +++ b/scripts/generate_translation.py @@ -66,6 +66,12 @@ CLIMATE = { }, } }, + "oven": { + "preset_mode": { + "name": "OV.TABS.PROGRAMS_TITLE", + "state": "PROGRAMS.OV", + } + }, } NAMES = { @@ -225,6 +231,7 @@ NAMES = { "air_conditioner": "GLOBALS.APPLIANCES_NAME.AC", "fridge": "REF.ZONES.FRIDGE", "freezer": "REF.ZONES.FREEZER", + "oven": "GLOBALS.APPLIANCES_NAME.OV", }, } @@ -332,9 +339,13 @@ def main(): for mode, data in modes.items(): mode_name = load_key(data["name"], original, fallback) attr.setdefault(mode, {})["name"] = mode_name - for state, key in data["state"].items(): - mode_state = load_key(key, original, fallback) - attr[mode].setdefault("state", {})[state] = mode_state + if isinstance(data["state"], dict): + for state, key in data["state"].items(): + mode_state = load_key(key, original, fallback) + attr[mode].setdefault("state", {})[state] = mode_state + else: + attr[mode]["state"] = load_keys(data["state"], original) + translate_login(old, original, fallback) save_json(base_path / f"{language}.json", old) -- 2.39.5 From 2fe8ace9f5d724126be29522c9202a59016471b2 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 29 May 2023 19:07:52 +0200 Subject: [PATCH 115/205] Add program name sensor --- README.md | 10 +- custom_components/hon/const.py | 136 +--- custom_components/hon/manifest.json | 4 +- custom_components/hon/sensor.py | 47 +- custom_components/hon/translations/cs.json | 568 +++++++++++++- custom_components/hon/translations/de.json | 568 +++++++++++++- custom_components/hon/translations/el.json | 568 +++++++++++++- custom_components/hon/translations/en.json | 828 +++++++++++++++++---- custom_components/hon/translations/es.json | 568 +++++++++++++- custom_components/hon/translations/fr.json | 568 +++++++++++++- custom_components/hon/translations/he.json | 254 ++++++- custom_components/hon/translations/hr.json | 568 +++++++++++++- custom_components/hon/translations/it.json | 568 +++++++++++++- custom_components/hon/translations/nl.json | 568 +++++++++++++- custom_components/hon/translations/pl.json | 568 +++++++++++++- custom_components/hon/translations/pt.json | 568 +++++++++++++- custom_components/hon/translations/ro.json | 568 +++++++++++++- custom_components/hon/translations/ru.json | 568 +++++++++++++- custom_components/hon/translations/sk.json | 568 +++++++++++++- custom_components/hon/translations/sl.json | 568 +++++++++++++- custom_components/hon/translations/sr.json | 568 +++++++++++++- custom_components/hon/translations/tr.json | 568 +++++++++++++- custom_components/hon/translations/zh.json | 568 +++++++++++++- info.md | 1 + scripts/generate_translation.py | 15 + 25 files changed, 10610 insertions(+), 341 deletions(-) diff --git a/README.md b/README.md index 62cff86..df10313 100644 --- a/README.md +++ b/README.md @@ -73,6 +73,7 @@ Support has been confirmed for these models, but many more will work. Please add - Haier XIB 3B2SFS-80 - Haier XIB 6B2D3FB - Candy BCTDH7A1TE +- Candy CCE4T620EWU - Candy CIS633SCTTWIFI - Candy CSOE C10DE-80 - Candy ROE H9A3TCEX-S @@ -182,6 +183,7 @@ For every device exists a hidden button which can be used to log all infos of yo | Indoor Temperature | `thermometer` | `sensor` | `tempIndoor` | | Outdoor Temperature | `thermometer` | `sensor` | `tempOutdoor` | | Program | | `select` | `startProgram.program` | +| Program | `play` | `sensor` | `programName` | | Selected Temperature | `thermometer` | `sensor` | `tempSel` | ### Dish washer @@ -217,6 +219,7 @@ For every device exists a hidden button which can be used to log all infos of yo | Door | | `binary_sensor` | `doorStatus` | | Error | `math-log` | `sensor` | `errors` | | Machine Status | `information` | `sensor` | `machMode` | +| Program | `play` | `sensor` | `programName` | | Program Phase | `washing-machine` | `sensor` | `prPhase` | | Remaining Time | `timer` | `sensor` | `remainingTimeMM` | | Rinse Aid | `spray-bottle` | `binary_sensor` | `rinseAidStatus` | @@ -243,6 +246,7 @@ For every device exists a hidden button which can be used to log all infos of yo | On | `power-cycle` | `binary_sensor` | `attributes.parameters.onOffStatus` | | Pan Status | `pot-mix` | `binary_sensor` | `panStatus` | | Power | `lightning-bolt` | `sensor` | `power` | +| Program | `play` | `sensor` | `programName` | | Remaining Time | `timer` | `sensor` | `remainingTimeMM` | | Temperature | `thermometer` | `sensor` | `temp` | @@ -265,6 +269,7 @@ For every device exists a hidden button which can be used to log all infos of yo | --- | --- | --- | --- | | Connection | `wifi` | `binary_sensor` | `attributes.lastConnEvent.category` | | On | `power-cycle` | `binary_sensor` | `attributes.parameters.onOffStatus` | +| Program | `play` | `sensor` | `programName` | | Remaining Time | `timer` | `sensor` | `remainingTimeMM` | | Start Time | `clock-start` | `sensor` | `delayTime` | | Temperature | `thermometer` | `sensor` | `temp` | @@ -335,7 +340,7 @@ For every device exists a hidden button which can be used to log all infos of yo | Dry level | `hair-dryer` | `sensor` | `dryLevel` | | Error | `math-log` | `sensor` | `errors` | | Machine Status | `information` | `sensor` | `machMode` | -| Program | `tumble-dryer` | `sensor` | `programName` | +| Program | `play` | `sensor` | `programName` | | Program Phase | `washing-machine` | `sensor` | `prPhase` | | Remaining Time | `timer` | `sensor` | `remainingTimeMM` | | Start Time | `clock-start` | `sensor` | `delayTime` | @@ -405,7 +410,7 @@ For every device exists a hidden button which can be used to log all infos of yo | Good Night Mode | | `binary_sensor` | `goodNight` | | Machine Status | `information` | `sensor` | `machMode` | | Pre Wash | | `binary_sensor` | `startProgram.prewash` | -| Program | `tumble-dryer` | `sensor` | `programName` | +| Program | `play` | `sensor` | `programName` | | Program Phase | `washing-machine` | `sensor` | `prPhase` | | Remaining Time | `timer` | `sensor` | `remainingTimeMM` | | Remote Control | `remote` | `binary_sensor` | `attributes.lastConnEvent.category` | @@ -468,6 +473,7 @@ For every device exists a hidden button which can be used to log all infos of yo | Good Night Mode | | `binary_sensor` | `goodNight` | | Machine Status | `information` | `sensor` | `machMode` | | Pre Wash | | `binary_sensor` | `startProgram.prewash` | +| Program | `play` | `sensor` | `programName` | | Program Phase | `washing-machine` | `sensor` | `prPhase` | | Remaining Time | `timer` | `sensor` | `remainingTimeMM` | | Remote Control | `remote` | `binary_sensor` | `attributes.lastConnEvent.category` | diff --git a/custom_components/hon/const.py b/custom_components/hon/const.py index fb93850..7ee030e 100644 --- a/custom_components/hon/const.py +++ b/custom_components/hon/const.py @@ -111,6 +111,7 @@ TUMBLE_DRYER_PR_PHASE = { "2": "WASHING_CMD&CTRL.PHASE_DRYING.TITLE", "3": "TD_CMD&CTRL.STATUS_PHASE.PHASE_COOLDOWN", "11": "WASHING_CMD&CTRL.PHASE_READY.TITLE", + "12": "unkown", "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", @@ -186,138 +187,3 @@ REF_ZONES = { "vtroom1": "REF.ZONES.MY_ZONE_1", "fridge_freezer": ["REF.ZONES.FRIDGE", " & ", "REF.ZONES.FREEZER"], } - -PROGRAMS_TD = [ - "active_dry", - "allergy_care", - "all_in_one", - "antiallergy", - "anti_odours", - "auto_care", - "baby", - "bed_quilt", - "care_30", - "care_45", - "care_59", - "coloured", - "daily_45_min", - "daily_perfect_59_min", - "darks_and_coloured", - "delicates", - "duvet", - "eco", - "ecospeed_cottons", - "ecospeed_delicates", - "ecospeed_mixed", - "extra_hygiene", - "fitness", - "fresh_care", - "genius", - "hqd_baby_care", - "hqd_bath_towel", - "hqd_bed_sheets", - "hqd_bulky", - "hqd_casual", - "hqd_cold_wind_30", - "hqd_cold_wind_timing", - "hqd_cotton", - "hqd_curtain", - "hqd_delicate", - "hqd_diaper", - "hqd_duvet", - "hqd_feather", - "hqd_hot_wind_timing", - "hqd_hygienic", - "hqd_i_refresh", - "hqd_i_refresh_pro", - "hqd_jacket", - "hqd_jeans", - "hqd_luxury", - "hqd_mix", - "hqd_night_dry", - "hqd_outdoor", - "hqd_precious_cure", - "hqd_quick_20", - "hqd_quick_30", - "hqd_quick_dry", - "hqd_quilt", - "hqd_refresh", - "hqd_school_uniform", - "hqd_shirt", - "hqd_shoes", - "hqd_silk", - "hqd_sports", - "hqd_synthetics", - "hqd_timer", - "hqd_towel", - "hqd_underwear", - "hqd_warm_up", - "hqd_wool", - "hqd_working_suit", - "hygiene", - "iot_checkup", - "iot_dry_anti_mites", - "iot_dry_baby", - "iot_dry_backpacks", - "iot_dry_bathrobe", - "iot_dry_bed_linen", - "iot_dry_bed_quilt", - "iot_dry_cotton", - "iot_dry_cuddly_toys", - "iot_dry_curtains", - "iot_dry_dehumidifier", - "iot_dry_delicates", - "iot_dry_delicate_tablecloths", - "iot_dry_denim_jeans", - "iot_dry_down_jacket", - "iot_dry_duvet", - "iot_dry_easy_iron_cotton", - "iot_dry_easy_iron_synthetics", - "iot_dry_gym_fit", - "iot_dry_lingerie", - "iot_dry_mixed", - "iot_dry_playsuits", - "iot_dry_rapid_30", - "iot_dry_rapid_59", - "iot_dry_refresh", - "iot_dry_regenerates_waterproof", - "iot_dry_relax_creases", - "iot_dry_shirts", - "iot_dry_small_load", - "iot_dry_swimsuits_and_bikinis", - "iot_dry_synthetics", - "iot_dry_synthetic_dry", - "iot_dry_tablecloths", - "iot_dry_technical_fabrics", - "iot_dry_warm_embrace", - "iot_dry_wool", - "jeans", - "mix_and_dry", - "pets", - "pre_iron", - "rapid_30", - "rapid_45", - "rapid_59", - "refresh", - "relax_creases", - "saving_30_min", - "shirts", - "shoes", - "small_load", - "soft_care", - "sport_plus", - "super_easy_iron_misti", - "super_easy_iron_xxl", - "super_fast_cottons", - "super_fast_delicates", - "synthetics", - "total_care", - "trainers", - "ultra_care", - "waterproof_revitalize", - "whites", - "wool", - "woolmark", - "xxl_load", - "zoom_59", -] diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 23f62da..eb9460c 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -9,7 +9,7 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": [ - "pyhOn==0.11.3" + "pyhOn==0.12.0" ], - "version": "0.8.0-beta.7" + "version": "0.8.0-beta.8" } diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 838cde1..3ec086f 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -1,6 +1,8 @@ import logging from dataclasses import dataclass +from pyhon.appliance import HonAppliance + from homeassistant.components.sensor import ( SensorEntity, SensorDeviceClass, @@ -171,6 +173,13 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { native_unit_of_measurement=UnitOfTemperature.CELSIUS, translation_key="temperature", ), + HonSensorEntityDescription( + key="programName", + name="Program", + icon="mdi:play", + device_class=SensorDeviceClass.ENUM, + translation_key="programs_wm", + ), ), "TD": ( HonSensorEntityDescription( @@ -203,10 +212,9 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { HonSensorEntityDescription( key="programName", name="Program", - icon="mdi:tumble-dryer", + icon="mdi:play", device_class=SensorDeviceClass.ENUM, translation_key="programs_td", - options=const.PROGRAMS_TD, ), HonSensorEntityDescription( key="prPhase", @@ -291,6 +299,13 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:thermometer", translation_key="target_temperature", ), + HonSensorEntityDescription( + key="programName", + name="Program", + icon="mdi:play", + device_class=SensorDeviceClass.ENUM, + translation_key="programs_ov", + ), ), "IH": ( HonSensorEntityDescription( @@ -318,6 +333,13 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { state_class=SensorStateClass.MEASUREMENT, translation_key="power", ), + HonSensorEntityDescription( + key="programName", + name="Program", + icon="mdi:play", + device_class=SensorDeviceClass.ENUM, + translation_key="programs_ih", + ), ), "DW": ( HonConfigSensorEntityDescription( @@ -391,6 +413,13 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { translation_key="program_phases_dw", options=list(const.DISHWASHER_PR_PHASE), ), + HonSensorEntityDescription( + key="programName", + name="Program", + icon="mdi:play", + device_class=SensorDeviceClass.ENUM, + translation_key="programs_dw", + ), ), "AC": ( HonSensorEntityDescription( @@ -457,6 +486,13 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { device_class=SensorDeviceClass.TEMPERATURE, native_unit_of_measurement=UnitOfTemperature.CELSIUS, ), + HonSensorEntityDescription( + key="programName", + name="Program", + icon="mdi:play", + device_class=SensorDeviceClass.ENUM, + translation_key="programs_ac", + ), ), "REF": ( HonSensorEntityDescription( @@ -526,6 +562,13 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non class HonSensorEntity(HonEntity, SensorEntity): entity_description: HonSensorEntityDescription + def __init__(self, hass, entry, device: HonAppliance, description): + super().__init__(hass, entry, device, description) + if self.entity_description.key == "programName": + self._attr_options = self._device.settings.get( + "startProgram.program" + ).values + ["No Program"] + @callback def _handle_coordinator_update(self): value = self._device.get(self.entity_description.key, "") diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index 8fba491..b4ddabe 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -58,7 +58,8 @@ "19": "Sušení", "20": "Sušení", "11": "Připraveno", - "17": "unknown" + "17": "unknown", + "12": "unkown" }, "name": "Fáze" }, @@ -306,7 +307,8 @@ "woolmark": "Woolmark", "xxl_load": "XXL náplň", "zoom_59": "Zoom 59" - } + }, + "name": "Program" }, "room_temperature": { "name": "Pokojová teplota" @@ -319,6 +321,562 @@ }, "fridge_temp": { "name": "Teplota chladničky" + }, + "programs_ac": { + "state": { + "iot_10_heating": "Funkce Vytápění 10 °C", + "iot_auto": "Auto", + "iot_cool": "Chlazení", + "iot_dry": "Odvlhčování", + "iot_fan": "Ventilátor", + "iot_heat": "Vytápění", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Automatické čištění", + "iot_self_clean": "Samočištění zamrazením", + "iot_self_clean_56": "Samočištění 56°C sterilizace ", + "iot_simple_start": "Spustit nyní", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + auto", + "iot_uv_and_cool": "UV + zchlazení", + "iot_uv_and_dry": "UV + odstranění vlhkosti", + "iot_uv_and_fan": "UV + ventilátor", + "iot_uv_and_heat": "UV + ohřev" + }, + "name": "Program" + }, + "programs_dw": { + "state": { + "59_min": "Rychlý 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "Auto univerzální 50 -60°C", + "auto_universal_plus": "Auto univerzální plus 65 - 75°C", + "auto_universal_plus_soil": "Auto univerzální plus 65 - 75°C", + "auto_universal_soil": "Auto univerzální 50 -60°C", + "auto_wash": "Automatické praní", + "auto_wash_soil": "Automatické praní", + "classe_a_59": "A třída 1 h 65°C", + "delicate": "Jemný 45°C", + "dishwasher_care": "Cyklus odstraňování vodního kamene", + "eco": "Eco", + "eco_asynch": "Eko 45 °C", + "eco_bldc": "Eko 45 °C", + "eco_synch": "Eko 45 °C", + "gentle_wash": "Gentle wash", + "glass": "Sklo", + "glassware": "Sklo 45 °C", + "glass_care": "Glass Care", + "hygiene": "Hygiena", + "hygiene_plus": "Hygienický+ 75 °C", + "intensive": "Intenzivní", + "intensive_rapid": "intenzivní rychlý", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "Auto univerzální 50 -60°C", + "iot_auto_wash_soil": "Automatické praní", + "iot_baby_care": "Péče o děti", + "iot_breakfast": "Snídaně", + "iot_checkup": "Kontrola", + "iot_china_crystals": "Čínský křišťál", + "iot_classe_a_59": "Rychlý 59'", + "iot_cocktail_glasses": "Koktejlové sklenice", + "iot_cocktail_glasses_soil": "Koktejlové sklenice", + "iot_daily_care": "Každodenní péče", + "iot_daily_care_soil": "Každodenní péče", + "iot_delicate": "Jemný 45°C", + "iot_dinner_for_two": "Večeře pro 2", + "iot_dinner_for_two_soil": "Večeře pro 2", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "Eko 45 °C", + "iot_eco_bldc": "Eko 45 °C", + "iot_eco_synch": "Eko 45 °C", + "iot_extra_hygiene": "Hygiena extra", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "Happy Hour", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "Party", + "iot_party_soil": "Party", + "iot_pizza_menu": "Nádobí na pizzu", + "iot_pizza_menu_soil": "Nádobí na pizzu", + "iot_plastic_tupperware": "Plastové nádobí a Tupperware", + "iot_porcelain": "Porcelán", + "iot_power_mix_wash": "Power Mix Wash", + "iot_power_mix_wash_soil": "Power Mix Wash", + "iot_prewash": "Předpírka", + "iot_pyrex_and_glassware": "Pyrex a skleněné nádobí", + "iot_rapid_29": "Rychly 29'", + "iot_rapid_39": "Rychlý 39' 60 °C", + "iot_single": "Jedna osoba", + "iot_steam": "Parní 75 °C", + "iot_super_flash": "Super rychlý", + "iot_super_wash": "Super mytí", + "iot_turbopower": "TurboPower", + "iot_universal": "Univerzální 60 °C", + "iot_wok_grids_maxi_pans": "Speciální pánve (Woky – mřížky a veliké pánve)", + "iot_wok_grids_maxi_pans_soil": "Speciální pánve (Woky – mřížky a veliké pánve)", + "iot_yes_quick_cycle": "Yes Quick", + "night": "Ultra tichý 55°C", + "prewash": "Předpírka", + "rapid_20": "Rychlý 20'", + "rapid_24": "Rychly 24'", + "rapid_29": "Rychly 29' 50°C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "Rychlý 39' 60 °C", + "rapid_49": "Rychlý 49'", + "rapid_59": "Rychlý 59'", + "sanitising": "Dezinfekce", + "silence": "Silence", + "silent": "Noc", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", + "special": "speciální", + "special_pw_prz": "speciální", + "steam": "Parní 75 °C", + "steam_plus": "Pára plus 75 °C", + "total_care": "Total Care 50°C", + "ultra_silence": "Ultra tichý 55°C", + "ultra_silent": "Ultra tichý 55°C", + "universal": "Univerzální 60 °C", + "universal_plus": "Univerzální Plus 70 °C", + "zoom_39": "Zoom 39 min" + }, + "name": "Program" + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "Bramborová placka", + "iot_special_beef_fillet": "Svíčková", + "iot_special_beef_veal_stew": "Dušené hovězí a telecí maso", + "iot_special_boiled_rice": "Vařená rýže", + "iot_special_chicken_breast": "Kuřecí prsa", + "iot_special_chicken_legs": "Kuřecí stehna", + "iot_special_chocolate_pudding": "Čokoládový pudink", + "iot_special_entrecote": "Roštěná", + "iot_special_fresh_tuna": "Čerstvý tuňák", + "iot_special_grilled_vegetables": "Grilovaná zelenina", + "iot_special_lamb_cutlet": "Jehněčí kotletka", + "iot_special_meatballs": "Masové kuličky", + "iot_special_minestrone": "Minestrone", + "iot_special_mussels": "Slávky", + "iot_special_omelette": "Omeleta", + "iot_special_pancakes": "Palačinka", + "iot_special_paris_style_peas": "Hrášek po pařížsku", + "iot_special_poached_eggs": "Sázená vejce", + "iot_special_pork_fillet": "Vepřový plátek", + "iot_special_pork_ribs": "Vepřová žebra", + "iot_special_prawns": "Krevety", + "iot_special_quinoa": "Quinoa", + "iot_special_ratatouille": "Ratatouille", + "iot_special_salmon_fillet": "Filet z lososa", + "iot_special_saute_potatoes": "Restované brambory", + "iot_special_scallops": "Lastury", + "iot_special_scrambled_eggs": "Smažená vajíčka", + "iot_special_spelt": "Špalda", + "iot_special_veggy_noodles": "Vegetariánské nudle", + "iot_special_white_fish_fillet": "Filety z bílých ryb", + "iot_standard_boiling": "Vaření", + "iot_standard_frying": "Smažit", + "iot_standard_keep_warm": "Udržování tepla", + "iot_standard_melting": "Rozpustit", + "iot_standard_simmering": "Slabé vaření" + }, + "name": "Program" + }, + "programs_ov": { + "state": { + "bakery": "Těstoviny a pečivo", + "bakery_steam": "Pára v troubě", + "bottom_heating": "Spodní ohřev", + "bottom_heating_fan": "Spodní ohřev + ventilátor", + "bread": "Chléb", + "bread_steam": "Chléb pečený v páře", + "combi": "Combi", + "convection_fan": "Statický + ventilátor", + "convection_fan_turnspit": "Konvekce + ventilátor + rožeň", + "conventional": "Statický", + "conventional_turnspit": "Konvekce + rožeň", + "defrost": "Rozmrazování", + "descaling": "Odstraňování vodního kamene", + "fish": "Ryby", + "fish_steam": "Ryby v páře", + "grill_cata": "Gril", + "grill_fan_cata": "Ventilátor grilu", + "grill_fan_pyro": "Gril + ventilátor", + "grill_pyro": "Gril", + "h20_clean": "H2O-Clean", + "iot_bread": "Chléb", + "iot_h20_clean": "h2O clean", + "leavening": "Kynutí", + "low_temp_cooking": "Příprava při nízkých teplotách", + "low_temp_cooking_fish": "Příprava při nízkých teplotách – ryby", + "low_temp_cooking_fish_steam": "Příprava při nízkých teplotách – ryby v páře", + "low_temp_cooking_meat": "Příprava při nízkých teplotách – maso", + "low_temp_cooking_meat_steam": "Příprava při nízkých teplotách - dušené maso", + "low_temp_cooking_steam": "Příprava v páře při nízkých teplotách", + "meat": "Maso", + "meat_steam": "Maso v páře", + "multi_level": "Víceúrovňové", + "paella": "Paella", + "pasta_and_bakery": "Těstoviny a pečivo", + "pizza": "Pizza", + "pyrolysis": "Pyrolýza", + "pyrolysis_plus": "Pyrolýza +", + "red_meat": "Tmavé maso", + "red_meat_steam": "Červené maso vařené v páře", + "regenerate": "Regenerace", + "soft_plus": "Soft +", + "super_grill": "Super gril", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Zelenina", + "vegetables_cata": "Zelenina", + "vegetables_pyro": "Zelenina", + "water_discharge": "Vypouštění vody", + "white_meat": "Bílé maso", + "white_meat_steam": "Bílé maso vařené v páře" + }, + "name": "Program" + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "20° barevné a bavlněné látky", + "20_degrees_new_energy_label": "20 °C", + "active_steam": "Pára", + "active_wash": "Aktivní praní", + "active_wash_steam": "Aktivní praní", + "allergy_care": "Antialergická péče", + "allergy_care_pro": "Antialergická péče Pro", + "all_in_one_49": "Vše v jednom 49'.", + "all_in_one_59": "Vše v jednom 59'.", + "all_in_one_59_steam": "Aktivní praní + pára", + "autocare": "Autocare", + "autoclean": "Čištění bubnu", + "baby_60": "Všechno dětské 60°C", + "care_14": "Rapid care 14'", + "care_30": "Rapid care 30'", + "care_44": "Rapid Care 44'", + "checkup": "Kontrola", + "colour_59": "Barevné 59'", + "colour_59_steam": "Barevné 59'' + pára", + "cottons": "Bavlna", + "cottons_prewash": "Bavlna + předpírka", + "cottons_steam": "Bavlna + Pára", + "cotton_care_59": "Cotton Care 59'", + "delicate_59": "Jemné 59'", + "delicate_silk": "Jemné hedvábí", + "delicate_silk_steam": "Jemné hedvábí + pára", + "delicati_59": "Jemné 59'", + "delicati_59_steam": "Jemné 59'", + "drain_spin": "Odčerpání + odstředění", + "easy_iron": "Snadné žehlení", + "eco_40_60_new_energy_label": "Eco 40-60", + "extra_care": "Extra Péče", + "fitness": "Cvičení Péče", + "fitness_care": "Cvičení Péče", + "fresh_care": "Svěží péče", + "fresh_care_steam": "Svěží péče + pára", + "handwash_wool": "Ruční praní a vlna", + "high_dry": "Bavlna - suché", + "hqd_20_degrees": "Bavlna 20 ℃", + "hqd_allergy": "Antialergická péče", + "hqd_autoclean": "Čištění bubnu", + "hqd_babycare": "Péče o děti", + "hqd_checkup": "Kontrola", + "hqd_cottons": "Bavlna", + "hqd_delicate": "Jemné", + "hqd_delicate_cradle": "Jemné", + "hqd_dry": "Bavlna - suché", + "hqd_dry_synthetics": "Směsné - suché", + "hqd_duvet": "Přikrývky", + "hqd_eco_40_60_degrees": "Eco 40-60", + "hqd_handwash_wool": "Vlna", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "Smíšené", + "hqd_quick_15": "Rychlý 15'", + "hqd_quick_wash_57": "Rychlé praní 57 min", + "hqd_rapid_wash_and_dry": "Praní a sušení", + "hqd_refresh": "Osvěžení", + "hqd_rinse": "Máchání", + "hqd_shirts": "Košile", + "hqd_smart": "Smart A.I.", + "hqd_spin": "Odstřeďování", + "hqd_sport": "Sportovní", + "hqd_super_fast": "Rychlý 39’", + "hqd_synthetic_and_coloured": "Syntetika", + "hygiene_59": "Hygienicky Plus 59'", + "hygiene_60": "Hygienický 60°", + "hygiene_plus_59": "Hygienicky Plus 59'", + "hygiene_plus_59_min": "Hygienicky Plus 59'", + "hygiene_pro_49_min": "Hygienický Pro 49 min", + "hygiene_pro_steam": "Hygiene Pro + pára", + "intensive_40": "Intenzivní 40°C", + "intensive_40_steam": "Intenzivní 40°C + pára", + "iot_active_steam": "Pára", + "iot_active_wash_steam": "Aktivní praní", + "iot_allergy_care_pro": "Antialergická péče Pro", + "iot_all_in_one_59_steam": "Aktivní praní + pára", + "iot_checkup": "Kontrola", + "iot_colour_59_steam": "Barevné 59'' + pára", + "iot_cottons_steam": "Bavlna + Pára", + "iot_delicate_silk_steam": "Jemné hedvábí + pára", + "iot_delicati_59_steam": "Jemné 59'", + "iot_dry_air_refresh": "Osvěžení", + "iot_dry_anti_mites": "Proti roztočům", + "iot_dry_baby": "Dětské", + "iot_dry_backpacks": "Batohy", + "iot_dry_bathrobe": "Župany a porézní tkaniny", + "iot_dry_bed_linen": "Ložní prádlo", + "iot_dry_cotton_dry": "Bavlna - suché", + "iot_dry_cuddly_toys": "Plyšové hračky", + "iot_dry_curtains": "Záclony", + "iot_dry_dehumidifier": "Odstraňovač vlhkosti", + "iot_dry_delicates_antiallergy": "Jemné - antialergenní", + "iot_dry_delicate_tablecloths": "Jemné ubrusy", + "iot_dry_denim_jeans": "Džínovina - džíny", + "iot_dry_easy_iron_cotton": "Snadné žehlení - bavlna", + "iot_dry_easy_iron_synthetics": "Snadné žehlení - syntetika", + "iot_dry_gym_fit": "Oděvy na cvičení", + "iot_dry_lingerie": "Spodní prádlo", + "iot_dry_mixed_dry": "Směsné - suché", + "iot_dry_rapid_60_min_delicates": "Rychlý 60' - jemné", + "iot_dry_shirts": "Košile", + "iot_dry_swimsuits_and_bikinis": "Plavky", + "iot_dry_synthetics": "Syntetika - suché", + "iot_dry_synthetic_dry": "Syntetika - suché", + "iot_dry_tablecloths": "Ubrusy", + "iot_dry_technical_fabrics": "Technické tkaniny", + "iot_dry_warm_embrace": "Hřejivé prádlo", + "iot_dry_wool_dry": "Vlna - suché", + "iot_easy_iron": "Snadné žehlení", + "iot_fresh_care_steam": "Svěží péče + pára", + "iot_hygiene_pro_steam": "Hygiene Pro + pára", + "iot_intensive_40_steam": "Intenzivní 40°C + pára", + "iot_mixed_steam": "Smíšené + Pára", + "iot_mix_and_colour_59_steam": "Smíšené a barevné 59' + pára", + "iot_perfect_cotton_59_steam": "Perfektni Bavlna 59'", + "iot_rapid_a_class_60_steam": "Rychlá třída A 60 + pára", + "iot_resistant_cotton_steam": "Bavlna + Pára", + "iot_shirts_steam": "Košile + pára", + "iot_single_item_steam": "Jedna položka + pára", + "iot_smart_wash": "Chytré praní", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "Speciální 39' + pára", + "iot_steam_hygiene_plus": "Hygiena plus pára ", + "iot_synthetic_and_coloured_steam": "Syntetika a barevné + pára", + "iot_wash_and_dry": "Praní a sušení", + "iot_wash_anti_mites": "Proti roztočům", + "iot_wash_anti_odor": "Protizápachový", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "Dezinfekce", + "iot_wash_baby_sanitizer_steam": "Dětská dezinfekce + pára", + "iot_wash_backpacks": "Batohy", + "iot_wash_backpacks_zelig": "Batohy", + "iot_wash_bathrobe": "Župany a ručníky", + "iot_wash_bathrobe_steam": "Župany + Pára", + "iot_wash_bed_linen": "Ložní prádlo", + "iot_wash_bed_linen_steam": "Ložní prádlo + Pára", + "iot_wash_bed_linen_zelig": "Ložní prádlo", + "iot_wash_big_single_load": "Jeden velký kus", + "iot_wash_bleaching": "Bělení", + "iot_wash_blood_stains": "Skvrny od krve", + "iot_wash_cashmere": "Kašmír", + "iot_wash_chocolate_stains": "Čokoládové skvrny", + "iot_wash_cold_wash": "Praní za studena", + "iot_wash_colored": "Barevné", + "iot_wash_colored_anti_stain": "Odstraňování skvrn pro barevné prádlo", + "iot_wash_colored_delicate": "Barevné jemné", + "iot_wash_coloured": "Barevné", + "iot_wash_coloured_bed_linen": "Barevné ložní prádlo", + "iot_wash_coloured_bed_linen_steam": "Barevné ložní prádlo + pára", + "iot_wash_coloured_curtains": "Barevné záclony", + "iot_wash_coloured_shirts": "Barevné košile", + "iot_wash_coloured_shirts_steam": "Barevné košile + pára", + "iot_wash_coloured_steam": "Barevné + Pára", + "iot_wash_coloured_tableclothes": "Barevné ubrusy", + "iot_wash_coloured_tableclothes_steam": "Barevné ubrusy + pára", + "iot_wash_cotton": "Bavlna", + "iot_wash_cotton_steam": "Bavlna + Pára", + "iot_wash_cuddly_toys": "Plyšové hračky", + "iot_wash_curtains": "Záclony", + "iot_wash_curtains_steam": "Záclony + Pára", + "iot_wash_curtains_zelig": "Záclony", + "iot_wash_dark": "Tmavé prádlo", + "iot_wash_darks_and_coloured_44": "Tmavé a barevné 44'", + "iot_wash_darks_and_coloured_59": "Tmavé a barevné 59'", + "iot_wash_darks_and_coloured_xl": "Tmavé a barevné XL", + "iot_wash_dark_steam": "Tmavé prádlo + Pára", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "Jemné", + "iot_wash_delicate_antiallergy": "Antialergenní pro jemné prádlo", + "iot_wash_delicate_antiallergy_steam": "Antialergenní pro jemné prádlo + Pára", + "iot_wash_delicate_antiallergy_zelig": "Antialergenní pro jemné prádlo", + "iot_wash_delicate_colors": "Barevné jemné", + "iot_wash_delicate_colors_steam": "Barevné + pára", + "iot_wash_delicate_dark": "Jemné tmavé", + "iot_wash_delicate_steam": "Jemné + Pára", + "iot_wash_delicate_tablecloths": "Jemné ubrusy", + "iot_wash_delicate_tablecloths_steam": "Jemné ubrusy + Pára", + "iot_wash_delicate_whites": "Jemné bílé", + "iot_wash_denim_jeans": "Džínovina - džíny", + "iot_wash_diving_suits": "Potápěčské obleky", + "iot_wash_diving_suits_zelig": "Potápěčské obleky", + "iot_wash_down_jackets": "Prošívané bundy", + "iot_wash_down_jackets_zelig": "Prošívané bundy", + "iot_wash_duvet": "Přikrývky", + "iot_wash_fruit_stains": "Skvrny od ovoce", + "iot_wash_gym_fit": "Oděvy na cvičení", + "iot_wash_handwash": "Ruční praní", + "iot_wash_handwash_colored": "Ruční praní - barevné", + "iot_wash_handwash_dark": "Ruční praní - tmavé", + "iot_wash_lingerie": "Spodní prádlo", + "iot_wash_masks_refresh": "Osvěžení masek", + "iot_wash_masks_sanification": "Dezinfikování masek", + "iot_wash_masks_sanification_steam": "Dezinfikování masek + Pára", + "iot_wash_mats": "Předložky", + "iot_wash_men_s_trousers": "Kalhoty", + "iot_wash_mixed": "Směsné", + "iot_wash_mixed_steam": "Smíšené + Pára", + "iot_wash_mix_and_coloured_44": "Směsné a barevné 44'", + "iot_wash_mix_and_coloured_59": "Směsné a barevné 59'", + "iot_wash_mix_and_coloured_xl": "Směsné a barevné XL", + "iot_wash_new_clothes": "Nové oblečení", + "iot_wash_perfect_white": "Dokonale bílé", + "iot_wash_perfect_white_steam": "Dokonale bílé + Pára", + "iot_wash_pets": "Příslušenství pro domácí zvířata", + "iot_wash_pets_hair_removal": "Odstraňování chlupů domácích mazlíčků", + "iot_wash_pets_odours_stains_removal": "Odstraňování zápachu a skvrn po domácích mazlíčcích", + "iot_wash_pets_steam": "Příslušenství pro domácí zvířata", + "iot_wash_playsuits": "Dupačky", + "iot_wash_playsuits_steam": "Dupačky + Pára", + "iot_wash_quick_drum_cleaner": "Rychlý čistič bubnu", + "iot_wash_rapid_14": "Rychlý 14’", + "iot_wash_rapid_30": "Rychlý 30’", + "iot_wash_rapid_44": "Rychlý 44'", + "iot_wash_rapid_59": "Rychlý 59'", + "iot_wash_rapid_59_steam": "Rychlý 59' + pára", + "iot_wash_refresh_14_min": "Osvěžení 14'", + "iot_wash_resistant_colored": "Odolné barevné", + "iot_wash_resistant_dark": "Odolné tmavé", + "iot_wash_resistant_whites": "Odolné bílé", + "iot_wash_rinse": "Máchání", + "iot_wash_shirts": "Košile", + "iot_wash_shirts_steam": "Košile + Pára", + "iot_wash_silk": "Hedvábí", + "iot_wash_ski_suit": "Lyžařské oblečení", + "iot_wash_ski_suit_zelig": "Lyžařské oblečení", + "iot_wash_spin": "Odstřeďování", + "iot_wash_sport": "Sportovní", + "iot_wash_sport_anti_odor": "Sportovní oblečení s efektem proti zápachu", + "iot_wash_sport_anti_odor_zelig": "Sportovní oblečení s efektem proti zápachu", + "iot_wash_stains_remover": "Odstraňování skvrn", + "iot_wash_swimsuits_and_bikinis": "Plavky", + "iot_wash_synthetic": "Syntetika", + "iot_wash_synthetic_steam": "Syntetika + Pára", + "iot_wash_tablecloths": "Ubrusy", + "iot_wash_tablecloths_steam": "Ubrusy + Pára", + "iot_wash_technical_fabrics": "Technické tkaniny", + "iot_wash_technical_fabrics_zelig": "Technické tkaniny", + "iot_wash_technical_jackets": "Technické bundy", + "iot_wash_technical_jackets_zelig": "Technické bundy", + "iot_wash_trainers": "Sportovní obuv", + "iot_wash_whites": "Bílé", + "iot_wash_whites_44": "Bílé 44'", + "iot_wash_whites_59": "Bílé 59'", + "iot_wash_whites_xl": "Bílé XL", + "iot_wash_wine_stains": "Skvrny od vína", + "iot_wash_wool": "Vlna", + "jeans": "Džíny", + "jeans_60": "Džíny", + "low_dry": "Směsné - suché", + "mixed": "Smíšené", + "mixed_and_colored_59": "Směsné a barevné 59'", + "mixed_steam": "Smíšené + Pára", + "mix_and_colour_59": "Smisene a Barevne 59'", + "mix_and_colour_59_steam": "Smíšené a barevné 59' + pára", + "night_and_day": "Noc a den", + "night_wash": "Noční cyklus", + "perfect_59": "Perfektní 59'", + "perfect_cotton_59": "Perfektni Bavlna 59'", + "perfect_cotton_59_steam": "Perfektni Bavlna 59'", + "perfect_whites_59": "Dokonale bílé 59'", + "rapid_14_min": "Rychlý 14'", + "rapid_30_min": "Rychlý 30'", + "rapid_44_min": "Rychlý 44'", + "rapid_a_class_60": "Rychlá třída A 60", + "rapid_a_class_60_steam": "Rychlá třída A 60 + pára", + "rapid_wash_and_dry_59_min": "Praní a sušení 59'.", + "resistant_cotton": "Bavlna", + "resistant_cotton_steam": "Bavlna + Pára", + "rinse": "Máchání", + "shirts_steam": "Košile + pára", + "silent_night": "Noční cyklus", + "single_item": "Jedna položka", + "single_item_steam": "Jedna položka + pára", + "smart_wash": "Chytré praní", + "soft_care": "Měkká péče", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "Specialni 39'", + "special_39_full_load": "Specialni 39'", + "special_39_full_load_steam": "Speciální 39' + pára", + "special_49": "Speciální 49'", + "sport_39": "Sportovní 39'", + "sport_plus_29": "Sportovni Plus 29\"", + "sport_plus_39": "Sportovni Plus 39'", + "steam_39": "Pára 39'", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro – bavlna", + "steam_care_pro_delicates": "Steam Care Pro – jemné", + "steam_care_pro_synthetic": "Steam Care Pro – syntetika", + "steam_hygiene_plus": "Hygiena plus pára ", + "synthetics": "Syntetika", + "synthetic_and_coloured": "Syntetika a barevné", + "synthetic_and_coloured_steam": "Syntetika a barevné + pára", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "Total Care", + "tumbling": "Pomalé otáčení", + "wool": "Vlna", + "wool_and_delicates_49": "Vlna/Jemné 49'", + "wool_dry": "Vlna - suché", + "wool_soft_care": "Vlna & Mĕkká Péče" + }, + "name": "Program" + }, + "programs_ref": { + "state": { + "auto_set": "AUTOMATICKÉ NASTAVENÍ", + "cheese": "Sýr", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Režim Eco", + "fruits_and_veg": "Fruit&Veg", + "fruit_and_veg": "Fruit & Veg", + "holiday": "DOVOLENÁ", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Není vybrán žádný režim", + "quick_cool": "QUICK COOL", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER CHLAZENÍ", + "super_freeze": "SUPER MRAZENÍ", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + }, + "name": "Program" } }, "select": { @@ -1030,7 +1588,8 @@ "iot_uv_and_dry": "UV + odstranění vlhkosti", "iot_uv_and_fan": "UV + ventilátor", "iot_uv_and_heat": "UV + ohřev" - } + }, + "name": "Program" }, "programs_ref": { "state": { @@ -1052,7 +1611,8 @@ "super_freeze": "SUPER MRAZENÍ", "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" - } + }, + "name": "Program" }, "remaining_time": { "name": "Zbývající čas" diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index 766ad3b..05df9e2 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -58,7 +58,8 @@ "19": "Trocknen", "20": "Trocknen", "11": "Bereit", - "17": "unknown" + "17": "unknown", + "12": "unkown" }, "name": "Phase" }, @@ -306,7 +307,8 @@ "woolmark": "Wolle", "xxl_load": "XXL-Beladung", "zoom_59": "Zoom 59" - } + }, + "name": "Programm" }, "room_temperature": { "name": "Raumtemperatur" @@ -319,6 +321,562 @@ }, "fridge_temp": { "name": "Temperatur des Kühlschranks" + }, + "programs_ac": { + "state": { + "iot_10_heating": "10°C Heizfunktion", + "iot_auto": "Auto", + "iot_cool": "Kühl", + "iot_dry": "Trocken", + "iot_fan": "Ventilator", + "iot_heat": "Heizen", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Selbst reinigen", + "iot_self_clean": "Self-Clean", + "iot_self_clean_56": "Steri-Clean 56°C", + "iot_simple_start": "Jetzt beginnen", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Auto", + "iot_uv_and_cool": "UV + Kalt", + "iot_uv_and_dry": "UV + Entfeuchter", + "iot_uv_and_fan": "UV + Gebläse", + "iot_uv_and_heat": "UV + Heizen" + }, + "name": "Programm" + }, + "programs_dw": { + "state": { + "59_min": "Rapid 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "AutoUniversal 50-60°C", + "auto_universal_plus": "AutoUniversalPlus 65-75°C", + "auto_universal_plus_soil": "AutoUniversalPlus 65-75°C", + "auto_universal_soil": "AutoUniversal 50-60°C", + "auto_wash": "Auto Wash", + "auto_wash_soil": "Auto Wash", + "classe_a_59": "A Class 59' 65°C", + "delicate": "Delicate 45°C", + "dishwasher_care": "Entkalkungsprogramm", + "eco": "Eco", + "eco_asynch": "Eco 45°C", + "eco_bldc": "Eco 45°C", + "eco_synch": "Eco 45°C", + "gentle_wash": "Gentle wash", + "glass": "Glas", + "glassware": "Gläser 45 °C", + "glass_care": "Glass Care", + "hygiene": "Hygiene", + "hygiene_plus": "Hygiene 75 °C", + "intensive": "Intensiv ", + "intensive_rapid": "Intensiv-Schnellspülgang", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "AutoUniversal 50-60°C", + "iot_auto_wash_soil": "Auto Wash", + "iot_baby_care": "Baby Care", + "iot_breakfast": "Frühstück", + "iot_checkup": "Check-Up", + "iot_china_crystals": "Kristall", + "iot_classe_a_59": "Rapid 59'", + "iot_cocktail_glasses": "Cocktail-Gläser", + "iot_cocktail_glasses_soil": "Cocktail-Gläser", + "iot_daily_care": "Täglicher Einsatz", + "iot_daily_care_soil": "Täglicher Einsatz", + "iot_delicate": "Delicate 45°C", + "iot_dinner_for_two": "Dinner for 2", + "iot_dinner_for_two_soil": "Dinner for 2", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "Eco 45°C", + "iot_eco_bldc": "Eco 45°C", + "iot_eco_synch": "Eco 45°C", + "iot_extra_hygiene": "Extra Hygiene", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "Happy Hour", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "Party", + "iot_party_soil": "Party", + "iot_pizza_menu": "Pizzageschirr", + "iot_pizza_menu_soil": "Pizzageschirr", + "iot_plastic_tupperware": "Kunststoff & Tupperware", + "iot_porcelain": "Porzellan", + "iot_power_mix_wash": "Power Mix Wash", + "iot_power_mix_wash_soil": "Power Mix Wash", + "iot_prewash": "Vorspülen", + "iot_pyrex_and_glassware": "Pyrex & Glas", + "iot_rapid_29": "Rapid 29'", + "iot_rapid_39": "Schnellwäsche 39' 60 °C", + "iot_single": "Single", + "iot_steam": "Dampf 75 °C", + "iot_super_flash": "Super Flash", + "iot_super_wash": "Super Wash", + "iot_turbopower": "TurboPower", + "iot_universal": "Universal 60°C", + "iot_wok_grids_maxi_pans": "Pfannen Spezial (Wok - Grillpfannen & Maxi-Pfannen)", + "iot_wok_grids_maxi_pans_soil": "Pfannen Spezial (Wok - Grillpfannen & Maxi-Pfannen)", + "iot_yes_quick_cycle": "Yes Quick", + "night": "Nacht 55°C", + "prewash": "Vorspülen", + "rapid_20": "Rapid 20'", + "rapid_24": "Rapid 24'", + "rapid_29": "Rapid 29' 50°C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "Schnellwäsche 39' 60 °C", + "rapid_49": "Rapid 49'", + "rapid_59": "Rapid 59'", + "sanitising": "Desinfektion", + "silence": "Silence", + "silent": "Nacht", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", + "special": "spezial", + "special_pw_prz": "spezial", + "steam": "Dampf 75 °C", + "steam_plus": "Dampf Plus 75°C", + "total_care": "Total Care 50°C", + "ultra_silence": "Nacht 55°C", + "ultra_silent": "Nacht 55°C", + "universal": "Universal 60°C", + "universal_plus": "Universal Plus 70 °C", + "zoom_39": "Zoom 39 min" + }, + "name": "Programm" + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "Aschbraun", + "iot_special_beef_fillet": "Rinderfilet", + "iot_special_beef_veal_stew": "Rindfleischeintopf", + "iot_special_boiled_rice": "Gekochter Reis", + "iot_special_chicken_breast": "Hähnchenbrust", + "iot_special_chicken_legs": "Hähnchenschenkel", + "iot_special_chocolate_pudding": "Schokoladenpudding", + "iot_special_entrecote": "Entrecôte", + "iot_special_fresh_tuna": "Frischer Thunfisch", + "iot_special_grilled_vegetables": "Gegrilltes Gemüse", + "iot_special_lamb_cutlet": "Lammkotelett", + "iot_special_meatballs": "Fleischbällchen", + "iot_special_minestrone": "Eintopf", + "iot_special_mussels": "Muscheln", + "iot_special_omelette": "Omelett", + "iot_special_pancakes": "Pfannkuchen", + "iot_special_paris_style_peas": "Erbsen Pariser Art", + "iot_special_poached_eggs": "Pochierte Eier", + "iot_special_pork_fillet": "Schweinefilet", + "iot_special_pork_ribs": "Schweinerippchen", + "iot_special_prawns": "Garnelen", + "iot_special_quinoa": "Quinoa", + "iot_special_ratatouille": "Ratatouille", + "iot_special_salmon_fillet": "Seelachsfilet", + "iot_special_saute_potatoes": "Bratkartoffeln", + "iot_special_scallops": "Jakobsmuscheln", + "iot_special_scrambled_eggs": "Rührei", + "iot_special_spelt": "Dinkel", + "iot_special_veggy_noodles": "Vegetarische Nudeln", + "iot_special_white_fish_fillet": "Weißfischfilet", + "iot_standard_boiling": "Boiling", + "iot_standard_frying": "Braten", + "iot_standard_keep_warm": "Warmhalten", + "iot_standard_melting": "Schmelzen", + "iot_standard_simmering": "Simmering" + }, + "name": "Programm" + }, + "programs_ov": { + "state": { + "bakery": "Teigwaren und Brot", + "bakery_steam": "Dampf im Backofen", + "bottom_heating": "Unterhitze", + "bottom_heating_fan": "Unterhitze + Umluft", + "bread": "Brot", + "bread_steam": "Mit Dampf gebackenes Brot", + "combi": "Combi", + "convection_fan": "Umluft", + "convection_fan_turnspit": "Heißluft + Drehspieß", + "conventional": "Ober-Unterhitze", + "conventional_turnspit": "Ober-&Unterhitze + Bratspieß", + "defrost": "Auftauen", + "descaling": "Entkalkung", + "fish": "Fisch", + "fish_steam": "Gedünsteter Fisch", + "grill_cata": "Grill", + "grill_fan_cata": "Grill Umluft", + "grill_fan_pyro": "Grill + Umluft", + "grill_pyro": "Grill", + "h20_clean": "H2O-Clean", + "iot_bread": "Brot", + "iot_h20_clean": "h2O clean", + "leavening": "Aufgehen", + "low_temp_cooking": "Garen bei niedriger Temperatur", + "low_temp_cooking_fish": "Garen bei niedriger Temperatur - Fisch", + "low_temp_cooking_fish_steam": "Niedertemperaturgaren - Gedünsteter Fisch", + "low_temp_cooking_meat": "Garen bei niedriger Temperatur - Fleisch", + "low_temp_cooking_meat_steam": "Niedertemperaturgaren - Gedämpftes Fleisch", + "low_temp_cooking_steam": "Niedertemperatur-Dampfgaren", + "meat": "Fleisch", + "meat_steam": "Fleisch Dampf", + "multi_level": "Multi-Level", + "paella": "Paella", + "pasta_and_bakery": "Teigwaren und Brot", + "pizza": "Pizza", + "pyrolysis": "Pyrolyse", + "pyrolysis_plus": "Pyrolyse +", + "red_meat": "Rotes Fleisch", + "red_meat_steam": "Gedünstetes rotes Fleisch", + "regenerate": "Regenerieren", + "soft_plus": "Soft+", + "super_grill": "Super Grill", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Gemüse", + "vegetables_cata": "Gemüse", + "vegetables_pyro": "Gemüse", + "water_discharge": "Wasserabfluss", + "white_meat": "Weißes Fleisch", + "white_meat_steam": "Gedämpftes weißes Fleisch" + }, + "name": "Programm" + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "20° Buntes und Baumwolle", + "20_degrees_new_energy_label": "20°C", + "active_steam": "Dampf", + "active_wash": "Active Wash", + "active_wash_steam": "Active Wash", + "allergy_care": "Allergy Care", + "allergy_care_pro": "Allergy Care Pro", + "all_in_one_49": "All in One 49'", + "all_in_one_59": "All in One 59'", + "all_in_one_59_steam": "Active Wash + Dampf", + "autocare": "Autocare", + "autoclean": "Reinigung der Trommel", + "baby_60": "Alles Baby 60 °C", + "care_14": "Rapid Care 14'", + "care_30": "Rapid Care 30'", + "care_44": "Rapid Care 44'", + "checkup": "Check-up", + "colour_59": "Buntwäsche 59'", + "colour_59_steam": "Buntes 59' + Dampf", + "cottons": "Baumwolle", + "cottons_prewash": "Baumwolle + Vorwäsche", + "cottons_steam": "Baumwolle + Dampf", + "cotton_care_59": "Cotton Care 59 Min", + "delicate_59": "Feines 59'", + "delicate_silk": "Empfindliche Seide", + "delicate_silk_steam": "Empfindliche Seide + Dampf", + "delicati_59": "Feines 59'", + "delicati_59_steam": "Feines 59'", + "drain_spin": "Abpumpen und Schleudern", + "easy_iron": "Bügeltrocken", + "eco_40_60_new_energy_label": "ECO 40-60", + "extra_care": "Extra Care", + "fitness": "Fitness Care", + "fitness_care": "Fitness Care", + "fresh_care": "Fresh Care", + "fresh_care_steam": "Fresh Care + Dampf", + "handwash_wool": "Handwäsche und Wolle", + "high_dry": "Baumwolle trocken", + "hqd_20_degrees": "Baumwolle 20℃", + "hqd_allergy": "Allergy Care", + "hqd_autoclean": "Reinigung der Trommel", + "hqd_babycare": "Baby Care", + "hqd_checkup": "Check-up", + "hqd_cottons": "Baumwolle", + "hqd_delicate": "Feinwäsche", + "hqd_delicate_cradle": "Feinwäsche", + "hqd_dry": "Baumwolle trocken", + "hqd_dry_synthetics": "Trocknen gemischt", + "hqd_duvet": "Oberbetten", + "hqd_eco_40_60_degrees": "ECO 40-60", + "hqd_handwash_wool": "Wolle", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "Gemischt", + "hqd_quick_15": "Rapid 15'", + "hqd_quick_wash_57": "Schnellwäsche 57 min", + "hqd_rapid_wash_and_dry": "Waschen und trocknen", + "hqd_refresh": "Auffrischen", + "hqd_rinse": "Spülen", + "hqd_shirts": "Hemden", + "hqd_smart": "Smart A.I.", + "hqd_spin": "Schleudern", + "hqd_sport": "Sport", + "hqd_super_fast": "Rapid 39’", + "hqd_synthetic_and_coloured": "Synthetik", + "hygiene_59": "Hygiene Plus 59'", + "hygiene_60": "Hygiene 60°", + "hygiene_plus_59": "Hygiene Plus 59'", + "hygiene_plus_59_min": "Hygiene Plus 59'", + "hygiene_pro_49_min": "Hygiene Pro 49 min", + "hygiene_pro_steam": "Hygiene Pro + Dampf", + "intensive_40": "Intensiv 40°C", + "intensive_40_steam": "Intensiv 40°C + Dampf", + "iot_active_steam": "Dampf", + "iot_active_wash_steam": "Active Wash", + "iot_allergy_care_pro": "Allergy Care Pro", + "iot_all_in_one_59_steam": "Active Wash + Dampf", + "iot_checkup": "Check-up", + "iot_colour_59_steam": "Buntes 59' + Dampf", + "iot_cottons_steam": "Baumwolle + Dampf", + "iot_delicate_silk_steam": "Empfindliche Seide + Dampf", + "iot_delicati_59_steam": "Feines 59'", + "iot_dry_air_refresh": "Luftauffrischung", + "iot_dry_anti_mites": "Milbenbekämpfung", + "iot_dry_baby": "Baby", + "iot_dry_backpacks": "Rucksäcke", + "iot_dry_bathrobe": "Bademäntel und saugfähiges Gewebe", + "iot_dry_bed_linen": "Bettwäsche", + "iot_dry_cotton_dry": "Baumwolle trocken", + "iot_dry_cuddly_toys": "Stofftiere", + "iot_dry_curtains": "Vorhänge", + "iot_dry_dehumidifier": "Entfeuchter", + "iot_dry_delicates_antiallergy": "Feinwäsche - Anti-Allergie", + "iot_dry_delicate_tablecloths": "Empfindliche Tischdecken", + "iot_dry_denim_jeans": "Denim - Jeans", + "iot_dry_easy_iron_cotton": "Leichtes Bügeln - Baumwolle", + "iot_dry_easy_iron_synthetics": "Leichtes Bügeln - Synthetik", + "iot_dry_gym_fit": "Fitness-Studio - Fitness-Kleidung", + "iot_dry_lingerie": "Dessous", + "iot_dry_mixed_dry": "Trocknen gemischt", + "iot_dry_rapid_60_min_delicates": "Rapid 60' - Feines", + "iot_dry_shirts": "Hemden", + "iot_dry_swimsuits_and_bikinis": "Badeanzüge", + "iot_dry_synthetics": "Synthetik trocken", + "iot_dry_synthetic_dry": "Synthetik trocken", + "iot_dry_tablecloths": "Tischdecken", + "iot_dry_technical_fabrics": "Technische Textilien", + "iot_dry_warm_embrace": "Warm trocknen", + "iot_dry_wool_dry": "Wolle trocknen", + "iot_easy_iron": "Bügeltrocken", + "iot_fresh_care_steam": "Fresh Care + Dampf", + "iot_hygiene_pro_steam": "Hygiene Pro + Dampf", + "iot_intensive_40_steam": "Intensiv 40°C + Dampf", + "iot_mixed_steam": "Gemischt + Dampf", + "iot_mix_and_colour_59_steam": "Misch- und Buntwäsche 59' + Dampf", + "iot_perfect_cotton_59_steam": "Baumwolle Perfekt 59'", + "iot_rapid_a_class_60_steam": "Rapid Klasse A 60 + Dampf", + "iot_resistant_cotton_steam": "Baumwolle + Dampf", + "iot_shirts_steam": "Hemden + Dampf", + "iot_single_item_steam": "Einzelner Gegenstand + Dampf", + "iot_smart_wash": "Smart Wash", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "Special 39' + Dampf", + "iot_steam_hygiene_plus": "Hygiene Plus Dampf ", + "iot_synthetic_and_coloured_steam": "Synthetik und Farben + Dampf", + "iot_wash_and_dry": "Waschen und trocknen", + "iot_wash_anti_mites": "Milbenbekämpfung", + "iot_wash_anti_odor": "Anti-Geruch", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "Desinfektion", + "iot_wash_baby_sanitizer_steam": "Babywäsche-Desinfektion + Dampf", + "iot_wash_backpacks": "Rucksäcke", + "iot_wash_backpacks_zelig": "Rucksäcke", + "iot_wash_bathrobe": "Bademäntel und Handtücher", + "iot_wash_bathrobe_steam": "Bademantel + Dampf", + "iot_wash_bed_linen": "Bettwäsche", + "iot_wash_bed_linen_steam": "Bettwäsche + Dampf", + "iot_wash_bed_linen_zelig": "Bettwäsche", + "iot_wash_big_single_load": "Große Einzelladung", + "iot_wash_bleaching": "Bleichen", + "iot_wash_blood_stains": "Blutflecken", + "iot_wash_cashmere": "Kaschmir", + "iot_wash_chocolate_stains": "Schokoladenflecken", + "iot_wash_cold_wash": "Kaltwäsche", + "iot_wash_colored": "Bunt", + "iot_wash_colored_anti_stain": "Fleckenentfernung bei farbigen Textilien", + "iot_wash_colored_delicate": "Bunte Feinwäsche", + "iot_wash_coloured": "Buntes", + "iot_wash_coloured_bed_linen": "Bunte Bettwäsche", + "iot_wash_coloured_bed_linen_steam": "Bunte Bettwäsche + Dampf", + "iot_wash_coloured_curtains": "Bunte Vorhänge", + "iot_wash_coloured_shirts": "Farbige Hemden", + "iot_wash_coloured_shirts_steam": "Farbige Hemden + Dampf", + "iot_wash_coloured_steam": "Buntes + Dampf", + "iot_wash_coloured_tableclothes": "Farbige Tischtücher", + "iot_wash_coloured_tableclothes_steam": "Farbige Tischtücher + Dampf", + "iot_wash_cotton": "Baumwolle", + "iot_wash_cotton_steam": "Baumwolle + Dampf", + "iot_wash_cuddly_toys": "Stofftiere", + "iot_wash_curtains": "Vorhänge", + "iot_wash_curtains_steam": "Vorhänge+Dampf", + "iot_wash_curtains_zelig": "Vorhänge", + "iot_wash_dark": "Dunkle Kleidungsstücke", + "iot_wash_darks_and_coloured_44": "Dunkles und Buntes 44'", + "iot_wash_darks_and_coloured_59": "Dunkles und Buntes 59'", + "iot_wash_darks_and_coloured_xl": "Dunkles und Buntes XL", + "iot_wash_dark_steam": "Dunkle Kleidungsstücke + Dampf", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "Feinwäsche", + "iot_wash_delicate_antiallergy": "Allergenarmes Programm für Feines", + "iot_wash_delicate_antiallergy_steam": "Allergenarmes Programm für Feines + Dampf", + "iot_wash_delicate_antiallergy_zelig": "Allergenarmes Programm für Feines", + "iot_wash_delicate_colors": "Bunte Feinwäsche", + "iot_wash_delicate_colors_steam": "Buntes + Dampf", + "iot_wash_delicate_dark": "Dunkle Feinwäsche", + "iot_wash_delicate_steam": "Feinwäsche + Dampf", + "iot_wash_delicate_tablecloths": "Empfindliche Tischdecken", + "iot_wash_delicate_tablecloths_steam": "Empfindliche Tischdecken + Dampf", + "iot_wash_delicate_whites": "Weiße Feinwäsche", + "iot_wash_denim_jeans": "Denim - Jeans", + "iot_wash_diving_suits": "Tauchanzüge", + "iot_wash_diving_suits_zelig": "Tauchanzüge", + "iot_wash_down_jackets": "Daunenjacken", + "iot_wash_down_jackets_zelig": "Daunenjacken", + "iot_wash_duvet": "Oberbetten", + "iot_wash_fruit_stains": "Obstflecken", + "iot_wash_gym_fit": "Fitness-Studio - Fitness-Kleidung", + "iot_wash_handwash": "Handwäsche", + "iot_wash_handwash_colored": "Bunte Handwäsche", + "iot_wash_handwash_dark": "Dunkle Handwäsche", + "iot_wash_lingerie": "Dessous", + "iot_wash_masks_refresh": "Mundschutz-Auffrischung", + "iot_wash_masks_sanification": "Mundschutz-Desinfektion", + "iot_wash_masks_sanification_steam": "Mundschutz-Desinfektion + Dampf", + "iot_wash_mats": "Teppiche", + "iot_wash_men_s_trousers": "Herrenhosen", + "iot_wash_mixed": "Gemischt", + "iot_wash_mixed_steam": "Gemischt + Dampf", + "iot_wash_mix_and_coloured_44": "Gemischt und Farben 44'", + "iot_wash_mix_and_coloured_59": "Gemischt und Farben 59'", + "iot_wash_mix_and_coloured_xl": "Gemischt und Farben XL", + "iot_wash_new_clothes": "Neue Kleidung", + "iot_wash_perfect_white": "Perfektes Weiß", + "iot_wash_perfect_white_steam": "Perfektes Weiß + Dampf", + "iot_wash_pets": "Textilien für Haustiere", + "iot_wash_pets_hair_removal": "Haustierhaare auswaschen", + "iot_wash_pets_odours_stains_removal": "Haustiere Geruchs- und Fleckenentfernung", + "iot_wash_pets_steam": "Textilien für Haustiere", + "iot_wash_playsuits": "Strampelanzüge", + "iot_wash_playsuits_steam": "Strampelanzüge + Dampf", + "iot_wash_quick_drum_cleaner": "Schnellreinigung für Waschmaschinentrommeln", + "iot_wash_rapid_14": "Rapid 14’", + "iot_wash_rapid_30": "Rapid 30’", + "iot_wash_rapid_44": "Rapid 44'", + "iot_wash_rapid_59": "Rapid 59'", + "iot_wash_rapid_59_steam": "Rapid 59' + Dampf", + "iot_wash_refresh_14_min": "Auffrischen 14'", + "iot_wash_resistant_colored": "Strapazierfähige Buntwäsche", + "iot_wash_resistant_dark": "Strapazierfähige dunkle Wäsche", + "iot_wash_resistant_whites": "Strapazierfähige weiße Wäsche", + "iot_wash_rinse": "Spülen", + "iot_wash_shirts": "Hemden", + "iot_wash_shirts_steam": "Hemden + Dampf", + "iot_wash_silk": "Seide", + "iot_wash_ski_suit": "Skianzüge", + "iot_wash_ski_suit_zelig": "Skianzüge", + "iot_wash_spin": "Schleudern", + "iot_wash_sport": "Sport", + "iot_wash_sport_anti_odor": "Anti-Geruch Sportbekleidung", + "iot_wash_sport_anti_odor_zelig": "Anti-Geruch Sportbekleidung", + "iot_wash_stains_remover": "Fleckenentferner", + "iot_wash_swimsuits_and_bikinis": "Badeanzüge", + "iot_wash_synthetic": "Synthetik", + "iot_wash_synthetic_steam": "Synthetik + Dampf", + "iot_wash_tablecloths": "Tischdecken", + "iot_wash_tablecloths_steam": "Tischdecken + Dampf", + "iot_wash_technical_fabrics": "Technische Textilien", + "iot_wash_technical_fabrics_zelig": "Technische Textilien", + "iot_wash_technical_jackets": "Jacken aus technischen Textilien", + "iot_wash_technical_jackets_zelig": "Jacken aus technischen Textilien", + "iot_wash_trainers": "Turnschuhe", + "iot_wash_whites": "Weiß", + "iot_wash_whites_44": "Weiß 44'", + "iot_wash_whites_59": "Weiß 59'", + "iot_wash_whites_xl": "Weiß XL", + "iot_wash_wine_stains": "Weinflecken", + "iot_wash_wool": "Wolle", + "jeans": "Jeans", + "jeans_60": "Jeans", + "low_dry": "Trocknen gemischt", + "mixed": "Gemischt", + "mixed_and_colored_59": "Gemischt und Farben 59'", + "mixed_steam": "Gemischt + Dampf", + "mix_and_colour_59": "Misch + Buntwaesche 59'", + "mix_and_colour_59_steam": "Misch- und Buntwäsche 59' + Dampf", + "night_and_day": "Nacht und Tag", + "night_wash": "Zyklus über Nacht", + "perfect_59": "Perfekt 59'", + "perfect_cotton_59": "Baumwolle Perfekt 59'", + "perfect_cotton_59_steam": "Baumwolle Perfekt 59'", + "perfect_whites_59": "Blütenweiß 59'", + "rapid_14_min": "14'uten Kurzprogramm", + "rapid_30_min": "Schnellwaschgang 30'", + "rapid_44_min": "Schnellwaschgang 44'", + "rapid_a_class_60": "Rapid Klasse A 60", + "rapid_a_class_60_steam": "Rapid Klasse A 60 + Dampf", + "rapid_wash_and_dry_59_min": "Waschen und trocknen 59'", + "resistant_cotton": "Baumwolle", + "resistant_cotton_steam": "Baumwolle + Dampf", + "rinse": "Spülen", + "shirts_steam": "Hemden + Dampf", + "silent_night": "Zyklus über Nacht", + "single_item": "Einzelner Gegenstand", + "single_item_steam": "Einzelner Gegenstand + Dampf", + "smart_wash": "Smart Wash", + "soft_care": "Sanfte Pflege", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "Special 39'", + "special_39_full_load": "Special 39'", + "special_39_full_load_steam": "Special 39' + Dampf", + "special_49": "Spezial 49'", + "sport_39": "Sport 39'", + "sport_plus_29": "Sport Plus 29\"", + "sport_plus_39": "Sport Plus 39'", + "steam_39": "Dampf 39'", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro - Baumwolle", + "steam_care_pro_delicates": "Steam Care Pro - Feinwäsche", + "steam_care_pro_synthetic": "Steam Care Pro - Synthetik", + "steam_hygiene_plus": "Hygiene Plus Dampf ", + "synthetics": "Synthetik", + "synthetic_and_coloured": "Synthetik und Farben", + "synthetic_and_coloured_steam": "Synthetik und Farben + Dampf", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "Total Care", + "tumbling": "Trocknen", + "wool": "Wolle", + "wool_and_delicates_49": "Wolle/Feinwäsche 49'", + "wool_dry": "Wolle trocknen", + "wool_soft_care": "Wolle & Soft Care" + }, + "name": "Programm" + }, + "programs_ref": { + "state": { + "auto_set": "AUTOMATISCHE EINSTELLUNG", + "cheese": "Käse", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Eco-Modus", + "fruits_and_veg": "Obst und Genüse", + "fruit_and_veg": "Fruit & Veg", + "holiday": "URLAUBSFUNKTION", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Kein Modus ausgewählt", + "quick_cool": "SCHNELLKÜHLUNG", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + }, + "name": "Programm" } }, "select": { @@ -1030,7 +1588,8 @@ "iot_uv_and_dry": "UV + Entfeuchter", "iot_uv_and_fan": "UV + Gebläse", "iot_uv_and_heat": "UV + Heizen" - } + }, + "name": "Programm" }, "programs_ref": { "state": { @@ -1052,7 +1611,8 @@ "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" - } + }, + "name": "Programm" }, "remaining_time": { "name": "Verbleibende Zeit" diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index 9b6ae68..4b407ed 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -58,7 +58,8 @@ "19": "Στέγνωμα", "20": "Στέγνωμα", "11": "Ετοιμος", - "17": "unknown" + "17": "unknown", + "12": "unkown" }, "name": "Φάση" }, @@ -306,7 +307,8 @@ "woolmark": "Μαλλινα", "xxl_load": "XXL Φορτιο", "zoom_59": "Zoom 59" - } + }, + "name": "Πρόγραμμα" }, "room_temperature": { "name": "Θερμοκρασία δωματίου" @@ -319,6 +321,562 @@ }, "fridge_temp": { "name": "Θερμοκρασία ψυγείου" + }, + "programs_ac": { + "state": { + "iot_10_heating": "10° C Λειτουργία θέρμανσης", + "iot_auto": "Αυτόματο", + "iot_cool": "Ψύξη", + "iot_dry": "Στέγνωμα", + "iot_fan": "Ανεμιστήρας", + "iot_heat": "Ζέστη", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Αυτοκαθαρισμός", + "iot_self_clean": "Αυτοκαθαρισμός", + "iot_self_clean_56": "Steri-Clean 56°C", + "iot_simple_start": "Εκκίνηση τώρα", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Auto", + "iot_uv_and_cool": "UV + Ψύξη", + "iot_uv_and_dry": "UV + Αφυγραντήρας", + "iot_uv_and_fan": "UV + Ανεμιστήρας", + "iot_uv_and_heat": "UV + Θέρμανση" + }, + "name": "Πρόγραμμα" + }, + "programs_dw": { + "state": { + "59_min": "Γρηγορο 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "αυτοματο Universal 50 - 60°C", + "auto_universal_plus": "αυτόματο Universal Plus 65 - 75°C", + "auto_universal_plus_soil": "αυτόματο Universal Plus 65 - 75°C", + "auto_universal_soil": "αυτοματο Universal 50 - 60°C", + "auto_wash": "Αυτόματη πλύση", + "auto_wash_soil": "Αυτόματη πλύση", + "classe_a_59": "Α Class 59' 65°C", + "delicate": "ευαισθητα 45°C", + "dishwasher_care": "Κύκλος καθαρισμού κλίμακας στρώματος αλάτων", + "eco": "Οικολογικό", + "eco_asynch": "ECO 45°C", + "eco_bldc": "ECO 45°C", + "eco_synch": "ECO 45°C", + "gentle_wash": "Gentle wash", + "glass": "Ποτήρι", + "glassware": "γυαλικα 45°C", + "glass_care": "Glass Care", + "hygiene": "Υγιεινό", + "hygiene_plus": "Hygiene+ 75°C", + "intensive": "Εντατικό ", + "intensive_rapid": "δυνατο γρηγορο", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "αυτοματο Universal 50 - 60°C", + "iot_auto_wash_soil": "Αυτόματη πλύση", + "iot_baby_care": "Φροντίδα Μωρού", + "iot_breakfast": "Πρωινό", + "iot_checkup": "Έλεγχος", + "iot_china_crystals": "Κινέζικα Κρύσταλλα", + "iot_classe_a_59": "Γρηγορο 59'", + "iot_cocktail_glasses": "Ποτήρια Κοκτέιλ", + "iot_cocktail_glasses_soil": "Ποτήρια Κοκτέιλ", + "iot_daily_care": "Καθημερινή Φροντίδα", + "iot_daily_care_soil": "Καθημερινή Φροντίδα", + "iot_delicate": "ευαισθητα 45°C", + "iot_dinner_for_two": "Δείπνο για 2", + "iot_dinner_for_two_soil": "Δείπνο για 2", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "ECO 45°C", + "iot_eco_bldc": "ECO 45°C", + "iot_eco_synch": "ECO 45°C", + "iot_extra_hygiene": "Επιπλέον Υγιεινή", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "Happy Hour", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "Πάρτι", + "iot_party_soil": "Πάρτι", + "iot_pizza_menu": "Μενού Πίτσα", + "iot_pizza_menu_soil": "Μενού Πίτσα", + "iot_plastic_tupperware": "Πλαστικά & Τάπερ", + "iot_porcelain": "Πορσελάνη", + "iot_power_mix_wash": "Ισχυρή Πλύση για Μικτά", + "iot_power_mix_wash_soil": "Ισχυρή Πλύση για Μικτά", + "iot_prewash": "προπλυση", + "iot_pyrex_and_glassware": "Πυρέξ & Γυάλινα Είδη", + "iot_rapid_29": "γρηγορο 29'", + "iot_rapid_39": "γρηγορο 39' 60°C", + "iot_single": "Ατομικό", + "iot_steam": "ατμος 75°C", + "iot_super_flash": "Εξαιρετικά Γρήγορο", + "iot_super_wash": "Εξαιρετική Πλύση", + "iot_turbopower": "Μεγάλη Ισχύς", + "iot_universal": "γενικο 60°C", + "iot_wok_grids_maxi_pans": "Ειδικά Τηγάνια (Γουόκ - Σχάρες και Μεγάλα Τηγάνια)", + "iot_wok_grids_maxi_pans_soil": "Ειδικά Τηγάνια (Γουόκ - Σχάρες και Μεγάλα Τηγάνια)", + "iot_yes_quick_cycle": "Yes Quick", + "night": "Ultra Silent 55°C", + "prewash": "προπλυση", + "rapid_20": "Γρηγορο 20'", + "rapid_24": "γρηγορο 24'", + "rapid_29": "γρηγορο 29' 50°C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "γρηγορο 39' 60°C", + "rapid_49": "Γρηγορο 49'", + "rapid_59": "Γρηγορο 59'", + "sanitising": "Απολύμανση", + "silence": "Silence", + "silent": "Νύχτα", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", + "special": "σπεσιαλ", + "special_pw_prz": "σπεσιαλ", + "steam": "ατμος 75°C", + "steam_plus": "Επιπλέον ατμός 75° C", + "total_care": "Total Care 50°C", + "ultra_silence": "Ultra Silent 55°C", + "ultra_silent": "Ultra Silent 55°C", + "universal": "γενικο 60°C", + "universal_plus": "γενικο Plus 70°C", + "zoom_39": "Zoom 39 min" + }, + "name": "Πρόγραμμα" + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "Καφέ φλαμουριά", + "iot_special_beef_fillet": "Φιλέτο βοδινού", + "iot_special_beef_veal_stew": "Βοδινό και μοσχαρίσιο ραγού", + "iot_special_boiled_rice": "Βραστό ρύζι", + "iot_special_chicken_breast": "Στήθος κοτόπουλου", + "iot_special_chicken_legs": "Μπούτια κοτόπουλου", + "iot_special_chocolate_pudding": "Πουτίγκα σοκολάτας", + "iot_special_entrecote": "Εντρεκότ", + "iot_special_fresh_tuna": "Νωπός τόνος", + "iot_special_grilled_vegetables": "Ψητά λαχανικά", + "iot_special_lamb_cutlet": "Κοτολέτες αρνιού", + "iot_special_meatballs": "Κεφτέδες από κρέας", + "iot_special_minestrone": "Μινεστρόνη", + "iot_special_mussels": "Μύδια", + "iot_special_omelette": "Ομελέτα", + "iot_special_pancakes": "Τηγανίτα", + "iot_special_paris_style_peas": "Μπιζέλια του Παρισιού", + "iot_special_poached_eggs": "Αυγά ποσέ", + "iot_special_pork_fillet": "Φιλέτο Χοιρινού", + "iot_special_pork_ribs": "Χοιρινά παϊδάκια", + "iot_special_prawns": "Γαρίδες", + "iot_special_quinoa": "Κινόα", + "iot_special_ratatouille": "Ratatouille", + "iot_special_salmon_fillet": "Σολωμός φιλέτο", + "iot_special_saute_potatoes": "Πατάτες σωτέ", + "iot_special_scallops": "Χτένια", + "iot_special_scrambled_eggs": "Αυγά ομελέτα", + "iot_special_spelt": "Όλυρα", + "iot_special_veggy_noodles": "Λαχανικά νουντλς", + "iot_special_white_fish_fillet": "Φιλέτο λευκόψαρου", + "iot_standard_boiling": "Βρασμός", + "iot_standard_frying": "Τηγάνισμα", + "iot_standard_keep_warm": "Συντήρηση", + "iot_standard_melting": "Λιώσιμο", + "iot_standard_simmering": "Σιγοβράσιμο" + }, + "name": "Πρόγραμμα" + }, + "programs_ov": { + "state": { + "bakery": "Ζυμαρικά και αρτοποιήματα", + "bakery_steam": "Ατμός φούρνου", + "bottom_heating": "Κάτω στοιχείο", + "bottom_heating_fan": "Κάτω στοιχείο + ανεμιστήρας", + "bread": "Ψωμί", + "bread_steam": "Ψωμί ατμού", + "combi": "Combi", + "convection_fan": "Θερμοσ αερασ", + "convection_fan_turnspit": "Θερμός αέρας + Ανεμιστήρας + Σούβλα", + "conventional": "Ανω - κατω θερμανση", + "conventional_turnspit": "Θερμός αέρας + Σούβλα", + "defrost": "Απόψυξη", + "descaling": "Αφαλάτωση", + "fish": "Ψάρια", + "fish_steam": "Ψάρια στον ατμό", + "grill_cata": "Γκριλ", + "grill_fan_cata": "Ανεμιστήρας γκριλ", + "grill_fan_pyro": "Γκριλ + ανεμιστήρας", + "grill_pyro": "Γκριλ", + "h20_clean": "H2O-Clean", + "iot_bread": "Ψωμί", + "iot_h20_clean": "h2O clean", + "leavening": "Ζυμωση", + "low_temp_cooking": "Μαγείρεμα σε χαμηλή θερμοκρασία", + "low_temp_cooking_fish": "Μαγείρεμα σε χαμηλή θερμοκρασία - Ψάρι", + "low_temp_cooking_fish_steam": "Μαγείρεμα σε χαμηλή θερμοκρασία - Ψάρια στον ατμό", + "low_temp_cooking_meat": "Μαγείρεμα σε χαμηλή θερμοκρασία - Κρέας", + "low_temp_cooking_meat_steam": "Μαγείρεμα σε χαμηλή θερμοκρασία - Κρέας στον ατμό", + "low_temp_cooking_steam": "Μαγείρεμα με ατμό σε χαμηλή θερμοκρασία", + "meat": "Κρέας", + "meat_steam": "Κρέας στον ατμό", + "multi_level": "Πολλαπλων Επιπεδων", + "paella": "Paella", + "pasta_and_bakery": "Ζυμαρικά και αρτοποιήματα", + "pizza": "Pizza", + "pyrolysis": "Πυρόλυση", + "pyrolysis_plus": "Πυρόλυση +", + "red_meat": "Κόκκινο κρέας", + "red_meat_steam": "Κόκκινο κρέας στον ατμό", + "regenerate": "Αναζωογόνηση", + "soft_plus": "Μαλακό +", + "super_grill": "Σούπερ γκριλ", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Λαχανικά", + "vegetables_cata": "Λαχανικά", + "vegetables_pyro": "Λαχανικά", + "water_discharge": "Απόρριψη νερού", + "white_meat": "Λευκό κρέας", + "white_meat_steam": "Λευκό κρέας στον ατμό" + }, + "name": "Πρόγραμμα" + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "20° Χρωματιστά και Βαμβακερά", + "20_degrees_new_energy_label": "20°C", + "active_steam": "Ατμός", + "active_wash": "Ενεργό πλύσιμο", + "active_wash_steam": "Ενεργό πλύσιμο", + "allergy_care": "Φροντίδα αλλεργίας", + "allergy_care_pro": "Allergy Care Επαγγελματικό", + "all_in_one_49": "Όλα σε Ένα 49'.", + "all_in_one_59": "Όλα σε Ένα 59'.", + "all_in_one_59_steam": "Ενεργή πλύση + Ατμός", + "autocare": "Αυτόματη φροντίδα", + "autoclean": "Καθαρισμός κάδου", + "baby_60": "Μωρουδιακά 60°C", + "care_14": "Rapid Care 14'", + "care_30": "Rapid Care 30'", + "care_44": "Rapid Care 44'", + "checkup": "Έλεγχος", + "colour_59": "χρωματιστα 59'", + "colour_59_steam": "Χρωματιστά 59' + ατμός", + "cottons": "Βαμβακερό", + "cottons_prewash": "βαμβακερα + προπλυση", + "cottons_steam": "Βαμβακερό + Ατμός", + "cotton_care_59": "βαμβακερα 59 λεπτα", + "delicate_59": "Ευαίσθητα 59'", + "delicate_silk": "Ευαίσθητα μεταξωτά", + "delicate_silk_steam": "Ευαίσθητα μεταξωτά + ατμός", + "delicati_59": "Ευαίσθητα 59'", + "delicati_59_steam": "Ευαίσθητα 59'", + "drain_spin": "Στραγγίστε + και περιστρέψτε", + "easy_iron": "ευκολο σιδερωμα", + "eco_40_60_new_energy_label": "Eco (οικολογικό) 40-60", + "extra_care": "EXTRA CARE", + "fitness": "FITNESS CARE", + "fitness_care": "FITNESS CARE", + "fresh_care": "Φρέσκια φροντίδα", + "fresh_care_steam": "Φροντίδα φρεσκάδας + Ατμός", + "handwash_wool": "Πλύσιμο στο χέρι και μαλλί", + "high_dry": "Στέγνωμα βαμβακερών", + "hqd_20_degrees": "Βαμβακερό 20℃", + "hqd_allergy": "Φροντίδα αλλεργίας", + "hqd_autoclean": "Καθαρισμός κάδου", + "hqd_babycare": "Φροντίδα Μωρού", + "hqd_checkup": "Έλεγχος", + "hqd_cottons": "Βαμβακερό", + "hqd_delicate": "Ευαίσθητα", + "hqd_delicate_cradle": "Ευαίσθητα", + "hqd_dry": "Στέγνωμα βαμβακερών", + "hqd_dry_synthetics": "Μικτά στέγνωμα", + "hqd_duvet": "Παπλώματα", + "hqd_eco_40_60_degrees": "Eco (οικολογικό) 40-60", + "hqd_handwash_wool": "Μάλλινα", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "Μείγμα", + "hqd_quick_15": "Γρήγορο 15'", + "hqd_quick_wash_57": "Γρήγορο πλύσιμο 57 λεπτά", + "hqd_rapid_wash_and_dry": "Πλύσιμο & στέγνωμα", + "hqd_refresh": "Refresh", + "hqd_rinse": "Ξέπλυμα", + "hqd_shirts": "Πουκάμισα", + "hqd_smart": "Smart A.I.", + "hqd_spin": "Στύψιμο", + "hqd_sport": "Αθλητικά", + "hqd_super_fast": "Γρήγορο 39’", + "hqd_synthetic_and_coloured": "Συνθετικά", + "hygiene_59": "HYGIENE PLUS 59'", + "hygiene_60": "Υγιεινό 60°", + "hygiene_plus_59": "HYGIENE PLUS 59'", + "hygiene_plus_59_min": "HYGIENE PLUS 59'", + "hygiene_pro_49_min": "Hygiene Pro 49 λεπτά", + "hygiene_pro_steam": "Hygiene Pro + Ατμός", + "intensive_40": "Εντατικό 40°C", + "intensive_40_steam": "Εντατικό 40°C + ατμός", + "iot_active_steam": "Ατμός", + "iot_active_wash_steam": "Ενεργό πλύσιμο", + "iot_allergy_care_pro": "Allergy Care Επαγγελματικό", + "iot_all_in_one_59_steam": "Ενεργή πλύση + Ατμός", + "iot_checkup": "Έλεγχος", + "iot_colour_59_steam": "Χρωματιστά 59' + ατμός", + "iot_cottons_steam": "Βαμβακερό + Ατμός", + "iot_delicate_silk_steam": "Ευαίσθητα μεταξωτά + ατμός", + "iot_delicati_59_steam": "Ευαίσθητα 59'", + "iot_dry_air_refresh": "Ανανέωση αέρα", + "iot_dry_anti_mites": "Αντι-ακάρεα", + "iot_dry_baby": "Μωρουδιακά", + "iot_dry_backpacks": "Σακίδια", + "iot_dry_bathrobe": "Μπουρνούζια και πορώδη υφάσματα", + "iot_dry_bed_linen": "Κλινοσκεπάσματα", + "iot_dry_cotton_dry": "Στέγνωμα βαμβακερών", + "iot_dry_cuddly_toys": "Λούτρινα ζωάκια", + "iot_dry_curtains": "Κουρτίνες", + "iot_dry_dehumidifier": "Αφαίρεση υγρασίας", + "iot_dry_delicates_antiallergy": "Ευαίσθητα και λεπτά – αντι-αλλεργιογόνα", + "iot_dry_delicate_tablecloths": "Λεπτά τραπεζομάντιλα", + "iot_dry_denim_jeans": "Ντένιμ - Τζιν", + "iot_dry_easy_iron_cotton": "Εύκολο σιδέρωμα - βαμβακερά", + "iot_dry_easy_iron_synthetics": "Εύκολο σιδέρωμα - Συνθετικά", + "iot_dry_gym_fit": "Φόρμες - ρούχα γυμναστικής", + "iot_dry_lingerie": "Εσώρουχα", + "iot_dry_mixed_dry": "Μικτά στέγνωμα", + "iot_dry_rapid_60_min_delicates": "Γρήγορο 60' - Ευαίσθητα", + "iot_dry_shirts": "Πουκάμισα", + "iot_dry_swimsuits_and_bikinis": "Μαγιό", + "iot_dry_synthetics": "Συνθετικά στέγνωμα", + "iot_dry_synthetic_dry": "Συνθετικά στέγνωμα", + "iot_dry_tablecloths": "Τραπεζομάντηλα", + "iot_dry_technical_fabrics": "Τεχνικά υφάσματα", + "iot_dry_warm_embrace": "Ευαίσθητα στέγνωμα", + "iot_dry_wool_dry": "Μάλλινα στέγνωμα", + "iot_easy_iron": "ευκολο σιδερωμα", + "iot_fresh_care_steam": "Φροντίδα φρεσκάδας + Ατμός", + "iot_hygiene_pro_steam": "Hygiene Pro + Ατμός", + "iot_intensive_40_steam": "Εντατικό 40°C + ατμός", + "iot_mixed_steam": "Μικτά + Ατμός", + "iot_mix_and_colour_59_steam": "Μικτά και χρωματιστά 59' + Ατμός", + "iot_perfect_cotton_59_steam": "ΤΕΛΕΙΑ ΒΑΜΒΑΚΕΡΑ 59'", + "iot_rapid_a_class_60_steam": "Γρήγορο κατηγορίας A 60 + ατμός", + "iot_resistant_cotton_steam": "Βαμβακερό + Ατμός", + "iot_shirts_steam": "Πουκάμισα + Ατμός", + "iot_single_item_steam": "Ένα τεμάχιο + Ατμός", + "iot_smart_wash": "Έξυπνη πλύση", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "Ειδικό 39' + Ατμός", + "iot_steam_hygiene_plus": "Ατμός για περισσότερο υγιεινό φαγητό ", + "iot_synthetic_and_coloured_steam": "Συνθετικά και χρωματιστά + Ατμός", + "iot_wash_and_dry": "Πλύσιμο & στέγνωμα", + "iot_wash_anti_mites": "Αντι-ακάρεα", + "iot_wash_anti_odor": "Κατά των οσμών", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "Απολύμανση", + "iot_wash_baby_sanitizer_steam": "Απολύμανση μωρουδιακών + ατμός", + "iot_wash_backpacks": "Σακίδια", + "iot_wash_backpacks_zelig": "Σακίδια πλάτης", + "iot_wash_bathrobe": "Μπουρνούζια και πετσέτες", + "iot_wash_bathrobe_steam": "Μπουρνούζι + Ατμός", + "iot_wash_bed_linen": "Κλινοσκεπάσματα", + "iot_wash_bed_linen_steam": "Κλινοσκεπάσματα + Ατμός", + "iot_wash_bed_linen_zelig": "Κλινοσκεπάσματα", + "iot_wash_big_single_load": "Μεγάλο μεμονωμένο φορτίο", + "iot_wash_bleaching": "Λεύκανση", + "iot_wash_blood_stains": "Λεκέδες αίματος", + "iot_wash_cashmere": "Κασμίρι", + "iot_wash_chocolate_stains": "Λεκέδες από σοκολάτα", + "iot_wash_cold_wash": "Κρύα πλύση", + "iot_wash_colored": "Χρωματιστά", + "iot_wash_colored_anti_stain": "Αφαίρεση λεκέδων για χρώματα", + "iot_wash_colored_delicate": "Ευαίσθητα χρωματιστά", + "iot_wash_coloured": "Χρωματιστά", + "iot_wash_coloured_bed_linen": "Χρωματιστά κλινοσκεπάσματα", + "iot_wash_coloured_bed_linen_steam": "Χρωματιστά κλινοσκεπάσματα + ατμός", + "iot_wash_coloured_curtains": "Χρωματιστές κουρτίνες", + "iot_wash_coloured_shirts": "Χρωματιστά πουκάμισα", + "iot_wash_coloured_shirts_steam": "Χρωματιστά πουκάμισα + ατμός", + "iot_wash_coloured_steam": "Χρωματιστά + Ατμός", + "iot_wash_coloured_tableclothes": "Χρωματιστά τραπεζομάντηλα", + "iot_wash_coloured_tableclothes_steam": "Χρωματιστά τραπεζομάντιλα + Ατμός", + "iot_wash_cotton": "Βαμβακερό", + "iot_wash_cotton_steam": "Βαμβακερό + Ατμός", + "iot_wash_cuddly_toys": "Λούτρινα ζωάκια", + "iot_wash_curtains": "Κουρτίνες", + "iot_wash_curtains_steam": "Κουρτίνες + Ατμός", + "iot_wash_curtains_zelig": "Κουρτίνες", + "iot_wash_dark": "Σκούρα ρούχα", + "iot_wash_darks_and_coloured_44": "Σκούρα και χρωματιστά 44'", + "iot_wash_darks_and_coloured_59": "Σκούρα και χρωματιστά 59'", + "iot_wash_darks_and_coloured_xl": "Σκούρα και χρωματιστά XL", + "iot_wash_dark_steam": "Σκούρα ρούχα + Ατμός", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "Ευαίσθητα", + "iot_wash_delicate_antiallergy": "Αντι-αλλεργικό για λιπαρές ουσίες", + "iot_wash_delicate_antiallergy_steam": "Αντι-αλλεργικό για λιπαρές ουσίες + Ατμός", + "iot_wash_delicate_antiallergy_zelig": "Αντι-αλλεργικό για λιπαρές ουσίες", + "iot_wash_delicate_colors": "Ευαίσθητα χρωματιστά", + "iot_wash_delicate_colors_steam": "Χρωματιστά + ατμός", + "iot_wash_delicate_dark": "Ευαίσθητα σκούρα", + "iot_wash_delicate_steam": "Ευαίσθητα + Ατμός", + "iot_wash_delicate_tablecloths": "Λεπτά τραπεζομάντιλα", + "iot_wash_delicate_tablecloths_steam": "Λεπτά τραπεζομάντιλα + Ατμός", + "iot_wash_delicate_whites": "Ευαίσθητα λευκά", + "iot_wash_denim_jeans": "Ντένιμ - τζιν", + "iot_wash_diving_suits": "Στολες κατάδυσης", + "iot_wash_diving_suits_zelig": "Στολες κατάδυσης", + "iot_wash_down_jackets": "Φουσκωτά μπουφάν", + "iot_wash_down_jackets_zelig": "Φουσκωτά μπουφάν", + "iot_wash_duvet": "Παπλώματα", + "iot_wash_fruit_stains": "Λεκέδες φρούτων", + "iot_wash_gym_fit": "Φόρμες - ρούχα γυμναστικής", + "iot_wash_handwash": "Πλύσιμο στο χέρι", + "iot_wash_handwash_colored": "Πλύσιμο στο χέρι χρωματιστά", + "iot_wash_handwash_dark": "Πλύσιμο στο χέρι σκούρα", + "iot_wash_lingerie": "Εσώρουχα", + "iot_wash_masks_refresh": "Φρεσκάρισμα μασκών", + "iot_wash_masks_sanification": "Απολύμανση μασκών", + "iot_wash_masks_sanification_steam": "Απολύμανση μασκών + Ατμός", + "iot_wash_mats": "Χαλιά", + "iot_wash_men_s_trousers": "παντελονια", + "iot_wash_mixed": "Μικτά", + "iot_wash_mixed_steam": "Μικτά + Ατμός", + "iot_wash_mix_and_coloured_44": "Μικτά και χρωματιστά 44'", + "iot_wash_mix_and_coloured_59": "Μικτά και χρωματιστά 59'", + "iot_wash_mix_and_coloured_xl": "Μικτά και χρωματιστά XL", + "iot_wash_new_clothes": "Νέα ρούχα", + "iot_wash_perfect_white": "Τέλειο λευκό", + "iot_wash_perfect_white_steam": "Τέλειο λευκό + Ατμός", + "iot_wash_pets": "Αξεσουάρ κατοικίδιων", + "iot_wash_pets_hair_removal": "Αφαίρεση των τριχών κατοικίδιων ζώων", + "iot_wash_pets_odours_stains_removal": "Αφαίρεση οσμών και λεκέδων από τα κατοικίδια ζώα", + "iot_wash_pets_steam": "Αξεσουάρ κατοικίδιων", + "iot_wash_playsuits": "Αθλητικές φόρμες", + "iot_wash_playsuits_steam": "Αθλητικές φόρμες + Ατμός", + "iot_wash_quick_drum_cleaner": "Γρήγορος καθαρισμός κάδου", + "iot_wash_rapid_14": "Γρήγορο 14’", + "iot_wash_rapid_30": "Γρήγορο 30’", + "iot_wash_rapid_44": "Γρήγορο 44'", + "iot_wash_rapid_59": "Γρήγορο 59'", + "iot_wash_rapid_59_steam": "Γρήγορο 59' + ατμός", + "iot_wash_refresh_14_min": "Ανανέωση 14'", + "iot_wash_resistant_colored": "Ανθεκτικά χρωματιστά", + "iot_wash_resistant_dark": "Ανθεκτικά σκούρα", + "iot_wash_resistant_whites": "Ανθεκτικά λευκά", + "iot_wash_rinse": "Ξέπλυμα", + "iot_wash_shirts": "Πουκάμισα", + "iot_wash_shirts_steam": "Πουκάμισα + Ατμός", + "iot_wash_silk": "Μεταξωτά", + "iot_wash_ski_suit": "Στολές σκι", + "iot_wash_ski_suit_zelig": "Στολές σκι", + "iot_wash_spin": "Στύψιμο", + "iot_wash_sport": "Αθλητικά", + "iot_wash_sport_anti_odor": "Κατά της οσμής των αθλητικών ρούχων", + "iot_wash_sport_anti_odor_zelig": "Κατά της οσμής των αθλητικών ρούχων", + "iot_wash_stains_remover": "Αφαίρεση λεκέδων", + "iot_wash_swimsuits_and_bikinis": "Μαγιό", + "iot_wash_synthetic": "Συνθετικά", + "iot_wash_synthetic_steam": "Συνθετικά + Ατμός", + "iot_wash_tablecloths": "Τραπεζομάντηλα", + "iot_wash_tablecloths_steam": "Τραπεζομάντηλα + Ατμός", + "iot_wash_technical_fabrics": "Τεχνικά υφάσματα", + "iot_wash_technical_fabrics_zelig": "Τεχνικά υφάσματα", + "iot_wash_technical_jackets": "Τεχνικά μπουφάν", + "iot_wash_technical_jackets_zelig": "Τεχνικά μπουφάν", + "iot_wash_trainers": "Αθλητικά παπούτσια", + "iot_wash_whites": "Λευκά", + "iot_wash_whites_44": "Λευκά 44'", + "iot_wash_whites_59": "Λευκά 59'", + "iot_wash_whites_xl": "Λευκά XL", + "iot_wash_wine_stains": "Λεκέδες κρασιού", + "iot_wash_wool": "Μάλλινα", + "jeans": "Τζιν παντελονια", + "jeans_60": "τζιν", + "low_dry": "Μικτά στέγνωμα", + "mixed": "Μικτά", + "mixed_and_colored_59": "Μικτά και χρωματιστά 59'", + "mixed_steam": "Μικτά + Ατμός", + "mix_and_colour_59": "ΜΙΚΤΑ + ΧΡΩΜΑΤΙΣΤΑ 59'", + "mix_and_colour_59_steam": "Μικτά και χρωματιστά 59' + Ατμός", + "night_and_day": "Νύχτα και ημέρα", + "night_wash": "Ολονύκτιος κύκλος", + "perfect_59": "Τέλειο 59'", + "perfect_cotton_59": "ΤΕΛΕΙΑ ΒΑΜΒΑΚΕΡΑ 59'", + "perfect_cotton_59_steam": "ΤΕΛΕΙΑ ΒΑΜΒΑΚΕΡΑ 59'", + "perfect_whites_59": "τελεια λευκα 59'", + "rapid_14_min": "Γρήγορο 14 λεπτών", + "rapid_30_min": "Γρήγορο 30λεπ.", + "rapid_44_min": "Γρήγορο 44λεπ.", + "rapid_a_class_60": "Γρήγορο κατηγορίας A 60", + "rapid_a_class_60_steam": "Γρήγορο κατηγορίας A 60 + ατμός", + "rapid_wash_and_dry_59_min": "Πλύσιμο και στέγνωμα 59'.", + "resistant_cotton": "Βαμβακερό", + "resistant_cotton_steam": "Βαμβακερό + Ατμός", + "rinse": "Ξέπλυμα", + "shirts_steam": "Πουκάμισα + Ατμός", + "silent_night": "Ολονύκτιος κύκλος", + "single_item": "Ενιαίο στοιχείο", + "single_item_steam": "Ένα τεμάχιο + Ατμός", + "smart_wash": "Έξυπνη πλύση", + "soft_care": "Απαλή φροντίδα", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "Eιδικος 39'", + "special_39_full_load": "Eιδικος 39'", + "special_39_full_load_steam": "Ειδικό 39' + Ατμός", + "special_49": "Ειδικό 49'", + "sport_39": "Σπορ 39'", + "sport_plus_29": "SPORT PLUS 39\"", + "sport_plus_39": "SPORT PLUS 39'", + "steam_39": "Ατμός 39'", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro - Βαμβακερά", + "steam_care_pro_delicates": "Steam Care Pro - Ευαίσθητα", + "steam_care_pro_synthetic": "Steam Care Pro - Συνθετικά", + "steam_hygiene_plus": "Ατμός για περισσότερο υγιεινό φαγητό ", + "synthetics": "Συνθετικά", + "synthetic_and_coloured": "Συνθετικά και χρωματιστά", + "synthetic_and_coloured_steam": "Συνθετικά και χρωματιστά + Ατμός", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "Ολική φροντίδα", + "tumbling": "Κατρακύλισμα", + "wool": "Μάλλινα", + "wool_and_delicates_49": "μαλλινα/ευαισθητα 49'", + "wool_dry": "Μάλλινα στέγνωμα", + "wool_soft_care": "μαλλινα & Soft Care" + }, + "name": "Πρόγραμμα" + }, + "programs_ref": { + "state": { + "auto_set": "ΑΥΤΌΜΑΤΗ ΡΎΘΜΙΣΗ", + "cheese": "Τυρί", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Λειτουργία Eco", + "fruits_and_veg": "ΦΡΟΥΤΑ & ΛΑΧΑΝΙΚΑ", + "fruit_and_veg": "Fruit & Veg", + "holiday": "Ρυθμίστε το ψυγείο στους 17°C και διατηρήστε την κατάψυξη σε λειτουργία για μεγάλο χρονικό διάστημα.", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Δεν επιλέχθηκε λειτουργία", + "quick_cool": "ΓΡΗΓΟΡΗ ΨΥΞΗ", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + }, + "name": "Πρόγραμμα" } }, "select": { @@ -1030,7 +1588,8 @@ "iot_uv_and_dry": "UV + Αφυγραντήρας", "iot_uv_and_fan": "UV + Ανεμιστήρας", "iot_uv_and_heat": "UV + Θέρμανση" - } + }, + "name": "Πρόγραμμα" }, "programs_ref": { "state": { @@ -1052,7 +1611,8 @@ "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" - } + }, + "name": "Πρόγραμμα" }, "remaining_time": { "name": "Χρόνος που απομένει" diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 40d3135..01a9e1e 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -126,7 +126,8 @@ "19": "Drying", "20": "Drying", "11": "Ready", - "17": "unknown" + "17": "unknown", + "12": "unkown" }, "name": "Phase" }, @@ -365,7 +366,8 @@ "woolmark": "Wool", "xxl_load": "XXL Load", "zoom_59": "Zoom 59" - } + }, + "name": "Program" }, "room_temperature": { "name": "Room temperature" @@ -378,141 +380,38 @@ }, "fridge_temp": { "name": "Fridge temperature" - } - }, - "switch": { - "anti_crease": { - "name": "Anticrease" }, - "add_dish": { - "name": "Add dishes" - }, - "eco_express": { - "name": "Eco" - }, - "extra_dry": { - "name": "Extra dry" - }, - "half_load": { - "name": "Half load" - }, - "open_door": { - "name": "Open door" - }, - "three_in_one": { - "name": "3 in 1" - }, - "preheat": { - "name": "Preheat" - }, - "dish_washer": { - "name": "Dish washer" - }, - "tumble_dryer": { - "name": "Tumble dryer" - }, - "washing_machine": { - "name": "Washing machine" - }, - "washer_dryer": { - "name": "Washer dryer" - }, - "oven": { - "name": "Oven" - }, - "prewash": { - "name": "Pre-wash " - }, - "pause": { - "name": "Pause" - }, - "keep_fresh": { - "name": "Keep Fresh" - }, - "delay_time": { - "name": "Delay Start" - }, - "rapid_mode": { - "name": "Rapid mode" - }, - "eco_mode": { - "name": "ECO mode" - }, - "10_degree_heating": { - "name": "10°C Heating function" - }, - "self_clean": { - "name": "Self-clean" - }, - "self_clean_56": { - "name": "Steri-Clean 56°C" - }, - "silent_mode": { - "name": "Silent mode" - }, - "mute_mode": { - "name": "Mute mode" - }, - "extra_rinse_1": { - "name": "+1 Rinse" - }, - "extra_rinse_2": { - "name": "+2 Rinses" - }, - "extra_rinse_3": { - "name": "+3 Rinses" - }, - "acqua_plus": { - "name": "Acquaplus" - }, - "auto_dose": { - "name": "Autodose" - }, - "good_night": { - "name": "Good Night" - }, - "auto_dose_softener": { - "name": "Autodose Softener" - }, - "auto_dose_detergent": { - "name": "Autodose Detergent" - }, - "auto_set": { - "name": "Auto-Set" - }, - "super_cool": { - "name": "Super Cool" - }, - "super_freeze": { - "name": "Super Freeze" - }, - "refrigerator": { - "name": "Refrigerator" - } - }, - "select": { - "dry_levels": { + "programs_ac": { "state": { - "0": "No drying", - "1": "Iron dry", - "2": "Hang", - "3": "Cupboard Dry", - "4": "Extra dry", - "12": "Iron dry", - "13": "Cupboard Dry", - "14": "Ready to wear", - "15": "Extra dry", - "11": "No drying" + "iot_10_heating": "10°C Heating function", + "iot_auto": "Auto", + "iot_cool": "Cool", + "iot_dry": "Dry", + "iot_fan": "Fan", + "iot_heat": "Heat", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Self-purify", + "iot_self_clean": "Self-clean", + "iot_self_clean_56": "Steri-Clean 56°C", + "iot_simple_start": "Start now", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Auto", + "iot_uv_and_cool": "UV + Cold", + "iot_uv_and_dry": "UV + Dehumidifier", + "iot_uv_and_fan": "UV + Fan", + "iot_uv_and_heat": "UV + Heat" }, - "name": "Drying level" + "name": "Program" }, "programs_dw": { "state": { "59_min": "Rapid 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Auto Hygiene", "auto_plus": "AutoPlus", "auto_plus_soil": "Auto Plus Soil", + "auto_rapid": "Auto Rapid", "auto_rapid_soil": "Auto rapid Soil", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", @@ -679,6 +578,676 @@ "iot_bread": "Bread", "iot_h20_clean": "h2O clean", "leavening": "Leavening", + "light_fan": "Light Fan", + "light_fan\n": "Light Fan", + "low_temp_cooking": "Low Temperature Cooking", + "low_temp_cooking_fish": "Low Temperature Cooking - Fish", + "low_temp_cooking_fish_steam": "Low Temperature Cooking - Steamed fish", + "low_temp_cooking_meat": "Low Temperature Cooking - Meat", + "low_temp_cooking_meat_steam": "Low Temperature Cooking - Steamed meat", + "low_temp_cooking_steam": "Low Temperature Steam Cooking", + "meat": "Meat", + "meat_steam": "Steamed meat", + "multi_level": "Multi-Level", + "paella": "Paella", + "pasta_and_bakery": "Pasta and Bakery", + "pizza": "Pizza", + "pyrolysis": "Pyrolysis", + "pyrolysis_plus": "Pyrolysis +", + "red_meat": "Red Meat", + "red_meat_steam": "Steamed red meat", + "regenerate": "Regenerate", + "soft_plus": "Soft+", + "super_grill": "Super Grill", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Vegetables", + "vegetables_cata": "Vegetables", + "vegetables_pyro": "Vegetables", + "water_discharge": "Water Discharge", + "white_meat": "White Meat", + "white_meat_steam": "Steamed white meat" + }, + "name": "Program" + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "20° Colored and Cottons", + "20_degrees_new_energy_label": "20°C", + "active_steam": "Steam", + "active_wash": "Active Wash", + "active_wash_steam": "Active Wash + Steam", + "allergy_care": "Allergy Care", + "allergy_care_pro": "Allergy Care Pro", + "all_in_one_49": "All in One 49'", + "all_in_one_59": "All in One 59'", + "all_in_one_59_steam": "Active Wash + Steam", + "autocare": "Autocare", + "autoclean": "Drum cleaning and descaling ", + "baby_60": "All Baby 60°C", + "care_14": "Rapid Care 14'", + "care_30": "Rapid Care 30'", + "care_44": "Rapid Care 44'", + "checkup": "Check-Up", + "colour_59": "Colored 59'", + "colour_59_steam": "Colored 59' + Steam", + "cottons": "Cotton", + "cottons_prewash": "Cottons + Prewash", + "cottons_steam": "Cotton + Steam", + "cotton_care_59": "Cotton Care 59'", + "delicate_59": "Delicate 59'", + "delicate_silk": "Delicate and Silk", + "delicate_silk_steam": "Delicate and Silk + Steam", + "delicati_59": "Delicate 59'", + "delicati_59_steam": "Delicate 59' + Steam", + "drain_spin": "Drain + Spin", + "easy_iron": "Easy Iron", + "eco_40_60_new_energy_label": "Eco 40-60", + "extra_care": "Extra Care", + "fitness": "Fitness Care", + "fitness_care": "Fitness Care", + "fresh_care": "Fresh Care", + "fresh_care_steam": "Fresh Care + Steam", + "handwash_wool": "Hand Wash + Wool", + "high_dry": "High Heat Dry", + "hqd_20_degrees": "Cotton 20℃", + "hqd_allergy": "Allergy Care", + "hqd_autoclean": "Drum Cleaning", + "hqd_babycare": "Baby Care", + "hqd_checkup": "Check-Up", + "hqd_cottons": "Cotton", + "hqd_delicate": "Delicate", + "hqd_delicate_cradle": "Delicate", + "hqd_dry": "Cotton Dry", + "hqd_dry_synthetics": "Low Heat Dry", + "hqd_duvet": "Duvet", + "hqd_eco_40_60_degrees": "Eco 40-60", + "hqd_handwash_wool": "Wool", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "Mix", + "hqd_quick_15": "Quick 15'", + "hqd_quick_wash_57": "Quick Wash 57'", + "hqd_rapid_wash_and_dry": "Wash and dry", + "hqd_refresh": "Refresh", + "hqd_rinse": "Rinses", + "hqd_shirts": "Shirts", + "hqd_smart": "Smart A.I.", + "hqd_spin": "Spin", + "hqd_sport": "Sport", + "hqd_super_fast": "Super Fast 39'", + "hqd_synthetic_and_coloured": "Synthetics", + "hygiene_59": "Hygiene Plus 59'", + "hygiene_60": "Hygiene 60°C", + "hygiene_plus_59": "Hygiene Plus 59'", + "hygiene_plus_59_min": "Hygiene Plus 59'", + "hygiene_pro_49_min": "Hygiene Pro 49'", + "hygiene_pro_steam": "Hygiene Pro + Steam", + "intensive_40": "Intensive 40°C", + "intensive_40_steam": "Intensive 40°C + Steam", + "iot_active_steam": "Steam", + "iot_active_wash_steam": "Active Wash + Steam", + "iot_allergy_care_pro": "Allergy Care Pro", + "iot_all_in_one_59_steam": "Active Wash + Steam", + "iot_checkup": "Check-Up", + "iot_colour_59_steam": "Colored 59' + Steam", + "iot_cottons_steam": "Cotton + Steam", + "iot_delicate_silk_steam": "Delicate and Silk + Steam", + "iot_delicati_59_steam": "Delicate 59' + Steam", + "iot_dry_air_refresh": "Air Refresh", + "iot_dry_anti_mites": "Anti-mite", + "iot_dry_baby": "Baby", + "iot_dry_backpacks": "Backpacks", + "iot_dry_bathrobe": "Bathrobes", + "iot_dry_bed_linen": "Bed Linen", + "iot_dry_cotton_dry": "Cotton Dry", + "iot_dry_cuddly_toys": "Cuddly Toys", + "iot_dry_curtains": "Curtains", + "iot_dry_dehumidifier": "Humidity Remover", + "iot_dry_delicates_antiallergy": "Delicates Anti-allergy", + "iot_dry_delicate_tablecloths": "Delicate Tablecloths", + "iot_dry_denim_jeans": "Denim - Jeans", + "iot_dry_easy_iron_cotton": "Easy Iron - Cotton", + "iot_dry_easy_iron_synthetics": "Easy Iron - Synthetics", + "iot_dry_gym_fit": "Gym fit - Fitness", + "iot_dry_lingerie": "Lingerie", + "iot_dry_mixed_dry": "Mixed Dry", + "iot_dry_rapid_60_min_delicates": "Rapid 60' - Delicates", + "iot_dry_shirts": "Shirts", + "iot_dry_swimsuits_and_bikinis": "Swimsuits and Bikinis", + "iot_dry_synthetics": "Synthetic Dry", + "iot_dry_synthetic_dry": "Synthetic Dry", + "iot_dry_tablecloths": "Tablecloths", + "iot_dry_technical_fabrics": "Technical Fabrics", + "iot_dry_warm_embrace": "Warm Embrace", + "iot_dry_wool_dry": "Wool Dry", + "iot_easy_iron": "Easy Iron", + "iot_fresh_care_steam": "Fresh Care + Steam", + "iot_hygiene_pro_steam": "Hygiene Pro + Steam", + "iot_intensive_40_steam": "Intensive 40°C + Steam", + "iot_mixed_steam": "Mixed + Steam", + "iot_mix_and_colour_59_steam": "Mixed and Coloured 59' + Steam", + "iot_perfect_cotton_59_steam": "Perfect Cotton 59' + Steam", + "iot_rapid_a_class_60_steam": "Rapid 59' A Class + Steam", + "iot_resistant_cotton_steam": "Resistant Cotton + Steam", + "iot_shirts_steam": "Shirts + Steam", + "iot_single_item_steam": "Single Item + Steam", + "iot_smart_wash": "Smart Wash", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "Special 39' + Steam", + "iot_steam_hygiene_plus": "Hygiene Plus + Steam", + "iot_synthetic_and_coloured_steam": "Synthetic and Coloured + Steam", + "iot_wash_and_dry": "Wash and dry", + "iot_wash_anti_mites": "Anti-mites", + "iot_wash_anti_odor": "Anti-odour", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "Sanitizer", + "iot_wash_baby_sanitizer_steam": "Sanitiser + Steam", + "iot_wash_backpacks": "Backpacks", + "iot_wash_backpacks_zelig": "Backpacks", + "iot_wash_bathrobe": "Bathrobes and Towels", + "iot_wash_bathrobe_steam": "Bathrobe and Towels + Steam", + "iot_wash_bed_linen": "Bed Linen", + "iot_wash_bed_linen_steam": "Bed Linen + Steam", + "iot_wash_bed_linen_zelig": "Bed Linens", + "iot_wash_big_single_load": "Big single load", + "iot_wash_bleaching": "Bleaching", + "iot_wash_blood_stains": "Bloodstains", + "iot_wash_cashmere": "Cashmere", + "iot_wash_chocolate_stains": "Chocolate stains", + "iot_wash_cold_wash": "Cold Wash", + "iot_wash_colored": "Colored", + "iot_wash_colored_anti_stain": "Colored Anti-stain", + "iot_wash_colored_delicate": "Colored Delicate", + "iot_wash_coloured": "Colored", + "iot_wash_coloured_bed_linen": "Colored Bed Linen", + "iot_wash_coloured_bed_linen_steam": "Coloured Bed Linen + Steam", + "iot_wash_coloured_curtains": "Colored Curtains", + "iot_wash_coloured_shirts": "Colored Shirts", + "iot_wash_coloured_shirts_steam": "Colored Shirts + Steam", + "iot_wash_coloured_steam": "Colored + Steam", + "iot_wash_coloured_tableclothes": "Colored Tableclothes", + "iot_wash_coloured_tableclothes_steam": "Coloured Tablecloths + Steam", + "iot_wash_cotton": "Cotton", + "iot_wash_cotton_steam": "Cotton + Steam", + "iot_wash_cuddly_toys": "Cuddly Toys", + "iot_wash_curtains": "Curtains", + "iot_wash_curtains_steam": "Curtains + Steam", + "iot_wash_curtains_zelig": "Curtains", + "iot_wash_dark": "Darks", + "iot_wash_darks_and_coloured_44": "Darks and Colored 44'", + "iot_wash_darks_and_coloured_59": "Darks and Colored 59'", + "iot_wash_darks_and_coloured_xl": "Darks and Colored XL", + "iot_wash_dark_steam": "Darks + Steam", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "Delicates", + "iot_wash_delicate_antiallergy": "Delicate Anti-Allergy", + "iot_wash_delicate_antiallergy_steam": "Delicate Anti-Allergy + Steam", + "iot_wash_delicate_antiallergy_zelig": "Delicate Anti-Allergy", + "iot_wash_delicate_colors": "Delicate Colors", + "iot_wash_delicate_colors_steam": "Delicate Colors + Steam", + "iot_wash_delicate_dark": "Delicate Darks", + "iot_wash_delicate_steam": "Delicates + Steam", + "iot_wash_delicate_tablecloths": "Delicate Tablecloths", + "iot_wash_delicate_tablecloths_steam": "Delicate Tablecloths + Steam", + "iot_wash_delicate_whites": "Delicate Whites", + "iot_wash_denim_jeans": "Denim - Jeans", + "iot_wash_diving_suits": "Diving Suits", + "iot_wash_diving_suits_zelig": "Diving Suits", + "iot_wash_down_jackets": "Down Jackets", + "iot_wash_down_jackets_zelig": "Down Jackets", + "iot_wash_duvet": "Duvet", + "iot_wash_fruit_stains": "Fruit stains", + "iot_wash_gym_fit": "Gym Fit - Fitness", + "iot_wash_handwash": "Handwash", + "iot_wash_handwash_colored": "Handwash Colored", + "iot_wash_handwash_dark": "Handwash Darks", + "iot_wash_lingerie": "Lingerie", + "iot_wash_masks_refresh": "Masks Refresh", + "iot_wash_masks_sanification": "Masks Sanitization", + "iot_wash_masks_sanification_steam": "Mask Sanitisation + Steam", + "iot_wash_mats": "Mats", + "iot_wash_men_s_trousers": "Trousers", + "iot_wash_mixed": "Mixed", + "iot_wash_mixed_steam": "Mixed + Steam", + "iot_wash_mix_and_coloured_44": "Mix and Colored 44'", + "iot_wash_mix_and_coloured_59": "Mix and Colored 59'", + "iot_wash_mix_and_coloured_xl": "Mix and colored XL", + "iot_wash_new_clothes": "New Clothes", + "iot_wash_perfect_white": "Perfect White", + "iot_wash_perfect_white_steam": "Perfect White + Steam", + "iot_wash_pets": "Pet Accessories", + "iot_wash_pets_hair_removal": "Pets Hair Removal", + "iot_wash_pets_odours_stains_removal": "Pets Odours and Stains Removal", + "iot_wash_pets_steam": "Pet Accessories + Steam", + "iot_wash_playsuits": "Playsuits", + "iot_wash_playsuits_steam": "Playsuits + Steam", + "iot_wash_quick_drum_cleaner": "Quick drum cleaner", + "iot_wash_rapid_14": "Rapid 14’", + "iot_wash_rapid_30": "Rapid 30’", + "iot_wash_rapid_44": "Rapid 44'", + "iot_wash_rapid_59": "Rapid 59'", + "iot_wash_rapid_59_steam": "Rapid 59' + Steam", + "iot_wash_refresh_14_min": "Refresh 14'", + "iot_wash_resistant_colored": "Resistant Colored", + "iot_wash_resistant_dark": "Resistant Darks", + "iot_wash_resistant_whites": "Resistant Whites", + "iot_wash_rinse": "Rinses", + "iot_wash_shirts": "Shirts", + "iot_wash_shirts_steam": "Shirts + Steam", + "iot_wash_silk": "Silk", + "iot_wash_ski_suit": "Ski Suit", + "iot_wash_ski_suit_zelig": "Ski Suit", + "iot_wash_spin": "Spin", + "iot_wash_sport": "Sport", + "iot_wash_sport_anti_odor": "Anti-odour Sportswear", + "iot_wash_sport_anti_odor_zelig": "Anti-odour Sportswear", + "iot_wash_stains_remover": "Stain Remover", + "iot_wash_swimsuits_and_bikinis": "Swimsuits and Bikinis", + "iot_wash_synthetic": "Synthetics", + "iot_wash_synthetic_steam": "Synthetics + Steam", + "iot_wash_tablecloths": "Tablecloths", + "iot_wash_tablecloths_steam": "Tablecloths + Steam", + "iot_wash_technical_fabrics": "Technical Fabrics", + "iot_wash_technical_fabrics_zelig": "Technical Fabrics", + "iot_wash_technical_jackets": "Technical Jackets", + "iot_wash_technical_jackets_zelig": "Technical Jackets", + "iot_wash_trainers": "Trainers", + "iot_wash_whites": "Whites", + "iot_wash_whites_44": "Whites 44'", + "iot_wash_whites_59": "Whites 59'", + "iot_wash_whites_xl": "Whites XL", + "iot_wash_wine_stains": "Wine Stains", + "iot_wash_wool": "Wool", + "jeans": "Jeans", + "jeans_60": "Jeans", + "low_dry": "Low Heat Dry", + "mixed": "Mixed", + "mixed_and_colored_59": "Mixed and Colored 59'", + "mixed_steam": "Mixed + Steam", + "mix_and_colour_59": "Mixed and Colored 59'", + "mix_and_colour_59_steam": "Mixed and Coloured 59' + Steam", + "night_and_day": "Night and Day", + "night_wash": "Night Wash", + "perfect_59": "Perfect 59'", + "perfect_cotton_59": "Perfect Cotton 59'", + "perfect_cotton_59_steam": "Perfect Cotton 59' + Steam", + "perfect_whites_59": "Perfect White 59'", + "rapid_14_min": "Rapid 14'", + "rapid_30_min": "Rapid 30'", + "rapid_44_min": "Rapid 44'", + "rapid_a_class_60": "Rapid 59' A Class", + "rapid_a_class_60_steam": "Rapid 59' A Class + Steam", + "rapid_wash_and_dry_59_min": "Wash and Dry 59'", + "resistant_cotton": "Resistant Cotton", + "resistant_cotton_steam": "Resistant Cotton + Steam", + "rinse": "Rinse", + "shirts_steam": "Shirts + Steam", + "silent_night": "Silent Night", + "single_item": "Single Item", + "single_item_steam": "Single Item + Steam", + "smart_wash": "Smart Wash", + "soft_care": "Soft Care", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "Special 39'", + "special_39_full_load": "Special 39'", + "special_39_full_load_steam": "Special 39' + Steam", + "special_49": "Special 49'", + "sport_39": "Sport 39'", + "sport_plus_29": "Sport Plus 29\"", + "sport_plus_39": "Sport Plus 39'", + "steam_39": "Steam 39'", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro - Cottons", + "steam_care_pro_delicates": "Steam Care Pro - Delicates", + "steam_care_pro_synthetic": "Steam Care Pro - Synthetics", + "steam_hygiene_plus": "Hygiene Plus + Steam", + "synthetics": "Synthetics", + "synthetic_and_coloured": "Synthetic and Colored", + "synthetic_and_coloured_steam": "Synthetic and Coloured + Steam", + "tailored_resistant_cotton": "Tailored resistant cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Coloured", + "total_care": "Total Care", + "tumbling": "Tumbling", + "wool": "Wool", + "wool_and_delicates_49": "Wool and Delicates 49'", + "wool_dry": "Wool Dry", + "wool_soft_care": "Wool and Soft Care" + }, + "name": "Program" + }, + "programs_ref": { + "state": { + "auto_set": "AUTO-SET", + "cheese": "Cheese", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Eco mode", + "fruits_and_veg": "Fruit&Veg", + "fruit_and_veg": "Fruit&Veg", + "holiday": "HOLIDAY", + "keep_fresh": "0° Fresh", + "no_mode_selected": "No mode selected", + "quick_cool": "QUICK COOL", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "soft_frozen\n": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + }, + "name": "Program" + } + }, + "switch": { + "anti_crease": { + "name": "Anticrease" + }, + "add_dish": { + "name": "Add dishes" + }, + "eco_express": { + "name": "Eco" + }, + "extra_dry": { + "name": "Extra dry" + }, + "half_load": { + "name": "Half load" + }, + "open_door": { + "name": "Open door" + }, + "three_in_one": { + "name": "3 in 1" + }, + "preheat": { + "name": "Preheat" + }, + "dish_washer": { + "name": "Dish washer" + }, + "tumble_dryer": { + "name": "Tumble dryer" + }, + "washing_machine": { + "name": "Washing machine" + }, + "washer_dryer": { + "name": "Washer dryer" + }, + "oven": { + "name": "Oven" + }, + "prewash": { + "name": "Pre-wash " + }, + "pause": { + "name": "Pause" + }, + "keep_fresh": { + "name": "Keep Fresh" + }, + "delay_time": { + "name": "Delay Start" + }, + "rapid_mode": { + "name": "Rapid mode" + }, + "eco_mode": { + "name": "ECO mode" + }, + "10_degree_heating": { + "name": "10°C Heating function" + }, + "self_clean": { + "name": "Self-clean" + }, + "self_clean_56": { + "name": "Steri-Clean 56°C" + }, + "silent_mode": { + "name": "Silent mode" + }, + "mute_mode": { + "name": "Mute mode" + }, + "extra_rinse_1": { + "name": "+1 Rinse" + }, + "extra_rinse_2": { + "name": "+2 Rinses" + }, + "extra_rinse_3": { + "name": "+3 Rinses" + }, + "acqua_plus": { + "name": "Acquaplus" + }, + "auto_dose": { + "name": "Autodose" + }, + "good_night": { + "name": "Good Night" + }, + "auto_dose_softener": { + "name": "Autodose Softener" + }, + "auto_dose_detergent": { + "name": "Autodose Detergent" + }, + "auto_set": { + "name": "Auto-Set" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" + }, + "refrigerator": { + "name": "Refrigerator" + } + }, + "select": { + "dry_levels": { + "state": { + "0": "No drying", + "1": "Iron dry", + "2": "Hang", + "3": "Cupboard Dry", + "4": "Extra dry", + "12": "Iron dry", + "13": "Cupboard Dry", + "14": "Ready to wear", + "15": "Extra dry", + "11": "No drying" + }, + "name": "Drying level" + }, + "programs_dw": { + "state": { + "59_min": "Rapid 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_hygiene": "Auto Hygiene", + "auto_plus": "AutoPlus", + "auto_plus_soil": "Auto Plus Soil", + "auto_rapid": "Auto Rapid", + "auto_rapid_soil": "Auto rapid Soil", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "Auto Universal 50 - 60°C", + "auto_universal_plus": "Auto Universal+ 65 - 75°C", + "auto_universal_plus_soil": "Auto Universal+ 65 - 75°C", + "auto_universal_soil": "Auto Universal 50 - 60°C", + "auto_wash": "Auto Wash", + "auto_wash_soil": "Auto Wash", + "classe_a_59": "A Wash 59' 65°C", + "delicate": "Delicate 45°C", + "dishwasher_care": "Limescale cleaning", + "eco": "Eco", + "eco_asynch": "Eco 45°C", + "eco_bldc": "Eco 45°C", + "eco_synch": "Eco 45°C", + "gentle_wash": "Gentle wash", + "glass": "Glass", + "glassware": "Glassware 45°C", + "glass_care": "Glass Care", + "hygiene": "Hygiene", + "hygiene_plus": "Hygiene+ 75°C", + "intensive": "Intensive ", + "intensive_rapid": "Intensive Rapid", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "Auto Universal 50 - 60°C", + "iot_auto_wash_soil": "Auto Wash", + "iot_baby_care": "Baby Care", + "iot_breakfast": "Breakfast", + "iot_checkup": "Check-Up", + "iot_china_crystals": "China Crystals", + "iot_classe_a_59": "Rapid 59'", + "iot_cocktail_glasses": "Coktail Glasses", + "iot_cocktail_glasses_soil": "Coktail Glasses", + "iot_daily_care": "Daily Care", + "iot_daily_care_soil": "Daily Care", + "iot_delicate": "Delicate 45°C", + "iot_dinner_for_two": "Dinner for 2", + "iot_dinner_for_two_soil": "Dinner for 2", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "Eco 45°C", + "iot_eco_bldc": "Eco 45°C", + "iot_eco_synch": "Eco 45°C", + "iot_extra_hygiene": "Extra Hygiene", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "Happy Hour", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "Party", + "iot_party_soil": "Party", + "iot_pizza_menu": "Pizza Menu", + "iot_pizza_menu_soil": "Pizza Menu", + "iot_plastic_tupperware": "Plastic & Tupperware", + "iot_porcelain": "Porcelain", + "iot_power_mix_wash": "Power Mix Wash", + "iot_power_mix_wash_soil": "Power Mix Wash", + "iot_prewash": "Pre-wash ", + "iot_pyrex_and_glassware": "Pyrex & Glassware", + "iot_rapid_29": "Rapid 29'", + "iot_rapid_39": "Rapid 39' 60°C", + "iot_single": "Single", + "iot_steam": "Steam 75°C", + "iot_super_flash": "Super Flash", + "iot_super_wash": "Super Wash", + "iot_turbopower": "TurboPower", + "iot_universal": "Universal 60°C", + "iot_wok_grids_maxi_pans": "Special Pans (Wok, Grids & Maxi Pans)", + "iot_wok_grids_maxi_pans_soil": "Special Pans (Wok, Grids & Maxi Pans)", + "iot_yes_quick_cycle": "Yes Quick", + "night": "Night 55°C", + "prewash": "Pre-wash ", + "rapid_20": "Rapid 20'", + "rapid_24": "Rapid 24'", + "rapid_29": "Rapid 29' 50°C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "Rapid 39' 60°C", + "rapid_49": "Rapid 49'", + "rapid_59": "Rapid 59'", + "sanitising": "Sanitising", + "silence": "Silence", + "silent": "Silent", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", + "special": "Special", + "special_pw_prz": "Special", + "steam": "Steam 75°C", + "steam_plus": "Steam Plus 75°C", + "total_care": "Total Care 50°C", + "ultra_silence": "Ultra Silence 55°C", + "ultra_silent": "Ultra Silent 55°C", + "universal": "Universal 60°C", + "universal_plus": "Universal Plus 70°C", + "zone_wash": "Flex Zone Wash", + "zoom_39": "Zoom 39 min" + }, + "name": "Program" + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "Ash brown", + "iot_special_beef_fillet": "Beef fillet", + "iot_special_beef_veal_stew": "Beef and veal stew", + "iot_special_boiled_rice": "Boiled rice", + "iot_special_chicken_breast": "Chicken breast", + "iot_special_chicken_legs": "Chicken legs", + "iot_special_chocolate_pudding": "Chocolate pudding", + "iot_special_entrecote": "Entrecote", + "iot_special_fresh_tuna": "Fresh tuna", + "iot_special_grilled_vegetables": "Grilled vegetables", + "iot_special_lamb_cutlet": "Lamb cutle", + "iot_special_meatballs": "Meatballs", + "iot_special_minestrone": "Minestrone", + "iot_special_mussels": "Mussels", + "iot_special_omelette": "Omelette", + "iot_special_pancakes": "Pancakes", + "iot_special_paris_style_peas": "Paris style peas", + "iot_special_poached_eggs": "Poached eggs", + "iot_special_pork_fillet": "Pork fillet", + "iot_special_pork_ribs": "Pork ribs", + "iot_special_prawns": "Prawns", + "iot_special_quinoa": "Quinoa", + "iot_special_ratatouille": "Ratatouille", + "iot_special_salmon_fillet": "Salmon fillet", + "iot_special_saute_potatoes": "Saute potatoes", + "iot_special_scallops": "Scallops", + "iot_special_scrambled_eggs": "Scrambled eggs", + "iot_special_spelt": "Spelt", + "iot_special_veggy_noodles": "Veggy noodles", + "iot_special_white_fish_fillet": "White fish fillet", + "iot_standard_boiling": "Boiling", + "iot_standard_frying": "Frying", + "iot_standard_keep_warm": "Keep Warm", + "iot_standard_melting": "Melting", + "iot_standard_simmering": "Simmering" + }, + "name": "Program" + }, + "programs_ov": { + "state": { + "bakery": "Pasta and Bakery", + "bakery_steam": "Steam oven", + "bottom_heating": "Bottom Heating", + "bottom_heating_fan": "Bottom Heating + Fan", + "bread": "Bread", + "bread_steam": "Steam baked bread", + "combi": "Combi", + "convection_fan": "Convection + Fan", + "convection_fan_turnspit": "Convection + Fan + Turnspit", + "conventional": "Conventional", + "conventional_turnspit": "Convection + Turnspit", + "defrost": "Defrosting", + "descaling": "Descaling", + "fish": "Fish", + "fish_steam": "Steamed fish", + "grill_cata": "Grill", + "grill_fan_cata": "Grill fan", + "grill_fan_pyro": "Grill + Fan", + "grill_pyro": "Grill", + "h20_clean": "H2O-Clean", + "iot_bread": "Bread", + "iot_h20_clean": "h2O clean", + "leavening": "Leavening", + "light_fan": "Light Fan", "light_fan\n": "Light Fan", "low_temp_cooking": "Low Temperature Cooking", "low_temp_cooking_fish": "Low Temperature Cooking - Fish", @@ -1203,7 +1772,8 @@ "iot_uv_and_dry": "UV + Dehumidifier", "iot_uv_and_fan": "UV + Fan", "iot_uv_and_heat": "UV + Heat" - } + }, + "name": "Program" }, "programs_ref": { "state": { @@ -1226,7 +1796,8 @@ "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" - } + }, + "name": "Program" }, "remaining_time": { "name": "Time remaining" @@ -1451,6 +2022,7 @@ "iot_bread": "Bread", "iot_h20_clean": "h2O clean", "leavening": "Leavening", + "light_fan": "Light Fan", "light_fan\n": "Light Fan", "low_temp_cooking": "Low Temperature Cooking", "low_temp_cooking_fish": "Low Temperature Cooking - Fish", diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index 1627934..46823a6 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -58,7 +58,8 @@ "19": "Secado", "20": "Secado", "11": "Listo", - "17": "unknown" + "17": "unknown", + "12": "unkown" }, "name": "Fase" }, @@ -306,7 +307,8 @@ "woolmark": "Woolmark", "xxl_load": "Carga XXL", "zoom_59": "Zoom 59" - } + }, + "name": "Programa" }, "room_temperature": { "name": "Temperatura ambiente" @@ -319,6 +321,562 @@ }, "fridge_temp": { "name": "Temperatura del frigorífico" + }, + "programs_ac": { + "state": { + "iot_10_heating": "Función de calentamiento de 10° C", + "iot_auto": "Automático", + "iot_cool": "Frío", + "iot_dry": "Deshumidificar", + "iot_fan": "Ventilador", + "iot_heat": "Calor", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Autopurificar", + "iot_self_clean": "Autolimpieza", + "iot_self_clean_56": "Limpieza desinfectante 56°", + "iot_simple_start": "Iniciar ahora", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Automático", + "iot_uv_and_cool": "UV + Frío", + "iot_uv_and_dry": "UV + Deshumidificador", + "iot_uv_and_fan": "UV + Ventilador", + "iot_uv_and_heat": "UV + Calor" + }, + "name": "Programa" + }, + "programs_dw": { + "state": { + "59_min": "Rápido 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "Auto Universal 50 - 60°C", + "auto_universal_plus": "Auto Universal Plus 65 - 75°C", + "auto_universal_plus_soil": "Auto Universal Plus 65 - 75°C", + "auto_universal_soil": "Auto Universal 50 - 60°C", + "auto_wash": "Lavado automático", + "auto_wash_soil": "Lavado automático", + "classe_a_59": "Clase A 59' 65°C", + "delicate": "Delicado 45°C", + "dishwasher_care": "Ciclo de limpieza antical", + "eco": "Eco", + "eco_asynch": "Eco 45°C", + "eco_bldc": "Eco 45°C", + "eco_synch": "Eco 45°C", + "gentle_wash": "Gentle wash", + "glass": "Cristal", + "glassware": "Cristal 45 °C", + "glass_care": "Glass Care", + "hygiene": "Higiene", + "hygiene_plus": "Higiene+ 75 °C", + "intensive": "Intensivo ", + "intensive_rapid": "Fuerte rápido", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "Auto Universal 50 - 60°C", + "iot_auto_wash_soil": "Lavado automático", + "iot_baby_care": "Baby Care", + "iot_breakfast": "Desayuno", + "iot_checkup": "Revisión", + "iot_china_crystals": "Cristal", + "iot_classe_a_59": "Rápido 59'", + "iot_cocktail_glasses": "Copas de cóctel", + "iot_cocktail_glasses_soil": "Copas de cóctel", + "iot_daily_care": "Diario", + "iot_daily_care_soil": "Diario", + "iot_delicate": "Delicado 45°C", + "iot_dinner_for_two": "Cena para 2", + "iot_dinner_for_two_soil": "Cena para 2", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "Eco 45°C", + "iot_eco_bldc": "Eco 45°C", + "iot_eco_synch": "Eco 45°C", + "iot_extra_hygiene": "Ciclo Higienizante", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "Happy Hour", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "Party", + "iot_party_soil": "Party", + "iot_pizza_menu": "Pizza Menú", + "iot_pizza_menu_soil": "Pizza Menú", + "iot_plastic_tupperware": "Plástico y Tupperware", + "iot_porcelain": "Porcelana", + "iot_power_mix_wash": "Power Mix Wash", + "iot_power_mix_wash_soil": "Power Mix Wash", + "iot_prewash": "Pre-lavado", + "iot_pyrex_and_glassware": "Pyrex & Glassware", + "iot_rapid_29": "Rapido 29'", + "iot_rapid_39": "Rápido 39' 60°C", + "iot_single": "Solo para 1", + "iot_steam": "Vapor 75 °C", + "iot_super_flash": "Super Flash", + "iot_super_wash": "Lavado Super", + "iot_turbopower": "TurboPower", + "iot_universal": "Universal 60 °C", + "iot_wok_grids_maxi_pans": "Especial Ollas (Wok - Parrilas y Ollas)", + "iot_wok_grids_maxi_pans_soil": "Especial Ollas (Wok - Parrilas y Ollas)", + "iot_yes_quick_cycle": "Yes Quick", + "night": "Ultra Silencioso 55°C", + "prewash": "Pre-lavado", + "rapid_20": "Rápido 20'", + "rapid_24": "Rapido 24'", + "rapid_29": "Rapido 29' 50°C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "Rápido 39' 60°C", + "rapid_49": "Rápido 49'", + "rapid_59": "Rápido 59'", + "sanitising": "Higienizante", + "silence": "Silence", + "silent": "Noche", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", + "special": "Especial", + "special_pw_prz": "Especial", + "steam": "Vapor 75 °C", + "steam_plus": "Vapor Plus 75 °C", + "total_care": "Total Care 50°C", + "ultra_silence": "Ultra Silencioso 55°C", + "ultra_silent": "Ultra Silencioso 55°C", + "universal": "Universal 60 °C", + "universal_plus": "Universal Plus 70 °C", + "zoom_39": "Zoom 39 min" + }, + "name": "Programa" + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "Hash Brown", + "iot_special_beef_fillet": "Filete de ternera", + "iot_special_beef_veal_stew": "Estofado de carne de vacuno", + "iot_special_boiled_rice": "Arroz hervido", + "iot_special_chicken_breast": "Pechuga de pollo", + "iot_special_chicken_legs": "Muslos de pollo", + "iot_special_chocolate_pudding": "Pudín de chocolate", + "iot_special_entrecote": "Entrecot", + "iot_special_fresh_tuna": "Atún fresco", + "iot_special_grilled_vegetables": "Verduras a la parrilla", + "iot_special_lamb_cutlet": "Chuletillas de cordero", + "iot_special_meatballs": "Albóndigas", + "iot_special_minestrone": "Minestrone", + "iot_special_mussels": "Mejillones", + "iot_special_omelette": "Tortilla", + "iot_special_pancakes": "Tortitas", + "iot_special_paris_style_peas": "Guisantes al estilo parisino", + "iot_special_poached_eggs": "Huevos escalfados", + "iot_special_pork_fillet": "Solomillo de cerdo", + "iot_special_pork_ribs": "Costillas de cerdo", + "iot_special_prawns": "Gambas", + "iot_special_quinoa": "Quinoa", + "iot_special_ratatouille": "Pisto", + "iot_special_salmon_fillet": "Filete de salmón", + "iot_special_saute_potatoes": "Patatas salteadas", + "iot_special_scallops": "Vieiras", + "iot_special_scrambled_eggs": "Huevos revueltos", + "iot_special_spelt": "Espelta", + "iot_special_veggy_noodles": "Fideos con verdura", + "iot_special_white_fish_fillet": "Filete de pescado blanco", + "iot_standard_boiling": "Hervir", + "iot_standard_frying": "Freír", + "iot_standard_keep_warm": "Keep Warm", + "iot_standard_melting": "Fundir", + "iot_standard_simmering": "Cocer a fuego lento" + }, + "name": "Programa" + }, + "programs_ov": { + "state": { + "bakery": "Pasta y Panadería", + "bakery_steam": "Oven steam", + "bottom_heating": "Calentamiento Inferior", + "bottom_heating_fan": "Calentamiento Inferior + Ventilador", + "bread": "Pan", + "bread_steam": "Pan al vapor", + "combi": "Combi", + "convection_fan": "Convección + Ventilador", + "convection_fan_turnspit": "Asador giratorio convencional ventilada", + "conventional": "Convección", + "conventional_turnspit": "Asador giratorio convencional", + "defrost": "Descongelación", + "descaling": "Descalcificación", + "fish": "Pescado", + "fish_steam": "Pescado al vapor", + "grill_cata": "Grill", + "grill_fan_cata": "Grill y ventilador", + "grill_fan_pyro": "Grill + Ventilador", + "grill_pyro": "Grill", + "h20_clean": "H2O-Clean", + "iot_bread": "Pan", + "iot_h20_clean": "h2O clean", + "leavening": "Fermentación", + "low_temp_cooking": "Cocción a baja temperatura", + "low_temp_cooking_fish": "Cocción a baja temperatura Pescado", + "low_temp_cooking_fish_steam": "Cocción a baja temperatura Pescado", + "low_temp_cooking_meat": "Cocción a baja temperatura Carne", + "low_temp_cooking_meat_steam": "Cocción a baja temperatura Carne al vapor", + "low_temp_cooking_steam": "Cocción a baja temperatura al vapor", + "meat": "Carne", + "meat_steam": "Meat steam", + "multi_level": "Múltiples niveles", + "paella": "Paella", + "pasta_and_bakery": "Pasta y Panadería", + "pizza": "Pizza", + "pyrolysis": "Pirólisis", + "pyrolysis_plus": "Pirólisis +", + "red_meat": "Carne roja", + "red_meat_steam": "Carne roja al vapor", + "regenerate": "Regenerar", + "soft_plus": "Soft+", + "super_grill": "Super Grill", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Verduras", + "vegetables_cata": "Verduras", + "vegetables_pyro": "Verdura", + "water_discharge": "Descarga de agua", + "white_meat": "Carne blanca", + "white_meat_steam": "Carne blanca al vapor" + }, + "name": "Programa" + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "Color y algodón 20 °C", + "20_degrees_new_energy_label": "20°C", + "active_steam": "Vapor", + "active_wash": "Lavado activo", + "active_wash_steam": "Lavado activo", + "allergy_care": "Antialergias", + "allergy_care_pro": "Allergy Care Pro", + "all_in_one_49": "Todo en uno 49’", + "all_in_one_59": "Todo en uno 59’", + "all_in_one_59_steam": "Lavado activo + Vapor", + "autocare": "Autocare", + "autoclean": "Limpieza del tambor", + "baby_60": "All Baby 60°C", + "care_14": "Rapid Care 14'", + "care_30": "Rapid Care 30'", + "care_44": "Rapid Care 44'", + "checkup": "Revisión", + "colour_59": "Color 59'", + "colour_59_steam": "Colores 59' + vapor", + "cottons": "Algodón", + "cottons_prewash": "Ropa Blanca + Prelavado", + "cottons_steam": "Algodón + Vapor", + "cotton_care_59": "Cotton Care 59 Min", + "delicate_59": "Delicado 59'", + "delicate_silk": "Seda delicada", + "delicate_silk_steam": "Seda delicada + vapor", + "delicati_59": "Delicado 59'", + "delicati_59_steam": "Delicado 59'", + "drain_spin": "Desagüe + centrifugado", + "easy_iron": "Planchado fácil", + "eco_40_60_new_energy_label": "Eco 40-60", + "extra_care": "Cuidado extra", + "fitness": "Deporte", + "fitness_care": "Deporte", + "fresh_care": "Cuidado y frescor", + "fresh_care_steam": "Cuidado y frescor + Vapor", + "handwash_wool": "Lana y lavado a mano", + "high_dry": "Secado algodón", + "hqd_20_degrees": "Algodón 20℃", + "hqd_allergy": "Antialergias", + "hqd_autoclean": "Limpieza del tambor", + "hqd_babycare": "Baby Care", + "hqd_checkup": "Revisión", + "hqd_cottons": "Algodón", + "hqd_delicate": "Ropa delicada", + "hqd_delicate_cradle": "Ropa delicada", + "hqd_dry": "Secado algodón", + "hqd_dry_synthetics": "Secado de ropa mixta", + "hqd_duvet": "Edredón", + "hqd_eco_40_60_degrees": "Eco 40-60", + "hqd_handwash_wool": "Lana", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "Mixta", + "hqd_quick_15": "Rápido 15'", + "hqd_quick_wash_57": "Lavado rápido 57 min", + "hqd_rapid_wash_and_dry": "Lavar y secar", + "hqd_refresh": "Refresh", + "hqd_rinse": "Aclarado", + "hqd_shirts": "Camisas", + "hqd_smart": "Smart A.I.", + "hqd_spin": "Centrifugado", + "hqd_sport": "Deporte", + "hqd_super_fast": "Rápido 39’", + "hqd_synthetic_and_coloured": "Ropa sintética", + "hygiene_59": "Higiene Plus 59'", + "hygiene_60": "Higiene 60° C", + "hygiene_plus_59": "Higiene Plus 59'", + "hygiene_plus_59_min": "Higiene Plus 59'", + "hygiene_pro_49_min": "Higiene Pro 49 min", + "hygiene_pro_steam": "Higiene Pro + Vapor", + "intensive_40": "Intensivo 40°C", + "intensive_40_steam": "Intensivo 40°C + vapor", + "iot_active_steam": "Vapor", + "iot_active_wash_steam": "Lavado activo", + "iot_allergy_care_pro": "Allergy Care Pro", + "iot_all_in_one_59_steam": "Lavado activo + Vapor", + "iot_checkup": "Revisión", + "iot_colour_59_steam": "Colores 59' + vapor", + "iot_cottons_steam": "Algodón + Vapor", + "iot_delicate_silk_steam": "Seda delicada + vapor", + "iot_delicati_59_steam": "Delicado 59'", + "iot_dry_air_refresh": "Air Refresh", + "iot_dry_anti_mites": "Antiácaros", + "iot_dry_baby": "Bebé", + "iot_dry_backpacks": "Mochilas", + "iot_dry_bathrobe": "Albornoces y telas porosas", + "iot_dry_bed_linen": "Ropa de cama", + "iot_dry_cotton_dry": "Secado algodón", + "iot_dry_cuddly_toys": "Peluches", + "iot_dry_curtains": "Cortinas", + "iot_dry_dehumidifier": "Eliminador de humedad", + "iot_dry_delicates_antiallergy": "Ropa delicada - Antialergias", + "iot_dry_delicate_tablecloths": "Manteles delicados", + "iot_dry_denim_jeans": "Denim - Vaqueros", + "iot_dry_easy_iron_cotton": "Planchado fácil - Algodón", + "iot_dry_easy_iron_synthetics": "Planchado fácil - Sintéticos", + "iot_dry_gym_fit": "Gimnasio - Ropa de deporte", + "iot_dry_lingerie": "Lencería", + "iot_dry_mixed_dry": "Secado de ropa mixta", + "iot_dry_rapid_60_min_delicates": "Rápido 60' - Delicados", + "iot_dry_shirts": "Camisas", + "iot_dry_swimsuits_and_bikinis": "Trajes de baño", + "iot_dry_synthetics": "Secado de prendas sintéticas", + "iot_dry_synthetic_dry": "Secado de prendas sintéticas", + "iot_dry_tablecloths": "Manteles", + "iot_dry_technical_fabrics": "Tejidos técnicos", + "iot_dry_warm_embrace": "Cálido abrazo", + "iot_dry_wool_dry": "Secado lana", + "iot_easy_iron": "Planchado fácil", + "iot_fresh_care_steam": "Cuidado y frescor + Vapor", + "iot_hygiene_pro_steam": "Higiene Pro + Vapor", + "iot_intensive_40_steam": "Intensivo 40°C + vapor", + "iot_mixed_steam": "Ropa mixta + Vapor", + "iot_mix_and_colour_59_steam": "Mixta y de color 59' + Vapor", + "iot_perfect_cotton_59_steam": "Algodon Perfecto 59'", + "iot_rapid_a_class_60_steam": "Clase rápida A 60 + vapor", + "iot_resistant_cotton_steam": "Algodón + Vapor", + "iot_shirts_steam": "Camisas + Vapor", + "iot_single_item_steam": "Elemento único + Vapor", + "iot_smart_wash": "Smart Wash", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "Especial 39' + Vapor", + "iot_steam_hygiene_plus": "Vapor higiene extra ", + "iot_synthetic_and_coloured_steam": "Ropa sintética y de color + Vapor", + "iot_wash_and_dry": "Lavar y secar", + "iot_wash_anti_mites": "Antiácaros", + "iot_wash_anti_odor": "Antiolor", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "Desinfectante", + "iot_wash_baby_sanitizer_steam": "Desinfectante para bebés + vapor", + "iot_wash_backpacks": "Mochilas", + "iot_wash_backpacks_zelig": "Mochilas", + "iot_wash_bathrobe": "Albornoces y toallas", + "iot_wash_bathrobe_steam": "Albornoces + Vapor", + "iot_wash_bed_linen": "Ropa de cama", + "iot_wash_bed_linen_steam": "Ropa de cama + Vapor", + "iot_wash_bed_linen_zelig": "Ropa de cama", + "iot_wash_big_single_load": "Gran carga única", + "iot_wash_bleaching": "Blanqueo", + "iot_wash_blood_stains": "Manchas de sangre", + "iot_wash_cashmere": "Cachemira", + "iot_wash_chocolate_stains": "Manchas de chocolate", + "iot_wash_cold_wash": "Lavado en frío", + "iot_wash_colored": "Color", + "iot_wash_colored_anti_stain": "Eliminación de manchas en prendas de color", + "iot_wash_colored_delicate": "Ropa de color delicada", + "iot_wash_coloured": "Ropa de color", + "iot_wash_coloured_bed_linen": "Ropa de cama de color", + "iot_wash_coloured_bed_linen_steam": "Ropa de cama de color + vapor", + "iot_wash_coloured_curtains": "Cortinas de color", + "iot_wash_coloured_shirts": "Camisas de color", + "iot_wash_coloured_shirts_steam": "Camisas de color + vapor", + "iot_wash_coloured_steam": "Ropa de color + Vapor", + "iot_wash_coloured_tableclothes": "Manteles de color", + "iot_wash_coloured_tableclothes_steam": "Manteles de color + Vapor", + "iot_wash_cotton": "Algodón", + "iot_wash_cotton_steam": "Algodón + Vapor", + "iot_wash_cuddly_toys": "Peluches", + "iot_wash_curtains": "Cortinas", + "iot_wash_curtains_steam": "Cortinas + Vapor", + "iot_wash_curtains_zelig": "Cortinas", + "iot_wash_dark": "Ropa oscura", + "iot_wash_darks_and_coloured_44": "Ropa oscura y de color 44’", + "iot_wash_darks_and_coloured_59": "Ropa oscura y de color 59’", + "iot_wash_darks_and_coloured_xl": "Ropa oscura y de color XL", + "iot_wash_dark_steam": "Ropa oscura + Vapor", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "Ropa delicada", + "iot_wash_delicate_antiallergy": "Antialergias para prendas delicadas", + "iot_wash_delicate_antiallergy_steam": "Antialergias para prendas delicadas + Vapor", + "iot_wash_delicate_antiallergy_zelig": "Antialergias para prendas delicadas", + "iot_wash_delicate_colors": "Ropa delicada de color", + "iot_wash_delicate_colors_steam": "Colores + vapor", + "iot_wash_delicate_dark": "Ropa oscura delicada", + "iot_wash_delicate_steam": "Ropa delicada + Vapor", + "iot_wash_delicate_tablecloths": "Manteles delicados", + "iot_wash_delicate_tablecloths_steam": "Manteles delicados + Vapor", + "iot_wash_delicate_whites": "Ropa blanca delicada", + "iot_wash_denim_jeans": "Denim - Vaqueros", + "iot_wash_diving_suits": "Trajes de buceo", + "iot_wash_diving_suits_zelig": "Trajes de buceo", + "iot_wash_down_jackets": "Plumíferos", + "iot_wash_down_jackets_zelig": "Plumíferos", + "iot_wash_duvet": "Edredón", + "iot_wash_fruit_stains": "Manchas de fruta", + "iot_wash_gym_fit": "Gimnasio - Ropa de deporte", + "iot_wash_handwash": "Lavado a mano", + "iot_wash_handwash_colored": "Lavado a mano de ropa de color", + "iot_wash_handwash_dark": "Lavado a mano de ropa oscura", + "iot_wash_lingerie": "Lencería", + "iot_wash_masks_refresh": "Lavado de mascarillas", + "iot_wash_masks_sanification": "Desinfección de mascarillas", + "iot_wash_masks_sanification_steam": "Desinfección de mascarillas + Vapor", + "iot_wash_mats": "Alfombras", + "iot_wash_men_s_trousers": "Pantalones ", + "iot_wash_mixed": "Ropa mixta", + "iot_wash_mixed_steam": "Ropa mixta + Vapor", + "iot_wash_mix_and_coloured_44": "Mixta y de color 44’", + "iot_wash_mix_and_coloured_59": "Mixta y de color 59’", + "iot_wash_mix_and_coloured_xl": "Mixta y de color XL", + "iot_wash_new_clothes": "Ropa nueva", + "iot_wash_perfect_white": "Blanco perfecto", + "iot_wash_perfect_white_steam": "Blanco perfecto + Vapor", + "iot_wash_pets": "Accesorios para mascotas", + "iot_wash_pets_hair_removal": "Eliminación del pelo de las mascotas", + "iot_wash_pets_odours_stains_removal": "Eliminación de manchas y olores domésticos", + "iot_wash_pets_steam": "Accesorios para mascotas", + "iot_wash_playsuits": "Monos", + "iot_wash_playsuits_steam": "Monos + Vapor", + "iot_wash_quick_drum_cleaner": "Limpiador rápido de tambor", + "iot_wash_rapid_14": "Rápido 14’", + "iot_wash_rapid_30": "Rápido 30’", + "iot_wash_rapid_44": "Rápido 44’", + "iot_wash_rapid_59": "Rápido 59’", + "iot_wash_rapid_59_steam": "Rápido 59' + vapor", + "iot_wash_refresh_14_min": "Refrescar 14'", + "iot_wash_resistant_colored": "Ropa de color resistente", + "iot_wash_resistant_dark": "Ropa oscura resistente", + "iot_wash_resistant_whites": "Ropa blanca resistente", + "iot_wash_rinse": "Aclarado", + "iot_wash_shirts": "Camisas", + "iot_wash_shirts_steam": "Camisas + Vapor", + "iot_wash_silk": "Seda", + "iot_wash_ski_suit": "Trajes de esquí", + "iot_wash_ski_suit_zelig": "Trajes de esquí", + "iot_wash_spin": "Centrifugado", + "iot_wash_sport": "Deporte", + "iot_wash_sport_anti_odor": "Ropa deportiva antiolor", + "iot_wash_sport_anti_odor_zelig": "Ropa deportiva antiolor", + "iot_wash_stains_remover": "Quitamanchas", + "iot_wash_swimsuits_and_bikinis": "Trajes de baño", + "iot_wash_synthetic": "Ropa sintética", + "iot_wash_synthetic_steam": "Ropa sintética + Vapor", + "iot_wash_tablecloths": "Manteles", + "iot_wash_tablecloths_steam": "Manteles + Vapor", + "iot_wash_technical_fabrics": "Tejidos técnicos", + "iot_wash_technical_fabrics_zelig": "Tejidos técnicos", + "iot_wash_technical_jackets": "Chaquetas técnicas", + "iot_wash_technical_jackets_zelig": "Chaquetas técnicas", + "iot_wash_trainers": "Deportivas", + "iot_wash_whites": "Ropa blanca", + "iot_wash_whites_44": "Ropa blanca 44’", + "iot_wash_whites_59": "Ropa blanca 59’", + "iot_wash_whites_xl": "Ropa blanca XL", + "iot_wash_wine_stains": "Manchas de vino", + "iot_wash_wool": "Lana", + "jeans": "Vaqueros", + "jeans_60": "Jeans", + "low_dry": "Secado de ropa mixta", + "mixed": "Ropa mixta", + "mixed_and_colored_59": "Mixta y de color 59'", + "mixed_steam": "Ropa mixta + Vapor", + "mix_and_colour_59": "Color Y Mixtos 59'", + "mix_and_colour_59_steam": "Mixta y de color 59' + Vapor", + "night_and_day": "Noche y día", + "night_wash": "Ciclo nocturno", + "perfect_59": "Perfecto 59'", + "perfect_cotton_59": "Algodon Perfecto 59'", + "perfect_cotton_59_steam": "Algodon Perfecto 59'", + "perfect_whites_59": "Blancos Perfectos 59'", + "rapid_14_min": "Rapido 14'", + "rapid_30_min": "Rápido 30'", + "rapid_44_min": "Rápido 44'", + "rapid_a_class_60": "Clase rápida A 60", + "rapid_a_class_60_steam": "Clase rápida A 60 + vapor", + "rapid_wash_and_dry_59_min": "Lavado y secado 59'", + "resistant_cotton": "Algodón", + "resistant_cotton_steam": "Algodón + Vapor", + "rinse": "Aclarado", + "shirts_steam": "Camisas + Vapor", + "silent_night": "Ciclo nocturno", + "single_item": "Elemento único", + "single_item_steam": "Elemento único + Vapor", + "smart_wash": "Smart Wash", + "soft_care": "Cuidado suave", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "Especial 39'", + "special_39_full_load": "Especial 39'", + "special_39_full_load_steam": "Especial 39' + Vapor", + "special_49": "Especial 49'", + "sport_39": "Deporte 39'", + "sport_plus_29": "Deporte Plus 29\"", + "sport_plus_39": "Deporte Plus 39'", + "steam_39": "Vapor 39'", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro - Algodón", + "steam_care_pro_delicates": "Steam Care Pro - Delicados", + "steam_care_pro_synthetic": "Steam Care Pro - Sintéticos", + "steam_hygiene_plus": "Vapor higiene extra ", + "synthetics": "Ropa sintética", + "synthetic_and_coloured": "Ropa sintética y de color", + "synthetic_and_coloured_steam": "Ropa sintética y de color + Vapor", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "Cuidado total", + "tumbling": "Rotación", + "wool": "Lana", + "wool_and_delicates_49": "Lana/Delicados 49'", + "wool_dry": "Secado lana", + "wool_soft_care": "Lana & Soft Care" + }, + "name": "Programa" + }, + "programs_ref": { + "state": { + "auto_set": "AJUSTE AUTOMÁTICO", + "cheese": "Queso", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Modo Eco", + "fruits_and_veg": "Frutas Y Verduras", + "fruit_and_veg": "Frutas Y Verduras", + "holiday": "VACACIONES", + "keep_fresh": "0° Fresh", + "no_mode_selected": "No se ha seleccionado ningún modo", + "quick_cool": "QUICK COOL", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + }, + "name": "Programa" } }, "select": { @@ -1030,7 +1588,8 @@ "iot_uv_and_dry": "UV + Deshumidificador", "iot_uv_and_fan": "UV + Ventilador", "iot_uv_and_heat": "UV + Calor" - } + }, + "name": "Programa" }, "programs_ref": { "state": { @@ -1052,7 +1611,8 @@ "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" - } + }, + "name": "Programa" }, "remaining_time": { "name": "Tiempo restante" diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index 295e444..86712cb 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -58,7 +58,8 @@ "19": "Séchage", "20": "Séchage", "11": "Prêt", - "17": "unknown" + "17": "unknown", + "12": "unkown" }, "name": "Phase" }, @@ -306,7 +307,8 @@ "woolmark": "Woolmark", "xxl_load": "Charge XXL", "zoom_59": "Zoom 59" - } + }, + "name": "Programme" }, "room_temperature": { "name": "Température ambiante" @@ -319,6 +321,562 @@ }, "fridge_temp": { "name": "Température du réfrigérateur" + }, + "programs_ac": { + "state": { + "iot_10_heating": "Fonction Chauffage 10 °C", + "iot_auto": "Automatique", + "iot_cool": "Frais", + "iot_dry": "Sec", + "iot_fan": "Ventilateur", + "iot_heat": "Chaleur", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Auto-purification", + "iot_self_clean": "Auto-nettoyage", + "iot_self_clean_56": "Steri-Clean 56°C", + "iot_simple_start": "Démarrez maintenant", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Auto", + "iot_uv_and_cool": "UV + Froid", + "iot_uv_and_dry": "UV + Déshumidificateur", + "iot_uv_and_fan": "UV + ventilateur", + "iot_uv_and_heat": "UV + Chaleur" + }, + "name": "Programme" + }, + "programs_dw": { + "state": { + "59_min": "Rapide 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "Auto universel 50 - 60°C", + "auto_universal_plus": "Auto universel Plus 65 - 75°C", + "auto_universal_plus_soil": "Auto universel Plus 65 - 75°C", + "auto_universal_soil": "Auto universel 50 - 60°C", + "auto_wash": "Lavage automatique", + "auto_wash_soil": "Lavage automatique", + "classe_a_59": "Classe A 59' 65°C", + "delicate": "Délicat 45°C", + "dishwasher_care": "Cycle de nettoyage du calcaire", + "eco": "Éco", + "eco_asynch": "Eco 45°C", + "eco_bldc": "Eco 45°C", + "eco_synch": "Eco 45°C", + "gentle_wash": "Gentle wash", + "glass": "En verre", + "glassware": "Verres 45 °C", + "glass_care": "Glass Care", + "hygiene": "Hygiène", + "hygiene_plus": "Hygiène 75 °C", + "intensive": "Intensif ", + "intensive_rapid": "Intensif rapide", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "Auto universel 50 - 60°C", + "iot_auto_wash_soil": "Lavage automatique", + "iot_baby_care": "Soin Bébé", + "iot_breakfast": "Déjeuner", + "iot_checkup": "Vérification", + "iot_china_crystals": "Cristal de Chine", + "iot_classe_a_59": "Rapide 59'", + "iot_cocktail_glasses": "Verre à cocktail", + "iot_cocktail_glasses_soil": "Verre à cocktail", + "iot_daily_care": "Quotidien", + "iot_daily_care_soil": "Quotidien", + "iot_delicate": "Délicat 45°C", + "iot_dinner_for_two": "Repas à deux", + "iot_dinner_for_two_soil": "Repas à deux", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "Eco 45°C", + "iot_eco_bldc": "Eco 45°C", + "iot_eco_synch": "Eco 45°C", + "iot_extra_hygiene": "Extra Hygiène", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "Happy Hour", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "Repas de fête", + "iot_party_soil": "Repas de fête", + "iot_pizza_menu": "Menu Pizza", + "iot_pizza_menu_soil": "Menu Pizza", + "iot_plastic_tupperware": "Plastique & Tupperware", + "iot_porcelain": "Porcelaine", + "iot_power_mix_wash": "Power Mix Wash", + "iot_power_mix_wash_soil": "Power Mix Wash", + "iot_prewash": "Prélavage", + "iot_pyrex_and_glassware": "Pyrex & Verre", + "iot_rapid_29": "Rapide 29'", + "iot_rapid_39": "Rapide 39' 60 °C", + "iot_single": "Une personne", + "iot_steam": "Vapeur 75 °C", + "iot_super_flash": "Super Rapide", + "iot_super_wash": "Lavage Super Intensif", + "iot_turbopower": "TurboPower", + "iot_universal": "Universel 60 °C", + "iot_wok_grids_maxi_pans": "Spécial casserole (Wok - Grill & Casserole)", + "iot_wok_grids_maxi_pans_soil": "Spécial casserole (Wok - Grill & Casserole)", + "iot_yes_quick_cycle": "Yes Quick", + "night": "Ultra silence 55°C", + "prewash": "Prélavage", + "rapid_20": "Rapide 20'", + "rapid_24": "Rapide 24'", + "rapid_29": "Rapide 29' 50°C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "Rapide 39' 60 °C", + "rapid_49": "Rapide 49'", + "rapid_59": "Rapide 59'", + "sanitising": "Assainissant", + "silence": "Silence", + "silent": "Nuit", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", + "special": "spécial", + "special_pw_prz": "spécial", + "steam": "Vapeur 75 °C", + "steam_plus": "Vapeur Plus 75 °C", + "total_care": "Total Care 50°C", + "ultra_silence": "Ultra silence 55°C", + "ultra_silent": "Ultra silence 55°C", + "universal": "Universel 60 °C", + "universal_plus": "Universel Plus 70 °C", + "zoom_39": "Zoom 39 min" + }, + "name": "Programme" + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "Galettes de pommes de terre frites", + "iot_special_beef_fillet": "Filet de bœuf", + "iot_special_beef_veal_stew": "Ragoût de bœuf et de veau", + "iot_special_boiled_rice": "Bouillie de riz", + "iot_special_chicken_breast": "Blanc de poulet", + "iot_special_chicken_legs": "Cuisses de poulets", + "iot_special_chocolate_pudding": "Pudding au chocolat", + "iot_special_entrecote": "Entrecôte", + "iot_special_fresh_tuna": "Thon frais", + "iot_special_grilled_vegetables": "Légumes grillés", + "iot_special_lamb_cutlet": "Côtelettes d’agneau", + "iot_special_meatballs": "Boulettes de viande", + "iot_special_minestrone": "Minestrone", + "iot_special_mussels": "Moules", + "iot_special_omelette": "Omelette", + "iot_special_pancakes": "Crêpes", + "iot_special_paris_style_peas": "Petits pois à la française", + "iot_special_poached_eggs": "Œufs pochés", + "iot_special_pork_fillet": "Filet de porc", + "iot_special_pork_ribs": "Côtes de porc", + "iot_special_prawns": "Crevettes", + "iot_special_quinoa": "Quinoa", + "iot_special_ratatouille": "Ratatouille", + "iot_special_salmon_fillet": "Filet de saumon", + "iot_special_saute_potatoes": "Pommes de terre sautées", + "iot_special_scallops": "Coquilles Saint-Jacques", + "iot_special_scrambled_eggs": "Œufs brouillés", + "iot_special_spelt": "Épeautre", + "iot_special_veggy_noodles": "Nouilles végétariennes", + "iot_special_white_fish_fillet": "Filet de poisson blanc", + "iot_standard_boiling": "Bouillir", + "iot_standard_frying": "Frire", + "iot_standard_keep_warm": "Maintien au chaud", + "iot_standard_melting": "Fondre", + "iot_standard_simmering": "Mijoter" + }, + "name": "Programme" + }, + "programs_ov": { + "state": { + "bakery": "Pâtes et pains", + "bakery_steam": "Four à vapeur", + "bottom_heating": "Sole", + "bottom_heating_fan": "Sole brassée", + "bread": "Pain", + "bread_steam": "Pain àla vapeur", + "combi": "Combi", + "convection_fan": "Chaleur tournante", + "convection_fan_turnspit": "Tournebrocheà convection ventilée", + "conventional": "Convection naturelle", + "conventional_turnspit": "Tournebroche conventionnel", + "defrost": "Décongélation", + "descaling": "Détartrage", + "fish": "Poisson", + "fish_steam": "Poisson à la vapeur", + "grill_cata": "Gril", + "grill_fan_cata": "Turbogril", + "grill_fan_pyro": "Turbogril", + "grill_pyro": "Gril", + "h20_clean": "H2O-Clean", + "iot_bread": "Pain", + "iot_h20_clean": "h2O clean", + "leavening": "Étuve", + "low_temp_cooking": "Cuisson à basse température", + "low_temp_cooking_fish": "Cuisson à basse température Poisson", + "low_temp_cooking_fish_steam": "Cuisson à basse température Poisson à la vapeur", + "low_temp_cooking_meat": "Cuisson à basse température Viande", + "low_temp_cooking_meat_steam": "Cuisson à basse température Viande à la vapeur", + "low_temp_cooking_steam": "Cuisson à basse température à la vapeur", + "meat": "Viande", + "meat_steam": "Viande à la vapeur", + "multi_level": "Chaleur pulsée", + "paella": "Paella", + "pasta_and_bakery": "Pâtes et pains", + "pizza": "Pizza", + "pyrolysis": "Pyrolyse", + "pyrolysis_plus": "Pyrolyse +", + "red_meat": "Viande rouge", + "red_meat_steam": "Viande rouge à la vapeur", + "regenerate": "Régénérer", + "soft_plus": "Soft+", + "super_grill": "Super Gril", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Légumes", + "vegetables_cata": "Légumes", + "vegetables_pyro": "Légumes", + "water_discharge": "Décharge d'eau", + "white_meat": "Viande blanche", + "white_meat_steam": "Viande blanche à la vapeur" + }, + "name": "Programme" + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "Couleurs 20 °C et cotons", + "20_degrees_new_energy_label": "20°C", + "active_steam": "Vapeur d'eau", + "active_wash": "Lavage actif", + "active_wash_steam": "Lavage actif", + "allergy_care": "Soin Allergie", + "allergy_care_pro": "Soin Allergie Pro", + "all_in_one_49": "Tout-en-un 49'.", + "all_in_one_59": "Tout-en-un 59'.", + "all_in_one_59_steam": "Lavage actif + vapeur", + "autocare": "Autocare", + "autoclean": "Nettoyage du tambour", + "baby_60": "Bébé 60°C", + "care_14": "Soin Rapide 14'", + "care_30": "Soin Rapide 30'", + "care_44": "Soin Rapide 44'", + "checkup": "Vérification", + "colour_59": "Couleurs 59'", + "colour_59_steam": "Couleurs 59' + Vapeur", + "cottons": "Coton", + "cottons_prewash": "Coton + prélavage", + "cottons_steam": "Coton + Vapeur d'eau", + "cotton_care_59": "Cotton Care 59 Min", + "delicate_59": "Délicat 59'", + "delicate_silk": "Délicat", + "delicate_silk_steam": "Délicat + vapeur", + "delicati_59": "Délicat 59'", + "delicati_59_steam": "Délicat 59'", + "drain_spin": "Vidange et essorage", + "easy_iron": "Repassage facile", + "eco_40_60_new_energy_label": "Éco 40-60", + "extra_care": "Soin Extra", + "fitness": "Fitness Care", + "fitness_care": "Fitness Care", + "fresh_care": "Soin frais", + "fresh_care_steam": "Fresh Care + vapeur", + "handwash_wool": "Lavage à la main et laine", + "high_dry": "Séchage du coton", + "hqd_20_degrees": "Coton 20 ℃", + "hqd_allergy": "Soin Allergie", + "hqd_autoclean": "Nettoyage du tambour", + "hqd_babycare": "Soin Bébé", + "hqd_checkup": "Vérification", + "hqd_cottons": "Coton", + "hqd_delicate": "Délicats", + "hqd_delicate_cradle": "Délicats", + "hqd_dry": "Séchage du coton", + "hqd_dry_synthetics": "Séchage des tissus mélangés", + "hqd_duvet": "Couette", + "hqd_eco_40_60_degrees": "Éco 40-60", + "hqd_handwash_wool": "Laine", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "Tissus mélangés", + "hqd_quick_15": "Rapide 15'", + "hqd_quick_wash_57": "Lavage rapide 57 min", + "hqd_rapid_wash_and_dry": "Lavage et séchage", + "hqd_refresh": "Coup d\\'éclat", + "hqd_rinse": "Rinçage", + "hqd_shirts": "Chemises", + "hqd_smart": "Smart A.I.", + "hqd_spin": "Essorage", + "hqd_sport": "Sport", + "hqd_super_fast": "Rapide 39’", + "hqd_synthetic_and_coloured": "Synthétiques", + "hygiene_59": "Hygiene Plus 59'", + "hygiene_60": "Hygiène 60°", + "hygiene_plus_59": "Hygiene Plus 59'", + "hygiene_plus_59_min": "Hygiene Plus 59'", + "hygiene_pro_49_min": "Hygiene Pro 49 min", + "hygiene_pro_steam": "Hygiene Pro + Vapeur", + "intensive_40": "Intensif 40°C", + "intensive_40_steam": "Intensif 40°C + Vapeur", + "iot_active_steam": "Vapeur d'eau", + "iot_active_wash_steam": "Lavage actif", + "iot_allergy_care_pro": "Soin Allergie Pro", + "iot_all_in_one_59_steam": "Lavage actif + vapeur", + "iot_checkup": "Vérification", + "iot_colour_59_steam": "Couleurs 59' + Vapeur", + "iot_cottons_steam": "Coton + Vapeur d'eau", + "iot_delicate_silk_steam": "Délicat + vapeur", + "iot_delicati_59_steam": "Délicat 59'", + "iot_dry_air_refresh": "Rafraîchissement de l'air", + "iot_dry_anti_mites": "Anti-acarien", + "iot_dry_baby": "Bébé", + "iot_dry_backpacks": "Sacs à dos", + "iot_dry_bathrobe": "Peignoirs et tissus poreux", + "iot_dry_bed_linen": "Linge de lit", + "iot_dry_cotton_dry": "Séchage du coton", + "iot_dry_cuddly_toys": "Animaux en peluche", + "iot_dry_curtains": "Rideaux", + "iot_dry_dehumidifier": "Élimination de l\\'humidité", + "iot_dry_delicates_antiallergy": "Délicat - anti-allergique", + "iot_dry_delicate_tablecloths": "Nappes délicates", + "iot_dry_denim_jeans": "Denim - Jeans", + "iot_dry_easy_iron_cotton": "Repassage facile - Coton", + "iot_dry_easy_iron_synthetics": "Repassage facile - Synthétiques", + "iot_dry_gym_fit": "Gym - vêtements de fitness", + "iot_dry_lingerie": "Lingerie", + "iot_dry_mixed_dry": "Séchage des tissus mélangés", + "iot_dry_rapid_60_min_delicates": "Rapid 60' - Délicats", + "iot_dry_shirts": "Chemises", + "iot_dry_swimsuits_and_bikinis": "Maillots de bain", + "iot_dry_synthetics": "Séchage des synthétiques", + "iot_dry_synthetic_dry": "Séchage des synthétiques", + "iot_dry_tablecloths": "Nappes", + "iot_dry_technical_fabrics": "Tissus techniques", + "iot_dry_warm_embrace": "Étreinte chaude", + "iot_dry_wool_dry": "Séchage de la laine", + "iot_easy_iron": "Repassage facile", + "iot_fresh_care_steam": "Fresh Care + vapeur", + "iot_hygiene_pro_steam": "Hygiene Pro + Vapeur", + "iot_intensive_40_steam": "Intensif 40°C + Vapeur", + "iot_mixed_steam": "Tissus mélangés + Vapeur d'eau", + "iot_mix_and_colour_59_steam": "Mixtes et couleurs 59’ + vapeur", + "iot_perfect_cotton_59_steam": "Coton Parfait 59'", + "iot_rapid_a_class_60_steam": "Classe A rapide 60 + Vapeur", + "iot_resistant_cotton_steam": "Coton + Vapeur d'eau", + "iot_shirts_steam": "Chemises + Vapeur", + "iot_single_item_steam": "Article unique + vapeur", + "iot_smart_wash": "Lavage intelligent", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "Spécial 39’ + vapeur", + "iot_steam_hygiene_plus": "Vapeur Hygiène Plus ", + "iot_synthetic_and_coloured_steam": "Synthétiques et couleurs + vapeur", + "iot_wash_and_dry": "Lavage et séchage", + "iot_wash_anti_mites": "Anti-acarien", + "iot_wash_anti_odor": "Anti-odeur", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "Assainissant", + "iot_wash_baby_sanitizer_steam": "Assainissant + Vapeur pour bébés", + "iot_wash_backpacks": "Sacs à dos", + "iot_wash_backpacks_zelig": "Sac à dos", + "iot_wash_bathrobe": "Peignoirs et serviettes", + "iot_wash_bathrobe_steam": "Peignoir de bain + Vapeur d'eau", + "iot_wash_bed_linen": "Linge de lit", + "iot_wash_bed_linen_steam": "Linge de lit + Vapeur d'eau", + "iot_wash_bed_linen_zelig": "Linge de lit", + "iot_wash_big_single_load": "Grande charge unique", + "iot_wash_bleaching": "Blanchiment", + "iot_wash_blood_stains": "Taches de sang", + "iot_wash_cashmere": "Cachemire", + "iot_wash_chocolate_stains": "Taches de chocolat", + "iot_wash_cold_wash": "Lavage à froid", + "iot_wash_colored": "Colorés", + "iot_wash_colored_anti_stain": "Détachage pour les couleurs", + "iot_wash_colored_delicate": "Délicats colorés", + "iot_wash_coloured": "Couleurs", + "iot_wash_coloured_bed_linen": "Draps de couleur", + "iot_wash_coloured_bed_linen_steam": "Draps de couleur + Vapeur", + "iot_wash_coloured_curtains": "Rideaux de couleur", + "iot_wash_coloured_shirts": "T-shirts de couleur", + "iot_wash_coloured_shirts_steam": "Chemises colorées + Vapeur", + "iot_wash_coloured_steam": "Couleurs + Vapeur d'eau", + "iot_wash_coloured_tableclothes": "Nappes de couleur", + "iot_wash_coloured_tableclothes_steam": "Nappes de couleur + vapeur", + "iot_wash_cotton": "Coton", + "iot_wash_cotton_steam": "Coton + Vapeur d'eau", + "iot_wash_cuddly_toys": "Animaux en peluche", + "iot_wash_curtains": "Rideaux", + "iot_wash_curtains_steam": "Rideaux+Vapeur d'eau", + "iot_wash_curtains_zelig": "Rideaux", + "iot_wash_dark": "Vêtements sombres", + "iot_wash_darks_and_coloured_44": "Foncés et colorés 44'", + "iot_wash_darks_and_coloured_59": "Foncés et colorés 59'", + "iot_wash_darks_and_coloured_xl": "Foncés et colorés XL", + "iot_wash_dark_steam": "Vêtements sombres + Vapeur d'eau", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "Délicats", + "iot_wash_delicate_antiallergy": "Anti-allergie pour les personnes fragiles", + "iot_wash_delicate_antiallergy_steam": "Anti-allergie pour les personnes fragiles + Vapeur d'eau", + "iot_wash_delicate_antiallergy_zelig": "Anti-allergie pour les personnes fragiles", + "iot_wash_delicate_colors": "Délicats de couleur", + "iot_wash_delicate_colors_steam": "Couleurs + Vapeur", + "iot_wash_delicate_dark": "Foncés délicats", + "iot_wash_delicate_steam": "Délicats + Vapeur d'eau", + "iot_wash_delicate_tablecloths": "Nappes délicates", + "iot_wash_delicate_tablecloths_steam": "Nappes délicates + Vapeur d'eau", + "iot_wash_delicate_whites": "Blancs délicats", + "iot_wash_denim_jeans": "Denim - jeans", + "iot_wash_diving_suits": "Combinaisons de plongée", + "iot_wash_diving_suits_zelig": "Combinaisons de plongée", + "iot_wash_down_jackets": "Vestes en duvet", + "iot_wash_down_jackets_zelig": "Vestes en duvet", + "iot_wash_duvet": "Couette", + "iot_wash_fruit_stains": "Taches de fruits", + "iot_wash_gym_fit": "Gym - vêtements de fitness", + "iot_wash_handwash": "Lavage à la main", + "iot_wash_handwash_colored": "Lavage à la main des colorés", + "iot_wash_handwash_dark": "Lavage à la main des foncés", + "iot_wash_lingerie": "Lingerie", + "iot_wash_masks_refresh": "Rafraîchissement des masques", + "iot_wash_masks_sanification": "Désinfection des masques", + "iot_wash_masks_sanification_steam": "Désinfection des masques + Vapeur d'eau", + "iot_wash_mats": "Tapis", + "iot_wash_men_s_trousers": "Pantalons ", + "iot_wash_mixed": "Tissus mélangés", + "iot_wash_mixed_steam": "Tissus mélangés + Vapeur d'eau", + "iot_wash_mix_and_coloured_44": "Tissus mélangés et colorés 44'", + "iot_wash_mix_and_coloured_59": "Tissus mélangés et colorés 59'", + "iot_wash_mix_and_coloured_xl": "Tissus mélangés et colorés XL", + "iot_wash_new_clothes": "Vêtements neufs", + "iot_wash_perfect_white": "Un blanc parfait", + "iot_wash_perfect_white_steam": "Un blanc parfait + Vapeur d'eau", + "iot_wash_pets": "Accessoires pour animaux", + "iot_wash_pets_hair_removal": "Élimination des poils d’animaux de compagnie", + "iot_wash_pets_odours_stains_removal": "Élimination des taches et des odeurs provenant des animaux de compagnie", + "iot_wash_pets_steam": "Accessoires pour animaux", + "iot_wash_playsuits": "Barboteuses", + "iot_wash_playsuits_steam": "Barboteuses + Vapeur d'eau", + "iot_wash_quick_drum_cleaner": "Nettoyant tambour rapide", + "iot_wash_rapid_14": "Rapide 14’", + "iot_wash_rapid_30": "Rapide 30’", + "iot_wash_rapid_44": "Rapide 44'", + "iot_wash_rapid_59": "Rapide 59'", + "iot_wash_rapid_59_steam": "Rapide 59' + Vapeur", + "iot_wash_refresh_14_min": "Rafraîchir 14'", + "iot_wash_resistant_colored": "Colorés résistants", + "iot_wash_resistant_dark": "Foncés résistants", + "iot_wash_resistant_whites": "Blancs résistants", + "iot_wash_rinse": "Rinçage", + "iot_wash_shirts": "Chemises", + "iot_wash_shirts_steam": "Chemises + Vapeur d'eau", + "iot_wash_silk": "Soie", + "iot_wash_ski_suit": "Combinaisons de ski", + "iot_wash_ski_suit_zelig": "Combinaisons de ski", + "iot_wash_spin": "Essorage", + "iot_wash_sport": "Sport", + "iot_wash_sport_anti_odor": "Anti-odeur pour les vêtements de sport", + "iot_wash_sport_anti_odor_zelig": "Anti-odeur pour les vêtements de sport", + "iot_wash_stains_remover": "Détachant", + "iot_wash_swimsuits_and_bikinis": "Maillots de bain", + "iot_wash_synthetic": "Synthétiques", + "iot_wash_synthetic_steam": "Synthétiques + Vapeur d'eau", + "iot_wash_tablecloths": "Nappes", + "iot_wash_tablecloths_steam": "Nappes + Vapeur d'eau", + "iot_wash_technical_fabrics": "Tissus techniques", + "iot_wash_technical_fabrics_zelig": "Tissus techniques", + "iot_wash_technical_jackets": "Vestes techniques", + "iot_wash_technical_jackets_zelig": "Vestes techniques", + "iot_wash_trainers": "Baskets", + "iot_wash_whites": "Blancs", + "iot_wash_whites_44": "Blancs 44'", + "iot_wash_whites_59": "Blancs 59'", + "iot_wash_whites_xl": "Blancs XL", + "iot_wash_wine_stains": "Taches de vin", + "iot_wash_wool": "Laine", + "jeans": "Jeans", + "jeans_60": "Jeans", + "low_dry": "Séchage des tissus mélangés", + "mixed": "Tissus mélangés", + "mixed_and_colored_59": "Tissus mélangés et couleurs 59'", + "mixed_steam": "Tissus mélangés + Vapeur d'eau", + "mix_and_colour_59": "Mixtes + Couleurs 59'", + "mix_and_colour_59_steam": "Mixtes et couleurs 59’ + vapeur", + "night_and_day": "Nuit et jour", + "night_wash": "Cycle de nuit", + "perfect_59": "Parfait 59'", + "perfect_cotton_59": "Coton Parfait 59'", + "perfect_cotton_59_steam": "Coton Parfait 59'", + "perfect_whites_59": "Ultra-blanc 59'", + "rapid_14_min": "Rapide 14'.", + "rapid_30_min": "Rapide 30'", + "rapid_44_min": "Rapide 44'", + "rapid_a_class_60": "Classe A rapide 60", + "rapid_a_class_60_steam": "Classe A rapide 60 + Vapeur", + "rapid_wash_and_dry_59_min": "Lavage et séchage 59'.", + "resistant_cotton": "Coton", + "resistant_cotton_steam": "Coton + Vapeur d'eau", + "rinse": "Rinçage", + "shirts_steam": "Chemises + Vapeur", + "silent_night": "Cycle de nuit", + "single_item": "Élément unique", + "single_item_steam": "Article unique + vapeur", + "smart_wash": "Lavage intelligent", + "soft_care": "Soin Doux", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "Special 39'", + "special_39_full_load": "Special 39'", + "special_39_full_load_steam": "Spécial 39’ + vapeur", + "special_49": "Spécial 49'", + "sport_39": "Sport 39'", + "sport_plus_29": "Sport Plus 29\"", + "sport_plus_39": "Sport Plus 39'", + "steam_39": "Vapeur 39'", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro - Coton", + "steam_care_pro_delicates": "Steam Care Pro - Délicats", + "steam_care_pro_synthetic": "Steam Care Pro - Synthétiques", + "steam_hygiene_plus": "Vapeur Hygiène Plus ", + "synthetics": "Synthétiques", + "synthetic_and_coloured": "Synthétiques et couleurs", + "synthetic_and_coloured_steam": "Synthétiques et couleurs + vapeur", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "Soin total", + "tumbling": "Tumble", + "wool": "Laine", + "wool_and_delicates_49": "Laine/Délicat 49'", + "wool_dry": "Séchage de la laine", + "wool_soft_care": "Laine & Soin Doux" + }, + "name": "Programme" + }, + "programs_ref": { + "state": { + "auto_set": "AUTO-SET", + "cheese": "Fromage", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Mode Eco", + "fruits_and_veg": "Fruit&Veg", + "fruit_and_veg": "Fruit & Veg", + "holiday": "HOLIDAY", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Aucun mode sélectionné", + "quick_cool": "QUICK COOL", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + }, + "name": "Programme" } }, "select": { @@ -1030,7 +1588,8 @@ "iot_uv_and_dry": "UV + Déshumidificateur", "iot_uv_and_fan": "UV + ventilateur", "iot_uv_and_heat": "UV + Chaleur" - } + }, + "name": "Programme" }, "programs_ref": { "state": { @@ -1052,7 +1611,8 @@ "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" - } + }, + "name": "Programme" }, "remaining_time": { "name": "Temps restant" diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index 482e079..d24b548 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -58,7 +58,8 @@ "19": "יִבּוּשׁ", "20": "יִבּוּשׁ", "11": "מוּכָן", - "17": "unknown" + "17": "unknown", + "12": "unkown" }, "name": "שלב" }, @@ -187,7 +188,8 @@ "hqd_warm_up": "Warm up", "hqd_working_suit": "Working suit", "iot_dry_synthetic_dry": "סינתטי יבש" - } + }, + "name": "Program" }, "room_temperature": { "name": "Room temperature" @@ -200,6 +202,248 @@ }, "fridge_temp": { "name": "Fridge temperature" + }, + "programs_ac": { + "state": { + "iot_simple_start": "התחל עכשיו" + }, + "name": "Program" + }, + "programs_dw": { + "state": { + "gentle_wash": "Gentle wash", + "iot_checkup": "בְּדִיקָה", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_jar_quick_cycle": "Jar Quick", + "iot_yes_quick_cycle": "Yes Quick", + "smart_ai": "Smart AI", + "smart_ai_soil": "Smart AI" + }, + "name": "Program" + }, + "programs_ih": { + "state": { + "iot_special_grilled_vegetables": "Grilled vegetables" + }, + "name": "Program" + }, + "programs_ov": { + "state": { + "iot_h20_clean": "h2O clean", + "pizza": "Pizza", + "tailor_bake": "Tailor bake" + }, + "name": "Program" + }, + "programs_wm": { + "state": { + "20_degrees_new_energy_label": "20 מעלות צלזיוס", + "active_steam": "קִיטוֹר", + "active_wash": "שטיפה פעילה", + "active_wash_steam": "שטיפה פעילה", + "allergy_care": "טיפול באלרגיה", + "allergy_care_pro": "Allergy Care Pro", + "all_in_one_49": "All in One 49 '", + "all_in_one_59": "All in One 59 '", + "all_in_one_59_steam": "שטיפה פעילה", + "autocare": "טיפול אוטומטי", + "autoclean": "ניקוי אוטומטי", + "baby_60": "BABY_60", + "care_14": "טיפול מהיר 14 '", + "care_30": "טיפול מהיר 30 '", + "care_44": "טיפול מהיר 44 '", + "checkup": "בְּדִיקָה", + "cottons": "כותנה", + "cottons_prewash": "כותנה + כביסה מוקדמת", + "cotton_care_59": "Cotton Care 59 Min", + "delicate_59": "עדין 59 '", + "delicati_59": "DELICATI_59", + "delicati_59_steam": "DELICATI_59", + "drain_spin": "ניקוז + סיבוב", + "easy_iron": "גיהוץ קל", + "eco_40_60_new_energy_label": "אקו 40-60", + "extra_care": "אכפתיות מוגברת", + "fitness": "טיפול בכושר", + "fitness_care": "טיפול בכושר", + "fresh_care": "טיפול טרי", + "fresh_care_steam": "טיפול טרי", + "handwash_wool": "שטיפת ידיים + צמר", + "high_dry": "יבש בחום גבוה", + "hqd_dry_synthetics": "יבש בחום נמוך", + "hygiene_60": "היגיינה 60 מעלות צלזיוס", + "intensive_40": "40°C אינטנסיביים", + "iot_active_steam": "קִיטוֹר", + "iot_active_wash_steam": "שטיפה פעילה", + "iot_allergy_care_pro": "Allergy Care Pro", + "iot_all_in_one_59_steam": "שטיפה פעילה", + "iot_checkup": "בְּדִיקָה", + "iot_delicati_59_steam": "DELICATI_59", + "iot_dry_air_refresh": "רענון אוויר", + "iot_dry_anti_mites": "נגד קרדית", + "iot_dry_baby": "תִינוֹק", + "iot_dry_backpacks": "תיקי גב", + "iot_dry_bathrobe": "חלוקי רחצה", + "iot_dry_bed_linen": "מצעים", + "iot_dry_cotton_dry": "כותנה יבשה", + "iot_dry_cuddly_toys": "צעצועי חיבוק", + "iot_dry_curtains": "וילונות", + "iot_dry_dehumidifier": "מסיר לחות", + "iot_dry_delicates_antiallergy": "עדין נגד אלרגיה", + "iot_dry_delicate_tablecloths": "מפות עדינות", + "iot_dry_denim_jeans": "ג'ינס", + "iot_dry_easy_iron_cotton": "ברזל קל - כותנה", + "iot_dry_easy_iron_synthetics": "קל ברזל - סינתטיים", + "iot_dry_gym_fit": "כושר כושר - כושר", + "iot_dry_lingerie": "לִבנֵי נָשִׁים", + "iot_dry_mixed_dry": "מעורבב יבש", + "iot_dry_rapid_60_min_delicates": "מהיר 60 '- עדינים", + "iot_dry_shirts": "חולצות", + "iot_dry_swimsuits_and_bikinis": "בגדי ים וביקיני", + "iot_dry_synthetics": "סינתטי יבש", + "iot_dry_synthetic_dry": "סינתטי יבש", + "iot_dry_tablecloths": "מפות שולחן", + "iot_dry_technical_fabrics": "בדים טכניים", + "iot_dry_warm_embrace": "חיבוק חם", + "iot_dry_wool_dry": "צמר יבש", + "iot_easy_iron": "גיהוץ קל", + "iot_fresh_care_steam": "טיפול טרי", + "iot_synthetic_and_coloured_steam": "סינטטי וצבעוני", + "iot_wash_anti_mites": "נגד קרדית", + "iot_wash_anti_odor": "נגד ריח", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "חיטוי לתינוקות", + "iot_wash_backpacks": "תיקי גב", + "iot_wash_bathrobe": "חלוקי רחצה ובדים נקבוביים", + "iot_wash_bed_linen": "מצעים", + "iot_wash_bed_linen_zelig": "מצעים", + "iot_wash_bleaching": "הַלבָּנָה", + "iot_wash_blood_stains": "כתמי דם", + "iot_wash_cashmere": "קשמיר", + "iot_wash_chocolate_stains": "כתמי שוקולד", + "iot_wash_cold_wash": "שטיפה קרה", + "iot_wash_colored": "צבעוני", + "iot_wash_colored_anti_stain": "נגד כתם צבעוני", + "iot_wash_colored_delicate": "צבעוני עדין", + "iot_wash_coloured": "צבעוני", + "iot_wash_cotton": "כותנה", + "iot_wash_cuddly_toys": "צעצועי חיבוק", + "iot_wash_curtains": "וילונות", + "iot_wash_curtains_zelig": "וילונות", + "iot_wash_dark": "אפל", + "iot_wash_darks_and_coloured_44": "חביבים וצבעוניים 44 '", + "iot_wash_darks_and_coloured_59": "חביבים וצבעוני 59 '", + "iot_wash_darks_and_coloured_xl": "חפצים וצבע XL", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "עדינים", + "iot_wash_delicate_antiallergy": "אנטי אלרגיה עדין", + "iot_wash_delicate_antiallergy_zelig": "אנטי אלרגיה עדין", + "iot_wash_delicate_colors": "צבעוני עדין", + "iot_wash_delicate_dark": "כהה עדין", + "iot_wash_delicate_tablecloths": "מפות עדינות", + "iot_wash_delicate_whites": "לבנים עדינים", + "iot_wash_denim_jeans": "ג'ינס", + "iot_wash_diving_suits": "חליפות צלילה", + "iot_wash_diving_suits_zelig": "חליפות צלילה", + "iot_wash_down_jackets": "מעילי פוך", + "iot_wash_down_jackets_zelig": "מעילי פוך", + "iot_wash_fruit_stains": "כתמי פרי", + "iot_wash_gym_fit": "כושר כושר - כושר", + "iot_wash_handwash": "שטיפת ידיים", + "iot_wash_handwash_colored": "שטיפת ידיים בצבע", + "iot_wash_handwash_dark": "שטיפת ידיים כהה", + "iot_wash_lingerie": "לִבנֵי נָשִׁים", + "iot_wash_masks_refresh": "מסכות רענן", + "iot_wash_masks_sanification": "חיטוי מסכות", + "iot_wash_mats": "מחצלות", + "iot_wash_men_s_trousers": "מכנסי גברים", + "iot_wash_mixed": "מעורב", + "iot_wash_mix_and_coloured_44": "לערבב וצבעוני 44 '", + "iot_wash_mix_and_coloured_59": "מיקס וצבעוני 59 '", + "iot_wash_mix_and_coloured_xl": "מערבבים וצבעים XL", + "iot_wash_new_clothes": "בגדים חדשים", + "iot_wash_perfect_white": "לבן מושלם", + "iot_wash_pets": "חיות מחמד", + "iot_wash_pets_steam": "חיות מחמד", + "iot_wash_playsuits": "חליפות משחק", + "iot_wash_rapid_14": "מהיר 14 '", + "iot_wash_rapid_30": "מהיר 30 '", + "iot_wash_rapid_44": "מהיר 44 '", + "iot_wash_rapid_59": "מהיר 59 '", + "iot_wash_refresh_14_min": "רענן 14 דקות", + "iot_wash_resistant_colored": "צבעוני עמיד", + "iot_wash_resistant_dark": "כהה עמיד", + "iot_wash_resistant_whites": "לבנים עמידים", + "iot_wash_rinse": "לִשְׁטוֹף", + "iot_wash_shirts": "חולצות", + "iot_wash_silk": "משי", + "iot_wash_ski_suit": "חליפת סקי", + "iot_wash_ski_suit_zelig": "חליפת סקי", + "iot_wash_spin": "סיבוב", + "iot_wash_sport": "ספּוֹרט", + "iot_wash_stains_remover": "מסיר כתמים", + "iot_wash_swimsuits_and_bikinis": "בגדי ים וביקיני", + "iot_wash_synthetic": "סינתטיים", + "iot_wash_tablecloths": "מפות שולחן", + "iot_wash_technical_fabrics": "בדים טכניים", + "iot_wash_technical_fabrics_zelig": "בדים טכניים", + "iot_wash_technical_jackets": "ז'קטים טכניים", + "iot_wash_technical_jackets_zelig": "ז'קטים טכניים", + "iot_wash_trainers": "מאמנים", + "iot_wash_whites": "לְבָנִים", + "iot_wash_whites_44": "לבנים 44 '", + "iot_wash_whites_59": "לבנים 59 '", + "iot_wash_whites_xl": "לבנים XL", + "iot_wash_wine_stains": "כתמי יין", + "iot_wash_wool": "צֶמֶר", + "jeans": "גִ'ינס", + "low_dry": "יבש בחום נמוך", + "mixed_and_colored_59": "מעורב וצבעוני 59 '", + "night_and_day": "לילה ויום", + "night_wash": "Night Wash", + "perfect_59": "מושלם 59 '", + "perfect_whites_59": "לבן מושלם", + "rapid_wash_and_dry_59_min": "לשטוף ולייבש 59 '", + "resistant_cotton": "כותנה", + "rinse": "לִשְׁטוֹף", + "silent_night": "Night Wash", + "soft_care": "טיפול רך", + "special_49": "מיוחד 49 '", + "sport_39": "ספורט 39 '", + "sport_plus_29": "ספורט פלוס 29 \"", + "steam_39": "קיטור 39 '", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro", + "steam_care_pro_delicates": "Steam Care Pro", + "steam_care_pro_synthetic": "Steam Care Pro", + "synthetics": "סינתטיים", + "synthetic_and_coloured": "סינטטי וצבעוני", + "synthetic_and_coloured_steam": "סינטטי וצבעוני", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "טיפול טוטאלי", + "tumbling": "נופלים", + "wool_and_delicates_49": "Wool/Delicates 49'", + "wool_dry": "צמר יבש", + "wool_soft_care": "Wool & Soft Care" + }, + "name": "Program" + }, + "programs_ref": { + "state": { + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "fruit_and_veg": "Fruit & Veg", + "keep_fresh": "0° Fresh", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "tea": "Cold drinks or Beverages" + }, + "name": "Program" } }, "select": { @@ -489,7 +733,8 @@ "programs_ac": { "state": { "iot_simple_start": "התחל עכשיו" - } + }, + "name": "Program" }, "programs_ref": { "state": { @@ -500,7 +745,8 @@ "sea_food": "Ready to cook meal", "soft_frozen": "Soft freezing", "tea": "Cold drinks or Beverages" - } + }, + "name": "Program" }, "remaining_time": { "name": "זמן שנותר" diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index c8fb4bb..483503e 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -58,7 +58,8 @@ "19": "Sušenje", "20": "Sušenje", "11": "Spremno", - "17": "unknown" + "17": "unknown", + "12": "unkown" }, "name": "Faza" }, @@ -306,7 +307,8 @@ "woolmark": "Woolmark", "xxl_load": "XXL kapacitet", "zoom_59": "Zoom 59" - } + }, + "name": "Program" }, "room_temperature": { "name": "Sobna temperatura" @@ -319,6 +321,562 @@ }, "fridge_temp": { "name": "Temperatura hladnjaka" + }, + "programs_ac": { + "state": { + "iot_10_heating": "Funkcija grijanja na 10 °C", + "iot_auto": "Automatski", + "iot_cool": "Hlađenje", + "iot_dry": "Sušenje", + "iot_fan": "Ventilator", + "iot_heat": "Zagrijavanje", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Sampročišćavanje", + "iot_self_clean": "Samočišćenje", + "iot_self_clean_56": "Sterilno čišćenje 56°C", + "iot_simple_start": "Pokreni sada", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + automatski", + "iot_uv_and_cool": "UV + hladno", + "iot_uv_and_dry": "UV + odvlaživač", + "iot_uv_and_fan": "UV + ventilator", + "iot_uv_and_heat": "UV + grijanje" + }, + "name": "Program" + }, + "programs_dw": { + "state": { + "59_min": "Brzi 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "Automatski univerzalni 50 - 60°C", + "auto_universal_plus": "Automatski univerzalni+ 65 - 75°C", + "auto_universal_plus_soil": "Automatski univerzalni+ 65 - 75°C", + "auto_universal_soil": "Automatski univerzalni 50 - 60°C", + "auto_wash": "Automatsko pranje", + "auto_wash_soil": "Automatsko pranje", + "classe_a_59": "A klasa 59' 65°C", + "delicate": "Osjetljivo 45°C", + "dishwasher_care": "Ciklus čišćenja kamenca", + "eco": "Ekološki", + "eco_asynch": "Eco 45°C", + "eco_bldc": "Eco 45°C", + "eco_synch": "Eco 45°C", + "gentle_wash": "Gentle wash", + "glass": "Staklo", + "glassware": "Glassware (Stakleno posuđe) 45 °C", + "glass_care": "Glass Care", + "hygiene": "Hygiene", + "hygiene_plus": "Hygiene+ (Higijena+) 75 °C", + "intensive": "Intenzivno ", + "intensive_rapid": "Snažan i brz", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "Automatski univerzalni 50 - 60°C", + "iot_auto_wash_soil": "Automatsko pranje", + "iot_baby_care": "Baby Care", + "iot_breakfast": "Doručak", + "iot_checkup": "Check Up ciklus provjere", + "iot_china_crystals": "Kristal", + "iot_classe_a_59": "Brzi 59'", + "iot_cocktail_glasses": "Koktel čaše", + "iot_cocktail_glasses_soil": "Koktel čaše", + "iot_daily_care": "Daily Care", + "iot_daily_care_soil": "Daily Care", + "iot_delicate": "Osjetljivo 45°C", + "iot_dinner_for_two": "Večera za dvoje", + "iot_dinner_for_two_soil": "Večera za dvoje", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "Eco 45°C", + "iot_eco_bldc": "Eco 45°C", + "iot_eco_synch": "Eco 45°C", + "iot_extra_hygiene": "Extra Hygiene", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "Happy Hour", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "Party", + "iot_party_soil": "Party", + "iot_pizza_menu": "Pizza", + "iot_pizza_menu_soil": "Pizza", + "iot_plastic_tupperware": "Plastika", + "iot_porcelain": "Porculan", + "iot_power_mix_wash": "Power Mix Wash", + "iot_power_mix_wash_soil": "Power Mix Wash", + "iot_prewash": "Pretpranje", + "iot_pyrex_and_glassware": "Pireks & obično staklo", + "iot_rapid_29": "Brzo 29'", + "iot_rapid_39": "Rapid (Brzi program) 39 minuta 60 °C", + "iot_single": "Samac", + "iot_steam": "Steam (Para) 75 °C", + "iot_super_flash": "Super Flash", + "iot_super_wash": "Super Wash", + "iot_turbopower": "TurboPower", + "iot_universal": "Universal (Univerzalni) 60 °C", + "iot_wok_grids_maxi_pans": "Posebne tave (Wok - rešetke & Maxi tave)", + "iot_wok_grids_maxi_pans_soil": "Posebne tave (Wok - rešetke & Maxi tave)", + "iot_yes_quick_cycle": "Yes Quick", + "night": "Ultra tihi 55°C", + "prewash": "Pretpranje", + "rapid_20": "Brzi 20'", + "rapid_24": "Brzo 24'", + "rapid_29": "Brzo 29' 50°C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "Rapid (Brzi program) 39 minuta 60 °C", + "rapid_49": "Brzi 49'", + "rapid_59": "Brzi 59'", + "sanitising": "Dezinficiranje", + "silence": "Silence", + "silent": "Noć", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", + "special": "Posebno", + "special_pw_prz": "Posebno", + "steam": "Steam (Para) 75 °C", + "steam_plus": "Para plus 75°C", + "total_care": "Total Care 50°C", + "ultra_silence": "Ultra tihi 55°C", + "ultra_silent": "Ultra tihi 55°C", + "universal": "Universal (Univerzalni) 60 °C", + "universal_plus": "Universal Plus (Univerzalni plus) 70 °C", + "zoom_39": "Zoom 39 min" + }, + "name": "Program" + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "Prženi ribani krumpir", + "iot_special_beef_fillet": "Goveđi file", + "iot_special_beef_veal_stew": "Goveđi i teleći gulaš", + "iot_special_boiled_rice": "Kuhana riža", + "iot_special_chicken_breast": "Pileća prsa", + "iot_special_chicken_legs": "Pileći bataci", + "iot_special_chocolate_pudding": "Čokoladni puding", + "iot_special_entrecote": "Odrezak", + "iot_special_fresh_tuna": "Svježa tuna", + "iot_special_grilled_vegetables": "Povrće na žaru", + "iot_special_lamb_cutlet": "Janjeći kotlet", + "iot_special_meatballs": "Mesne okruglice", + "iot_special_minestrone": "Minestrone", + "iot_special_mussels": "Dagnje", + "iot_special_omelette": "Omlet", + "iot_special_pancakes": "Palačinke", + "iot_special_paris_style_peas": "Grašak na pariški način", + "iot_special_poached_eggs": "Poširana jaja", + "iot_special_pork_fillet": "Svinjski file", + "iot_special_pork_ribs": "Svinjska rebarca", + "iot_special_prawns": "Kozice", + "iot_special_quinoa": "Kvinoja", + "iot_special_ratatouille": "Ratatouille", + "iot_special_salmon_fillet": "Filet lososa", + "iot_special_saute_potatoes": "Pirjani krumpir", + "iot_special_scallops": "Jakobove kapice", + "iot_special_scrambled_eggs": "Kajgana", + "iot_special_spelt": "Pir", + "iot_special_veggy_noodles": "Rezanci s povrćem", + "iot_special_white_fish_fillet": "Filet bijele ribe", + "iot_standard_boiling": "Boiling (Prokuhavanje)", + "iot_standard_frying": "Prženje", + "iot_standard_keep_warm": "Održite toplinu", + "iot_standard_melting": "Otapanje", + "iot_standard_simmering": "Simmering (Pirjanje)" + }, + "name": "Program" + }, + "programs_ov": { + "state": { + "bakery": "Tjestenina i tijesta", + "bakery_steam": "Para u pećnici", + "bottom_heating": "Donji grijač", + "bottom_heating_fan": "Donji grijač + Ventilator", + "bread": "Kruh", + "bread_steam": "Kruh pečen na pari", + "combi": "Combi", + "convection_fan": "Konvekcija + Ventilator", + "convection_fan_turnspit": "Konvekcija + ventilator + ražanj", + "conventional": "Konvekcijska", + "conventional_turnspit": "Konvekcija + ražanj", + "defrost": "Odmrzavanje", + "descaling": "Uklanjanje kamenca", + "fish": "Riba", + "fish_steam": "Riba na pari", + "grill_cata": "Pečenje", + "grill_fan_cata": "Ventilator za pečenje", + "grill_fan_pyro": "Grijač + ventilator", + "grill_pyro": "Grijač", + "h20_clean": "H2O-Clean", + "iot_bread": "Kruh", + "iot_h20_clean": "h2O clean", + "leavening": "Dizanje tijesta", + "low_temp_cooking": "Kuhanje na niskoj temperaturi", + "low_temp_cooking_fish": "Kuhanje na niskoj temperaturi - riba", + "low_temp_cooking_fish_steam": "Kuhanje na niskoj temperaturi - riba na pari", + "low_temp_cooking_meat": "Kuhanje na niskoj temperaturi - meso", + "low_temp_cooking_meat_steam": "Kuhanje na niskoj temperaturi - meso na pari", + "low_temp_cooking_steam": "Kuhanje na pari i na niskoj temperaturi", + "meat": "Meso", + "meat_steam": "Meso na pari", + "multi_level": "Više razina", + "paella": "Paella", + "pasta_and_bakery": "Tjestenina i tijesta", + "pizza": "Pizza", + "pyrolysis": "Piroliza", + "pyrolysis_plus": "Piroliza +", + "red_meat": "Crveno meso", + "red_meat_steam": "Kuhano crveno meso", + "regenerate": "Regeneracija", + "soft_plus": "Mekano+", + "super_grill": "Super roštilj", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Povrće", + "vegetables_cata": "Povrće", + "vegetables_pyro": "Povrće", + "water_discharge": "Ispuštanje vode", + "white_meat": "Bijelo meso", + "white_meat_steam": "Kuhano bijelo meso na pari" + }, + "name": "Program" + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "20° šareno i pamučno rublje", + "20_degrees_new_energy_label": "20°C", + "active_steam": "Para", + "active_wash": "Aktivno pranje", + "active_wash_steam": "Aktivno pranje", + "allergy_care": "Alergijska njega", + "allergy_care_pro": "Alergijska njega Pro", + "all_in_one_49": "Sve u jednom 49’.", + "all_in_one_59": "Sve u jednom 59’.", + "all_in_one_59_steam": "Aktivno pranje + para", + "autocare": "Automatska njega", + "autoclean": "Čišćenje bubnja", + "baby_60": "All Baby 60°C", + "care_14": "Rapid Care 14'", + "care_30": "Rapid Care 30'", + "care_44": "Rapid Care 44'", + "checkup": "Kontrolni pregled", + "colour_59": "Šareno 59'", + "colour_59_steam": "Boje 59' + para", + "cottons": "Pamuk", + "cottons_prewash": "Pamuk + Pretpranje", + "cottons_steam": "Pamuk + Para", + "cotton_care_59": "Pamuk 59 Min", + "delicate_59": "Osjetljivo rublje 59’", + "delicate_silk": "Osjetljiva svila", + "delicate_silk_steam": "Osjetljiva svila + para", + "delicati_59": "Osjetljivo rublje 59’", + "delicati_59_steam": "Osjetljivo rublje 59’", + "drain_spin": "Ispiranje i centrifuga", + "easy_iron": "Easy Iron - lakše glačanje", + "eco_40_60_new_energy_label": "Eco 40-60", + "extra_care": "Dodatna Njega", + "fitness": "Fitness Care", + "fitness_care": "Fitness Care", + "fresh_care": "Fresh Care", + "fresh_care_steam": "Svježa njega + para", + "handwash_wool": "Ručno pranje i vuna", + "high_dry": "Suhi pamuk", + "hqd_20_degrees": "Pamuk 20 ℃", + "hqd_allergy": "Alergijska njega", + "hqd_autoclean": "Čišćenje bubnja", + "hqd_babycare": "Baby Care", + "hqd_checkup": "Kontrolni pregled", + "hqd_cottons": "Pamuk", + "hqd_delicate": "Osjetljivo rublje", + "hqd_delicate_cradle": "Osjetljivo rublje", + "hqd_dry": "Suhi pamuk", + "hqd_dry_synthetics": "Suha miješana odjeća", + "hqd_duvet": "Popluni", + "hqd_eco_40_60_degrees": "Eco 40-60", + "hqd_handwash_wool": "Vuna", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "Miješano rublje", + "hqd_quick_15": "Brzi program 15'", + "hqd_quick_wash_57": "Brzo pranje 57 min", + "hqd_rapid_wash_and_dry": "Pranje & sušenje", + "hqd_refresh": "Osvježavanje", + "hqd_rinse": "Ispiranje", + "hqd_shirts": "Košulje", + "hqd_smart": "Smart A.I.", + "hqd_spin": "Okretaj", + "hqd_sport": "Sportska odjeća", + "hqd_super_fast": "Brzi program 39’", + "hqd_synthetic_and_coloured": "Sintetika", + "hygiene_59": "Hygijenski Plus 59'", + "hygiene_60": "Higijena 60°", + "hygiene_plus_59": "Hygijenski Plus 59'", + "hygiene_plus_59_min": "Hygijenski Plus 59'", + "hygiene_pro_49_min": "Hygiene Pro 49 min", + "hygiene_pro_steam": "Hygiene Pro + para", + "intensive_40": "Intenzivno 40°C", + "intensive_40_steam": "Intenzivno 40°C + para", + "iot_active_steam": "Para", + "iot_active_wash_steam": "Aktivno pranje", + "iot_allergy_care_pro": "Alergijska njega Pro", + "iot_all_in_one_59_steam": "Aktivno pranje + para", + "iot_checkup": "Kontrolni pregled", + "iot_colour_59_steam": "Boje 59' + para", + "iot_cottons_steam": "Pamuk + Para", + "iot_delicate_silk_steam": "Osjetljiva svila + para", + "iot_delicati_59_steam": "Osjetljivo rublje 59’", + "iot_dry_air_refresh": "Osvježavanje zraka", + "iot_dry_anti_mites": "Protiv grinja", + "iot_dry_baby": "Dječja odjeća", + "iot_dry_backpacks": "Naprtnjače", + "iot_dry_bathrobe": "Kućni ogrtači i porozne tkanine", + "iot_dry_bed_linen": "Posteljine", + "iot_dry_cotton_dry": "Suhi pamuk", + "iot_dry_cuddly_toys": "Plišane igračke", + "iot_dry_curtains": "Zavjese", + "iot_dry_dehumidifier": "Odstranjivač vlage", + "iot_dry_delicates_antiallergy": "Osjetljivo rublje – antialergijski", + "iot_dry_delicate_tablecloths": "Osjetljivi stolnjaci", + "iot_dry_denim_jeans": "Traper – Traperice", + "iot_dry_easy_iron_cotton": "Lagano glačanje pamuka", + "iot_dry_easy_iron_synthetics": "Lagano glačanje sintetike", + "iot_dry_gym_fit": "Odjeća za teretanu – fitness", + "iot_dry_lingerie": "Donje rublje", + "iot_dry_mixed_dry": "Suha miješana odjeća", + "iot_dry_rapid_60_min_delicates": "Brzo 60' – Osjetljivo rublje", + "iot_dry_shirts": "Košulje", + "iot_dry_swimsuits_and_bikinis": "Kupaći kostimi", + "iot_dry_synthetics": "Sintetika suho", + "iot_dry_synthetic_dry": "Sintetika suho", + "iot_dry_tablecloths": "Stolnjaci", + "iot_dry_technical_fabrics": "Tehničke tkanine", + "iot_dry_warm_embrace": "Toplo sušenje", + "iot_dry_wool_dry": "Vuna, suho", + "iot_easy_iron": "Easy Iron - lakše glačanje", + "iot_fresh_care_steam": "Svježa njega + para", + "iot_hygiene_pro_steam": "Hygiene Pro + para", + "iot_intensive_40_steam": "Intenzivno 40°C + para", + "iot_mixed_steam": "Miješane tkanine + Para", + "iot_mix_and_colour_59_steam": "Mješovite i obojene tkanine 59' + para", + "iot_perfect_cotton_59_steam": "Pamuk Brzi 59'", + "iot_rapid_a_class_60_steam": "Brza klasa A 60 + para", + "iot_resistant_cotton_steam": "Pamuk + Para", + "iot_shirts_steam": "Košulje + para", + "iot_single_item_steam": "Pojedinačna stavka + para", + "iot_smart_wash": "Pametno pranje", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "Posebna 39' + para", + "iot_steam_hygiene_plus": "Hygiene Plus Steam ", + "iot_synthetic_and_coloured_steam": "Sintetika i šareno rublje + para", + "iot_wash_and_dry": "Pranje & sušenje", + "iot_wash_anti_mites": "Protiv grinja", + "iot_wash_anti_odor": "Protiv neugodnih mirisa", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "Dezinficijens", + "iot_wash_baby_sanitizer_steam": "Dezinfekcijsko sredstvo za bebe + para", + "iot_wash_backpacks": "Naprtnjače", + "iot_wash_backpacks_zelig": "Ruksaci", + "iot_wash_bathrobe": "Kućni ogrtači i ručnici", + "iot_wash_bathrobe_steam": "Kupaonski ogrtači + Para", + "iot_wash_bed_linen": "Posteljine", + "iot_wash_bed_linen_steam": "Posteljina + Para", + "iot_wash_bed_linen_zelig": "Posteljine", + "iot_wash_big_single_load": "Veliko pojedinačno punjenje", + "iot_wash_bleaching": "Izbjeljivanje", + "iot_wash_blood_stains": "Mrlje od krvi", + "iot_wash_cashmere": "Kašmir", + "iot_wash_chocolate_stains": "Mrlje od čokolade", + "iot_wash_cold_wash": "Hladno pranje", + "iot_wash_colored": "Obojeno rublje", + "iot_wash_colored_anti_stain": "Uklanjanje mrlja za boje", + "iot_wash_colored_delicate": "Obojeno osjetljivo rublje", + "iot_wash_coloured": "Boje", + "iot_wash_coloured_bed_linen": "Posteljina u boji", + "iot_wash_coloured_bed_linen_steam": "Posteljina u boji + para", + "iot_wash_coloured_curtains": "Šarene zavjese", + "iot_wash_coloured_shirts": "Šarene košulje", + "iot_wash_coloured_shirts_steam": "Košulje u boji + para", + "iot_wash_coloured_steam": "Boje + Para", + "iot_wash_coloured_tableclothes": "Šareni stolnjaci", + "iot_wash_coloured_tableclothes_steam": "Šareni stolnjaci + para", + "iot_wash_cotton": "Pamuk", + "iot_wash_cotton_steam": "Pamuk + Para", + "iot_wash_cuddly_toys": "Plišane igračke", + "iot_wash_curtains": "Zavjese", + "iot_wash_curtains_steam": "Zavjese+Para", + "iot_wash_curtains_zelig": "Zavjese", + "iot_wash_dark": "Tamna odjeća", + "iot_wash_darks_and_coloured_44": "Tamno i obojeno rublje 44'", + "iot_wash_darks_and_coloured_59": "Tamno i obojeno rublje 59'", + "iot_wash_darks_and_coloured_xl": "Tamno i obojeno rublje XL", + "iot_wash_dark_steam": "Tamna odjeća + Para", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "Osjetljivo rublje", + "iot_wash_delicate_antiallergy": "Antialergijski za osjetljivo rublje", + "iot_wash_delicate_antiallergy_steam": "Antialergijski za osjetljivo rublje + Para", + "iot_wash_delicate_antiallergy_zelig": "Antialergijski za osjetljivo rublje", + "iot_wash_delicate_colors": "Osjetljivo šareno rublje", + "iot_wash_delicate_colors_steam": "Boje + para", + "iot_wash_delicate_dark": "Osjetljivo tamno rublje", + "iot_wash_delicate_steam": "Osjetljivo rublje + Para", + "iot_wash_delicate_tablecloths": "Osjetljivi stolnjaci", + "iot_wash_delicate_tablecloths_steam": "Osjetljivi stolnjaci + Para", + "iot_wash_delicate_whites": "Osjetljivo bijelo rublje", + "iot_wash_denim_jeans": "Traper – Traperice", + "iot_wash_diving_suits": "Ronilačka odijela", + "iot_wash_diving_suits_zelig": "Ronilačka odijela", + "iot_wash_down_jackets": "Jakne punjene paperjem", + "iot_wash_down_jackets_zelig": "Jakne punjene paperjem", + "iot_wash_duvet": "Popluni", + "iot_wash_fruit_stains": "Mrlje od voća", + "iot_wash_gym_fit": "Odjeća za teretanu – fitness", + "iot_wash_handwash": "Ručno pranje", + "iot_wash_handwash_colored": "Ručno pranje obojenog rublja", + "iot_wash_handwash_dark": "Ručno pranje tamnog rublja", + "iot_wash_lingerie": "Donje rublje", + "iot_wash_masks_refresh": "Osvježavanje maski", + "iot_wash_masks_sanification": "Sanitacija maski", + "iot_wash_masks_sanification_steam": "Sanitacija maski + Para", + "iot_wash_mats": "Prostirke", + "iot_wash_men_s_trousers": "Hlače", + "iot_wash_mixed": "Miješano", + "iot_wash_mixed_steam": "Miješane tkanine + Para", + "iot_wash_mix_and_coloured_44": "Miješano i obojeno rublje 44'", + "iot_wash_mix_and_coloured_59": "Miješano i obojeno rublje 59'", + "iot_wash_mix_and_coloured_xl": "Miješano i obojeno rublje XL", + "iot_wash_new_clothes": "Nova odjeća", + "iot_wash_perfect_white": "Savršeno bijelo", + "iot_wash_perfect_white_steam": "Savršeno bijelo + Para", + "iot_wash_pets": "Pribor za ljubimce", + "iot_wash_pets_hair_removal": "Uklanjanje dlaka kućnih ljubimaca", + "iot_wash_pets_odours_stains_removal": "Uklanjanje neugodnih mirisa i mrlja od kućnih ljubimaca", + "iot_wash_pets_steam": "Pribor za ljubimce", + "iot_wash_playsuits": "Kombinezoni", + "iot_wash_playsuits_steam": "Kombinezoni + Para", + "iot_wash_quick_drum_cleaner": "Sredstvo za brzo čišćenje bubnja", + "iot_wash_rapid_14": "Brzi program 14’", + "iot_wash_rapid_30": "Brzi program 30’", + "iot_wash_rapid_44": "Brzi program 44’", + "iot_wash_rapid_59": "Brzi program 59’", + "iot_wash_rapid_59_steam": "Brzi 59' + para", + "iot_wash_refresh_14_min": "Osvježavanje 14’", + "iot_wash_resistant_colored": "Otporno obojeno rublje", + "iot_wash_resistant_dark": "Otporno tamno rublje", + "iot_wash_resistant_whites": "Otporno bijelo rublje", + "iot_wash_rinse": "Ispiranje", + "iot_wash_shirts": "Košulje", + "iot_wash_shirts_steam": "Košulje + Para", + "iot_wash_silk": "Svila", + "iot_wash_ski_suit": "Skijaška odijela", + "iot_wash_ski_suit_zelig": "Skijaška odijela", + "iot_wash_spin": "Centrifuga", + "iot_wash_sport": "Sportsko rublje", + "iot_wash_sport_anti_odor": "Sportska odjeća protiv neugodnih mirisa", + "iot_wash_sport_anti_odor_zelig": "Sportska odjeća protiv neugodnih mirisa", + "iot_wash_stains_remover": "Uklanjanje mrlja", + "iot_wash_swimsuits_and_bikinis": "Kupaći kostimi", + "iot_wash_synthetic": "Sintetika", + "iot_wash_synthetic_steam": "Sintetika + Para", + "iot_wash_tablecloths": "Stolnjaci", + "iot_wash_tablecloths_steam": "Stolnjaci + Para", + "iot_wash_technical_fabrics": "Tehničke tkanine", + "iot_wash_technical_fabrics_zelig": "Tehničke tkanine", + "iot_wash_technical_jackets": "Tehničke jakne", + "iot_wash_technical_jackets_zelig": "Tehničke jakne", + "iot_wash_trainers": "Tenisice", + "iot_wash_whites": "Bijelo rublje", + "iot_wash_whites_44": "Bijelo rublje 44'", + "iot_wash_whites_59": "Bijelo rublje 59'", + "iot_wash_whites_xl": "Bijelo rublje XL", + "iot_wash_wine_stains": "Mrlje od vina", + "iot_wash_wool": "Vuna", + "jeans": "Traperice", + "jeans_60": "Traper", + "low_dry": "Suha miješana odjeća", + "mixed": "Miješane tkanine", + "mixed_and_colored_59": "Miješana i šarena odjeća 59’", + "mixed_steam": "Miješane tkanine + Para", + "mix_and_colour_59": "Mijesane Tkanine + Sareno 59'", + "mix_and_colour_59_steam": "Mješovite i obojene tkanine 59' + para", + "night_and_day": "Noć i dan", + "night_wash": "Ciklus preko noći", + "perfect_59": "Savršeno 59’", + "perfect_cotton_59": "Pamuk Brzi 59'", + "perfect_cotton_59_steam": "Pamuk Brzi 59'", + "perfect_whites_59": "Savršeno bijelo 59'", + "rapid_14_min": "Brzi 14'", + "rapid_30_min": "Brzi 30 min", + "rapid_44_min": "Brzi 44 min", + "rapid_a_class_60": "Brza klasa A 60", + "rapid_a_class_60_steam": "Brza klasa A 60 + para", + "rapid_wash_and_dry_59_min": "Pranje i sušenje 59’.", + "resistant_cotton": "Pamuk", + "resistant_cotton_steam": "Pamuk + Para", + "rinse": "Ispiranje", + "shirts_steam": "Košulje + para", + "silent_night": "Ciklus preko noći", + "single_item": "Pojedinačna stavka", + "single_item_steam": "Pojedinačna stavka + para", + "smart_wash": "Pametno pranje", + "soft_care": "Mekana njega", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "Posebna 39'", + "special_39_full_load": "Posebna 39'", + "special_39_full_load_steam": "Posebna 39' + para", + "special_49": "Posebno 49’", + "sport_39": "Sport 39’", + "sport_plus_29": "Sportski Plus 29\"", + "sport_plus_39": "Sportski Plus 39'", + "steam_39": "Para 39’", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro - pamuk", + "steam_care_pro_delicates": "Steam Care Pro - osjetljivo", + "steam_care_pro_synthetic": "Steam Care Pro - sintetika", + "steam_hygiene_plus": "Hygiene Plus Steam ", + "synthetics": "Sintetika", + "synthetic_and_coloured": "Sintetika i šareno rublje", + "synthetic_and_coloured_steam": "Sintetika i šareno rublje + para", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "Potpuna njega", + "tumbling": "Sušilica", + "wool": "Vuna", + "wool_and_delicates_49": "Vuna/Osjetljivo 49'", + "wool_dry": "Suha vuna", + "wool_soft_care": "Vuna & Mekana Njega" + }, + "name": "Program" + }, + "programs_ref": { + "state": { + "auto_set": "AUTOMATSKA POSTAVKA", + "cheese": "Sir", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Način rada Eco", + "fruits_and_veg": "Voće i Povrće", + "fruit_and_veg": "Fruit & Veg", + "holiday": "ODMOR", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Nije odabran način rada", + "quick_cool": "BRZO HLAĐENJE", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER HLAĐENJE", + "super_freeze": "SUPER ZAMRZAVANJE", + "tea": "Hladna pića i napitci", + "zero_fresh": "0° Fresh" + }, + "name": "Program" } }, "select": { @@ -1030,7 +1588,8 @@ "iot_uv_and_dry": "UV + odvlaživač", "iot_uv_and_fan": "UV + ventilator", "iot_uv_and_heat": "UV + grijanje" - } + }, + "name": "Program" }, "programs_ref": { "state": { @@ -1052,7 +1611,8 @@ "super_freeze": "SUPER ZAMRZAVANJE", "tea": "Hladna pića i napitci", "zero_fresh": "0° Fresh" - } + }, + "name": "Program" }, "remaining_time": { "name": "Preostalo vrijeme" diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index de21a0a..36e75e7 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -116,7 +116,8 @@ "19": "Asciugatura", "20": "Asciugatura", "11": "Pronta", - "17": "unknown" + "17": "unknown", + "12": "unkown" }, "name": "Fase" }, @@ -358,7 +359,8 @@ "woolmark": "Lana", "xxl_load": "Carico XXL", "zoom_59": "Zoom 59" - } + }, + "name": "Programma" }, "room_temperature": { "name": "Temperatura ambiente" @@ -371,6 +373,562 @@ }, "fridge_temp": { "name": "Temperatura del frigorifero" + }, + "programs_ac": { + "state": { + "iot_10_heating": "Funzione 10°C Heating ", + "iot_auto": "Auto", + "iot_cool": "Freddo", + "iot_dry": "Deumidificazione", + "iot_fan": "Ventilatore", + "iot_heat": "Caldo", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Self purify", + "iot_self_clean": "Self clean", + "iot_self_clean_56": "Steri-Clean 56°C", + "iot_simple_start": "Avvia ora", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Auto", + "iot_uv_and_cool": "UV + Freddo", + "iot_uv_and_dry": "UV + Deumidificatore", + "iot_uv_and_fan": "UV + Ventola", + "iot_uv_and_heat": "UV + Caldo" + }, + "name": "Programma" + }, + "programs_dw": { + "state": { + "59_min": "Rapido 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "Auto Universale 50 - 60°C", + "auto_universal_plus": "Auto Universale Plus 65 - 75°C", + "auto_universal_plus_soil": "Auto Universale Plus 65 - 75°C", + "auto_universal_soil": "Auto Universale 50 - 60°C", + "auto_wash": "Auto Wash", + "auto_wash_soil": "Auto Wash", + "classe_a_59": "Classe A 59' 65°C", + "delicate": "Delicato 45°C", + "dishwasher_care": "Ciclo anticalcare", + "eco": "Eco", + "eco_asynch": "Eco 45°C", + "eco_bldc": "Eco 45°C", + "eco_synch": "Eco 45°C", + "gentle_wash": "Gentle wash", + "glass": "Calici", + "glassware": "Cristalli 45°C", + "glass_care": "Glass Care", + "hygiene": "Igiene", + "hygiene_plus": "Igiene 75°C", + "intensive": "Intensivo ", + "intensive_rapid": "Forte Veloce", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "Auto Universale 50 - 60°C", + "iot_auto_wash_soil": "Auto Wash", + "iot_baby_care": "Baby Care", + "iot_breakfast": "Colazione", + "iot_checkup": "Check-Up", + "iot_china_crystals": "Cristalli", + "iot_classe_a_59": "Rapido 59'", + "iot_cocktail_glasses": "Cocktail Glasses", + "iot_cocktail_glasses_soil": "Cocktail Glasses", + "iot_daily_care": "Quotidiano", + "iot_daily_care_soil": "Quotidiano", + "iot_delicate": "Delicato 45°C", + "iot_dinner_for_two": "Cena di coppia", + "iot_dinner_for_two_soil": "Cena di coppia", + "iot_dreft_quick_cycle": "Dreft Rapido", + "iot_eco_asynch": "Eco 45°C", + "iot_eco_bldc": "Eco 45°C", + "iot_eco_synch": "Eco 45°C", + "iot_extra_hygiene": "Ciclo Vapore", + "iot_fairy_quick_cycle": "Fairy Rapido", + "iot_happy_hour": "Happy Hour", + "iot_jar_quick_cycle": "Jar Rapido", + "iot_party": "Party", + "iot_party_soil": "Party", + "iot_pizza_menu": "Pizza Menu", + "iot_pizza_menu_soil": "Pizza Menu", + "iot_plastic_tupperware": "Plastiche & Tupperware", + "iot_porcelain": "Porcellane", + "iot_power_mix_wash": "Power Mix Wash", + "iot_power_mix_wash_soil": "Power Mix Wash", + "iot_prewash": "Prelavaggio", + "iot_pyrex_and_glassware": "Pyrex & Glassware", + "iot_rapid_29": "Rapido 29'", + "iot_rapid_39": "Rapido 39' 60°C", + "iot_single": "Single", + "iot_steam": "Vapore 75°C", + "iot_super_flash": "Super Flash", + "iot_super_wash": "Super Wash", + "iot_turbopower": "Turbo Power", + "iot_universal": "Universale 60°C", + "iot_wok_grids_maxi_pans": "Maxi Stoviglie e Griglie", + "iot_wok_grids_maxi_pans_soil": "Maxi Stoviglie e Griglie", + "iot_yes_quick_cycle": "Yes Rapido", + "night": "Notte 55°C", + "prewash": "Prelavaggio", + "rapid_20": "Rapido 20'", + "rapid_24": "Rapido 24'", + "rapid_29": "Rapido 29' 50°C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "Rapido 39' 60°C", + "rapid_49": "Rapido 49'", + "rapid_59": "Rapido 59'", + "sanitising": "Igienizzazione", + "silence": "Silence", + "silent": "Notte", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", + "special": "Speciale", + "special_pw_prz": "Speciale", + "steam": "Vapore 75°C", + "steam_plus": "Vapore Plus 75°C", + "total_care": "Total Care 50°C", + "ultra_silence": "Ultra Silenzioso 55°C", + "ultra_silent": "Ultra Silenzioso 55°C", + "universal": "Universale 60°C", + "universal_plus": "Universale Plus 70°C", + "zoom_39": "Zoom 39 min" + }, + "name": "Programma" + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "Frittelle di patate", + "iot_special_beef_fillet": "Filetto di manzo", + "iot_special_beef_veal_stew": "Spezzatino di manzo e vitello", + "iot_special_boiled_rice": "Riso bollito", + "iot_special_chicken_breast": "Petto di pollo", + "iot_special_chicken_legs": "Cosce di pollo", + "iot_special_chocolate_pudding": "Chocolate pudding", + "iot_special_entrecote": "Entrecote", + "iot_special_fresh_tuna": "Tonno fresco", + "iot_special_grilled_vegetables": "Verdure alla griglia", + "iot_special_lamb_cutlet": "Cotoletta di agnello", + "iot_special_meatballs": "Polpette", + "iot_special_minestrone": "Minestrone", + "iot_special_mussels": "Cozze", + "iot_special_omelette": "Omelette", + "iot_special_pancakes": "Pancakes", + "iot_special_paris_style_peas": "Piselli alla parigina", + "iot_special_poached_eggs": "Poached eggs", + "iot_special_pork_fillet": "Filetto di maiale", + "iot_special_pork_ribs": "Costolette di maiale", + "iot_special_prawns": "Gamberi", + "iot_special_quinoa": "Quinoa", + "iot_special_ratatouille": "Ratatouille", + "iot_special_salmon_fillet": "Filetto di salmone", + "iot_special_saute_potatoes": "Patete saltate", + "iot_special_scallops": "Cappe sante", + "iot_special_scrambled_eggs": "Uova strapazzate", + "iot_special_spelt": "Farro", + "iot_special_veggy_noodles": "Spaghetti vegetariani", + "iot_special_white_fish_fillet": "Filetto di pesce bianco", + "iot_standard_boiling": "Ebollizione", + "iot_standard_frying": "Frittura", + "iot_standard_keep_warm": "Mantenimento", + "iot_standard_melting": "Fusione", + "iot_standard_simmering": "Ebollizione Lenta" + }, + "name": "Programma" + }, + "programs_ov": { + "state": { + "bakery": "Pasta e Pasticceria", + "bakery_steam": "Vapore da forno", + "bottom_heating": "Resistenza Inferiore", + "bottom_heating_fan": "Resistenza Inferiore Ventilata", + "bread": "Pane", + "bread_steam": "Pane al vapore", + "combi": "Combi", + "convection_fan": "Cottura Ventilata", + "convection_fan_turnspit": "Girarrosto a convenzione ventilata", + "conventional": "Statico", + "conventional_turnspit": "Girarrosto a convenzione", + "defrost": "Decongelamento", + "descaling": "Decalcificazione", + "fish": "Pesce", + "fish_steam": "Pesce al vapore", + "grill_cata": "Grill", + "grill_fan_cata": "Grill fan", + "grill_fan_pyro": "Grill Ventilato", + "grill_pyro": "Grill", + "h20_clean": "H2O-Clean", + "iot_bread": "Pane", + "iot_h20_clean": "h2O clean", + "leavening": "Lievitazione", + "low_temp_cooking": "Cottura a bassa temperatura", + "low_temp_cooking_fish": "Cottura a bassa temperatura Pesce", + "low_temp_cooking_fish_steam": "Cottura a bassa temperatura Pesce al vapore", + "low_temp_cooking_meat": "Cottura a bassa temperatura Carne", + "low_temp_cooking_meat_steam": "Cottura a bassa temperatura Carne al vapore", + "low_temp_cooking_steam": "Cottura a bassa temperatura al vapore", + "meat": "Carne", + "meat_steam": "Carne al vapore", + "multi_level": "Cottura Multilivello", + "paella": "Paella", + "pasta_and_bakery": "Pasta e Pasticceria", + "pizza": "Pizza", + "pyrolysis": "Pirolisi", + "pyrolysis_plus": "Pirolisi +", + "red_meat": "Carne rossa", + "red_meat_steam": "Carne rossa al vapore", + "regenerate": "Rigenerare", + "soft_plus": "Soft+", + "super_grill": "Supergriglia", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Verdure", + "vegetables_cata": "Verdure", + "vegetables_pyro": "Verdure", + "water_discharge": "Scarico dell'acqua", + "white_meat": "Carne Bianca", + "white_meat_steam": "Carne bianca al vapore" + }, + "name": "Programma" + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "Cotone e Colorati 20°", + "20_degrees_new_energy_label": "20°C", + "active_steam": "Vapore", + "active_wash": "Active Wash", + "active_wash_steam": "Active Wash + Vapore", + "allergy_care": "Allergy Care", + "allergy_care_pro": "Allergy Care Pro", + "all_in_one_49": "All in One 49'", + "all_in_one_59": "All in One 59'", + "all_in_one_59_steam": "Active Wash + Vapore", + "autocare": "Autocare", + "autoclean": "Pulizia cesto e decalcifiazione", + "baby_60": "Tutto Bebè 60°C", + "care_14": "Rapid Care 14'", + "care_30": "Rapid Care 30'", + "care_44": "Rapid Care 44'", + "checkup": "Check-Up", + "colour_59": "Colorati 59'", + "colour_59_steam": "Colorati 59' + Vapore", + "cottons": "Cotone", + "cottons_prewash": "Cotone + Prelavaggio", + "cottons_steam": "Cotone + Vapore", + "cotton_care_59": "Cotton Care 59'", + "delicate_59": "Delicati 59'", + "delicate_silk": "Delicati e Seta", + "delicate_silk_steam": "Delicati e Seta + Vapore", + "delicati_59": "Delicati 59'", + "delicati_59_steam": "Delicati 59' + Vapore", + "drain_spin": "Scarico e Centrifuga", + "easy_iron": "Stiro Facile", + "eco_40_60_new_energy_label": "Eco 40-60", + "extra_care": "Extra Care", + "fitness": "Fitness Care", + "fitness_care": "Fitness Care", + "fresh_care": "Fresh Care", + "fresh_care_steam": "Fresh Care + Vapore", + "handwash_wool": "Mano e Lana", + "high_dry": "Asciugatura Cotone", + "hqd_20_degrees": "Cotone 20°C", + "hqd_allergy": "Allergy Care", + "hqd_autoclean": "Pulizia del cesto", + "hqd_babycare": "Baby Care", + "hqd_checkup": "Check-Up", + "hqd_cottons": "Cotone", + "hqd_delicate": "Delicati", + "hqd_delicate_cradle": "Delicati", + "hqd_dry": "Asciugatura Cotone", + "hqd_dry_synthetics": "Asciugatura Misti", + "hqd_duvet": "Piumone", + "hqd_eco_40_60_degrees": "Eco 40-60", + "hqd_handwash_wool": "Lana", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "Misti", + "hqd_quick_15": "Express 15'", + "hqd_quick_wash_57": "Rapido 57'", + "hqd_rapid_wash_and_dry": "Lava e Asciuga", + "hqd_refresh": "Rinfresca", + "hqd_rinse": "Risciacqui", + "hqd_shirts": "Camicie", + "hqd_smart": "Smart A.I.", + "hqd_spin": "Centrifuga", + "hqd_sport": "Sport", + "hqd_super_fast": "Rapido 39'", + "hqd_synthetic_and_coloured": "Sintetici", + "hygiene_59": "Igiene Plus 59'", + "hygiene_60": "Igiene 60°C", + "hygiene_plus_59": "Igiene Plus 59'", + "hygiene_plus_59_min": "Igiene Plus 59'", + "hygiene_pro_49_min": "Igiene Pro 49'", + "hygiene_pro_steam": "Hygiene Pro + Vapore", + "intensive_40": "Intensivo 40°C", + "intensive_40_steam": "Intensivo 40°C + Vapore", + "iot_active_steam": "Vapore", + "iot_active_wash_steam": "Active Wash + Vapore", + "iot_allergy_care_pro": "Allergy Care Pro", + "iot_all_in_one_59_steam": "Active Wash + Vapore", + "iot_checkup": "Check-Up", + "iot_colour_59_steam": "Colorati 59' + Vapore", + "iot_cottons_steam": "Cotone + Vapore", + "iot_delicate_silk_steam": "Delicati e Seta + Vapore", + "iot_delicati_59_steam": "Delicati 59' + Vapore", + "iot_dry_air_refresh": "Air Refresh", + "iot_dry_anti_mites": "Anti-Acari", + "iot_dry_baby": "Baby", + "iot_dry_backpacks": "Zaini", + "iot_dry_bathrobe": "Accappatoi e Spugne", + "iot_dry_bed_linen": "Lenzuola", + "iot_dry_cotton_dry": "Asciugatura cotone", + "iot_dry_cuddly_toys": "Peluches", + "iot_dry_curtains": "Tende", + "iot_dry_dehumidifier": "Rimuovi umidità", + "iot_dry_delicates_antiallergy": "Antiallergia Delicati", + "iot_dry_delicate_tablecloths": "Tovaglie delicate", + "iot_dry_denim_jeans": "Denim - Jeans", + "iot_dry_easy_iron_cotton": "Stiro Facile - Cotone", + "iot_dry_easy_iron_synthetics": "Stiro Facile - Sintetici", + "iot_dry_gym_fit": "Gym fit - Fitness", + "iot_dry_lingerie": "Lingerie", + "iot_dry_mixed_dry": "Asciugatura Misti", + "iot_dry_rapid_60_min_delicates": "Rapido 60' - Tessuti Delicati", + "iot_dry_shirts": "Camicie", + "iot_dry_swimsuits_and_bikinis": "Costumi e Bikini", + "iot_dry_synthetics": "Asciugatura Sintetici", + "iot_dry_synthetic_dry": "Asciugatura Sintetici", + "iot_dry_tablecloths": "Tovaglie", + "iot_dry_technical_fabrics": "Tessuti tecnici", + "iot_dry_warm_embrace": "Caldo abbraccio", + "iot_dry_wool_dry": "Asciugatura lana", + "iot_easy_iron": "Stiro Facile", + "iot_fresh_care_steam": "Fresh Care + Vapore", + "iot_hygiene_pro_steam": "Hygiene Pro + Vapore", + "iot_intensive_40_steam": "Intensivo 40°C + Vapore", + "iot_mixed_steam": "Misti + Vapore", + "iot_mix_and_colour_59_steam": "Misti e Colorati 59' + Vapore ", + "iot_perfect_cotton_59_steam": "Cotone Perfetto 59' + Vapore", + "iot_rapid_a_class_60_steam": "Rapido 59' Classe A + Vapore", + "iot_resistant_cotton_steam": "Cotone Resistente + Vapore", + "iot_shirts_steam": "Camicie + Vapore", + "iot_single_item_steam": "Capo Singolo + Vapore", + "iot_smart_wash": "Smart Wash", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "Special 39' + Vapore", + "iot_steam_hygiene_plus": "Hygiene Plus + Vapore", + "iot_synthetic_and_coloured_steam": "Sintetici e Colorati + Vapore", + "iot_wash_and_dry": "Lava & Asciuga", + "iot_wash_anti_mites": "Anti-acari", + "iot_wash_anti_odor": "Anti-odore", + "iot_wash_ariel_clean_cycle": "Ariel Antimacchia", + "iot_wash_ariel_cold_cycle": "Ariel Freddo", + "iot_wash_ariel_fresh_cycle": "Ariel Delicato", + "iot_wash_baby_sanitizer": "Igienizzante", + "iot_wash_baby_sanitizer_steam": "Igienizzante + Vapore", + "iot_wash_backpacks": "Zaini", + "iot_wash_backpacks_zelig": "Zaini", + "iot_wash_bathrobe": "Accappatoi e Spugne", + "iot_wash_bathrobe_steam": "Accappatoi e Spugne + Vapore", + "iot_wash_bed_linen": "Lenzuola", + "iot_wash_bed_linen_steam": "Lenzuola + Vapore", + "iot_wash_bed_linen_zelig": "Lenzuola", + "iot_wash_big_single_load": "Carico singolo grande", + "iot_wash_bleaching": "Candeggio", + "iot_wash_blood_stains": "Macchie di sangue", + "iot_wash_cashmere": "Cashmere", + "iot_wash_chocolate_stains": "Macchie cioccolato", + "iot_wash_cold_wash": "Lavaggio a freddo", + "iot_wash_colored": "Colorati", + "iot_wash_colored_anti_stain": "Antimacchia colorati", + "iot_wash_colored_delicate": "Colorati delicati", + "iot_wash_coloured": "Colorati", + "iot_wash_coloured_bed_linen": "Lenzuola Colorate", + "iot_wash_coloured_bed_linen_steam": "Lenzuola Colorate + Vapore", + "iot_wash_coloured_curtains": "Tende Colorate", + "iot_wash_coloured_shirts": "Camicie Colorate", + "iot_wash_coloured_shirts_steam": "Camicie Colorate + Vapore", + "iot_wash_coloured_steam": "Colorati + Vapore", + "iot_wash_coloured_tableclothes": "Tovaglie Colorate", + "iot_wash_coloured_tableclothes_steam": "Tovaglie Colorate + Vapore", + "iot_wash_cotton": "Cotone", + "iot_wash_cotton_steam": "Cotone + Vapore", + "iot_wash_cuddly_toys": "Peluches", + "iot_wash_curtains": "Tende", + "iot_wash_curtains_steam": "Tende + Vapore", + "iot_wash_curtains_zelig": "Tende", + "iot_wash_dark": "Scuri", + "iot_wash_darks_and_coloured_44": "Scuri e colorati 44'", + "iot_wash_darks_and_coloured_59": "Scuri e colorati 59'", + "iot_wash_darks_and_coloured_xl": "Scuri e colorati XL", + "iot_wash_dark_steam": "Scuri + Vapore", + "iot_wash_dash_clean_cycle": "Dash Antimacchia", + "iot_wash_dash_cold_cycle": "Dash Freddo", + "iot_wash_dash_fresh_cycle": "Dash Delicato", + "iot_wash_delicate": "Delicati", + "iot_wash_delicate_antiallergy": "Anti-Allergy Delicati", + "iot_wash_delicate_antiallergy_steam": "Anti-Allergy Delicati + Vapore", + "iot_wash_delicate_antiallergy_zelig": "Anti-Allergy Delicati", + "iot_wash_delicate_colors": "Colorati Delicati", + "iot_wash_delicate_colors_steam": "Colorati Delicati + Vapore", + "iot_wash_delicate_dark": "Scuri Delicati", + "iot_wash_delicate_steam": "Delicati + Vapore", + "iot_wash_delicate_tablecloths": "Tovaglie Delicate", + "iot_wash_delicate_tablecloths_steam": "Tovaglie Delicate + Vapore", + "iot_wash_delicate_whites": "Bianchi Delicati", + "iot_wash_denim_jeans": "Denim - jeans", + "iot_wash_diving_suits": "Mute da sub", + "iot_wash_diving_suits_zelig": "Mute da sub", + "iot_wash_down_jackets": "Piumini", + "iot_wash_down_jackets_zelig": "Piumini", + "iot_wash_duvet": "Piumone", + "iot_wash_fruit_stains": "Macchie di frutta", + "iot_wash_gym_fit": "Gym fit - Fitness", + "iot_wash_handwash": "Lavaggio a mano", + "iot_wash_handwash_colored": "Lavaggio a mano Colorati", + "iot_wash_handwash_dark": "Lavaggio a mano Scuri", + "iot_wash_lingerie": "Lingerie", + "iot_wash_masks_refresh": "Pulizia Mascherine", + "iot_wash_masks_sanification": "Sanificazione Mascherine", + "iot_wash_masks_sanification_steam": "Sanificazione Mascherine + Vapore", + "iot_wash_mats": "Tappetini", + "iot_wash_men_s_trousers": "Pantaloni ", + "iot_wash_mixed": "Misti", + "iot_wash_mixed_steam": "Misti + Vapore", + "iot_wash_mix_and_coloured_44": "Misti e colorati 44'", + "iot_wash_mix_and_coloured_59": "Misti e colorati 59'", + "iot_wash_mix_and_coloured_xl": "Misti e colorati XL", + "iot_wash_new_clothes": "Capi nuovi", + "iot_wash_perfect_white": "Bianco Perfetto", + "iot_wash_perfect_white_steam": "Bianco Perfetto + Vapore", + "iot_wash_pets": "Accessori Animali Domestici", + "iot_wash_pets_hair_removal": "Rimozione Peli Animali", + "iot_wash_pets_odours_stains_removal": "Rimozione Odori e Macchie Animali", + "iot_wash_pets_steam": "Accessori Animali Domestici + Vapore", + "iot_wash_playsuits": "Tutine", + "iot_wash_playsuits_steam": "Tutine + Vapore", + "iot_wash_quick_drum_cleaner": "Pulizia Rapida Cesto", + "iot_wash_rapid_14": "Rapido 14'", + "iot_wash_rapid_30": "Rapido 30'", + "iot_wash_rapid_44": "Rapido 44'", + "iot_wash_rapid_59": "Rapido 59'", + "iot_wash_rapid_59_steam": "Rapido 59' + Vapore", + "iot_wash_refresh_14_min": "Refresh 14'", + "iot_wash_resistant_colored": "Colorati Resistenti", + "iot_wash_resistant_dark": "Scuri Resistenti", + "iot_wash_resistant_whites": "Bianchi Resistenti", + "iot_wash_rinse": "Risciacqui", + "iot_wash_shirts": "Camicie", + "iot_wash_shirts_steam": "Camicie + Vapore", + "iot_wash_silk": "Seta", + "iot_wash_ski_suit": "Tuta da sci", + "iot_wash_ski_suit_zelig": "Tuta da sci", + "iot_wash_spin": "Centrifuga", + "iot_wash_sport": "Sport", + "iot_wash_sport_anti_odor": "Sport Antiodori", + "iot_wash_sport_anti_odor_zelig": "Sport Antiodori", + "iot_wash_stains_remover": "Smacchia tutto", + "iot_wash_swimsuits_and_bikinis": "Costumi e Bikini", + "iot_wash_synthetic": "Sintetici", + "iot_wash_synthetic_steam": "Sintetici + Vapore", + "iot_wash_tablecloths": "Tovaglie", + "iot_wash_tablecloths_steam": "Tovaglie + Vapore", + "iot_wash_technical_fabrics": "Tessuti Tecnici", + "iot_wash_technical_fabrics_zelig": "Tessuti Tecnici", + "iot_wash_technical_jackets": "Giacconi Tecnici", + "iot_wash_technical_jackets_zelig": "Giacconi Tecnici", + "iot_wash_trainers": "Scarpe da ginnastica", + "iot_wash_whites": "Bianchi ", + "iot_wash_whites_44": "Bianchi 44'", + "iot_wash_whites_59": "Bianchi 59'", + "iot_wash_whites_xl": "Bianchi XL", + "iot_wash_wine_stains": "Macchie di Vino", + "iot_wash_wool": "Lana", + "jeans": "Jeans", + "jeans_60": "Jeans", + "low_dry": "Asciugatura Misti", + "mixed": "Misti", + "mixed_and_colored_59": "Misti e Colorati 59'", + "mixed_steam": "Misti + Vapore", + "mix_and_colour_59": "Misti e Colorati 59'", + "mix_and_colour_59_steam": "Misti e Colorati 59' + Vapore ", + "night_and_day": "Night and Day", + "night_wash": "Ciclo Notturno", + "perfect_59": "Perfetto 59'", + "perfect_cotton_59": "Cotone Perfetto 59'", + "perfect_cotton_59_steam": "Cotone Perfetto 59' + Vapore", + "perfect_whites_59": "Bianco Perfetto 59'", + "rapid_14_min": "Rapido 14'", + "rapid_30_min": "Rapido 30'", + "rapid_44_min": "Rapido 44'", + "rapid_a_class_60": "Rapido 59' Classe A", + "rapid_a_class_60_steam": "Rapido 59' Classe A + Vapore", + "rapid_wash_and_dry_59_min": "Lavasciuga 59'", + "resistant_cotton": "Cotone Resistente", + "resistant_cotton_steam": "Cotone Resistente + Vapore", + "rinse": "Risciacqui", + "shirts_steam": "Camicie + Vapore", + "silent_night": "Ciclo Notturno", + "single_item": "Capo Singolo", + "single_item_steam": "Capo Singolo + Vapore", + "smart_wash": "Smart Wash", + "soft_care": "Soft Care", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "Special 39'", + "special_39_full_load": "Special 39'", + "special_39_full_load_steam": "Special 39' + Vapore", + "special_49": "Special 49'", + "sport_39": "Sport 39'", + "sport_plus_29": "Sport Plus 29\"", + "sport_plus_39": "Sport Plus 39'", + "steam_39": "Vapore 39'", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro - Cotone", + "steam_care_pro_delicates": "Steam Care Pro - Delicati", + "steam_care_pro_synthetic": "Steam Care Pro - Sintetici", + "steam_hygiene_plus": "Hygiene Plus + Vapore", + "synthetics": "Sintetici", + "synthetic_and_coloured": "Sintetici e Colorati", + "synthetic_and_coloured_steam": "Sintetici e Colorati + Vapore", + "tailored_resistant_cotton": "Cotone resistente su misura", + "tailored_synthetic_and_coloured": "Sartoriale Sintetico Colorato", + "total_care": "Total Care", + "tumbling": "Tumbling", + "wool": "Lana", + "wool_and_delicates_49": "Lana e Delicati 49'", + "wool_dry": "Asciugatura Lana", + "wool_soft_care": "Lana e Soft Care" + }, + "name": "Programma" + }, + "programs_ref": { + "state": { + "auto_set": "AUTO-SET", + "cheese": "Formaggio", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Modalità Eco", + "fruits_and_veg": "Fruit&Veg", + "fruit_and_veg": "Fruit & Veg", + "holiday": "HOLIDAY", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Nessuna modalità selezionata", + "quick_cool": " QUICK COOL", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + }, + "name": "Programma" } }, "select": { @@ -1082,7 +1640,8 @@ "iot_uv_and_dry": "UV + Deumidificatore", "iot_uv_and_fan": "UV + Ventola", "iot_uv_and_heat": "UV + Caldo" - } + }, + "name": "Programma" }, "programs_ref": { "state": { @@ -1104,7 +1663,8 @@ "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" - } + }, + "name": "Programma" }, "remaining_time": { "name": "Tempo rimanente" diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index 8ebc602..15e03bf 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -58,7 +58,8 @@ "19": "Drogen", "20": "Drogen", "11": "Klaar", - "17": "unknown" + "17": "unknown", + "12": "unkown" }, "name": "Fase" }, @@ -306,7 +307,8 @@ "woolmark": "Wol", "xxl_load": "XXL Lading", "zoom_59": "Zoom 59" - } + }, + "name": "Programma" }, "room_temperature": { "name": "Omgevingstemperatuur" @@ -319,6 +321,562 @@ }, "fridge_temp": { "name": "Koelkasttemperatuur" + }, + "programs_ac": { + "state": { + "iot_10_heating": "10°C-verwarmingsfunctie", + "iot_auto": "Automatisch", + "iot_cool": "Koelen", + "iot_dry": "Drogen", + "iot_fan": "Ventilator", + "iot_heat": "Verwarming", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Zelfzuivering", + "iot_self_clean": "Zelfreiniging", + "iot_self_clean_56": "Sterilisatie reiniging 56°C", + "iot_simple_start": "Start nu", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Auto", + "iot_uv_and_cool": "UV + Koud", + "iot_uv_and_dry": "UV + Ontvochtiger", + "iot_uv_and_fan": "UV + Hetelucht", + "iot_uv_and_heat": "UV + Warmte" + }, + "name": "Programma" + }, + "programs_dw": { + "state": { + "59_min": "Snel 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "Auto universeel 50 - 60°C", + "auto_universal_plus": "Auto universeel plus 65 - 75°C", + "auto_universal_plus_soil": "Auto universeel plus 65 - 75°C", + "auto_universal_soil": "Auto universeel 50 - 60°C", + "auto_wash": "Automatisch wassen", + "auto_wash_soil": "Automatisch wassen", + "classe_a_59": "A klasse 59' 65°C", + "delicate": "Delicaat 45°C", + "dishwasher_care": "Ontkalkingsprogramma", + "eco": "Eco", + "eco_asynch": "Eco 45°C", + "eco_bldc": "Eco 45°C", + "eco_synch": "Eco 45°C", + "gentle_wash": "Gentle wash", + "glass": "Glas", + "glassware": "Glaswerk 45°C", + "glass_care": "Glass Care", + "hygiene": "Hygiëne", + "hygiene_plus": "Hygiëne+ 75°C", + "intensive": "Intensief", + "intensive_rapid": "Intensief snel", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "Auto universeel 50 - 60°C", + "iot_auto_wash_soil": "Automatisch wassen", + "iot_baby_care": "Baby Care", + "iot_breakfast": "Onbtijt", + "iot_checkup": "Controle", + "iot_china_crystals": "Kristallen", + "iot_classe_a_59": "Snel 59'", + "iot_cocktail_glasses": "CocktailGlazen", + "iot_cocktail_glasses_soil": "CocktailGlazen", + "iot_daily_care": "Dagelijkse Zorg", + "iot_daily_care_soil": "Dagelijkse Zorg", + "iot_delicate": "Delicaat 45°C", + "iot_dinner_for_two": "Dinner for 2", + "iot_dinner_for_two_soil": "Dinner for 2", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "Eco 45°C", + "iot_eco_bldc": "Eco 45°C", + "iot_eco_synch": "Eco 45°C", + "iot_extra_hygiene": "Extra Hygiene", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "Happy Hour", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "Party", + "iot_party_soil": "Party", + "iot_pizza_menu": "Pizza Menu", + "iot_pizza_menu_soil": "Pizza Menu", + "iot_plastic_tupperware": "Plastiek & Tupperware", + "iot_porcelain": "Porcelein", + "iot_power_mix_wash": "Power Mix Was", + "iot_power_mix_wash_soil": "Power Mix Was", + "iot_prewash": "Voorwas", + "iot_pyrex_and_glassware": "Pyrex & Glazen", + "iot_rapid_29": "Snel 29'", + "iot_rapid_39": "Snel 39' 60°C", + "iot_single": "Single", + "iot_steam": "Stoom 75°C", + "iot_super_flash": "Super Flash", + "iot_super_wash": "Super Was", + "iot_turbopower": "TurboPower", + "iot_universal": "Universeel 60°C", + "iot_wok_grids_maxi_pans": "Speciale Pannen (Wokpannen - Roosters & Maxi Pannen)", + "iot_wok_grids_maxi_pans_soil": "Speciale Pannen (Wokpannen - Roosters & Maxi Pannen)", + "iot_yes_quick_cycle": "Yes Quick", + "night": "Zeer stil 55°C", + "prewash": "Voorwas", + "rapid_20": "Snel 20'", + "rapid_24": "Snel 24'", + "rapid_29": "Snel 29' 50°C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "Snel 39' 60°C", + "rapid_49": "Snel 49'", + "rapid_59": "Snel 59'", + "sanitising": "Ontsmetten", + "silence": "Silence", + "silent": "Nacht", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", + "special": "speciaal", + "special_pw_prz": "speciaal", + "steam": "Stoom 75°C", + "steam_plus": "Stoom Plus 75°C", + "total_care": "Total Care 50°C", + "ultra_silence": "Zeer stil 55°C", + "ultra_silent": "Zeer stil 55°C", + "universal": "Universeel 60°C", + "universal_plus": "Universeel Plus 70°C", + "zoom_39": "Zoom 39 min" + }, + "name": "Programma" + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "Asbruin", + "iot_special_beef_fillet": "Runderfilet", + "iot_special_beef_veal_stew": "Rund- en kalfsvleesstoofpot", + "iot_special_boiled_rice": "Gekookte rijst", + "iot_special_chicken_breast": "Kippenborst", + "iot_special_chicken_legs": "Kippenpoten", + "iot_special_chocolate_pudding": "Chocoladepudding", + "iot_special_entrecote": "Entrecote", + "iot_special_fresh_tuna": "Verse tonijn", + "iot_special_grilled_vegetables": "Gegrilde groenten", + "iot_special_lamb_cutlet": "Lamskotelet", + "iot_special_meatballs": "Gehaktballen", + "iot_special_minestrone": "Minestrone", + "iot_special_mussels": "Mosselen", + "iot_special_omelette": "Omelet", + "iot_special_pancakes": "Pannenkoeken", + "iot_special_paris_style_peas": "Erwten in Parijse stijl", + "iot_special_poached_eggs": "Gepocheerde eieren", + "iot_special_pork_fillet": "Varkensfilet", + "iot_special_pork_ribs": "Varkensribben", + "iot_special_prawns": "Garnalen", + "iot_special_quinoa": "Quinoa", + "iot_special_ratatouille": "Ratatouille", + "iot_special_salmon_fillet": "Zalmfilet", + "iot_special_saute_potatoes": "Gebakken aardappelen", + "iot_special_scallops": "Sint-jakobsschelpen", + "iot_special_scrambled_eggs": "Roerei", + "iot_special_spelt": "Spelt", + "iot_special_veggy_noodles": "Vegetarische noedels", + "iot_special_white_fish_fillet": "Witte visfilet", + "iot_standard_boiling": "Boiling", + "iot_standard_frying": "Bakken", + "iot_standard_keep_warm": "Warm houden", + "iot_standard_melting": "Smelten", + "iot_standard_simmering": "Simmering" + }, + "name": "Programma" + }, + "programs_ov": { + "state": { + "bakery": "Pasta en bakkersproducten", + "bakery_steam": "Oven stomen", + "bottom_heating": "Bodemverwarming", + "bottom_heating_fan": "Bodemverwarming + Ventilator", + "bread": "Brood", + "bread_steam": "Stoomgebakken brood", + "combi": "Combi", + "convection_fan": "Met ventilator", + "convection_fan_turnspit": "Convectie + ventilator + draaispit", + "conventional": "Conventioneel", + "conventional_turnspit": "Convectie + draaispit", + "defrost": "Ontdooien", + "descaling": "Ontkalken", + "fish": "Vis", + "fish_steam": "Gestoomde vis", + "grill_cata": "Grill", + "grill_fan_cata": "Grill + ventilator", + "grill_fan_pyro": "Grill + ventilator", + "grill_pyro": "Grill", + "h20_clean": "H2O-Clean", + "iot_bread": "Brood", + "iot_h20_clean": "h2O clean", + "leavening": "Gisting", + "low_temp_cooking": "Bereiding op lage temperatuur", + "low_temp_cooking_fish": "Bereiding op lage temperatuur – Vis", + "low_temp_cooking_fish_steam": "Bereiding op lage temperatuur – Gestoomde vis", + "low_temp_cooking_meat": "Bereiding op lage temperatuur – Vlees", + "low_temp_cooking_meat_steam": "Bereiding op lage temperatuur – Gestoomd vlees", + "low_temp_cooking_steam": "Stomen bij lage temperatuur", + "meat": "Vlees", + "meat_steam": "Vlees stomen", + "multi_level": "Multi-level", + "paella": "Paella", + "pasta_and_bakery": "Pasta en bakkersproducten", + "pizza": "Pizza", + "pyrolysis": "Pyrolyse", + "pyrolysis_plus": "Pyrolyse +", + "red_meat": "Rood vlees", + "red_meat_steam": "Gestoomd rood vlees", + "regenerate": "Regenereren", + "soft_plus": "Soft+", + "super_grill": "Super grill", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Groenten", + "vegetables_cata": "Groenten", + "vegetables_pyro": "Groenten", + "water_discharge": "Afvoer van water", + "white_meat": "Wit vlees", + "white_meat_steam": "Gestoomd wit vlees" + }, + "name": "Programma" + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "20° gekleurd en katoen", + "20_degrees_new_energy_label": "20 °C", + "active_steam": "Stoom", + "active_wash": "Actieve was", + "active_wash_steam": "Actieve was", + "allergy_care": "Allergiezorg", + "allergy_care_pro": "Allergy Care Pro", + "all_in_one_49": "Alles-in-één 49'.", + "all_in_one_59": "Alles-in-één 59'.", + "all_in_one_59_steam": "Actieve was + Stoom", + "autocare": "Automatische verzorging", + "autoclean": "Trommelreiniging", + "baby_60": "All baby 60 ° C", + "care_14": "Rapid care 14'", + "care_30": "Rapid care 30'", + "care_44": "Rapid Care 44'", + "checkup": "Controle", + "colour_59": "Gekleurd 59'", + "colour_59_steam": "Gekleurd 59' + Stoom", + "cottons": "Katoen", + "cottons_prewash": "Katoen + voorwas", + "cottons_steam": "Katoen + Stoom", + "cotton_care_59": "Cotton Care 59 Min", + "delicate_59": "Fijne was 59'", + "delicate_silk": "Fijne was Zijde", + "delicate_silk_steam": "Fijne was Zijde + Stoom", + "delicati_59": "Fijne was 59'", + "delicati_59_steam": "Fijne was 59'", + "drain_spin": "Afpompen en centrifugeren", + "easy_iron": "Makkelijk Strijkbaar", + "eco_40_60_new_energy_label": "Eco 40-60", + "extra_care": "Extra Care", + "fitness": "Fitness care", + "fitness_care": "Fitness care", + "fresh_care": "Opfrisverzorging", + "fresh_care_steam": "Fresh Care + Stoom", + "handwash_wool": "Handwas en wol", + "high_dry": "Katoen drogen", + "hqd_20_degrees": "Katoen 20℃", + "hqd_allergy": "Allergiezorg", + "hqd_autoclean": "Het reinigen van de trommel", + "hqd_babycare": "Baby Care", + "hqd_checkup": "Controle", + "hqd_cottons": "Katoen", + "hqd_delicate": "Fijne was", + "hqd_delicate_cradle": "Fijne was", + "hqd_dry": "Katoen drogen", + "hqd_dry_synthetics": "Gemengde vezels drogen", + "hqd_duvet": "Dekbed", + "hqd_eco_40_60_degrees": "Eco 40-60", + "hqd_handwash_wool": "Wol", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "Gemengde was", + "hqd_quick_15": "Snel 15'", + "hqd_quick_wash_57": "Snel wassen 57 min", + "hqd_rapid_wash_and_dry": "Wassen en drogen", + "hqd_refresh": "Opfrissen", + "hqd_rinse": "Spoelen", + "hqd_shirts": "Overhemden", + "hqd_smart": "Smart A.I.", + "hqd_spin": "Centrifugeren", + "hqd_sport": "Sport", + "hqd_super_fast": "Snel 39'", + "hqd_synthetic_and_coloured": "Synthetische stoffen", + "hygiene_59": "Hygiene Plus 59'", + "hygiene_60": "Hygiëne 60 °C", + "hygiene_plus_59": "Hygiene Plus 59'", + "hygiene_plus_59_min": "Hygiene Plus 59'", + "hygiene_pro_49_min": "Hygiene Pro 49 min", + "hygiene_pro_steam": "Hygiene Pro + stoom", + "intensive_40": "Intensief 40°C", + "intensive_40_steam": "Intensief 40°C + Stoom", + "iot_active_steam": "Stoom", + "iot_active_wash_steam": "Actieve was", + "iot_allergy_care_pro": "Allergy Care Pro", + "iot_all_in_one_59_steam": "Actieve was + Stoom", + "iot_checkup": "Controle", + "iot_colour_59_steam": "Gekleurd 59' + Stoom", + "iot_cottons_steam": "Katoen + Stoom", + "iot_delicate_silk_steam": "Fijne was Zijde + Stoom", + "iot_delicati_59_steam": "Fijne was 59'", + "iot_dry_air_refresh": "Opfrissen met lucht", + "iot_dry_anti_mites": "Antimijt", + "iot_dry_baby": "Baby", + "iot_dry_backpacks": "Rugzakken", + "iot_dry_bathrobe": "Badjassen en poreuze stoffen", + "iot_dry_bed_linen": "Beddengoed", + "iot_dry_cotton_dry": "Katoen drogen", + "iot_dry_cuddly_toys": "Knuffeldieren", + "iot_dry_curtains": "Gordijnen", + "iot_dry_dehumidifier": "Vochtigheidsverwijderaar", + "iot_dry_delicates_antiallergy": "Fijne was – anti-allergie", + "iot_dry_delicate_tablecloths": "Delicate tafellakens", + "iot_dry_denim_jeans": "Denim – Jeans", + "iot_dry_easy_iron_cotton": "Gemakkelijk strijken – Katoen", + "iot_dry_easy_iron_synthetics": "Gemakkelijk strijken – Synthetische stoffen", + "iot_dry_gym_fit": "Sportkleding", + "iot_dry_lingerie": "Lingerie", + "iot_dry_mixed_dry": "Gemengde vezels drogen", + "iot_dry_rapid_60_min_delicates": "Snel 60' – Fijne was", + "iot_dry_shirts": "Overhemden", + "iot_dry_swimsuits_and_bikinis": "Badkleding", + "iot_dry_synthetics": "Synthetische stoffen drogen", + "iot_dry_synthetic_dry": "Synthetische stoffen drogen", + "iot_dry_tablecloths": "Tafellakens", + "iot_dry_technical_fabrics": "Technische stoffen", + "iot_dry_warm_embrace": "Warm drogen", + "iot_dry_wool_dry": "Wol drogen", + "iot_easy_iron": "Makkelijk Strijkbaar", + "iot_fresh_care_steam": "Fresh Care + Stoom", + "iot_hygiene_pro_steam": "Hygiene Pro + stoom", + "iot_intensive_40_steam": "Intensief 40°C + Stoom", + "iot_mixed_steam": "Gemengde vezels + Stoom", + "iot_mix_and_colour_59_steam": "Gemengd en Gekleurd 59' + Stoom", + "iot_perfect_cotton_59_steam": "Perfecte Katoen 59'", + "iot_rapid_a_class_60_steam": "Snel klasse A 60 + Stoom", + "iot_resistant_cotton_steam": "Katoen + Stoom", + "iot_shirts_steam": "Shirts + stoom", + "iot_single_item_steam": "Eén artikel + Stoom", + "iot_smart_wash": "Smart Wash", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "Speciaal 39' + Stoom", + "iot_steam_hygiene_plus": "Hygiëne Plus Stoom ", + "iot_synthetic_and_coloured_steam": "Synthetisch en gekleurd + Stoom", + "iot_wash_and_dry": "Wassen en drogen", + "iot_wash_anti_mites": "Antimijt", + "iot_wash_anti_odor": "Antigeur", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "Ontsmettend", + "iot_wash_baby_sanitizer_steam": "Baby Sanitiser + Stoom", + "iot_wash_backpacks": "Rugzakken", + "iot_wash_backpacks_zelig": "Rugzakken", + "iot_wash_bathrobe": "Badjassen en handdoeken", + "iot_wash_bathrobe_steam": "Badjas + Stoom", + "iot_wash_bed_linen": "Beddengoed", + "iot_wash_bed_linen_steam": "Beddengoed + Stoom", + "iot_wash_bed_linen_zelig": "Beddengoed", + "iot_wash_big_single_load": "Grote enkele lading", + "iot_wash_bleaching": "Bleken", + "iot_wash_blood_stains": "Bloedvlekken", + "iot_wash_cashmere": "Kasjmier", + "iot_wash_chocolate_stains": "Chocoladevlekken", + "iot_wash_cold_wash": "Koude was", + "iot_wash_colored": "Bonte was", + "iot_wash_colored_anti_stain": "Vlekverwijdering voor bonte was", + "iot_wash_colored_delicate": "Fijne bonte was", + "iot_wash_coloured": "Bonte was", + "iot_wash_coloured_bed_linen": "Gekleurd beddengoed", + "iot_wash_coloured_bed_linen_steam": "Gekleurd beddengoed + Stoom", + "iot_wash_coloured_curtains": "Gekleurde gordijnen", + "iot_wash_coloured_shirts": "Gekleurde overhemden", + "iot_wash_coloured_shirts_steam": "Gekleurde Shirts + Stoom", + "iot_wash_coloured_steam": "Bonte was + Stoom", + "iot_wash_coloured_tableclothes": "Gekleurde tafelkleden", + "iot_wash_coloured_tableclothes_steam": "Gekleurde tafelkleden + Stoom", + "iot_wash_cotton": "Katoen", + "iot_wash_cotton_steam": "Katoen + Stoom", + "iot_wash_cuddly_toys": "Knuffeldieren", + "iot_wash_curtains": "Gordijnen", + "iot_wash_curtains_steam": "Gordijnen+Stoom", + "iot_wash_curtains_zelig": "Gordijnen", + "iot_wash_dark": "Donkere kleding", + "iot_wash_darks_and_coloured_44": "Donkere en bonte was 44'", + "iot_wash_darks_and_coloured_59": "Donkere en bonte was 59'", + "iot_wash_darks_and_coloured_xl": "Donkere en bonte was XL", + "iot_wash_dark_steam": "Donkere kleding + Stoom", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "Fijne was", + "iot_wash_delicate_antiallergy": "Anti-allergie voor fijne was", + "iot_wash_delicate_antiallergy_steam": "Anti-allergie voor fijne was + Stoom", + "iot_wash_delicate_antiallergy_zelig": "Anti-allergie voor fijne was", + "iot_wash_delicate_colors": "Gekleurde fijne was", + "iot_wash_delicate_colors_steam": "Kleuren + Stoom", + "iot_wash_delicate_dark": "Donkere fijne was", + "iot_wash_delicate_steam": "Fijne was + Stoom", + "iot_wash_delicate_tablecloths": "Delicate tafellakens", + "iot_wash_delicate_tablecloths_steam": "Delicate tafellakens + Stoom", + "iot_wash_delicate_whites": "Witte fijne was", + "iot_wash_denim_jeans": "Denim – Jeans", + "iot_wash_diving_suits": "Duikpakken", + "iot_wash_diving_suits_zelig": "Duikpakken", + "iot_wash_down_jackets": "Donsjassen", + "iot_wash_down_jackets_zelig": "Donsjassen", + "iot_wash_duvet": "Dekbed", + "iot_wash_fruit_stains": "Fruitvlekken", + "iot_wash_gym_fit": "Sportkleding", + "iot_wash_handwash": "Handwas", + "iot_wash_handwash_colored": "Fijne handwas", + "iot_wash_handwash_dark": "Donkere handwas", + "iot_wash_lingerie": "Lingerie", + "iot_wash_masks_refresh": "Maskers opfrissen", + "iot_wash_masks_sanification": "Maskers ontsmetting", + "iot_wash_masks_sanification_steam": "Maskers ontsmetting + Stoom", + "iot_wash_mats": "Vloerkleden", + "iot_wash_men_s_trousers": "Mannenbroeken", + "iot_wash_mixed": "Gemengde vezels", + "iot_wash_mixed_steam": "Gemengde vezels + Stoom", + "iot_wash_mix_and_coloured_44": "Gemengde vezels en bonte was 44'", + "iot_wash_mix_and_coloured_59": "Gemengde vezels en bonte was 59'", + "iot_wash_mix_and_coloured_xl": "Gemengde vezels en bonte was XL", + "iot_wash_new_clothes": "Nieuwe kleding", + "iot_wash_perfect_white": "Perfect wit", + "iot_wash_perfect_white_steam": "Perfect wit + Stoom", + "iot_wash_pets": "Accessoires voor dieren", + "iot_wash_pets_hair_removal": "Verwijderen van huisdierharen", + "iot_wash_pets_odours_stains_removal": "Verwijderen van diergeuren en vlekken", + "iot_wash_pets_steam": "Accessoires voor dieren", + "iot_wash_playsuits": "Playsuits", + "iot_wash_playsuits_steam": "Playsuits + Stoom", + "iot_wash_quick_drum_cleaner": "Snelle trommelreiniger", + "iot_wash_rapid_14": "Snel 14'", + "iot_wash_rapid_30": "Snel 30'", + "iot_wash_rapid_44": "Snel 44'", + "iot_wash_rapid_59": "Snel 59'", + "iot_wash_rapid_59_steam": "Snel 59' + Stoom", + "iot_wash_refresh_14_min": "Opfrissen 14'", + "iot_wash_resistant_colored": "Bont stevig wasgoed", + "iot_wash_resistant_dark": "Donker stevig wasgoed", + "iot_wash_resistant_whites": "Wit stevig wasgoed", + "iot_wash_rinse": "Spoelen", + "iot_wash_shirts": "Overhemden", + "iot_wash_shirts_steam": "Overhemden + Stoom", + "iot_wash_silk": "Zijde", + "iot_wash_ski_suit": "Skipakken", + "iot_wash_ski_suit_zelig": "Skipakken", + "iot_wash_spin": "Centrifugeren", + "iot_wash_sport": "Sport", + "iot_wash_sport_anti_odor": "Anti-Odour sportkleding", + "iot_wash_sport_anti_odor_zelig": "Anti-Odour sportkleding", + "iot_wash_stains_remover": "Vlekkenverwijderaar", + "iot_wash_swimsuits_and_bikinis": "Badkleding", + "iot_wash_synthetic": "Synthetische stoffen", + "iot_wash_synthetic_steam": "Synthetische stoffen + Stoom", + "iot_wash_tablecloths": "Tafellakens", + "iot_wash_tablecloths_steam": "Tafellakens + Stoom", + "iot_wash_technical_fabrics": "Technische stoffen", + "iot_wash_technical_fabrics_zelig": "Technische stoffen", + "iot_wash_technical_jackets": "Technische jacks", + "iot_wash_technical_jackets_zelig": "Technische jacks", + "iot_wash_trainers": "Sportschoenen", + "iot_wash_whites": "Witte was", + "iot_wash_whites_44": "Witte was 44'", + "iot_wash_whites_59": "Witte was 59'", + "iot_wash_whites_xl": "Witte was XL", + "iot_wash_wine_stains": "Wijnvlekken", + "iot_wash_wool": "Wol", + "jeans": "Jeans", + "jeans_60": "Jeans", + "low_dry": "Gemengde vezels drogen", + "mixed": "Gemengde vezels", + "mixed_and_colored_59": "Gemengde vezels en bonte was 59'", + "mixed_steam": "Gemengde vezels + Stoom", + "mix_and_colour_59": "Gemengd + Gekleurd 39'", + "mix_and_colour_59_steam": "Gemengd en Gekleurd 59' + Stoom", + "night_and_day": "Dag en nacht", + "night_wash": "Nachtprogramma", + "perfect_59": "Perfect 59'", + "perfect_cotton_59": "Perfecte Katoen 59'", + "perfect_cotton_59_steam": "Perfecte Katoen 59'", + "perfect_whites_59": "Perfect wit 59'", + "rapid_14_min": "Snel 14'", + "rapid_30_min": "Rapid 30'", + "rapid_44_min": "Rapid 44'", + "rapid_a_class_60": "Snel klasse A 60", + "rapid_a_class_60_steam": "Snel klasse A 60 + Stoom", + "rapid_wash_and_dry_59_min": "Wassen en drogen 59'", + "resistant_cotton": "Katoen", + "resistant_cotton_steam": "Katoen + Stoom", + "rinse": "Spoelen", + "shirts_steam": "Shirts + stoom", + "silent_night": "Nachtprogramma", + "single_item": "Eén artikel", + "single_item_steam": "Eén artikel + Stoom", + "smart_wash": "Smart Wash", + "soft_care": "Zachte verzorging", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "Speciaal 39'", + "special_39_full_load": "Speciaal 39'", + "special_39_full_load_steam": "Speciaal 39' + Stoom", + "special_49": "Speciaal 49'", + "sport_39": "Sport 39'", + "sport_plus_29": "Sport Plus 29\"", + "sport_plus_39": "Sport Plus 39'", + "steam_39": "Stoom 39'", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro - Katoen", + "steam_care_pro_delicates": "Steam Care Pro - Fijne was", + "steam_care_pro_synthetic": "Steam Care Pro - Synthetisch", + "steam_hygiene_plus": "Hygiëne Plus Stoom ", + "synthetics": "Synthetische stoffen", + "synthetic_and_coloured": "Synthetische vezels en kleuren", + "synthetic_and_coloured_steam": "Synthetisch en gekleurd + Stoom", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "Total Care", + "tumbling": "Trommeldrogen", + "wool": "Wol", + "wool_and_delicates_49": "Wol/Fijne was 49'", + "wool_dry": "Wol drogen", + "wool_soft_care": "Wol & Soft Care" + }, + "name": "Programma" + }, + "programs_ref": { + "state": { + "auto_set": "AUTO-SET", + "cheese": "Kaas", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Eco-modus", + "fruits_and_veg": "Fruit&Veg", + "fruit_and_veg": "Fruit & Veg", + "holiday": "HOLIDAY", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Geen modus geselecteerd", + "quick_cool": "QUICK KOEL", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + }, + "name": "Programma" } }, "select": { @@ -1030,7 +1588,8 @@ "iot_uv_and_dry": "UV + Ontvochtiger", "iot_uv_and_fan": "UV + Hetelucht", "iot_uv_and_heat": "UV + Warmte" - } + }, + "name": "Programma" }, "programs_ref": { "state": { @@ -1052,7 +1611,8 @@ "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" - } + }, + "name": "Programma" }, "remaining_time": { "name": "Resterende tijd" diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index 907c3dc..d6cd63d 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -58,7 +58,8 @@ "19": "Suszenie", "20": "Suszenie", "11": "Gotowe", - "17": "unknown" + "17": "unknown", + "12": "unkown" }, "name": "Faza" }, @@ -306,7 +307,8 @@ "woolmark": "Woolmark", "xxl_load": "XXL Load", "zoom_59": "Zoom 59" - } + }, + "name": "Program" }, "room_temperature": { "name": "Temperatura pokojowa" @@ -319,6 +321,562 @@ }, "fridge_temp": { "name": "Temperatura lodówki" + }, + "programs_ac": { + "state": { + "iot_10_heating": "Funkcja grzania 10°C", + "iot_auto": "Auto", + "iot_cool": "Chłodzenie", + "iot_dry": "Osuszanie", + "iot_fan": "Wentylator", + "iot_heat": "Grzanie", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Self Purify", + "iot_self_clean": "Self Clean", + "iot_self_clean_56": "Steri Clean 56°C", + "iot_simple_start": "Uruchom teraz", + "iot_uv": "Sterylizacja UVC", + "iot_uv_and_auto": "UV + automat", + "iot_uv_and_cool": "UV + chłodzenie", + "iot_uv_and_dry": "UV + osuszacz powietrza", + "iot_uv_and_fan": "UV + wentylator", + "iot_uv_and_heat": "UV + podgrzewanie" + }, + "name": "Program" + }, + "programs_dw": { + "state": { + "59_min": "Szybki 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "Auto Universalny 50 - 60°C", + "auto_universal_plus": "Auto Universalny Plus 65 - 75°C", + "auto_universal_plus_soil": "Auto Universalny Plus 65 - 75°C", + "auto_universal_soil": "Auto Universalny 50 - 60°C", + "auto_wash": "Auto Wash", + "auto_wash_soil": "Auto Wash", + "classe_a_59": "Zmywanie w klasie A 1 godz. 65°C", + "delicate": "Delikatny 45°C", + "dishwasher_care": "Cykl usuwania kamienia", + "eco": "Eco", + "eco_asynch": "Eco 45°C", + "eco_bldc": "Eco 45°C", + "eco_synch": "Eco 45°C", + "gentle_wash": "Gentle wash", + "glass": "Szkło", + "glassware": "Szklane 45°C", + "glass_care": "Glass Care", + "hygiene": "Higiena", + "hygiene_plus": "Higiena+ 75°C", + "intensive": "Intensywne ", + "intensive_rapid": "intensywny szybki", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "Auto Universalny 50 - 60°C", + "iot_auto_wash_soil": "Auto Wash", + "iot_baby_care": "Baby Care", + "iot_breakfast": "Śniadanie", + "iot_checkup": "Kontrola", + "iot_china_crystals": "Kryształy", + "iot_classe_a_59": "Szybki 59'", + "iot_cocktail_glasses": "Kieliszki", + "iot_cocktail_glasses_soil": "Kieliszki", + "iot_daily_care": "Daily Care", + "iot_daily_care_soil": "Daily Care", + "iot_delicate": "Delikatny 45°C", + "iot_dinner_for_two": "Obiad dla dwojga", + "iot_dinner_for_two_soil": "Obiad dla dwojga", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "Eco 45°C", + "iot_eco_bldc": "Eco 45°C", + "iot_eco_synch": "Eco 45°C", + "iot_extra_hygiene": "Extra Higieniczne", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "Happy Hour", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "Imprezowy", + "iot_party_soil": "Imprezowy", + "iot_pizza_menu": "Pizza", + "iot_pizza_menu_soil": "Pizza", + "iot_plastic_tupperware": "Plastik i pojemniki", + "iot_porcelain": "Porcelana", + "iot_power_mix_wash": "Mieszanie zmywanie Power", + "iot_power_mix_wash_soil": "Mieszanie zmywanie Power", + "iot_prewash": "Mycie wstępne", + "iot_pyrex_and_glassware": "Pyrex i Szkło", + "iot_rapid_29": "Szybki 29'", + "iot_rapid_39": "Szybkie 39' 60°C", + "iot_single": "Pojedynczy", + "iot_steam": "Para 75°C", + "iot_super_flash": "Super Flash", + "iot_super_wash": "Super Mycie", + "iot_turbopower": "TurboPower", + "iot_universal": "Uniwersalne 60°C", + "iot_wok_grids_maxi_pans": "Specjalny do patelni (Woki, Patelnie karbowane, Patelnie maxi)", + "iot_wok_grids_maxi_pans_soil": "Specjalny do patelni (Woki, Patelnie karbowane, Patelnie maxi)", + "iot_yes_quick_cycle": "Yes Quick", + "night": "Ultra Ciche 55°C", + "prewash": "Mycie wstępne", + "rapid_20": "Szybki 20'", + "rapid_24": "Szybki 24'", + "rapid_29": "Szybki 29' 50°C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "Szybkie 39' 60°C", + "rapid_49": "Szybki 49'", + "rapid_59": "Szybki 59'", + "sanitising": "Dezynfekcja", + "silence": "Silence", + "silent": "Nocny", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", + "special": "specjalne", + "special_pw_prz": "specjalne", + "steam": "Para 75°C", + "steam_plus": "Para Plus 75°C", + "total_care": "Total Care 50°C", + "ultra_silence": "Ultra Ciche 55°C", + "ultra_silent": "Ultra Ciche 55°C", + "universal": "Uniwersalne 60°C", + "universal_plus": "Uniwersalne Plus 70°C", + "zoom_39": "Zoom 39 min" + }, + "name": "Program" + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "Popielato-brązowy", + "iot_special_beef_fillet": "Polędwica wołowa", + "iot_special_beef_veal_stew": "Gulasz wołowo-cielęcy", + "iot_special_boiled_rice": "Ryż gotowany", + "iot_special_chicken_breast": "Pierś z kurczaka", + "iot_special_chicken_legs": "Udka kurczaka", + "iot_special_chocolate_pudding": "Budyń czekoladowy", + "iot_special_entrecote": "Antrykot", + "iot_special_fresh_tuna": "Świeży tuńczyk", + "iot_special_grilled_vegetables": "Grillowane warzywa", + "iot_special_lamb_cutlet": "Kotlet jagnięcy", + "iot_special_meatballs": "Klopsy mięsne", + "iot_special_minestrone": "Włoska zupa warzywna", + "iot_special_mussels": "Małże", + "iot_special_omelette": "Omlet", + "iot_special_pancakes": "Naleśniki", + "iot_special_paris_style_peas": "Groszek w stylu paryskim", + "iot_special_poached_eggs": "Jajka w koszulce", + "iot_special_pork_fillet": "Kotlet wieprzowy", + "iot_special_pork_ribs": "Żeberka wieprzowe", + "iot_special_prawns": "Krewetki", + "iot_special_quinoa": "Komosa ryżowa (quinoa)", + "iot_special_ratatouille": "Ratatuja", + "iot_special_salmon_fillet": "Filet z łososia", + "iot_special_saute_potatoes": "Smażone ziemniaki", + "iot_special_scallops": "Małże (przegrzebki)", + "iot_special_scrambled_eggs": "Jajecznica", + "iot_special_spelt": "Orkisz", + "iot_special_veggy_noodles": "Makaron wegetariański", + "iot_special_white_fish_fillet": "Filet z białej ryby", + "iot_standard_boiling": "Gotowanie", + "iot_standard_frying": "Smażenie", + "iot_standard_keep_warm": "Podtrzymanie ciepła", + "iot_standard_melting": "Roztapianie", + "iot_standard_simmering": "Duszenie" + }, + "name": "Program" + }, + "programs_ov": { + "state": { + "bakery": "Makaron i Piekarnia", + "bakery_steam": "Para z piekarnika", + "bottom_heating": "Grzanie dolne", + "bottom_heating_fan": "Grzanie Dolne + Termoobieg", + "bread": "Chleb", + "bread_steam": "Chleb pieczony na parze", + "combi": "Kombi", + "convection_fan": "Termoobieg", + "convection_fan_turnspit": "Termoobieg + Fan + Rożen", + "conventional": "Konwencjonalny", + "conventional_turnspit": "Statyczny + Rożen", + "defrost": "Rozmrażanie", + "descaling": "Odkamienianie", + "fish": "Ryby", + "fish_steam": "Ryba na parze", + "grill_cata": "Grill", + "grill_fan_cata": "Grill + termoobieg", + "grill_fan_pyro": "Grill + termoobieg", + "grill_pyro": "Grill", + "h20_clean": "H2O-Clean", + "iot_bread": "Chleb", + "iot_h20_clean": "h2O clean", + "leavening": "Zaczyn", + "low_temp_cooking": "Pieczenie w niskiej temperaturze", + "low_temp_cooking_fish": "Pieczenie w niskiej temperaturze - ryby", + "low_temp_cooking_fish_steam": "Gotowanie w niskiej temperaturze - ryba gotowana na parze", + "low_temp_cooking_meat": "Pieczenie w niskiej temperaturze - mięso", + "low_temp_cooking_meat_steam": "Gotowanie w niskiej temperaturze — mięso gotowane na parze", + "low_temp_cooking_steam": "Gotowanie na parze w niskiej temperaturze", + "meat": "Mięso", + "meat_steam": "Mięso na parze", + "multi_level": "Wielopoziomowo", + "paella": "Paella", + "pasta_and_bakery": "Makaron i Piekarnia", + "pizza": "Pizza", + "pyrolysis": "Pyroliza", + "pyrolysis_plus": "Pyroliza +", + "red_meat": "Czerwone mięso", + "red_meat_steam": "Czerwone mięso na parze", + "regenerate": "Podgrzewanie", + "soft_plus": "Soft+", + "super_grill": "Super Grill", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor bake", + "tailor_bake_pyro": "Tailor bake", + "vegetables": "Warzywa", + "vegetables_cata": "Warzywa", + "vegetables_pyro": "Warzywa", + "water_discharge": "Odprowadzanie wody", + "white_meat": "Białe mięso", + "white_meat_steam": "Białe mięso gotowane na parze" + }, + "name": "Program" + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "20° Kolorowe i Bawełna", + "20_degrees_new_energy_label": "20°C", + "active_steam": "Para", + "active_wash": "Aktywne pranie", + "active_wash_steam": "Aktywne pranie", + "allergy_care": "Pielęgnacja antyalergiczna", + "allergy_care_pro": "Allergy Care Pro", + "all_in_one_49": "Wszystko w jednym cyklu 49’", + "all_in_one_59": "Wszystko w jednym cyklu 59’", + "all_in_one_59_steam": "Aktywne pranie + Para", + "autocare": "Pielęgnacja własna", + "autoclean": "Czyszczenie bębna", + "baby_60": "Wszystkie dziecinne 60°C", + "care_14": "Rapid Care 14'", + "care_30": "Rapid Care 30'", + "care_44": "Rapid Care 44'", + "checkup": "Kontrola", + "colour_59": "Kolorowe 59'", + "colour_59_steam": "Kolorowe 59' + Para", + "cottons": "Bawełna", + "cottons_prewash": "Bawełna + pranie wstępne", + "cottons_steam": "Bawełna + Para", + "cotton_care_59": "Cotton Care 59 Min", + "delicate_59": "Delikatne 59’", + "delicate_silk": "Delikatny jedwab", + "delicate_silk_steam": "Delikatny jedwab + Para", + "delicati_59": "Delikatne 59’", + "delicati_59_steam": "Delikatne 59’", + "drain_spin": "Spuść wodę +i odwiruj", + "easy_iron": "Łatwe prasowanie", + "eco_40_60_new_energy_label": "Eco 40-60", + "extra_care": "Extra Care", + "fitness": "Fitness Care", + "fitness_care": "Fitness Care", + "fresh_care": "Fresh Care", + "fresh_care_steam": "Fresh Care + Para", + "handwash_wool": "Pranie ręczne i wełna", + "high_dry": "Suszenie bawełny", + "hqd_20_degrees": "Bawełna 20℃", + "hqd_allergy": "Pielęgnacja antyalergiczna", + "hqd_autoclean": "Czyszczenie bębna", + "hqd_babycare": "Baby Care", + "hqd_checkup": "Kontrola", + "hqd_cottons": "Bawełna", + "hqd_delicate": "Delikatne", + "hqd_delicate_cradle": "Delikatne", + "hqd_dry": "Suszenie bawełny", + "hqd_dry_synthetics": "Suszenie materiałów mieszanych", + "hqd_duvet": "Kołdry", + "hqd_eco_40_60_degrees": "Eco 40-60", + "hqd_handwash_wool": "Wełna", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "Mieszane", + "hqd_quick_15": "Szybki 15'", + "hqd_quick_wash_57": "Szybkie pranie 57 min", + "hqd_rapid_wash_and_dry": "Pranie + suszenie", + "hqd_refresh": "Refresh", + "hqd_rinse": "Płukanie", + "hqd_shirts": "Koszule", + "hqd_smart": "Smart A.I.", + "hqd_spin": "Wirowanie", + "hqd_sport": "Odzież sportowa", + "hqd_super_fast": "Szybki 39’", + "hqd_synthetic_and_coloured": "Syntetyki", + "hygiene_59": "Higiena Plus 59'", + "hygiene_60": "Higiena 60 °", + "hygiene_plus_59": "Higiena Plus 59'", + "hygiene_plus_59_min": "Higiena Plus 59'", + "hygiene_pro_49_min": "Hygiene Pro 49 min", + "hygiene_pro_steam": "Hygiene Pro + Para", + "intensive_40": "Intensywne 40°C", + "intensive_40_steam": "Intensywny 40°C + Para", + "iot_active_steam": "Para", + "iot_active_wash_steam": "Aktywne pranie", + "iot_allergy_care_pro": "Allergy Care Pro", + "iot_all_in_one_59_steam": "Aktywne pranie + Para", + "iot_checkup": "Kontrola", + "iot_colour_59_steam": "Kolorowe 59' + Para", + "iot_cottons_steam": "Bawełna + Para", + "iot_delicate_silk_steam": "Delikatny jedwab + Para", + "iot_delicati_59_steam": "Delikatne 59’", + "iot_dry_air_refresh": "Odświeżacz powietrza", + "iot_dry_anti_mites": "Przeciw roztoczom", + "iot_dry_baby": "Dziecięce", + "iot_dry_backpacks": "Plecaki", + "iot_dry_bathrobe": "Szlafroki i tkaniny porowate", + "iot_dry_bed_linen": "Pościele", + "iot_dry_cotton_dry": "Suszenie bawełny", + "iot_dry_cuddly_toys": "Pluszaki", + "iot_dry_curtains": "Zasłony", + "iot_dry_dehumidifier": "Środek do usuwania wilgoci", + "iot_dry_delicates_antiallergy": "Delikatne - przeciwalergiczne", + "iot_dry_delicate_tablecloths": "Delikatne obrusy", + "iot_dry_denim_jeans": "Dżinsy", + "iot_dry_easy_iron_cotton": "Łatwe prasowanie - Wełna", + "iot_dry_easy_iron_synthetics": "Łatwe prasowanie - Syntetyki", + "iot_dry_gym_fit": "Ubrania na siłownię", + "iot_dry_lingerie": "Bielizna", + "iot_dry_mixed_dry": "Suszenie materiałów mieszanych", + "iot_dry_rapid_60_min_delicates": "Szybki 60 - Delikatne", + "iot_dry_shirts": "Koszule", + "iot_dry_swimsuits_and_bikinis": "Stroje kąpielowe", + "iot_dry_synthetics": "Suszenie materiałów syntetycznych", + "iot_dry_synthetic_dry": "Suszenie materiałów syntetycznych", + "iot_dry_tablecloths": "Obrusy", + "iot_dry_technical_fabrics": "Tkaniny techniczne", + "iot_dry_warm_embrace": "Delikatne suszenie", + "iot_dry_wool_dry": "Suszenie wełny", + "iot_easy_iron": "Łatwe prasowanie", + "iot_fresh_care_steam": "Fresh Care + Para", + "iot_hygiene_pro_steam": "Hygiene Pro + Para", + "iot_intensive_40_steam": "Intensywny 40°C + Para", + "iot_mixed_steam": "Mieszane + Para", + "iot_mix_and_colour_59_steam": "Mieszane i kolorowe 59' + Para", + "iot_perfect_cotton_59_steam": "Idealna Bawelna 59'", + "iot_rapid_a_class_60_steam": "Szybki Klasa A 60 + Para", + "iot_resistant_cotton_steam": "Bawełna + Para", + "iot_shirts_steam": "Koszule + Para", + "iot_single_item_steam": "Pojedynczy przedmiot + Para", + "iot_smart_wash": "Inteligentne pranie", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "Specjalny 39' + Para", + "iot_steam_hygiene_plus": "Higiena Plus Para ", + "iot_synthetic_and_coloured_steam": "Syntetyki i Kolorowe + Para", + "iot_wash_and_dry": "Pranie + suszenie", + "iot_wash_anti_mites": "Przeciw roztoczom", + "iot_wash_anti_odor": "Usuwanie zapachów", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "Środek dezynfekujący", + "iot_wash_baby_sanitizer_steam": "Odkażacz dla dzieci + Para", + "iot_wash_backpacks": "Plecaki", + "iot_wash_backpacks_zelig": "Plecaki", + "iot_wash_bathrobe": "Szlafroki i ręczniki", + "iot_wash_bathrobe_steam": "Szlafroki + Para", + "iot_wash_bed_linen": "Pościele", + "iot_wash_bed_linen_steam": "Pościele + Para", + "iot_wash_bed_linen_zelig": "Pościele", + "iot_wash_big_single_load": "Duży pojedynczy ładunek", + "iot_wash_bleaching": "Wybielanie", + "iot_wash_blood_stains": "Plamy krwi", + "iot_wash_cashmere": "Kaszmir", + "iot_wash_chocolate_stains": "Plamy z czekolady", + "iot_wash_cold_wash": "Pranie w zimnej wodzie", + "iot_wash_colored": "Kolorowe", + "iot_wash_colored_anti_stain": "Usuwanie plam z tkanin kolorowych", + "iot_wash_colored_delicate": "Kolorowe, delikatne", + "iot_wash_coloured": "Tkaniny kolorowe", + "iot_wash_coloured_bed_linen": "Kolorowa pościel", + "iot_wash_coloured_bed_linen_steam": "Kolorowa pościel + Para", + "iot_wash_coloured_curtains": "Kolorowe zasłony", + "iot_wash_coloured_shirts": "Kolorowe koszule", + "iot_wash_coloured_shirts_steam": "Kolorowe koszule + Para", + "iot_wash_coloured_steam": "Tkaniny kolorowe + Para", + "iot_wash_coloured_tableclothes": "Kolorowe obrusy", + "iot_wash_coloured_tableclothes_steam": "Kolorowe obrusy + Para", + "iot_wash_cotton": "Bawełna", + "iot_wash_cotton_steam": "Bawełna + Para", + "iot_wash_cuddly_toys": "Pluszaki", + "iot_wash_curtains": "Zasłony", + "iot_wash_curtains_steam": "Zasłony+Para", + "iot_wash_curtains_zelig": "Zasłony", + "iot_wash_dark": "Ciemne ubrania", + "iot_wash_darks_and_coloured_44": "Ciemne i kolorowe 44'", + "iot_wash_darks_and_coloured_59": "Ciemne i kolorowe 59'", + "iot_wash_darks_and_coloured_xl": "Ciemne i kolorowe XL", + "iot_wash_dark_steam": "Ciemne ubrania + Para", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "Delikatne", + "iot_wash_delicate_antiallergy": "Antyalergiczny dla delikatnych", + "iot_wash_delicate_antiallergy_steam": "Antyalergiczny dla delikatnych + Para", + "iot_wash_delicate_antiallergy_zelig": "Antyalergiczny dla delikatnych", + "iot_wash_delicate_colors": "Delikatne tkaniny kolorowe", + "iot_wash_delicate_colors_steam": "Kolorowe + Para", + "iot_wash_delicate_dark": "Delikatne, ciemne", + "iot_wash_delicate_steam": "Delikatne + Para", + "iot_wash_delicate_tablecloths": "Delikatne obrusy", + "iot_wash_delicate_tablecloths_steam": "Delikatne obrusy + Para", + "iot_wash_delicate_whites": "Delikatne, białe", + "iot_wash_denim_jeans": "Dżinsy", + "iot_wash_diving_suits": "Kombinezony do nurkowania", + "iot_wash_diving_suits_zelig": "Kombinezony do nurkowania", + "iot_wash_down_jackets": "Kurtki puchowe", + "iot_wash_down_jackets_zelig": "Kurtki puchowe", + "iot_wash_duvet": "Kołdry", + "iot_wash_fruit_stains": "Plamy z owoców", + "iot_wash_gym_fit": "Ubrania na siłownię", + "iot_wash_handwash": "Pranie ręczne", + "iot_wash_handwash_colored": "Pranie ręczne, kolorowe", + "iot_wash_handwash_dark": "Pranie ręczne, ciemne", + "iot_wash_lingerie": "Bielizna", + "iot_wash_masks_refresh": "Odświeżanie masek", + "iot_wash_masks_sanification": "Dezynfekcja masek", + "iot_wash_masks_sanification_steam": "Dezynfekcja masek + Para", + "iot_wash_mats": "Dywany", + "iot_wash_men_s_trousers": "Spodnie", + "iot_wash_mixed": "Mieszane", + "iot_wash_mixed_steam": "Mieszane + Para", + "iot_wash_mix_and_coloured_44": "Mieszane i kolorowe 44'", + "iot_wash_mix_and_coloured_59": "Mieszane i kolorowe 59'", + "iot_wash_mix_and_coloured_xl": "Mieszane i kolorowe XL", + "iot_wash_new_clothes": "Nowe ubrania", + "iot_wash_perfect_white": "Idealnie białe tkaniny", + "iot_wash_perfect_white_steam": "Idealnie białe tkaniny + Para", + "iot_wash_pets": "Akcesoria dla zwierząt", + "iot_wash_pets_hair_removal": "Usuwanie sierści zwierząt", + "iot_wash_pets_odours_stains_removal": "Usuwanie zapachów i plam po zwierzętach domowych", + "iot_wash_pets_steam": "Akcesoria dla zwierząt", + "iot_wash_playsuits": "Kombinezony", + "iot_wash_playsuits_steam": "Kombinezony + Para", + "iot_wash_quick_drum_cleaner": "Środek do szybkiego czyszczenia bębna", + "iot_wash_rapid_14": "Szybki 14’", + "iot_wash_rapid_30": "Szybki 30’", + "iot_wash_rapid_44": "Szybki 44’", + "iot_wash_rapid_59": "Szybki 59’", + "iot_wash_rapid_59_steam": "Szybki 59' + Para", + "iot_wash_refresh_14_min": "Odświeżanie 14’", + "iot_wash_resistant_colored": "Wytrzymałe, kolorowe", + "iot_wash_resistant_dark": "Wytrzymałe ciemne", + "iot_wash_resistant_whites": "Wytrzymałe białe", + "iot_wash_rinse": "Płukanie", + "iot_wash_shirts": "Koszule", + "iot_wash_shirts_steam": "Koszule + Para", + "iot_wash_silk": "Jedwab", + "iot_wash_ski_suit": "Kombinezony narciarskie", + "iot_wash_ski_suit_zelig": "Kombinezony narciarskie", + "iot_wash_spin": "Wirowanie", + "iot_wash_sport": "Odzież sportowa", + "iot_wash_sport_anti_odor": "Odzież sportowa zapobiegająca powstawaniu nieprzyjemnych zapachów", + "iot_wash_sport_anti_odor_zelig": "Odzież sportowa zapobiegająca powstawaniu nieprzyjemnych zapachów", + "iot_wash_stains_remover": "Wywabiacz", + "iot_wash_swimsuits_and_bikinis": "Stroje kąpielowe", + "iot_wash_synthetic": "Syntetyki", + "iot_wash_synthetic_steam": "Syntetyki + Para", + "iot_wash_tablecloths": "Obrusy", + "iot_wash_tablecloths_steam": "Obrusy + Para", + "iot_wash_technical_fabrics": "Tkaniny techniczne", + "iot_wash_technical_fabrics_zelig": "Tkaniny techniczne", + "iot_wash_technical_jackets": "Kurtki techniczne", + "iot_wash_technical_jackets_zelig": "Kurtki techniczne", + "iot_wash_trainers": "Buty sportowe", + "iot_wash_whites": "Białe", + "iot_wash_whites_44": "Białe 44’", + "iot_wash_whites_59": "Białe 59’", + "iot_wash_whites_xl": "Białe XL", + "iot_wash_wine_stains": "Plamy z wina", + "iot_wash_wool": "Wełna", + "jeans": "Dżins", + "jeans_60": "Dżinsy", + "low_dry": "Suszenie materiałów mieszanych", + "mixed": "Mieszane", + "mixed_and_colored_59": "Mieszane i kolorowe 59 '", + "mixed_steam": "Mieszane + Para", + "mix_and_colour_59": "Mieszane i kolorowe 59'", + "mix_and_colour_59_steam": "Mieszane i kolorowe 59' + Para", + "night_and_day": "Noc i Dzień", + "night_wash": "Cykl nocny", + "perfect_59": "Perfekcyjne 59’", + "perfect_cotton_59": "Idealna Bawelna 59'", + "perfect_cotton_59_steam": "Idealna Bawelna 59'", + "perfect_whites_59": "Idealna biel 59'", + "rapid_14_min": "Szybkie 14'", + "rapid_30_min": "Szybki 30'", + "rapid_44_min": "Szybki 44'", + "rapid_a_class_60": "Szybki Klasa A 60", + "rapid_a_class_60_steam": "Szybki Klasa A 60 + Para", + "rapid_wash_and_dry_59_min": "Pranie i suszenie 59’", + "resistant_cotton": "Bawełna", + "resistant_cotton_steam": "Bawełna + Para", + "rinse": "Płukanie", + "shirts_steam": "Koszule + Para", + "silent_night": "Cykl nocny", + "single_item": "Pojedynczy przedmiot", + "single_item_steam": "Pojedynczy przedmiot + Para", + "smart_wash": "Inteligentne pranie", + "soft_care": "Soft Care", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "Specjalny 39'", + "special_39_full_load": "Specjalny 39'", + "special_39_full_load_steam": "Specjalny 39' + Para", + "special_49": "Specjalne 49’", + "sport_39": "Sport 39’", + "sport_plus_29": "Sportowy Plus 29\"", + "sport_plus_39": "Sportowy Plus 39'", + "steam_39": "Para 39’", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro - Bawełna", + "steam_care_pro_delicates": "Steam Care Pro - Delikatne", + "steam_care_pro_synthetic": "Steam Care Pro - Syntetyki", + "steam_hygiene_plus": "Higiena Plus Para ", + "synthetics": "Syntetyki", + "synthetic_and_coloured": "Syntetyki i Kolorowe", + "synthetic_and_coloured_steam": "Syntetyki i Kolorowe + Para", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "Total Care", + "tumbling": "Bęben", + "wool": "Wełna", + "wool_and_delicates_49": "Wełna/Delikatne 49'", + "wool_dry": "Suszenie wełny", + "wool_soft_care": "Wełna & Soft Care" + }, + "name": "Program" + }, + "programs_ref": { + "state": { + "auto_set": "AUTO-SET", + "cheese": "Ser", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Tryb Eco", + "fruits_and_veg": "Fruit&Veg", + "fruit_and_veg": "Fruit & Veg", + "holiday": "HOLIDAY", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Nie wybrano żadnego trybu", + "quick_cool": "QUICK COOL", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + }, + "name": "Program" } }, "select": { @@ -1030,7 +1588,8 @@ "iot_uv_and_dry": "UV + osuszacz powietrza", "iot_uv_and_fan": "UV + wentylator", "iot_uv_and_heat": "UV + podgrzewanie" - } + }, + "name": "Program" }, "programs_ref": { "state": { @@ -1052,7 +1611,8 @@ "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" - } + }, + "name": "Program" }, "remaining_time": { "name": "Pozostały czas" diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index e551803..4bdd1a4 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -58,7 +58,8 @@ "19": "Secagem", "20": "Secagem", "11": "Pronto", - "17": "unknown" + "17": "unknown", + "12": "unkown" }, "name": "Fase" }, @@ -306,7 +307,8 @@ "woolmark": "Woolmark", "xxl_load": "Carga XXL", "zoom_59": "Zoom 59" - } + }, + "name": "Programa" }, "room_temperature": { "name": "Temperatura ambiente" @@ -319,6 +321,562 @@ }, "fridge_temp": { "name": "Temperatura do frigorífico" + }, + "programs_ac": { + "state": { + "iot_10_heating": "Função de aquecimento de 10 °C", + "iot_auto": "Auto", + "iot_cool": "Frio", + "iot_dry": "Secar", + "iot_fan": "Ventilador", + "iot_heat": "Calor", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Autopurificação", + "iot_self_clean": "Autolimpeza", + "iot_self_clean_56": "Steri-Clean 56°C", + "iot_simple_start": "Iniciar agora", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Auto", + "iot_uv_and_cool": "UV + Frio", + "iot_uv_and_dry": "UV + Desumidificador", + "iot_uv_and_fan": "UV + Ventilação", + "iot_uv_and_heat": "UV + Calor" + }, + "name": "Programa" + }, + "programs_dw": { + "state": { + "59_min": "Rápido 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "Auto Universal 50 - 60°C", + "auto_universal_plus": "Auto Universal Plus 65 - 75°C", + "auto_universal_plus_soil": "Auto Universal Plus 65 - 75°C", + "auto_universal_soil": "Auto Universal 50 - 60°C", + "auto_wash": "Auto Wash", + "auto_wash_soil": "Auto Wash", + "classe_a_59": "Classe A 59' 65°C", + "delicate": "Delicados 45°C", + "dishwasher_care": "Ciclo de limpeza de calcário", + "eco": "Eco", + "eco_asynch": "Eco 45°C", + "eco_bldc": "Eco 45°C", + "eco_synch": "Eco 45°C", + "gentle_wash": "Gentle wash", + "glass": "Vidro", + "glassware": "Vidros 45 °C", + "glass_care": "Glass Care", + "hygiene": "Higiene", + "hygiene_plus": "Higiene+ 75 °C", + "intensive": "Intensivo ", + "intensive_rapid": "Rápido intensivo", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "Auto Universal 50 - 60°C", + "iot_auto_wash_soil": "Auto Wash", + "iot_baby_care": "Roupa de bebé", + "iot_breakfast": "Pequeno-almoço", + "iot_checkup": "Check-Up", + "iot_china_crystals": "Porcelana chinesa", + "iot_classe_a_59": "Rápido 59'", + "iot_cocktail_glasses": "Copos para Cocktail", + "iot_cocktail_glasses_soil": "Copos para Cocktail", + "iot_daily_care": "Roupa Diária", + "iot_daily_care_soil": "Roupa Diária", + "iot_delicate": "Delicados 45°C", + "iot_dinner_for_two": "Jantar para 2", + "iot_dinner_for_two_soil": "Jantar para 2", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "Eco 45°C", + "iot_eco_bldc": "Eco 45°C", + "iot_eco_synch": "Eco 45°C", + "iot_extra_hygiene": "Higiene Extra", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "Happy Hour", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "Loiça de festas", + "iot_party_soil": "Loiça de festas", + "iot_pizza_menu": "Menu de Pizza", + "iot_pizza_menu_soil": "Menu de Pizza", + "iot_plastic_tupperware": "Plásticos e Tupperwares", + "iot_porcelain": "Porcelana", + "iot_power_mix_wash": "Lavagem Power Mix", + "iot_power_mix_wash_soil": "Lavagem Power Mix", + "iot_prewash": "Pré-lavagem", + "iot_pyrex_and_glassware": "Pyrex e Recipientes de vidro", + "iot_rapid_29": "Rapido 29'", + "iot_rapid_39": "Rápido 39 min. 60 °C", + "iot_single": "Solteiros", + "iot_steam": "Vapor 75 °C", + "iot_super_flash": "Super Flash", + "iot_super_wash": "Lavagem Super", + "iot_turbopower": "TurboPower", + "iot_universal": "Universal 60 °C", + "iot_wok_grids_maxi_pans": "Tachos Especiais (Wok - Grelhas e Tachos Máxi)", + "iot_wok_grids_maxi_pans_soil": "Tachos Especiais (Wok - Grelhas e Tachos Máxi)", + "iot_yes_quick_cycle": "Yes Quick", + "night": "Ultra Silencioso 55°C", + "prewash": "Pré-lavagem", + "rapid_20": "Rápido 20'", + "rapid_24": "Rapido 24'", + "rapid_29": "Rapido 29' 50°C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "Rápido 39 min. 60 °C", + "rapid_49": "Rápido 49'", + "rapid_59": "Rápido 59'", + "sanitising": "Desinfetante", + "silence": "Silence", + "silent": "Noite", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", + "special": "especial", + "special_pw_prz": "especial", + "steam": "Vapor 75 °C", + "steam_plus": "Vapor Mais 75°C", + "total_care": "Total Care 50°C", + "ultra_silence": "Ultra Silencioso 55°C", + "ultra_silent": "Ultra Silencioso 55°C", + "universal": "Universal 60 °C", + "universal_plus": "Universal plus 70 °C", + "zoom_39": "Zoom 39 min" + }, + "name": "Programa" + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "Castanho cinza", + "iot_special_beef_fillet": "Lombo de novilho", + "iot_special_beef_veal_stew": "Carne de vitela guisada ", + "iot_special_boiled_rice": "Arroz cozido", + "iot_special_chicken_breast": "Peito de frango", + "iot_special_chicken_legs": "Pernas de frango", + "iot_special_chocolate_pudding": "Pudim de chocolate", + "iot_special_entrecote": "Entrecôte", + "iot_special_fresh_tuna": "Atum fresco", + "iot_special_grilled_vegetables": "Legumes grelhados", + "iot_special_lamb_cutlet": "Costeleta de borrego", + "iot_special_meatballs": "Almôndegas", + "iot_special_minestrone": "Minestrone", + "iot_special_mussels": "Mexilhões", + "iot_special_omelette": "Omelete", + "iot_special_pancakes": "Panquecas", + "iot_special_paris_style_peas": "Ervilhas ao estilo parisiense", + "iot_special_poached_eggs": "Ovos escalfados", + "iot_special_pork_fillet": "Lombo porco ", + "iot_special_pork_ribs": "Lombo de porco", + "iot_special_prawns": "Camarões", + "iot_special_quinoa": "Quinoa", + "iot_special_ratatouille": "Ratatouille", + "iot_special_salmon_fillet": "Filé de salmão", + "iot_special_saute_potatoes": "Batatas salteadas", + "iot_special_scallops": "Vieiras", + "iot_special_scrambled_eggs": "Ovos mexidos", + "iot_special_spelt": "Espelta", + "iot_special_veggy_noodles": "Massa vegetariana", + "iot_special_white_fish_fillet": "Filetes de peixe branco", + "iot_standard_boiling": "Boiling", + "iot_standard_frying": "Fritar", + "iot_standard_keep_warm": "Manter quente", + "iot_standard_melting": "Derreter", + "iot_standard_simmering": "Simmering" + }, + "name": "Programa" + }, + "programs_ov": { + "state": { + "bakery": "Massas e bolos", + "bakery_steam": "Vapor do forno", + "bottom_heating": "Aquecimento inferior", + "bottom_heating_fan": "Aquecimento Inferior + Ventilação", + "bread": "Pão", + "bread_steam": "Pão no vapor", + "combi": "Combi", + "convection_fan": "Convecção + Ventilador", + "convection_fan_turnspit": "Espeto com convecção ventilada", + "conventional": "Estático", + "conventional_turnspit": "Espeto convencional", + "defrost": "Descongelar", + "descaling": "Descalcificação", + "fish": "Peixe", + "fish_steam": "Peixe no vapor", + "grill_cata": "Grelhar", + "grill_fan_cata": "Grelhar com ventilação", + "grill_fan_pyro": "Grelhar + Ventilação", + "grill_pyro": "Grelhar", + "h20_clean": "H2O-Clean", + "iot_bread": "Pão", + "iot_h20_clean": "h2O clean", + "leavening": "Levedação", + "low_temp_cooking": "Cozimento em baixa temperatura", + "low_temp_cooking_fish": "Cozimento em baixa temperatura Peixe", + "low_temp_cooking_fish_steam": "Cozimento em baixa temperatura Peixe a vapor", + "low_temp_cooking_meat": "Cozimento em baixa temperatura Carne", + "low_temp_cooking_meat_steam": "Cozimento em baixa temperatura Carne no vapor", + "low_temp_cooking_steam": "Cozimento em baixa temperatura no vapor", + "meat": "Carne", + "meat_steam": "Vapor de carne", + "multi_level": "Multinível", + "paella": "Paella", + "pasta_and_bakery": "Massas e bolos", + "pizza": "Pizza", + "pyrolysis": "Pirólise", + "pyrolysis_plus": "Pirólise +", + "red_meat": "Carne Vermelha", + "red_meat_steam": "Carne Vermelha no vapor", + "regenerate": "Regenerar", + "soft_plus": "Soft+", + "super_grill": "Super Grelhador", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Vegetais", + "vegetables_cata": "Legumes", + "vegetables_pyro": "Legumes", + "water_discharge": "Descarga d'água", + "white_meat": "Carne Branca", + "white_meat_steam": "Carne Branca no vapor" + }, + "name": "Programa" + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "20° Cores e Algodões", + "20_degrees_new_energy_label": "20°C", + "active_steam": "Vapor", + "active_wash": "Lavagem Ativa", + "active_wash_steam": "Lavagem Ativa", + "allergy_care": "Cuidado de Alergias", + "allergy_care_pro": "Cuidado Alergias Pro", + "all_in_one_49": "Tudo em Um 49'.", + "all_in_one_59": "Tudo em Um 59'.", + "all_in_one_59_steam": "Active Wash + Vapor", + "autocare": "Cuidado automático", + "autoclean": "Limpeza do tambor", + "baby_60": "All Baby 60°C", + "care_14": "Cuidado Rapido 14'", + "care_30": "Cuidado Rapido 30'", + "care_44": "Cuidado Rapido 44'", + "checkup": "Check-Up", + "colour_59": "Cores 59'", + "colour_59_steam": "Cores 59' + vapor", + "cottons": "Algodão", + "cottons_prewash": "Algodões + Pré-lavagem", + "cottons_steam": "Algodão + Vapor", + "cotton_care_59": "Algodões 59 min", + "delicate_59": "Delicados 59'", + "delicate_silk": "Seda delicada", + "delicate_silk_steam": "Seda delicada + vapor", + "delicati_59": "Delicados 59'", + "delicati_59_steam": "Delicados 59'", + "drain_spin": "Drenar +e Centrifugar", + "easy_iron": "Engomar Fácil", + "eco_40_60_new_energy_label": "Eco 40-60", + "extra_care": "Cuidado extra", + "fitness": "Fitness Care", + "fitness_care": "Fitness Care", + "fresh_care": "Cuidado Fresco", + "fresh_care_steam": "Fresh Care + Vapor", + "handwash_wool": "Lavagem manual e lã", + "high_dry": "Secagem de algodão", + "hqd_20_degrees": "Algodão 20℃", + "hqd_allergy": "Cuidado de Alergias", + "hqd_autoclean": "Limpeza do tambor", + "hqd_babycare": "Roupa de bebé", + "hqd_checkup": "Check-Up", + "hqd_cottons": "Algodão", + "hqd_delicate": "Roupa delicada", + "hqd_delicate_cradle": "Roupa delicada", + "hqd_dry": "Secagem de algodão", + "hqd_dry_synthetics": "Secos mistos", + "hqd_duvet": "Edredãos", + "hqd_eco_40_60_degrees": "Eco 40-60", + "hqd_handwash_wool": "Lãs", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "Misto", + "hqd_quick_15": "Rápido 15'", + "hqd_quick_wash_57": "Ciclo Rápido 57 min", + "hqd_rapid_wash_and_dry": "Lavar & secar", + "hqd_refresh": "Refrescar", + "hqd_rinse": "Lavagem", + "hqd_shirts": "Camisas", + "hqd_smart": "Smart A.I.", + "hqd_spin": "Centrifugar", + "hqd_sport": "Desporto", + "hqd_super_fast": "Rápido 39’", + "hqd_synthetic_and_coloured": "Sintéticos", + "hygiene_59": "Higiene Plus 59'", + "hygiene_60": "Higiene 60°", + "hygiene_plus_59": "Higiene Plus 59'", + "hygiene_plus_59_min": "Higiene Plus 59'", + "hygiene_pro_49_min": "Hygiene Pro 49 min", + "hygiene_pro_steam": "Hygiene Pro + Vapor", + "intensive_40": "Intensivo 40°C", + "intensive_40_steam": "Intensivo 40°C + vapor", + "iot_active_steam": "Vapor", + "iot_active_wash_steam": "Lavagem Ativa", + "iot_allergy_care_pro": "Cuidado Alergias Pro", + "iot_all_in_one_59_steam": "Active Wash + Vapor", + "iot_checkup": "Check-Up", + "iot_colour_59_steam": "Cores 59' + vapor", + "iot_cottons_steam": "Algodão + Vapor", + "iot_delicate_silk_steam": "Seda delicada + vapor", + "iot_delicati_59_steam": "Delicados 59'", + "iot_dry_air_refresh": "Refrescar ao Ar", + "iot_dry_anti_mites": "Anti-ácaros", + "iot_dry_baby": "Bebé", + "iot_dry_backpacks": "Mochilas", + "iot_dry_bathrobe": "Roupões e tecidos porosos", + "iot_dry_bed_linen": "Roupa de cama", + "iot_dry_cotton_dry": "Secagem de algodão", + "iot_dry_cuddly_toys": "Animais de peluche", + "iot_dry_curtains": "Cortinas", + "iot_dry_dehumidifier": "Removedor de humidade", + "iot_dry_delicates_antiallergy": "Delicados - antialérgicos", + "iot_dry_delicate_tablecloths": "Toalhas delicadas", + "iot_dry_denim_jeans": "Ganga - Jeans", + "iot_dry_easy_iron_cotton": "Engomagem Fácil - Algodão", + "iot_dry_easy_iron_synthetics": "Engomar Fácil - Sintéticos", + "iot_dry_gym_fit": "Vestuário de ginásio - fitness", + "iot_dry_lingerie": "Lingerie", + "iot_dry_mixed_dry": "Secos mistos", + "iot_dry_rapid_60_min_delicates": "Rápido 60' - Delicados", + "iot_dry_shirts": "Camisas", + "iot_dry_swimsuits_and_bikinis": "Fatos de banho", + "iot_dry_synthetics": "Secagem de Sintéticos", + "iot_dry_synthetic_dry": "Secagem de Sintéticos", + "iot_dry_tablecloths": "Toalhas de mesa", + "iot_dry_technical_fabrics": "Tecidos técnicos", + "iot_dry_warm_embrace": "Secagem a quente", + "iot_dry_wool_dry": "Secagem de lãs", + "iot_easy_iron": "Engomar Fácil", + "iot_fresh_care_steam": "Fresh Care + Vapor", + "iot_hygiene_pro_steam": "Hygiene Pro + Vapor", + "iot_intensive_40_steam": "Intensivo 40°C + vapor", + "iot_mixed_steam": "Mistos + Vapor", + "iot_mix_and_colour_59_steam": "Mistos E Cores 59' + Vapor", + "iot_perfect_cotton_59_steam": "Algodao Perfeito 59'", + "iot_rapid_a_class_60_steam": "Classe A rápida 60 + vapor", + "iot_resistant_cotton_steam": "Algodão + Vapor", + "iot_shirts_steam": "Camisas + Vapor", + "iot_single_item_steam": "Peça única + Vapor", + "iot_smart_wash": "Smart Wash", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "Special 39' + Vapor", + "iot_steam_hygiene_plus": "Hygiene Plus Steam ", + "iot_synthetic_and_coloured_steam": "Sintéticos e Cores + Vapor", + "iot_wash_and_dry": "Lavar & secar", + "iot_wash_anti_mites": "Anti-ácaros", + "iot_wash_anti_odor": "Anti-odor", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "Desinfetante", + "iot_wash_baby_sanitizer_steam": "higienizador para bebê + vapor", + "iot_wash_backpacks": "Mochilas", + "iot_wash_backpacks_zelig": "Mochilas", + "iot_wash_bathrobe": "Roupões e toalhas", + "iot_wash_bathrobe_steam": "Roupão + Vapor", + "iot_wash_bed_linen": "Roupa de cama", + "iot_wash_bed_linen_steam": "Roupa de cama + Vapor", + "iot_wash_bed_linen_zelig": "Roupa de cama", + "iot_wash_big_single_load": "Peça única grande", + "iot_wash_bleaching": "Branqueamento", + "iot_wash_blood_stains": "Nódoas de sangue", + "iot_wash_cashmere": "Cachemira", + "iot_wash_chocolate_stains": "Nódoas de chocolate", + "iot_wash_cold_wash": "Lavagem a frio", + "iot_wash_colored": "Cores", + "iot_wash_colored_anti_stain": "Remoção de nódoas para roupas de cor", + "iot_wash_colored_delicate": "Cores delicadas", + "iot_wash_coloured": "Cores", + "iot_wash_coloured_bed_linen": "Roupa de cama de cores", + "iot_wash_coloured_bed_linen_steam": "Roupa de cama de cores + vapor", + "iot_wash_coloured_curtains": "Cortinas de cor", + "iot_wash_coloured_shirts": "Camisas de cor", + "iot_wash_coloured_shirts_steam": "Camisas de cor + vapor", + "iot_wash_coloured_steam": "Cores + Vapor", + "iot_wash_coloured_tableclothes": "Toalhas de mesa de cor", + "iot_wash_coloured_tableclothes_steam": "Toalhas de mesa de cor + Vapor", + "iot_wash_cotton": "Algodão", + "iot_wash_cotton_steam": "Algodão + Vapor", + "iot_wash_cuddly_toys": "Animais de peluche", + "iot_wash_curtains": "Cortinas", + "iot_wash_curtains_steam": "Cortinas+Vapor", + "iot_wash_curtains_zelig": "Cortinas", + "iot_wash_dark": "Rupas escuras", + "iot_wash_darks_and_coloured_44": "Escuros e cores 44'", + "iot_wash_darks_and_coloured_59": "Escuros e cores 59'", + "iot_wash_darks_and_coloured_xl": "Escuros e cores XL", + "iot_wash_dark_steam": "Rupas escuras + Vapor", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "Roupa delicada", + "iot_wash_delicate_antiallergy": "Antialérgico para roupas delicadas", + "iot_wash_delicate_antiallergy_steam": "Antialérgico para roupas delicadas + Vapor", + "iot_wash_delicate_antiallergy_zelig": "Antialérgico para roupas delicadas", + "iot_wash_delicate_colors": "Delicados de cor", + "iot_wash_delicate_colors_steam": "Cores + vapor", + "iot_wash_delicate_dark": "Escuros delicados", + "iot_wash_delicate_steam": "Roupa delicada + Vapor", + "iot_wash_delicate_tablecloths": "Toalhas delicadas", + "iot_wash_delicate_tablecloths_steam": "Toalhas delicadas + Vapor", + "iot_wash_delicate_whites": "Brancos delicados", + "iot_wash_denim_jeans": "Ganga - Jeans", + "iot_wash_diving_suits": "Fatos de mergulho", + "iot_wash_diving_suits_zelig": "Fatos de mergulho", + "iot_wash_down_jackets": "Blusões", + "iot_wash_down_jackets_zelig": "Blusões", + "iot_wash_duvet": "Edredãos", + "iot_wash_fruit_stains": "Nódoas de fruta", + "iot_wash_gym_fit": "Vestuário de ginásio - fitness", + "iot_wash_handwash": "Lavagem à mão", + "iot_wash_handwash_colored": "Lavagem à mão cores", + "iot_wash_handwash_dark": "Lavagem à mão de escuros", + "iot_wash_lingerie": "Lingerie", + "iot_wash_masks_refresh": "Refrescar Máscaras", + "iot_wash_masks_sanification": "Desinfeção de Máscaras", + "iot_wash_masks_sanification_steam": "Desinfeção de Máscaras + Vapor", + "iot_wash_mats": "Tapetes", + "iot_wash_men_s_trousers": "Calças ", + "iot_wash_mixed": "Misto", + "iot_wash_mixed_steam": "Mistos + Vapor", + "iot_wash_mix_and_coloured_44": "Misto e cores 44'", + "iot_wash_mix_and_coloured_59": "Misto e cores 59'", + "iot_wash_mix_and_coloured_xl": "Misto e cores XL", + "iot_wash_new_clothes": "Roupa nova", + "iot_wash_perfect_white": "Branco perfeito", + "iot_wash_perfect_white_steam": "Branco perfeito + Vapor", + "iot_wash_pets": "Acessórios de animais", + "iot_wash_pets_hair_removal": "Remoção de pelo de animais de estimação", + "iot_wash_pets_odours_stains_removal": "Remoção de odores e manchas de animais de estimação", + "iot_wash_pets_steam": "Acessórios de animais", + "iot_wash_playsuits": "Macacões", + "iot_wash_playsuits_steam": "Macacões + Vapor", + "iot_wash_quick_drum_cleaner": "Produto de limpeza rápida do tambor", + "iot_wash_rapid_14": "Rápido 14’", + "iot_wash_rapid_30": "Rápido 30’", + "iot_wash_rapid_44": "Rápido 44’", + "iot_wash_rapid_59": "Rápido 59’", + "iot_wash_rapid_59_steam": "Rápido 59' + vapor", + "iot_wash_refresh_14_min": "Refrescar 14'", + "iot_wash_resistant_colored": "Cores resistentes", + "iot_wash_resistant_dark": "Escuros resistentes", + "iot_wash_resistant_whites": "Brancos resistentes", + "iot_wash_rinse": "Lavagem", + "iot_wash_shirts": "Camisas", + "iot_wash_shirts_steam": "Camisas + Vapor", + "iot_wash_silk": "Seda", + "iot_wash_ski_suit": "Fatos de Ski", + "iot_wash_ski_suit_zelig": "Fatos de Ski", + "iot_wash_spin": "Centrifugar", + "iot_wash_sport": "Desporto", + "iot_wash_sport_anti_odor": "Roupa de desporto anti odor", + "iot_wash_sport_anti_odor_zelig": "Roupa de desporto anti odor", + "iot_wash_stains_remover": "Removedor de nódoas", + "iot_wash_swimsuits_and_bikinis": "Fatos de banho", + "iot_wash_synthetic": "Sintéticos", + "iot_wash_synthetic_steam": "Sintéticos + Vapor", + "iot_wash_tablecloths": "Toalhas de mesa", + "iot_wash_tablecloths_steam": "Toalhas de mesa + Vapor", + "iot_wash_technical_fabrics": "Tecidos técnicos", + "iot_wash_technical_fabrics_zelig": "Tecidos técnicos", + "iot_wash_technical_jackets": "Casacos técnicos", + "iot_wash_technical_jackets_zelig": "Casacos técnicos", + "iot_wash_trainers": "Ténis", + "iot_wash_whites": "Brancos", + "iot_wash_whites_44": "Brancos 44'", + "iot_wash_whites_59": "Brancos 59'", + "iot_wash_whites_xl": "Brancos XL", + "iot_wash_wine_stains": "Nódoas de vinho", + "iot_wash_wool": "Lãs", + "jeans": "Jeans", + "jeans_60": "Jeans", + "low_dry": "Secos mistos", + "mixed": "Mistos", + "mixed_and_colored_59": "Misto e Cores 59'", + "mixed_steam": "Mistos + Vapor", + "mix_and_colour_59": "Mistos E Cores 59'", + "mix_and_colour_59_steam": "Mistos E Cores 59' + Vapor", + "night_and_day": "Noite e Dia", + "night_wash": "Ciclo durante a noite", + "perfect_59": "Perfeito 59'", + "perfect_cotton_59": "Algodao Perfeito 59'", + "perfect_cotton_59_steam": "Algodao Perfeito 59'", + "perfect_whites_59": "Branco perfeito 59'", + "rapid_14_min": "Rápido 14'", + "rapid_30_min": "Rápido 30'", + "rapid_44_min": "Rápido 44'", + "rapid_a_class_60": "Classe A rápida 60", + "rapid_a_class_60_steam": "Classe A rápida 60 + vapor", + "rapid_wash_and_dry_59_min": "Lavar e Secar 59'.", + "resistant_cotton": "Algodão", + "resistant_cotton_steam": "Algodão + Vapor", + "rinse": "Lavagem", + "shirts_steam": "Camisas + Vapor", + "silent_night": "Ciclo durante a noite", + "single_item": "Peça única", + "single_item_steam": "Peça única + Vapor", + "smart_wash": "Smart Wash", + "soft_care": "Cuidado Suave", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "Especial 39'", + "special_39_full_load": "Especial 39'", + "special_39_full_load_steam": "Special 39' + Vapor", + "special_49": "Especial 49'", + "sport_39": "Desporto 39'", + "sport_plus_29": "Desporto Plus 29\"", + "sport_plus_39": "Desporto Plus 39'", + "steam_39": "Vapor 39'", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro - Algodões", + "steam_care_pro_delicates": "Steam Care Pro - Delicados", + "steam_care_pro_synthetic": "Steam Care Pro - Sintéticos", + "steam_hygiene_plus": "Hygiene Plus Steam ", + "synthetics": "Sintéticos", + "synthetic_and_coloured": "Sintéticos e Cores", + "synthetic_and_coloured_steam": "Sintéticos e Cores + Vapor", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "Cuidado Total", + "tumbling": "Secar na máquina", + "wool": "Lãs", + "wool_and_delicates_49": "Lãs/Delicados 49'", + "wool_dry": "Secagem de lãs", + "wool_soft_care": "Lãs & Cuidado Suavidade" + }, + "name": "Programa" + }, + "programs_ref": { + "state": { + "auto_set": "AUTO-SET", + "cheese": "Queijo", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Modo Eco", + "fruits_and_veg": "Fruit&Veg", + "fruit_and_veg": "Fruit & Veg", + "holiday": "HOLIDAY", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Nenhum modo selecionado", + "quick_cool": "QUICK COOL", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + }, + "name": "Programa" } }, "select": { @@ -1030,7 +1588,8 @@ "iot_uv_and_dry": "UV + Desumidificador", "iot_uv_and_fan": "UV + Ventilação", "iot_uv_and_heat": "UV + Calor" - } + }, + "name": "Programa" }, "programs_ref": { "state": { @@ -1052,7 +1611,8 @@ "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" - } + }, + "name": "Programa" }, "remaining_time": { "name": "Tempo restante" diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index 4973c91..bd2aa23 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -58,7 +58,8 @@ "19": "Uscare", "20": "Uscare", "11": "Pregătit", - "17": "unknown" + "17": "unknown", + "12": "unkown" }, "name": "Fază" }, @@ -306,7 +307,8 @@ "woolmark": "Woolmark", "xxl_load": "Încărcare XXL", "zoom_59": "Zoom 59" - } + }, + "name": "Program" }, "room_temperature": { "name": "Temperatura camerei" @@ -319,6 +321,562 @@ }, "fridge_temp": { "name": "Temperatura frigiderului" + }, + "programs_ac": { + "state": { + "iot_10_heating": "Funcția de încălzire la 10 °C", + "iot_auto": "Automat", + "iot_cool": "Răcire", + "iot_dry": "Uscare", + "iot_fan": "Ventilare", + "iot_heat": "Încălzire", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Auto-purificare", + "iot_self_clean": "Autocurățare", + "iot_self_clean_56": "Curățare-sterilizare la 56°C", + "iot_simple_start": "Începeți acum", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + automat", + "iot_uv_and_cool": "UV + răcire", + "iot_uv_and_dry": "UV + dezumidificator", + "iot_uv_and_fan": "UV + ventilator", + "iot_uv_and_heat": "UV + încălzire" + }, + "name": "Program" + }, + "programs_dw": { + "state": { + "59_min": "Rapid 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "Auto Universal 50 - 60°C", + "auto_universal_plus": "Auto Universal+ 65 - 75°C", + "auto_universal_plus_soil": "Auto Universal+ 65 - 75°C", + "auto_universal_soil": "Auto Universal 50 - 60°C", + "auto_wash": "Spălare automată", + "auto_wash_soil": "Spălare automată", + "classe_a_59": "Clasa A 59' 65°C", + "delicate": "Delicate 45°C", + "dishwasher_care": "Ciclu de curățare a calcarului", + "eco": "Eco", + "eco_asynch": "Eco 45°C", + "eco_bldc": "Eco 45°C", + "eco_synch": "Eco 45°C", + "gentle_wash": "Gentle wash", + "glass": "Sticlă", + "glassware": "Sticlărie 45 °C", + "glass_care": "Glass Care", + "hygiene": "Igienă", + "hygiene_plus": "Igienă+ 75 °C", + "intensive": "Intensiv ", + "intensive_rapid": "rapid intensiv", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "Auto Universal 50 - 60°C", + "iot_auto_wash_soil": "Spălare automată", + "iot_baby_care": "Îngrijirea bebelușilor", + "iot_breakfast": "Mic dejun", + "iot_checkup": "Verificare", + "iot_china_crystals": "Vase din cristal", + "iot_classe_a_59": "Rapid 59'", + "iot_cocktail_glasses": "Pahare de cocktail", + "iot_cocktail_glasses_soil": "Pahare de cocktail", + "iot_daily_care": "Utilizare zilnică", + "iot_daily_care_soil": "Utilizare zilnică", + "iot_delicate": "Delicate 45°C", + "iot_dinner_for_two": "Cină pentru 2", + "iot_dinner_for_two_soil": "Cină pentru 2", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "Eco 45°C", + "iot_eco_bldc": "Eco 45°C", + "iot_eco_synch": "Eco 45°C", + "iot_extra_hygiene": "Extra Igienă", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "Happy Hour", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "Petrecere", + "iot_party_soil": "Petrecere", + "iot_pizza_menu": "Meniu Pizza", + "iot_pizza_menu_soil": "Meniu Pizza", + "iot_plastic_tupperware": "Recipiente din plastic", + "iot_porcelain": "Porțelan", + "iot_power_mix_wash": "Spălare Putere Mixtă", + "iot_power_mix_wash_soil": "Spălare Putere Mixtă", + "iot_prewash": "Prespălare", + "iot_pyrex_and_glassware": "Articole din sticlă", + "iot_rapid_29": "Rapid 29'", + "iot_rapid_39": "Rapid 39' 60 °C", + "iot_single": "Singur", + "iot_steam": "Abur 75 °C", + "iot_super_flash": "Super rapid", + "iot_super_wash": "Super spălare", + "iot_turbopower": "Putere Turbo", + "iot_universal": "Universal 60 °C", + "iot_wok_grids_maxi_pans": "Recipiente speciale (Wok - Grătare & Oale mari)", + "iot_wok_grids_maxi_pans_soil": "Recipiente speciale (Wok - Grătare & Oale mari)", + "iot_yes_quick_cycle": "Yes Quick", + "night": "Ultra Silențios 55°C", + "prewash": "Prespălare", + "rapid_20": "Rapid 20'", + "rapid_24": "Rapid 24'", + "rapid_29": "Rapid 29' 50°C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "Rapid 39' 60 °C", + "rapid_49": "Rapid 49'", + "rapid_59": "Rapid 59'", + "sanitising": "Igienizare", + "silence": "Silence", + "silent": "Noapte", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", + "special": "special", + "special_pw_prz": "special", + "steam": "Abur 75 °C", + "steam_plus": "Vapor Plus 75 °C", + "total_care": "Total Care 50°C", + "ultra_silence": "Ultra Silențios 55°C", + "ultra_silent": "Ultra Silențios 55°C", + "universal": "Universal 60 °C", + "universal_plus": "Universal Plus 70 °C", + "zoom_39": "Zoom 39 min" + }, + "name": "Program" + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "Tocinei", + "iot_special_beef_fillet": "File de vită", + "iot_special_beef_veal_stew": "Tocană de vită și vițel", + "iot_special_boiled_rice": "Orez fiert", + "iot_special_chicken_breast": "Piept de pui", + "iot_special_chicken_legs": "Pulpe de pui", + "iot_special_chocolate_pudding": "Budincă de ciocolată", + "iot_special_entrecote": "Antricot", + "iot_special_fresh_tuna": "Ton proaspăt", + "iot_special_grilled_vegetables": "Legume pe grătar", + "iot_special_lamb_cutlet": "Cotlet de miel", + "iot_special_meatballs": "Pifteluțe de carne", + "iot_special_minestrone": "Supă minestrone", + "iot_special_mussels": "Midii", + "iot_special_omelette": "Omletă", + "iot_special_pancakes": "Clătite", + "iot_special_paris_style_peas": "Mazăre în stil parizian", + "iot_special_poached_eggs": "Ouă fierte", + "iot_special_pork_fillet": "Muşchi file", + "iot_special_pork_ribs": "Coaste de porc", + "iot_special_prawns": "Creveți", + "iot_special_quinoa": "Quinoa", + "iot_special_ratatouille": "Ratatouille", + "iot_special_salmon_fillet": "File de somon", + "iot_special_saute_potatoes": "Cartofi sote", + "iot_special_scallops": "Scoici", + "iot_special_scrambled_eggs": "Scrob", + "iot_special_spelt": "Alac", + "iot_special_veggy_noodles": "Tăiţei vegetali", + "iot_special_white_fish_fillet": "File de pește alb", + "iot_standard_boiling": "Fierbere", + "iot_standard_frying": "Prăjire", + "iot_standard_keep_warm": "Menținere la cald", + "iot_standard_melting": "Topire", + "iot_standard_simmering": "Fierbere înăbușită" + }, + "name": "Program" + }, + "programs_ov": { + "state": { + "bakery": "Paste și produse de patiserie", + "bakery_steam": "În cuptor la abur", + "bottom_heating": "Încălzire de jos", + "bottom_heating_fan": "Încălzire De Jos + Ventilație", + "bread": "Pâine", + "bread_steam": "Pâine gătită la abur", + "combi": "Combi", + "convection_fan": "Convecție și ventilație", + "convection_fan_turnspit": "Convecție + Ventilator + Rotisor", + "conventional": "Convențional", + "conventional_turnspit": "Convecție + Rotisor", + "defrost": "Decongelare", + "descaling": "Îndepărtarea calcarului", + "fish": "Pește", + "fish_steam": "Pește gătit la abur", + "grill_cata": "Gril", + "grill_fan_cata": "Grill + Ventilație", + "grill_fan_pyro": "Grill + Ventilație", + "grill_pyro": "Grill", + "h20_clean": "H2O-Clean", + "iot_bread": "Pâine", + "iot_h20_clean": "h2O clean", + "leavening": "Dospire", + "low_temp_cooking": "Gătire la temperatură scăzută", + "low_temp_cooking_fish": "Gătire la temperatură scăzută - Pește", + "low_temp_cooking_fish_steam": "Gătitul la temperaturi scăzute - Pește gătit la abur", + "low_temp_cooking_meat": "Gătire la temperatură scăzută - Carne", + "low_temp_cooking_meat_steam": "Gătitul la temperaturi scăzute - Carne gătită la abur", + "low_temp_cooking_steam": "Gătitul la abur la temperaturi scăzute", + "meat": "Carne", + "meat_steam": "Carne gătită la abur", + "multi_level": "Multi-Nivel", + "paella": "Paella", + "pasta_and_bakery": "Paste și patiserie", + "pizza": "Pizza", + "pyrolysis": "Piroliză", + "pyrolysis_plus": "Piroliză+", + "red_meat": "Carne roșie", + "red_meat_steam": "Carne roșie gătită la abur", + "regenerate": "Regenerare", + "soft_plus": "Soft+", + "super_grill": "Super Grill", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Legume", + "vegetables_cata": "Legume", + "vegetables_pyro": "Legume", + "water_discharge": "Evacuare apă", + "white_meat": "Carne albă", + "white_meat_steam": "Carne albă gătită la abur" + }, + "name": "Program" + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "20° Colorate și bumbac", + "20_degrees_new_energy_label": "20 °C", + "active_steam": "Abur", + "active_wash": "Spălare activă", + "active_wash_steam": "Spălare activă", + "allergy_care": "Îngrijire antialergică", + "allergy_care_pro": "Îngrijire alergie pro", + "all_in_one_49": "Toate în One 49'.", + "all_in_one_59": "Toate în One 59'.", + "all_in_one_59_steam": "Spălare activă + abur", + "autocare": "Autoîngrijire", + "autoclean": "Curățarea tamburului", + "baby_60": "Haine bebeluși 60°C", + "care_14": "Rapid Care 14'", + "care_30": "Rapid Care 30'", + "care_44": "Rapid Care 44'", + "checkup": "Verificare", + "colour_59": "Colorate 59'", + "colour_59_steam": "Colorate 59' + Abur", + "cottons": "Bumbac", + "cottons_prewash": "Bumbac + Prespălare", + "cottons_steam": "Bumbac + Abur", + "cotton_care_59": "Bumbac 59 Min", + "delicate_59": "Delicate 59'", + "delicate_silk": "Mătase delicată", + "delicate_silk_steam": "Mătase delicată + abur", + "delicati_59": "Delicate 59'", + "delicati_59_steam": "Delicate 59'", + "drain_spin": "Drenare +și stoarcere", + "easy_iron": "Călcare ușoară", + "eco_40_60_new_energy_label": "Eco 40-60", + "extra_care": "Îngrijire Suplimentară", + "fitness": "Fitness Care", + "fitness_care": "Fitness Care", + "fresh_care": "Îngrijire proaspătă", + "fresh_care_steam": "Îngrijire proaspătă + abur", + "handwash_wool": "Spălare manuală și lână", + "high_dry": "Uscarea bumbacului", + "hqd_20_degrees": "Bumbac 20 ℃", + "hqd_allergy": "Îngrijire antialergică", + "hqd_autoclean": "Curățarea tamburului", + "hqd_babycare": "Îngrijirea bebelușilor", + "hqd_checkup": "Verificare", + "hqd_cottons": "Bumbac", + "hqd_delicate": "Delicate", + "hqd_delicate_cradle": "Delicate", + "hqd_dry": "Uscarea bumbacului", + "hqd_dry_synthetics": "Uscarea fibrelor mixte", + "hqd_duvet": "Pătură", + "hqd_eco_40_60_degrees": "Eco 40-60", + "hqd_handwash_wool": "Lână", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "Mixte", + "hqd_quick_15": "Rapid 15'", + "hqd_quick_wash_57": "Spălare rapidă 57 min", + "hqd_rapid_wash_and_dry": "Spălare și uscare", + "hqd_refresh": "Reîmprospătare", + "hqd_rinse": "Clătire", + "hqd_shirts": "Cămăși", + "hqd_smart": "Smart A.I.", + "hqd_spin": "Stoarcere", + "hqd_sport": "Sport", + "hqd_super_fast": "Rapid 39’", + "hqd_synthetic_and_coloured": "Sintetice", + "hygiene_59": "Igiena Plus 59'", + "hygiene_60": "Igienă 60°", + "hygiene_plus_59": "Igiena Plus 59'", + "hygiene_plus_59_min": "Igiena Plus 59'", + "hygiene_pro_49_min": "Igienă Pro 49 min", + "hygiene_pro_steam": "Hygiene Pro + Abur", + "intensive_40": "Intensiv 40°C", + "intensive_40_steam": "Intensiv 40°C + Abur", + "iot_active_steam": "Abur", + "iot_active_wash_steam": "Spălare activă", + "iot_allergy_care_pro": "Îngrijire alergie pro", + "iot_all_in_one_59_steam": "Spălare activă + abur", + "iot_checkup": "Verificare", + "iot_colour_59_steam": "Colorate 59' + Abur", + "iot_cottons_steam": "Bumbac + Abur", + "iot_delicate_silk_steam": "Mătase delicată + abur", + "iot_delicati_59_steam": "Delicate 59'", + "iot_dry_air_refresh": "Reîmprospătarea aerului", + "iot_dry_anti_mites": "Anti-acarieni", + "iot_dry_baby": "Bebeluș", + "iot_dry_backpacks": "Rucsaci", + "iot_dry_bathrobe": "Halate de baie și materiale poroase", + "iot_dry_bed_linen": "Lenjerie de pat", + "iot_dry_cotton_dry": "Uscarea bumbacului", + "iot_dry_cuddly_toys": "Animale de pluș umplute", + "iot_dry_curtains": "Perdele", + "iot_dry_dehumidifier": "Dispozitiv pentru îndepărtarea umidității", + "iot_dry_delicates_antiallergy": "Delicate - antialergic", + "iot_dry_delicate_tablecloths": "Fețe de masă delicate", + "iot_dry_denim_jeans": "Denim - Blugi", + "iot_dry_easy_iron_cotton": "Antișifonare - Bumbac", + "iot_dry_easy_iron_synthetics": "Antișifonare - Sintetice", + "iot_dry_gym_fit": "Fitness - haine de fitness", + "iot_dry_lingerie": "Lenjerie intimă", + "iot_dry_mixed_dry": "Uscarea fibrelor mixte", + "iot_dry_rapid_60_min_delicates": "Rapid 60'- Delicate", + "iot_dry_shirts": "Cămăși", + "iot_dry_swimsuits_and_bikinis": "Costume de baie", + "iot_dry_synthetics": "Uscare material sintetic", + "iot_dry_synthetic_dry": "Uscare material sintetic", + "iot_dry_tablecloths": "Fețe de masă", + "iot_dry_technical_fabrics": "Materiale tehnice", + "iot_dry_warm_embrace": "Uscarea în tambur", + "iot_dry_wool_dry": "Uscarea lânii", + "iot_easy_iron": "Călcare ușoară", + "iot_fresh_care_steam": "Îngrijire proaspătă + abur", + "iot_hygiene_pro_steam": "Hygiene Pro + Abur", + "iot_intensive_40_steam": "Intensiv 40°C + Abur", + "iot_mixed_steam": "Mixte + Abur", + "iot_mix_and_colour_59_steam": "Mixte și colorate 59' + abur", + "iot_perfect_cotton_59_steam": "Bumbac Perfect 59'", + "iot_rapid_a_class_60_steam": "Rapid Clasa A 60 + Abur", + "iot_resistant_cotton_steam": "Bumbac + Abur", + "iot_shirts_steam": "Cămăși + Abur", + "iot_single_item_steam": "Un singur articol + abur", + "iot_smart_wash": "Spălare inteligentă", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "Special 39' + abur", + "iot_steam_hygiene_plus": "Hygiene Plus Steam ", + "iot_synthetic_and_coloured_steam": "Sintetice și colorate + abur", + "iot_wash_and_dry": "Spălare și uscare", + "iot_wash_anti_mites": "Anti-acarieni", + "iot_wash_anti_odor": "Anti-miros", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "Igienizare", + "iot_wash_baby_sanitizer_steam": "Igienă bebeluș + Abur", + "iot_wash_backpacks": "Rucsaci", + "iot_wash_backpacks_zelig": "Rucsaci", + "iot_wash_bathrobe": "Halate de baie și prosoape", + "iot_wash_bathrobe_steam": "Halat de baie + Abur", + "iot_wash_bed_linen": "Lenjerie de pat", + "iot_wash_bed_linen_steam": "Lenjerie de pat + Abur", + "iot_wash_bed_linen_zelig": "Lenjerie de pat", + "iot_wash_big_single_load": "Încărcare unică mare", + "iot_wash_bleaching": "Înălbire", + "iot_wash_blood_stains": "Pete de sânge", + "iot_wash_cashmere": "Cașmir", + "iot_wash_chocolate_stains": "Pete de ciocolată", + "iot_wash_cold_wash": "Spălare rece", + "iot_wash_colored": "Colorate", + "iot_wash_colored_anti_stain": "Eliminarea petelor de pe materiale colorate", + "iot_wash_colored_delicate": "Colorate delicate", + "iot_wash_coloured": "Culori", + "iot_wash_coloured_bed_linen": "Lenjerie de pat colorată", + "iot_wash_coloured_bed_linen_steam": "Lenjerie de pat colorată + Abur", + "iot_wash_coloured_curtains": "Perdele colorate", + "iot_wash_coloured_shirts": "Cămăși colorate", + "iot_wash_coloured_shirts_steam": "Cămăși colorate + Abur", + "iot_wash_coloured_steam": "Culori + Abur", + "iot_wash_coloured_tableclothes": "Fețe de masa colorate", + "iot_wash_coloured_tableclothes_steam": "Fețe de masă colorate + abur", + "iot_wash_cotton": "Bumbac", + "iot_wash_cotton_steam": "Bumbac + Abur", + "iot_wash_cuddly_toys": "Animale de pluș umplute", + "iot_wash_curtains": "Perdele", + "iot_wash_curtains_steam": "Perdele+Abur", + "iot_wash_curtains_zelig": "Perdele", + "iot_wash_dark": "Haine cu culori închise", + "iot_wash_darks_and_coloured_44": "Închise la culoare și colorate 44’", + "iot_wash_darks_and_coloured_59": "Închise la culoare și colorate 59’", + "iot_wash_darks_and_coloured_xl": "Închise la culoare și colorate XL", + "iot_wash_dark_steam": "Haine cu culori închise + Abur", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "Delicate", + "iot_wash_delicate_antiallergy": "Antialergic pentru haine delicate", + "iot_wash_delicate_antiallergy_steam": "Anti-alergenic pentru țesături delicate + Abur", + "iot_wash_delicate_antiallergy_zelig": "Antialergic pentru haine delicate", + "iot_wash_delicate_colors": "Colorate delicate", + "iot_wash_delicate_colors_steam": "Culori + Abur", + "iot_wash_delicate_dark": "Culori închise delicate", + "iot_wash_delicate_steam": "Delicate + Abur", + "iot_wash_delicate_tablecloths": "Fețe de masă delicate", + "iot_wash_delicate_tablecloths_steam": "Fețe de masă delicate + Abur", + "iot_wash_delicate_whites": "Albe delicate", + "iot_wash_denim_jeans": "Denim - Blugi", + "iot_wash_diving_suits": "Costume de baie", + "iot_wash_diving_suits_zelig": "Costume de baie", + "iot_wash_down_jackets": "Geci", + "iot_wash_down_jackets_zelig": "Geci", + "iot_wash_duvet": "Pătură", + "iot_wash_fruit_stains": "Pete de fructe", + "iot_wash_gym_fit": "Fitness - haine de fitness", + "iot_wash_handwash": "Spălare manuală", + "iot_wash_handwash_colored": "Spălare manuală colorate", + "iot_wash_handwash_dark": "Spălare manuală închise la culoare", + "iot_wash_lingerie": "Lenjerie intimă", + "iot_wash_masks_refresh": "Reîmprospătarea măștilor", + "iot_wash_masks_sanification": "Igienizarea măștilor", + "iot_wash_masks_sanification_steam": "Igienizarea măștilor + Abur", + "iot_wash_mats": "Covoare", + "iot_wash_men_s_trousers": "Pantaloni", + "iot_wash_mixed": "Mixte", + "iot_wash_mixed_steam": "Mixte + Abur", + "iot_wash_mix_and_coloured_44": "Mixte și colorate 44’", + "iot_wash_mix_and_coloured_59": "Mixte și colorate 59’", + "iot_wash_mix_and_coloured_xl": "Mixte și colorate XL", + "iot_wash_new_clothes": "Haine noi", + "iot_wash_perfect_white": "Albul perfect", + "iot_wash_perfect_white_steam": "Albul perfect + Abur", + "iot_wash_pets": "Accesorii pentru animale de casă", + "iot_wash_pets_hair_removal": "Elimină părul animalelor de companie", + "iot_wash_pets_odours_stains_removal": "Îndepărtarea mirosurilor animalelor de companie și a petelor", + "iot_wash_pets_steam": "Accesorii pentru animale de casă", + "iot_wash_playsuits": "Costume de joacă", + "iot_wash_playsuits_steam": "Costume de joacă + Abur", + "iot_wash_quick_drum_cleaner": "Agent de curățare rapidă a tamburului", + "iot_wash_rapid_14": "Rapid 14’", + "iot_wash_rapid_30": "Rapid 30’", + "iot_wash_rapid_44": "Rapid 44'", + "iot_wash_rapid_59": "Rapid 59'", + "iot_wash_rapid_59_steam": "Rapid 59' + Steam", + "iot_wash_refresh_14_min": "Reîmprospătare 14'", + "iot_wash_resistant_colored": "Colorate rezistente", + "iot_wash_resistant_dark": "Închise la culoare rezistente", + "iot_wash_resistant_whites": "Albe rezistente", + "iot_wash_rinse": "Clătire", + "iot_wash_shirts": "Cămăși", + "iot_wash_shirts_steam": "Cămăși + Abur", + "iot_wash_silk": "Mătase", + "iot_wash_ski_suit": "Costume de schi", + "iot_wash_ski_suit_zelig": "Costume de schi", + "iot_wash_spin": "Stoarcere", + "iot_wash_sport": "Sport", + "iot_wash_sport_anti_odor": "Îmbrăcăminte sportivă anti-miros", + "iot_wash_sport_anti_odor_zelig": "Îmbrăcăminte sportivă anti-miros", + "iot_wash_stains_remover": "Eliminare de pete", + "iot_wash_swimsuits_and_bikinis": "Costume de baie", + "iot_wash_synthetic": "Sintetice", + "iot_wash_synthetic_steam": "Sintetice + Abur", + "iot_wash_tablecloths": "Fețe de masă", + "iot_wash_tablecloths_steam": "Fețe de masă + Abur", + "iot_wash_technical_fabrics": "Materiale tehnice", + "iot_wash_technical_fabrics_zelig": "Materiale tehnice", + "iot_wash_technical_jackets": "Haine tehnice", + "iot_wash_technical_jackets_zelig": "Haine tehnice", + "iot_wash_trainers": "Încălțăminte sport", + "iot_wash_whites": "Albe", + "iot_wash_whites_44": "Albe 44’", + "iot_wash_whites_59": "Albe 59’", + "iot_wash_whites_xl": "Albe XL", + "iot_wash_wine_stains": "Pete de vin", + "iot_wash_wool": "Lână", + "jeans": "Blugi", + "jeans_60": "Jeans", + "low_dry": "Uscarea fibrelor mixte", + "mixed": "Mixte", + "mixed_and_colored_59": "Mixte și colorate 59’", + "mixed_steam": "Mixte + Abur", + "mix_and_colour_59": "Mixte + Colorate 59'", + "mix_and_colour_59_steam": "Mixte și colorate 59' + abur", + "night_and_day": "Zi și noapte", + "night_wash": "Ciclu peste noapte", + "perfect_59": "Perfect 59'", + "perfect_cotton_59": "Bumbac Perfect 59'", + "perfect_cotton_59_steam": "Bumbac Perfect 59'", + "perfect_whites_59": "Albul perfect 59'", + "rapid_14_min": "Rapid 14'", + "rapid_30_min": "Rapid 30'", + "rapid_44_min": "Rapid 44'", + "rapid_a_class_60": "Rapid Clasa A 60", + "rapid_a_class_60_steam": "Rapid Clasa A 60 + Abur", + "rapid_wash_and_dry_59_min": "Spălare și uscare 59'.", + "resistant_cotton": "Bumbac", + "resistant_cotton_steam": "Bumbac + Abur", + "rinse": "Clătire", + "shirts_steam": "Cămăși + Abur", + "silent_night": "Ciclu peste noapte", + "single_item": "Un singur articol", + "single_item_steam": "Un singur articol + abur", + "smart_wash": "Spălare inteligentă", + "soft_care": "Îngrijire blândă", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "Special 39'", + "special_39_full_load": "Special 39'", + "special_39_full_load_steam": "Special 39' + abur", + "special_49": "Special 49'", + "sport_39": "Sport 39'", + "sport_plus_29": "Sport Plus 29\"", + "sport_plus_39": "Sport Plus 39'", + "steam_39": "Abur 39'", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro - bumbac", + "steam_care_pro_delicates": "Steam Care Pro - delicate", + "steam_care_pro_synthetic": "Steam Care Pro - sintetice", + "steam_hygiene_plus": "Hygiene Plus Steam ", + "synthetics": "Sintetice", + "synthetic_and_coloured": "Sintetice și colorate", + "synthetic_and_coloured_steam": "Sintetice și colorate + abur", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "Îngrijire totală", + "tumbling": "Tambur", + "wool": "Lână", + "wool_and_delicates_49": "Lână/Delicate 49'", + "wool_dry": "Uscarea lânii", + "wool_soft_care": "Lână & Îngrijire Blândă" + }, + "name": "Program" + }, + "programs_ref": { + "state": { + "auto_set": "AUTO-SET (Setare automată)", + "cheese": "Brânză", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Modul Eco", + "fruits_and_veg": "Fruit&Veg (Fructe și legume)", + "fruit_and_veg": "Fruit & Veg", + "holiday": "HOLIDAY (Perioadă de neutilizare)", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Niciun mod selectat", + "quick_cool": "QUICK COOL", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL (Răcire rapidă)", + "super_freeze": "SUPER FREEZE (Congelare rapidă)", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + }, + "name": "Program" } }, "select": { @@ -1030,7 +1588,8 @@ "iot_uv_and_dry": "UV + dezumidificator", "iot_uv_and_fan": "UV + ventilator", "iot_uv_and_heat": "UV + încălzire" - } + }, + "name": "Program" }, "programs_ref": { "state": { @@ -1052,7 +1611,8 @@ "super_freeze": "SUPER FREEZE (Congelare rapidă)", "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" - } + }, + "name": "Program" }, "remaining_time": { "name": "Timp rămas" diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index 7ea0195..dfa0edb 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -58,7 +58,8 @@ "19": "Сушка", "20": "Сушка", "11": "Готово", - "17": "unknown" + "17": "unknown", + "12": "unkown" }, "name": "Фаза" }, @@ -306,7 +307,8 @@ "woolmark": "Шерсть", "xxl_load": "Объемные вещи", "zoom_59": "Zoom 59 (Зум 59)" - } + }, + "name": "Программа" }, "room_temperature": { "name": "Комнатная температура" @@ -319,6 +321,562 @@ }, "fridge_temp": { "name": "Температура в холодильнике" + }, + "programs_ac": { + "state": { + "iot_10_heating": "Функция нагрева до 10°C", + "iot_auto": "Авто", + "iot_cool": "Охлаждение", + "iot_dry": "Сушка", + "iot_fan": "Вентилятор", + "iot_heat": "Нагрев", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Самоочищение", + "iot_self_clean": "Самоочистка", + "iot_self_clean_56": "Steri-Clean 56°C", + "iot_simple_start": "Пуск сейчас", + "iot_uv": "Ультрафиолет", + "iot_uv_and_auto": "УФ + Авто", + "iot_uv_and_cool": "УФ + Охлаждение", + "iot_uv_and_dry": "УФ + Осушитель", + "iot_uv_and_fan": "УФ + Вентилятор", + "iot_uv_and_heat": "УФ + Нагрев" + }, + "name": "Программа" + }, + "programs_dw": { + "state": { + "59_min": "Быcтрая Мойkа 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "авто универсальная 50 - 60°C", + "auto_universal_plus": "авто универсальная плюс 65 - 75°C", + "auto_universal_plus_soil": "авто универсальная плюс 65 - 75°C", + "auto_universal_soil": "авто универсальная 50 - 60°C", + "auto_wash": "Auto Wash", + "auto_wash_soil": "Auto Wash", + "classe_a_59": "а класс за 1 час 65°C", + "delicate": "деликатная 45°C", + "dishwasher_care": "Цикл очистки от накипи", + "eco": "Эко", + "eco_asynch": "эко 45°C", + "eco_bldc": "эко 45°C", + "eco_synch": "эко 45°C", + "gentle_wash": "Gentle wash", + "glass": "Стекло", + "glassware": "стекло 45°C", + "glass_care": "Glass Care", + "hygiene": "Гигиена", + "hygiene_plus": "гигиена+ 75°C", + "intensive": "Интенсивная 40", + "intensive_rapid": "интенcивная быcтрая", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "авто универсальная 50 - 60°C", + "iot_auto_wash_soil": "Auto Wash", + "iot_baby_care": "Детская одежда", + "iot_breakfast": "Завтрак", + "iot_checkup": "Проверка", + "iot_china_crystals": "Китайский хрусталь", + "iot_classe_a_59": "Быcтрая Мойkа 59'", + "iot_cocktail_glasses": "Бокалы для коктейлей", + "iot_cocktail_glasses_soil": "Бокалы для коктейлей", + "iot_daily_care": "Ежедневный уход", + "iot_daily_care_soil": "Ежедневный уход", + "iot_delicate": "деликатная 45°C", + "iot_dinner_for_two": "Ужин для двоих", + "iot_dinner_for_two_soil": "Ужин для двоих", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "эко 45°C", + "iot_eco_bldc": "эко 45°C", + "iot_eco_synch": "эко 45°C", + "iot_extra_hygiene": "Цикл обработки паром", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "Счастливый час", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "Вечеринка", + "iot_party_soil": "Вечеринка", + "iot_pizza_menu": "Меню пицца", + "iot_pizza_menu_soil": "Меню пицца", + "iot_plastic_tupperware": "Пластмассовые лотки и контейнеры", + "iot_porcelain": "Фарфор", + "iot_power_mix_wash": "Интенсивное мытье смешанной посуды", + "iot_power_mix_wash_soil": "Интенсивное мытье смешанной посуды", + "iot_prewash": "предварительная мойка", + "iot_pyrex_and_glassware": "Жаростойкая и стеклянная посуда", + "iot_rapid_29": "быстрая 29'", + "iot_rapid_39": "быстрая 39' 60°C", + "iot_single": "Одинокие", + "iot_steam": "пар 75°C", + "iot_super_flash": "Super Flash", + "iot_super_wash": "Супермойка", + "iot_turbopower": "TurboPower", + "iot_universal": "универсальная 60°C", + "iot_wok_grids_maxi_pans": "Большие сковородки и решетки", + "iot_wok_grids_maxi_pans_soil": "Большие сковородки и решетки", + "iot_yes_quick_cycle": "Yes Quick", + "night": "ультра тихая 55°с", + "prewash": "предварительная мойка", + "rapid_20": "Быcтрая Мойkа 20'", + "rapid_24": "быстрая 24'", + "rapid_29": "быстрая 29' 50°C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "быстрая 39' 60°C", + "rapid_49": "Быcтрая Мойkа 49'", + "rapid_59": "Быcтрая Мойkа 59'", + "sanitising": "Гигиеническая стирка", + "silence": "Silence", + "silent": "Ночь", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", + "special": "специальные", + "special_pw_prz": "специальные", + "steam": "пар 75°C", + "steam_plus": "Пар плюс 75°C", + "total_care": "общий уход 50°C", + "ultra_silence": "ультра тихая 55°с", + "ultra_silent": "ультра тихая 55°с", + "universal": "универсальная 60°C", + "universal_plus": "универсальная плюс 70°C", + "zoom_39": "Zoom 39 min" + }, + "name": "Программа" + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "Подрумяненный", + "iot_special_beef_fillet": "Филе говядины", + "iot_special_beef_veal_stew": "Тушеная говядина и телятина", + "iot_special_boiled_rice": "Рис отварной", + "iot_special_chicken_breast": "Куриная грудка", + "iot_special_chicken_legs": "Куриные ножки", + "iot_special_chocolate_pudding": "Шоколадный пудинг", + "iot_special_entrecote": "Антрекот", + "iot_special_fresh_tuna": "Свежий тунец", + "iot_special_grilled_vegetables": "Овощи на гриле", + "iot_special_lamb_cutlet": "Каре ягненка", + "iot_special_meatballs": "Митболы", + "iot_special_minestrone": "Минестроне", + "iot_special_mussels": "Мидии", + "iot_special_omelette": "Омлет", + "iot_special_pancakes": "Оладьи", + "iot_special_paris_style_peas": "Горошек по-парижски", + "iot_special_poached_eggs": "Яйца-пашот", + "iot_special_pork_fillet": "Свиное филе", + "iot_special_pork_ribs": "Свиные ребра", + "iot_special_prawns": "Креветки", + "iot_special_quinoa": "Киноа", + "iot_special_ratatouille": "Рататуй", + "iot_special_salmon_fillet": "Филе лосося", + "iot_special_saute_potatoes": "Картофель жареный", + "iot_special_scallops": "Гребешки", + "iot_special_scrambled_eggs": "Яичница-болтунья", + "iot_special_spelt": "Спельта", + "iot_special_veggy_noodles": "Вегетарианская лапша", + "iot_special_white_fish_fillet": "Филе белой рыбы", + "iot_standard_boiling": "Кипячение", + "iot_standard_frying": "Жарка", + "iot_standard_keep_warm": "Поддержание блюд в теплом состоянии", + "iot_standard_melting": "Плавление", + "iot_standard_simmering": "Приготовление на медленном огне" + }, + "name": "Программа" + }, + "programs_ov": { + "state": { + "bakery": "Паста и выпечка", + "bakery_steam": "Пар в духовом шкафу", + "bottom_heating": "Нижний элемент", + "bottom_heating_fan": "Нижний элемент + вентилятор", + "bread": "Хлеб", + "bread_steam": "Хлеб, испеченный на пару", + "combi": "Combi", + "convection_fan": "Верхний и нижний нагрев с вентилятором", + "convection_fan_turnspit": "Обыкновенная духовка + вентилятор + вертел", + "conventional": "Верхний и нижний нагрев", + "conventional_turnspit": "Обыкновенная духовка + вентилятор", + "defrost": "Размораживание", + "descaling": "Удаление накипи", + "fish": "Рыба", + "fish_steam": "Рыба на пару", + "grill_cata": "Гриль", + "grill_fan_cata": "Гриль с вентилятором", + "grill_fan_pyro": "Гриль + вентилятор", + "grill_pyro": "Гриль", + "h20_clean": "H2O-Clean", + "iot_bread": "Хлеб", + "iot_h20_clean": "h2O clean", + "leavening": "Заквашивание", + "low_temp_cooking": "Приготовление при низкой температуре", + "low_temp_cooking_fish": "Приготовление при низкой температуре - Рыба", + "low_temp_cooking_fish_steam": "Приготовление при низкой температуре - Рыба на пару", + "low_temp_cooking_meat": "Приготовление при низкой температуре - Мясо", + "low_temp_cooking_meat_steam": "Приготовление при низкой температуре - Мясо на пару", + "low_temp_cooking_steam": "Приготовление при низкой температуре на пару", + "meat": "Мясо", + "meat_steam": "Мясо на пару", + "multi_level": "Многоуровневое приготовление", + "paella": "Paella", + "pasta_and_bakery": "Паста и выпечка", + "pizza": "Pizza", + "pyrolysis": "Пиролиз", + "pyrolysis_plus": "Пиролиз +", + "red_meat": "Красное мясо", + "red_meat_steam": "Красное мясо на пару", + "regenerate": "Регенерация", + "soft_plus": "Soft+", + "super_grill": "Супер-гриль", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Овощи", + "vegetables_cata": "Овощи", + "vegetables_pyro": "Овощи", + "water_discharge": "Слив воды", + "white_meat": "Белое мясо", + "white_meat_steam": "Белое мясо на пару" + }, + "name": "Программа" + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "20° Цветные ткани и Хлопок", + "20_degrees_new_energy_label": "20°C", + "active_steam": "Пар", + "active_wash": "Активная стирка", + "active_wash_steam": "Активная стирка", + "allergy_care": "Уход для аллергиков", + "allergy_care_pro": "Уход для аллергиков про", + "all_in_one_49": "Все в одном 49 мин.", + "all_in_one_59": "Все в одном 59 мин.", + "all_in_one_59_steam": "Активная стирка + пар", + "autocare": "Автоуход", + "autoclean": "Очистка барабана", + "baby_60": "Стирка детского белья при 60°С", + "care_14": "БЫСТРЫЙ Уход 14'", + "care_30": "БЫСТРЫЙ Уход 30'", + "care_44": "БЫСТРЫЙ Уход 44'", + "checkup": "Проверка", + "colour_59": "цветные 59'", + "colour_59_steam": "Цветные ткани 59' + пар", + "cottons": "Хлопок", + "cottons_prewash": "хлопок + предвар.", + "cottons_steam": "Хлопок + Пар", + "cotton_care_59": "хлопок 59 минут", + "delicate_59": "Деликатная 59 мин.", + "delicate_silk": "Деликатная ткань (шелк)", + "delicate_silk_steam": "Деликатная ткань (шелк) + пар", + "delicati_59": "Деликатная 59 мин.", + "delicati_59_steam": "Деликатная 59 мин.", + "drain_spin": "Слив + отжим", + "easy_iron": "легкая глажка", + "eco_40_60_new_energy_label": "Eco 40-60", + "extra_care": "ЭКСТРА УХОД", + "fitness": "Фитнес", + "fitness_care": "Фитнес", + "fresh_care": "Свежесть", + "fresh_care_steam": "Свежесть + пар", + "handwash_wool": "Ручная стирка и шерсть", + "high_dry": "Сушка хлопка", + "hqd_20_degrees": "Хлопок 20℃", + "hqd_allergy": "Уход для аллергиков", + "hqd_autoclean": "Очистка барабана", + "hqd_babycare": "Детская одежда", + "hqd_checkup": "Проверка", + "hqd_cottons": "Хлопок", + "hqd_delicate": "Деликатные вещи", + "hqd_delicate_cradle": "Деликатные вещи", + "hqd_dry": "Сушка хлопка", + "hqd_dry_synthetics": "Сушка смешанных тканей", + "hqd_duvet": "Пуховое одеяло", + "hqd_eco_40_60_degrees": "Eco 40-60", + "hqd_handwash_wool": "Шерсть", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "Смешанные ткани", + "hqd_quick_15": "Быстрая 15 мин.", + "hqd_quick_wash_57": "Быстрая стирка 57 мин", + "hqd_rapid_wash_and_dry": "Стирка и сушка", + "hqd_refresh": "Освежить", + "hqd_rinse": "Полоскание", + "hqd_shirts": "Рубашки", + "hqd_smart": "Smart A.I.", + "hqd_spin": "Отжим", + "hqd_sport": "Спорт", + "hqd_super_fast": "Быстрая 39 мин.", + "hqd_synthetic_and_coloured": "Синтетика", + "hygiene_59": "ГИГИЕНИЧНАЯ ПЛЮС 59'", + "hygiene_60": "Гигиеничная 60°", + "hygiene_plus_59": "ГИГИЕНИЧНАЯ ПЛЮС 59'", + "hygiene_plus_59_min": "ГИГИЕНИЧНАЯ ПЛЮС 59'", + "hygiene_pro_49_min": "Hygiene Pro 49 мин.", + "hygiene_pro_steam": "Hygiene Pro + Пар", + "intensive_40": "Интенсивная 40°С", + "intensive_40_steam": "Интенсивный пар 40°C +", + "iot_active_steam": "Пар", + "iot_active_wash_steam": "Активная стирка", + "iot_allergy_care_pro": "Уход для аллергиков про", + "iot_all_in_one_59_steam": "Активная стирка + пар", + "iot_checkup": "Проверка", + "iot_colour_59_steam": "Цветные ткани 59' + пар", + "iot_cottons_steam": "Хлопок + Пар", + "iot_delicate_silk_steam": "Деликатная ткань (шелк) + пар", + "iot_delicati_59_steam": "Деликатная 59 мин.", + "iot_dry_air_refresh": "Освежение воздухом", + "iot_dry_anti_mites": "Противоклещевая обработка", + "iot_dry_baby": "Детские вещи", + "iot_dry_backpacks": "Рюкзаки", + "iot_dry_bathrobe": "Купальные халаты и рыхлые ткани", + "iot_dry_bed_linen": "Постельное белье", + "iot_dry_cotton_dry": "Сушка хлопка", + "iot_dry_cuddly_toys": "Мягкие игрушки", + "iot_dry_curtains": "Шторы", + "iot_dry_dehumidifier": "Влагопоглотитель", + "iot_dry_delicates_antiallergy": "Деликатные вещи – защита от аллергии", + "iot_dry_delicate_tablecloths": "Деликатные скатерти", + "iot_dry_denim_jeans": "Деним – джинсы", + "iot_dry_easy_iron_cotton": "Легкая глажка – хлопок", + "iot_dry_easy_iron_synthetics": "Легкая глажка – синтетика", + "iot_dry_gym_fit": "Одежда для спортзала", + "iot_dry_lingerie": "Белье", + "iot_dry_mixed_dry": "Сушка смешанных тканей", + "iot_dry_rapid_60_min_delicates": "Быстрая сушка 60 мин. – деликатные ткани", + "iot_dry_shirts": "Рубашки", + "iot_dry_swimsuits_and_bikinis": "Купальники", + "iot_dry_synthetics": "Сушка синтетики", + "iot_dry_synthetic_dry": "Сушка синтетики", + "iot_dry_tablecloths": "Скатерти", + "iot_dry_technical_fabrics": "Современные ткани", + "iot_dry_warm_embrace": "Теплая машинная сушка", + "iot_dry_wool_dry": "Сушка шерсти", + "iot_easy_iron": "легкая глажка", + "iot_fresh_care_steam": "Свежесть + пар", + "iot_hygiene_pro_steam": "Hygiene Pro + Пар", + "iot_intensive_40_steam": "Интенсивный пар 40°C +", + "iot_mixed_steam": "Смешанные ткани + Пар", + "iot_mix_and_colour_59_steam": "Смешанные и цветные 59 мин + пар", + "iot_perfect_cotton_59_steam": "ХЛОПОК: ИДЕАЛЬНАЯ СТИРКА 59'", + "iot_rapid_a_class_60_steam": "Быстрая Класс A 60 + пар", + "iot_resistant_cotton_steam": "Хлопок + Пар", + "iot_shirts_steam": "Рубашки + Пар", + "iot_single_item_steam": "Одна вещь + пар", + "iot_smart_wash": "Smart Wash", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "Специальная 39 мин + пар", + "iot_steam_hygiene_plus": "Гигиена плюс парообработка ", + "iot_synthetic_and_coloured_steam": "Синтетика и цветные ткани + пар", + "iot_wash_and_dry": "Стирка и сушка", + "iot_wash_anti_mites": "Противоклещевая обработка", + "iot_wash_anti_odor": "Устранение запахов", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "Гигиеническая стирка", + "iot_wash_baby_sanitizer_steam": "Гигиеническая стирка детских вещей + пар", + "iot_wash_backpacks": "Рюкзаки", + "iot_wash_backpacks_zelig": "Рюкзаки", + "iot_wash_bathrobe": "Банные халаты и полотенца", + "iot_wash_bathrobe_steam": "Банные халаты + Пар", + "iot_wash_bed_linen": "Постельное белье", + "iot_wash_bed_linen_steam": "Постельное белье + Пар", + "iot_wash_bed_linen_zelig": "Постельное белье", + "iot_wash_big_single_load": "Большая разовая загрузка", + "iot_wash_bleaching": "Отбеливание", + "iot_wash_blood_stains": "Пятна крови", + "iot_wash_cashmere": "Кашемир", + "iot_wash_chocolate_stains": "Пятна шоколада", + "iot_wash_cold_wash": "Стирка в холодной воде", + "iot_wash_colored": "Цветные ткани", + "iot_wash_colored_anti_stain": "Удаление пятен с цветных вещей", + "iot_wash_colored_delicate": "Деликатные цветные", + "iot_wash_coloured": "Цветные ткани", + "iot_wash_coloured_bed_linen": "Цветное постельное белье", + "iot_wash_coloured_bed_linen_steam": "Цветное постельное белье + пар", + "iot_wash_coloured_curtains": "Цветные шторы", + "iot_wash_coloured_shirts": "Цветные рубашки", + "iot_wash_coloured_shirts_steam": "Цветные рубашки + пар", + "iot_wash_coloured_steam": "Цветные ткани + Пар", + "iot_wash_coloured_tableclothes": "Цветные скатерти", + "iot_wash_coloured_tableclothes_steam": "Цветные скатерти + пар", + "iot_wash_cotton": "Хлопок", + "iot_wash_cotton_steam": "Хлопок + Пар", + "iot_wash_cuddly_toys": "Мягкие игрушки", + "iot_wash_curtains": "Шторы", + "iot_wash_curtains_steam": "Шторы+Пар", + "iot_wash_curtains_zelig": "Шторы", + "iot_wash_dark": "Темные ткани", + "iot_wash_darks_and_coloured_44": "Темные и цветные 44 мин.", + "iot_wash_darks_and_coloured_59": "Темные и цветные 59 мин.", + "iot_wash_darks_and_coloured_xl": "Темные и цветные XL", + "iot_wash_dark_steam": "Темные ткани + Пар", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "Деликатные вещи", + "iot_wash_delicate_antiallergy": "Защита от аллергии для деликатных вещей", + "iot_wash_delicate_antiallergy_steam": "Защита от аллергии для деликатных вещей + Пар", + "iot_wash_delicate_antiallergy_zelig": "Защита от аллергии для деликатных вещей", + "iot_wash_delicate_colors": "Цветные деликатные ткани", + "iot_wash_delicate_colors_steam": "Цветные ткани + пар", + "iot_wash_delicate_dark": "Деликатные темные", + "iot_wash_delicate_steam": "Деликатные вещи + Пар", + "iot_wash_delicate_tablecloths": "Деликатные скатерти", + "iot_wash_delicate_tablecloths_steam": "Деликатные скатерти + Пар", + "iot_wash_delicate_whites": "Деликатные белые", + "iot_wash_denim_jeans": "Деним – джинсы", + "iot_wash_diving_suits": "Гидрокостюмы", + "iot_wash_diving_suits_zelig": "Гидрокостюмы", + "iot_wash_down_jackets": "Пуховики", + "iot_wash_down_jackets_zelig": "Пуховики", + "iot_wash_duvet": "Пуховое одеяло", + "iot_wash_fruit_stains": "Пятна от фруктов", + "iot_wash_gym_fit": "Одежда для спортзала", + "iot_wash_handwash": "Ручная стирка", + "iot_wash_handwash_colored": "Ручная стирка цветных тканей", + "iot_wash_handwash_dark": "Ручная стирка темных тканей", + "iot_wash_lingerie": "Белье", + "iot_wash_masks_refresh": "Освежение масок", + "iot_wash_masks_sanification": "Дезинфекция масок", + "iot_wash_masks_sanification_steam": "Дезинфекция масок + Пар", + "iot_wash_mats": "Ковры", + "iot_wash_men_s_trousers": "брюки", + "iot_wash_mixed": "Смешанные ткани", + "iot_wash_mixed_steam": "Смешанные ткани + Пар", + "iot_wash_mix_and_coloured_44": "Смешанные и цветные 44 мин.", + "iot_wash_mix_and_coloured_59": "Смешанные и цветные 59 мин.", + "iot_wash_mix_and_coloured_xl": "Смешанные и цветные XL", + "iot_wash_new_clothes": "Новая одежда", + "iot_wash_perfect_white": "Безупречный белый", + "iot_wash_perfect_white_steam": "Безупречный белый + Пар", + "iot_wash_pets": "Принадлежности для животных", + "iot_wash_pets_hair_removal": "Удаление шерсти домашних животных", + "iot_wash_pets_odours_stains_removal": "Удаление пятен и запахов домашних животных", + "iot_wash_pets_steam": "Принадлежности для животных", + "iot_wash_playsuits": "Пляжные костюмы", + "iot_wash_playsuits_steam": "Пляжные костюмы + Пар", + "iot_wash_quick_drum_cleaner": "Быстрая очистка барабана", + "iot_wash_rapid_14": "Быстрая 14 мин.", + "iot_wash_rapid_30": "(Быстрая 30 мин.", + "iot_wash_rapid_44": "Быстрая 44 мин.", + "iot_wash_rapid_59": "Быстрая 59 мин", + "iot_wash_rapid_59_steam": "Быстрая 59' + пар", + "iot_wash_refresh_14_min": "Освежение 14 мин.", + "iot_wash_resistant_colored": "Прочные цветные ткани", + "iot_wash_resistant_dark": "Прочные темные ткани", + "iot_wash_resistant_whites": "Прочные белые ткани", + "iot_wash_rinse": "Полоскание", + "iot_wash_shirts": "Рубашки", + "iot_wash_shirts_steam": "Рубашки + Пар", + "iot_wash_silk": "Шелк", + "iot_wash_ski_suit": "Лыжные костюмы", + "iot_wash_ski_suit_zelig": "Лыжные костюмы", + "iot_wash_spin": "Отжим", + "iot_wash_sport": "Спорт", + "iot_wash_sport_anti_odor": "Устранение запаха со спортивной одежды", + "iot_wash_sport_anti_odor_zelig": "Устранение запаха со спортивной одежды", + "iot_wash_stains_remover": "Выведение пятен", + "iot_wash_swimsuits_and_bikinis": "Купальники", + "iot_wash_synthetic": "Синтетика", + "iot_wash_synthetic_steam": "Синтетика + Пар", + "iot_wash_tablecloths": "Скатерти", + "iot_wash_tablecloths_steam": "Скатерти + Пар", + "iot_wash_technical_fabrics": "Современные ткани", + "iot_wash_technical_fabrics_zelig": "Современные ткани", + "iot_wash_technical_jackets": "Современные куртки", + "iot_wash_technical_jackets_zelig": "Современные куртки", + "iot_wash_trainers": "Спортивная обувь", + "iot_wash_whites": "Белые ткани", + "iot_wash_whites_44": "Белые ткани 44 мин.", + "iot_wash_whites_59": "Белые ткани 59 мин.", + "iot_wash_whites_xl": "Белые ткани XL", + "iot_wash_wine_stains": "Пятна от вина", + "iot_wash_wool": "Шерсть", + "jeans": "Джинсы", + "jeans_60": "джинсы", + "low_dry": "Сушка смешанных тканей", + "mixed": "Смешанные ткани", + "mixed_and_colored_59": "Смешанные и цветные 59 мин.", + "mixed_steam": "Смешанные ткани + Пар", + "mix_and_colour_59": "СМЕШАННЫЕ И ЦВЕТНЫЕ 59'", + "mix_and_colour_59_steam": "Смешанные и цветные 59 мин + пар", + "night_and_day": "Ночная стирка", + "night_wash": "Ночной цикл", + "perfect_59": "Идеальная 59 мин.", + "perfect_cotton_59": "ХЛОПОК: ИДЕАЛЬНАЯ СТИРКА 59'", + "perfect_cotton_59_steam": "ХЛОПОК: ИДЕАЛЬНАЯ СТИРКА 59'", + "perfect_whites_59": "идеально белое 59'", + "rapid_14_min": "Быстрая 14 мин", + "rapid_30_min": "Быстрая 30 мин.", + "rapid_44_min": "Быстрая 44 мин.", + "rapid_a_class_60": "Быстрая Класс A 60", + "rapid_a_class_60_steam": "Быстрая Класс A 60 + пар", + "rapid_wash_and_dry_59_min": "Стирка и сушка 59 мин.", + "resistant_cotton": "Хлопок", + "resistant_cotton_steam": "Хлопок + Пар", + "rinse": "Полоскание", + "shirts_steam": "Рубашки + Пар", + "silent_night": "Ночной цикл", + "single_item": "Отдельный элемент", + "single_item_steam": "Одна вещь + пар", + "smart_wash": "Smart Wash", + "soft_care": "Деликатный уход", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "Cпециальный 39'", + "special_39_full_load": "Cпециальный 39'", + "special_39_full_load_steam": "Специальная 39 мин + пар", + "special_49": "Специальный 49 мин.", + "sport_39": "Спорт 39 мин.", + "sport_plus_29": "СПОРТ ПЛЮС 29\"", + "sport_plus_39": "СПОРТ ПЛЮС 39'", + "steam_39": "Пар 39 мин.", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro — хлопок", + "steam_care_pro_delicates": "Steam Care Pro — деликатные вещи", + "steam_care_pro_synthetic": "Steam Care Pro — синтетика", + "steam_hygiene_plus": "Гигиена плюс парообработка ", + "synthetics": "Синтетика", + "synthetic_and_coloured": "Синтетика и цветные ткани", + "synthetic_and_coloured_steam": "Синтетика и цветные ткани + пар", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "Общий уход", + "tumbling": "Барабан", + "wool": "Шерсть", + "wool_and_delicates_49": "шерсть/деликатные 49'", + "wool_dry": "Сушка шерсти", + "wool_soft_care": "шерсть & деликатный уход" + }, + "name": "Программа" + }, + "programs_ref": { + "state": { + "auto_set": "АВТОМАТИЧЕСКАЯ НАСТРОЙКА", + "cheese": "Сыр", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Режим Eco", + "fruits_and_veg": "Фрукты и овощи", + "fruit_and_veg": "Fruit & Veg", + "holiday": "HOLIDAY", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Режим не выбран", + "quick_cool": " БЫСТРОЕ ОХЛАЖДЕНИЕ", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + }, + "name": "Программа" } }, "select": { @@ -1030,7 +1588,8 @@ "iot_uv_and_dry": "УФ + Осушитель", "iot_uv_and_fan": "УФ + Вентилятор", "iot_uv_and_heat": "УФ + Нагрев" - } + }, + "name": "Программа" }, "programs_ref": { "state": { @@ -1052,7 +1611,8 @@ "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" - } + }, + "name": "Программа" }, "remaining_time": { "name": "Оставшееся время" diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index b94883c..8f68b30 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -58,7 +58,8 @@ "19": "Sušenie", "20": "Sušenie", "11": "Pripravené", - "17": "unknown" + "17": "unknown", + "12": "unkown" }, "name": "Fáza" }, @@ -306,7 +307,8 @@ "woolmark": "Woolmark", "xxl_load": "XXL náplň", "zoom_59": "Zoom 59" - } + }, + "name": "Program" }, "room_temperature": { "name": "Izbová teplota" @@ -319,6 +321,562 @@ }, "fridge_temp": { "name": "Teplota chladničky" + }, + "programs_ac": { + "state": { + "iot_10_heating": "Funkcia vykurovania na 10 °C", + "iot_auto": "Automatika", + "iot_cool": "Chladiť", + "iot_dry": "Sušiť", + "iot_fan": "Ventilátor", + "iot_heat": "Ohrev", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Samoprečisťovanie", + "iot_self_clean": "Samočistenie", + "iot_self_clean_56": "Sterilné čistenie 56°C", + "iot_simple_start": "Spustiť teraz", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Auto", + "iot_uv_and_cool": "UV + Studené", + "iot_uv_and_dry": "UV + Odvlhčovač", + "iot_uv_and_fan": "UV + Ventilátor", + "iot_uv_and_heat": "UV + Ohrev" + }, + "name": "Program" + }, + "programs_dw": { + "state": { + "59_min": "Rýchly 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "Auto univerzálny 50 -60°C", + "auto_universal_plus": "Auto univerzálny plus 65 - 75°C", + "auto_universal_plus_soil": "Auto univerzálny plus 65 - 75°C", + "auto_universal_soil": "Auto univerzálny 50 -60°C", + "auto_wash": "Automatické pranie", + "auto_wash_soil": "Automatické pranie", + "classe_a_59": "A trieda 1 h 65°C", + "delicate": "Jemný 45°C", + "dishwasher_care": "Cyklus čistenia vodného kameňa", + "eco": "Eko", + "eco_asynch": "Eco 45°C", + "eco_bldc": "Eco 45°C", + "eco_synch": "Eco 45°C", + "gentle_wash": "Gentle wash", + "glass": "Sklo", + "glassware": "Sklo 45 °C", + "glass_care": "Glass Care", + "hygiene": "Hygiena", + "hygiene_plus": "Hygienické umývanie + 75 °C", + "intensive": "Intenzívne pranie ", + "intensive_rapid": "intenzívny rýchly", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "Auto univerzálny 50 -60°C", + "iot_auto_wash_soil": "Automatické pranie", + "iot_baby_care": "Detská starostlivosť", + "iot_breakfast": "Raňajky", + "iot_checkup": "Kontrola", + "iot_china_crystals": "Krištáľ", + "iot_classe_a_59": "Rýchly 59'", + "iot_cocktail_glasses": "Koktailové poháre", + "iot_cocktail_glasses_soil": "Koktailové poháre", + "iot_daily_care": "Denná starostlivosť", + "iot_daily_care_soil": "Denná starostlivosť", + "iot_delicate": "Jemný 45°C", + "iot_dinner_for_two": "Večera pre dvoch", + "iot_dinner_for_two_soil": "Večera pre dvoch", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "Eco 45°C", + "iot_eco_bldc": "Eco 45°C", + "iot_eco_synch": "Eco 45°C", + "iot_extra_hygiene": "Extra hygienický", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "Happy Hour", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "Párty (večierok)", + "iot_party_soil": "Párty (večierok)", + "iot_pizza_menu": "Pizza Menu", + "iot_pizza_menu_soil": "Pizza Menu", + "iot_plastic_tupperware": "Plastové riady a misky", + "iot_porcelain": "Porcelán", + "iot_power_mix_wash": "Power Mix Wash", + "iot_power_mix_wash_soil": "Power Mix Wash", + "iot_prewash": "Predumývanie", + "iot_pyrex_and_glassware": "Pyrex a sklenené riady", + "iot_rapid_29": "Rychly 29'", + "iot_rapid_39": "Rýchle 39' 60 °C", + "iot_single": "Jeden", + "iot_steam": "Para 75 °C", + "iot_super_flash": "Super oplach", + "iot_super_wash": "Super Wash", + "iot_turbopower": "Turbo Power", + "iot_universal": "Univerzálne 60 °C", + "iot_wok_grids_maxi_pans": "Špeciálne panvice (Wok, rošty, maxi panvice)", + "iot_wok_grids_maxi_pans_soil": "Špeciálne panvice (Wok, rošty, maxi panvice)", + "iot_yes_quick_cycle": "Yes Quick", + "night": "Ultra tichý 55°C", + "prewash": "Predumývanie", + "rapid_20": "Rýchly 20'", + "rapid_24": "Rychly 24'", + "rapid_29": "Rychly 29' 50°C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "Rýchle 39' 60 °C", + "rapid_49": "Rýchly 49'", + "rapid_59": "Rýchly 59'", + "sanitising": "Dezinfekcia", + "silence": "Silence", + "silent": "Noc", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", + "special": "špeciál", + "special_pw_prz": "špeciál", + "steam": "Para 75 °C", + "steam_plus": "Para Plus 75 °C", + "total_care": "Total Care 50°C", + "ultra_silence": "Ultra tichý 55°C", + "ultra_silent": "Ultra tichý 55°C", + "universal": "Univerzálne 60 °C", + "universal_plus": "Univerzálne Plus 70 °C", + "zoom_39": "Zoom 39 min" + }, + "name": "Program" + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "Zemiakové placky", + "iot_special_beef_fillet": "Sviečková", + "iot_special_beef_veal_stew": "Dusené hovädzie a teľacie mäso", + "iot_special_boiled_rice": "Varená ryža", + "iot_special_chicken_breast": "Kuracie prsia", + "iot_special_chicken_legs": "Kuracie stehná", + "iot_special_chocolate_pudding": "Čokoládový puding", + "iot_special_entrecote": "Roštenka", + "iot_special_fresh_tuna": "Čerstvý tuniak", + "iot_special_grilled_vegetables": "Grilovaná zelenina", + "iot_special_lamb_cutlet": "Jahňacie kotlety", + "iot_special_meatballs": "Mäsové knedličky", + "iot_special_minestrone": "Minestrone", + "iot_special_mussels": "Mušle", + "iot_special_omelette": "Omeleta", + "iot_special_pancakes": "Palacinky", + "iot_special_paris_style_peas": "Hrášok po parížsky", + "iot_special_poached_eggs": "Stratené vajcia", + "iot_special_pork_fillet": "Bravčová fileta", + "iot_special_pork_ribs": "Bravčové rebierka", + "iot_special_prawns": "Krevety", + "iot_special_quinoa": "Quinoa", + "iot_special_ratatouille": "Ratatouille", + "iot_special_salmon_fillet": "Fileta z lososa", + "iot_special_saute_potatoes": "Restované zemiaky", + "iot_special_scallops": "Lastúry", + "iot_special_scrambled_eggs": "Praženica", + "iot_special_spelt": "Špalda", + "iot_special_veggy_noodles": "Vegetariánske rezance", + "iot_special_white_fish_fillet": "Filety z bielych rýb", + "iot_standard_boiling": "Vrenie", + "iot_standard_frying": "Vyprážať", + "iot_standard_keep_warm": "Udržiavanie tepla", + "iot_standard_melting": "Topiť", + "iot_standard_simmering": "Slabé vrenie" + }, + "name": "Program" + }, + "programs_ov": { + "state": { + "bakery": "Cestoviny a pečenie", + "bakery_steam": "Parná rúra", + "bottom_heating": "Spodný ohrev", + "bottom_heating_fan": "Spodný ohrev + Ventilátor", + "bread": "Chlieb", + "bread_steam": "Chlieb pečený v pare", + "combi": "Combi", + "convection_fan": "Statický + ventilátor", + "convection_fan_turnspit": "Statické + ventilátor + otočný ražeň", + "conventional": "Statický", + "conventional_turnspit": "Statické + otočný ražeň", + "defrost": "Rozmraziť", + "descaling": "Odstránenie vodného kameňa", + "fish": "Ryby", + "fish_steam": "Ryby pripravené v pare", + "grill_cata": "Gril", + "grill_fan_cata": "Gril + ventilátor", + "grill_fan_pyro": "Gril + ventilátor", + "grill_pyro": "Gril", + "h20_clean": "H2O-Clean", + "iot_bread": "Chlieb", + "iot_h20_clean": "h2O clean", + "leavening": "Kysnutie", + "low_temp_cooking": "Varenie pri nízkych teplotách", + "low_temp_cooking_fish": "Varenie pri nízkych teplotách – Ryby", + "low_temp_cooking_fish_steam": "Varenie pri nízkych teplotách – ryby pripravené v pare", + "low_temp_cooking_meat": "Varenie pri nízkych teplotách – Mäso", + "low_temp_cooking_meat_steam": "Varenie pri nízkych teplotách - mäso dusené v pare", + "low_temp_cooking_steam": "Varenie pri nízkych teplotách v pare", + "meat": "Mäso", + "meat_steam": "Mäso v pare", + "multi_level": "Viacúrovňové", + "paella": "Paella", + "pasta_and_bakery": "Cestoviny a pečenie", + "pizza": "Pizza", + "pyrolysis": "Pyrolýza", + "pyrolysis_plus": "Pyrolýza +", + "red_meat": "Červené mäso", + "red_meat_steam": "Červené mäso dusené v pare", + "regenerate": "Regenerovať", + "soft_plus": "Soft+", + "super_grill": "Super Gril", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Zelenina", + "vegetables_cata": "Zelenina", + "vegetables_pyro": "Zelenina", + "water_discharge": "Vypúšťanie vody", + "white_meat": "Biele mäso", + "white_meat_steam": "Biele mäso pripravené v pare" + }, + "name": "Program" + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "20° farebné a bavlnené", + "20_degrees_new_energy_label": "20°C", + "active_steam": "Para", + "active_wash": "Aktívne pranie", + "active_wash_steam": "Aktívne pranie", + "allergy_care": "Antialergické ošetrenie", + "allergy_care_pro": "Antialergické ošetrenie Pro", + "all_in_one_49": "Všetko v jednom 49 min.", + "all_in_one_59": "Všetko v jednom 59 min.", + "all_in_one_59_steam": "Aktívne pranie + para", + "autocare": "Automatická starostlivosť", + "autoclean": "Čistenie bubna", + "baby_60": "Všetka detská 60°C", + "care_14": " Starostlivost 14'", + "care_30": " Starostlivost 30'", + "care_44": "Starostlivost 44'", + "checkup": "Kontrola", + "colour_59": "Farebná 59'", + "colour_59_steam": "Farebná bielizeň 59' + Para", + "cottons": "Bavlna", + "cottons_prewash": "Bavlna + Predpierka", + "cottons_steam": "Bavlna + Para", + "cotton_care_59": "Bavlna 59 Min", + "delicate_59": "Jemné materiály 59 min.", + "delicate_silk": "Jemný hodváb", + "delicate_silk_steam": "Jemný hodváb + Para", + "delicati_59": "Jemné materiály 59 min.", + "delicati_59_steam": "Jemné materiály 59 min.", + "drain_spin": "Vypúšťanie a odstreďovanie", + "easy_iron": "Jednoduché žehlenie", + "eco_40_60_new_energy_label": "Eco 40 – 60", + "extra_care": "Extra Starostlivost", + "fitness": "Fitnes", + "fitness_care": "Fitnes", + "fresh_care": "Svieža starostlivosť", + "fresh_care_steam": "Fresh Care + Para", + "handwash_wool": "Pranie v rukách a vlna", + "high_dry": "Bavlna suchá", + "hqd_20_degrees": "Bavlna 20 ℃", + "hqd_allergy": "Antialergické ošetrenie", + "hqd_autoclean": "Čistenie bubna", + "hqd_babycare": "Detská starostlivosť", + "hqd_checkup": "Kontrola", + "hqd_cottons": "Bavlna", + "hqd_delicate": "Jemné materiály", + "hqd_delicate_cradle": "Jemné materiály", + "hqd_dry": "Bavlna suchá", + "hqd_dry_synthetics": "Zmiešané suché", + "hqd_duvet": "Prikrývky", + "hqd_eco_40_60_degrees": "Eco 40 – 60", + "hqd_handwash_wool": "Vlna", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "Zmiešané", + "hqd_quick_15": "Rýchly 15 min.", + "hqd_quick_wash_57": "Rýchle pranie 57 min.", + "hqd_rapid_wash_and_dry": "Pranie a sušenie", + "hqd_refresh": "Osvieženie", + "hqd_rinse": "Oplachovanie", + "hqd_shirts": "Košele", + "hqd_smart": "Smart A.I.", + "hqd_spin": "Odstreďovanie", + "hqd_sport": "Šport", + "hqd_super_fast": "Rýchly 39 min.", + "hqd_synthetic_and_coloured": "Syntetika", + "hygiene_59": "Hygiena Plus 59'", + "hygiene_60": "Hygiena 60°", + "hygiene_plus_59": "Hygiena Plus 59'", + "hygiene_plus_59_min": "Hygiena Plus 59'", + "hygiene_pro_49_min": "Hygiene Pro 49 min", + "hygiene_pro_steam": "Hygiene Pro + para", + "intensive_40": "Intenzívne pranie 40°C", + "intensive_40_steam": "Intensive 40°C + Para", + "iot_active_steam": "Para", + "iot_active_wash_steam": "Aktívne pranie", + "iot_allergy_care_pro": "Antialergické ošetrenie Pro", + "iot_all_in_one_59_steam": "Aktívne pranie + para", + "iot_checkup": "Kontrola", + "iot_colour_59_steam": "Farebná bielizeň 59' + Para", + "iot_cottons_steam": "Bavlna + Para", + "iot_delicate_silk_steam": "Jemný hodváb + Para", + "iot_delicati_59_steam": "Jemné materiály 59 min.", + "iot_dry_air_refresh": "Prevzdušnenie", + "iot_dry_anti_mites": "Proti roztočom", + "iot_dry_baby": "Odevy pre batoľa", + "iot_dry_backpacks": "Plecniaky", + "iot_dry_bathrobe": "Župany a porézne tkaniny", + "iot_dry_bed_linen": "Posteľné obliečky", + "iot_dry_cotton_dry": "Bavlna suchá", + "iot_dry_cuddly_toys": "Plyšové zvieratká", + "iot_dry_curtains": "Záclony", + "iot_dry_dehumidifier": "Odstraňovač vlhkosti", + "iot_dry_delicates_antiallergy": "Jemné materiály – antialergický program", + "iot_dry_delicate_tablecloths": "Obrusy z jemných materiálov", + "iot_dry_denim_jeans": "Džínsovina – džínsy", + "iot_dry_easy_iron_cotton": "Jednoduché žehlenie – bavlna", + "iot_dry_easy_iron_synthetics": "Jednoduché žehlenie – syntetika", + "iot_dry_gym_fit": "Oblečenie do telocvične a posilňovne", + "iot_dry_lingerie": "Spodná bielizeň", + "iot_dry_mixed_dry": "Zmiešané suché", + "iot_dry_rapid_60_min_delicates": "Rýchly 60 min. – jemné materiály", + "iot_dry_shirts": "Košele", + "iot_dry_swimsuits_and_bikinis": "Plavky", + "iot_dry_synthetics": "Syntetika – sušenie", + "iot_dry_synthetic_dry": "Syntetika – sušenie", + "iot_dry_tablecloths": "Obrusy", + "iot_dry_technical_fabrics": "Technické tkaniny", + "iot_dry_warm_embrace": "Teplé bubnové sušenie", + "iot_dry_wool_dry": "Vlna suchá", + "iot_easy_iron": "Jednoduché žehlenie", + "iot_fresh_care_steam": "Fresh Care + Para", + "iot_hygiene_pro_steam": "Hygiene Pro + para", + "iot_intensive_40_steam": "Intensive 40°C + Para", + "iot_mixed_steam": "Zmiešané + Para", + "iot_mix_and_colour_59_steam": "Zmiešané a Farebné 59' + Para", + "iot_perfect_cotton_59_steam": "Cista Bavlna 59'", + "iot_rapid_a_class_60_steam": "Rýchly Trieda A 60 + Para", + "iot_resistant_cotton_steam": "Bavlna + Para", + "iot_shirts_steam": "Košele + para", + "iot_single_item_steam": "Jedna položka + Para", + "iot_smart_wash": "Smart Wash", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "Špeciál 39' + Para", + "iot_steam_hygiene_plus": "Para Hygiene Plus ", + "iot_synthetic_and_coloured_steam": "Syntetika a farebné materiály + para", + "iot_wash_and_dry": "Pranie a sušenie", + "iot_wash_anti_mites": "Proti roztočom", + "iot_wash_anti_odor": "Odstránenie zápachu", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "Dezinfekcia", + "iot_wash_baby_sanitizer_steam": "Dezinfekčný pre odevy pre batoľa + Para", + "iot_wash_backpacks": "Plecniaky", + "iot_wash_backpacks_zelig": "Batohy", + "iot_wash_bathrobe": "Župany a uteráky", + "iot_wash_bathrobe_steam": "Župan + Para", + "iot_wash_bed_linen": "Posteľné obliečky", + "iot_wash_bed_linen_steam": "Posteľné obliečky + Para", + "iot_wash_bed_linen_zelig": "Posteľné obliečky", + "iot_wash_big_single_load": "Veľká jednorazová náplň", + "iot_wash_bleaching": "Bielenie", + "iot_wash_blood_stains": "Krvavé škvrny", + "iot_wash_cashmere": "Kašmír", + "iot_wash_chocolate_stains": "Čokoládové škvrny", + "iot_wash_cold_wash": "Studené pranie", + "iot_wash_colored": "Farebné", + "iot_wash_colored_anti_stain": "Odstraňovanie škvŕn z farebných materiálov", + "iot_wash_colored_delicate": "Farebné chúlostivé", + "iot_wash_coloured": "Farebné", + "iot_wash_coloured_bed_linen": "Farebné posteľné obliečky", + "iot_wash_coloured_bed_linen_steam": "Farebné posteľné obliečky + Para", + "iot_wash_coloured_curtains": "Farebné závesy", + "iot_wash_coloured_shirts": "Farebné košele", + "iot_wash_coloured_shirts_steam": "Farebné košele + Para", + "iot_wash_coloured_steam": "Farebné + Para", + "iot_wash_coloured_tableclothes": "Farebné obrusy", + "iot_wash_coloured_tableclothes_steam": "Farebné obrusy + Para", + "iot_wash_cotton": "Bavlna", + "iot_wash_cotton_steam": "Bavlna + Para", + "iot_wash_cuddly_toys": "Plyšové zvieratká", + "iot_wash_curtains": "Záclony", + "iot_wash_curtains_steam": "Záclony+Para", + "iot_wash_curtains_zelig": "Záclony", + "iot_wash_dark": "Tmavé odevy", + "iot_wash_darks_and_coloured_44": "Tmavé a farebné 44 min.", + "iot_wash_darks_and_coloured_59": "Tmavé a farebné 59 min.", + "iot_wash_darks_and_coloured_xl": "Tmavé a farebné XL", + "iot_wash_dark_steam": "Tmavé odevy + Para", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "Jemné materiály", + "iot_wash_delicate_antiallergy": "Antialergický program pre jemné materiály", + "iot_wash_delicate_antiallergy_steam": "Antialergický program pre jemné materiály + Para", + "iot_wash_delicate_antiallergy_zelig": "Antialergický program pre jemné materiály", + "iot_wash_delicate_colors": "Farebné jemné materiály", + "iot_wash_delicate_colors_steam": "Farebná bielizeň + Para", + "iot_wash_delicate_dark": "Chúlostivé tmavé", + "iot_wash_delicate_steam": "Jemné materiály + Para", + "iot_wash_delicate_tablecloths": "Obrusy z jemných materiálov", + "iot_wash_delicate_tablecloths_steam": "Obrusy z jemných materiálov + Para", + "iot_wash_delicate_whites": "Chúlostivé biele", + "iot_wash_denim_jeans": "Džínsovina – džínsy", + "iot_wash_diving_suits": "Potápačské obleky", + "iot_wash_diving_suits_zelig": "Potápačské obleky", + "iot_wash_down_jackets": "Prešívané bundy", + "iot_wash_down_jackets_zelig": "Prešívané bundy", + "iot_wash_duvet": "Prikrývky", + "iot_wash_fruit_stains": "Ovocné škvrny", + "iot_wash_gym_fit": "Oblečenie do telocvične a posilňovne", + "iot_wash_handwash": "Prepieranie", + "iot_wash_handwash_colored": "Prepieranie farebného", + "iot_wash_handwash_dark": "Prepieranie tmavého", + "iot_wash_lingerie": "Spodná bielizeň", + "iot_wash_masks_refresh": "Osvieženie rúšok", + "iot_wash_masks_sanification": "Dezinfekcia rúšok", + "iot_wash_masks_sanification_steam": "Dezinfekcia rúšok + Para", + "iot_wash_mats": "Rohože", + "iot_wash_men_s_trousers": "Nohavice", + "iot_wash_mixed": "Zmiešané", + "iot_wash_mixed_steam": "Zmiešané + Para", + "iot_wash_mix_and_coloured_44": "Zmiešané a farebné 44 min.", + "iot_wash_mix_and_coloured_59": "Zmiešané a farebné 59 min.", + "iot_wash_mix_and_coloured_xl": "Zmiešané a farebné XL", + "iot_wash_new_clothes": "Nové oblečenie", + "iot_wash_perfect_white": "Dokonalá biela", + "iot_wash_perfect_white_steam": "Dokonalá biela + Para", + "iot_wash_pets": "Doplnky pre domácich miláčikov", + "iot_wash_pets_hair_removal": "Odstránenie chĺpkov z domácich miláčikov", + "iot_wash_pets_odours_stains_removal": "Odstraňovanie zápachu a škvŕn po domácich zvieratách", + "iot_wash_pets_steam": "Doplnky pre domácich miláčikov", + "iot_wash_playsuits": "Overaly", + "iot_wash_playsuits_steam": "Overaly + Para", + "iot_wash_quick_drum_cleaner": "Rýchly čistič bubna", + "iot_wash_rapid_14": "Rýchly 14 min.", + "iot_wash_rapid_30": "Rýchly 30 min.", + "iot_wash_rapid_44": "Rýchly 44 min.", + "iot_wash_rapid_59": "Rýchly 59 min", + "iot_wash_rapid_59_steam": "Rýchly 59' + Para", + "iot_wash_refresh_14_min": "Osvieženie 14'.", + "iot_wash_resistant_colored": "Odolné farebné", + "iot_wash_resistant_dark": "Odolné tmavé", + "iot_wash_resistant_whites": "Odolné biele", + "iot_wash_rinse": "Oplachovanie", + "iot_wash_shirts": "Košele", + "iot_wash_shirts_steam": "Košele + Para", + "iot_wash_silk": "Hodváb", + "iot_wash_ski_suit": "Lyžiarske odevy", + "iot_wash_ski_suit_zelig": "Lyžiarske odevy", + "iot_wash_spin": "Odstreďovanie", + "iot_wash_sport": "Šport", + "iot_wash_sport_anti_odor": "Športové oblečenie", + "iot_wash_sport_anti_odor_zelig": "Športové oblečenie", + "iot_wash_stains_remover": "Odstraňovanie škvŕn", + "iot_wash_swimsuits_and_bikinis": "Plavky", + "iot_wash_synthetic": "Syntetika", + "iot_wash_synthetic_steam": "Syntetika + Para", + "iot_wash_tablecloths": "Obrusy", + "iot_wash_tablecloths_steam": "Obrusy + Para", + "iot_wash_technical_fabrics": "Technické tkaniny", + "iot_wash_technical_fabrics_zelig": "Technické tkaniny", + "iot_wash_technical_jackets": "Technické bundy", + "iot_wash_technical_jackets_zelig": "Technické bundy", + "iot_wash_trainers": "Tenisky", + "iot_wash_whites": "Biele", + "iot_wash_whites_44": "Biele 44 min.", + "iot_wash_whites_59": "Biele 59 min.", + "iot_wash_whites_xl": "Biele XL", + "iot_wash_wine_stains": "Škvrny od vína", + "iot_wash_wool": "Vlna", + "jeans": "Džínsy", + "jeans_60": "Džínsy", + "low_dry": "Zmiešané suché", + "mixed": "Zmiešané", + "mixed_and_colored_59": "Zmiešané a farebné 59 min.", + "mixed_steam": "Zmiešané + Para", + "mix_and_colour_59": "Zmiesana + Farebna 59'", + "mix_and_colour_59_steam": "Zmiešané a Farebné 59' + Para", + "night_and_day": "Noc a deň", + "night_wash": "Nočný cyklus", + "perfect_59": "Dokonalé vypranie 59 min.", + "perfect_cotton_59": "Cista Bavlna 59'", + "perfect_cotton_59_steam": "Cista Bavlna 59'", + "perfect_whites_59": "Dokonale biele 59'", + "rapid_14_min": "Rýchly 14'", + "rapid_30_min": "Rýchly 30'", + "rapid_44_min": "Rýchly 44'", + "rapid_a_class_60": "Rýchly Trieda A 60", + "rapid_a_class_60_steam": "Rýchly Trieda A 60 + Para", + "rapid_wash_and_dry_59_min": "Pranie a sušenie 59 min.", + "resistant_cotton": "Bavlna", + "resistant_cotton_steam": "Bavlna + Para", + "rinse": "Oplachovanie", + "shirts_steam": "Košele + para", + "silent_night": "Nočný cyklus", + "single_item": "Jedna položka", + "single_item_steam": "Jedna položka + Para", + "smart_wash": "Smart Wash", + "soft_care": "Jemná starostlivosť", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "Special 39'", + "special_39_full_load": "Special 39'", + "special_39_full_load_steam": "Špeciál 39' + Para", + "special_49": "Špeciálne 49 min.", + "sport_39": "Šport 39 min.", + "sport_plus_29": "Sport Plus 29\"", + "sport_plus_39": "Sport Plus 39'", + "steam_39": "Para 39 min.", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro - bavlna", + "steam_care_pro_delicates": "Steam Care Pro - jemné", + "steam_care_pro_synthetic": "Steam Care Pro - syntetika", + "steam_hygiene_plus": "Para Hygiene Plus ", + "synthetics": "Syntetika", + "synthetic_and_coloured": "Syntetika a farebné materiály", + "synthetic_and_coloured_steam": "Syntetika a farebné materiály + para", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "Celková starostlivosť", + "tumbling": "Bubnové sušenie", + "wool": "Vlna", + "wool_and_delicates_49": "Vlna/Jemné 49'", + "wool_dry": "Vlna suchá", + "wool_soft_care": "Vlna & Mäkká starostlivost" + }, + "name": "Program" + }, + "programs_ref": { + "state": { + "auto_set": "AUTOMATICKÉ NASTAVENIE", + "cheese": "Syr", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Režim Eco", + "fruits_and_veg": "Fruit&Veg", + "fruit_and_veg": "Fruit & Veg", + "holiday": "DOVOLENKA", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Nie je vybraný žiadny režim", + "quick_cool": "QUICK COOL", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER CHLADENIE", + "super_freeze": "SUPER MRAZENIE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + }, + "name": "Program" } }, "select": { @@ -1030,7 +1588,8 @@ "iot_uv_and_dry": "UV + Odvlhčovač", "iot_uv_and_fan": "UV + Ventilátor", "iot_uv_and_heat": "UV + Ohrev" - } + }, + "name": "Program" }, "programs_ref": { "state": { @@ -1052,7 +1611,8 @@ "super_freeze": "SUPER MRAZENIE", "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" - } + }, + "name": "Program" }, "remaining_time": { "name": "Zostávajúci čas" diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index fde0ce7..c6fe85b 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -58,7 +58,8 @@ "19": "Sušenje", "20": "Sušenje", "11": "Pripravljen", - "17": "unknown" + "17": "unknown", + "12": "unkown" }, "name": "Faza" }, @@ -306,7 +307,8 @@ "woolmark": "Woolmark", "xxl_load": "Zelo veliki kosi perila", "zoom_59": "Zoom 59" - } + }, + "name": "Program" }, "room_temperature": { "name": "Sobna temperatura" @@ -319,6 +321,562 @@ }, "fridge_temp": { "name": "Temperatura hladilnika" + }, + "programs_ac": { + "state": { + "iot_10_heating": "Funkcija ogrevanja pri 10 °C", + "iot_auto": "Samodejno", + "iot_cool": "Hlajenje", + "iot_dry": "Sušenje", + "iot_fan": "Ventilator", + "iot_heat": "Segrevanje", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Samoočiščevanje", + "iot_self_clean": "Samodejno čiščenje", + "iot_self_clean_56": "Sterilno čiščenje 56°C", + "iot_simple_start": "Zaženi zdaj", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + samodejno", + "iot_uv_and_cool": "UV + hlajenje", + "iot_uv_and_dry": "UV + razvlaževanje", + "iot_uv_and_fan": "UV + ventilator", + "iot_uv_and_heat": "UV + gretje" + }, + "name": "Program" + }, + "programs_dw": { + "state": { + "59_min": "Hitri progr. 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "Samodejno univerzalno 50–60 °C", + "auto_universal_plus": "Samodejno univerzalno+ 65–75 °C", + "auto_universal_plus_soil": "Samodejno univerzalno+ 65–75 °C", + "auto_universal_soil": "Samodejno univerzalno 50–60 °C", + "auto_wash": "Samodejno pomivanje", + "auto_wash_soil": "Samodejno pomivanje", + "classe_a_59": "Razred A 59 min. 65 °C", + "delicate": "Občutljivo 45 °C", + "dishwasher_care": "Cikel odstranjevanja vodnega kamna", + "eco": "Varčno", + "eco_asynch": "Eko 45 °C", + "eco_bldc": "Eko 45 °C", + "eco_synch": "Eko 45 °C", + "gentle_wash": "Gentle wash", + "glass": "Kozarci", + "glassware": "Steklo 45 °C", + "glass_care": "Glass Care", + "hygiene": "Higiena", + "hygiene_plus": "Higiena + 75 °C", + "intensive": "Intenzivno ", + "intensive_rapid": "Hitro in intenzivno", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "Samodejno univerzalno 50–60 °C", + "iot_auto_wash_soil": "Samodejno pranje", + "iot_baby_care": "Otroška posoda", + "iot_breakfast": "Zajtrk", + "iot_checkup": "Pregled", + "iot_china_crystals": "Kristal", + "iot_classe_a_59": "Hitri progr. 59'", + "iot_cocktail_glasses": "Koktajl kozarci", + "iot_cocktail_glasses_soil": "Koktajl kozarci", + "iot_daily_care": "Dnevna nega", + "iot_daily_care_soil": "Dnevna nega", + "iot_delicate": "Občutljivo 45 °C", + "iot_dinner_for_two": "Večerja v dvoje", + "iot_dinner_for_two_soil": "Večerja v dvoje", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "Varčno 45 °C", + "iot_eco_bldc": "Varčno 45 °C", + "iot_eco_synch": "Varčno 45 °C", + "iot_extra_hygiene": "Visoka stopnja higiene", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "Zakuska", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "Zabava", + "iot_party_soil": "Zabava", + "iot_pizza_menu": "Pica program", + "iot_pizza_menu_soil": "Pica program", + "iot_plastic_tupperware": "Plastika in posode za živila", + "iot_porcelain": "Porcelan", + "iot_power_mix_wash": "Intenzivni za različno posodo", + "iot_power_mix_wash_soil": "Intenzivni za različno posodo", + "iot_prewash": "Predpranje", + "iot_pyrex_and_glassware": "Pyrex in steklenina", + "iot_rapid_29": "Hitro 29'", + "iot_rapid_39": "Rapid 39' 60 °C", + "iot_single": "Samsko življenje", + "iot_steam": "Para 75 °C", + "iot_super_flash": "Super hitro", + "iot_super_wash": "Super pomivanje", + "iot_turbopower": "Turbo moč", + "iot_universal": "Univerzalno 60 °C", + "iot_wok_grids_maxi_pans": "Posebna posoda (voki, rešetke in velike kozice)", + "iot_wok_grids_maxi_pans_soil": "Posebna posoda (voki, rešetke in velike kozice)", + "iot_yes_quick_cycle": "Yes Quick", + "night": "Zelo tiho 55 °C", + "prewash": "Predpranje", + "rapid_20": "Kratki progr. 20'", + "rapid_24": "Hitro 24'", + "rapid_29": "Hitro 29' 50°C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "Rapid 39' 60 °C", + "rapid_49": "Kratki progr. 49'", + "rapid_59": "Hitri progr. 59'", + "sanitising": "Dezinfekcija", + "silence": "Silence", + "silent": "Noč", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", + "special": "posebno", + "special_pw_prz": "Posebno", + "steam": "Para 75 °C", + "steam_plus": "Para Plus 75°C", + "total_care": "Total Care 50°C", + "ultra_silence": "Zelo tiho 55 °C", + "ultra_silent": "Zelo tiho 55 °C", + "universal": "Univerzalno 60 °C", + "universal_plus": "Univerzalni Plus 70 °C", + "zoom_39": "Zoom 39 min" + }, + "name": "Program" + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "Pepelnato rjava", + "iot_special_beef_fillet": "Goveji file", + "iot_special_beef_veal_stew": "Goveja in telečja obara", + "iot_special_boiled_rice": "Kuhan riž", + "iot_special_chicken_breast": "Piščančje prsi", + "iot_special_chicken_legs": "Piščančja bedra", + "iot_special_chocolate_pudding": "Čokoladni puding", + "iot_special_entrecote": "Zrezek Entrecote", + "iot_special_fresh_tuna": "Sveža tuna", + "iot_special_grilled_vegetables": "Zelenjava na žaru", + "iot_special_lamb_cutlet": "Jagnječji kotlet", + "iot_special_meatballs": "Mesne kroglice", + "iot_special_minestrone": "Mineštra", + "iot_special_mussels": "Morske školjke", + "iot_special_omelette": "Omleta", + "iot_special_pancakes": "Palačinke", + "iot_special_paris_style_peas": "Grah na pariški način", + "iot_special_poached_eggs": "Pečena jajca", + "iot_special_pork_fillet": "Svinjski file", + "iot_special_pork_ribs": "Svinjska rebrca", + "iot_special_prawns": "Kozice", + "iot_special_quinoa": "Kvinoja", + "iot_special_ratatouille": "Ratatouille", + "iot_special_salmon_fillet": "Lososov file", + "iot_special_saute_potatoes": "Sotiran krompir", + "iot_special_scallops": "Pokrovače", + "iot_special_scrambled_eggs": "Vmešana jajca", + "iot_special_spelt": "Pira", + "iot_special_veggy_noodles": "Vegetarijanski rezanci", + "iot_special_white_fish_fillet": "File bele ribe", + "iot_standard_boiling": "Vretje", + "iot_standard_frying": "Cvrtje", + "iot_standard_keep_warm": "Ohranjanje toplote", + "iot_standard_melting": "Taljenje", + "iot_standard_simmering": "Rahlo vretje" + }, + "name": "Program" + }, + "programs_ov": { + "state": { + "bakery": "Testenine in pekovski izdelki", + "bakery_steam": "Parna pečica", + "bottom_heating": "Spodnji grelnik", + "bottom_heating_fan": "Spodnji grelnik + Ventilator", + "bread": "Kruh", + "bread_steam": "V sopari pečen kruh", + "combi": "Kombinirano", + "convection_fan": "Konvekcija + ventilator", + "convection_fan_turnspit": "Konvekcija + ventilator + raženj", + "conventional": "Konvenkcijsko", + "conventional_turnspit": "Konvekcija + raženj", + "defrost": "Odmrzovanje", + "descaling": "Odstranjevanje vodnega kamna", + "fish": "Ribe", + "fish_steam": "Soparjene ribe", + "grill_cata": "Žar", + "grill_fan_cata": "Žar in ventilator", + "grill_fan_pyro": "Žar + ventilator", + "grill_pyro": "Žar", + "h20_clean": "H2O-Clean", + "iot_bread": "Kruh", + "iot_h20_clean": "h2O clean", + "leavening": "Vzhajanje", + "low_temp_cooking": "Kuhanje pri nizki temperaturi", + "low_temp_cooking_fish": "Kuhanje pri nizki temperaturi – ribe", + "low_temp_cooking_fish_steam": "Kuhanje pri nizki temperaturi – soparjene ribe", + "low_temp_cooking_meat": "Kuhanje pri nizki temperaturi – meso", + "low_temp_cooking_meat_steam": "Kuhanje pri nizki temperaturi – soparjeno meso", + "low_temp_cooking_steam": "Soparjenje pri nizki temperaturi", + "meat": "Meso", + "meat_steam": "Soparjenje mesa", + "multi_level": "Na več nivojih", + "paella": "Paella", + "pasta_and_bakery": "Testenine in pekovski izdelki", + "pizza": "Pizza", + "pyrolysis": "Piroliza", + "pyrolysis_plus": "Piroliza +", + "red_meat": "Rdeče meso", + "red_meat_steam": "Soparjeno rdeče meso", + "regenerate": "Regeneracija", + "soft_plus": "Soft+", + "super_grill": "Super Grill", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Zelenjava", + "vegetables_cata": "Zelenjava", + "vegetables_pyro": "Zelenjava", + "water_discharge": "Izpust vode", + "white_meat": "Belo meso", + "white_meat_steam": "Soparjeno belo meso" + }, + "name": "Program" + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "20° pisano in bombaž", + "20_degrees_new_energy_label": "20°C", + "active_steam": "Para", + "active_wash": "Aktivno pranje", + "active_wash_steam": "Aktivno pranje", + "allergy_care": "Nega proti alergijam", + "allergy_care_pro": "Nega proti alergijam Pro", + "all_in_one_49": "Vse v enem 49'.", + "all_in_one_59": "Vse v enem 59'.", + "all_in_one_59_steam": "Aktivno pranje + para", + "autocare": "Samodejna nega", + "autoclean": "Čiščenje bobna", + "baby_60": "Vsa otroška oblačila 60 °C", + "care_14": "Rapid Care 14'", + "care_30": "Rapid Care 30'", + "care_44": "Rapid Care 44'", + "checkup": "Preveri", + "colour_59": "Barvno 59'", + "colour_59_steam": "Barvno perilo 59' + para", + "cottons": "Bombaž", + "cottons_prewash": "Bombaž + predpranje", + "cottons_steam": "Bombaž + Para", + "cotton_care_59": "Bombaž 59 min.", + "delicate_59": "Občutljivo 59'", + "delicate_silk": "Občutljiva svila", + "delicate_silk_steam": "Občutljiva svila + para", + "delicati_59": "Občutljivo 59'", + "delicati_59_steam": "Občutljivo 59'", + "drain_spin": "Izpiranje in ožemanje", + "easy_iron": "Lažje likanje", + "eco_40_60_new_energy_label": "Eco 40-60", + "extra_care": "Dodatna Nega", + "fitness": "Fitness", + "fitness_care": "Fitness", + "fresh_care": "Nega za svežino", + "fresh_care_steam": "Nega za svežino + para", + "handwash_wool": "Ročno pranje in volna", + "high_dry": "Sušenje bombaža", + "hqd_20_degrees": "Bombaž 20℃", + "hqd_allergy": "Nega proti alergijam", + "hqd_autoclean": "Čiščenje bobna", + "hqd_babycare": "Otroška posoda", + "hqd_checkup": "Preveri", + "hqd_cottons": "Bombaž", + "hqd_delicate": "Občutljive tkanine", + "hqd_delicate_cradle": "Občutljive tkanine", + "hqd_dry": "Sušenje bombaža", + "hqd_dry_synthetics": "Sušenje mešanih tkanin", + "hqd_duvet": "Prešite odeje", + "hqd_eco_40_60_degrees": "Eco 40-60", + "hqd_handwash_wool": "Volna", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "Mešano", + "hqd_quick_15": "Hitro 15'", + "hqd_quick_wash_57": "Hitro pranje 57 min", + "hqd_rapid_wash_and_dry": "Pranje in sušenje", + "hqd_refresh": "Osvežitev", + "hqd_rinse": "Splakovanje", + "hqd_shirts": "Srajce", + "hqd_smart": "Smart A.I.", + "hqd_spin": "Ožemanje", + "hqd_sport": "Šport", + "hqd_super_fast": "Hitro 39’", + "hqd_synthetic_and_coloured": "Sintetika", + "hygiene_59": "Higiena Plus 59'", + "hygiene_60": "Higiena 60'", + "hygiene_plus_59": "Higiena Plus 59'", + "hygiene_plus_59_min": "Higiena Plus 59'", + "hygiene_pro_49_min": "Higiena Pro 49 min", + "hygiene_pro_steam": "Hygiene Pro + Para", + "intensive_40": "Intenzivno 40°C", + "intensive_40_steam": "Intenzivno 40°C + para", + "iot_active_steam": "Para", + "iot_active_wash_steam": "Aktivno pranje", + "iot_allergy_care_pro": "Nega proti alergijam Pro", + "iot_all_in_one_59_steam": "Aktivno pranje + para", + "iot_checkup": "Preveri", + "iot_colour_59_steam": "Barvno perilo 59' + para", + "iot_cottons_steam": "Bombaž + Para", + "iot_delicate_silk_steam": "Občutljiva svila + para", + "iot_delicati_59_steam": "Občutljivo 59'", + "iot_dry_air_refresh": "Osvežitev z zrakom", + "iot_dry_anti_mites": "Proti pršicam", + "iot_dry_baby": "Dojenček", + "iot_dry_backpacks": "Nahrbtniki", + "iot_dry_bathrobe": "Kopalni plašči in luknjičaste tkanine", + "iot_dry_bed_linen": "Posteljnina", + "iot_dry_cotton_dry": "Sušenje bombaža", + "iot_dry_cuddly_toys": "Plišaste igrače", + "iot_dry_curtains": "Zavese", + "iot_dry_dehumidifier": "Odstranjevalec vlage", + "iot_dry_delicates_antiallergy": "Občutljive tkanine – protialegrijsko", + "iot_dry_delicate_tablecloths": "Občutljivi namizni prti", + "iot_dry_denim_jeans": "Denim – jeans", + "iot_dry_easy_iron_cotton": "Enostavno likanje – bombaž", + "iot_dry_easy_iron_synthetics": "Enostavno likanje – sintetika", + "iot_dry_gym_fit": "Športna oblačila", + "iot_dry_lingerie": "Spodnje perilo", + "iot_dry_mixed_dry": "Sušenje mešanih tkanin", + "iot_dry_rapid_60_min_delicates": "Hitro 60' – občutljive tkanine", + "iot_dry_shirts": "Srajce", + "iot_dry_swimsuits_and_bikinis": "Kopalke", + "iot_dry_synthetics": "Sušenje sintetike", + "iot_dry_synthetic_dry": "Sušenje sintetike", + "iot_dry_tablecloths": "Namizni prti", + "iot_dry_technical_fabrics": "Tehnične tkanine", + "iot_dry_warm_embrace": "Topel boben", + "iot_dry_wool_dry": "Sušenje volne", + "iot_easy_iron": "Lažje likanje", + "iot_fresh_care_steam": "Nega za svežino + para", + "iot_hygiene_pro_steam": "Hygiene Pro + Para", + "iot_intensive_40_steam": "Intenzivno 40°C + para", + "iot_mixed_steam": "Mešano + Para", + "iot_mix_and_colour_59_steam": "Mešana in pisana oblačila 59' + para", + "iot_perfect_cotton_59_steam": "Idealen za Bombaz 59'", + "iot_rapid_a_class_60_steam": "Hitri razred A 60 + para", + "iot_resistant_cotton_steam": "Bombaž + Para", + "iot_shirts_steam": "Srajce + Para", + "iot_single_item_steam": "En artikel + para", + "iot_smart_wash": "Pametno pranje", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "Posebno 39' + para", + "iot_steam_hygiene_plus": "Higiena plus para ", + "iot_synthetic_and_coloured_steam": "Sintetične in pisane tkanine + para", + "iot_wash_and_dry": "Pranje in sušenje", + "iot_wash_anti_mites": "Proti pršicam", + "iot_wash_anti_odor": "Proti neprijetnim vonjavam", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "Dezinfekcija", + "iot_wash_baby_sanitizer_steam": "Razkuževanje za otroke + para", + "iot_wash_backpacks": "Nahrbtniki", + "iot_wash_backpacks_zelig": "Nahrbtniki", + "iot_wash_bathrobe": "Kopalni plašči in brisače", + "iot_wash_bathrobe_steam": "Kopalni plašč + Para", + "iot_wash_bed_linen": "Posteljnina", + "iot_wash_bed_linen_steam": "Posteljnina + Para", + "iot_wash_bed_linen_zelig": "Posteljnina", + "iot_wash_big_single_load": "Velika posamezna količina", + "iot_wash_bleaching": "Beljenje", + "iot_wash_blood_stains": "Madeži krvi", + "iot_wash_cashmere": "Kašmir", + "iot_wash_chocolate_stains": "Čokoladni madeži", + "iot_wash_cold_wash": "Hladna voda", + "iot_wash_colored": "Barvno", + "iot_wash_colored_anti_stain": "Odstranjevanje madežev za barva oblačila", + "iot_wash_colored_delicate": "Občutljivo barvno", + "iot_wash_coloured": "Pisane tkanine", + "iot_wash_coloured_bed_linen": "Barvna posteljnina", + "iot_wash_coloured_bed_linen_steam": "Barvna posteljnina + para", + "iot_wash_coloured_curtains": "Pisane zavese", + "iot_wash_coloured_shirts": "Pisane srajce", + "iot_wash_coloured_shirts_steam": "Barvne srajce + para", + "iot_wash_coloured_steam": "Pisane tkanine + Para", + "iot_wash_coloured_tableclothes": "Pisani namizni prti", + "iot_wash_coloured_tableclothes_steam": "Pisani namizni prti + para", + "iot_wash_cotton": "Bombaž", + "iot_wash_cotton_steam": "Bombaž + Para", + "iot_wash_cuddly_toys": "Plišaste igrače", + "iot_wash_curtains": "Zavese", + "iot_wash_curtains_steam": "Zavese + Para", + "iot_wash_curtains_zelig": "Zavese", + "iot_wash_dark": "Temne tkanine", + "iot_wash_darks_and_coloured_44": "Temno in barvno 44 min", + "iot_wash_darks_and_coloured_59": "Temno in barvno 59 min", + "iot_wash_darks_and_coloured_xl": "Temno in barvno XL", + "iot_wash_dark_steam": "Temne tkanine + Para", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "Občutljive tkanine", + "iot_wash_delicate_antiallergy": "Protialergijsko delovanje za občutljive tkanine", + "iot_wash_delicate_antiallergy_steam": "Protialergijsko delovanje za občutljive tkanine + Para", + "iot_wash_delicate_antiallergy_zelig": "Protialergijsko delovanje za občutljive tkanine", + "iot_wash_delicate_colors": "Občutljive pisane tkanine", + "iot_wash_delicate_colors_steam": "Barvno perilo + para", + "iot_wash_delicate_dark": "Občutljivo temno", + "iot_wash_delicate_steam": "Občutljive tkanine + Para", + "iot_wash_delicate_tablecloths": "Občutljivi namizni prti", + "iot_wash_delicate_tablecloths_steam": "Občutljivi namizni prti + Para", + "iot_wash_delicate_whites": "Občutljivo belo", + "iot_wash_denim_jeans": "Denim – jeans", + "iot_wash_diving_suits": "Potapljaške obleke", + "iot_wash_diving_suits_zelig": "Potapljaške obleke", + "iot_wash_down_jackets": "Puhovke", + "iot_wash_down_jackets_zelig": "Puhovke", + "iot_wash_duvet": "Prešite odeje", + "iot_wash_fruit_stains": "Madeži sadja", + "iot_wash_gym_fit": "Športna oblačila", + "iot_wash_handwash": "Ročno pranje", + "iot_wash_handwash_colored": "Ročno pranje barvno", + "iot_wash_handwash_dark": "Ročno pranje temno", + "iot_wash_lingerie": "Spodnje perilo", + "iot_wash_masks_refresh": "Osveževanje mask", + "iot_wash_masks_sanification": "Dezinfekcija mask", + "iot_wash_masks_sanification_steam": "Dezinfekcija mask + Para", + "iot_wash_mats": "Preproge", + "iot_wash_men_s_trousers": "Hlače", + "iot_wash_mixed": "Mešano", + "iot_wash_mixed_steam": "Mešano + Para", + "iot_wash_mix_and_coloured_44": "Mešano in barvno 44 min", + "iot_wash_mix_and_coloured_59": "Mešano in barvno 59 min", + "iot_wash_mix_and_coloured_xl": "Mešano in barvno XL", + "iot_wash_new_clothes": "Nova oblačila", + "iot_wash_perfect_white": "Popolna belina", + "iot_wash_perfect_white_steam": "Popolna belina + Para", + "iot_wash_pets": "Dodatki za hišne ljubljenčke", + "iot_wash_pets_hair_removal": "Odstranjevanje dlake hišnih ljubljenčkov", + "iot_wash_pets_odours_stains_removal": "Odstranjevanje vonjav in madežev hišnih ljubljenčkov", + "iot_wash_pets_steam": "Dodatki za hišne ljubljenčke", + "iot_wash_playsuits": "Otroška oblačila", + "iot_wash_playsuits_steam": "Otroška oblačila + Para", + "iot_wash_quick_drum_cleaner": "Sredstvo za hitro čiščenje bobna", + "iot_wash_rapid_14": "Hitro 14’", + "iot_wash_rapid_30": "Hitro 30’", + "iot_wash_rapid_44": "Hitro 44’", + "iot_wash_rapid_59": "Hitro 59’", + "iot_wash_rapid_59_steam": "Hitro 59' + para", + "iot_wash_refresh_14_min": "Osvežitev 14’", + "iot_wash_resistant_colored": "Trpežno barvno", + "iot_wash_resistant_dark": "Trpežno temno", + "iot_wash_resistant_whites": "Trpežno belo", + "iot_wash_rinse": "Splakovanje", + "iot_wash_shirts": "Srajce", + "iot_wash_shirts_steam": "Srajce + Para", + "iot_wash_silk": "Svila", + "iot_wash_ski_suit": "Smučarske obleke", + "iot_wash_ski_suit_zelig": "Smučarske obleke", + "iot_wash_spin": "Ožemanje", + "iot_wash_sport": "Šport", + "iot_wash_sport_anti_odor": "Športna oblačila, odporna proti neprijetnim vonjavam", + "iot_wash_sport_anti_odor_zelig": "Športna oblačila, odporna proti neprijetnim vonjavam", + "iot_wash_stains_remover": "Odstranjevalec madežev", + "iot_wash_swimsuits_and_bikinis": "Kopalke", + "iot_wash_synthetic": "Sintetika", + "iot_wash_synthetic_steam": "Sintetika + Para", + "iot_wash_tablecloths": "Namizni prti", + "iot_wash_tablecloths_steam": "Namizni prti + Para", + "iot_wash_technical_fabrics": "Tehnične tkanine", + "iot_wash_technical_fabrics_zelig": "Tehnične tkanine", + "iot_wash_technical_jackets": "Tehnične jakne", + "iot_wash_technical_jackets_zelig": "Tehnične jakne", + "iot_wash_trainers": "Športni copati", + "iot_wash_whites": "Belo", + "iot_wash_whites_44": "Belo 44 min", + "iot_wash_whites_59": "Belo 59 min", + "iot_wash_whites_xl": "Belo XL", + "iot_wash_wine_stains": "Madeži vina", + "iot_wash_wool": "Volna", + "jeans": "Jeans", + "jeans_60": "Džins", + "low_dry": "Sušenje mešanih tkanin", + "mixed": "Mešano", + "mixed_and_colored_59": "Mešana in pisana oblačila 59'", + "mixed_steam": "Mešano + Para", + "mix_and_colour_59": "Mesana Sestava in Barvno 59'", + "mix_and_colour_59_steam": "Mešana in pisana oblačila 59' + para", + "night_and_day": "Noč in dan", + "night_wash": "Overnight Cycle", + "perfect_59": "Popolno 59'", + "perfect_cotton_59": "Idealen za Bombaz 59'", + "perfect_cotton_59_steam": "Idealen za Bombaz 59'", + "perfect_whites_59": "Popolnoma belo 59'", + "rapid_14_min": "Hitri program 14'.", + "rapid_30_min": "Hitri program 14 min.", + "rapid_44_min": "Hitri program 14 min.", + "rapid_a_class_60": "Hitri razred A 60", + "rapid_a_class_60_steam": "Hitri razred A 60 + para", + "rapid_wash_and_dry_59_min": "Pranje in sušenje 59'.", + "resistant_cotton": "Bombaž", + "resistant_cotton_steam": "Bombaž + Para", + "rinse": "Splakovanje", + "shirts_steam": "Srajce + Para", + "silent_night": "Overnight Cycle", + "single_item": "En artikel", + "single_item_steam": "En artikel + para", + "smart_wash": "Pametno pranje", + "soft_care": "Nega za mehkobo", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "Poseben 39'", + "special_39_full_load": "Poseben 39'", + "special_39_full_load_steam": "Posebno 39' + para", + "special_49": "Posebno 49'", + "sport_39": "Šport 39'", + "sport_plus_29": "Sport Plus 29\"", + "sport_plus_39": "Sport Plus 39'", + "steam_39": "Para 39'", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro – bombaž", + "steam_care_pro_delicates": "Steam Care Pro – občutljive tkanine", + "steam_care_pro_synthetic": "Steam Care Pro – sintetika", + "steam_hygiene_plus": "Higiena plus para ", + "synthetics": "Sintetika", + "synthetic_and_coloured": "Sintetične in pisane tkanine", + "synthetic_and_coloured_steam": "Sintetične in pisane tkanine + para", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "Popolna nega", + "tumbling": "Boben", + "wool": "Volna", + "wool_and_delicates_49": "Volna/Občutljive tkanine 49'", + "wool_dry": "Sušenje volne", + "wool_soft_care": "Volna & Nega Za Mehkobo" + }, + "name": "Program" + }, + "programs_ref": { + "state": { + "auto_set": "SAMODEJNA NASTAVITEV", + "cheese": "Sir", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Način Eco", + "fruits_and_veg": "Sadje In Zelenjava", + "fruit_and_veg": "Sadje in zelenjava", + "holiday": "POČITNICE", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Izbran ni noben način", + "quick_cool": " HITRO HLAJENJE", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER HLAJENJE", + "super_freeze": "SUPER ZAMRZOVANJE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + }, + "name": "Program" } }, "select": { @@ -1030,7 +1588,8 @@ "iot_uv_and_dry": "UV + razvlaževanje", "iot_uv_and_fan": "UV + ventilator", "iot_uv_and_heat": "UV + gretje" - } + }, + "name": "Program" }, "programs_ref": { "state": { @@ -1052,7 +1611,8 @@ "super_freeze": "SUPER ZAMRZOVANJE", "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" - } + }, + "name": "Program" }, "remaining_time": { "name": "Time remaining" diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index 09670fc..845007d 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -58,7 +58,8 @@ "19": "Sušenje", "20": "Sušenje", "11": "Spremno", - "17": "unknown" + "17": "unknown", + "12": "unkown" }, "name": "Faza" }, @@ -306,7 +307,8 @@ "woolmark": "Woolmark", "xxl_load": "XXL veš", "zoom_59": "Zoom 59" - } + }, + "name": "Program" }, "room_temperature": { "name": "Sobna temperatura" @@ -319,6 +321,562 @@ }, "fridge_temp": { "name": "Temperatura frižidera" + }, + "programs_ac": { + "state": { + "iot_10_heating": "Funkcija grejanja – 10° C", + "iot_auto": "Automatski", + "iot_cool": "Hlađenje", + "iot_dry": "Sušenje", + "iot_fan": "Ventilator", + "iot_heat": "Toplota", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Samopročišćavanje", + "iot_self_clean": "Samočišćenje", + "iot_self_clean_56": "Sterilno čišćenje 56°C", + "iot_simple_start": "Pokrenuti sada", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + automatsko", + "iot_uv_and_cool": "UV+ hladno", + "iot_uv_and_dry": "UV + odvlaživač", + "iot_uv_and_fan": "UV + ventilator", + "iot_uv_and_heat": "UV + toplota" + }, + "name": "Program" + }, + "programs_dw": { + "state": { + "59_min": "Brzi 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "Automatski univerzalni 50 - 60°C", + "auto_universal_plus": "Automatski univerzalni+ 65 - 75°C", + "auto_universal_plus_soil": "Automatski univerzalni+ 65 - 75°C", + "auto_universal_soil": "Automatski univerzalni 50 - 60°C", + "auto_wash": "Automatsko pranje", + "auto_wash_soil": "Automatsko pranje", + "classe_a_59": "A klasa 59' 65°C", + "delicate": "Osetljivo 45°C", + "dishwasher_care": "Ciklus čišćenja kamenca", + "eco": "Eko", + "eco_asynch": "Eco 45°C", + "eco_bldc": "Eco 45°C", + "eco_synch": "Eco 45°C", + "gentle_wash": "Gentle wash", + "glass": "Staklo", + "glassware": "Staklo 45°C", + "glass_care": "Glass Care", + "hygiene": "Higijena", + "hygiene_plus": "Higijenski+ 75°C", + "intensive": "Intenzivno ", + "intensive_rapid": "snažno i brzo", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "Automatski univerzalni 50 - 60°C", + "iot_auto_wash_soil": "Automatsko pranje", + "iot_baby_care": "Baby Nega", + "iot_breakfast": "Doručak", + "iot_checkup": "Provera", + "iot_china_crystals": "China Kristal", + "iot_classe_a_59": "Brzi 59'", + "iot_cocktail_glasses": "Čaše za koktel", + "iot_cocktail_glasses_soil": "Čaše za koktel", + "iot_daily_care": "Svakodnevna nega", + "iot_daily_care_soil": "Svakodnevna nega", + "iot_delicate": "Osetljivo 45°C", + "iot_dinner_for_two": "Večera za dvoje", + "iot_dinner_for_two_soil": "Večera za dvoje", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "Eco 45°C", + "iot_eco_bldc": "Eco 45°C", + "iot_eco_synch": "Eco 45°C", + "iot_extra_hygiene": "Extra Higijena", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "Happy Hour", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "Žurka", + "iot_party_soil": "Žurka", + "iot_pizza_menu": "Pizza Meni", + "iot_pizza_menu_soil": "Pizza Meni", + "iot_plastic_tupperware": "Plastika i Tupperware", + "iot_porcelain": "Porcelan", + "iot_power_mix_wash": "Power Mix pranje", + "iot_power_mix_wash_soil": "Power Mix pranje", + "iot_prewash": "Predpranje", + "iot_pyrex_and_glassware": "Pyrex i Vatrostalne posude", + "iot_rapid_29": "Brzo 29'", + "iot_rapid_39": "Brzi 39' 60°C", + "iot_single": "Single", + "iot_steam": "Para 75°C", + "iot_super_flash": "Super brzi", + "iot_super_wash": "Super pranje", + "iot_turbopower": "TurboPower", + "iot_universal": "Univerzalni 60°C", + "iot_wok_grids_maxi_pans": "Specijalni tiganji (Wok, Rešetke, Maxi tiganji)", + "iot_wok_grids_maxi_pans_soil": "Specijalni tiganji (Wok, Rešetke, Maxi tiganji)", + "iot_yes_quick_cycle": "Yes Quick", + "night": "Ultra tihi 55°C", + "prewash": "Predpranje", + "rapid_20": "Brzi 20'", + "rapid_24": "Brzo 24'", + "rapid_29": "Brzo 29' 50°C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "Brzi 39' 60°C", + "rapid_49": "Brzi 49'", + "rapid_59": "Brzi 59'", + "sanitising": "Dezinfekcija", + "silence": "Silence", + "silent": "Noć", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", + "special": "posebno", + "special_pw_prz": "posebno", + "steam": "Para 75°C", + "steam_plus": "Dodatno parenje na 75 °C", + "total_care": "Total Care 50°C", + "ultra_silence": "Ultra tihi 55°C", + "ultra_silent": "Ultra tihi 55°C", + "universal": "Univerzalni 60°C", + "universal_plus": "Univerzalni plus 70°C", + "zoom_39": "Zoom 39 min" + }, + "name": "Program" + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "Prženi rendani krompir", + "iot_special_beef_fillet": "Goveđi file", + "iot_special_beef_veal_stew": "Goveđi i teleći paprikaš", + "iot_special_boiled_rice": "Kuvani pirinač", + "iot_special_chicken_breast": "Pileća prsa", + "iot_special_chicken_legs": "Pileći bataci", + "iot_special_chocolate_pudding": "Puding od čokolade", + "iot_special_entrecote": "Antrikot", + "iot_special_fresh_tuna": "Sveža tuna", + "iot_special_grilled_vegetables": "Grilovano povrće", + "iot_special_lamb_cutlet": "Jagnjeći kotlet", + "iot_special_meatballs": "Ćufte", + "iot_special_minestrone": "Minestrone", + "iot_special_mussels": "Dagnje", + "iot_special_omelette": "Omlet", + "iot_special_pancakes": "Palačinke", + "iot_special_paris_style_peas": "Grašak na pariski način", + "iot_special_poached_eggs": "Poširana jaja", + "iot_special_pork_fillet": "Svinjski file", + "iot_special_pork_ribs": "Svinjska rebarca", + "iot_special_prawns": "Gambori", + "iot_special_quinoa": "Kinoa", + "iot_special_ratatouille": "Ratatuj", + "iot_special_salmon_fillet": "Filet lososa", + "iot_special_saute_potatoes": "Dinstani krompir", + "iot_special_scallops": "Jakobove kapice", + "iot_special_scrambled_eggs": "Kajgana", + "iot_special_spelt": "Spelta", + "iot_special_veggy_noodles": "Rezanci s povrćem", + "iot_special_white_fish_fillet": "Filet bele ribe", + "iot_standard_boiling": "Boiling", + "iot_standard_frying": "Prženje", + "iot_standard_keep_warm": "Održite toplinu", + "iot_standard_melting": "Topljenje", + "iot_standard_simmering": "Simmering" + }, + "name": "Program" + }, + "programs_ov": { + "state": { + "bakery": "Testenine i pecivo", + "bakery_steam": "Priprema na pari u rerni", + "bottom_heating": "Donje grejanje", + "bottom_heating_fan": "Donje grejanje + Ventilator", + "bread": "Hleb", + "bread_steam": "Hleb pečen na pari", + "combi": "Kombinovani", + "convection_fan": "Konvekcija + ventilator", + "convection_fan_turnspit": "Konvekcija + ventilator + ražanj", + "conventional": "Konvekcija", + "conventional_turnspit": "Konvekcija + ražanj", + "defrost": "Odmrzavanje", + "descaling": "Uklanjanje kamenca", + "fish": "Riba", + "fish_steam": "Riba na pari", + "grill_cata": "Roštilj", + "grill_fan_cata": "Roštilj sa ventilatorom", + "grill_fan_pyro": "Gril + ventilator", + "grill_pyro": "Gril", + "h20_clean": "H2O-Clean", + "iot_bread": "Hleb", + "iot_h20_clean": "h2O clean", + "leavening": "Narastanje", + "low_temp_cooking": "Kuvanje na niskoj temperaturi", + "low_temp_cooking_fish": "Kuvanje na niskoj temperaturi – riba", + "low_temp_cooking_fish_steam": "Kuvanje na niskoj temperaturi – riba na pari", + "low_temp_cooking_meat": "Kuvanje na niskoj temperaturi – meso", + "low_temp_cooking_meat_steam": "Kuvanje na niskoj temperaturi – meso na pari", + "low_temp_cooking_steam": "Kuvanje na pari na niskoj temperaturi", + "meat": "Meso", + "meat_steam": "Priprema mesa na pari", + "multi_level": "Više nivoa", + "paella": "Paella", + "pasta_and_bakery": "Testenine i pecivo", + "pizza": "Pizza", + "pyrolysis": "Piroliza", + "pyrolysis_plus": "Piroliza +", + "red_meat": "Crveno meso", + "red_meat_steam": "Crveno meso na pari", + "regenerate": "Regeneracija", + "soft_plus": "Meko+", + "super_grill": "Super gril", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Povrće", + "vegetables_cata": "Povrće", + "vegetables_pyro": "Povrće", + "water_discharge": "Ispuštanje vode", + "white_meat": "Belo meso", + "white_meat_steam": "Belo meso na pari" + }, + "name": "Program" + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "20° u boji i pamuk", + "20_degrees_new_energy_label": "20°C", + "active_steam": "Para", + "active_wash": "Aktivno pranje", + "active_wash_steam": "Aktivno pranje", + "allergy_care": "Tretman protiv alergija", + "allergy_care_pro": "Tretman protiv alergija Pro", + "all_in_one_49": "Sve u jedan 49'.", + "all_in_one_59": "Sve u jedan 59'.", + "all_in_one_59_steam": "Aktivno pranje + para", + "autocare": "Automatska nega", + "autoclean": "Čišćenje bubnja", + "baby_60": "All Baby 60°C", + "care_14": "Rapid Care 14'", + "care_30": "Rapid Care 30'", + "care_44": "Rapid Care 44'", + "checkup": "Provera", + "colour_59": "Obojeno 59'", + "colour_59_steam": "Šarena odeća 59' + para", + "cottons": "Pamuk", + "cottons_prewash": "Pamuk + Predpranje", + "cottons_steam": "Pamuk + Para", + "cotton_care_59": "Pamuk 59 Min", + "delicate_59": "Delikatni 59'", + "delicate_silk": "Osetljiva svila", + "delicate_silk_steam": "Osetljiva svila + para", + "delicati_59": "Delikatni 59'", + "delicati_59_steam": "Delikatni 59'", + "drain_spin": "Sušenje i centrifuga", + "easy_iron": "Lako peglanje", + "eco_40_60_new_energy_label": "Eko 40-60", + "extra_care": "Dodatni Tretman", + "fitness": "Fitnes", + "fitness_care": "Fitnes", + "fresh_care": "Tretman za osvežavanje", + "fresh_care_steam": "Tretman za osvežavanje + para", + "handwash_wool": "Ručno pranje i vuna", + "high_dry": "Sušenje pamuka", + "hqd_20_degrees": "Pamuk 20℃", + "hqd_allergy": "Tretman protiv alergija", + "hqd_autoclean": "Čišćenje bubnja", + "hqd_babycare": "Baby Nega", + "hqd_checkup": "Provera", + "hqd_cottons": "Pamuk", + "hqd_delicate": "Osetljive tkanine", + "hqd_delicate_cradle": "Osetljive tkanine", + "hqd_dry": "Sušenje pamuka", + "hqd_dry_synthetics": "Sušenje mešanog veša", + "hqd_duvet": "Jorgani", + "hqd_eco_40_60_degrees": "Eko 40-60", + "hqd_handwash_wool": "Vuna", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "Mešani veš", + "hqd_quick_15": "Brzi program 15'", + "hqd_quick_wash_57": "Brzo pranje 57 min.", + "hqd_rapid_wash_and_dry": "Pranje i sušenje", + "hqd_refresh": "Osvežavanje", + "hqd_rinse": "Ispiranje", + "hqd_shirts": "Košulje", + "hqd_smart": "Smart A.I.", + "hqd_spin": "Centrifuga", + "hqd_sport": "Sportska odeća", + "hqd_super_fast": "Brzi program 39’", + "hqd_synthetic_and_coloured": "Sintetika", + "hygiene_59": "Hygijenski Plus 59'", + "hygiene_60": "Higijena 60°", + "hygiene_plus_59": "Hygijenski Plus 59'", + "hygiene_plus_59_min": "Hygijenski Plus 59'", + "hygiene_pro_49_min": "Hygiene Pro 49 min", + "hygiene_pro_steam": "Hygiene Pro + para", + "intensive_40": "Intenzivno 40°C", + "intensive_40_steam": "Intenzivno 40°C + para", + "iot_active_steam": "Para", + "iot_active_wash_steam": "Aktivno pranje", + "iot_allergy_care_pro": "Tretman protiv alergija Pro", + "iot_all_in_one_59_steam": "Aktivno pranje + para", + "iot_checkup": "Provera", + "iot_colour_59_steam": "Šarena odeća 59' + para", + "iot_cottons_steam": "Pamuk + Para", + "iot_delicate_silk_steam": "Osetljiva svila + para", + "iot_delicati_59_steam": "Delikatni 59'", + "iot_dry_air_refresh": "Osvežavanje", + "iot_dry_anti_mites": "Protiv grinja", + "iot_dry_baby": "Beba", + "iot_dry_backpacks": "Rančevi", + "iot_dry_bathrobe": "Bade-mantili i porozne tkanine", + "iot_dry_bed_linen": "Posteljina", + "iot_dry_cotton_dry": "Sušenje pamuka", + "iot_dry_cuddly_toys": "Plišane igračke", + "iot_dry_curtains": "Zavese", + "iot_dry_dehumidifier": "Uklanjanje vlage", + "iot_dry_delicates_antiallergy": "Osetljive tkanine - protiv alergije", + "iot_dry_delicate_tablecloths": "Osetljivi stolnjaci", + "iot_dry_denim_jeans": "Teksas - džins", + "iot_dry_easy_iron_cotton": "Lako peglanje - pamuk", + "iot_dry_easy_iron_synthetics": "Lako peglanje - sintetika", + "iot_dry_gym_fit": "Odeća za teretanu - fitnes", + "iot_dry_lingerie": "Donji veš", + "iot_dry_mixed_dry": "Sušenje mešanog veša", + "iot_dry_rapid_60_min_delicates": "Brzi program 60' - osetljive tkanine", + "iot_dry_shirts": "Košulje", + "iot_dry_swimsuits_and_bikinis": "Odeća za kupanje", + "iot_dry_synthetics": "Sušenje sintetike", + "iot_dry_synthetic_dry": "Sušenje sintetike", + "iot_dry_tablecloths": "Stolnjaci", + "iot_dry_technical_fabrics": "Teničke tkanine", + "iot_dry_warm_embrace": "Toplo sušenje", + "iot_dry_wool_dry": "Sušenje vune", + "iot_easy_iron": "Lako peglanje", + "iot_fresh_care_steam": "Tretman za osvežavanje + para", + "iot_hygiene_pro_steam": "Hygiene Pro + para", + "iot_intensive_40_steam": "Intenzivno 40°C + para", + "iot_mixed_steam": "Mešani veš + Para", + "iot_mix_and_colour_59_steam": "Mešano i u boji 59' + para", + "iot_perfect_cotton_59_steam": "Perfect Pamuk 59'", + "iot_rapid_a_class_60_steam": "Brza klasa A 60 + para", + "iot_resistant_cotton_steam": "Pamuk + Para", + "iot_shirts_steam": "Košulje + para", + "iot_single_item_steam": "Pojedinačni predmet + para", + "iot_smart_wash": "Pametno pranje", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "Posebno 39' + para", + "iot_steam_hygiene_plus": "Higijena plus sa parom ", + "iot_synthetic_and_coloured_steam": "Sintetika i šarena odeća + para", + "iot_wash_and_dry": "Pranje i sušenje", + "iot_wash_anti_mites": "Protiv grinja", + "iot_wash_anti_odor": "Protiv neprijatnih mirisa", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "Dezinfekcija", + "iot_wash_baby_sanitizer_steam": "Dezinfekcija odeće za bebe + para", + "iot_wash_backpacks": "Rančevi", + "iot_wash_backpacks_zelig": "Rančevi", + "iot_wash_bathrobe": "Bade mantili i peškiri", + "iot_wash_bathrobe_steam": "Bade-mantil + Para", + "iot_wash_bed_linen": "Posteljina", + "iot_wash_bed_linen_steam": "Posteljina + Para", + "iot_wash_bed_linen_zelig": "Posteljina", + "iot_wash_big_single_load": "Velika pojedinačna količina", + "iot_wash_bleaching": "Izbeljivanje", + "iot_wash_blood_stains": "Fleke od krvi", + "iot_wash_cashmere": "Kašmir", + "iot_wash_chocolate_stains": "Fleke od čokolade", + "iot_wash_cold_wash": "Hladno pranje", + "iot_wash_colored": "U boji", + "iot_wash_colored_anti_stain": "Uklanjanje fleka na bojama", + "iot_wash_colored_delicate": "Osetljivi materijal u boji", + "iot_wash_coloured": "Boja", + "iot_wash_coloured_bed_linen": "Posteljina u boji", + "iot_wash_coloured_bed_linen_steam": "Posteljina u boji + para", + "iot_wash_coloured_curtains": "Zavese u boji", + "iot_wash_coloured_shirts": "Košulje u boji", + "iot_wash_coloured_shirts_steam": "Košulje u boji + para", + "iot_wash_coloured_steam": "Boja + Para", + "iot_wash_coloured_tableclothes": "Stolnjaci u boji", + "iot_wash_coloured_tableclothes_steam": "Stolnjaci u boji + para", + "iot_wash_cotton": "Pamuk", + "iot_wash_cotton_steam": "Pamuk + Para", + "iot_wash_cuddly_toys": "Plišane igračke", + "iot_wash_curtains": "Zavese", + "iot_wash_curtains_steam": "Zavese+Para", + "iot_wash_curtains_zelig": "Zavese", + "iot_wash_dark": "Tamna odeća", + "iot_wash_darks_and_coloured_44": "Tamno i u boji 44'", + "iot_wash_darks_and_coloured_59": "Tamno i u boji 59'", + "iot_wash_darks_and_coloured_xl": "Tamno i u boji XL", + "iot_wash_dark_steam": "Tamna odeća + Para", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "Osetljive tkanine", + "iot_wash_delicate_antiallergy": "Protiv alergije za osetljive tkanine", + "iot_wash_delicate_antiallergy_steam": "Protiv alergije za osetljive tkanine + Para", + "iot_wash_delicate_antiallergy_zelig": "Protiv alergije za osetljive tkanine", + "iot_wash_delicate_colors": "Osetljive tkanine u boji", + "iot_wash_delicate_colors_steam": "Šarena odeća + para", + "iot_wash_delicate_dark": "Osetljivi tamni materijal", + "iot_wash_delicate_steam": "Osetljive tkanine + Para", + "iot_wash_delicate_tablecloths": "Osetljivi stolnjaci", + "iot_wash_delicate_tablecloths_steam": "Osetljivi stolnjaci + Para", + "iot_wash_delicate_whites": "Osetljivi beli materijal", + "iot_wash_denim_jeans": "Teksas - džins", + "iot_wash_diving_suits": "Ronilačka odela", + "iot_wash_diving_suits_zelig": "Ronilačka odela", + "iot_wash_down_jackets": "Podjakne", + "iot_wash_down_jackets_zelig": "Podjakne", + "iot_wash_duvet": "Jorgani", + "iot_wash_fruit_stains": "Fleke od voća", + "iot_wash_gym_fit": "Odeća za teretanu - fitnes", + "iot_wash_handwash": "Ručno pranje", + "iot_wash_handwash_colored": "Ručno pranje materijala u boji", + "iot_wash_handwash_dark": "Ručno pranje tamnog materijala", + "iot_wash_lingerie": "Donji veš", + "iot_wash_masks_refresh": "Osvežavanje maski", + "iot_wash_masks_sanification": "Dezinfekcija maski", + "iot_wash_masks_sanification_steam": "Dezinfekcija maski + Para", + "iot_wash_mats": "Prostirke", + "iot_wash_men_s_trousers": "Pantalone", + "iot_wash_mixed": "Mešani veš", + "iot_wash_mixed_steam": "Mešani veš + Para", + "iot_wash_mix_and_coloured_44": "Mešano i u boji 44'", + "iot_wash_mix_and_coloured_59": "Mešano i u boji 59'", + "iot_wash_mix_and_coloured_xl": "Mešano i u boji XL", + "iot_wash_new_clothes": "Nova odeća", + "iot_wash_perfect_white": "Savršeno belo", + "iot_wash_perfect_white_steam": "Savršeno belo + Para", + "iot_wash_pets": "Oprema za kućne ljubimce", + "iot_wash_pets_hair_removal": "Uklanjanje dlaka kućnih ljubimaca", + "iot_wash_pets_odours_stains_removal": "Uklanjanje mirisa i mrlja od kućnih ljubimaca", + "iot_wash_pets_steam": "Oprema za kućne ljubimce", + "iot_wash_playsuits": "Odeća za igru", + "iot_wash_playsuits_steam": "Odeća za igru + Para", + "iot_wash_quick_drum_cleaner": "Brzi čistač bubnja", + "iot_wash_rapid_14": "Brzi program 14’", + "iot_wash_rapid_30": "Brzi program 30’", + "iot_wash_rapid_44": "Brzi program 44’", + "iot_wash_rapid_59": "Brzi program 59'", + "iot_wash_rapid_59_steam": "Brzi program 59' + para", + "iot_wash_refresh_14_min": "Osvežavanje 14'", + "iot_wash_resistant_colored": "Otporni materijal u boji", + "iot_wash_resistant_dark": "Otporno tamno", + "iot_wash_resistant_whites": "Otporno belo", + "iot_wash_rinse": "Ispiranje", + "iot_wash_shirts": "Košulje", + "iot_wash_shirts_steam": "Košulje + Para", + "iot_wash_silk": "Svila", + "iot_wash_ski_suit": "Skijaško odelo", + "iot_wash_ski_suit_zelig": "Skijaško odelo", + "iot_wash_spin": "Centrifuga", + "iot_wash_sport": "Sportska odeća", + "iot_wash_sport_anti_odor": "Sportska odeća sa sprečavanjem neprijatnih mirisa", + "iot_wash_sport_anti_odor_zelig": "Sportska odeća sa sprečavanjem neprijatnih mirisa", + "iot_wash_stains_remover": "Uklanjanje fleka", + "iot_wash_swimsuits_and_bikinis": "Odeća za kupanje", + "iot_wash_synthetic": "Sintetika", + "iot_wash_synthetic_steam": "Sintetika + Para", + "iot_wash_tablecloths": "Stolnjaci", + "iot_wash_tablecloths_steam": "Stolnjaci + Para", + "iot_wash_technical_fabrics": "Teničke tkanine", + "iot_wash_technical_fabrics_zelig": "Teničke tkanine", + "iot_wash_technical_jackets": "Vindjakne", + "iot_wash_technical_jackets_zelig": "Vindjakne", + "iot_wash_trainers": "Patike", + "iot_wash_whites": "Bela", + "iot_wash_whites_44": "Bela 44'", + "iot_wash_whites_59": "Bela 59'", + "iot_wash_whites_xl": "Bela XL", + "iot_wash_wine_stains": "Fleke od vina", + "iot_wash_wool": "Vuna", + "jeans": "Džins", + "jeans_60": "Jeans", + "low_dry": "Sušenje mešanog veša", + "mixed": "Mešani veš", + "mixed_and_colored_59": "Mešani veš i veš u boji 59'", + "mixed_steam": "Mešani veš + Para", + "mix_and_colour_59": "Mesano I Obojeno 59'", + "mix_and_colour_59_steam": "Mešano i u boji 59' + para", + "night_and_day": "Noć i dan", + "night_wash": "Noćni ciklus", + "perfect_59": "Savršeno 59'", + "perfect_cotton_59": "Perfect Pamuk 59'", + "perfect_cotton_59_steam": "Perfect Pamuk 59'", + "perfect_whites_59": "Savršeno belo 59'", + "rapid_14_min": "Brzi 14'", + "rapid_30_min": "Brzi 30 min", + "rapid_44_min": "Brzi 44 min", + "rapid_a_class_60": "Brza klasa A 60", + "rapid_a_class_60_steam": "Brza klasa A 60 + para", + "rapid_wash_and_dry_59_min": "Pranje i sušenje 59'.", + "resistant_cotton": "Pamuk", + "resistant_cotton_steam": "Pamuk + Para", + "rinse": "Ispiranje", + "shirts_steam": "Košulje + para", + "silent_night": "Noćni ciklus", + "single_item": "Pojedinačni predmet", + "single_item_steam": "Pojedinačni predmet + para", + "smart_wash": "Pametno pranje", + "soft_care": "Blagi tretman", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "Посебни 39'", + "special_39_full_load": "Посебни 39'", + "special_39_full_load_steam": "Posebno 39' + para", + "special_49": "Posebno 49'", + "sport_39": "Sportska odeća 39'", + "sport_plus_29": "Sport Plus 29\"", + "sport_plus_39": "Sport Plus 39'", + "steam_39": "Para 39'", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro - pamuk", + "steam_care_pro_delicates": "Steam Care Pro - osetljive tkanine", + "steam_care_pro_synthetic": "Steam Care Pro - sintetika", + "steam_hygiene_plus": "Higijena plus sa parom ", + "synthetics": "Sintetika", + "synthetic_and_coloured": "Sintetika i materijal u boji", + "synthetic_and_coloured_steam": "Sintetika i šarena odeća + para", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "Kompletna nega", + "tumbling": "Sušenje", + "wool": "Vuna", + "wool_and_delicates_49": "Vuna/Delikatni 49'", + "wool_dry": "Sušenje vune", + "wool_soft_care": "Vuna & Blagi Tretman" + }, + "name": "Program" + }, + "programs_ref": { + "state": { + "auto_set": "AUTOMATSKO PODEŠAVANJE", + "cheese": "Sir", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Eco režim", + "fruits_and_veg": "Voće i Povrće", + "fruit_and_veg": "Fruit & Veg", + "holiday": "ODMOR", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Nije izabran nijedan režim", + "quick_cool": "BRZO HLAĐENJE", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER HLAĐENJE", + "super_freeze": "SUPER ZAMRZAVANJE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + }, + "name": "Program" } }, "select": { @@ -1030,7 +1588,8 @@ "iot_uv_and_dry": "UV + odvlaživač", "iot_uv_and_fan": "UV + ventilator", "iot_uv_and_heat": "UV + toplota" - } + }, + "name": "Program" }, "programs_ref": { "state": { @@ -1052,7 +1611,8 @@ "super_freeze": "SUPER ZAMRZAVANJE", "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" - } + }, + "name": "Program" }, "remaining_time": { "name": "Preostalo vreme" diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index 32dcbfa..1642ab5 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -58,7 +58,8 @@ "19": "Kurutma", "20": "Kurutma", "11": "Hazır", - "17": "unknown" + "17": "unknown", + "12": "unkown" }, "name": "Aşama" }, @@ -306,7 +307,8 @@ "woolmark": "Saf yün markası", "xxl_load": "XXL Çamaşır", "zoom_59": "Yakınlaştır 59" - } + }, + "name": "Program" }, "room_temperature": { "name": "Oda sıcaklığı" @@ -319,6 +321,562 @@ }, "fridge_temp": { "name": "Buzdolabı sıcaklığı" + }, + "programs_ac": { + "state": { + "iot_10_heating": "10°C Isıtma fonksiyonu", + "iot_auto": "Otomatik", + "iot_cool": "Soğuk", + "iot_dry": "Kuru", + "iot_fan": "Fan", + "iot_heat": "Isı", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Kendi kendini arındırma", + "iot_self_clean": "Kendi kendini temizleme", + "iot_self_clean_56": "Steril Temizleme 56°C", + "iot_simple_start": "Şimdi başlat", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Otomatik", + "iot_uv_and_cool": "UV + Soğuk", + "iot_uv_and_dry": "UV + Nem giderici", + "iot_uv_and_fan": "UV + Fan", + "iot_uv_and_heat": "UV + Isıtma" + }, + "name": "Program" + }, + "programs_dw": { + "state": { + "59_min": "Hizli 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "Universal 50-60°C", + "auto_universal_plus": "Family 65-75°C", + "auto_universal_plus_soil": "Family 65-75°C", + "auto_universal_soil": "Universal 50-60°C", + "auto_wash": "Otomatik Yıkama", + "auto_wash_soil": "Otomatik Yıkama", + "classe_a_59": "A Wash 59' 65°C", + "delicate": "Cristal 45°C", + "dishwasher_care": "Kireç kalıntısı temizleme programı", + "eco": "Eko", + "eco_asynch": "Eco 45°C", + "eco_bldc": "Eco 45°C", + "eco_synch": "Eco 45°C", + "gentle_wash": "Gentle wash", + "glass": "Cam", + "glassware": "Cam Eşya 45°C", + "glass_care": "Glass Care", + "hygiene": "Hijyen", + "hygiene_plus": "Hijyen+ 75°C", + "intensive": "Yoğun ", + "intensive_rapid": "yogun hizli", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "Universal 50-60°C", + "iot_auto_wash_soil": "Otomatik Yıkama", + "iot_baby_care": "Bebek Bakım", + "iot_breakfast": "Kahvaltı", + "iot_checkup": "Check-up", + "iot_china_crystals": "Çin Kristalleri", + "iot_classe_a_59": "Hizli 59'", + "iot_cocktail_glasses": "Kokteyl Bardakları", + "iot_cocktail_glasses_soil": "Kokteyl Bardakları", + "iot_daily_care": "Günlük Bakım", + "iot_daily_care_soil": "Günlük Bakım", + "iot_delicate": "Cristal 45°C", + "iot_dinner_for_two": "2 Kişilik Akşam Yemeği", + "iot_dinner_for_two_soil": "2 Kişilik Akşam Yemeği", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "Eco 45°C", + "iot_eco_bldc": "Eco 45°C", + "iot_eco_synch": "Eco 45°C", + "iot_extra_hygiene": "Ekstra Hijyen", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "Happy Hour", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "Parti", + "iot_party_soil": "Parti", + "iot_pizza_menu": "Pizza Menüsü", + "iot_pizza_menu_soil": "Pizza Menüsü", + "iot_plastic_tupperware": "Plastik ve Tupperware", + "iot_porcelain": "Porselen", + "iot_power_mix_wash": "Power Mix Yıkama", + "iot_power_mix_wash_soil": "Power Mix Yıkama", + "iot_prewash": "Pre-wash", + "iot_pyrex_and_glassware": "Borcam ve Cam Eşya", + "iot_rapid_29": "Rapid 29'", + "iot_rapid_39": "Hızlı 39' 60°C", + "iot_single": "Tek", + "iot_steam": "Buhar 75°C", + "iot_super_flash": "Süper Hızlı", + "iot_super_wash": "Süper Yıkama", + "iot_turbopower": "TurboPower", + "iot_universal": "Çok Amaçlı 60°C", + "iot_wok_grids_maxi_pans": "Özel Tavalar (Wok - Izgaralar ve Maksi Tavalar)", + "iot_wok_grids_maxi_pans_soil": "Özel Tavalar (Wok - Izgaralar ve Maksi Tavalar)", + "iot_yes_quick_cycle": "Yes Quick", + "night": "Night 55°C", + "prewash": "Pre-wash", + "rapid_20": "Hizli 20'", + "rapid_24": "Rapid 24'", + "rapid_29": "Rapid 29' 50°C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "Hızlı 39' 60°C", + "rapid_49": "Hizli 49'", + "rapid_59": "Hizli 59'", + "sanitising": "Dezenfekte Etme", + "silence": "Silence", + "silent": "Gece", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", + "special": "özel", + "special_pw_prz": "özel", + "steam": "Buhar 75°C", + "steam_plus": "Ekstra Buhar 75°C", + "total_care": "Total Care 50°C", + "ultra_silence": "Night 55°C", + "ultra_silent": "Night 55°C", + "universal": "Çok Amaçlı 60°C", + "universal_plus": "Çok Amaçlı Artı 70°C", + "zoom_39": "Zoom 39 min" + }, + "name": "Program" + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "Kül kahverengi", + "iot_special_beef_fillet": "Dana fileto", + "iot_special_beef_veal_stew": "Dana eti ve dana yahnisi", + "iot_special_boiled_rice": "Haşlanmış pirinç", + "iot_special_chicken_breast": "Tavuk göğüs", + "iot_special_chicken_legs": "Tavuk but", + "iot_special_chocolate_pudding": "Süpangle", + "iot_special_entrecote": "Antrikot", + "iot_special_fresh_tuna": "Taze ton balığı", + "iot_special_grilled_vegetables": "Izgara sebzeler", + "iot_special_lamb_cutlet": "Kuzu kotlet", + "iot_special_meatballs": "Köfte", + "iot_special_minestrone": "Çorba", + "iot_special_mussels": "Midye", + "iot_special_omelette": "Omlet", + "iot_special_pancakes": "Pankek", + "iot_special_paris_style_peas": "Fransız usulü bezelye", + "iot_special_poached_eggs": "Poşe yumurta", + "iot_special_pork_fillet": "Domuz filetosu", + "iot_special_pork_ribs": "Domuz kaburgası", + "iot_special_prawns": "Karides", + "iot_special_quinoa": "Kinoa", + "iot_special_ratatouille": "Ratatuy", + "iot_special_salmon_fillet": "Somon fileto", + "iot_special_saute_potatoes": "Patates sote", + "iot_special_scallops": "Deniz tarağı", + "iot_special_scrambled_eggs": "Sahanda yumurta", + "iot_special_spelt": "Kılçıksız buğday", + "iot_special_veggy_noodles": "Sebzeli erişte", + "iot_special_white_fish_fillet": "Beyaz balık filetosu", + "iot_standard_boiling": "Kaynama", + "iot_standard_frying": "Kızart", + "iot_standard_keep_warm": "Sıcak Tut", + "iot_standard_melting": "Erit", + "iot_standard_simmering": "İçten İçe Kaynama" + }, + "name": "Program" + }, + "programs_ov": { + "state": { + "bakery": "Makarna ve Ekmek", + "bakery_steam": "Fırın buharı", + "bottom_heating": "Alt ısıtıcı", + "bottom_heating_fan": "Alt ısıtıcı + Fan", + "bread": "Ekmek", + "bread_steam": "Buharda pişmiş ekmek", + "combi": "Kombi", + "convection_fan": "Fan desteklı", + "convection_fan_turnspit": "Konveksiyon + Fan + Şiş Çevirme", + "conventional": "Statık", + "conventional_turnspit": "Konveksiyon + Şiş Çevirme", + "defrost": "Buz çözme", + "descaling": "Kireç çözme", + "fish": "Balık", + "fish_steam": "Balık buğulama", + "grill_cata": "Izgara", + "grill_fan_cata": "Izgara fan", + "grill_fan_pyro": "Izgara + Fan", + "grill_pyro": "Izgara", + "h20_clean": "H2O-Clean", + "iot_bread": "Ekmek", + "iot_h20_clean": "h2O clean", + "leavening": "Mayalama", + "low_temp_cooking": "Düşük Sıcaklıkta Pişirme", + "low_temp_cooking_fish": "Düşük Sıcaklıkta Pişirme - Balık", + "low_temp_cooking_fish_steam": "Düşük Isıda Pişirme - Balık buğulama", + "low_temp_cooking_meat": "Düşük Sıcaklıkta Pişirme - Et", + "low_temp_cooking_meat_steam": "Düşük Isıda Pişirme - Buharda et", + "low_temp_cooking_steam": "Düşük Sıcaklıkta Buharda Pişirme", + "meat": "Et", + "meat_steam": "Et buharı", + "multi_level": "Çok Seviyeli", + "paella": "Paella", + "pasta_and_bakery": "Makarna ve Ekmek", + "pizza": "Pizza", + "pyrolysis": "Piroliz", + "pyrolysis_plus": "Piroliz +", + "red_meat": "Kırmızı Et", + "red_meat_steam": "Buharda kırmızı et", + "regenerate": "Yeniden oluştur", + "soft_plus": "Yumuşak+", + "super_grill": "Süper Izgara", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Sebzeler", + "vegetables_cata": "Sebzeler", + "vegetables_pyro": "Sebzeler", + "water_discharge": "Su Tahliyesi", + "white_meat": "Beyaz Et", + "white_meat_steam": "Buharda beyaz et" + }, + "name": "Program" + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "20° Renkli ve Pamuklular", + "20_degrees_new_energy_label": "20°C", + "active_steam": "Buhar", + "active_wash": "Aktif Yıkama", + "active_wash_steam": "Aktif Yıkama", + "allergy_care": "Alerji Bakımı", + "allergy_care_pro": "Anti-Alerji Pro", + "all_in_one_49": "Hepsi bir Arada 49'.", + "all_in_one_59": "Hepsi bir Arada 59'.", + "all_in_one_59_steam": "Aktif Yıkama + Buhar", + "autocare": "Otomatik bakım", + "autoclean": "Tambur temizliği", + "baby_60": "Bebek Kıyafetleri 60°C", + "care_14": "Hizli 14'", + "care_30": "Hizli 30'", + "care_44": "Hizli 44'", + "checkup": "Check-up", + "colour_59": "Renkli 59'", + "colour_59_steam": "Renkliler 59' + Buhar", + "cottons": "Pamuklular", + "cottons_prewash": "Pamuklular + Ön Yıkama", + "cottons_steam": "Pamuklular + Buhar", + "cotton_care_59": "Pamuklular 59 dk", + "delicate_59": "Narin 59'", + "delicate_silk": "Hassas İpek", + "delicate_silk_steam": "Hassas İpek + Buhar", + "delicati_59": "Narin 59'", + "delicati_59_steam": "Narin 59'", + "drain_spin": "Boşaltma +ve Sıkma", + "easy_iron": "Kolay Ütüleme", + "eco_40_60_new_energy_label": "Eco 40-60", + "extra_care": "Karisik Kirliler", + "fitness": "Az Kirli Spor", + "fitness_care": "Az Kirli Spor", + "fresh_care": "Yenileme Bakımı", + "fresh_care_steam": "Fresh Care + Buhar", + "handwash_wool": "Elde Yıkama ve Yünlüler", + "high_dry": "Pamuklular kurutma", + "hqd_20_degrees": "Pamuklu 20℃", + "hqd_allergy": "Alerji Bakımı", + "hqd_autoclean": "Tambur temizliği", + "hqd_babycare": "Bebek Bakım", + "hqd_checkup": "Check-Up", + "hqd_cottons": "Pamuklular", + "hqd_delicate": "Narin Çamaşırlar", + "hqd_delicate_cradle": "Narin Çamaşırlar", + "hqd_dry": "Pamuklular kurutma", + "hqd_dry_synthetics": "Karışık kurutma", + "hqd_duvet": "Yorgan", + "hqd_eco_40_60_degrees": "Eco 40-60", + "hqd_handwash_wool": "Yünlüler", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "Karışık", + "hqd_quick_15": "Hızlı 15'", + "hqd_quick_wash_57": "Hızlı Yıkama 57 dak", + "hqd_rapid_wash_and_dry": "Yıkama ve kurutma", + "hqd_refresh": "Yenileme", + "hqd_rinse": "Durulama", + "hqd_shirts": "Gömlekler", + "hqd_smart": "Smart A.I.", + "hqd_spin": "Sıkma", + "hqd_sport": "Spor", + "hqd_super_fast": "Hızlı 39’", + "hqd_synthetic_and_coloured": "Sentetikler", + "hygiene_59": "Hijyen 59'", + "hygiene_60": "Hijyen 60°", + "hygiene_plus_59": "Hijyen 59'", + "hygiene_plus_59_min": "Hijyen 59'", + "hygiene_pro_49_min": "Hygiene Pro 49 min", + "hygiene_pro_steam": "Hygiene Pro + Buhar", + "intensive_40": "Yoğun 40°C", + "intensive_40_steam": "Yoğun 40°C + Buhar", + "iot_active_steam": "Buhar", + "iot_active_wash_steam": "Aktif Yıkama", + "iot_allergy_care_pro": "Anti-Alerji Pro", + "iot_all_in_one_59_steam": "Aktif Yıkama + Buhar", + "iot_checkup": "Check-up", + "iot_colour_59_steam": "Renkliler 59' + Buhar", + "iot_cottons_steam": "Pamuklular + Buhar", + "iot_delicate_silk_steam": "Hassas İpek + Buhar", + "iot_delicati_59_steam": "Narin 59'", + "iot_dry_air_refresh": "Hava Yenileme", + "iot_dry_anti_mites": "Akar önleyici", + "iot_dry_baby": "Bebek", + "iot_dry_backpacks": "Sırt çantaları", + "iot_dry_bathrobe": "Bornoz ve gözenekli kumaşlar", + "iot_dry_bed_linen": "Çarşaflar", + "iot_dry_cotton_dry": "Pamuklular kurutma", + "iot_dry_cuddly_toys": "Pelüş hayvanlar", + "iot_dry_curtains": "Perdeler", + "iot_dry_dehumidifier": "Nem giderici", + "iot_dry_delicates_antiallergy": "Narinler - anti-alerji", + "iot_dry_delicate_tablecloths": "Narin masa örtüleri", + "iot_dry_denim_jeans": "Denim - Kot Pantolon", + "iot_dry_easy_iron_cotton": "Kolay Ütü - Pamuklular", + "iot_dry_easy_iron_synthetics": "Kolay Ütü - Sentetikler", + "iot_dry_gym_fit": "Fitness - spor kıyafetleri", + "iot_dry_lingerie": "İç çamaşırları", + "iot_dry_mixed_dry": "Karışık kurutma", + "iot_dry_rapid_60_min_delicates": "Hızlı 60' - Narinler", + "iot_dry_shirts": "Gömlekler", + "iot_dry_swimsuits_and_bikinis": "Mayolar", + "iot_dry_synthetics": "Sentetik Kurutma", + "iot_dry_synthetic_dry": "Sentetik Kurutma", + "iot_dry_tablecloths": "Masa örtüleri", + "iot_dry_technical_fabrics": "Teknik kumaşlar", + "iot_dry_warm_embrace": "Ilık döndürme", + "iot_dry_wool_dry": "Yünlü kurutma", + "iot_easy_iron": "Kolay Ütüleme", + "iot_fresh_care_steam": "Fresh Care + Buhar", + "iot_hygiene_pro_steam": "Hygiene Pro + Buhar", + "iot_intensive_40_steam": "Yoğun 40°C + Buhar", + "iot_mixed_steam": "Karışık + Buhar", + "iot_mix_and_colour_59_steam": "Karışık ve Renkliler 59' + Buhar", + "iot_perfect_cotton_59_steam": "Kirli Pamuklular 59'", + "iot_rapid_a_class_60_steam": "Hızlı A Sınıfı 60 + Buhar", + "iot_resistant_cotton_steam": "Pamuklular + Buhar", + "iot_shirts_steam": "Gömlek + Buhar", + "iot_single_item_steam": "Tek Çamaşır + Buhar", + "iot_smart_wash": "Akıllı Yıkama", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "Özel program 39' + Buhar", + "iot_steam_hygiene_plus": "Hijyen Artı Buhar ", + "iot_synthetic_and_coloured_steam": "Sentetikler ve Renkliler + Buhar", + "iot_wash_and_dry": "Yıkama ve kurutma", + "iot_wash_anti_mites": "Akar önleyici", + "iot_wash_anti_odor": "Koku giderici", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "Dezenfektan", + "iot_wash_baby_sanitizer_steam": "Bebek Dezenfektanı + Buhar", + "iot_wash_backpacks": "Sırt çantaları", + "iot_wash_backpacks_zelig": "Sırt Çantaları", + "iot_wash_bathrobe": "Bornoz ve havlular", + "iot_wash_bathrobe_steam": "Bornoz + Buhar", + "iot_wash_bed_linen": "Çarşaflar", + "iot_wash_bed_linen_steam": "Çarşaflar + Buhar", + "iot_wash_bed_linen_zelig": "Çarşaflar", + "iot_wash_big_single_load": "Büyük tek yük", + "iot_wash_bleaching": "Beyazlatma", + "iot_wash_blood_stains": "Kan lekeleri", + "iot_wash_cashmere": "Kaşmir", + "iot_wash_chocolate_stains": "Çikolata lekeleri", + "iot_wash_cold_wash": "Soğuk Yıkama", + "iot_wash_colored": "Renkli", + "iot_wash_colored_anti_stain": "Renkliler için leke çıkarma", + "iot_wash_colored_delicate": "Renkli hassas", + "iot_wash_coloured": "Renkliler", + "iot_wash_coloured_bed_linen": "Renkli Nevresim", + "iot_wash_coloured_bed_linen_steam": "Renkli Nevresim + Buhar", + "iot_wash_coloured_curtains": "Renkli Perdeler", + "iot_wash_coloured_shirts": "Renkli Gömlekler", + "iot_wash_coloured_shirts_steam": "Renkli Gömlekler + Buhar", + "iot_wash_coloured_steam": "Renkliler + Buhar", + "iot_wash_coloured_tableclothes": "Renkli Masa Örtüsü", + "iot_wash_coloured_tableclothes_steam": "Renkli Masa Örtüsü + Buhar", + "iot_wash_cotton": "Pamuklular", + "iot_wash_cotton_steam": "Pamuklular + Buhar", + "iot_wash_cuddly_toys": "Pelüş hayvanlar", + "iot_wash_curtains": "Perdeler", + "iot_wash_curtains_steam": "Perdeler+Buhar", + "iot_wash_curtains_zelig": "Perdeler", + "iot_wash_dark": "Koyu renkli giysiler", + "iot_wash_darks_and_coloured_44": "Koyu ve renkliler 44'", + "iot_wash_darks_and_coloured_59": "Koyu ve renkliler 59'", + "iot_wash_darks_and_coloured_xl": "Koyu ve renkliler XL", + "iot_wash_dark_steam": "Koyu renkli giysiler + Buhar", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "Narin Çamaşırlar", + "iot_wash_delicate_antiallergy": "Narin çamaşırlar için anti-alerji", + "iot_wash_delicate_antiallergy_steam": "Narin çamaşırlar için anti-alerji + Buhar", + "iot_wash_delicate_antiallergy_zelig": "Narin çamaşırlar için anti-alerji", + "iot_wash_delicate_colors": "Renkli narin çamaşırlar", + "iot_wash_delicate_colors_steam": "Renkliler + Buhar", + "iot_wash_delicate_dark": "Hassas koyu", + "iot_wash_delicate_steam": "Narin Çamaşırlar + Buhar", + "iot_wash_delicate_tablecloths": "Narin masa örtüleri", + "iot_wash_delicate_tablecloths_steam": "Narin masa örtüleri + Buhar", + "iot_wash_delicate_whites": "Hassas beyazlar", + "iot_wash_denim_jeans": "Denim - kot pantolon", + "iot_wash_diving_suits": "Dalgıç elbiseleri", + "iot_wash_diving_suits_zelig": "Dalgıç elbiseleri", + "iot_wash_down_jackets": "Şişme montlar", + "iot_wash_down_jackets_zelig": "Şişme montlar", + "iot_wash_duvet": "Yorgan", + "iot_wash_fruit_stains": "Meyve lekeleri", + "iot_wash_gym_fit": "Fitness - spor kıyafetleri", + "iot_wash_handwash": "Elde yıkama", + "iot_wash_handwash_colored": "Elde yıkama renkli", + "iot_wash_handwash_dark": "Elde yıkama koyu renkli", + "iot_wash_lingerie": "İç çamaşırları", + "iot_wash_masks_refresh": "Maskeleri Yenileme", + "iot_wash_masks_sanification": "Maske Sterilize Etme", + "iot_wash_masks_sanification_steam": "Maske Sterilize Etme + Buhar", + "iot_wash_mats": "Halılar", + "iot_wash_men_s_trousers": "Pantolonları", + "iot_wash_mixed": "Karışık", + "iot_wash_mixed_steam": "Karışık + Buhar", + "iot_wash_mix_and_coloured_44": "Karışık ve renkli 44'", + "iot_wash_mix_and_coloured_59": "Karışık ve renkli 59'", + "iot_wash_mix_and_coloured_xl": "Karışık ve renkli XL", + "iot_wash_new_clothes": "Yeni kıyafetler", + "iot_wash_perfect_white": "Kusursuz beyazlar", + "iot_wash_perfect_white_steam": "Kusursuz beyazlar + Buhar", + "iot_wash_pets": "Evcil hayvan aksesuarları", + "iot_wash_pets_hair_removal": "Evcil Hayvan Tüyü Temizleme", + "iot_wash_pets_odours_stains_removal": "Evcil Hayvan Kokularını ve Lekelerini Giderme", + "iot_wash_pets_steam": "Evcil hayvan aksesuarları", + "iot_wash_playsuits": "Oyun elbiseleri", + "iot_wash_playsuits_steam": "Oyun elbiseleri + Buhar", + "iot_wash_quick_drum_cleaner": "Hızlı tamburlu temizleyici", + "iot_wash_rapid_14": "Hızlı 14’", + "iot_wash_rapid_30": "Hızlı 30’", + "iot_wash_rapid_44": "Hızlı 44'", + "iot_wash_rapid_59": "Hızlı 59'", + "iot_wash_rapid_59_steam": "Hızlı 59' + Buhar", + "iot_wash_refresh_14_min": "Yenileme 14'", + "iot_wash_resistant_colored": "Dayanıklı renkli", + "iot_wash_resistant_dark": "Dayanıklı koyu renkli", + "iot_wash_resistant_whites": "Dayanıklı beyazlar", + "iot_wash_rinse": "Durulama", + "iot_wash_shirts": "Gömlekler", + "iot_wash_shirts_steam": "Gömlekler + Buhar", + "iot_wash_silk": "İpek", + "iot_wash_ski_suit": "Kayak giysileri", + "iot_wash_ski_suit_zelig": "Kayak giysileri", + "iot_wash_spin": "Sıkma", + "iot_wash_sport": "Spor", + "iot_wash_sport_anti_odor": "Koku Önleyici Spor Giyim", + "iot_wash_sport_anti_odor_zelig": "Koku Önleyici Spor Giyim", + "iot_wash_stains_remover": "Leke çıkarıcı", + "iot_wash_swimsuits_and_bikinis": "Mayolar", + "iot_wash_synthetic": "Sentetikler", + "iot_wash_synthetic_steam": "Sentetikler + Buhar", + "iot_wash_tablecloths": "Masa örtüleri", + "iot_wash_tablecloths_steam": "Masa örtüleri + Buhar", + "iot_wash_technical_fabrics": "Teknik kumaşlar", + "iot_wash_technical_fabrics_zelig": "Teknik kumaşlar", + "iot_wash_technical_jackets": "Teknik ceketler", + "iot_wash_technical_jackets_zelig": "Teknik ceketler", + "iot_wash_trainers": "Spor ayakkabıları", + "iot_wash_whites": "Beyazlar", + "iot_wash_whites_44": "Beyazlar 44'", + "iot_wash_whites_59": "Beyazlar 59'", + "iot_wash_whites_xl": "Beyazlar XL", + "iot_wash_wine_stains": "Şarap lekeleri", + "iot_wash_wool": "Yünlüler", + "jeans": "Kot pantolon", + "jeans_60": "Kot", + "low_dry": "Karışık kurutma", + "mixed": "Karışık", + "mixed_and_colored_59": "Karışık ve Renkliler 59'", + "mixed_steam": "Karışık + Buhar", + "mix_and_colour_59": "Karisik Renkliler 59'", + "mix_and_colour_59_steam": "Karışık ve Renkliler 59' + Buhar", + "night_and_day": "Gece ve Gündüz", + "night_wash": "Gece Programı", + "perfect_59": "Kusursuz 59'", + "perfect_cotton_59": "Kirli Pamuklular 59'", + "perfect_cotton_59_steam": "Kirli Pamuklular 59'", + "perfect_whites_59": "Mükemmel beyazlık 59'", + "rapid_14_min": "Hızlı 14 Dk", + "rapid_30_min": "Hızlı 30 dk", + "rapid_44_min": "Hızlı 44 dk", + "rapid_a_class_60": "Hızlı Sınıf A 60", + "rapid_a_class_60_steam": "Hızlı A Sınıfı 60 + Buhar", + "rapid_wash_and_dry_59_min": "Yıkama ve Kurutma 59'.", + "resistant_cotton": "Pamuklular", + "resistant_cotton_steam": "Pamuklular + Buhar", + "rinse": "Durulama", + "shirts_steam": "Gömlek + Buhar", + "silent_night": "Gece Programı", + "single_item": "Tek Çamaşır", + "single_item_steam": "Tek Çamaşır + Buhar", + "smart_wash": "Akıllı Yıkama", + "soft_care": "Yumuşak Bakım", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "Gunluk Yikama 39'", + "special_39_full_load": "Gunluk Yikama 39'", + "special_39_full_load_steam": "Özel program 39' + Buhar", + "special_49": "Özel 49'", + "sport_39": "Spor 39'", + "sport_plus_29": "Cok Kirli Spor 29\"", + "sport_plus_39": "Col kirli spor 39'", + "steam_39": "Buhar 39'", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro - Pamuklular", + "steam_care_pro_delicates": "Steam Care Pro - Narin çamaşırlar", + "steam_care_pro_synthetic": "Steam Care Pro - Sentetikler", + "steam_hygiene_plus": "Hijyen Artı Buhar ", + "synthetics": "Sentetikler", + "synthetic_and_coloured": "Sentetikler ve Renkliler", + "synthetic_and_coloured_steam": "Sentetikler ve Renkliler + Buhar", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "Toplam Bakım", + "tumbling": "Döndürme", + "wool": "Yünlüler", + "wool_and_delicates_49": "Yünlü/Hassas 49'", + "wool_dry": "Yünlü kurutma", + "wool_soft_care": "Yünlü & Hassas" + }, + "name": "Program" + }, + "programs_ref": { + "state": { + "auto_set": "OTOMATİK AYAR", + "cheese": "Peynir", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Eco modu", + "fruits_and_veg": "Meyve Ve Sebze", + "fruit_and_veg": "Fruit & Veg", + "holiday": "TATİL ", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Hiç mod seçilmedi", + "quick_cool": "HIZLI SOĞUTMA", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + }, + "name": "Program" } }, "select": { @@ -1030,7 +1588,8 @@ "iot_uv_and_dry": "UV + Nem giderici", "iot_uv_and_fan": "UV + Fan", "iot_uv_and_heat": "UV + Isıtma" - } + }, + "name": "Program" }, "programs_ref": { "state": { @@ -1052,7 +1611,8 @@ "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" - } + }, + "name": "Program" }, "remaining_time": { "name": "Kalan süre" diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index 90069c9..9e1260b 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -58,7 +58,8 @@ "19": "烘干", "20": "烘干", "11": "就绪", - "17": "unknown" + "17": "unknown", + "12": "unkown" }, "name": "阶段" }, @@ -306,7 +307,8 @@ "woolmark": "Woolmark", "xxl_load": "XXL Load", "zoom_59": "缩放 59" - } + }, + "name": "程序" }, "room_temperature": { "name": "室温" @@ -319,6 +321,562 @@ }, "fridge_temp": { "name": "冰箱温度" + }, + "programs_ac": { + "state": { + "iot_10_heating": "10°C 加热功能", + "iot_auto": "自动", + "iot_cool": "冷却", + "iot_dry": "烘干", + "iot_fan": "风扇", + "iot_heat": "加热", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "自净", + "iot_self_clean": "自洁", + "iot_self_clean_56": "无菌清洁 56°C", + "iot_simple_start": "立即启动", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + 自动", + "iot_uv_and_cool": "UV + 制冷", + "iot_uv_and_dry": "UV + 减湿器", + "iot_uv_and_fan": "UV + 风扇", + "iot_uv_and_heat": "UV + 加热" + }, + "name": "程序" + }, + "programs_dw": { + "state": { + "59_min": "Rapid 59'", + "auto_care": "Auto Care", + "auto_care_soil": "Auto Care", + "auto_plus": "AutoPlus", + "auto_sensor": "Auto Sensor", + "auto_sensor_soil": "Auto Sensor", + "auto_universal": "自动通用50℃-60℃", + "auto_universal_plus": "自动通用+ 65℃-75℃", + "auto_universal_plus_soil": "自动通用+ 65℃-75℃", + "auto_universal_soil": "自动通用50℃-60℃", + "auto_wash": "自动洗涤", + "auto_wash_soil": "自动洗涤", + "classe_a_59": "A级1小时65℃", + "delicate": "易碎45℃", + "dishwasher_care": "水垢清洁循环", + "eco": "节能", + "eco_asynch": "经济45℃", + "eco_bldc": "经济45℃", + "eco_synch": "经济45℃", + "gentle_wash": "Gentle wash", + "glass": "玻璃", + "glassware": "玻璃器皿45°C", + "glass_care": "Glass Care", + "hygiene": "卫生", + "hygiene_plus": "消毒洗+75°C", + "intensive": "加强 ", + "intensive_rapid": "强化快速", + "iot_auto_sensor": "Auto Sensor", + "iot_auto_universal_soil": "自动通用50℃-60℃", + "iot_auto_wash_soil": "自动洗涤", + "iot_baby_care": "婴儿服", + "iot_breakfast": "早餐", + "iot_checkup": "检测", + "iot_china_crystals": "中式石英器皿", + "iot_classe_a_59": "Rapid 59'", + "iot_cocktail_glasses": "鸡尾酒杯", + "iot_cocktail_glasses_soil": "鸡尾酒杯", + "iot_daily_care": "日常清洗", + "iot_daily_care_soil": "日常清洗", + "iot_delicate": "易碎45℃", + "iot_dinner_for_two": "2人餐", + "iot_dinner_for_two_soil": "2人餐", + "iot_dreft_quick_cycle": "Dreft Quick", + "iot_eco_asynch": "经济45℃", + "iot_eco_bldc": "经济45℃", + "iot_eco_synch": "经济45℃", + "iot_extra_hygiene": "额外消毒", + "iot_fairy_quick_cycle": "Fairy Quick", + "iot_happy_hour": "家庭聚会", + "iot_jar_quick_cycle": "Jar Quick", + "iot_party": "派对用餐具", + "iot_party_soil": "派对用餐具", + "iot_pizza_menu": "Pizza餐具", + "iot_pizza_menu_soil": "Pizza餐具", + "iot_plastic_tupperware": "塑料餐具", + "iot_porcelain": "瓷器", + "iot_power_mix_wash": "混合洗涤", + "iot_power_mix_wash_soil": "混合洗涤", + "iot_prewash": "预洗", + "iot_pyrex_and_glassware": "玻璃器皿", + "iot_rapid_29": "Rapid 29'", + "iot_rapid_39": "快速 39' 60°C", + "iot_single": "单人餐", + "iot_steam": "蒸汽洗75°C", + "iot_super_flash": "超快洗", + "iot_super_wash": "强力洗涤", + "iot_turbopower": "涡轮动力", + "iot_universal": "通用60°C", + "iot_wok_grids_maxi_pans": "特殊锅类", + "iot_wok_grids_maxi_pans_soil": "特殊锅类", + "iot_yes_quick_cycle": "Yes Quick", + "night": "超静55℃", + "prewash": "预洗", + "rapid_20": "Rapid 20'", + "rapid_24": "Rapid 24'", + "rapid_29": "Rapid 29' 50°C", + "rapid_35": "Wash&Dry 35'", + "rapid_39": "快速 39' 60°C", + "rapid_49": "Rapid 49'", + "rapid_59": "Rapid 59'", + "sanitising": "消毒", + "silence": "Silence", + "silent": "夜间", + "silent_care": "Silent Care", + "smart_ai": "Smart AI", + "smart_ai_pro": "Smart AI Pro", + "smart_ai_pro_soil": "Smart AI Pro", + "smart_ai_rapid": "Smart AI Rapid", + "smart_ai_rapid_soil": "Smart AI Rapid", + "smart_ai_soil": "Smart AI", + "special": "特殊", + "special_pw_prz": "特殊", + "steam": "蒸汽洗75°C", + "steam_plus": "蒸汽 + 75°C", + "total_care": "Total Care 50°C", + "ultra_silence": "超静55℃", + "ultra_silent": "超静55℃", + "universal": "通用60°C", + "universal_plus": "通用+ 70°C", + "zoom_39": "Zoom 39 min" + }, + "name": "程序" + }, + "programs_ih": { + "state": { + "iot_special_ash_brown": "灰褐色", + "iot_special_beef_fillet": "牛排", + "iot_special_beef_veal_stew": "炖牛肉和小牛肉", + "iot_special_boiled_rice": "煮饭", + "iot_special_chicken_breast": "鸡胸肉", + "iot_special_chicken_legs": "鸡腿", + "iot_special_chocolate_pudding": "巧克力布丁", + "iot_special_entrecote": "肋眼牛排", + "iot_special_fresh_tuna": "新鲜金枪鱼", + "iot_special_grilled_vegetables": "烤蔬菜", + "iot_special_lamb_cutlet": "羔羊肉", + "iot_special_meatballs": "肉丸", + "iot_special_minestrone": "意式什锦蔬菜汤", + "iot_special_mussels": "贻贝", + "iot_special_omelette": "煎蛋", + "iot_special_pancakes": "煎糕饼", + "iot_special_paris_style_peas": "巴黎式豌豆", + "iot_special_poached_eggs": "水煮蛋", + "iot_special_pork_fillet": "猪肉里脊", + "iot_special_pork_ribs": "猪排骨", + "iot_special_prawns": "明虾", + "iot_special_quinoa": "藜麦", + "iot_special_ratatouille": "普罗旺斯蔬菜杂烩", + "iot_special_salmon_fillet": "三文鱼片", + "iot_special_saute_potatoes": "炒土豆", + "iot_special_scallops": "扇贝", + "iot_special_scrambled_eggs": "炒蛋", + "iot_special_spelt": "斯佩耳特小麦", + "iot_special_veggy_noodles": "蔬菜面", + "iot_special_white_fish_fillet": "白鱼片", + "iot_standard_boiling": "Boiling", + "iot_standard_frying": "炸", + "iot_standard_keep_warm": "保温", + "iot_standard_melting": "融化", + "iot_standard_simmering": "Simmering" + }, + "name": "程序" + }, + "programs_ov": { + "state": { + "bakery": "意大利面和烘焙食品", + "bakery_steam": "烤炉蒸汽", + "bottom_heating": "底部加热 ", + "bottom_heating_fan": "底部加热 + 风扇", + "bread": "面包", + "bread_steam": "蒸烤的面包", + "combi": "Combi", + "convection_fan": "对流 + 风扇", + "convection_fan_turnspit": "对流 + 风扇 + 烤叉", + "conventional": "对流", + "conventional_turnspit": "对流 + 烤叉", + "defrost": "解冻", + "descaling": "除垢", + "fish": "鱼", + "fish_steam": "蒸鱼", + "grill_cata": "烤架", + "grill_fan_cata": "烤架风扇", + "grill_fan_pyro": "烤架 + 风扇", + "grill_pyro": "烤架", + "h20_clean": "H2O-Clean", + "iot_bread": "面包", + "iot_h20_clean": "h2O clean", + "leavening": "发酵", + "low_temp_cooking": "低温烹饪", + "low_temp_cooking_fish": "低温烹饪 - 鱼类", + "low_temp_cooking_fish_steam": "低温烹饪 - 蒸鱼", + "low_temp_cooking_meat": "低温烹饪 - 肉类", + "low_temp_cooking_meat_steam": "低温烹饪 - 蒸肉", + "low_temp_cooking_steam": "低温蒸汽烹饪", + "meat": "肉", + "meat_steam": "肉类蒸汽", + "multi_level": "多层", + "paella": "Paella", + "pasta_and_bakery": "意大利面和烘焙食品", + "pizza": "Pizza", + "pyrolysis": "热解", + "pyrolysis_plus": "热解 +", + "red_meat": "红肉", + "red_meat_steam": "蒸红肉", + "regenerate": "再加热", + "soft_plus": "软+", + "super_grill": "超级烤架", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "蔬菜", + "vegetables_cata": "蔬菜", + "vegetables_pyro": "蔬菜", + "water_discharge": "排水", + "white_meat": "白肉", + "white_meat_steam": "蒸白肉" + }, + "name": "程序" + }, + "programs_wm": { + "state": { + "20_degrees_coloured_cottons": "20° 彩色和棉花", + "20_degrees_new_energy_label": "20°C", + "active_steam": "蒸汽", + "active_wash": "活化洗涤", + "active_wash_steam": "活化洗涤", + "allergy_care": "过敏保养", + "allergy_care_pro": "Allergy Care Pro", + "all_in_one_49": "一体化 49'", + "all_in_one_59": "一体化 59'", + "all_in_one_59_steam": "活化洗涤 + 蒸汽", + "autocare": "自动护理", + "autoclean": "滚筒清洁", + "baby_60": "婴儿服60℃", + "care_14": "经济保养 14 分", + "care_30": "经济保养 30 分", + "care_44": "经济保养 44 分", + "checkup": "检测", + "colour_59": "彩色衣物 59'", + "colour_59_steam": "Coloureds 59' + 蒸汽", + "cottons": "棉布", + "cottons_prewash": "棉麻+预洗", + "cottons_steam": "棉质 + 蒸汽", + "cotton_care_59": "棉麻洗59\"", + "delicate_59": "精致 59'", + "delicate_silk": "精致丝绸", + "delicate_silk_steam": "精致丝绸 + 蒸汽", + "delicati_59": "精致 59'", + "delicati_59_steam": "精致 59'", + "drain_spin": "脱水 + 甩干", + "easy_iron": "易熨", + "eco_40_60_new_energy_label": "经济 40-60", + "extra_care": "额外保养", + "fitness": "健身衣物", + "fitness_care": "健身衣物", + "fresh_care": "清新护理", + "fresh_care_steam": "清新护理 + 蒸汽", + "handwash_wool": "手洗和羊毛衣物", + "high_dry": "棉质衣物烘干", + "hqd_20_degrees": "棉质 20℃", + "hqd_allergy": "过敏保养", + "hqd_autoclean": "滚筒清洁", + "hqd_babycare": "婴儿服", + "hqd_checkup": "检测", + "hqd_cottons": "棉布", + "hqd_delicate": "精致衣物", + "hqd_delicate_cradle": "精致衣物", + "hqd_dry": "棉质衣物烘干", + "hqd_dry_synthetics": "混合材质烘干", + "hqd_duvet": "羽绒服", + "hqd_eco_40_60_degrees": "经济 40-60", + "hqd_handwash_wool": "羊毛衣物", + "hqd_i_refresh": "i-Refresh", + "hqd_mix": "混合", + "hqd_quick_15": "快速 15'", + "hqd_quick_wash_57": "快速洗涤 57 分钟", + "hqd_rapid_wash_and_dry": "洗涤与烘干", + "hqd_refresh": "Refresh", + "hqd_rinse": "漂洗", + "hqd_shirts": "衬衫", + "hqd_smart": "Smart A.I.", + "hqd_spin": "甩干", + "hqd_sport": "运动装", + "hqd_super_fast": "快速 39’", + "hqd_synthetic_and_coloured": "合成纤维", + "hygiene_59": "卫生增强 59 分", + "hygiene_60": "卫生 60°", + "hygiene_plus_59": "卫生增强 59 分", + "hygiene_plus_59_min": "卫生增强 59 分", + "hygiene_pro_49_min": "Hygiene Pro 49 min", + "hygiene_pro_steam": "Hygiene Pro + 蒸汽", + "intensive_40": "加强 40°C", + "intensive_40_steam": "Intensive 40°C + 蒸汽", + "iot_active_steam": "蒸汽", + "iot_active_wash_steam": "活化洗涤", + "iot_allergy_care_pro": "Allergy Care Pro", + "iot_all_in_one_59_steam": "活化洗涤 + 蒸汽", + "iot_checkup": "检测", + "iot_colour_59_steam": "Coloureds 59' + 蒸汽", + "iot_cottons_steam": "棉质 + 蒸汽", + "iot_delicate_silk_steam": "精致丝绸 + 蒸汽", + "iot_delicati_59_steam": "精致 59'", + "iot_dry_air_refresh": "空气清新", + "iot_dry_anti_mites": "防螨", + "iot_dry_baby": "婴儿", + "iot_dry_backpacks": "背包", + "iot_dry_bathrobe": "浴衣和透气织物", + "iot_dry_bed_linen": "床单", + "iot_dry_cotton_dry": "棉质衣物烘干", + "iot_dry_cuddly_toys": "毛绒玩具", + "iot_dry_curtains": "窗帘", + "iot_dry_dehumidifier": "除湿机", + "iot_dry_delicates_antiallergy": "精致衣物 - 抗过敏", + "iot_dry_delicate_tablecloths": "精致桌布", + "iot_dry_denim_jeans": "牛仔布 - 牛仔裤", + "iot_dry_easy_iron_cotton": "轻松熨烫 - 棉布", + "iot_dry_easy_iron_synthetics": "轻松熨烫 - 合成纤维", + "iot_dry_gym_fit": "运动 - 健身衣物", + "iot_dry_lingerie": "内衣", + "iot_dry_mixed_dry": "混合材质烘干", + "iot_dry_rapid_60_min_delicates": "快速 60' - 精致衣物", + "iot_dry_shirts": "衬衫", + "iot_dry_swimsuits_and_bikinis": "泳衣", + "iot_dry_synthetics": "合成纤维烘干", + "iot_dry_synthetic_dry": "合成纤维烘干", + "iot_dry_tablecloths": "桌布", + "iot_dry_technical_fabrics": "工艺织物", + "iot_dry_warm_embrace": "中温烘干", + "iot_dry_wool_dry": "羊毛衣物烘干", + "iot_easy_iron": "易熨", + "iot_fresh_care_steam": "清新护理 + 蒸汽", + "iot_hygiene_pro_steam": "Hygiene Pro + 蒸汽", + "iot_intensive_40_steam": "Intensive 40°C + 蒸汽", + "iot_mixed_steam": "混合 + 蒸汽", + "iot_mix_and_colour_59_steam": "混合材质和彩色 59' + 蒸汽", + "iot_perfect_cotton_59_steam": "完美棉质 59 分", + "iot_rapid_a_class_60_steam": "快速 A 级 60 + 蒸汽", + "iot_resistant_cotton_steam": "棉质 + 蒸汽", + "iot_shirts_steam": "衬衫 + 蒸汽", + "iot_single_item_steam": "单件物品 + 蒸汽", + "iot_smart_wash": "智能洗涤", + "iot_soft_care_steam": "Soft Care + Steam", + "iot_special_39_full_load_steam": "专用 39' + 蒸汽", + "iot_steam_hygiene_plus": "卫生增强蒸汽 ", + "iot_synthetic_and_coloured_steam": "化纤和彩色 + 蒸汽", + "iot_wash_and_dry": "洗涤与烘干", + "iot_wash_anti_mites": "防螨", + "iot_wash_anti_odor": "防异味", + "iot_wash_ariel_clean_cycle": "Ariel Ultimate Clean", + "iot_wash_ariel_cold_cycle": "Ariel Cold Clean", + "iot_wash_ariel_fresh_cycle": "Ariel Fresh Clean", + "iot_wash_baby_sanitizer": "消毒", + "iot_wash_baby_sanitizer_steam": "婴儿用品消毒 + 蒸汽", + "iot_wash_backpacks": "背包", + "iot_wash_backpacks_zelig": "背包", + "iot_wash_bathrobe": "浴袍和毛巾", + "iot_wash_bathrobe_steam": "浴衣 + 蒸汽", + "iot_wash_bed_linen": "床单", + "iot_wash_bed_linen_steam": "床单 + 蒸汽", + "iot_wash_bed_linen_zelig": "床单", + "iot_wash_big_single_load": "单件大衣物", + "iot_wash_bleaching": "漂白", + "iot_wash_blood_stains": "血迹", + "iot_wash_cashmere": "羊绒", + "iot_wash_chocolate_stains": "巧克力渍", + "iot_wash_cold_wash": "冷洗", + "iot_wash_colored": "彩色", + "iot_wash_colored_anti_stain": "去除彩色织物上的污渍", + "iot_wash_colored_delicate": "彩色精致", + "iot_wash_coloured": "颜色", + "iot_wash_coloured_bed_linen": "彩色床单", + "iot_wash_coloured_bed_linen_steam": "彩色床单 + 蒸汽", + "iot_wash_coloured_curtains": "彩色窗帘", + "iot_wash_coloured_shirts": "彩色衬衫", + "iot_wash_coloured_shirts_steam": "彩色衬衫 + 蒸汽", + "iot_wash_coloured_steam": "彩色 + 蒸汽", + "iot_wash_coloured_tableclothes": "彩色桌布", + "iot_wash_coloured_tableclothes_steam": "彩色桌布 + 蒸汽", + "iot_wash_cotton": "棉布", + "iot_wash_cotton_steam": "棉质 + 蒸汽", + "iot_wash_cuddly_toys": "毛绒玩具", + "iot_wash_curtains": "窗帘", + "iot_wash_curtains_steam": "窗帘 + 蒸汽", + "iot_wash_curtains_zelig": "窗帘", + "iot_wash_dark": "深色衣物", + "iot_wash_darks_and_coloured_44": "深色与彩色 44'", + "iot_wash_darks_and_coloured_59": "深色与彩色 59'", + "iot_wash_darks_and_coloured_xl": "深色和彩色 XL", + "iot_wash_dark_steam": "深色物品 + 蒸汽", + "iot_wash_dash_clean_cycle": "Dash Ultimate Clean", + "iot_wash_dash_cold_cycle": "Dash Cold Clean", + "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", + "iot_wash_delicate": "精致衣物", + "iot_wash_delicate_antiallergy": "精致衣物的抗过敏程序", + "iot_wash_delicate_antiallergy_steam": "抗过敏精致衣物 + 蒸汽", + "iot_wash_delicate_antiallergy_zelig": "精致衣物的抗过敏程序", + "iot_wash_delicate_colors": "颜色精致衣物", + "iot_wash_delicate_colors_steam": "彩色 + 蒸汽", + "iot_wash_delicate_dark": "精致深色", + "iot_wash_delicate_steam": "精致衣物 + 蒸汽", + "iot_wash_delicate_tablecloths": "精致桌布", + "iot_wash_delicate_tablecloths_steam": "精致桌布 + 蒸汽", + "iot_wash_delicate_whites": "精致白色衣物", + "iot_wash_denim_jeans": "牛仔布 - 牛仔裤", + "iot_wash_diving_suits": "潜水服", + "iot_wash_diving_suits_zelig": "潜水服", + "iot_wash_down_jackets": "羽绒服", + "iot_wash_down_jackets_zelig": "羽绒服", + "iot_wash_duvet": "羽绒服", + "iot_wash_fruit_stains": "水果渍", + "iot_wash_gym_fit": "运动 - 健身衣物", + "iot_wash_handwash": "手洗", + "iot_wash_handwash_colored": "彩色手洗", + "iot_wash_handwash_dark": "深色手洗", + "iot_wash_lingerie": "内衣", + "iot_wash_masks_refresh": "口罩清洗", + "iot_wash_masks_sanification": "口罩消毒", + "iot_wash_masks_sanification_steam": "口罩消毒 + 蒸汽", + "iot_wash_mats": "地毯", + "iot_wash_men_s_trousers": "裤子", + "iot_wash_mixed": "混合材质", + "iot_wash_mixed_steam": "混合 + 蒸汽", + "iot_wash_mix_and_coloured_44": "混合材质和彩色 44'", + "iot_wash_mix_and_coloured_59": "混合材质和彩色 59'", + "iot_wash_mix_and_coloured_xl": "混合材质和彩色 XL", + "iot_wash_new_clothes": "新衣物", + "iot_wash_perfect_white": "完美白色", + "iot_wash_perfect_white_steam": "完美白色 + 蒸汽", + "iot_wash_pets": "宠物用品", + "iot_wash_pets_hair_removal": "宠物毛发清除", + "iot_wash_pets_odours_stains_removal": "宠物异味和污渍清除", + "iot_wash_pets_steam": "宠物用品", + "iot_wash_playsuits": "运动装", + "iot_wash_playsuits_steam": "运动装 + 蒸汽", + "iot_wash_quick_drum_cleaner": "快速滚筒清洁器", + "iot_wash_rapid_14": "快速 14’", + "iot_wash_rapid_30": "快速 30’", + "iot_wash_rapid_44": "快速 44’", + "iot_wash_rapid_59": "快速 59’", + "iot_wash_rapid_59_steam": "快速 59' + 蒸汽", + "iot_wash_refresh_14_min": "清新 14'", + "iot_wash_resistant_colored": "韧性彩色衣物", + "iot_wash_resistant_dark": "韧性深色衣物", + "iot_wash_resistant_whites": "韧性白色衣物", + "iot_wash_rinse": "漂洗", + "iot_wash_shirts": "衬衫", + "iot_wash_shirts_steam": "衬衫 + 蒸汽", + "iot_wash_silk": "丝绸", + "iot_wash_ski_suit": "滑雪服", + "iot_wash_ski_suit_zelig": "滑雪服", + "iot_wash_spin": "甩干", + "iot_wash_sport": "运动装", + "iot_wash_sport_anti_odor": "防体味运动服", + "iot_wash_sport_anti_odor_zelig": "防体味运动服", + "iot_wash_stains_remover": "去污", + "iot_wash_swimsuits_and_bikinis": "泳衣", + "iot_wash_synthetic": "合成纤维", + "iot_wash_synthetic_steam": "合成纤维 + 蒸汽", + "iot_wash_tablecloths": "桌布", + "iot_wash_tablecloths_steam": "桌布 + 蒸汽", + "iot_wash_technical_fabrics": "工艺织物", + "iot_wash_technical_fabrics_zelig": "工艺织物", + "iot_wash_technical_jackets": "冲锋衣", + "iot_wash_technical_jackets_zelig": "冲锋衣", + "iot_wash_trainers": "运动鞋", + "iot_wash_whites": "白色衣物", + "iot_wash_whites_44": "白色衣物 44'", + "iot_wash_whites_59": "白色衣物 59'", + "iot_wash_whites_xl": "白色衣物 XL", + "iot_wash_wine_stains": "葡萄酒渍", + "iot_wash_wool": "羊毛衣物", + "jeans": "牛仔裤", + "jeans_60": "牛仔裤", + "low_dry": "混合材质烘干", + "mixed": "混合材质", + "mixed_and_colored_59": "混合材质和彩色 59'", + "mixed_steam": "混合 + 蒸汽", + "mix_and_colour_59": "混合和彩色 59 分", + "mix_and_colour_59_steam": "混合材质和彩色 59' + 蒸汽", + "night_and_day": "晚间和日间", + "night_wash": "过夜循环", + "perfect_59": "完美 59'", + "perfect_cotton_59": "完美棉质 59 分", + "perfect_cotton_59_steam": "完美棉质 59 分", + "perfect_whites_59": "完美护色 59'", + "rapid_14_min": "快洗14分钟", + "rapid_30_min": "30分钟快洗", + "rapid_44_min": "44分钟快洗", + "rapid_a_class_60": "快速 A 级 60", + "rapid_a_class_60_steam": "快速 A 级 60 + 蒸汽", + "rapid_wash_and_dry_59_min": "洗涤并烘干 59'", + "resistant_cotton": "棉布", + "resistant_cotton_steam": "棉质 + 蒸汽", + "rinse": "漂洗", + "shirts_steam": "衬衫 + 蒸汽", + "silent_night": "过夜循环", + "single_item": "单件商品", + "single_item_steam": "单件物品 + 蒸汽", + "smart_wash": "智能洗涤", + "soft_care": "柔软保养", + "soft_care_steam": "Soft Care + Steam", + "soft_care_steam_title": "Soft Care + Steam", + "special_39": "每日 39 分", + "special_39_full_load": "每日 39 分", + "special_39_full_load_steam": "专用 39' + 蒸汽", + "special_49": "专用 49'", + "sport_39": "运动装 39'", + "sport_plus_29": "运动增强 29 分", + "sport_plus_39": "运动增强 39 分", + "steam_39": "蒸汽 39'", + "steam_care_pro": "Steam Care Pro", + "steam_care_pro_cotton": "Steam Care Pro - 棉", + "steam_care_pro_delicates": "Steam Care Pro - 精致衣物", + "steam_care_pro_synthetic": "Steam Care Pro - 化纤", + "steam_hygiene_plus": "卫生增强蒸汽 ", + "synthetics": "合成纤维", + "synthetic_and_coloured": "合成纤维和彩色衣物", + "synthetic_and_coloured_steam": "化纤和彩色 + 蒸汽", + "tailored_resistant_cotton": "Tailored Resistant Cotton", + "tailored_synthetic_and_coloured": "Tailored Synthetic Colored", + "total_care": "全面护理", + "tumbling": "滚筒烘干", + "wool": "羊毛衣物", + "wool_and_delicates_49": "羊毛", + "wool_dry": "羊毛衣物烘干", + "wool_soft_care": "羊毛" + }, + "name": "程序" + }, + "programs_ref": { + "state": { + "auto_set": "AUTO-SET(自动设置)", + "cheese": "奶酪", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Eco 模式", + "fruits_and_veg": "Fruit&Veg(水果和蔬菜)", + "fruit_and_veg": "Fruit & Veg", + "holiday": "HOLIDAY(假日模式)", + "keep_fresh": "0° Fresh", + "no_mode_selected": "未选择模式", + "quick_cool": "QUICK COOL(快速冷却)", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL(超级冷却)", + "super_freeze": "SUPER FREEZE(超级冷冻)", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + }, + "name": "程序" } }, "select": { @@ -1030,7 +1588,8 @@ "iot_uv_and_dry": "UV + 减湿器", "iot_uv_and_fan": "UV + 风扇", "iot_uv_and_heat": "UV + 加热" - } + }, + "name": "程序" }, "programs_ref": { "state": { @@ -1052,7 +1611,8 @@ "super_freeze": "SUPER FREEZE(超级冷冻)", "tea": "Cold drinks or Beverages", "zero_fresh": "0° Fresh" - } + }, + "name": "程序" }, "remaining_time": { "name": "剩余时间" diff --git a/info.md b/info.md index ae81957..c5824fc 100644 --- a/info.md +++ b/info.md @@ -62,6 +62,7 @@ Support has been confirmed for these models, but many more will work. Please add - Haier XIB 3B2SFS-80 - Haier XIB 6B2D3FB - Candy BCTDH7A1TE +- Candy CCE4T620EWU - Candy CIS633SCTTWIFI - Candy CSOE C10DE-80 - Candy ROE H9A3TCEX-S diff --git a/scripts/generate_translation.py b/scripts/generate_translation.py index 6a57d05..01164af 100755 --- a/scripts/generate_translation.py +++ b/scripts/generate_translation.py @@ -40,7 +40,13 @@ PROGRAMS = { "programs_ref": "PROGRAMS.REF", }, "sensor": { + "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", + "programs_ref": "PROGRAMS.REF", }, } @@ -161,6 +167,8 @@ NAMES = { "programs_ov": "WC.SET_PROGRAM.PROGRAM", "programs_td": "WC.SET_PROGRAM.PROGRAM", "programs_wm": "WC.SET_PROGRAM.PROGRAM", + "programs_ac": "WC.SET_PROGRAM.PROGRAM", + "programs_ref": "WC.SET_PROGRAM.PROGRAM", "eco_pilot": "AC.PROGRAM_DETAIL.ECO_PILOT", "remaining_time": "ENROLLMENT_COMMON.GENERAL.REMAINING_TIME", "ref_zones": "IH.COMMON.COIL", @@ -212,6 +220,13 @@ NAMES = { ], "freezer_temp": "REF_CMD&CTRL.TEMPERATURE_DRAWER_FREEZER.FREEZER_TEMPERATURE_TITLE", "fridge_temp": "REF_CMD&CTRL.TEMPERATURE_DRAWER_FRIDGE.FRIDGE_TEMPERATURE_TITLE", + "programs_dw": "WC.SET_PROGRAM.PROGRAM", + "programs_ih": "WC.SET_PROGRAM.PROGRAM", + "programs_ov": "WC.SET_PROGRAM.PROGRAM", + "programs_td": "WC.SET_PROGRAM.PROGRAM", + "programs_wm": "WC.SET_PROGRAM.PROGRAM", + "programs_ac": "WC.SET_PROGRAM.PROGRAM", + "programs_ref": "WC.SET_PROGRAM.PROGRAM", }, "number": { "power_management": "HINTS.COOKING_WITH_INDUCTION.POWER_MANAGEMENT", -- 2.39.5 From 57ecd7c3a5652343896054eee843b3ba652f2273 Mon Sep 17 00:00:00 2001 From: pksobon <55964396+pksobon@users.noreply.github.com> Date: Tue, 30 May 2023 05:22:02 +0200 Subject: [PATCH 116/205] Adding HO integration (#56) * Update button.py * Update number.py * Update sensor.py --- custom_components/hon/button.py | 14 +++++++ custom_components/hon/number.py | 14 +++++++ custom_components/hon/sensor.py | 65 +++++++++++++++++++++++++++++++++ 3 files changed, 93 insertions(+) diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index a4d089d..1309914 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -35,6 +35,20 @@ BUTTONS: dict[str, tuple[ButtonEntityDescription, ...]] = { translation_key="stop_program", ), ), + "HO": ( + ButtonEntityDescription( + key="startProgram", + name="Start Program", + icon="mdi:hvac", + translation_key="start_program", + ), + ButtonEntityDescription( + key="stopProgram", + name="Stop Program", + icon="mdi:hvac-off", + translation_key="stop_program", + ), + ), } diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index 0d6268b..ad1c6bc 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -162,6 +162,20 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { translation_key="freezer_temp_sel", ), ), + "HO": ( + HonNumberEntityDescription( + key="startProgram.windSpeed", + name="Wind speed", + icon="mdi:fan", + entity_category=EntityCategory.CONFIG, + ), + HonNumberEntityDescription( + key="startProgram.lightStatus", + name="Light status", + icon="mdi:lightbulb", + entity_category=EntityCategory.CONFIG, + ), + ), } NUMBERS["WD"] = unique_entities(NUMBERS["WM"], NUMBERS["TD"]) diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 3ec086f..31affd8 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -535,6 +535,71 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { key="errors", name="Error", icon="mdi:math-log", translation_key="errors" ), ), + "HO": ( + HonSensorEntityDescription( + key="delayTime", + name="Delay time", + icon="mdi:clock-start", + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=UnitOfTime.MINUTES, + ), + HonSensorEntityDescription( + key="delayTimeStatus", + name="Delay time status", + icon="mdi:clock-start", + ), + HonSensorEntityDescription( + key="errors", + name="Errors", + icon="mdi:alert-circle", + ), + HonSensorEntityDescription( + key="filterCleaningAlarmStatus", + name="Filter Cleaning Alarm Status", + ), + HonSensorEntityDescription( + key="filterCleaningStatus", + name="Filter Cleaning Status", + ), + HonSensorEntityDescription( + key="lastWorkTime", + name="Last Work Time", + icon="mdi:clock-start", + ), + HonSensorEntityDescription( + key="lightStatus", + name="Light Status", + icon="mdi:lightbulb", + ), + HonSensorEntityDescription( + key="machMode", + name="Mach Mode", + ), + HonSensorEntityDescription( + key="onOffStatus", + name="On / Off Status", + icon="mdi:lightbulb", + ), + HonSensorEntityDescription( + key="quickDelayTimeStatus", + name="Quick Delay Time Status", + ), + HonSensorEntityDescription( + key="rgbLightColors", + name="RGB Light Color", + icon="mdi:lightbulb", + ), + HonSensorEntityDescription( + key="rgbLightStatus", + name="RGB Light Status", + icon="mdi:lightbulb", + ), + HonSensorEntityDescription( + key="windSpeed", + name="Wind Speed", + icon="mdi:fan", + ), + ), } SENSORS["WD"] = unique_entities(SENSORS["WM"], SENSORS["TD"]) -- 2.39.5 From 1a50e8112df2b9fd34f53087005ee326782a0846 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Tue, 30 May 2023 05:33:11 +0200 Subject: [PATCH 117/205] Update readme, fix typo --- README.md | 33 ++++++++++++++++++++++ custom_components/hon/const.py | 2 +- custom_components/hon/translations/cs.json | 2 +- custom_components/hon/translations/de.json | 2 +- custom_components/hon/translations/el.json | 2 +- custom_components/hon/translations/en.json | 2 +- custom_components/hon/translations/es.json | 2 +- custom_components/hon/translations/fr.json | 2 +- custom_components/hon/translations/he.json | 2 +- custom_components/hon/translations/hr.json | 2 +- custom_components/hon/translations/it.json | 2 +- custom_components/hon/translations/nl.json | 2 +- custom_components/hon/translations/pl.json | 2 +- custom_components/hon/translations/pt.json | 2 +- custom_components/hon/translations/ro.json | 2 +- custom_components/hon/translations/ru.json | 2 +- custom_components/hon/translations/sk.json | 2 +- custom_components/hon/translations/sl.json | 2 +- custom_components/hon/translations/sr.json | 2 +- custom_components/hon/translations/tr.json | 2 +- custom_components/hon/translations/zh.json | 2 +- info.md | 7 ++++- 22 files changed, 59 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index df10313..bd636e0 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.co - [Hob](https://github.com/Andre0512/hon#hob) [BETA] - [Air conditioner](https://github.com/Andre0512/hon#air-conditioner) [BETA] - [Fridge](https://github.com/Andre0512/hon#fridge) [BETA] +- [Hood](https://github.com/Andre0512/hon#hood) [BETA] ## Installation **Method 1:** [![Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?owner=Andre0512&repository=hon&category=integration) @@ -62,9 +63,12 @@ Translation of internal names like programs are available for all languages whic Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). - Haier AD105S2SM3FA - Haier AS25PBAHRA +- Haier AS25S2SF1FA-WH - Haier AS25TADHRA-2 - Haier AS35TADHRA-2 - Haier EG9012B19SU1JD +- Haier HA2MTSJ68MC +- Haier HADG6DS46BWIFI - Haier HD80-A3959 - Haier HW90-B14TEAM5 - Haier HW100-B14959U1 @@ -76,6 +80,7 @@ Support has been confirmed for these models, but many more will work. Please add - Candy CCE4T620EWU - Candy CIS633SCTTWIFI - Candy CSOE C10DE-80 +- Candy RO44 1286DWMC4-07 - Candy ROE H9A3TCEX-S - Candy RPW41066BWMR/1-S - Hoover H-WASH 500 @@ -225,6 +230,34 @@ For every device exists a hidden button which can be used to log all infos of yo | Rinse Aid | `spray-bottle` | `binary_sensor` | `rinseAidStatus` | | Salt | `shaker-outline` | `binary_sensor` | `saltStatus` | +### Hood +#### Controls +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Start Program | `hvac` | `button` | `startProgram` | +| Stop Program | `hvac-off` | `button` | `stopProgram` | +#### Configs +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Light status | `lightbulb` | `number` | `startProgram.lightStatus` | +| Wind speed | `fan` | `number` | `startProgram.windSpeed` | +#### Sensors +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Delay time | `clock-start` | `sensor` | `delayTime` | +| Delay time status | `clock-start` | `sensor` | `delayTimeStatus` | +| Errors | `alert-circle` | `sensor` | `errors` | +| Filter Cleaning Alarm Status | | `sensor` | `filterCleaningAlarmStatus` | +| Filter Cleaning Status | | `sensor` | `filterCleaningStatus` | +| Last Work Time | `clock-start` | `sensor` | `lastWorkTime` | +| Light Status | `lightbulb` | `sensor` | `lightStatus` | +| Mach Mode | | `sensor` | `machMode` | +| On / Off Status | `lightbulb` | `sensor` | `onOffStatus` | +| Quick Delay Time Status | | `sensor` | `quickDelayTimeStatus` | +| RGB Light Color | `lightbulb` | `sensor` | `rgbLightColors` | +| RGB Light Status | `lightbulb` | `sensor` | `rgbLightStatus` | +| Wind Speed | `fan` | `sensor` | `windSpeed` | + ### Hob #### Controls | Name | Icon | Entity | Key | diff --git a/custom_components/hon/const.py b/custom_components/hon/const.py index 7ee030e..6c14aa9 100644 --- a/custom_components/hon/const.py +++ b/custom_components/hon/const.py @@ -111,7 +111,7 @@ TUMBLE_DRYER_PR_PHASE = { "2": "WASHING_CMD&CTRL.PHASE_DRYING.TITLE", "3": "TD_CMD&CTRL.STATUS_PHASE.PHASE_COOLDOWN", "11": "WASHING_CMD&CTRL.PHASE_READY.TITLE", - "12": "unkown", + "12": "unknown", "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", diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index b4ddabe..b4b0174 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -59,7 +59,7 @@ "20": "Sušení", "11": "Připraveno", "17": "unknown", - "12": "unkown" + "12": "unknown" }, "name": "Fáze" }, diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index 05df9e2..1e5de11 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -59,7 +59,7 @@ "20": "Trocknen", "11": "Bereit", "17": "unknown", - "12": "unkown" + "12": "unknown" }, "name": "Phase" }, diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index 4b407ed..8b44d1d 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -59,7 +59,7 @@ "20": "Στέγνωμα", "11": "Ετοιμος", "17": "unknown", - "12": "unkown" + "12": "unknown" }, "name": "Φάση" }, diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 01a9e1e..40ee14b 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -127,7 +127,7 @@ "20": "Drying", "11": "Ready", "17": "unknown", - "12": "unkown" + "12": "unknown" }, "name": "Phase" }, diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index 46823a6..d328fb1 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -59,7 +59,7 @@ "20": "Secado", "11": "Listo", "17": "unknown", - "12": "unkown" + "12": "unknown" }, "name": "Fase" }, diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index 86712cb..c114d0e 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -59,7 +59,7 @@ "20": "Séchage", "11": "Prêt", "17": "unknown", - "12": "unkown" + "12": "unknown" }, "name": "Phase" }, diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index d24b548..95543ba 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -59,7 +59,7 @@ "20": "יִבּוּשׁ", "11": "מוּכָן", "17": "unknown", - "12": "unkown" + "12": "unknown" }, "name": "שלב" }, diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index 483503e..cf4a912 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -59,7 +59,7 @@ "20": "Sušenje", "11": "Spremno", "17": "unknown", - "12": "unkown" + "12": "unknown" }, "name": "Faza" }, diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index 36e75e7..3528120 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -117,7 +117,7 @@ "20": "Asciugatura", "11": "Pronta", "17": "unknown", - "12": "unkown" + "12": "unknown" }, "name": "Fase" }, diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index 15e03bf..931ccd0 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -59,7 +59,7 @@ "20": "Drogen", "11": "Klaar", "17": "unknown", - "12": "unkown" + "12": "unknown" }, "name": "Fase" }, diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index d6cd63d..4ca0b36 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -59,7 +59,7 @@ "20": "Suszenie", "11": "Gotowe", "17": "unknown", - "12": "unkown" + "12": "unknown" }, "name": "Faza" }, diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index 4bdd1a4..0828ace 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -59,7 +59,7 @@ "20": "Secagem", "11": "Pronto", "17": "unknown", - "12": "unkown" + "12": "unknown" }, "name": "Fase" }, diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index bd2aa23..496959f 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -59,7 +59,7 @@ "20": "Uscare", "11": "Pregătit", "17": "unknown", - "12": "unkown" + "12": "unknown" }, "name": "Fază" }, diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index dfa0edb..fda96d3 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -59,7 +59,7 @@ "20": "Сушка", "11": "Готово", "17": "unknown", - "12": "unkown" + "12": "unknown" }, "name": "Фаза" }, diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index 8f68b30..c362022 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -59,7 +59,7 @@ "20": "Sušenie", "11": "Pripravené", "17": "unknown", - "12": "unkown" + "12": "unknown" }, "name": "Fáza" }, diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index c6fe85b..9ecfb4a 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -59,7 +59,7 @@ "20": "Sušenje", "11": "Pripravljen", "17": "unknown", - "12": "unkown" + "12": "unknown" }, "name": "Faza" }, diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index 845007d..0f6d151 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -59,7 +59,7 @@ "20": "Sušenje", "11": "Spremno", "17": "unknown", - "12": "unkown" + "12": "unknown" }, "name": "Faza" }, diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index 1642ab5..3ce58af 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -59,7 +59,7 @@ "20": "Kurutma", "11": "Hazır", "17": "unknown", - "12": "unkown" + "12": "unknown" }, "name": "Aşama" }, diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index 9e1260b..2dd5af7 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -59,7 +59,7 @@ "20": "烘干", "11": "就绪", "17": "unknown", - "12": "unkown" + "12": "unknown" }, "name": "阶段" }, diff --git a/info.md b/info.md index c5824fc..73f8e0a 100644 --- a/info.md +++ b/info.md @@ -9,10 +9,11 @@ Support for home appliances of Haier's mobile app hOn. - [Tumble Dryer](https://github.com/Andre0512/hon#tumble-dryer) - [Washer Dryer](https://github.com/Andre0512/hon#washer-dryer) - [Oven](https://github.com/Andre0512/hon#oven) -- [Hob](https://github.com/Andre0512/hon#hob) - [Dish Washer](https://github.com/Andre0512/hon#dish-washer) +- [Hob](https://github.com/Andre0512/hon#hob) [BETA] - [Air conditioner](https://github.com/Andre0512/hon#air-conditioner) [BETA] - [Fridge](https://github.com/Andre0512/hon#fridge) [BETA] +- [Hood](https://github.com/Andre0512/hon#hood) [BETA] ## Configuration @@ -51,9 +52,12 @@ Translation of internal names like programs are available for all languages whic Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). - Haier AD105S2SM3FA - Haier AS25PBAHRA +- Haier AS25S2SF1FA-WH - Haier AS25TADHRA-2 - Haier AS35TADHRA-2 - Haier EG9012B19SU1JD +- Haier HA2MTSJ68MC +- Haier HADG6DS46BWIFI - Haier HD80-A3959 - Haier HW90-B14TEAM5 - Haier HW100-B14959U1 @@ -65,6 +69,7 @@ Support has been confirmed for these models, but many more will work. Please add - Candy CCE4T620EWU - Candy CIS633SCTTWIFI - Candy CSOE C10DE-80 +- Candy RO44 1286DWMC4-07 - Candy ROE H9A3TCEX-S - Candy RPW41066BWMR/1-S - Hoover H-WASH 500 -- 2.39.5 From 228cf3cf7303a9968455b2e4560f47212d92f8bf Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Wed, 7 Jun 2023 02:33:53 +0200 Subject: [PATCH 118/205] Bump version --- custom_components/hon/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index eb9460c..55f2d4b 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -9,7 +9,7 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": [ - "pyhOn==0.12.0" + "pyhOn==0.12.1" ], - "version": "0.8.0-beta.8" + "version": "0.8.0-beta.9" } -- 2.39.5 From c433714a9403ae480e21a2ff5e7b8886568c09ef Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Thu, 8 Jun 2023 19:59:43 +0200 Subject: [PATCH 119/205] Refactor and update for lagging climate --- custom_components/hon/climate.py | 97 ++++++++++++++++++-------------- 1 file changed, 55 insertions(+), 42 deletions(-) diff --git a/custom_components/hon/climate.py b/custom_components/hon/climate.py index d8d6f99..c0166de 100644 --- a/custom_components/hon/climate.py +++ b/custom_components/hon/climate.py @@ -1,8 +1,6 @@ import logging from dataclasses import dataclass -from pyhon.appliance import HonAppliance - from homeassistant.components.climate import ( ClimateEntity, ClimateEntityDescription, @@ -22,6 +20,8 @@ from homeassistant.const import ( TEMP_CELSIUS, ) from homeassistant.core import callback +from pyhon.appliance import HonAppliance + from .const import HON_HVAC_MODE, HON_FAN, HON_HVAC_PROGRAM, DOMAIN from .hon import HonEntity @@ -103,12 +103,12 @@ class HonACClimateEntity(HonEntity, ClimateEntity): self._attr_max_temp = device.settings["settings.tempSel"].max self._attr_min_temp = device.settings["settings.tempSel"].min - self._attr_hvac_modes = [HVACMode.OFF] + [ - HON_HVAC_MODE[mode] for mode in device.settings["settings.machMode"].values - ] - self._attr_fan_modes = [FAN_OFF] + [ - HON_FAN[mode] for mode in device.settings["settings.windSpeed"].values - ] + self._attr_hvac_modes = [HVACMode.OFF] + for mode in device.settings["settings.machMode"].values: + self._attr_hvac_modes.append(HON_HVAC_MODE[mode]) + self._attr_fan_modes = [FAN_OFF] + for mode in device.settings["settings.windSpeed"].values: + self._attr_fan_modes.append(HON_FAN[mode]) self._attr_swing_modes = [ SWING_OFF, SWING_VERTICAL, @@ -123,6 +123,23 @@ class HonACClimateEntity(HonEntity, ClimateEntity): self._handle_coordinator_update(update=False) + @property + def target_temperature(self) -> int | None: + """Return the temperature we try to reach.""" + return int(float(self._device.get("tempSel"))) + + @property + def current_temperature(self) -> float | None: + """Return the current temperature.""" + return float(self._device.get("tempIndoor")) + + async def async_set_temperature(self, **kwargs): + if (temperature := kwargs.get(ATTR_TEMPERATURE)) is None: + return False + self._device.settings["settings.tempSel"].value = str(int(temperature)) + await self._device.commands["settings"].send() + self.async_write_ha_state() + @property def hvac_mode(self) -> HVACMode | str | None: if self._device.get("onOffStatus") == "0": @@ -131,24 +148,42 @@ class HonACClimateEntity(HonEntity, ClimateEntity): return HON_HVAC_MODE[self._device.get("machMode")] async def async_set_hvac_mode(self, hvac_mode): + self._attr_hvac_mode = hvac_mode if hvac_mode == HVACMode.OFF: await self._device.commands["stopProgram"].send() else: - self._device.settings["startProgram.program"].value = HON_HVAC_PROGRAM[ - hvac_mode - ] + mode = HON_HVAC_PROGRAM[hvac_mode] + self._device.settings["startProgram.program"].value = mode await self._device.commands["startProgram"].send() - self._attr_hvac_mode = hvac_mode self.async_write_ha_state() + @property + def fan_mode(self) -> str | None: + """Return the fan setting.""" + return HON_FAN[self._device.get("windSpeed")] + async def async_set_fan_mode(self, fan_mode): mode_number = list(HON_FAN.values()).index(fan_mode) - self._device.settings["settings.windSpeed"].value = list(HON_FAN.keys())[ - mode_number - ] + mode = list(HON_FAN.keys())[mode_number] + self._device.settings["settings.windSpeed"].value = mode + self._attr_fan_mode = fan_mode await self._device.commands["settings"].send() self.async_write_ha_state() + @property + def swing_mode(self) -> str | None: + """Return the swing setting.""" + horizontal = self._device.get("windDirectionHorizontal") + vertical = self._device.get("windDirectionVertical") + if horizontal == "7" and vertical == "8": + return SWING_BOTH + elif horizontal == "7": + return SWING_HORIZONTAL + elif vertical == "8": + return SWING_VERTICAL + else: + return SWING_OFF + async def async_set_swing_mode(self, swing_mode): horizontal = self._device.settings["settings.windDirectionHorizontal"] vertical = self._device.settings["settings.windDirectionVertical"] @@ -164,35 +199,13 @@ class HonACClimateEntity(HonEntity, ClimateEntity): await self._device.commands["settings"].send() self.async_write_ha_state() - async def async_set_temperature(self, **kwargs): - if (temperature := kwargs.get(ATTR_TEMPERATURE)) is None: - return False - self._device.settings["settings.tempSel"].value = str(int(temperature)) - await self._device.commands["settings"].send() - self.async_write_ha_state() - @callback def _handle_coordinator_update(self, update=True) -> None: - self._attr_target_temperature = int(float(self._device.get("tempSel"))) - self._attr_current_temperature = float(self._device.get("tempIndoor")) - - if self._device.get("onOffStatus") == "0": - self._attr_hvac_mode = HVACMode.OFF - else: - self._attr_hvac_mode = HON_HVAC_MODE[self._device.get("machMode")] - - self._attr_fan_mode = HON_FAN[self._device.get("windSpeed")] - - horizontal = self._device.get("windDirectionHorizontal") - vertical = self._device.get("windDirectionVertical") - if horizontal == "7" and vertical == "8": - self._attr_swing_mode = SWING_BOTH - elif horizontal == "7": - self._attr_swing_mode = SWING_HORIZONTAL - elif vertical == "8": - self._attr_swing_mode = SWING_VERTICAL - else: - self._attr_swing_mode = SWING_OFF + self._attr_target_temperature = self.target_temperature + self._attr_current_temperature = self.current_temperature + self._attr_hvac_mode = self.hvac_mode + self._attr_fan_mode = self.fan_mode + self._attr_swing_mode = self.swing_mode if update: self.async_write_ha_state() -- 2.39.5 From 80b3741f2f8cc7641c3ec0d7b2c0081894efb915 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Thu, 8 Jun 2023 20:01:55 +0200 Subject: [PATCH 120/205] Reduce lagging update --- README.md | 1 + custom_components/hon/binary_sensor.py | 5 +++-- custom_components/hon/const.py | 1 + custom_components/hon/hon.py | 13 ++++++++++--- custom_components/hon/manifest.json | 4 ++-- custom_components/hon/number.py | 7 ++++--- custom_components/hon/select.py | 7 ++++--- custom_components/hon/sensor.py | 15 +++++++------- custom_components/hon/switch.py | 27 ++++++++++++++++++++++---- info.md | 1 + 10 files changed, 57 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index bd636e0..5f8cef6 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,7 @@ Translation of internal names like programs are available for all languages whic ## Supported Models Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). - Haier AD105S2SM3FA +- Haier AS20HPL1HRA - Haier AS25PBAHRA - Haier AS25S2SF1FA-WH - Haier AS25TADHRA-2 diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index 9cd96c3..c30e02d 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -271,9 +271,10 @@ class HonBinarySensorEntity(HonEntity, BinarySensorEntity): ) @callback - def _handle_coordinator_update(self): + def _handle_coordinator_update(self, update=True) -> None: self._attr_native_value = ( self._device.get(self.entity_description.key, "") == self.entity_description.on_value ) - self.async_write_ha_state() + if update: + self.async_write_ha_state() diff --git a/custom_components/hon/const.py b/custom_components/hon/const.py index 6c14aa9..1a2d022 100644 --- a/custom_components/hon/const.py +++ b/custom_components/hon/const.py @@ -7,6 +7,7 @@ from homeassistant.components.climate import ( ) DOMAIN = "hon" +UPDATE_INTERVAL = 10 PLATFORMS = [ "sensor", diff --git a/custom_components/hon/hon.py b/custom_components/hon/hon.py index b3e37d6..feffd8d 100644 --- a/custom_components/hon/hon.py +++ b/custom_components/hon/hon.py @@ -1,12 +1,13 @@ import logging from datetime import timedelta +from homeassistant.core import callback from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.update_coordinator import CoordinatorEntity from homeassistant.helpers.update_coordinator import DataUpdateCoordinator from pyhon.appliance import HonAppliance -from .const import DOMAIN +from .const import DOMAIN, UPDATE_INTERVAL _LOGGER = logging.getLogger(__name__) @@ -21,13 +22,14 @@ class HonEntity(CoordinatorEntity): self._hon = hass.data[DOMAIN][entry.unique_id] self._hass = hass self._coordinator = coordinator - self._device = device + self._device: HonAppliance = device if description is not None: self.entity_description = description self._attr_unique_id = f"{self._device.unique_id}{description.key}" else: self._attr_unique_id = self._device.unique_id + self._handle_coordinator_update(update=False) @property def device_info(self): @@ -41,6 +43,11 @@ class HonEntity(CoordinatorEntity): sw_version=self._device.get("fwVersion", ""), ) + @callback + def _handle_coordinator_update(self, update: bool = True) -> None: + if update: + self.async_write_ha_state() + class HonCoordinator(DataUpdateCoordinator): def __init__(self, hass, device: HonAppliance): @@ -49,7 +56,7 @@ class HonCoordinator(DataUpdateCoordinator): hass, _LOGGER, name=device.unique_id, - update_interval=timedelta(seconds=30), + update_interval=timedelta(seconds=UPDATE_INTERVAL), ) self._device = device diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 55f2d4b..1577cdd 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -9,7 +9,7 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": [ - "pyhOn==0.12.1" + "pyhOn==0.12.2" ], - "version": "0.8.0-beta.9" + "version": "0.8.0-beta.10" } diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index ad1c6bc..cd9f182 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -9,7 +9,7 @@ from homeassistant.components.number import ( from homeassistant.config_entries import ConfigEntry from homeassistant.const import UnitOfTime, UnitOfTemperature from homeassistant.core import callback -from homeassistant.helpers.entity import EntityCategory, Entity +from homeassistant.helpers.entity import EntityCategory from pyhon.parameter.range import HonParameterRange from .const import DOMAIN @@ -223,14 +223,15 @@ class HonNumberEntity(HonEntity, NumberEntity): await self.coordinator.async_refresh() @callback - def _handle_coordinator_update(self): + def _handle_coordinator_update(self, update=True) -> None: setting = self._device.settings[self.entity_description.key] if isinstance(setting, HonParameterRange): self._attr_native_max_value = setting.max self._attr_native_min_value = setting.min self._attr_native_step = setting.step self._attr_native_value = setting.value - self.async_write_ha_state() + if update: + self.async_write_ha_state() @property def available(self) -> bool: diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index 327c928..947db9a 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -7,7 +7,7 @@ from homeassistant.components.select import SelectEntity, SelectEntityDescriptio from homeassistant.config_entries import ConfigEntry from homeassistant.const import UnitOfTemperature, UnitOfTime, REVOLUTIONS_PER_MINUTE from homeassistant.core import callback -from homeassistant.helpers.entity import EntityCategory, Entity +from homeassistant.helpers.entity import EntityCategory from pyhon.appliance import HonAppliance from pyhon.parameter.fixed import HonParameterFixed @@ -179,7 +179,7 @@ class HonSelectEntity(HonEntity, SelectEntity): await self.coordinator.async_refresh() @callback - def _handle_coordinator_update(self): + def _handle_coordinator_update(self, update=True) -> None: setting = self._device.settings.get(self.entity_description.key) if setting is None: self._attr_available = False @@ -189,7 +189,8 @@ class HonSelectEntity(HonEntity, SelectEntity): self._attr_available = True self._attr_options: list[str] = setting.values self._attr_native_value = setting.value - self.async_write_ha_state() + if update: + self.async_write_ha_state() @property def available(self) -> bool: diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 31affd8..58eddd5 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -1,8 +1,6 @@ import logging from dataclasses import dataclass -from pyhon.appliance import HonAppliance - from homeassistant.components.sensor import ( SensorEntity, SensorDeviceClass, @@ -22,7 +20,8 @@ from homeassistant.const import ( ) from homeassistant.core import callback from homeassistant.helpers.entity import EntityCategory -from homeassistant.helpers.typing import StateType +from pyhon.appliance import HonAppliance + from . import const from .const import DOMAIN from .hon import HonEntity, unique_entities @@ -635,19 +634,20 @@ class HonSensorEntity(HonEntity, SensorEntity): ).values + ["No Program"] @callback - def _handle_coordinator_update(self): + def _handle_coordinator_update(self, update=True) -> None: value = self._device.get(self.entity_description.key, "") if not value and self.entity_description.state_class is not None: self._attr_native_value = 0 self._attr_native_value = value - self.async_write_ha_state() + if update: + self.async_write_ha_state() class HonConfigSensorEntity(HonEntity, SensorEntity): entity_description: HonConfigSensorEntityDescription @callback - def _handle_coordinator_update(self): + def _handle_coordinator_update(self, update=True) -> None: value = self._device.settings.get(self.entity_description.key, None) if self.entity_description.state_class is not None: if value and value.value: @@ -658,4 +658,5 @@ class HonConfigSensorEntity(HonEntity, SensorEntity): self._attr_native_value = 0 else: self._attr_native_value = value.value - self.async_write_ha_state() + if update: + self.async_write_ha_state() diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 01d3f81..b0af92e 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -1,5 +1,6 @@ import logging from dataclasses import dataclass +from datetime import datetime, timedelta from typing import Any from homeassistant.components.switch import SwitchEntityDescription, SwitchEntity @@ -394,10 +395,11 @@ class HonSwitchEntity(HonEntity, SwitchEntity): ) @callback - def _handle_coordinator_update(self): + def _handle_coordinator_update(self, update=True) -> None: value = self._device.get(self.entity_description.key, "0") self._attr_state = value == "1" - self.async_write_ha_state() + if update: + self.async_write_ha_state() class HonControlSwitchEntity(HonEntity, SwitchEntity): @@ -410,9 +412,13 @@ class HonControlSwitchEntity(HonEntity, SwitchEntity): async def async_turn_on(self, **kwargs: Any) -> None: await self._device.commands[self.entity_description.turn_on_key].send() + self._device.attributes[self.entity_description.key] = True + self.async_write_ha_state() async def async_turn_off(self, **kwargs: Any) -> None: await self._device.commands[self.entity_description.turn_off_key].send() + self._device.attributes[self.entity_description.key] = False + self.async_write_ha_state() @property def available(self) -> bool: @@ -423,6 +429,18 @@ class HonControlSwitchEntity(HonEntity, SwitchEntity): and self._device.get("attributes.lastConnEvent.category") != "DISCONNECTED" ) + @property + def extra_state_attributes(self) -> dict[str, Any]: + """Return the optional state attributes.""" + result = {} + if remaining_time := int(self._device.get("remainingTimeMM", 0)): + delay_time = int(self._device.get("delayTime", 0)) + result["start_time"] = datetime.now() + timedelta(minutes=delay_time) + result["end_time"] = datetime.now() + timedelta( + minutes=delay_time + remaining_time + ) + return result + class HonConfigSwitchEntity(HonEntity, SwitchEntity): entity_description: HonConfigSwitchEntityDescription @@ -454,7 +472,8 @@ class HonConfigSwitchEntity(HonEntity, SwitchEntity): await self.coordinator.async_refresh() @callback - def _handle_coordinator_update(self): + def _handle_coordinator_update(self, update=True) -> None: value = self._device.settings.get(self.entity_description.key, "0") self._attr_state = value == "1" - self.async_write_ha_state() + if update: + self.async_write_ha_state() diff --git a/info.md b/info.md index 73f8e0a..ba5827c 100644 --- a/info.md +++ b/info.md @@ -51,6 +51,7 @@ Translation of internal names like programs are available for all languages whic ## Supported Models Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). - Haier AD105S2SM3FA +- Haier AS20HPL1HRA - Haier AS25PBAHRA - Haier AS25S2SF1FA-WH - Haier AS25TADHRA-2 -- 2.39.5 From 0f9f0dee4ccf3dac9c3700c62e38e40816b8b27d Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Thu, 8 Jun 2023 21:46:36 +0200 Subject: [PATCH 121/205] Fix issues when changing climate mode #52 --- custom_components/hon/climate.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/custom_components/hon/climate.py b/custom_components/hon/climate.py index c0166de..5c5fa2a 100644 --- a/custom_components/hon/climate.py +++ b/custom_components/hon/climate.py @@ -150,11 +150,13 @@ class HonACClimateEntity(HonEntity, ClimateEntity): async def async_set_hvac_mode(self, hvac_mode): self._attr_hvac_mode = hvac_mode if hvac_mode == HVACMode.OFF: - await self._device.commands["stopProgram"].send() + command = "stopProgram" else: mode = HON_HVAC_PROGRAM[hvac_mode] self._device.settings["startProgram.program"].value = mode - await self._device.commands["startProgram"].send() + command = "startProgram" + await self._device.commands[command].send() + self._device.sync_command(command, "settings") self.async_write_ha_state() @property -- 2.39.5 From 5bc3120000500188009d397447219a45ecd5a9ca Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Thu, 8 Jun 2023 22:07:56 +0200 Subject: [PATCH 122/205] Bump version --- README.md | 4 ++-- custom_components/hon/manifest.json | 2 +- info.md | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 5f8cef6..48ba375 100644 --- a/README.md +++ b/README.md @@ -12,9 +12,9 @@ Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.co - [Washer Dryer](https://github.com/Andre0512/hon#washer-dryer) - [Oven](https://github.com/Andre0512/hon#oven) - [Dish Washer](https://github.com/Andre0512/hon#dish-washer) +- [Air conditioner](https://github.com/Andre0512/hon#air-conditioner) +- [Fridge](https://github.com/Andre0512/hon#fridge) - [Hob](https://github.com/Andre0512/hon#hob) [BETA] -- [Air conditioner](https://github.com/Andre0512/hon#air-conditioner) [BETA] -- [Fridge](https://github.com/Andre0512/hon#fridge) [BETA] - [Hood](https://github.com/Andre0512/hon#hood) [BETA] ## Installation diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 1577cdd..860e3e8 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -11,5 +11,5 @@ "requirements": [ "pyhOn==0.12.2" ], - "version": "0.8.0-beta.10" + "version": "0.8.0" } diff --git a/info.md b/info.md index ba5827c..dd6d537 100644 --- a/info.md +++ b/info.md @@ -10,9 +10,9 @@ Support for home appliances of Haier's mobile app hOn. - [Washer Dryer](https://github.com/Andre0512/hon#washer-dryer) - [Oven](https://github.com/Andre0512/hon#oven) - [Dish Washer](https://github.com/Andre0512/hon#dish-washer) +- [Air conditioner](https://github.com/Andre0512/hon#air-conditioner) +- [Fridge](https://github.com/Andre0512/hon#fridge) - [Hob](https://github.com/Andre0512/hon#hob) [BETA] -- [Air conditioner](https://github.com/Andre0512/hon#air-conditioner) [BETA] -- [Fridge](https://github.com/Andre0512/hon#fridge) [BETA] - [Hood](https://github.com/Andre0512/hon#hood) [BETA] ## Configuration -- 2.39.5 From 79b43b86953af96b615c99af99f6077b03cc8709 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Fri, 9 Jun 2023 05:56:52 +0200 Subject: [PATCH 123/205] Use fan entity for wind speed --- README.md | 51 +++------ custom_components/hon/climate.py | 2 +- custom_components/hon/const.py | 1 + custom_components/hon/fan.py | 122 +++++++++++++++++++++ custom_components/hon/number.py | 6 - custom_components/hon/sensor.py | 5 - custom_components/hon/translations/cs.json | 5 + custom_components/hon/translations/de.json | 5 + custom_components/hon/translations/el.json | 5 + custom_components/hon/translations/en.json | 5 + custom_components/hon/translations/es.json | 5 + custom_components/hon/translations/fr.json | 5 + custom_components/hon/translations/he.json | 5 + custom_components/hon/translations/hr.json | 5 + custom_components/hon/translations/it.json | 5 + custom_components/hon/translations/nl.json | 5 + custom_components/hon/translations/pl.json | 5 + custom_components/hon/translations/pt.json | 5 + custom_components/hon/translations/ro.json | 5 + custom_components/hon/translations/ru.json | 5 + custom_components/hon/translations/sk.json | 5 + custom_components/hon/translations/sl.json | 5 + custom_components/hon/translations/sr.json | 5 + custom_components/hon/translations/tr.json | 5 + custom_components/hon/translations/zh.json | 5 + info.md | 48 ++------ scripts/generate_translation.py | 1 + scripts/sensor_docs.py | 2 + 28 files changed, 247 insertions(+), 86 deletions(-) create mode 100644 custom_components/hon/fan.py diff --git a/README.md b/README.md index 48ba375..85eb1a1 100644 --- a/README.md +++ b/README.md @@ -61,42 +61,18 @@ Translation of internal names like programs are available for all languages whic ## Supported Models Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). -- Haier AD105S2SM3FA -- Haier AS20HPL1HRA -- Haier AS25PBAHRA -- Haier AS25S2SF1FA-WH -- Haier AS25TADHRA-2 -- Haier AS35TADHRA-2 -- Haier EG9012B19SU1JD -- Haier HA2MTSJ68MC -- Haier HADG6DS46BWIFI -- Haier HD80-A3959 -- Haier HW90-B14TEAM5 -- Haier HW100-B14959U1 -- Haier HWD100-B14979 -- Haier HWO60SM2F3XH -- Haier XIB 3B2SFS-80 -- Haier XIB 6B2D3FB -- Candy BCTDH7A1TE -- Candy CCE4T620EWU -- Candy CIS633SCTTWIFI -- Candy CSOE C10DE-80 -- Candy RO44 1286DWMC4-07 -- Candy ROE H9A3TCEX-S -- Candy RPW41066BWMR/1-S -- Hoover H-WASH 500 -- Hoover H-DRY 500 -- Hoover H7W4 48MBC-S -- Hoover H9A3TCBEXS-S -- Hoover HFB 6B2S3FX -- Hoover HLE C10DCE-80 -- Hoover HSOT3161WG -- Hoover HW 68AMC/1-80 -- Hoover HWPD 69AMBC/1-S -- Hoover HWPS4954DAMR-11 -- Hoover NDE H10A2TCE-80 -- Hoover NDE H9A2TSBEXS-S -- Hoover NDPHY10A2TCBEXSS + +| | **Haier** | **Hoover** | **Candy** | +|--------------------|------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------| +| **Washing Machine** | HW90-B14TEAM5
HW100-B14959U1 | H-WASH 500
H7W4 48MBC-S | RO44 1286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | +| **Tumble Dryer** | HD80-A3959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S | +| **Washer Dryer** | HWD100-B14979 | HWPS4954DAMR-11 | RPW41066BWMR/1-S | +| **Oven** | HWO60SM2F3XH | HSOT3161WG | | +| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | +| **Air conditioner** | AD105S2SM3FA
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35TADHRA-2
| | | +| **Fridge** | HFW7720ENMB | | CCE4T620EWU | +| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | +| **Hood** | HADG6DS46BWIFI | | | ## Contribute Any kind of contribution is welcome! @@ -237,11 +213,11 @@ For every device exists a hidden button which can be used to log all infos of yo | --- | --- | --- | --- | | Start Program | `hvac` | `button` | `startProgram` | | Stop Program | `hvac-off` | `button` | `stopProgram` | +| Wind Speed | | `fan` | `settings.windSpeed` | #### Configs | Name | Icon | Entity | Key | | --- | --- | --- | --- | | Light status | `lightbulb` | `number` | `startProgram.lightStatus` | -| Wind speed | `fan` | `number` | `startProgram.windSpeed` | #### Sensors | Name | Icon | Entity | Key | | --- | --- | --- | --- | @@ -257,7 +233,6 @@ For every device exists a hidden button which can be used to log all infos of yo | Quick Delay Time Status | | `sensor` | `quickDelayTimeStatus` | | RGB Light Color | `lightbulb` | `sensor` | `rgbLightColors` | | RGB Light Status | `lightbulb` | `sensor` | `rgbLightStatus` | -| Wind Speed | `fan` | `sensor` | `windSpeed` | ### Hob #### Controls diff --git a/custom_components/hon/climate.py b/custom_components/hon/climate.py index 5c5fa2a..c8fd587 100644 --- a/custom_components/hon/climate.py +++ b/custom_components/hon/climate.py @@ -213,7 +213,7 @@ class HonACClimateEntity(HonEntity, ClimateEntity): class HonClimateEntity(HonEntity, ClimateEntity): - entity_description = HonClimateEntityDescription + entity_description: HonClimateEntityDescription def __init__(self, hass, entry, device: HonAppliance, description) -> None: super().__init__(hass, entry, device, description) diff --git a/custom_components/hon/const.py b/custom_components/hon/const.py index 1a2d022..5c89ef4 100644 --- a/custom_components/hon/const.py +++ b/custom_components/hon/const.py @@ -17,6 +17,7 @@ PLATFORMS = [ "button", "binary_sensor", "climate", + "fan", ] HON_HVAC_MODE = { diff --git a/custom_components/hon/fan.py b/custom_components/hon/fan.py new file mode 100644 index 0000000..80e3251 --- /dev/null +++ b/custom_components/hon/fan.py @@ -0,0 +1,122 @@ +import logging +import math +from dataclasses import dataclass +from typing import Any + +from homeassistant.components.fan import ( + FanEntityDescription, + FanEntity, + FanEntityFeature, +) +from homeassistant.config_entries import ConfigEntry +from homeassistant.core import callback +from homeassistant.util.percentage import ( + percentage_to_ranged_value, + ranged_value_to_percentage, +) +from pyhon.appliance import HonAppliance +from pyhon.parameter.range import HonParameterRange + +from .const import DOMAIN +from .hon import HonEntity + +_LOGGER = logging.getLogger(__name__) + + +@dataclass +class HonFanEntityDescription(FanEntityDescription): + pass + + +FANS = { + "HO": ( + HonFanEntityDescription( + key="settings.windSpeed", + name="Wind Speed", + translation_key="air_extraction", + ), + ), +} + + +async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: + entities = [] + for device in hass.data[DOMAIN][entry.unique_id].appliances: + for description in FANS.get(device.appliance_type, []): + if isinstance(description, HonFanEntityDescription): + if description.key not in device.available_settings or not device.get( + description.key.split(".")[-1] + ): + continue + entity = HonFanEntity(hass, entry, device, description) + else: + continue + await entity.coordinator.async_config_entry_first_refresh() + entities.append(entity) + async_add_entities(entities) + + +class HonFanEntity(HonEntity, FanEntity): + entity_description: HonFanEntityDescription + + def __init__(self, hass, entry, device: HonAppliance, description) -> None: + self._attr_supported_features = FanEntityFeature.SET_SPEED + self._wind_speed: HonParameterRange = device.settings.get(description.key) + self._speed_range = ( + int(self._wind_speed.values[1]), + int(self._wind_speed.values[-1]), + ) + self._command, self._parameter = description.key.split(".") + + super().__init__(hass, entry, device, description) + self._handle_coordinator_update(update=False) + + @property + def percentage(self) -> int | None: + """Return the current speed.""" + value = int(self._device.get(self._parameter, "0")) + return ranged_value_to_percentage(self._speed_range, value) + + @property + def speed_count(self) -> int: + """Return the number of speeds the fan supports.""" + return len(self._wind_speed.values[1:]) + + async def async_set_percentage(self, percentage: int) -> None: + """Set the speed percentage of the fan.""" + mode = math.ceil(percentage_to_ranged_value(self._speed_range, percentage)) + self._device.settings[self.entity_description.key].value = mode + await self._device.commands[self._command].send() + self.async_write_ha_state() + + @property + def is_on(self) -> bool | None: + """Return true if device is on.""" + mode = math.ceil(percentage_to_ranged_value(self._speed_range, self.percentage)) + return mode > self._wind_speed.min + + async def async_turn_on( + self, + percentage: int | None = None, + preset_mode: str | None = None, + **kwargs: Any, + ) -> None: + """Turn the entity on.""" + if percentage is None: + percentage = ranged_value_to_percentage( + self._speed_range, int(self._wind_speed.values[1]) + ) + await self.async_set_percentage(percentage) + + async def async_turn_off(self, **kwargs: Any) -> None: + """Turn the entity off.""" + self._device.settings[self.entity_description.key].value = 0 + await self._device.commands[self._command].send() + self.async_write_ha_state() + + @callback + def _handle_coordinator_update(self, update=True) -> None: + self._wind_speed = self._device.settings.get(self.entity_description.key) + self._attr_percentage = self.percentage + if update: + self.async_write_ha_state() diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index cd9f182..43f3761 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -163,12 +163,6 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { ), ), "HO": ( - HonNumberEntityDescription( - key="startProgram.windSpeed", - name="Wind speed", - icon="mdi:fan", - entity_category=EntityCategory.CONFIG, - ), HonNumberEntityDescription( key="startProgram.lightStatus", name="Light status", diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 58eddd5..7de75f9 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -593,11 +593,6 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { name="RGB Light Status", icon="mdi:lightbulb", ), - HonSensorEntityDescription( - key="windSpeed", - name="Wind Speed", - icon="mdi:fan", - ), ), } SENSORS["WD"] = unique_entities(SENSORS["WM"], SENSORS["TD"]) diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index b4b0174..32d551d 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -1979,6 +1979,11 @@ } } } + }, + "fan": { + "air_extraction": { + "name": "Odsávání vzduchu" + } } }, "config": { diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index 1e5de11..3948c4c 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -1979,6 +1979,11 @@ } } } + }, + "fan": { + "air_extraction": { + "name": "Dunstabzug" + } } }, "config": { diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index 8b44d1d..67ea26c 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -1979,6 +1979,11 @@ } } } + }, + "fan": { + "air_extraction": { + "name": "Εξαγωγή αέρα" + } } }, "config": { diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 40ee14b..865947d 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -2056,6 +2056,11 @@ } } } + }, + "fan": { + "air_extraction": { + "name": "Air extraction" + } } } } \ No newline at end of file diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index d328fb1..716bef3 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -1979,6 +1979,11 @@ } } } + }, + "fan": { + "air_extraction": { + "name": "Extracción de aire" + } } }, "config": { diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index c114d0e..c8bef75 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -1979,6 +1979,11 @@ } } } + }, + "fan": { + "air_extraction": { + "name": "Extraction de l'air" + } } }, "config": { diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index 95543ba..9a735c9 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -1065,6 +1065,11 @@ } } } + }, + "fan": { + "air_extraction": { + "name": "Air extraction" + } } }, "config": { diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index cf4a912..56f91e6 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -1979,6 +1979,11 @@ } } } + }, + "fan": { + "air_extraction": { + "name": "Odvođenje zraka" + } } }, "config": { diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index 3528120..c1bfb25 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -2031,6 +2031,11 @@ } } } + }, + "fan": { + "air_extraction": { + "name": "Aspirazione aria" + } } } } \ No newline at end of file diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index 931ccd0..a8cd576 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -1979,6 +1979,11 @@ } } } + }, + "fan": { + "air_extraction": { + "name": "Luchtafvoer" + } } }, "config": { diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index 4ca0b36..a757390 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -1979,6 +1979,11 @@ } } } + }, + "fan": { + "air_extraction": { + "name": "Wyciąg powietrza" + } } }, "config": { diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index 0828ace..1e68672 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -1979,6 +1979,11 @@ } } } + }, + "fan": { + "air_extraction": { + "name": "Extração de ar" + } } }, "config": { diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index 496959f..8c55275 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -1979,6 +1979,11 @@ } } } + }, + "fan": { + "air_extraction": { + "name": "Extracția aerului" + } } }, "config": { diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index fda96d3..334f94d 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -1979,6 +1979,11 @@ } } } + }, + "fan": { + "air_extraction": { + "name": "Отвод воздуха" + } } }, "config": { diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index c362022..7828e6b 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -1979,6 +1979,11 @@ } } } + }, + "fan": { + "air_extraction": { + "name": "Odsávanie vzduchu" + } } }, "config": { diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index 9ecfb4a..e0b5fff 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -1979,6 +1979,11 @@ } } } + }, + "fan": { + "air_extraction": { + "name": "Odvajanje zraka" + } } }, "config": { diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index 0f6d151..7faaece 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -1979,6 +1979,11 @@ } } } + }, + "fan": { + "air_extraction": { + "name": "Usisavanje vazduha" + } } }, "config": { diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index 3ce58af..1c80588 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -1979,6 +1979,11 @@ } } } + }, + "fan": { + "air_extraction": { + "name": "Hava tahliyesi" + } } }, "config": { diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index 2dd5af7..199f7ff 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -1979,6 +1979,11 @@ } } } + }, + "fan": { + "air_extraction": { + "name": "抽气" + } } }, "config": { diff --git a/info.md b/info.md index dd6d537..88d50e8 100644 --- a/info.md +++ b/info.md @@ -50,42 +50,18 @@ Translation of internal names like programs are available for all languages whic ## Supported Models Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). -- Haier AD105S2SM3FA -- Haier AS20HPL1HRA -- Haier AS25PBAHRA -- Haier AS25S2SF1FA-WH -- Haier AS25TADHRA-2 -- Haier AS35TADHRA-2 -- Haier EG9012B19SU1JD -- Haier HA2MTSJ68MC -- Haier HADG6DS46BWIFI -- Haier HD80-A3959 -- Haier HW90-B14TEAM5 -- Haier HW100-B14959U1 -- Haier HWD100-B14979 -- Haier HWO60SM2F3XH -- Haier XIB 3B2SFS-80 -- Haier XIB 6B2D3FB -- Candy BCTDH7A1TE -- Candy CCE4T620EWU -- Candy CIS633SCTTWIFI -- Candy CSOE C10DE-80 -- Candy RO44 1286DWMC4-07 -- Candy ROE H9A3TCEX-S -- Candy RPW41066BWMR/1-S -- Hoover H-WASH 500 -- Hoover H-DRY 500 -- Hoover H7W4 48MBC-S -- Hoover H9A3TCBEXS-S -- Hoover HFB 6B2S3FX -- Hoover HLE C10DCE-80 -- Hoover HSOT3161WG -- Hoover HW 68AMC/1-80 -- Hoover HWPD 69AMBC/1-S -- Hoover HWPS4954DAMR-11 -- Hoover NDE H10A2TCE-80 -- Hoover NDE H9A2TSBEXS-S -- Hoover NDPHY10A2TCBEXSS + +| | **Haier** | **Hoover** | **Candy** | +|--------------------|------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------| +| **Washing Machine** | HW90-B14TEAM5
HW100-B14959U1 | H-WASH 500
H7W4 48MBC-S | RO44 1286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | +| **Tumble Dryer** | HD80-A3959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S | +| **Washer Dryer** | HWD100-B14979 | HWPS4954DAMR-11 | RPW41066BWMR/1-S | +| **Oven** | HWO60SM2F3XH | HSOT3161WG | | +| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | +| **Air conditioner** | AD105S2SM3FA
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35TADHRA-2
| | | +| **Fridge** | HFW7720ENMB | | CCE4T620EWU | +| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | +| **Hood** | HADG6DS46BWIFI | | | ## Contribute Want to help us to support more appliances? Or add more sensors? Or help with translating? Or beautify some icons or captions? diff --git a/scripts/generate_translation.py b/scripts/generate_translation.py index 01164af..53d66bc 100755 --- a/scripts/generate_translation.py +++ b/scripts/generate_translation.py @@ -248,6 +248,7 @@ NAMES = { "freezer": "REF.ZONES.FREEZER", "oven": "GLOBALS.APPLIANCES_NAME.OV", }, + "fan": {"air_extraction": "HO.DASHBOARD.AIR_EXTRACTION_TITLE"}, } diff --git a/scripts/sensor_docs.py b/scripts/sensor_docs.py index 655dbf6..e009186 100755 --- a/scripts/sensor_docs.py +++ b/scripts/sensor_docs.py @@ -14,6 +14,7 @@ from custom_components.hon.climate import CLIMATES from custom_components.hon.number import NUMBERS from custom_components.hon.select import SELECTS from custom_components.hon.sensor import SENSORS +from custom_components.hon.fan import FANS from custom_components.hon.switch import ( SWITCHES, HonControlSwitchEntityDescription, @@ -48,6 +49,7 @@ entities = { "sensor": SENSORS, "switch": SWITCHES, "climate": CLIMATES, + "fan": FANS, } result = {} -- 2.39.5 From efcac321b8b14ffc64b4cd7b750ed8400758158d Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Fri, 9 Jun 2023 06:04:05 +0200 Subject: [PATCH 124/205] Bump version --- custom_components/hon/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 860e3e8..569bb8b 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -9,7 +9,7 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": [ - "pyhOn==0.12.2" + "pyhOn==0.12.3" ], - "version": "0.8.0" + "version": "0.8.1-beta.1" } -- 2.39.5 From eb5ba43707008a50252695d72680c29e4e980df1 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sat, 10 Jun 2023 06:44:19 +0200 Subject: [PATCH 125/205] Add wine cellar --- README.md | 22 +++++++ custom_components/hon/climate.py | 26 ++++++-- custom_components/hon/sensor.py | 74 ++++++++++++++++++++++ custom_components/hon/switch.py | 11 ++++ custom_components/hon/translations/cs.json | 29 +++++++++ custom_components/hon/translations/de.json | 29 +++++++++ custom_components/hon/translations/el.json | 29 +++++++++ custom_components/hon/translations/en.json | 29 +++++++++ custom_components/hon/translations/es.json | 29 +++++++++ custom_components/hon/translations/fr.json | 29 +++++++++ custom_components/hon/translations/he.json | 11 ++++ custom_components/hon/translations/hr.json | 29 +++++++++ custom_components/hon/translations/it.json | 29 +++++++++ custom_components/hon/translations/nl.json | 29 +++++++++ custom_components/hon/translations/pl.json | 29 +++++++++ custom_components/hon/translations/pt.json | 29 +++++++++ custom_components/hon/translations/ro.json | 29 +++++++++ custom_components/hon/translations/ru.json | 29 +++++++++ custom_components/hon/translations/sk.json | 29 +++++++++ custom_components/hon/translations/sl.json | 29 +++++++++ custom_components/hon/translations/sr.json | 29 +++++++++ custom_components/hon/translations/tr.json | 29 +++++++++ custom_components/hon/translations/zh.json | 29 +++++++++ info.md | 1 + scripts/generate_translation.py | 7 ++ 25 files changed, 669 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 85eb1a1..a52cdaa 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,7 @@ Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.co - [Fridge](https://github.com/Andre0512/hon#fridge) - [Hob](https://github.com/Andre0512/hon#hob) [BETA] - [Hood](https://github.com/Andre0512/hon#hood) [BETA] +- [Wine Cellar](https://github.com/Andre0512/hon#wine-cellar) [BETA] ## Installation **Method 1:** [![Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?owner=Andre0512&repository=hon&category=integration) @@ -356,6 +357,27 @@ For every device exists a hidden button which can be used to log all infos of yo | Steam level | `smoke` | `sensor` | `steamLevel` | | Temperature level | `thermometer` | `sensor` | `tempLevel` | +### Wine Cellar +#### Controls +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Light | `lightbulb` | `switch` | `lightStatus` | +| Sabbath Mode | `palm-tree` | `switch` | `sabbathStatus` | +| Wine Cellar | `thermometer` | `climate` | `settings.tempSel` | +| Wine Cellar | `thermometer` | `climate` | `settings.tempSelZ2` | +#### Sensors +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Error | `math-log` | `sensor` | `errors` | +| Humidity | `water-percent` | `sensor` | `humidityZ1` | +| Humidity 2 | `water-percent` | `sensor` | `humidityZ2` | +| Program | `play` | `sensor` | `programName` | +| Room Temperature | `home-thermometer-outline` | `sensor` | `tempEnv` | +| Selected Temperature | `thermometer` | `sensor` | `tempSel` | +| Selected Temperature 2 | `thermometer` | `sensor` | `tempSelZ2` | +| Temperature | `thermometer` | `sensor` | `temp` | +| Temperature 2 | `thermometer` | `sensor` | `tempZ2` | + ### Washer dryer #### Controls | Name | Icon | Entity | Key | diff --git a/custom_components/hon/climate.py b/custom_components/hon/climate.py index c8fd587..c2bd3f2 100644 --- a/custom_components/hon/climate.py +++ b/custom_components/hon/climate.py @@ -72,6 +72,22 @@ CLIMATES = { translation_key="oven", ), ), + "WC": ( + HonClimateEntityDescription( + key="settings.tempSel", + mode=HVACMode.COOL, + name="Wine Cellar", + icon="mdi:thermometer", + translation_key="wine", + ), + HonClimateEntityDescription( + key="settings.tempSelZ2", + mode=HVACMode.COOL, + name="Wine Cellar", + icon="mdi:thermometer", + translation_key="wine", + ), + ), } @@ -226,7 +242,7 @@ class HonClimateEntity(HonEntity, ClimateEntity): ) self._attr_hvac_modes = [description.mode] - if device.get("onOffStatus"): + if "stopProgram" in device.commands: self._attr_hvac_modes += [HVACMode.OFF] modes = [] else: @@ -245,15 +261,15 @@ class HonClimateEntity(HonEntity, ClimateEntity): self._handle_coordinator_update(update=False) @property - def target_temperature(self) -> int | None: + def target_temperature(self) -> float | None: """Return the temperature we try to reach.""" - return int(self._device.get(self.entity_description.key)) + return float(self._device.get(self.entity_description.key)) @property - def current_temperature(self) -> int | None: + def current_temperature(self) -> float | None: """Return the current temperature.""" temp_key = self.entity_description.key.split(".")[-1].replace("Sel", "") - return int(self._device.get(temp_key)) + return float(self._device.get(temp_key)) async def async_set_temperature(self, **kwargs): if (temperature := kwargs.get(ATTR_TEMPERATURE)) is None: diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 7de75f9..f13870c 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -484,6 +484,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { state_class=SensorStateClass.MEASUREMENT, device_class=SensorDeviceClass.TEMPERATURE, native_unit_of_measurement=UnitOfTemperature.CELSIUS, + translation_key="target_temperature", ), HonSensorEntityDescription( key="programName", @@ -594,6 +595,79 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:lightbulb", ), ), + "WC": ( + HonSensorEntityDescription( + key="errors", name="Error", icon="mdi:math-log", translation_key="errors" + ), + HonSensorEntityDescription( + key="humidityZ1", + name="Humidity", + icon="mdi:water-percent", + device_class=SensorDeviceClass.HUMIDITY, + native_unit_of_measurement=PERCENTAGE, + state_class=SensorStateClass.MEASUREMENT, + translation_key="humidity", + ), + HonSensorEntityDescription( + key="humidityZ2", + name="Humidity 2", + icon="mdi:water-percent", + device_class=SensorDeviceClass.HUMIDITY, + native_unit_of_measurement=PERCENTAGE, + state_class=SensorStateClass.MEASUREMENT, + translation_key="humidity", + ), + HonSensorEntityDescription( + key="temp", + name="Temperature", + icon="mdi:thermometer", + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + translation_key="temperature", + ), + HonSensorEntityDescription( + key="tempEnv", + name="Room Temperature", + icon="mdi:home-thermometer-outline", + state_class=SensorStateClass.MEASUREMENT, + device_class=SensorDeviceClass.TEMPERATURE, + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + translation_key="room_temperature", + ), + HonSensorEntityDescription( + key="tempSel", + name="Selected Temperature", + icon="mdi:thermometer", + state_class=SensorStateClass.MEASUREMENT, + device_class=SensorDeviceClass.TEMPERATURE, + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + translation_key="target_temperature", + ), + HonSensorEntityDescription( + key="tempSelZ2", + name="Selected Temperature 2", + icon="mdi:thermometer", + state_class=SensorStateClass.MEASUREMENT, + device_class=SensorDeviceClass.TEMPERATURE, + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + translation_key="target_temperature", + ), + HonSensorEntityDescription( + key="tempZ2", + name="Temperature 2", + icon="mdi:thermometer", + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + translation_key="temperature", + ), + HonSensorEntityDescription( + key="programName", + name="Program", + icon="mdi:play", + device_class=SensorDeviceClass.ENUM, + translation_key="programs_wc", + ), + ), } SENSORS["WD"] = unique_entities(SENSORS["WM"], SENSORS["TD"]) diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index b0af92e..03273a7 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -322,6 +322,17 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { translation_key="holiday_mode", ), ), + "WC": ( + HonSwitchEntityDescription( + key="sabbathStatus", + name="Sabbath Mode", + icon="mdi:palm-tree", + translation_key="holiday_mode", + ), + HonSwitchEntityDescription( + key="lightStatus", name="Light", icon="mdi:lightbulb" + ), + ), } SWITCHES["WD"] = unique_entities(SWITCHES["WD"], SWITCHES["WM"]) diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index 32d551d..e25af24 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -877,6 +877,18 @@ "zero_fresh": "0° Fresh" }, "name": "Program" + }, + "programs_wc": { + "state": { + "iot_champagne": "Šampaňské", + "iot_dessert": "Dezertní", + "iot_fortified": "Strukturované", + "iot_rose": "Růžové", + "iot_whisky": "Whisky", + "red": "Červené", + "sparkling": "Šumivé", + "white": "Bílé" + } } }, "select": { @@ -1978,6 +1990,23 @@ } } } + }, + "wine": { + "state_attributes": { + "preset_mode": { + "name": "Vinný sklípek", + "state": { + "iot_champagne": "Šampaňské", + "iot_dessert": "Dezertní", + "iot_fortified": "Strukturované", + "iot_rose": "Růžové", + "iot_whisky": "Whisky", + "red": "Červené", + "sparkling": "Šumivé", + "white": "Bílé" + } + } + } } }, "fan": { diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index 3948c4c..1d3dad2 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -877,6 +877,18 @@ "zero_fresh": "0° Fresh" }, "name": "Programm" + }, + "programs_wc": { + "state": { + "iot_champagne": "Champagner", + "iot_dessert": "Dessert", + "iot_fortified": "Strukturiert", + "iot_rose": "Rosé", + "iot_whisky": "Whisky", + "red": "Rot", + "sparkling": "Sekt", + "white": "Weiß" + } } }, "select": { @@ -1978,6 +1990,23 @@ } } } + }, + "wine": { + "state_attributes": { + "preset_mode": { + "name": "Weinklimaschrank", + "state": { + "iot_champagne": "Champagner", + "iot_dessert": "Dessert", + "iot_fortified": "Strukturiert", + "iot_rose": "Rosé", + "iot_whisky": "Whisky", + "red": "Rot", + "sparkling": "Sekt", + "white": "Weiß" + } + } + } } }, "fan": { diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index 67ea26c..1828572 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -877,6 +877,18 @@ "zero_fresh": "0° Fresh" }, "name": "Πρόγραμμα" + }, + "programs_wc": { + "state": { + "iot_champagne": "Σαμπάνια", + "iot_dessert": "Επιδόρπιο", + "iot_fortified": "Δομημένο", + "iot_rose": "Ροζέ", + "iot_whisky": "Ουίσκι", + "red": "Κόκκινο", + "sparkling": "Αφρώδες", + "white": "Λευκό" + } } }, "select": { @@ -1978,6 +1990,23 @@ } } } + }, + "wine": { + "state_attributes": { + "preset_mode": { + "name": "Κάβα", + "state": { + "iot_champagne": "Σαμπάνια", + "iot_dessert": "Επιδόρπιο", + "iot_fortified": "Δομημένο", + "iot_rose": "Ροζέ", + "iot_whisky": "Ουίσκι", + "red": "Κόκκινο", + "sparkling": "Αφρώδες", + "white": "Λευκό" + } + } + } } }, "fan": { diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 865947d..a0be471 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -944,6 +944,18 @@ "zero_fresh": "0° Fresh" }, "name": "Program" + }, + "programs_wc": { + "state": { + "iot_champagne": "Champagne", + "iot_dessert": "Dessert", + "iot_fortified": "Fortified", + "iot_rose": "Rosé", + "iot_whisky": "Whisky", + "red": "Red", + "sparkling": "Sparkling", + "white": "White" + } } }, "switch": { @@ -2055,6 +2067,23 @@ } } } + }, + "wine": { + "state_attributes": { + "preset_mode": { + "name": "Wine Cellar", + "state": { + "iot_champagne": "Champagne", + "iot_dessert": "Dessert", + "iot_fortified": "Fortified", + "iot_rose": "Rosé", + "iot_whisky": "Whisky", + "red": "Red", + "sparkling": "Sparkling", + "white": "White" + } + } + } } }, "fan": { diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index 716bef3..d10ae74 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -877,6 +877,18 @@ "zero_fresh": "0° Fresh" }, "name": "Programa" + }, + "programs_wc": { + "state": { + "iot_champagne": "Champán", + "iot_dessert": "Postre", + "iot_fortified": "Estructurado", + "iot_rose": "Rosado", + "iot_whisky": "Whisky", + "red": "Tinto", + "sparkling": "Espumoso", + "white": "Blanco" + } } }, "select": { @@ -1978,6 +1990,23 @@ } } } + }, + "wine": { + "state_attributes": { + "preset_mode": { + "name": "Cámara de vino", + "state": { + "iot_champagne": "Champán", + "iot_dessert": "Postre", + "iot_fortified": "Estructurado", + "iot_rose": "Rosado", + "iot_whisky": "Whisky", + "red": "Tinto", + "sparkling": "Espumoso", + "white": "Blanco" + } + } + } } }, "fan": { diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index c8bef75..11ef229 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -877,6 +877,18 @@ "zero_fresh": "0° Fresh" }, "name": "Programme" + }, + "programs_wc": { + "state": { + "iot_champagne": "Champagne", + "iot_dessert": "Dessert", + "iot_fortified": "Corsé", + "iot_rose": "Rosé", + "iot_whisky": "Whisky", + "red": "Rouge", + "sparkling": "Pétillant", + "white": "Blanc" + } } }, "select": { @@ -1978,6 +1990,23 @@ } } } + }, + "wine": { + "state_attributes": { + "preset_mode": { + "name": "Cave à vin", + "state": { + "iot_champagne": "Champagne", + "iot_dessert": "Dessert", + "iot_fortified": "Corsé", + "iot_rose": "Rosé", + "iot_whisky": "Whisky", + "red": "Rouge", + "sparkling": "Pétillant", + "white": "Blanc" + } + } + } } }, "fan": { diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index 9a735c9..ef6d6be 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -444,6 +444,9 @@ "tea": "Cold drinks or Beverages" }, "name": "Program" + }, + "programs_wc": { + "state": {} } }, "select": { @@ -1064,6 +1067,14 @@ } } } + }, + "wine": { + "state_attributes": { + "preset_mode": { + "name": "Wine Cellar", + "state": {} + } + } } }, "fan": { diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index 56f91e6..60f329c 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -877,6 +877,18 @@ "zero_fresh": "0° Fresh" }, "name": "Program" + }, + "programs_wc": { + "state": { + "iot_champagne": "Šampanjac", + "iot_dessert": "Desertno", + "iot_fortified": "Strukturirano", + "iot_rose": "Rosé", + "iot_whisky": "Viski", + "red": "Crno", + "sparkling": "Pjenušavo vino", + "white": "Bijelo vino" + } } }, "select": { @@ -1978,6 +1990,23 @@ } } } + }, + "wine": { + "state_attributes": { + "preset_mode": { + "name": "Vinski hladnjak", + "state": { + "iot_champagne": "Šampanjac", + "iot_dessert": "Desertno", + "iot_fortified": "Strukturirano", + "iot_rose": "Rosé", + "iot_whisky": "Viski", + "red": "Crno", + "sparkling": "Pjenušavo vino", + "white": "Bijelo vino" + } + } + } } }, "fan": { diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index c1bfb25..9416e94 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -929,6 +929,18 @@ "zero_fresh": "0° Fresh" }, "name": "Programma" + }, + "programs_wc": { + "state": { + "iot_champagne": "Champagne", + "iot_dessert": "Dolce", + "iot_fortified": "Strutturato", + "iot_rose": "Rosé", + "iot_whisky": "Whisky", + "red": "Rosso", + "sparkling": "Bollicine", + "white": "Bianco" + } } }, "select": { @@ -2030,6 +2042,23 @@ } } } + }, + "wine": { + "state_attributes": { + "preset_mode": { + "name": "Cantinetta", + "state": { + "iot_champagne": "Champagne", + "iot_dessert": "Dolce", + "iot_fortified": "Strutturato", + "iot_rose": "Rosé", + "iot_whisky": "Whisky", + "red": "Rosso", + "sparkling": "Bollicine", + "white": "Bianco" + } + } + } } }, "fan": { diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index a8cd576..e66115e 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -877,6 +877,18 @@ "zero_fresh": "0° Fresh" }, "name": "Programma" + }, + "programs_wc": { + "state": { + "iot_champagne": "Champagne", + "iot_dessert": "Dessert", + "iot_fortified": "Gestructureerd", + "iot_rose": "Rosé", + "iot_whisky": "Whisky", + "red": "Rood", + "sparkling": "Mousserend", + "white": "Wit" + } } }, "select": { @@ -1978,6 +1990,23 @@ } } } + }, + "wine": { + "state_attributes": { + "preset_mode": { + "name": "Wijnkelder", + "state": { + "iot_champagne": "Champagne", + "iot_dessert": "Dessert", + "iot_fortified": "Gestructureerd", + "iot_rose": "Rosé", + "iot_whisky": "Whisky", + "red": "Rood", + "sparkling": "Mousserend", + "white": "Wit" + } + } + } } }, "fan": { diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index a757390..97e76a4 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -877,6 +877,18 @@ "zero_fresh": "0° Fresh" }, "name": "Program" + }, + "programs_wc": { + "state": { + "iot_champagne": "Szampan", + "iot_dessert": "Deser", + "iot_fortified": "Struktura", + "iot_rose": "Różowe", + "iot_whisky": "Whisky", + "red": "Czerwony", + "sparkling": "Musujące", + "white": "Białe" + } } }, "select": { @@ -1978,6 +1990,23 @@ } } } + }, + "wine": { + "state_attributes": { + "preset_mode": { + "name": "Piwniczka z winami", + "state": { + "iot_champagne": "Szampan", + "iot_dessert": "Deser", + "iot_fortified": "Struktura", + "iot_rose": "Różowe", + "iot_whisky": "Whisky", + "red": "Czerwony", + "sparkling": "Musujące", + "white": "Białe" + } + } + } } }, "fan": { diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index 1e68672..c941c8d 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -877,6 +877,18 @@ "zero_fresh": "0° Fresh" }, "name": "Programa" + }, + "programs_wc": { + "state": { + "iot_champagne": "Champanhe", + "iot_dessert": "Digestivo", + "iot_fortified": "Encorpado", + "iot_rose": "Rosé", + "iot_whisky": "Whisky", + "red": "Vermelho", + "sparkling": "Espumante", + "white": "Branco" + } } }, "select": { @@ -1978,6 +1990,23 @@ } } } + }, + "wine": { + "state_attributes": { + "preset_mode": { + "name": "Garrafeira", + "state": { + "iot_champagne": "Champanhe", + "iot_dessert": "Digestivo", + "iot_fortified": "Encorpado", + "iot_rose": "Rosé", + "iot_whisky": "Whisky", + "red": "Vermelho", + "sparkling": "Espumante", + "white": "Branco" + } + } + } } }, "fan": { diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index 8c55275..777e15f 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -877,6 +877,18 @@ "zero_fresh": "0° Fresh" }, "name": "Program" + }, + "programs_wc": { + "state": { + "iot_champagne": "Șampanie", + "iot_dessert": "Desert", + "iot_fortified": "Structurat", + "iot_rose": "Roze", + "iot_whisky": "Whisky", + "red": "Roșu", + "sparkling": "Spumant", + "white": "Alb" + } } }, "select": { @@ -1978,6 +1990,23 @@ } } } + }, + "wine": { + "state_attributes": { + "preset_mode": { + "name": "Cramă", + "state": { + "iot_champagne": "Șampanie", + "iot_dessert": "Desert", + "iot_fortified": "Structurat", + "iot_rose": "Roze", + "iot_whisky": "Whisky", + "red": "Roșu", + "sparkling": "Spumant", + "white": "Alb" + } + } + } } }, "fan": { diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index 334f94d..d37f928 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -877,6 +877,18 @@ "zero_fresh": "0° Fresh" }, "name": "Программа" + }, + "programs_wc": { + "state": { + "iot_champagne": "Шампанское", + "iot_dessert": "Десертное", + "iot_fortified": "Структурированное", + "iot_rose": "Розовое", + "iot_whisky": "Виски", + "red": "Красное", + "sparkling": "Игристое", + "white": "Белое" + } } }, "select": { @@ -1978,6 +1990,23 @@ } } } + }, + "wine": { + "state_attributes": { + "preset_mode": { + "name": "Винный шкаф", + "state": { + "iot_champagne": "Шампанское", + "iot_dessert": "Десертное", + "iot_fortified": "Структурированное", + "iot_rose": "Розовое", + "iot_whisky": "Виски", + "red": "Красное", + "sparkling": "Игристое", + "white": "Белое" + } + } + } } }, "fan": { diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index 7828e6b..ff073c1 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -877,6 +877,18 @@ "zero_fresh": "0° Fresh" }, "name": "Program" + }, + "programs_wc": { + "state": { + "iot_champagne": "Šampanské", + "iot_dessert": "Dezertné", + "iot_fortified": "Štruktúrované", + "iot_rose": "Ružové", + "iot_whisky": "Whisky", + "red": "Červené", + "sparkling": "Šumivé", + "white": "Biele" + } } }, "select": { @@ -1978,6 +1990,23 @@ } } } + }, + "wine": { + "state_attributes": { + "preset_mode": { + "name": "Vinotéka", + "state": { + "iot_champagne": "Šampanské", + "iot_dessert": "Dezertné", + "iot_fortified": "Štruktúrované", + "iot_rose": "Ružové", + "iot_whisky": "Whisky", + "red": "Červené", + "sparkling": "Šumivé", + "white": "Biele" + } + } + } } }, "fan": { diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index e0b5fff..dda46b7 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -877,6 +877,18 @@ "zero_fresh": "0° Fresh" }, "name": "Program" + }, + "programs_wc": { + "state": { + "iot_champagne": "Šampanjec", + "iot_dessert": "Sladica", + "iot_fortified": "Strukturirano", + "iot_rose": "Rose", + "iot_whisky": "Viski", + "red": "Rdeče", + "sparkling": "Peneče vino", + "white": "Belo" + } } }, "select": { @@ -1978,6 +1990,23 @@ } } } + }, + "wine": { + "state_attributes": { + "preset_mode": { + "name": "Vinska klet", + "state": { + "iot_champagne": "Šampanjec", + "iot_dessert": "Sladica", + "iot_fortified": "Strukturirano", + "iot_rose": "Rose", + "iot_whisky": "Viski", + "red": "Rdeče", + "sparkling": "Peneče vino", + "white": "Belo" + } + } + } } }, "fan": { diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index 7faaece..1bddfc8 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -877,6 +877,18 @@ "zero_fresh": "0° Fresh" }, "name": "Program" + }, + "programs_wc": { + "state": { + "iot_champagne": "Šampanjac", + "iot_dessert": "Desert", + "iot_fortified": "Strukturisano", + "iot_rose": "Rosé", + "iot_whisky": "Viski", + "red": "Crvena", + "sparkling": "Penušavo", + "white": "Belo" + } } }, "select": { @@ -1978,6 +1990,23 @@ } } } + }, + "wine": { + "state_attributes": { + "preset_mode": { + "name": "Vinska vitrina", + "state": { + "iot_champagne": "Šampanjac", + "iot_dessert": "Desert", + "iot_fortified": "Strukturisano", + "iot_rose": "Rosé", + "iot_whisky": "Viski", + "red": "Crvena", + "sparkling": "Penušavo", + "white": "Belo" + } + } + } } }, "fan": { diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index 1c80588..d005f13 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -877,6 +877,18 @@ "zero_fresh": "0° Fresh" }, "name": "Program" + }, + "programs_wc": { + "state": { + "iot_champagne": "Şampanya", + "iot_dessert": "Tatlı", + "iot_fortified": "Gövdeli", + "iot_rose": "Roze", + "iot_whisky": "Viski", + "red": "Kırmızı", + "sparkling": "Köpüklü", + "white": "Beyaz" + } } }, "select": { @@ -1978,6 +1990,23 @@ } } } + }, + "wine": { + "state_attributes": { + "preset_mode": { + "name": "Şarap Mahzeni", + "state": { + "iot_champagne": "Şampanya", + "iot_dessert": "Tatlı", + "iot_fortified": "Gövdeli", + "iot_rose": "Roze", + "iot_whisky": "Viski", + "red": "Kırmızı", + "sparkling": "Köpüklü", + "white": "Beyaz" + } + } + } } }, "fan": { diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index 199f7ff..46cd8e3 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -877,6 +877,18 @@ "zero_fresh": "0° Fresh" }, "name": "程序" + }, + "programs_wc": { + "state": { + "iot_champagne": "香槟", + "iot_dessert": "甜点", + "iot_fortified": "结构化", + "iot_rose": "桃红", + "iot_whisky": "威士忌", + "red": "红", + "sparkling": "起泡酒", + "white": "白葡萄酒" + } } }, "select": { @@ -1978,6 +1990,23 @@ } } } + }, + "wine": { + "state_attributes": { + "preset_mode": { + "name": "酒窖", + "state": { + "iot_champagne": "香槟", + "iot_dessert": "甜点", + "iot_fortified": "结构化", + "iot_rose": "桃红", + "iot_whisky": "威士忌", + "red": "红", + "sparkling": "起泡酒", + "white": "白葡萄酒" + } + } + } } }, "fan": { diff --git a/info.md b/info.md index 88d50e8..8e58f8c 100644 --- a/info.md +++ b/info.md @@ -14,6 +14,7 @@ Support for home appliances of Haier's mobile app hOn. - [Fridge](https://github.com/Andre0512/hon#fridge) - [Hob](https://github.com/Andre0512/hon#hob) [BETA] - [Hood](https://github.com/Andre0512/hon#hood) [BETA] +- [Wine Cellar](https://github.com/Andre0512/hon#wine-cellar) [BETA] ## Configuration diff --git a/scripts/generate_translation.py b/scripts/generate_translation.py index 53d66bc..e84f19f 100755 --- a/scripts/generate_translation.py +++ b/scripts/generate_translation.py @@ -47,6 +47,7 @@ PROGRAMS = { "programs_td": "PROGRAMS.TD", "programs_wm": "PROGRAMS.WM_WD", "programs_ref": "PROGRAMS.REF", + "programs_wc": "PROGRAMS.WC", }, } @@ -78,6 +79,12 @@ CLIMATE = { "state": "PROGRAMS.OV", } }, + "wine": { + "preset_mode": { + "name": "WC.NAME", + "state": "PROGRAMS.WC", + } + }, } NAMES = { -- 2.39.5 From d81b1ae712e8e4a3a0130575fa3c69731b2af0f0 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sat, 10 Jun 2023 07:00:57 +0200 Subject: [PATCH 126/205] Add td phase 8, #64 --- custom_components/hon/const.py | 1 + 1 file changed, 1 insertion(+) diff --git a/custom_components/hon/const.py b/custom_components/hon/const.py index 5c89ef4..3612350 100644 --- a/custom_components/hon/const.py +++ b/custom_components/hon/const.py @@ -112,6 +112,7 @@ TUMBLE_DRYER_PR_PHASE = { "1": "TD_CMD&CTRL.STATUS_PHASE.PHASE_HEAT_STROKE", "2": "WASHING_CMD&CTRL.PHASE_DRYING.TITLE", "3": "TD_CMD&CTRL.STATUS_PHASE.PHASE_COOLDOWN", + "8": "unknown", "11": "WASHING_CMD&CTRL.PHASE_READY.TITLE", "12": "unknown", "13": "TD_CMD&CTRL.STATUS_PHASE.PHASE_COOLDOWN", -- 2.39.5 From d3503af158845fba5648a111812a06d3e155b452 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sat, 10 Jun 2023 07:13:07 +0200 Subject: [PATCH 127/205] Bump version --- custom_components/hon/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 569bb8b..70e82d3 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -9,7 +9,7 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": [ - "pyhOn==0.12.3" + "pyhOn==0.13.0" ], - "version": "0.8.1-beta.1" + "version": "0.9.0-beta.1" } -- 2.39.5 From 52c3a861de901b21cb64a94ebb24d9b341542df5 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sun, 11 Jun 2023 22:34:32 +0200 Subject: [PATCH 128/205] Use readable names for options #68 --- custom_components/hon/const.py | 180 ++-- custom_components/hon/sensor.py | 23 +- custom_components/hon/translations/cs.json | 761 ++++++++-------- custom_components/hon/translations/de.json | 761 ++++++++-------- custom_components/hon/translations/el.json | 761 ++++++++-------- custom_components/hon/translations/en.json | 966 +++++++++------------ custom_components/hon/translations/es.json | 761 ++++++++-------- custom_components/hon/translations/fr.json | 761 ++++++++-------- custom_components/hon/translations/he.json | 491 +++++------ custom_components/hon/translations/hr.json | 761 ++++++++-------- custom_components/hon/translations/it.json | 829 ++++++++---------- custom_components/hon/translations/nl.json | 761 ++++++++-------- custom_components/hon/translations/pl.json | 761 ++++++++-------- custom_components/hon/translations/pt.json | 761 ++++++++-------- custom_components/hon/translations/ro.json | 761 ++++++++-------- custom_components/hon/translations/ru.json | 761 ++++++++-------- custom_components/hon/translations/sk.json | 761 ++++++++-------- custom_components/hon/translations/sl.json | 761 ++++++++-------- custom_components/hon/translations/sr.json | 761 ++++++++-------- custom_components/hon/translations/tr.json | 761 ++++++++-------- custom_components/hon/translations/zh.json | 761 ++++++++-------- scripts/generate_translation.py | 247 +----- scripts/translation_keys.py | 337 +++++++ 23 files changed, 7038 insertions(+), 8211 deletions(-) create mode 100644 scripts/translation_keys.py diff --git a/custom_components/hon/const.py b/custom_components/hon/const.py index 3612350..3525859 100644 --- a/custom_components/hon/const.py +++ b/custom_components/hon/const.py @@ -70,123 +70,119 @@ LANGUAGES = [ ] 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", + "0": "ready", + "1": "washing", + "2": "washing", + "3": "spin", + "4": "rinse", + "5": "rinse", + "6": "rinse", + "7": "drying", + "9": "steam", + "10": "ready", + "11": "spin", + "12": "weighting", + "13": "weighting", + "14": "washing", + "15": "washing", + "16": "washing", + "17": "rinse", + "18": "rinse", + "19": "scheduled", + "20": "tumbling", + "24": "refresh", + "25": "washing", + "26": "heating", + "27": "washing", } + MACH_MODE = { - "0": "WASHING_CMD&CTRL.PHASE_READY.TITLE", # NO_STATE - "1": "WASHING_CMD&CTRL.PHASE_READY.TITLE", # SELECTION_MODE - "2": "WASHING_CMD&CTRL.PHASE_RUNNING.TITLE", # EXECUTION_MODE - "3": "WASHING_CMD&CTRL.PHASE_PAUSE.TITLE", # PAUSE_MODE - "4": "WASHING_CMD&CTRL.PHASE_SCHEDULED.TITLE", # DELAY_START_SELECTION_MODE - "5": "WASHING_CMD&CTRL.PHASE_SCHEDULED.TITLE", # DELAY_START_EXECUTION_MODE - "6": "WASHING_CMD&CTRL.PHASE_ERROR.TITLE", # ERROR_MODE - "7": "WASHING_CMD&CTRL.PHASE_READY.TITLE", # END_MODE - "8": "Test", # TEST_MODE - "9": "GLOBALS.APPLIANCE_STATUS.ENDING_PROGRAM", # STOP_MODE + "0": "ready", # NO_STATE + "1": "ready", # SELECTION_MODE + "2": "running", # EXECUTION_MODE + "3": "pause", # PAUSE_MODE + "4": "scheduled", # DELAY_START_SELECTION_MODE + "5": "scheduled", # DELAY_START_EXECUTION_MODE + "6": "error", # ERROR_MODE + "7": "ready", # END_MODE + "8": "test", # TEST_MODE + "9": "ending", # STOP_MODE } + 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", + "0": "ready", + "1": "heat_stroke", + "2": "drying", + "3": "cooldown", "8": "unknown", - "11": "WASHING_CMD&CTRL.PHASE_READY.TITLE", + "11": "ready", "12": "unknown", - "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", + "13": "cooldown", + "14": "heat_stroke", + "15": "heat_stroke", + "16": "cooldown", "17": "unknown", - "18": "WASHING_CMD&CTRL.PHASE_TUMBLING.DASHBOARD_TITLE", - "19": "WASHING_CMD&CTRL.PHASE_DRYING.TITLE", - "20": "WASHING_CMD&CTRL.PHASE_DRYING.TITLE", + "18": "tumbling", + "19": "drying", + "20": "drying", } + DIRTY_LEVEL = { - "1": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OPTIONS_VALUES_DESCRIPTION.LITTLE", - "2": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OPTIONS_VALUES_DESCRIPTION.NORMAL", - "3": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OPTIONS_VALUES_DESCRIPTION.VERY", + "1": "little", + "2": "normal", + "3": "very", } STEAM_LEVEL = { - "0": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OPTIONS_VALUES_DESCRIPTION.NO_STEAM", - "1": "WASHING_CMD&CTRL.GUIDED_WASHING_SYMBOLS_FABRICS.COTTON_TITLE", - "2": "WASHING_CMD&CTRL.GUIDED_WASHING_SYMBOLS_FABRICS.DELICATE_TITLE", - "3": "WASHING_CMD&CTRL.GUIDED_WASHING_SYMBOLS_FABRICS.SYNTHETIC_TITLE", + "0": "no_steam", + "1": "cotton", + "2": "delicate", + "3": "synthetic", } 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", + "0": "ready", + "1": "prewash", + "2": "washing", + "3": "rinse", + "4": "drying", + "5": "ready", + "6": "hot_rinse", } 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", - "11": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.NO_DRY", - "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", + "0": "no_dry", + "1": "iron_dry", + "2": "no_dry_iron", + "3": "cupboard_dry", + "4": "extra_dry", + "11": "no_dry", + "12": "iron_dry", + "13": "cupboard_dry", + "14": "ready_to_wear", + "15": "extra_dry", } 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", + "0": "auto", + "1": "cool", + "2": "cool", + "3": "dry", + "4": "heat", + "5": "fan", + "6": "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", + "1": "high", + "2": "mid", + "3": "low", + "4": "auto", + "5": "auto", } AC_HUMAN_SENSE = { - "0": "AC.PROGRAM_DETAIL.TOUCH_OFF", - "1": "AC.PROGRAM_DETAIL.AVOID_TOUCH", - "2": "AC.PROGRAM_DETAIL.FOLLOW_TOUCH", -} - -REF_ZONES = { - "fridge": "REF.ZONES.FRIDGE", - "freezer": "REF.ZONES.FREEZER", - "vtroom1": "REF.ZONES.MY_ZONE_1", - "fridge_freezer": ["REF.ZONES.FRIDGE", " & ", "REF.ZONES.FREEZER"], + "0": "touch_off", + "1": "avoid_touch", + "2": "follow_touch", } diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index f13870c..3d2a124 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -1,5 +1,6 @@ import logging from dataclasses import dataclass +from typing import List from homeassistant.components.sensor import ( SensorEntity, @@ -36,7 +37,7 @@ class HonConfigSensorEntityDescription(SensorEntityDescription): @dataclass class HonSensorEntityDescription(SensorEntityDescription): - pass + option_list: List = None SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { @@ -47,7 +48,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:washing-machine", device_class=SensorDeviceClass.ENUM, translation_key="program_phases_wm", - options=list(const.WASHING_PR_PHASE), + option_list=const.WASHING_PR_PHASE, ), HonSensorEntityDescription( key="totalElectricityUsed", @@ -102,7 +103,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:information", device_class=SensorDeviceClass.ENUM, translation_key="washing_modes", - options=list(const.MACH_MODE), + option_list=const.MACH_MODE, ), HonSensorEntityDescription( key="errors", name="Error", icon="mdi:math-log", translation_key="errors" @@ -187,7 +188,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:information", device_class=SensorDeviceClass.ENUM, translation_key="washing_modes", - options=list(const.MACH_MODE), + option_list=const.MACH_MODE, ), HonSensorEntityDescription( key="errors", name="Error", icon="mdi:math-log", translation_key="errors" @@ -221,7 +222,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:washing-machine", device_class=SensorDeviceClass.ENUM, translation_key="program_phases_td", - options=list(const.TUMBLE_DRYER_PR_PHASE), + option_list=const.TUMBLE_DRYER_PR_PHASE, ), HonSensorEntityDescription( key="dryLevel", @@ -229,7 +230,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:hair-dryer", device_class=SensorDeviceClass.ENUM, translation_key="dry_levels", - options=list(const.TUMBLE_DRYER_DRY_LEVEL), + option_list=const.TUMBLE_DRYER_DRY_LEVEL, ), HonSensorEntityDescription( key="tempLevel", @@ -391,7 +392,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:information", device_class=SensorDeviceClass.ENUM, translation_key="washing_modes", - options=list(const.MACH_MODE), + option_list=const.MACH_MODE, ), HonSensorEntityDescription( key="errors", name="Error", icon="mdi:math-log", translation_key="errors" @@ -410,7 +411,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:washing-machine", device_class=SensorDeviceClass.ENUM, translation_key="program_phases_dw", - options=list(const.DISHWASHER_PR_PHASE), + option_list=const.DISHWASHER_PR_PHASE, ), HonSensorEntityDescription( key="programName", @@ -697,14 +698,18 @@ class HonSensorEntity(HonEntity, SensorEntity): def __init__(self, hass, entry, device: HonAppliance, description): super().__init__(hass, entry, device, description) - if self.entity_description.key == "programName": + if description.key == "programName": self._attr_options = self._device.settings.get( "startProgram.program" ).values + ["No Program"] + elif description.option_list is not None: + self._attr_options = list(description.option_list.values()) @callback def _handle_coordinator_update(self, update=True) -> None: value = self._device.get(self.entity_description.key, "") + if self.entity_description.option_list is not None: + value = self.entity_description.option_list[value] if not value and self.entity_description.state_class is not None: self._attr_native_value = 0 self._attr_native_value = value diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index e25af24..e034a44 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -3,325 +3,73 @@ "sensor": { "washing_modes": { "state": { - "0": "Připraveno", - "1": "Připraveno", - "3": "Pozastavit", - "4": "Naplánováno", - "5": "Naplánováno", - "6": "Chyba", - "7": "Připraveno", - "2": "Program běží", - "8": "Test", - "9": "Zastavování cyklu…" + "ready": "Připraveno", + "running": "Program běží", + "pause": "Pozastavit", + "scheduled": "Naplánováno", + "error": "Chyba", + "test": "Test", + "ending": "Zastavování cyklu…" + } + }, + "mach_modes_ac": { + "state": { + "auto": "Auto", + "cool": "Chlazení", + "dry": "Odvlhčování", + "heat": "Vytápění", + "fan": "Ventilátor" } }, "program_phases_wm": { "state": { - "0": "Připraveno", - "1": "Praní", - "2": "Praní", - "3": "Odstřeďování", - "4": "Máchání", - "5": "Máchání", - "6": "Máchání", - "7": "Sušení", - "9": "Pára", - "10": "Připraveno", - "11": "Odstřeďování", - "12": "Vážení ", - "13": "Vážení ", - "14": "Praní", - "15": "Praní", - "16": "Praní", - "17": "Máchání", - "18": "Máchání", - "19": "Naplánováno", - "20": "Keep Fresh", - "24": "Osvěžení", - "25": "Praní", - "26": "Ohřev", - "27": "Praní" + "ready": "Připraveno", + "spin": "Odstřeďování", + "rinse": "Máchání", + "drying": "Sušení", + "steam": "Pára", + "weighting": "Vážení ", + "scheduled": "Naplánováno", + "tumbling": "Keep Fresh", + "refresh": "Osvěžení", + "heating": "Ohřev", + "washing": "Praní" }, "name": "Fáze" }, "program_phases_td": { "state": { - "0": "Připraveno", - "1": "Sušení", - "2": "Sušení", - "3": "Vychladnutí", - "13": "Vychladnutí", - "14": "Sušení", - "15": "Sušení", - "16": "Vychladnutí", - "18": "Keep Fresh", - "19": "Sušení", - "20": "Sušení", - "11": "Připraveno", - "17": "unknown", - "12": "unknown" + "ready": "Připraveno", + "heat_stroke": "Sušení", + "drying": "Sušení", + "cooldown": "Vychladnutí", + "unknown": "unknown", + "tumbling": "Keep Fresh" }, "name": "Fáze" }, "program_phases_dw": { "state": { - "0": "Připraveno", - "1": "Předpírka", - "2": "Praní", - "3": "Máchání", - "4": "Sušení", - "5": "Připraveno", - "6": "Hot rinse" + "ready": "Připraveno", + "prewash": "Předpírka", + "washing": "Praní", + "rinse": "Máchání", + "drying": "Sušení", + "hot_rinse": "Hot rinse" }, "name": "Fáze" }, "dry_levels": { "state": { - "0": "Bez sušení", - "1": "Žehlení", - "2": "Do skříně", - "3": "Do skříně", - "4": "Extra suché", - "12": "Žehlení", - "13": "Do skříně", - "14": "Připraveno k oblečení", - "15": "Extra suché", - "11": "Bez sušení" + "no_dry": "Bez sušení", + "iron_dry": "Žehlení", + "no_dry_iron": "Do skříně", + "cupboard_dry": "Do skříně", + "extra_dry": "Extra suché", + "ready_to_wear": "Připraveno k oblečení" }, "name": "Úroveň sušení" }, - "anti_crease": { - "name": "Proti pomačkání" - }, - "power": { - "name": "Stupeň výkonu" - }, - "remaining_time": { - "name": "Zbývající čas" - }, - "temperature": { - "name": "Teplota" - }, - "water_efficiency": { - "name": "Efektivní využívání vody" - }, - "water_saving": { - "name": "Úspora vody" - }, - "duration": { - "name": "Délka" - }, - "target_temperature": { - "name": "Cílová teplota" - }, - "spin_speed": { - "name": "Odstřeďování" - }, - "steam_leve": { - "name": "Úroveň páry" - }, - "dirt_level": { - "name": "Míra znečištění" - }, - "delay_time": { - "name": "Odložené spuštění" - }, - "dry_time": { - "name": "Doba sušení" - }, - "suggested_load": { - "name": "Kapacita náplně" - }, - "energy_label": { - "name": "Energetická účinnost" - }, - "det_dust": { - "name": "Prášky" - }, - "det_liquid": { - "name": "Tekuté prostředky" - }, - "errors": { - "name": "Chyba" - }, - "programs": { - "name": "Aktuální program" - }, - "cycles_total": { - "name": "Cykly Celkem" - }, - "energy_total": { - "name": "Spotřeba energie Celkem" - }, - "water_total": { - "name": "Efektivní využívání vody Celkem" - }, - "energy_current": { - "name": "Spotřeba energie Aktuální" - }, - "water_current": { - "name": "Efektivní využívání vody Aktuální" - }, - "mach_modes_ac": { - "state": { - "0": "Auto", - "1": "Chlazení", - "2": "Chlazení", - "3": "Odvlhčování", - "4": "Vytápění", - "5": "Ventilátor", - "6": "Ventilátor" - } - }, - "programs_td": { - "state": { - "active_dry": "Aktivní sušení", - "allergy_care": "Antialergický", - "all_in_one": "All in One", - "antiallergy": "Antialergický", - "anti_odours": "Proti zápachu", - "auto_care": "Automatická péče", - "baby": "Dětské", - "bed_quilt": "Ložní přikrývka", - "care_30": "Péče 30", - "care_45": "Péče 45", - "care_59": "Péče 59", - "coloured": "Barevné", - "daily_45_min": "DENNI 45'", - "daily_perfect_59_min": "DENNI PERFEKTNI 59'", - "darks_and_coloured": "Tmavé a barevné", - "delicates": "Jemné", - "duvet": "Přikrývky", - "eco": "Eco bavlna", - "ecospeed_cottons": "Ecospeed bavlna", - "ecospeed_delicates": "Eco rychly - jemne", - "ecospeed_mixed": "Ecospeed směsné", - "extra_hygiene": "HYGIENA EXTRA", - "fitness": "Cvičení", - "fresh_care": "Svěží péče", - "genius": "Genius", - "hqd_baby_care": "Baby Care", - "hqd_bath_towel": "Ručníky", - "hqd_bed_sheets": "Povlečení", - "hqd_bulky": "Objemné kusy", - "hqd_casual": "Casual", - "hqd_cold_wind_30": "Chladný vánek 30 minut", - "hqd_cold_wind_timing": "Chladný vánek ", - "hqd_cotton": "Bavlna", - "hqd_curtain": "Záclony", - "hqd_delicate": "Jemné", - "hqd_diaper": "Pleny", - "hqd_duvet": "Přikrývky", - "hqd_feather": "Prošívané bundy", - "hqd_hot_wind_timing": "Horký vzduch", - "hqd_hygienic": "Dezinfekce", - "hqd_i_refresh": "I-Refresh", - "hqd_i_refresh_pro": "I-Refresh Pro", - "hqd_jacket": "Bundy", - "hqd_jeans": "Džíny", - "hqd_luxury": "Luxusní", - "hqd_mix": "Směsné", - "hqd_night_dry": "Sušení přes noc", - "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", - "hqd_quick_20": "Rychlý 20", - "hqd_quick_30": "Rychlý 30", - "hqd_quick_dry": "Rychlé sušení 30", - "hqd_quilt": "Deky", - "hqd_refresh": "Osvěžení", - "hqd_school_uniform": "Školní uniformy", - "hqd_shirt": "Košile", - "hqd_shoes": "Obuv", - "hqd_silk": "Hedvábí", - "hqd_sports": "Sportovní", - "hqd_synthetics": "Syntetika", - "hqd_timer": "Načasováno", - "hqd_towel": "Ručníky", - "hqd_underwear": "Spodní prádlo", - "hqd_warm_up": "Ohřátí", - "hqd_wool": "Vlna", - "hqd_working_suit": "Pracovní oděvy", - "hygiene": "Hygiena", - "iot_checkup": "Kontrola", - "iot_dry_anti_mites": "Proti roztočům", - "iot_dry_baby": "Dětské", - "iot_dry_backpacks": "Batohy", - "iot_dry_bathrobe": "Župany", - "iot_dry_bed_linen": "Ložní prádlo", - "iot_dry_bed_quilt": "Ložní přikrývka", - "iot_dry_cotton": "Bavlna", - "iot_dry_cuddly_toys": "Plyšové hračky", - "iot_dry_curtains": "Závěsy", - "iot_dry_dehumidifier": "Odstraňovač vlhkosti", - "iot_dry_delicates": "Jemné prádlo", - "iot_dry_delicate_tablecloths": "Jemné ubrusy", - "iot_dry_denim_jeans": "Džínovina - džíny", - "iot_dry_down_jacket": "Jacket", - "iot_dry_duvet": "Přikrývky", - "iot_dry_easy_iron_cotton": "Super snadné žehlení", - "iot_dry_easy_iron_synthetics": "Velmi snadné žehlení - syntetika", - "iot_dry_gym_fit": "Sportovní oblečení", - "iot_dry_lingerie": "Spodní prádlo", - "iot_dry_mixed": "Smíšené", - "iot_dry_playsuits": "Tepláky", - "iot_dry_rapid_30": "Rapid 30", - "iot_dry_rapid_59": "Rychlý 59'.", - "iot_dry_refresh": "Osvěžení", - "iot_dry_regenerates_waterproof": "Oživení nepromokavých tkanin", - "iot_dry_relax_creases": "Uvolnění záhybů", - "iot_dry_shirts": "Košile", - "iot_dry_small_load": "Malá náplň", - "iot_dry_swimsuits_and_bikinis": "Plavky", - "iot_dry_synthetics": "Syntetika", - "iot_dry_synthetic_dry": "Syntetika - suché", - "iot_dry_tablecloths": "Ubrusy", - "iot_dry_technical_fabrics": "Technické tkaniny", - "iot_dry_warm_embrace": "Dětská zavinovačka", - "iot_dry_wool": "Woolmark", - "jeans": "Džíny", - "mix_and_dry": "Mix a suché", - "pets": "Zvířata", - "pre_iron": "Před žehlením", - "rapid_30": "Rapid 30", - "rapid_45": "Rychlý 45 min", - "rapid_59": "Perfektně rychlý 59 min", - "refresh": "Osvěžení", - "relax_creases": "Uvolnění záhybů", - "saving_30_min": "USPORNY 30'", - "shirts": "Košile", - "shoes": "Obuv", - "small_load": "Malá náplň", - "soft_care": "Měkká péče", - "sport_plus": "Sport", - "super_easy_iron_misti": "Velmi snadné žehlení – smíšené", - "super_easy_iron_xxl": "Velmi snadné žehlení – XXL", - "super_fast_cottons": "Super rychlý bavlna", - "super_fast_delicates": "Super rychlý jemné", - "synthetics": "Syntetika", - "total_care": "Total Care", - "trainers": "Sportovní obuv", - "ultra_care": "Ultra Care", - "waterproof_revitalize": "Obnovení voděodolnosti", - "whites": "Bílé prádlo", - "wool": "Sušení vlny", - "woolmark": "Woolmark", - "xxl_load": "XXL náplň", - "zoom_59": "Zoom 59" - }, - "name": "Program" - }, - "room_temperature": { - "name": "Pokojová teplota" - }, - "humidity": { - "name": "Vlhkost" - }, - "freezer_temp": { - "name": "Teplota mrazničky" - }, - "fridge_temp": { - "name": "Teplota chladničky" - }, "programs_ac": { "state": { "iot_10_heating": "Funkce Vytápění 10 °C", @@ -545,6 +293,143 @@ }, "name": "Program" }, + "programs_td": { + "state": { + "active_dry": "Aktivní sušení", + "allergy_care": "Antialergický", + "all_in_one": "All in One", + "antiallergy": "Antialergický", + "anti_odours": "Proti zápachu", + "auto_care": "Automatická péče", + "baby": "Dětské", + "bed_quilt": "Ložní přikrývka", + "care_30": "Péče 30", + "care_45": "Péče 45", + "care_59": "Péče 59", + "coloured": "Barevné", + "daily_45_min": "DENNI 45'", + "daily_perfect_59_min": "DENNI PERFEKTNI 59'", + "darks_and_coloured": "Tmavé a barevné", + "delicates": "Jemné", + "duvet": "Přikrývky", + "eco": "Eco bavlna", + "ecospeed_cottons": "Ecospeed bavlna", + "ecospeed_delicates": "Eco rychly - jemne", + "ecospeed_mixed": "Ecospeed směsné", + "extra_hygiene": "HYGIENA EXTRA", + "fitness": "Cvičení", + "fresh_care": "Svěží péče", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Ručníky", + "hqd_bed_sheets": "Povlečení", + "hqd_bulky": "Objemné kusy", + "hqd_casual": "Casual", + "hqd_cold_wind_30": "Chladný vánek 30 minut", + "hqd_cold_wind_timing": "Chladný vánek ", + "hqd_cotton": "Bavlna", + "hqd_curtain": "Záclony", + "hqd_delicate": "Jemné", + "hqd_diaper": "Pleny", + "hqd_duvet": "Přikrývky", + "hqd_feather": "Prošívané bundy", + "hqd_hot_wind_timing": "Horký vzduch", + "hqd_hygienic": "Dezinfekce", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Bundy", + "hqd_jeans": "Džíny", + "hqd_luxury": "Luxusní", + "hqd_mix": "Směsné", + "hqd_night_dry": "Sušení přes noc", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Rychlý 20", + "hqd_quick_30": "Rychlý 30", + "hqd_quick_dry": "Rychlé sušení 30", + "hqd_quilt": "Deky", + "hqd_refresh": "Osvěžení", + "hqd_school_uniform": "Školní uniformy", + "hqd_shirt": "Košile", + "hqd_shoes": "Obuv", + "hqd_silk": "Hedvábí", + "hqd_sports": "Sportovní", + "hqd_synthetics": "Syntetika", + "hqd_timer": "Načasováno", + "hqd_towel": "Ručníky", + "hqd_underwear": "Spodní prádlo", + "hqd_warm_up": "Ohřátí", + "hqd_wool": "Vlna", + "hqd_working_suit": "Pracovní oděvy", + "hygiene": "Hygiena", + "iot_checkup": "Kontrola", + "iot_dry_anti_mites": "Proti roztočům", + "iot_dry_baby": "Dětské", + "iot_dry_backpacks": "Batohy", + "iot_dry_bathrobe": "Župany", + "iot_dry_bed_linen": "Ložní prádlo", + "iot_dry_bed_quilt": "Ložní přikrývka", + "iot_dry_cotton": "Bavlna", + "iot_dry_cuddly_toys": "Plyšové hračky", + "iot_dry_curtains": "Závěsy", + "iot_dry_dehumidifier": "Odstraňovač vlhkosti", + "iot_dry_delicates": "Jemné prádlo", + "iot_dry_delicate_tablecloths": "Jemné ubrusy", + "iot_dry_denim_jeans": "Džínovina - džíny", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Přikrývky", + "iot_dry_easy_iron_cotton": "Super snadné žehlení", + "iot_dry_easy_iron_synthetics": "Velmi snadné žehlení - syntetika", + "iot_dry_gym_fit": "Sportovní oblečení", + "iot_dry_lingerie": "Spodní prádlo", + "iot_dry_mixed": "Smíšené", + "iot_dry_playsuits": "Tepláky", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Rychlý 59'.", + "iot_dry_refresh": "Osvěžení", + "iot_dry_regenerates_waterproof": "Oživení nepromokavých tkanin", + "iot_dry_relax_creases": "Uvolnění záhybů", + "iot_dry_shirts": "Košile", + "iot_dry_small_load": "Malá náplň", + "iot_dry_swimsuits_and_bikinis": "Plavky", + "iot_dry_synthetics": "Syntetika", + "iot_dry_synthetic_dry": "Syntetika - suché", + "iot_dry_tablecloths": "Ubrusy", + "iot_dry_technical_fabrics": "Technické tkaniny", + "iot_dry_warm_embrace": "Dětská zavinovačka", + "iot_dry_wool": "Woolmark", + "jeans": "Džíny", + "mix_and_dry": "Mix a suché", + "pets": "Zvířata", + "pre_iron": "Před žehlením", + "rapid_30": "Rapid 30", + "rapid_45": "Rychlý 45 min", + "rapid_59": "Perfektně rychlý 59 min", + "refresh": "Osvěžení", + "relax_creases": "Uvolnění záhybů", + "saving_30_min": "USPORNY 30'", + "shirts": "Košile", + "shoes": "Obuv", + "small_load": "Malá náplň", + "soft_care": "Měkká péče", + "sport_plus": "Sport", + "super_easy_iron_misti": "Velmi snadné žehlení – smíšené", + "super_easy_iron_xxl": "Velmi snadné žehlení – XXL", + "super_fast_cottons": "Super rychlý bavlna", + "super_fast_delicates": "Super rychlý jemné", + "synthetics": "Syntetika", + "total_care": "Total Care", + "trainers": "Sportovní obuv", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Obnovení voděodolnosti", + "whites": "Bílé prádlo", + "wool": "Sušení vlny", + "woolmark": "Woolmark", + "xxl_load": "XXL náplň", + "zoom_59": "Zoom 59" + }, + "name": "Program" + }, "programs_wm": { "state": { "20_degrees_coloured_cottons": "20° barevné a bavlněné látky", @@ -556,7 +441,7 @@ "allergy_care_pro": "Antialergická péče Pro", "all_in_one_49": "Vše v jednom 49'.", "all_in_one_59": "Vše v jednom 59'.", - "all_in_one_59_steam": "Aktivní praní + pára", + "all_in_one_59_steam": "Vše v jednom 59' + pára", "autocare": "Autocare", "autoclean": "Čištění bubnu", "baby_60": "Všechno dětské 60°C", @@ -622,7 +507,7 @@ "iot_active_steam": "Pára", "iot_active_wash_steam": "Aktivní praní", "iot_allergy_care_pro": "Antialergická péče Pro", - "iot_all_in_one_59_steam": "Aktivní praní + pára", + "iot_all_in_one_59_steam": "Vše v jednom 59' + pára", "iot_checkup": "Kontrola", "iot_colour_59_steam": "Barevné 59'' + pára", "iot_cottons_steam": "Bavlna + Pára", @@ -889,9 +774,148 @@ "sparkling": "Šumivé", "white": "Bílé" } + }, + "dry_time": { + "name": "Doba sušení" + }, + "power": { + "name": "Stupeň výkonu" + }, + "remaining_time": { + "name": "Zbývající čas" + }, + "temperature": { + "name": "Teplota" + }, + "water_efficiency": { + "name": "Efektivní využívání vody" + }, + "water_saving": { + "name": "Úspora vody" + }, + "duration": { + "name": "Délka" + }, + "target_temperature": { + "name": "Cílová teplota" + }, + "spin_speed": { + "name": "Odstřeďování" + }, + "steam_leve": { + "name": "Úroveň páry" + }, + "dirt_level": { + "name": "Míra znečištění" + }, + "delay_time": { + "name": "Odložené spuštění" + }, + "suggested_load": { + "name": "Kapacita náplně" + }, + "energy_label": { + "name": "Energetická účinnost" + }, + "det_dust": { + "name": "Prášky" + }, + "det_liquid": { + "name": "Tekuté prostředky" + }, + "errors": { + "name": "Chyba" + }, + "programs": { + "name": "Aktuální program" + }, + "room_temperature": { + "name": "Pokojová teplota" + }, + "humidity": { + "name": "Vlhkost" + }, + "cycles_total": { + "name": "Cykly Celkem" + }, + "energy_total": { + "name": "Spotřeba energie Celkem" + }, + "water_total": { + "name": "Efektivní využívání vody Celkem" + }, + "energy_current": { + "name": "Spotřeba energie Aktuální" + }, + "water_current": { + "name": "Efektivní využívání vody Aktuální" + }, + "freezer_temp": { + "name": "Teplota mrazničky" + }, + "fridge_temp": { + "name": "Teplota chladničky" } }, "select": { + "dry_levels": { + "state": { + "no_dry": "Bez sušení", + "iron_dry": "Žehlení", + "no_dry_iron": "Do skříně", + "cupboard_dry": "Do skříně", + "extra_dry": "Extra suché", + "ready_to_wear": "Připraveno k oblečení" + }, + "name": "Úroveň sušení" + }, + "eco_pilot": { + "state": { + "touch_off": "Vypnuto", + "avoid_touch": "Vyhybání", + "follow_touch": "Sledování" + }, + "name": "Senzor osob" + }, + "fan_mode": { + "state": { + "high": "Vysoký", + "mid": "Střední ", + "low": "Nízký", + "auto": "Auto" + } + }, + "ref_zones": { + "state": { + "fridge": "Chladnička", + "freezer": "Mraznička", + "vtroom1": "My Zone", + "fridge_freezer": "Chladnička & Mraznička" + }, + "name": "Zóna" + }, + "programs_ac": { + "state": { + "iot_10_heating": "Funkce Vytápění 10 °C", + "iot_auto": "Auto", + "iot_cool": "Chlazení", + "iot_dry": "Odvlhčování", + "iot_fan": "Ventilátor", + "iot_heat": "Vytápění", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Automatické čištění", + "iot_self_clean": "Samočištění zamrazením", + "iot_self_clean_56": "Samočištění 56°C sterilizace ", + "iot_simple_start": "Spustit nyní", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + auto", + "iot_uv_and_cool": "UV + zchlazení", + "iot_uv_and_dry": "UV + odstranění vlhkosti", + "iot_uv_and_fan": "UV + ventilátor", + "iot_uv_and_heat": "UV + ohřev" + }, + "name": "Program" + }, "programs_dw": { "state": { "59_min": "Rychlý 59'", @@ -1241,7 +1265,7 @@ "allergy_care_pro": "Antialergická péče Pro", "all_in_one_49": "Vše v jednom 49'.", "all_in_one_59": "Vše v jednom 59'.", - "all_in_one_59_steam": "Aktivní praní + pára", + "all_in_one_59_steam": "Vše v jednom 59' + pára", "autocare": "Autocare", "autoclean": "Čištění bubnu", "baby_60": "Všechno dětské 60°C", @@ -1307,7 +1331,7 @@ "iot_active_steam": "Pára", "iot_active_wash_steam": "Aktivní praní", "iot_allergy_care_pro": "Antialergická péče Pro", - "iot_all_in_one_59_steam": "Aktivní praní + pára", + "iot_all_in_one_59_steam": "Vše v jednom 59' + pára", "iot_checkup": "Kontrola", "iot_colour_59_steam": "Barevné 59'' + pára", "iot_cottons_steam": "Bavlna + Pára", @@ -1540,69 +1564,6 @@ }, "name": "Program" }, - "dry_levels": { - "state": { - "0": "Bez sušení", - "1": "Žehlení", - "2": "Do skříně", - "3": "Do skříně", - "4": "Extra suché", - "12": "Žehlení", - "13": "Do skříně", - "14": "Připraveno k oblečení", - "15": "Extra suché", - "11": "Bez sušení" - }, - "name": "Úroveň sušení" - }, - "spin_speed": { - "name": "Odstřeďování" - }, - "temperature": { - "name": "Teplota" - }, - "dry_time": { - "name": "Doba sušení" - }, - "eco_pilot": { - "state": { - "0": "Vypnuto", - "1": "Vyhybání", - "2": "Sledování" - }, - "name": "Senzor osob" - }, - "fan_mode": { - "state": { - "1": "Vysoký", - "2": "Střední ", - "3": "Nízký", - "4": "Auto", - "5": "Auto" - } - }, - "programs_ac": { - "state": { - "iot_10_heating": "Funkce Vytápění 10 °C", - "iot_auto": "Auto", - "iot_cool": "Chlazení", - "iot_dry": "Odvlhčování", - "iot_fan": "Ventilátor", - "iot_heat": "Vytápění", - "iot_nano_aqua": "Nano Aqua", - "iot_purify": "Automatické čištění", - "iot_self_clean": "Samočištění zamrazením", - "iot_self_clean_56": "Samočištění 56°C sterilizace ", - "iot_simple_start": "Spustit nyní", - "iot_uv": "UV", - "iot_uv_and_auto": "UV + auto", - "iot_uv_and_cool": "UV + zchlazení", - "iot_uv_and_dry": "UV + odstranění vlhkosti", - "iot_uv_and_fan": "UV + ventilátor", - "iot_uv_and_heat": "UV + ohřev" - }, - "name": "Program" - }, "programs_ref": { "state": { "auto_set": "AUTOMATICKÉ NASTAVENÍ", @@ -1626,17 +1587,17 @@ }, "name": "Program" }, + "dry_time": { + "name": "Doba sušení" + }, + "spin_speed": { + "name": "Odstřeďování" + }, + "temperature": { + "name": "Teplota" + }, "remaining_time": { "name": "Zbývající čas" - }, - "ref_zones": { - "state": { - "fridge": "Chladnička", - "freezer": "Mraznička", - "vtroom1": "My Zone", - "fridge_freezer": "Chladnička & Mraznička" - }, - "name": "Zóna" } }, "switch": { @@ -1724,18 +1685,15 @@ "acqua_plus": { "name": "Aquaplus" }, - "auto_dose": { - "name": "Automatické dávkování" - }, - "good_night": { - "name": "Dobrou noc" - }, "auto_dose_softener": { "name": "Automatické dávkování Avivážní prostředek" }, "auto_dose_detergent": { "name": "Automatické dávkování Prací prostředek" }, + "good_night": { + "name": "Dobrou noc" + }, "auto_set": { "name": "Automatické nastavení" }, @@ -1768,27 +1726,12 @@ "anti_crease": { "name": "Proti pomačkání" }, - "aqua_plus": { + "acqua_plus": { "name": "Aquaplus" }, "spin_speed": { "name": "Odstřeďování" }, - "programs_dw": { - "name": "Program" - }, - "programs_ih": { - "name": "Program" - }, - "programs_ov": { - "name": "Program" - }, - "programs_td": { - "name": "Program" - }, - "programs_wm": { - "name": "Program" - }, "still_hot": { "name": "Stále horká" }, @@ -1819,12 +1762,6 @@ "prewash": { "name": "Předpírka\r\r\r\r\r\r\r\n" }, - "acqua_plus": { - "name": "Aquaplus" - }, - "auto_dose": { - "name": "Automatické dávkování" - }, "buzzer": { "name": "Zvuková signalizace konce cyklu" }, @@ -1850,6 +1787,17 @@ "name": "Výměna filtru" } }, + "button": { + "induction_hob": { + "name": "Indukční varná deska" + }, + "start_program": { + "name": "Program Zahájení" + }, + "stop_program": { + "name": "Program Zastavit" + } + }, "number": { "power_management": { "name": "Řízení výkonu" @@ -1888,17 +1836,6 @@ "name": "Cílová teplota Chladnička" } }, - "button": { - "induction_hob": { - "name": "Indukční varná deska" - }, - "start_program": { - "name": "Program Zahájení" - }, - "stop_program": { - "name": "Program Zastavit" - } - }, "climate": { "air_conditioner": { "name": "Klimatizační jednotka" diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index 1d3dad2..8c21355 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -3,325 +3,73 @@ "sensor": { "washing_modes": { "state": { - "0": "Bereit", - "1": "Bereit", - "3": "Anhalten", - "4": "Geplant", - "5": "Geplant", - "6": "Fehler", - "7": "Bereit", - "2": "Programm läuft", - "8": "Test", - "9": "Programm wird angehalten..." + "ready": "Bereit", + "running": "Programm läuft", + "pause": "Anhalten", + "scheduled": "Geplant", + "error": "Fehler", + "test": "Test", + "ending": "Programm wird angehalten..." + } + }, + "mach_modes_ac": { + "state": { + "auto": "Auto", + "cool": "Kühl", + "dry": "Trocken", + "heat": "Heizen", + "fan": "Ventilator" } }, "program_phases_wm": { "state": { - "0": "Bereit", - "1": "Waschen", - "2": "Waschen", - "3": "Schleudern", - "4": "Spülen", - "5": "Spülen", - "6": "Spülen", - "7": "Trocknen", - "9": "Dampf", - "10": "Bereit", - "11": "Schleudern", - "12": "Wiegen ", - "13": "Wiegen ", - "14": "Waschen", - "15": "Waschen", - "16": "Waschen", - "17": "Spülen", - "18": "Spülen", - "19": "Geplant", - "20": "Auffrischen", - "24": "Auffrischen", - "25": "Waschen", - "26": "Heizung", - "27": "Waschen" + "ready": "Bereit", + "spin": "Schleudern", + "rinse": "Spülen", + "drying": "Trocknen", + "steam": "Dampf", + "weighting": "Wiegen ", + "scheduled": "Geplant", + "tumbling": "Auffrischen", + "refresh": "Auffrischen", + "heating": "Heizung", + "washing": "Waschen" }, "name": "Phase" }, "program_phases_td": { "state": { - "0": "Bereit", - "1": "Trocknen", - "2": "Trocknen", - "3": "Abkühlen", - "13": "Abkühlen", - "14": "Trocknen", - "15": "Trocknen", - "16": "Abkühlen", - "18": "Auffrischen", - "19": "Trocknen", - "20": "Trocknen", - "11": "Bereit", - "17": "unknown", - "12": "unknown" + "ready": "Bereit", + "heat_stroke": "Trocknen", + "drying": "Trocknen", + "cooldown": "Abkühlen", + "unknown": "unknown", + "tumbling": "Auffrischen" }, "name": "Phase" }, "program_phases_dw": { "state": { - "0": "Bereit", - "1": "Vorwaschen", - "2": "Waschen", - "3": "Spülen", - "4": "Trocknen", - "5": "Bereit", - "6": "Hot rinse" + "ready": "Bereit", + "prewash": "Vorwaschen", + "washing": "Waschen", + "rinse": "Spülen", + "drying": "Trocknen", + "hot_rinse": "Hot rinse" }, "name": "Phase" }, "dry_levels": { "state": { - "0": "Keine Trocknung", - "1": "Bügeln", - "2": "Wäsche fertig", - "3": "Wäsche fertig", - "4": "Extra trocken", - "12": "Bügeln", - "13": "Wäsche fertig", - "14": "Bereit zum Anziehen", - "15": "Extra trocken", - "11": "Keine Trocknung" + "no_dry": "Keine Trocknung", + "iron_dry": "Bügeln", + "no_dry_iron": "Wäsche fertig", + "cupboard_dry": "Wäsche fertig", + "extra_dry": "Extra trocken", + "ready_to_wear": "Bereit zum Anziehen" }, "name": "Trocknungsstufe" }, - "anti_crease": { - "name": "Knitterschutz" - }, - "power": { - "name": "Leistungsstufe" - }, - "remaining_time": { - "name": "Verbleibende Zeit" - }, - "temperature": { - "name": "Temperatur" - }, - "water_efficiency": { - "name": "Wasserverbrauch" - }, - "water_saving": { - "name": "Wasserersparnis" - }, - "duration": { - "name": "Dauer" - }, - "target_temperature": { - "name": "Zieltemperatur" - }, - "spin_speed": { - "name": "Schleudern" - }, - "steam_leve": { - "name": "Dampfstufe" - }, - "dirt_level": { - "name": "Verschmutzungsgrad" - }, - "delay_time": { - "name": "Einschaltverzögerung" - }, - "dry_time": { - "name": "Trocknungsdauer" - }, - "suggested_load": { - "name": "Ladekapazität" - }, - "energy_label": { - "name": "Energieeffizienz" - }, - "det_dust": { - "name": "Pulver" - }, - "det_liquid": { - "name": "Flüssigwaschmittel" - }, - "errors": { - "name": "Fehler" - }, - "programs": { - "name": "Aktuelles Programm" - }, - "cycles_total": { - "name": "Waschgänge Insgesamt" - }, - "energy_total": { - "name": "Energieverbrauch Insgesamt" - }, - "water_total": { - "name": "Wasserverbrauch Insgesamt" - }, - "energy_current": { - "name": "Energieverbrauch Aktuell" - }, - "water_current": { - "name": "Wasserverbrauch Aktuell" - }, - "mach_modes_ac": { - "state": { - "0": "Auto", - "1": "Kühl", - "2": "Kühl", - "3": "Trocken", - "4": "Heizen", - "5": "Ventilator", - "6": "Ventilator" - } - }, - "programs_td": { - "state": { - "active_dry": "Active Dry", - "allergy_care": "Anti-Allergie-Programm", - "all_in_one": "All in One", - "antiallergy": "Anti-Allergie-Programm", - "anti_odours": "Anti-Geruch", - "auto_care": "Auto Care", - "baby": "Baby", - "bed_quilt": "Bettdecken", - "care_30": "Pflege 30", - "care_45": "Pflege 45", - "care_59": "Pflege 59", - "coloured": "Buntwäsche", - "daily_45_min": "DAILY 45'", - "daily_perfect_59_min": "DAILY PERFECT 59'", - "darks_and_coloured": "Dunkles & Buntwäsche", - "delicates": "Feinwäsche", - "duvet": "Oberbetten", - "eco": "Eco-Baumwolle", - "ecospeed_cottons": "Ecospeed Baumwolle", - "ecospeed_delicates": "Ecospeed Feinwaesche", - "ecospeed_mixed": "Ecospeed Mischwäsche", - "extra_hygiene": "Extra Hygiene", - "fitness": "Fitness", - "fresh_care": "Fresh Care", - "genius": "Genius", - "hqd_baby_care": "Baby Care", - "hqd_bath_towel": "Handtücher", - "hqd_bed_sheets": "Bettwäsche", - "hqd_bulky": "Schwere Textilien", - "hqd_casual": "Casual", - "hqd_cold_wind_30": "Kühle Brise 30 Minuten", - "hqd_cold_wind_timing": "Kühle Brise ", - "hqd_cotton": "Baumwolle", - "hqd_curtain": "Vorhänge", - "hqd_delicate": "Feinwäsche", - "hqd_diaper": "Windeln", - "hqd_duvet": "Bettdecke", - "hqd_feather": "Daunenjacken", - "hqd_hot_wind_timing": "Heiße Luft", - "hqd_hygienic": "Desinfektion", - "hqd_i_refresh": "I-Refresh", - "hqd_i_refresh_pro": "I-Refresh Pro", - "hqd_jacket": "Jacken", - "hqd_jeans": "Jeans", - "hqd_luxury": "Luxury", - "hqd_mix": "Gemischt", - "hqd_night_dry": "Trocknung über Nacht", - "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious Cure", - "hqd_quick_20": "Schnell 20", - "hqd_quick_30": "Schnell 30", - "hqd_quick_dry": "Schnell trocken 30", - "hqd_quilt": "Steppdecken", - "hqd_refresh": "Auffrischen", - "hqd_school_uniform": "Schuluniform", - "hqd_shirt": "Hemden", - "hqd_shoes": "Schuhe", - "hqd_silk": "Seide", - "hqd_sports": "Sport", - "hqd_synthetics": "Synthetik", - "hqd_timer": "Zeitgesteuert", - "hqd_towel": "Handtücher", - "hqd_underwear": "Unterwäsche", - "hqd_warm_up": "Erwärmen", - "hqd_wool": "Wolle", - "hqd_working_suit": "Arbeitskleidung", - "hygiene": "Hygiene", - "iot_checkup": "Check-up", - "iot_dry_anti_mites": "Anti-Milben-Programm", - "iot_dry_baby": "Baby", - "iot_dry_backpacks": "Rucksäcke", - "iot_dry_bathrobe": "Bademäntel", - "iot_dry_bed_linen": "Bettwäsche", - "iot_dry_bed_quilt": "Bettdecken", - "iot_dry_cotton": "Baumwolle", - "iot_dry_cuddly_toys": "Stofftiere", - "iot_dry_curtains": "Vorhänge", - "iot_dry_dehumidifier": "Entfeuchter", - "iot_dry_delicates": "Feinwäsche", - "iot_dry_delicate_tablecloths": "Empfindliche Tischdecken", - "iot_dry_denim_jeans": "Denim - Jeans", - "iot_dry_down_jacket": "Jacket", - "iot_dry_duvet": "Oberbetten", - "iot_dry_easy_iron_cotton": "Superleichtes Bügeln", - "iot_dry_easy_iron_synthetics": "Super Leichtbügeln Synthetik", - "iot_dry_gym_fit": "Gymnastik & Fitness – Sportkleidung", - "iot_dry_lingerie": "Unterwäsche", - "iot_dry_mixed": "Gemischt", - "iot_dry_playsuits": "Jumpsuits", - "iot_dry_rapid_30": "Rapid 30", - "iot_dry_rapid_59": "Rapid 59'.", - "iot_dry_refresh": "Auffrischen", - "iot_dry_regenerates_waterproof": "Auffrischung – wasserdichte Kleidung", - "iot_dry_relax_creases": "Falten glätten", - "iot_dry_shirts": "Hemden", - "iot_dry_small_load": "Kleine Beladung", - "iot_dry_swimsuits_and_bikinis": "Badeanzüge", - "iot_dry_synthetics": "Synthetische", - "iot_dry_synthetic_dry": "Synthetik trocken", - "iot_dry_tablecloths": "Tischdecken", - "iot_dry_technical_fabrics": "Technisches Gewebe", - "iot_dry_warm_embrace": "Superschon", - "iot_dry_wool": "Wolle", - "jeans": "Jeans", - "mix_and_dry": "Mix&Dry", - "pets": "Haustiere", - "pre_iron": "Vorbügeln", - "rapid_30": "Rapid 30", - "rapid_45": "Schnell 45 Min", - "rapid_59": "Perfekt Schnellwaschgang 59 Min.", - "refresh": "Auffrischen", - "relax_creases": "Falten glätten", - "saving_30_min": "ECO 30'", - "shirts": "Hemden", - "shoes": "Schuhe", - "small_load": "Kleine Beladung", - "soft_care": "Sanfte Pflege", - "sport_plus": "Sports", - "super_easy_iron_misti": "Super Leichtbügeln Gemischt", - "super_easy_iron_xxl": "Super Leichtbügeln XXL", - "super_fast_cottons": "Superschnell Baumwolle", - "super_fast_delicates": "Superschnell Feinwäsche", - "synthetics": "Synthetische", - "total_care": "Total Care", - "trainers": "Turnschuhe", - "ultra_care": "Ultra Care", - "waterproof_revitalize": "Auffrischen wasserdichter Stoffe", - "whites": "Weißen", - "wool": "Wolle Trocknen", - "woolmark": "Wolle", - "xxl_load": "XXL-Beladung", - "zoom_59": "Zoom 59" - }, - "name": "Programm" - }, - "room_temperature": { - "name": "Raumtemperatur" - }, - "humidity": { - "name": "Luftfeuchtigkeit" - }, - "freezer_temp": { - "name": "Gefrierschrank-Temperatur" - }, - "fridge_temp": { - "name": "Temperatur des Kühlschranks" - }, "programs_ac": { "state": { "iot_10_heating": "10°C Heizfunktion", @@ -545,6 +293,143 @@ }, "name": "Programm" }, + "programs_td": { + "state": { + "active_dry": "Active Dry", + "allergy_care": "Anti-Allergie-Programm", + "all_in_one": "All in One", + "antiallergy": "Anti-Allergie-Programm", + "anti_odours": "Anti-Geruch", + "auto_care": "Auto Care", + "baby": "Baby", + "bed_quilt": "Bettdecken", + "care_30": "Pflege 30", + "care_45": "Pflege 45", + "care_59": "Pflege 59", + "coloured": "Buntwäsche", + "daily_45_min": "DAILY 45'", + "daily_perfect_59_min": "DAILY PERFECT 59'", + "darks_and_coloured": "Dunkles & Buntwäsche", + "delicates": "Feinwäsche", + "duvet": "Oberbetten", + "eco": "Eco-Baumwolle", + "ecospeed_cottons": "Ecospeed Baumwolle", + "ecospeed_delicates": "Ecospeed Feinwaesche", + "ecospeed_mixed": "Ecospeed Mischwäsche", + "extra_hygiene": "Extra Hygiene", + "fitness": "Fitness", + "fresh_care": "Fresh Care", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Handtücher", + "hqd_bed_sheets": "Bettwäsche", + "hqd_bulky": "Schwere Textilien", + "hqd_casual": "Casual", + "hqd_cold_wind_30": "Kühle Brise 30 Minuten", + "hqd_cold_wind_timing": "Kühle Brise ", + "hqd_cotton": "Baumwolle", + "hqd_curtain": "Vorhänge", + "hqd_delicate": "Feinwäsche", + "hqd_diaper": "Windeln", + "hqd_duvet": "Bettdecke", + "hqd_feather": "Daunenjacken", + "hqd_hot_wind_timing": "Heiße Luft", + "hqd_hygienic": "Desinfektion", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Jacken", + "hqd_jeans": "Jeans", + "hqd_luxury": "Luxury", + "hqd_mix": "Gemischt", + "hqd_night_dry": "Trocknung über Nacht", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious Cure", + "hqd_quick_20": "Schnell 20", + "hqd_quick_30": "Schnell 30", + "hqd_quick_dry": "Schnell trocken 30", + "hqd_quilt": "Steppdecken", + "hqd_refresh": "Auffrischen", + "hqd_school_uniform": "Schuluniform", + "hqd_shirt": "Hemden", + "hqd_shoes": "Schuhe", + "hqd_silk": "Seide", + "hqd_sports": "Sport", + "hqd_synthetics": "Synthetik", + "hqd_timer": "Zeitgesteuert", + "hqd_towel": "Handtücher", + "hqd_underwear": "Unterwäsche", + "hqd_warm_up": "Erwärmen", + "hqd_wool": "Wolle", + "hqd_working_suit": "Arbeitskleidung", + "hygiene": "Hygiene", + "iot_checkup": "Check-up", + "iot_dry_anti_mites": "Anti-Milben-Programm", + "iot_dry_baby": "Baby", + "iot_dry_backpacks": "Rucksäcke", + "iot_dry_bathrobe": "Bademäntel", + "iot_dry_bed_linen": "Bettwäsche", + "iot_dry_bed_quilt": "Bettdecken", + "iot_dry_cotton": "Baumwolle", + "iot_dry_cuddly_toys": "Stofftiere", + "iot_dry_curtains": "Vorhänge", + "iot_dry_dehumidifier": "Entfeuchter", + "iot_dry_delicates": "Feinwäsche", + "iot_dry_delicate_tablecloths": "Empfindliche Tischdecken", + "iot_dry_denim_jeans": "Denim - Jeans", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Oberbetten", + "iot_dry_easy_iron_cotton": "Superleichtes Bügeln", + "iot_dry_easy_iron_synthetics": "Super Leichtbügeln Synthetik", + "iot_dry_gym_fit": "Gymnastik & Fitness – Sportkleidung", + "iot_dry_lingerie": "Unterwäsche", + "iot_dry_mixed": "Gemischt", + "iot_dry_playsuits": "Jumpsuits", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Rapid 59'.", + "iot_dry_refresh": "Auffrischen", + "iot_dry_regenerates_waterproof": "Auffrischung – wasserdichte Kleidung", + "iot_dry_relax_creases": "Falten glätten", + "iot_dry_shirts": "Hemden", + "iot_dry_small_load": "Kleine Beladung", + "iot_dry_swimsuits_and_bikinis": "Badeanzüge", + "iot_dry_synthetics": "Synthetische", + "iot_dry_synthetic_dry": "Synthetik trocken", + "iot_dry_tablecloths": "Tischdecken", + "iot_dry_technical_fabrics": "Technisches Gewebe", + "iot_dry_warm_embrace": "Superschon", + "iot_dry_wool": "Wolle", + "jeans": "Jeans", + "mix_and_dry": "Mix&Dry", + "pets": "Haustiere", + "pre_iron": "Vorbügeln", + "rapid_30": "Rapid 30", + "rapid_45": "Schnell 45 Min", + "rapid_59": "Perfekt Schnellwaschgang 59 Min.", + "refresh": "Auffrischen", + "relax_creases": "Falten glätten", + "saving_30_min": "ECO 30'", + "shirts": "Hemden", + "shoes": "Schuhe", + "small_load": "Kleine Beladung", + "soft_care": "Sanfte Pflege", + "sport_plus": "Sports", + "super_easy_iron_misti": "Super Leichtbügeln Gemischt", + "super_easy_iron_xxl": "Super Leichtbügeln XXL", + "super_fast_cottons": "Superschnell Baumwolle", + "super_fast_delicates": "Superschnell Feinwäsche", + "synthetics": "Synthetische", + "total_care": "Total Care", + "trainers": "Turnschuhe", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Auffrischen wasserdichter Stoffe", + "whites": "Weißen", + "wool": "Wolle Trocknen", + "woolmark": "Wolle", + "xxl_load": "XXL-Beladung", + "zoom_59": "Zoom 59" + }, + "name": "Programm" + }, "programs_wm": { "state": { "20_degrees_coloured_cottons": "20° Buntes und Baumwolle", @@ -556,7 +441,7 @@ "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "All in One 49'", "all_in_one_59": "All in One 59'", - "all_in_one_59_steam": "Active Wash + Dampf", + "all_in_one_59_steam": "All in One 59' + Dampf", "autocare": "Autocare", "autoclean": "Reinigung der Trommel", "baby_60": "Alles Baby 60 °C", @@ -622,7 +507,7 @@ "iot_active_steam": "Dampf", "iot_active_wash_steam": "Active Wash", "iot_allergy_care_pro": "Allergy Care Pro", - "iot_all_in_one_59_steam": "Active Wash + Dampf", + "iot_all_in_one_59_steam": "All in One 59' + Dampf", "iot_checkup": "Check-up", "iot_colour_59_steam": "Buntes 59' + Dampf", "iot_cottons_steam": "Baumwolle + Dampf", @@ -889,9 +774,148 @@ "sparkling": "Sekt", "white": "Weiß" } + }, + "dry_time": { + "name": "Trocknungsdauer" + }, + "power": { + "name": "Leistungsstufe" + }, + "remaining_time": { + "name": "Verbleibende Zeit" + }, + "temperature": { + "name": "Temperatur" + }, + "water_efficiency": { + "name": "Wasserverbrauch" + }, + "water_saving": { + "name": "Wasserersparnis" + }, + "duration": { + "name": "Dauer" + }, + "target_temperature": { + "name": "Zieltemperatur" + }, + "spin_speed": { + "name": "Schleudern" + }, + "steam_leve": { + "name": "Dampfstufe" + }, + "dirt_level": { + "name": "Verschmutzungsgrad" + }, + "delay_time": { + "name": "Einschaltverzögerung" + }, + "suggested_load": { + "name": "Ladekapazität" + }, + "energy_label": { + "name": "Energieeffizienz" + }, + "det_dust": { + "name": "Pulver" + }, + "det_liquid": { + "name": "Flüssigwaschmittel" + }, + "errors": { + "name": "Fehler" + }, + "programs": { + "name": "Aktuelles Programm" + }, + "room_temperature": { + "name": "Raumtemperatur" + }, + "humidity": { + "name": "Luftfeuchtigkeit" + }, + "cycles_total": { + "name": "Waschgänge Insgesamt" + }, + "energy_total": { + "name": "Energieverbrauch Insgesamt" + }, + "water_total": { + "name": "Wasserverbrauch Insgesamt" + }, + "energy_current": { + "name": "Energieverbrauch Aktuell" + }, + "water_current": { + "name": "Wasserverbrauch Aktuell" + }, + "freezer_temp": { + "name": "Gefrierschrank-Temperatur" + }, + "fridge_temp": { + "name": "Temperatur des Kühlschranks" } }, "select": { + "dry_levels": { + "state": { + "no_dry": "Keine Trocknung", + "iron_dry": "Bügeln", + "no_dry_iron": "Wäsche fertig", + "cupboard_dry": "Wäsche fertig", + "extra_dry": "Extra trocken", + "ready_to_wear": "Bereit zum Anziehen" + }, + "name": "Trocknungsstufe" + }, + "eco_pilot": { + "state": { + "touch_off": "Aus", + "avoid_touch": "Berührung vermeiden", + "follow_touch": "Folgen" + }, + "name": "Eco Pilot" + }, + "fan_mode": { + "state": { + "high": "Hoch", + "mid": "Mittel ", + "low": "Niedrig", + "auto": "Auto" + } + }, + "ref_zones": { + "state": { + "fridge": "Kühlschrank", + "freezer": "Gefrierschrank", + "vtroom1": "My Zone", + "fridge_freezer": "Kühlschrank & Gefrierschrank" + }, + "name": "Zone" + }, + "programs_ac": { + "state": { + "iot_10_heating": "10°C Heizfunktion", + "iot_auto": "Auto", + "iot_cool": "Kühl", + "iot_dry": "Trocken", + "iot_fan": "Ventilator", + "iot_heat": "Heizen", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Selbst reinigen", + "iot_self_clean": "Self-Clean", + "iot_self_clean_56": "Steri-Clean 56°C", + "iot_simple_start": "Jetzt beginnen", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Auto", + "iot_uv_and_cool": "UV + Kalt", + "iot_uv_and_dry": "UV + Entfeuchter", + "iot_uv_and_fan": "UV + Gebläse", + "iot_uv_and_heat": "UV + Heizen" + }, + "name": "Programm" + }, "programs_dw": { "state": { "59_min": "Rapid 59'", @@ -1241,7 +1265,7 @@ "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "All in One 49'", "all_in_one_59": "All in One 59'", - "all_in_one_59_steam": "Active Wash + Dampf", + "all_in_one_59_steam": "All in One 59' + Dampf", "autocare": "Autocare", "autoclean": "Reinigung der Trommel", "baby_60": "Alles Baby 60 °C", @@ -1307,7 +1331,7 @@ "iot_active_steam": "Dampf", "iot_active_wash_steam": "Active Wash", "iot_allergy_care_pro": "Allergy Care Pro", - "iot_all_in_one_59_steam": "Active Wash + Dampf", + "iot_all_in_one_59_steam": "All in One 59' + Dampf", "iot_checkup": "Check-up", "iot_colour_59_steam": "Buntes 59' + Dampf", "iot_cottons_steam": "Baumwolle + Dampf", @@ -1540,69 +1564,6 @@ }, "name": "Programm" }, - "dry_levels": { - "state": { - "0": "Keine Trocknung", - "1": "Bügeln", - "2": "Wäsche fertig", - "3": "Wäsche fertig", - "4": "Extra trocken", - "12": "Bügeln", - "13": "Wäsche fertig", - "14": "Bereit zum Anziehen", - "15": "Extra trocken", - "11": "Keine Trocknung" - }, - "name": "Trocknungsstufe" - }, - "spin_speed": { - "name": "Schleudern" - }, - "temperature": { - "name": "Temperatur" - }, - "dry_time": { - "name": "Trocknungsdauer" - }, - "eco_pilot": { - "state": { - "0": "Aus", - "1": "Berührung vermeiden", - "2": "Folgen" - }, - "name": "Eco Pilot" - }, - "fan_mode": { - "state": { - "1": "Hoch", - "2": "Mittel ", - "3": "Niedrig", - "4": "Auto", - "5": "Auto" - } - }, - "programs_ac": { - "state": { - "iot_10_heating": "10°C Heizfunktion", - "iot_auto": "Auto", - "iot_cool": "Kühl", - "iot_dry": "Trocken", - "iot_fan": "Ventilator", - "iot_heat": "Heizen", - "iot_nano_aqua": "Nano Aqua", - "iot_purify": "Selbst reinigen", - "iot_self_clean": "Self-Clean", - "iot_self_clean_56": "Steri-Clean 56°C", - "iot_simple_start": "Jetzt beginnen", - "iot_uv": "UV", - "iot_uv_and_auto": "UV + Auto", - "iot_uv_and_cool": "UV + Kalt", - "iot_uv_and_dry": "UV + Entfeuchter", - "iot_uv_and_fan": "UV + Gebläse", - "iot_uv_and_heat": "UV + Heizen" - }, - "name": "Programm" - }, "programs_ref": { "state": { "auto_set": "AUTOMATISCHE EINSTELLUNG", @@ -1626,17 +1587,17 @@ }, "name": "Programm" }, + "dry_time": { + "name": "Trocknungsdauer" + }, + "spin_speed": { + "name": "Schleudern" + }, + "temperature": { + "name": "Temperatur" + }, "remaining_time": { "name": "Verbleibende Zeit" - }, - "ref_zones": { - "state": { - "fridge": "Kühlschrank", - "freezer": "Gefrierschrank", - "vtroom1": "My Zone", - "fridge_freezer": "Kühlschrank & Gefrierschrank" - }, - "name": "Zone" } }, "switch": { @@ -1724,18 +1685,15 @@ "acqua_plus": { "name": "Acquaplus" }, - "auto_dose": { - "name": "Autodosierung" - }, - "good_night": { - "name": "Gute Nacht" - }, "auto_dose_softener": { "name": "Autodosierung Weichspüler" }, "auto_dose_detergent": { "name": "Autodosierung Spülmittel" }, + "good_night": { + "name": "Gute Nacht" + }, "auto_set": { "name": "Auto-Set" }, @@ -1768,27 +1726,12 @@ "anti_crease": { "name": "Knitterschutz" }, - "aqua_plus": { + "acqua_plus": { "name": "Acquaplus" }, "spin_speed": { "name": "Schleudern" }, - "programs_dw": { - "name": "Programm" - }, - "programs_ih": { - "name": "Programm" - }, - "programs_ov": { - "name": "Programm" - }, - "programs_td": { - "name": "Programm" - }, - "programs_wm": { - "name": "Programm" - }, "still_hot": { "name": "Noch heiß" }, @@ -1819,12 +1762,6 @@ "prewash": { "name": "Vorspülen" }, - "acqua_plus": { - "name": "Acquaplus" - }, - "auto_dose": { - "name": "Autodosierung" - }, "buzzer": { "name": "Signalton zum Programmende" }, @@ -1850,6 +1787,17 @@ "name": "Filteraustausch" } }, + "button": { + "induction_hob": { + "name": "Induktionskochfeld" + }, + "start_program": { + "name": "Programm Start" + }, + "stop_program": { + "name": "Programm Stopp" + } + }, "number": { "power_management": { "name": "Energieverwaltung" @@ -1888,17 +1836,6 @@ "name": "Zieltemperatur Kühlschrank" } }, - "button": { - "induction_hob": { - "name": "Induktionskochfeld" - }, - "start_program": { - "name": "Programm Start" - }, - "stop_program": { - "name": "Programm Stopp" - } - }, "climate": { "air_conditioner": { "name": "Klimaanlage" diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index 1828572..24b419d 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -3,325 +3,73 @@ "sensor": { "washing_modes": { "state": { - "0": "Ετοιμος", - "1": "Ετοιμος", - "3": "Παύση", - "4": "Προγραμματισμένος", - "5": "Προγραμματισμένος", - "6": "Λάθος", - "7": "Ετοιμος", - "2": "Το πρόγραμμα εκτελείται", - "8": "Test", - "9": "Διακοπή κύκλου..." + "ready": "Ετοιμος", + "running": "Το πρόγραμμα εκτελείται", + "pause": "Παύση", + "scheduled": "Προγραμματισμένος", + "error": "Λάθος", + "test": "Test", + "ending": "Διακοπή κύκλου..." + } + }, + "mach_modes_ac": { + "state": { + "auto": "Αυτόματο", + "cool": "Ψύξη", + "dry": "Στέγνωμα", + "heat": "Ζέστη", + "fan": "Ανεμιστήρας" } }, "program_phases_wm": { "state": { - "0": "Ετοιμος", - "1": "Πλύση", - "2": "Πλύση", - "3": "Στύψιμο", - "4": "Ξέβγαλμα", - "5": "Ξέβγαλμα", - "6": "Ξέβγαλμα", - "7": "Στέγνωμα", - "9": "Ατμός", - "10": "Ετοιμος", - "11": "Στύψιμο", - "12": "Ζύγισμα ", - "13": "Ζύγισμα ", - "14": "Πλύση", - "15": "Πλύση", - "16": "Πλύση", - "17": "Ξέβγαλμα", - "18": "Ξέβγαλμα", - "19": "Προγραμματισμένος", - "20": "Κρατήστε τη φρεσκάδα", - "24": "Φρεσκάρισμα", - "25": "Πλύση", - "26": "Θέρμανση", - "27": "Πλύση" + "ready": "Ετοιμος", + "spin": "Στύψιμο", + "rinse": "Ξέβγαλμα", + "drying": "Στέγνωμα", + "steam": "Ατμός", + "weighting": "Ζύγισμα ", + "scheduled": "Προγραμματισμένος", + "tumbling": "Κρατήστε τη φρεσκάδα", + "refresh": "Φρεσκάρισμα", + "heating": "Θέρμανση", + "washing": "Πλύση" }, "name": "Φάση" }, "program_phases_td": { "state": { - "0": "Ετοιμος", - "1": "Στέγνωμα", - "2": "Στέγνωμα", - "3": "Περίοδος αναμονής", - "13": "Περίοδος αναμονής", - "14": "Στέγνωμα", - "15": "Στέγνωμα", - "16": "Περίοδος αναμονής", - "18": "Κρατήστε τη φρεσκάδα", - "19": "Στέγνωμα", - "20": "Στέγνωμα", - "11": "Ετοιμος", - "17": "unknown", - "12": "unknown" + "ready": "Ετοιμος", + "heat_stroke": "Στέγνωμα", + "drying": "Στέγνωμα", + "cooldown": "Περίοδος αναμονής", + "unknown": "unknown", + "tumbling": "Κρατήστε τη φρεσκάδα" }, "name": "Φάση" }, "program_phases_dw": { "state": { - "0": "Ετοιμος", - "1": "Πρόπλυση", - "2": "Πλύση", - "3": "Ξέβγαλμα", - "4": "Στέγνωμα", - "5": "Ετοιμος", - "6": "Hot rinse" + "ready": "Ετοιμος", + "prewash": "Πρόπλυση", + "washing": "Πλύση", + "rinse": "Ξέβγαλμα", + "drying": "Στέγνωμα", + "hot_rinse": "Hot rinse" }, "name": "Φάση" }, "dry_levels": { "state": { - "0": "Χωρίς στέγνωμα", - "1": "Σιδέρωμα", - "2": "Στέγνωμα για Αποθήκευση ", - "3": "Στέγνωμα για Αποθήκευση ", - "4": "Επιπλέον στέγνωμα", - "12": "Σιδέρωμα", - "13": "Στέγνωμα για Αποθήκευση ", - "14": "Ετοιμο να φορεθεί", - "15": "Επιπλέον στέγνωμα", - "11": "Χωρίς στέγνωμα" + "no_dry": "Χωρίς στέγνωμα", + "iron_dry": "Σιδέρωμα", + "no_dry_iron": "Στέγνωμα για Αποθήκευση ", + "cupboard_dry": "Στέγνωμα για Αποθήκευση ", + "extra_dry": "Επιπλέον στέγνωμα", + "ready_to_wear": "Ετοιμο να φορεθεί" }, "name": "Επίπεδο στεγνώματος" }, - "anti_crease": { - "name": "Λιγότερες ζάρες" - }, - "power": { - "name": "Επίπεδο ισχύος ρεύματος" - }, - "remaining_time": { - "name": "Χρόνος που απομένει" - }, - "temperature": { - "name": "Θερμοκρασία" - }, - "water_efficiency": { - "name": "Απόδοση νερού" - }, - "water_saving": { - "name": "Εξοικονόμηση νερού" - }, - "duration": { - "name": "Διάρκεια" - }, - "target_temperature": { - "name": "Στοχευμένη θερμοκρασία" - }, - "spin_speed": { - "name": "Στύψιμο" - }, - "steam_leve": { - "name": "Επίπεδο ατμού" - }, - "dirt_level": { - "name": "Επίπεδο βρωμιάς" - }, - "delay_time": { - "name": "Καθυστερημένη έναρξη" - }, - "dry_time": { - "name": "Χρόνος στεγνώματος" - }, - "suggested_load": { - "name": "Χωρητικότητα φορτίου" - }, - "energy_label": { - "name": "Ενεργειακή απόδοση" - }, - "det_dust": { - "name": "Σκόνη" - }, - "det_liquid": { - "name": "Υγρό" - }, - "errors": { - "name": "Σφάλμα" - }, - "programs": { - "name": "Τρέχων πρόγραμμα" - }, - "cycles_total": { - "name": "Κύκλοι Σύνολο" - }, - "energy_total": { - "name": "Κατανάλωση ενέργειας Σύνολο" - }, - "water_total": { - "name": "Απόδοση νερού Σύνολο" - }, - "energy_current": { - "name": "Κατανάλωση ενέργειας Current" - }, - "water_current": { - "name": "Απόδοση νερού Current" - }, - "mach_modes_ac": { - "state": { - "0": "Αυτόματο", - "1": "Ψύξη", - "2": "Ψύξη", - "3": "Στέγνωμα", - "4": "Ζέστη", - "5": "Ανεμιστήρας", - "6": "Ανεμιστήρας" - } - }, - "programs_td": { - "state": { - "active_dry": "Ενεργό στέγνωμα", - "allergy_care": "Αντιαλλεργικο", - "all_in_one": "Ολα σε ενα", - "antiallergy": "Αντιαλλεργικο", - "anti_odours": "Εναντια στιws", - "auto_care": "Αυτόματη φροντίδα", - "baby": "Μωρουδιακά", - "bed_quilt": "Καλυμματα κρεβατιου", - "care_30": "Φροντίδα 30", - "care_45": "Φροντίδα 45", - "care_59": "Φροντίδα 59", - "coloured": "χρωματιστα", - "daily_45_min": "ΚΑΘΗΜΕΡΙΝΟ 45'", - "daily_perfect_59_min": "ΚΑΘΗΜΕΡΙΝΟ ΙΔΑΝΙΚΟ 59'", - "darks_and_coloured": "Μαυρα & Χρωματιστα", - "delicates": "Ευαίσθητα", - "duvet": "Παπλώματα", - "eco": "Βαμβακερά οικολογικά", - "ecospeed_cottons": "Ecospeed βαμβακερα", - "ecospeed_delicates": "Ecospeed ευαισθητα", - "ecospeed_mixed": "Ecospeed αναμεικτα", - "extra_hygiene": "ΕΠΙΠΛΕΟΝ ΥΓΙΕΙΝΗ", - "fitness": "Καταλληλότητα", - "fresh_care": "Φρέσκια φροντίδα", - "genius": "Genius", - "hqd_baby_care": "Baby Care", - "hqd_bath_towel": "Πετσέτες", - "hqd_bed_sheets": "Σεντόνια κρεβατιού", - "hqd_bulky": "Ογκώδη αντικείμενα", - "hqd_casual": "Καθημερινά ρούχα", - "hqd_cold_wind_30": "Δροσερό αεράκι 30 λεπτά", - "hqd_cold_wind_timing": "Δροσερό αεράκι ", - "hqd_cotton": "Βαμβακερό", - "hqd_curtain": "Κουρτίνες", - "hqd_delicate": "Ευαίσθητα", - "hqd_diaper": "Πάνες", - "hqd_duvet": "Πάπλωμα", - "hqd_feather": "Φουσκωτά μπουφάν", - "hqd_hot_wind_timing": "Ζεστός αέρας", - "hqd_hygienic": "Υγιεινή", - "hqd_i_refresh": "I-Refresh", - "hqd_i_refresh_pro": "I-Refresh Pro", - "hqd_jacket": "Ζακέτες", - "hqd_jeans": "Τζιν παντελονια", - "hqd_luxury": "Luxury", - "hqd_mix": "Μικτά", - "hqd_night_dry": "Ολονύκτιο στέγνωμα", - "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", - "hqd_quick_20": "Γρήγορα 20", - "hqd_quick_30": "Γρήγορα 30", - "hqd_quick_dry": "Γρήγορο στέγνωμα 30", - "hqd_quilt": "Παπλώματα", - "hqd_refresh": "Φρεσκάρισμα", - "hqd_school_uniform": "Σχολική στολή", - "hqd_shirt": "Πουκάμισα", - "hqd_shoes": "Παπούτσια", - "hqd_silk": "Μεταξωτά", - "hqd_sports": "Αθλητικά", - "hqd_synthetics": "Συνθετικά", - "hqd_timer": "Χρονομετρημένο", - "hqd_towel": "Πετσέτες", - "hqd_underwear": "Εσώρουχα", - "hqd_warm_up": "Ζέσταμα", - "hqd_wool": "Μάλλινα", - "hqd_working_suit": "Ενδύματα εργασίας", - "hygiene": "Υγιεινή", - "iot_checkup": "Έλεγχος", - "iot_dry_anti_mites": "Ενάντια στα ακάρεα", - "iot_dry_baby": "Μωρουδιακά", - "iot_dry_backpacks": "Σακίδια πλάτης", - "iot_dry_bathrobe": "Μπουρνούζι", - "iot_dry_bed_linen": "Κλινοσκεπάσματα", - "iot_dry_bed_quilt": "Καλυμματα κρεβατιου", - "iot_dry_cotton": "Βαμβακερό", - "iot_dry_cuddly_toys": "Λούτρινα Αρκουδάκια", - "iot_dry_curtains": "Κουρτίνες", - "iot_dry_dehumidifier": "Αφαίρεση υγρασίας", - "iot_dry_delicates": "Ευαισθητα", - "iot_dry_delicate_tablecloths": "Ευαίσθητα τραπεζομάντηλα", - "iot_dry_denim_jeans": "Ντένιμ - τζιν", - "iot_dry_down_jacket": "Jacket", - "iot_dry_duvet": "Παπλώματα", - "iot_dry_easy_iron_cotton": "Super Easy Iron", - "iot_dry_easy_iron_synthetics": "Εξαιρετικά εύκολο σιδέρωμα - Συνθετικά", - "iot_dry_gym_fit": "Γυμναστήριο", - "iot_dry_lingerie": "Εσώρουχα", - "iot_dry_mixed": "Μικτά", - "iot_dry_playsuits": "Στολές", - "iot_dry_rapid_30": "Rapid 30", - "iot_dry_rapid_59": "Γρήγορο 59'.", - "iot_dry_refresh": "Refresh", - "iot_dry_regenerates_waterproof": "Ανανέωση αδιάβροχων", - "iot_dry_relax_creases": "ΧΑΛΑΡΩΣΗ", - "iot_dry_shirts": "Πουκάμισα", - "iot_dry_small_load": "ΜΙΚΡΟ ΦΟΡΤΙΟ", - "iot_dry_swimsuits_and_bikinis": "Μαγιό", - "iot_dry_synthetics": "Συνθετικα", - "iot_dry_synthetic_dry": "Συνθετικά στέγνωμα", - "iot_dry_tablecloths": "Τραπεζομάντηλα", - "iot_dry_technical_fabrics": "Τεχνικά υφάσματα", - "iot_dry_warm_embrace": "Ζεστή Αγκαλιά", - "iot_dry_wool": "Μαλλινα", - "jeans": "τζιν", - "mix_and_dry": "Μικτά & Στέγνωμα", - "pets": "Κατοικίδια", - "pre_iron": "Προ-σιδερωμα", - "rapid_30": "Rapid 30", - "rapid_45": "Rapid 45 min", - "rapid_59": "Τέλειο Γρήγορο 59 λεπτά", - "refresh": "Φρεσκάρισμα", - "relax_creases": "ΧΑΛΑΡΩΣΗ", - "saving_30_min": "ΕΞΟΙΚΟΝΟΜΗΣΗ 30'", - "shirts": "Πουκάμισα", - "shoes": "Παπούτσια", - "small_load": "ΜΙΚΡΟ ΦΟΡΤΙΟ", - "soft_care": "Απαλή φροντίδα", - "sport_plus": "ΣΠΟΡ", - "super_easy_iron_misti": "Εξαιρετικά εύκολο σιδέρωμα για ανάμεικτα", - "super_easy_iron_xxl": "Εξαιρετικά εύκολο σιδέρωμα για XXL", - "super_fast_cottons": "Εξαιρετικα ΓΡΗΓΟΡΟ βαμβακερα", - "super_fast_delicates": "Εξαιρετικα ΓΡΗΓΟΡΟ ευαισθητα", - "synthetics": "Συνθετικα", - "total_care": "Ολικη Φροντιδα", - "trainers": "Αθλητικά παπούτσια", - "ultra_care": "Ultra Care", - "waterproof_revitalize": "Αναζωογονηση αδιαβροχων", - "whites": "Λευκά", - "wool": "Στέγνωμα Μάλλινων", - "woolmark": "Μαλλινα", - "xxl_load": "XXL Φορτιο", - "zoom_59": "Zoom 59" - }, - "name": "Πρόγραμμα" - }, - "room_temperature": { - "name": "Θερμοκρασία δωματίου" - }, - "humidity": { - "name": "Υγρασία" - }, - "freezer_temp": { - "name": "Θερμοκρασία καταψύκτη" - }, - "fridge_temp": { - "name": "Θερμοκρασία ψυγείου" - }, "programs_ac": { "state": { "iot_10_heating": "10° C Λειτουργία θέρμανσης", @@ -545,6 +293,143 @@ }, "name": "Πρόγραμμα" }, + "programs_td": { + "state": { + "active_dry": "Ενεργό στέγνωμα", + "allergy_care": "Αντιαλλεργικο", + "all_in_one": "Ολα σε ενα", + "antiallergy": "Αντιαλλεργικο", + "anti_odours": "Εναντια στιws", + "auto_care": "Αυτόματη φροντίδα", + "baby": "Μωρουδιακά", + "bed_quilt": "Καλυμματα κρεβατιου", + "care_30": "Φροντίδα 30", + "care_45": "Φροντίδα 45", + "care_59": "Φροντίδα 59", + "coloured": "χρωματιστα", + "daily_45_min": "ΚΑΘΗΜΕΡΙΝΟ 45'", + "daily_perfect_59_min": "ΚΑΘΗΜΕΡΙΝΟ ΙΔΑΝΙΚΟ 59'", + "darks_and_coloured": "Μαυρα & Χρωματιστα", + "delicates": "Ευαίσθητα", + "duvet": "Παπλώματα", + "eco": "Βαμβακερά οικολογικά", + "ecospeed_cottons": "Ecospeed βαμβακερα", + "ecospeed_delicates": "Ecospeed ευαισθητα", + "ecospeed_mixed": "Ecospeed αναμεικτα", + "extra_hygiene": "ΕΠΙΠΛΕΟΝ ΥΓΙΕΙΝΗ", + "fitness": "Καταλληλότητα", + "fresh_care": "Φρέσκια φροντίδα", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Πετσέτες", + "hqd_bed_sheets": "Σεντόνια κρεβατιού", + "hqd_bulky": "Ογκώδη αντικείμενα", + "hqd_casual": "Καθημερινά ρούχα", + "hqd_cold_wind_30": "Δροσερό αεράκι 30 λεπτά", + "hqd_cold_wind_timing": "Δροσερό αεράκι ", + "hqd_cotton": "Βαμβακερό", + "hqd_curtain": "Κουρτίνες", + "hqd_delicate": "Ευαίσθητα", + "hqd_diaper": "Πάνες", + "hqd_duvet": "Πάπλωμα", + "hqd_feather": "Φουσκωτά μπουφάν", + "hqd_hot_wind_timing": "Ζεστός αέρας", + "hqd_hygienic": "Υγιεινή", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Ζακέτες", + "hqd_jeans": "Τζιν παντελονια", + "hqd_luxury": "Luxury", + "hqd_mix": "Μικτά", + "hqd_night_dry": "Ολονύκτιο στέγνωμα", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Γρήγορα 20", + "hqd_quick_30": "Γρήγορα 30", + "hqd_quick_dry": "Γρήγορο στέγνωμα 30", + "hqd_quilt": "Παπλώματα", + "hqd_refresh": "Φρεσκάρισμα", + "hqd_school_uniform": "Σχολική στολή", + "hqd_shirt": "Πουκάμισα", + "hqd_shoes": "Παπούτσια", + "hqd_silk": "Μεταξωτά", + "hqd_sports": "Αθλητικά", + "hqd_synthetics": "Συνθετικά", + "hqd_timer": "Χρονομετρημένο", + "hqd_towel": "Πετσέτες", + "hqd_underwear": "Εσώρουχα", + "hqd_warm_up": "Ζέσταμα", + "hqd_wool": "Μάλλινα", + "hqd_working_suit": "Ενδύματα εργασίας", + "hygiene": "Υγιεινή", + "iot_checkup": "Έλεγχος", + "iot_dry_anti_mites": "Ενάντια στα ακάρεα", + "iot_dry_baby": "Μωρουδιακά", + "iot_dry_backpacks": "Σακίδια πλάτης", + "iot_dry_bathrobe": "Μπουρνούζι", + "iot_dry_bed_linen": "Κλινοσκεπάσματα", + "iot_dry_bed_quilt": "Καλυμματα κρεβατιου", + "iot_dry_cotton": "Βαμβακερό", + "iot_dry_cuddly_toys": "Λούτρινα Αρκουδάκια", + "iot_dry_curtains": "Κουρτίνες", + "iot_dry_dehumidifier": "Αφαίρεση υγρασίας", + "iot_dry_delicates": "Ευαισθητα", + "iot_dry_delicate_tablecloths": "Ευαίσθητα τραπεζομάντηλα", + "iot_dry_denim_jeans": "Ντένιμ - τζιν", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Παπλώματα", + "iot_dry_easy_iron_cotton": "Super Easy Iron", + "iot_dry_easy_iron_synthetics": "Εξαιρετικά εύκολο σιδέρωμα - Συνθετικά", + "iot_dry_gym_fit": "Γυμναστήριο", + "iot_dry_lingerie": "Εσώρουχα", + "iot_dry_mixed": "Μικτά", + "iot_dry_playsuits": "Στολές", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Γρήγορο 59'.", + "iot_dry_refresh": "Refresh", + "iot_dry_regenerates_waterproof": "Ανανέωση αδιάβροχων", + "iot_dry_relax_creases": "ΧΑΛΑΡΩΣΗ", + "iot_dry_shirts": "Πουκάμισα", + "iot_dry_small_load": "ΜΙΚΡΟ ΦΟΡΤΙΟ", + "iot_dry_swimsuits_and_bikinis": "Μαγιό", + "iot_dry_synthetics": "Συνθετικα", + "iot_dry_synthetic_dry": "Συνθετικά στέγνωμα", + "iot_dry_tablecloths": "Τραπεζομάντηλα", + "iot_dry_technical_fabrics": "Τεχνικά υφάσματα", + "iot_dry_warm_embrace": "Ζεστή Αγκαλιά", + "iot_dry_wool": "Μαλλινα", + "jeans": "τζιν", + "mix_and_dry": "Μικτά & Στέγνωμα", + "pets": "Κατοικίδια", + "pre_iron": "Προ-σιδερωμα", + "rapid_30": "Rapid 30", + "rapid_45": "Rapid 45 min", + "rapid_59": "Τέλειο Γρήγορο 59 λεπτά", + "refresh": "Φρεσκάρισμα", + "relax_creases": "ΧΑΛΑΡΩΣΗ", + "saving_30_min": "ΕΞΟΙΚΟΝΟΜΗΣΗ 30'", + "shirts": "Πουκάμισα", + "shoes": "Παπούτσια", + "small_load": "ΜΙΚΡΟ ΦΟΡΤΙΟ", + "soft_care": "Απαλή φροντίδα", + "sport_plus": "ΣΠΟΡ", + "super_easy_iron_misti": "Εξαιρετικά εύκολο σιδέρωμα για ανάμεικτα", + "super_easy_iron_xxl": "Εξαιρετικά εύκολο σιδέρωμα για XXL", + "super_fast_cottons": "Εξαιρετικα ΓΡΗΓΟΡΟ βαμβακερα", + "super_fast_delicates": "Εξαιρετικα ΓΡΗΓΟΡΟ ευαισθητα", + "synthetics": "Συνθετικα", + "total_care": "Ολικη Φροντιδα", + "trainers": "Αθλητικά παπούτσια", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Αναζωογονηση αδιαβροχων", + "whites": "Λευκά", + "wool": "Στέγνωμα Μάλλινων", + "woolmark": "Μαλλινα", + "xxl_load": "XXL Φορτιο", + "zoom_59": "Zoom 59" + }, + "name": "Πρόγραμμα" + }, "programs_wm": { "state": { "20_degrees_coloured_cottons": "20° Χρωματιστά και Βαμβακερά", @@ -556,7 +441,7 @@ "allergy_care_pro": "Allergy Care Επαγγελματικό", "all_in_one_49": "Όλα σε Ένα 49'.", "all_in_one_59": "Όλα σε Ένα 59'.", - "all_in_one_59_steam": "Ενεργή πλύση + Ατμός", + "all_in_one_59_steam": "Όλα σε Ένα 59' + Ατμός", "autocare": "Αυτόματη φροντίδα", "autoclean": "Καθαρισμός κάδου", "baby_60": "Μωρουδιακά 60°C", @@ -622,7 +507,7 @@ "iot_active_steam": "Ατμός", "iot_active_wash_steam": "Ενεργό πλύσιμο", "iot_allergy_care_pro": "Allergy Care Επαγγελματικό", - "iot_all_in_one_59_steam": "Ενεργή πλύση + Ατμός", + "iot_all_in_one_59_steam": "Όλα σε Ένα 59' + Ατμός", "iot_checkup": "Έλεγχος", "iot_colour_59_steam": "Χρωματιστά 59' + ατμός", "iot_cottons_steam": "Βαμβακερό + Ατμός", @@ -889,9 +774,148 @@ "sparkling": "Αφρώδες", "white": "Λευκό" } + }, + "dry_time": { + "name": "Χρόνος στεγνώματος" + }, + "power": { + "name": "Επίπεδο ισχύος ρεύματος" + }, + "remaining_time": { + "name": "Χρόνος που απομένει" + }, + "temperature": { + "name": "Θερμοκρασία" + }, + "water_efficiency": { + "name": "Απόδοση νερού" + }, + "water_saving": { + "name": "Εξοικονόμηση νερού" + }, + "duration": { + "name": "Διάρκεια" + }, + "target_temperature": { + "name": "Στοχευμένη θερμοκρασία" + }, + "spin_speed": { + "name": "Στύψιμο" + }, + "steam_leve": { + "name": "Επίπεδο ατμού" + }, + "dirt_level": { + "name": "Επίπεδο βρωμιάς" + }, + "delay_time": { + "name": "Καθυστερημένη έναρξη" + }, + "suggested_load": { + "name": "Χωρητικότητα φορτίου" + }, + "energy_label": { + "name": "Ενεργειακή απόδοση" + }, + "det_dust": { + "name": "Σκόνη" + }, + "det_liquid": { + "name": "Υγρό" + }, + "errors": { + "name": "Σφάλμα" + }, + "programs": { + "name": "Τρέχων πρόγραμμα" + }, + "room_temperature": { + "name": "Θερμοκρασία δωματίου" + }, + "humidity": { + "name": "Υγρασία" + }, + "cycles_total": { + "name": "Κύκλοι Σύνολο" + }, + "energy_total": { + "name": "Κατανάλωση ενέργειας Σύνολο" + }, + "water_total": { + "name": "Απόδοση νερού Σύνολο" + }, + "energy_current": { + "name": "Κατανάλωση ενέργειας Current" + }, + "water_current": { + "name": "Απόδοση νερού Current" + }, + "freezer_temp": { + "name": "Θερμοκρασία καταψύκτη" + }, + "fridge_temp": { + "name": "Θερμοκρασία ψυγείου" } }, "select": { + "dry_levels": { + "state": { + "no_dry": "Χωρίς στέγνωμα", + "iron_dry": "Σιδέρωμα", + "no_dry_iron": "Στέγνωμα για Αποθήκευση ", + "cupboard_dry": "Στέγνωμα για Αποθήκευση ", + "extra_dry": "Επιπλέον στέγνωμα", + "ready_to_wear": "Ετοιμο να φορεθεί" + }, + "name": "Επίπεδο στεγνώματος" + }, + "eco_pilot": { + "state": { + "touch_off": "Απενεργοποιηση", + "avoid_touch": "Αποφύγετε την αφή", + "follow_touch": "Σας ακολουθεί" + }, + "name": "Οικολογικός πιλότος" + }, + "fan_mode": { + "state": { + "high": "Υψηλό", + "mid": "Μέτριο ", + "low": "Χαμηλό", + "auto": "Αυτόματο" + } + }, + "ref_zones": { + "state": { + "fridge": "Ψυγείο", + "freezer": "Καταψύκτης", + "vtroom1": "My Zone", + "fridge_freezer": "Ψυγείο & Καταψύκτης" + }, + "name": "Ζώνη" + }, + "programs_ac": { + "state": { + "iot_10_heating": "10° C Λειτουργία θέρμανσης", + "iot_auto": "Αυτόματο", + "iot_cool": "Ψύξη", + "iot_dry": "Στέγνωμα", + "iot_fan": "Ανεμιστήρας", + "iot_heat": "Ζέστη", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Αυτοκαθαρισμός", + "iot_self_clean": "Αυτοκαθαρισμός", + "iot_self_clean_56": "Steri-Clean 56°C", + "iot_simple_start": "Εκκίνηση τώρα", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Auto", + "iot_uv_and_cool": "UV + Ψύξη", + "iot_uv_and_dry": "UV + Αφυγραντήρας", + "iot_uv_and_fan": "UV + Ανεμιστήρας", + "iot_uv_and_heat": "UV + Θέρμανση" + }, + "name": "Πρόγραμμα" + }, "programs_dw": { "state": { "59_min": "Γρηγορο 59'", @@ -1241,7 +1265,7 @@ "allergy_care_pro": "Allergy Care Επαγγελματικό", "all_in_one_49": "Όλα σε Ένα 49'.", "all_in_one_59": "Όλα σε Ένα 59'.", - "all_in_one_59_steam": "Ενεργή πλύση + Ατμός", + "all_in_one_59_steam": "Όλα σε Ένα 59' + Ατμός", "autocare": "Αυτόματη φροντίδα", "autoclean": "Καθαρισμός κάδου", "baby_60": "Μωρουδιακά 60°C", @@ -1307,7 +1331,7 @@ "iot_active_steam": "Ατμός", "iot_active_wash_steam": "Ενεργό πλύσιμο", "iot_allergy_care_pro": "Allergy Care Επαγγελματικό", - "iot_all_in_one_59_steam": "Ενεργή πλύση + Ατμός", + "iot_all_in_one_59_steam": "Όλα σε Ένα 59' + Ατμός", "iot_checkup": "Έλεγχος", "iot_colour_59_steam": "Χρωματιστά 59' + ατμός", "iot_cottons_steam": "Βαμβακερό + Ατμός", @@ -1540,69 +1564,6 @@ }, "name": "Πρόγραμμα" }, - "dry_levels": { - "state": { - "0": "Χωρίς στέγνωμα", - "1": "Σιδέρωμα", - "2": "Στέγνωμα για Αποθήκευση ", - "3": "Στέγνωμα για Αποθήκευση ", - "4": "Επιπλέον στέγνωμα", - "12": "Σιδέρωμα", - "13": "Στέγνωμα για Αποθήκευση ", - "14": "Ετοιμο να φορεθεί", - "15": "Επιπλέον στέγνωμα", - "11": "Χωρίς στέγνωμα" - }, - "name": "Επίπεδο στεγνώματος" - }, - "spin_speed": { - "name": "Στύψιμο" - }, - "temperature": { - "name": "Θερμοκρασία" - }, - "dry_time": { - "name": "Χρόνος στεγνώματος" - }, - "eco_pilot": { - "state": { - "0": "Απενεργοποιηση", - "1": "Αποφύγετε την αφή", - "2": "Σας ακολουθεί" - }, - "name": "Οικολογικός πιλότος" - }, - "fan_mode": { - "state": { - "1": "Υψηλό", - "2": "Μέτριο ", - "3": "Χαμηλό", - "4": "Αυτόματο", - "5": "Αυτόματο" - } - }, - "programs_ac": { - "state": { - "iot_10_heating": "10° C Λειτουργία θέρμανσης", - "iot_auto": "Αυτόματο", - "iot_cool": "Ψύξη", - "iot_dry": "Στέγνωμα", - "iot_fan": "Ανεμιστήρας", - "iot_heat": "Ζέστη", - "iot_nano_aqua": "Nano Aqua", - "iot_purify": "Αυτοκαθαρισμός", - "iot_self_clean": "Αυτοκαθαρισμός", - "iot_self_clean_56": "Steri-Clean 56°C", - "iot_simple_start": "Εκκίνηση τώρα", - "iot_uv": "UV", - "iot_uv_and_auto": "UV + Auto", - "iot_uv_and_cool": "UV + Ψύξη", - "iot_uv_and_dry": "UV + Αφυγραντήρας", - "iot_uv_and_fan": "UV + Ανεμιστήρας", - "iot_uv_and_heat": "UV + Θέρμανση" - }, - "name": "Πρόγραμμα" - }, "programs_ref": { "state": { "auto_set": "ΑΥΤΌΜΑΤΗ ΡΎΘΜΙΣΗ", @@ -1626,17 +1587,17 @@ }, "name": "Πρόγραμμα" }, + "dry_time": { + "name": "Χρόνος στεγνώματος" + }, + "spin_speed": { + "name": "Στύψιμο" + }, + "temperature": { + "name": "Θερμοκρασία" + }, "remaining_time": { "name": "Χρόνος που απομένει" - }, - "ref_zones": { - "state": { - "fridge": "Ψυγείο", - "freezer": "Καταψύκτης", - "vtroom1": "My Zone", - "fridge_freezer": "Ψυγείο & Καταψύκτης" - }, - "name": "Ζώνη" } }, "switch": { @@ -1724,18 +1685,15 @@ "acqua_plus": { "name": "Acquaplus (προσθήκη νερού)" }, - "auto_dose": { - "name": "Αυτόματη Δοσολογία" - }, - "good_night": { - "name": "Καληνυχτα" - }, "auto_dose_softener": { "name": "Αυτόματη Δοσολογία Μαλακτικό" }, "auto_dose_detergent": { "name": "Αυτόματη Δοσολογία Απορρυπαντικό" }, + "good_night": { + "name": "Καληνυχτα" + }, "auto_set": { "name": "Αυτόματη ρύθμιση" }, @@ -1768,27 +1726,12 @@ "anti_crease": { "name": "Λιγότερες ζάρες" }, - "aqua_plus": { + "acqua_plus": { "name": "Acquaplus (προσθήκη νερού)" }, "spin_speed": { "name": "Στύψιμο" }, - "programs_dw": { - "name": "Πρόγραμμα" - }, - "programs_ih": { - "name": "Πρόγραμμα" - }, - "programs_ov": { - "name": "Πρόγραμμα" - }, - "programs_td": { - "name": "Πρόγραμμα" - }, - "programs_wm": { - "name": "Πρόγραμμα" - }, "still_hot": { "name": "Ακόμα ζεστό" }, @@ -1819,12 +1762,6 @@ "prewash": { "name": "προπλυση" }, - "acqua_plus": { - "name": "Acquaplus (προσθήκη νερού)" - }, - "auto_dose": { - "name": "Αυτόματη Δοσολογία" - }, "buzzer": { "name": "Κουδούνισμα τέλους κύκλου" }, @@ -1850,6 +1787,17 @@ "name": "Αντικατάσταση φίλτρου" } }, + "button": { + "induction_hob": { + "name": "Επαγωγική εστία" + }, + "start_program": { + "name": "Πρόγραμμα Εκκίνηση" + }, + "stop_program": { + "name": "Πρόγραμμα Διακοπή" + } + }, "number": { "power_management": { "name": "Διαχείριση ενέργειας" @@ -1888,17 +1836,6 @@ "name": "Στοχευμένη θερμοκρασία Ψυγείο" } }, - "button": { - "induction_hob": { - "name": "Επαγωγική εστία" - }, - "start_program": { - "name": "Πρόγραμμα Εκκίνηση" - }, - "stop_program": { - "name": "Πρόγραμμα Διακοπή" - } - }, "climate": { "air_conditioner": { "name": "Κλιματιστικό" diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index a0be471..672e62d 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -1,56 +1,6 @@ { - "config": { - "step": { - "user": { - "description": "Do the login", - "data": { - "email": "Email", - "password": "Password" - } - } - } - }, "entity": { "sensor": { - "mode": { - "state": { - "0": "Disconnected", - "1": "Ready", - "2": "Running", - "3": "Paused", - "5": "Scheduled", - "6": "Error", - "7": "Finished" - } - }, - "errors": { - "state": { - "00": "No error", - "100000000000": "E2: Check if the door is closed", - "8000000000000": "E4: Check the water supply" - }, - "name": "Error" - }, - "programs": { - "state": { - "0": "Default", - "62": "Cotton", - "63": "Synthetics", - "64": "Mix", - "66": "Bed Sheets", - "71": "Curtains", - "72": "Sports", - "74": "i-time", - "75": "Duvet", - "76": "Wool", - "78": "i-Refresh", - "83": "Towel", - "85": "Quick Dry", - "92": "Delicate", - "103": "Remote" - }, - "name": "Current program" - }, "tumbledryertemplevel": { "state": { "1": "Cool", @@ -59,328 +9,75 @@ "4": "High temperature L-3" } }, - "mode_dw": { - "state": { - "0": "Disconnected", - "1": "Ready", - "2": "Running", - "3": "Delayed start", - "5": "Delayed start cancelled", - "7": "Finished" - } - }, "washing_modes": { "state": { - "0": "Ready", - "1": "Ready", - "3": "Pause", - "4": "Scheduled", - "5": "Scheduled", - "6": "Error", - "7": "Ready", - "2": "Program running", - "8": "Test", - "9": "Stopping cycle…" + "ready": "Ready", + "running": "Program running", + "pause": "Pause", + "scheduled": "Scheduled", + "error": "Error", + "test": "Test", + "ending": "Stopping cycle…" + } + }, + "mach_modes_ac": { + "state": { + "auto": "Auto", + "cool": "Cool", + "dry": "Dry", + "heat": "Heat", + "fan": "Fan" } }, "program_phases_wm": { "state": { - "0": "Ready", - "1": "Wash", - "2": "Wash", - "3": "Spin", - "4": "Rinse", - "5": "Rinse", - "6": "Rinse", - "7": "Drying", - "9": "Steam", - "10": "Ready", - "11": "Spin", - "12": "Weighing ", - "13": "Weighing ", - "14": "Wash", - "15": "Wash", - "16": "Wash", - "17": "Rinse", - "18": "Rinse", - "19": "Scheduled", - "20": "Keep Fresh", - "24": "Refresh", - "25": "Wash", - "26": "Heating", - "27": "Wash" + "ready": "Ready", + "spin": "Spin", + "rinse": "Rinse", + "drying": "Drying", + "steam": "Steam", + "weighting": "Weighing ", + "scheduled": "Scheduled", + "tumbling": "Keep Fresh", + "refresh": "Refresh", + "heating": "Heating", + "washing": "Wash" }, "name": "Phase" }, "program_phases_td": { "state": { - "0": "Ready", - "1": "Drying", - "2": "Drying", - "3": "Cooldown", - "13": "Cooldown", - "14": "Drying", - "15": "Drying", - "16": "Cooldown", - "18": "Keep Fresh", - "19": "Drying", - "20": "Drying", - "11": "Ready", - "17": "unknown", - "12": "unknown" + "ready": "Ready", + "heat_stroke": "Drying", + "drying": "Drying", + "cooldown": "Cooldown", + "unknown": "unknown", + "tumbling": "Keep Fresh" }, "name": "Phase" }, "program_phases_dw": { "state": { - "0": "Ready", - "1": "Prewash", - "2": "Wash", - "3": "Rinse", - "4": "Drying", - "5": "Ready", - "6": "Hot rinse" + "ready": "Ready", + "prewash": "Prewash", + "washing": "Wash", + "rinse": "Rinse", + "drying": "Drying", + "hot_rinse": "Hot rinse" }, "name": "Phase" }, "dry_levels": { "state": { - "0": "No drying", - "1": "Iron dry", - "2": "Hang", - "3": "Cupboard Dry", - "4": "Extra dry", - "12": "Iron dry", - "13": "Cupboard Dry", - "14": "Ready to wear", - "15": "Extra dry", - "11": "No drying" + "no_dry": "No drying", + "iron_dry": "Iron dry", + "no_dry_iron": "Hang", + "cupboard_dry": "Cupboard Dry", + "extra_dry": "Extra dry", + "ready_to_wear": "Ready to wear" }, "name": "Drying level" }, - "power": { - "name": "Power level" - }, - "remaining_time": { - "name": "Time remaining" - }, - "temperature": { - "name": "Temperature" - }, - "water_efficiency": { - "name": "Water efficiency" - }, - "water_saving": { - "name": "Water savings" - }, - "duration": { - "name": "Duration" - }, - "target_temperature": { - "name": "Target temperature" - }, - "spin_speed": { - "name": "Spin" - }, - "steam_leve": { - "name": "Steam Level" - }, - "dirt_level": { - "name": "Dirt level" - }, - "delay_time": { - "name": "Delay Start" - }, - "dry_time": { - "name": "Drying time" - }, - "suggested_load": { - "name": "Load capacity" - }, - "energy_label": { - "name": "Energy efficiency" - }, - "det_dust": { - "name": "Powder detergent" - }, - "det_liquid": { - "name": "Liquid detergent" - }, - "cycles_total": { - "name": "Cycles Total" - }, - "energy_total": { - "name": "Energy Consumption Total" - }, - "water_total": { - "name": "Water efficiency Total" - }, - "energy_current": { - "name": "Energy Consumption Current" - }, - "water_current": { - "name": "Water efficiency Current" - }, - "mach_modes_ac": { - "state": { - "0": "Auto", - "1": "Cool", - "2": "Cool", - "3": "Dry", - "4": "Heat", - "5": "Fan", - "6": "Fan" - } - }, - "programs_td": { - "state": { - "active_dry": "Active Dry", - "allergy_care": "Anti-allergy", - "all_in_one": "All in One", - "antiallergy": "Anti-allergy", - "anti_odours": "Anti-odours", - "auto_care": "Auto Care", - "baby": "Baby", - "bed_quilt": "Bed Quilt", - "care_30": "Care 30", - "care_45": "Care 45", - "care_59": "Care 59", - "coloured": "Colored", - "daily_45_min": "Daily 45'", - "daily_perfect_59_min": "Daily Perfect 59'", - "darks_and_coloured": "Darks & Colored", - "delicates": "Delicates", - "duvet": "Duvet", - "eco": "Eco Cotton", - "ecospeed_cottons": "Ecospeed Cottons", - "ecospeed_delicates": "Ecospeed Delicates", - "ecospeed_mixed": "Ecospeed Mixed", - "extra_hygiene": "Extra Hygiene", - "fitness": "Fitness", - "fresh_care": "Fresh Care", - "genius": "Genius", - "hqd_baby_care": "Baby Care", - "hqd_bath_towel": "Towels", - "hqd_bed_sheets": "Bed Sheets", - "hqd_bulky": "Bulky Items", - "hqd_casual": "Casual", - "hqd_cold_wind_30": "Cool Breeze 30m", - "hqd_cold_wind_timing": "Cool Breeze ", - "hqd_cotton": "Cotton", - "hqd_curtain": "Curtains", - "hqd_delicate": "Delicates", - "hqd_diaper": "Diapers", - "hqd_duvet": "Duvet", - "hqd_feather": "Down Jackets", - "hqd_hot_wind_timing": "Hot Air", - "hqd_hygienic": "Hygienising", - "hqd_i_refresh": "I-Refresh", - "hqd_i_refresh_pro": "I-Refresh Pro", - "hqd_jacket": "Jackets", - "hqd_jeans": "Jeans", - "hqd_luxury": "Luxury", - "hqd_mix": "Mixed", - "hqd_night_dry": "Overnight drying", - "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious Cure", - "hqd_quick_20": "Quick 20m", - "hqd_quick_30": "Quick 30m", - "hqd_quick_dry": "Quick dry (30 min)", - "hqd_quilt": "Quilts", - "hqd_refresh": "Refresh", - "hqd_school_uniform": "School Uniform", - "hqd_shirt": "Shirts", - "hqd_shoes": "Shoes", - "hqd_silk": "Silk", - "hqd_sports": "Sports", - "hqd_synthetics": "Synthetics", - "hqd_timer": "Timed", - "hqd_towel": "Towels", - "hqd_underwear": "Underwear", - "hqd_warm_up": "Warm up", - "hqd_wool": "Wool", - "hqd_working_suit": "Workwear", - "hygiene": "Hygiene", - "iot_checkup": "Check-Up", - "iot_dry_anti_mites": "Anti-mites", - "iot_dry_baby": "Baby", - "iot_dry_backpacks": "Backpacks", - "iot_dry_bathrobe": "Bathrobe", - "iot_dry_bed_linen": "Bed Linen", - "iot_dry_bed_quilt": "Bed Quilt", - "iot_dry_cotton": "Cotton", - "iot_dry_cuddly_toys": "Cuddly Toys", - "iot_dry_curtains": "Curtains", - "iot_dry_dehumidifier": "Humidity Remover", - "iot_dry_delicates": "Delicates", - "iot_dry_delicate_tablecloths": "Delicate Tablecloths", - "iot_dry_denim_jeans": "Denim - Jeans", - "iot_dry_down_jacket": "Jacket", - "iot_dry_duvet": "Duvet", - "iot_dry_easy_iron_cotton": "Super Easy Iron", - "iot_dry_easy_iron_synthetics": "Super Easy Iron Synthetics", - "iot_dry_gym_fit": "Gym fit - Fitness", - "iot_dry_lingerie": "Lingerie", - "iot_dry_mixed": "Mixed", - "iot_dry_playsuits": "Playsuits", - "iot_dry_rapid_30": "Rapid 30m", - "iot_dry_rapid_59": "Rapid 59'", - "iot_dry_refresh": "Refresh", - "iot_dry_regenerates_waterproof": "Regenerates Waterproof", - "iot_dry_relax_creases": "Relax Creases", - "iot_dry_shirts": "Shirts", - "iot_dry_small_load": "Small Load", - "iot_dry_swimsuits_and_bikinis": "Swimsuits and Bikinis", - "iot_dry_synthetics": "Synthetics", - "iot_dry_synthetic_dry": "Synthetic Dry", - "iot_dry_tablecloths": "Tablecloths", - "iot_dry_technical_fabrics": "Technical Fabrics", - "iot_dry_warm_embrace": "Warm Embrace", - "iot_dry_wool": "Wool", - "jeans": "Jeans", - "mix_and_dry": "Mix&Dry", - "pets": "Pets", - "pre_iron": "Pre-Iron", - "rapid_30": "Rapid 30", - "rapid_45": "Rapid 45 min", - "rapid_59": "Perfect Rapid 59 Min", - "refresh": "Refresh", - "relax_creases": "Relax Creases", - "saving_30_min": "Saving 30'", - "shirts": "Shirts", - "shoes": "Shoes", - "small_load": "Small Load", - "soft_care": "Soft Care", - "sport_plus": "Sport Plus", - "super_easy_iron_misti": "Super Easy Iron Mixed", - "super_easy_iron_xxl": "Super Easy Iron XXL", - "super_fast_cottons": "Super Fast Cottons", - "super_fast_delicates": "Super Fast Delicates", - "synthetics": "Syntethics", - "total_care": "Total Care", - "trainers": "Trainers", - "ultra_care": "Ultra Care", - "waterproof_revitalize": "Waterproof Revitalize", - "whites": "Whites", - "wool": "Dry Wool", - "woolmark": "Wool", - "xxl_load": "XXL Load", - "zoom_59": "Zoom 59" - }, - "name": "Program" - }, - "room_temperature": { - "name": "Room temperature" - }, - "humidity": { - "name": "Humidity" - }, - "freezer_temp": { - "name": "Freezer temperature" - }, - "fridge_temp": { - "name": "Fridge temperature" - }, "programs_ac": { "state": { "iot_10_heating": "10°C Heating function", @@ -611,6 +308,143 @@ }, "name": "Program" }, + "programs_td": { + "state": { + "active_dry": "Active Dry", + "allergy_care": "Anti-allergy", + "all_in_one": "All in One", + "antiallergy": "Anti-allergy", + "anti_odours": "Anti-odours", + "auto_care": "Auto Care", + "baby": "Baby", + "bed_quilt": "Bed Quilt", + "care_30": "Care 30", + "care_45": "Care 45", + "care_59": "Care 59", + "coloured": "Colored", + "daily_45_min": "Daily 45'", + "daily_perfect_59_min": "Daily Perfect 59'", + "darks_and_coloured": "Darks & Colored", + "delicates": "Delicates", + "duvet": "Duvet", + "eco": "Eco Cotton", + "ecospeed_cottons": "Ecospeed Cottons", + "ecospeed_delicates": "Ecospeed Delicates", + "ecospeed_mixed": "Ecospeed Mixed", + "extra_hygiene": "Extra Hygiene", + "fitness": "Fitness", + "fresh_care": "Fresh Care", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Towels", + "hqd_bed_sheets": "Bed Sheets", + "hqd_bulky": "Bulky Items", + "hqd_casual": "Casual", + "hqd_cold_wind_30": "Cool Breeze 30m", + "hqd_cold_wind_timing": "Cool Breeze ", + "hqd_cotton": "Cotton", + "hqd_curtain": "Curtains", + "hqd_delicate": "Delicates", + "hqd_diaper": "Diapers", + "hqd_duvet": "Duvet", + "hqd_feather": "Down Jackets", + "hqd_hot_wind_timing": "Hot Air", + "hqd_hygienic": "Hygienising", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Jackets", + "hqd_jeans": "Jeans", + "hqd_luxury": "Luxury", + "hqd_mix": "Mixed", + "hqd_night_dry": "Overnight drying", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious Cure", + "hqd_quick_20": "Quick 20m", + "hqd_quick_30": "Quick 30m", + "hqd_quick_dry": "Quick dry (30 min)", + "hqd_quilt": "Quilts", + "hqd_refresh": "Refresh", + "hqd_school_uniform": "School Uniform", + "hqd_shirt": "Shirts", + "hqd_shoes": "Shoes", + "hqd_silk": "Silk", + "hqd_sports": "Sports", + "hqd_synthetics": "Synthetics", + "hqd_timer": "Timed", + "hqd_towel": "Towels", + "hqd_underwear": "Underwear", + "hqd_warm_up": "Warm up", + "hqd_wool": "Wool", + "hqd_working_suit": "Workwear", + "hygiene": "Hygiene", + "iot_checkup": "Check-Up", + "iot_dry_anti_mites": "Anti-mites", + "iot_dry_baby": "Baby", + "iot_dry_backpacks": "Backpacks", + "iot_dry_bathrobe": "Bathrobe", + "iot_dry_bed_linen": "Bed Linen", + "iot_dry_bed_quilt": "Bed Quilt", + "iot_dry_cotton": "Cotton", + "iot_dry_cuddly_toys": "Cuddly Toys", + "iot_dry_curtains": "Curtains", + "iot_dry_dehumidifier": "Humidity Remover", + "iot_dry_delicates": "Delicates", + "iot_dry_delicate_tablecloths": "Delicate Tablecloths", + "iot_dry_denim_jeans": "Denim - Jeans", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Duvet", + "iot_dry_easy_iron_cotton": "Super Easy Iron", + "iot_dry_easy_iron_synthetics": "Super Easy Iron Synthetics", + "iot_dry_gym_fit": "Gym fit - Fitness", + "iot_dry_lingerie": "Lingerie", + "iot_dry_mixed": "Mixed", + "iot_dry_playsuits": "Playsuits", + "iot_dry_rapid_30": "Rapid 30m", + "iot_dry_rapid_59": "Rapid 59'", + "iot_dry_refresh": "Refresh", + "iot_dry_regenerates_waterproof": "Regenerates Waterproof", + "iot_dry_relax_creases": "Relax Creases", + "iot_dry_shirts": "Shirts", + "iot_dry_small_load": "Small Load", + "iot_dry_swimsuits_and_bikinis": "Swimsuits and Bikinis", + "iot_dry_synthetics": "Synthetics", + "iot_dry_synthetic_dry": "Synthetic Dry", + "iot_dry_tablecloths": "Tablecloths", + "iot_dry_technical_fabrics": "Technical Fabrics", + "iot_dry_warm_embrace": "Warm Embrace", + "iot_dry_wool": "Wool", + "jeans": "Jeans", + "mix_and_dry": "Mix&Dry", + "pets": "Pets", + "pre_iron": "Pre-Iron", + "rapid_30": "Rapid 30", + "rapid_45": "Rapid 45 min", + "rapid_59": "Perfect Rapid 59 Min", + "refresh": "Refresh", + "relax_creases": "Relax Creases", + "saving_30_min": "Saving 30'", + "shirts": "Shirts", + "shoes": "Shoes", + "small_load": "Small Load", + "soft_care": "Soft Care", + "sport_plus": "Sport Plus", + "super_easy_iron_misti": "Super Easy Iron Mixed", + "super_easy_iron_xxl": "Super Easy Iron XXL", + "super_fast_cottons": "Super Fast Cottons", + "super_fast_delicates": "Super Fast Delicates", + "synthetics": "Syntethics", + "total_care": "Total Care", + "trainers": "Trainers", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Waterproof Revitalize", + "whites": "Whites", + "wool": "Dry Wool", + "woolmark": "Wool", + "xxl_load": "XXL Load", + "zoom_59": "Zoom 59" + }, + "name": "Program" + }, "programs_wm": { "state": { "20_degrees_coloured_cottons": "20° Colored and Cottons", @@ -622,7 +456,7 @@ "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "All in One 49'", "all_in_one_59": "All in One 59'", - "all_in_one_59_steam": "Active Wash + Steam", + "all_in_one_59_steam": "All in One 59' + Vapore", "autocare": "Autocare", "autoclean": "Drum cleaning and descaling ", "baby_60": "All Baby 60°C", @@ -688,7 +522,7 @@ "iot_active_steam": "Steam", "iot_active_wash_steam": "Active Wash + Steam", "iot_allergy_care_pro": "Allergy Care Pro", - "iot_all_in_one_59_steam": "Active Wash + Steam", + "iot_all_in_one_59_steam": "All in One 59' + Vapore", "iot_checkup": "Check-Up", "iot_colour_59_steam": "Colored 59' + Steam", "iot_cottons_steam": "Cotton + Steam", @@ -956,134 +790,153 @@ "sparkling": "Sparkling", "white": "White" } - } - }, - "switch": { - "anti_crease": { - "name": "Anticrease" }, - "add_dish": { - "name": "Add dishes" + "dry_time": { + "name": "Drying time" }, - "eco_express": { - "name": "Eco" + "power": { + "name": "Power level" }, - "extra_dry": { - "name": "Extra dry" + "remaining_time": { + "name": "Time remaining" }, - "half_load": { - "name": "Half load" + "temperature": { + "name": "Temperature" }, - "open_door": { - "name": "Open door" + "water_efficiency": { + "name": "Water efficiency" }, - "three_in_one": { - "name": "3 in 1" + "water_saving": { + "name": "Water savings" }, - "preheat": { - "name": "Preheat" + "duration": { + "name": "Duration" }, - "dish_washer": { - "name": "Dish washer" + "target_temperature": { + "name": "Target temperature" }, - "tumble_dryer": { - "name": "Tumble dryer" + "spin_speed": { + "name": "Spin" }, - "washing_machine": { - "name": "Washing machine" + "steam_leve": { + "name": "Steam Level" }, - "washer_dryer": { - "name": "Washer dryer" - }, - "oven": { - "name": "Oven" - }, - "prewash": { - "name": "Pre-wash " - }, - "pause": { - "name": "Pause" - }, - "keep_fresh": { - "name": "Keep Fresh" + "dirt_level": { + "name": "Dirt level" }, "delay_time": { "name": "Delay Start" }, - "rapid_mode": { - "name": "Rapid mode" + "suggested_load": { + "name": "Load capacity" }, - "eco_mode": { - "name": "ECO mode" + "energy_label": { + "name": "Energy efficiency" }, - "10_degree_heating": { - "name": "10°C Heating function" + "det_dust": { + "name": "Powder detergent" }, - "self_clean": { - "name": "Self-clean" + "det_liquid": { + "name": "Liquid detergent" }, - "self_clean_56": { - "name": "Steri-Clean 56°C" + "errors": { + "state": { + "00": "No error", + "100000000000": "E2: Check if the door is closed", + "8000000000000": "E4: Check the water supply" + }, + "name": "Error" }, - "silent_mode": { - "name": "Silent mode" + "programs": { + "name": "Current program" }, - "mute_mode": { - "name": "Mute mode" + "room_temperature": { + "name": "Room temperature" }, - "extra_rinse_1": { - "name": "+1 Rinse" + "humidity": { + "name": "Humidity" }, - "extra_rinse_2": { - "name": "+2 Rinses" + "cycles_total": { + "name": "Cycles Total" }, - "extra_rinse_3": { - "name": "+3 Rinses" + "energy_total": { + "name": "Energy Consumption Total" }, - "acqua_plus": { - "name": "Acquaplus" + "water_total": { + "name": "Water efficiency Total" }, - "auto_dose": { - "name": "Autodose" + "energy_current": { + "name": "Energy Consumption Current" }, - "good_night": { - "name": "Good Night" + "water_current": { + "name": "Water efficiency Current" }, - "auto_dose_softener": { - "name": "Autodose Softener" + "freezer_temp": { + "name": "Freezer temperature" }, - "auto_dose_detergent": { - "name": "Autodose Detergent" - }, - "auto_set": { - "name": "Auto-Set" - }, - "super_cool": { - "name": "Super Cool" - }, - "super_freeze": { - "name": "Super Freeze" - }, - "refrigerator": { - "name": "Refrigerator" + "fridge_temp": { + "name": "Fridge temperature" } }, "select": { "dry_levels": { "state": { - "0": "No drying", - "1": "Iron dry", - "2": "Hang", - "3": "Cupboard Dry", - "4": "Extra dry", - "12": "Iron dry", - "13": "Cupboard Dry", - "14": "Ready to wear", - "15": "Extra dry", - "11": "No drying" + "no_dry": "No drying", + "iron_dry": "Iron dry", + "no_dry_iron": "Hang", + "cupboard_dry": "Cupboard Dry", + "extra_dry": "Extra dry", + "ready_to_wear": "Ready to wear" }, "name": "Drying level" }, + "eco_pilot": { + "state": { + "touch_off": "Off", + "avoid_touch": "Avoid touch", + "follow_touch": "Follow" + }, + "name": "Eco pilot" + }, + "fan_mode": { + "state": { + "high": "High", + "mid": "Medium ", + "low": "Low", + "auto": "Auto" + } + }, + "ref_zones": { + "state": { + "fridge": "Fridge", + "freezer": "Freezer", + "vtroom1": "My Zone", + "fridge_freezer": "Fridge & Freezer" + }, + "name": "Zone" + }, + "programs_ac": { + "state": { + "iot_10_heating": "10°C Heating function", + "iot_auto": "Auto", + "iot_cool": "Cool", + "iot_dry": "Dry", + "iot_fan": "Fan", + "iot_heat": "Heat", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Self-purify", + "iot_self_clean": "Self-clean", + "iot_self_clean_56": "Steri-Clean 56°C", + "iot_simple_start": "Start now", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Auto", + "iot_uv_and_cool": "UV + Cold", + "iot_uv_and_dry": "UV + Dehumidifier", + "iot_uv_and_fan": "UV + Fan", + "iot_uv_and_heat": "UV + Heat" + }, + "name": "Program" + }, "programs_dw": { "state": { "59_min": "Rapid 59'", @@ -1440,7 +1293,7 @@ "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "All in One 49'", "all_in_one_59": "All in One 59'", - "all_in_one_59_steam": "Active Wash + Steam", + "all_in_one_59_steam": "All in One 59' + Vapore", "autocare": "Autocare", "autoclean": "Drum cleaning and descaling ", "baby_60": "All Baby 60°C", @@ -1506,7 +1359,7 @@ "iot_active_steam": "Steam", "iot_active_wash_steam": "Active Wash + Steam", "iot_allergy_care_pro": "Allergy Care Pro", - "iot_all_in_one_59_steam": "Active Wash + Steam", + "iot_all_in_one_59_steam": "All in One 59' + Vapore", "iot_checkup": "Check-Up", "iot_colour_59_steam": "Colored 59' + Steam", "iot_cottons_steam": "Cotton + Steam", @@ -1739,54 +1592,6 @@ }, "name": "Program" }, - "spin_speed": { - "name": "Spin" - }, - "temperature": { - "name": "Temperature" - }, - "dry_time": { - "name": "Drying time" - }, - "eco_pilot": { - "state": { - "0": "Off", - "1": "Avoid touch", - "2": "Follow" - }, - "name": "Eco pilot" - }, - "fan_mode": { - "state": { - "1": "High", - "2": "Medium ", - "3": "Low", - "4": "Auto", - "5": "Auto" - } - }, - "programs_ac": { - "state": { - "iot_10_heating": "10°C Heating function", - "iot_auto": "Auto", - "iot_cool": "Cool", - "iot_dry": "Dry", - "iot_fan": "Fan", - "iot_heat": "Heat", - "iot_nano_aqua": "Nano Aqua", - "iot_purify": "Self-purify", - "iot_self_clean": "Self-clean", - "iot_self_clean_56": "Steri-Clean 56°C", - "iot_simple_start": "Start now", - "iot_uv": "UV", - "iot_uv_and_auto": "UV + Auto", - "iot_uv_and_cool": "UV + Cold", - "iot_uv_and_dry": "UV + Dehumidifier", - "iot_uv_and_fan": "UV + Fan", - "iot_uv_and_heat": "UV + Heat" - }, - "name": "Program" - }, "programs_ref": { "state": { "auto_set": "AUTO-SET", @@ -1811,17 +1616,124 @@ }, "name": "Program" }, + "dry_time": { + "name": "Drying time" + }, + "spin_speed": { + "name": "Spin" + }, + "temperature": { + "name": "Temperature" + }, "remaining_time": { "name": "Time remaining" + } + }, + "switch": { + "anti_crease": { + "name": "Anticrease" }, - "ref_zones": { - "state": { - "fridge": "Fridge", - "freezer": "Freezer", - "vtroom1": "My Zone", - "fridge_freezer": "Fridge & Freezer" - }, - "name": "Zone" + "add_dish": { + "name": "Add dishes" + }, + "eco_express": { + "name": "Eco" + }, + "extra_dry": { + "name": "Extra dry" + }, + "half_load": { + "name": "Half load" + }, + "open_door": { + "name": "Open door" + }, + "three_in_one": { + "name": "3 in 1" + }, + "preheat": { + "name": "Preheat" + }, + "dish_washer": { + "name": "Dish washer" + }, + "tumble_dryer": { + "name": "Tumble dryer" + }, + "washing_machine": { + "name": "Washing machine" + }, + "washer_dryer": { + "name": "Washer dryer" + }, + "oven": { + "name": "Oven" + }, + "prewash": { + "name": "Pre-wash " + }, + "pause": { + "name": "Pause" + }, + "keep_fresh": { + "name": "Keep Fresh" + }, + "delay_time": { + "name": "Delay Start" + }, + "rapid_mode": { + "name": "Rapid mode" + }, + "eco_mode": { + "name": "ECO mode" + }, + "10_degree_heating": { + "name": "10°C Heating function" + }, + "self_clean": { + "name": "Self-clean" + }, + "self_clean_56": { + "name": "Steri-Clean 56°C" + }, + "silent_mode": { + "name": "Silent mode" + }, + "mute_mode": { + "name": "Mute mode" + }, + "extra_rinse_1": { + "name": "+1 Rinse" + }, + "extra_rinse_2": { + "name": "+2 Rinses" + }, + "extra_rinse_3": { + "name": "+3 Rinses" + }, + "acqua_plus": { + "name": "Acquaplus" + }, + "auto_dose_softener": { + "name": "Autodose Softener" + }, + "auto_dose_detergent": { + "name": "Autodose Detergent" + }, + "good_night": { + "name": "Good Night" + }, + "auto_set": { + "name": "Auto-Set" + }, + "super_cool": { + "name": "Super Cool" + }, + "super_freeze": { + "name": "Super Freeze" + }, + "refrigerator": { + "name": "Refrigerator" } }, "binary_sensor": { @@ -1843,27 +1755,12 @@ "anti_crease": { "name": "Anticrease" }, - "aqua_plus": { + "acqua_plus": { "name": "Acquaplus" }, "spin_speed": { "name": "Spin" }, - "programs_dw": { - "name": "Program" - }, - "programs_ih": { - "name": "Program" - }, - "programs_ov": { - "name": "Program" - }, - "programs_td": { - "name": "Program" - }, - "programs_wm": { - "name": "Program" - }, "still_hot": { "name": "Still hot" }, @@ -1894,12 +1791,6 @@ "prewash": { "name": "Pre-wash " }, - "acqua_plus": { - "name": "Acquaplus" - }, - "auto_dose": { - "name": "Autodose" - }, "buzzer": { "name": "Cycle end chime" }, @@ -1925,6 +1816,17 @@ "name": "Filter replacement" } }, + "button": { + "induction_hob": { + "name": "Induction Hob" + }, + "start_program": { + "name": "Program Start" + }, + "stop_program": { + "name": "Program Stop" + } + }, "number": { "power_management": { "name": "Power management" @@ -1963,17 +1865,6 @@ "name": "Target temperature Fridge" } }, - "button": { - "induction_hob": { - "name": "Induction Hob" - }, - "start_program": { - "name": "Program Start" - }, - "stop_program": { - "name": "Program Stop" - } - }, "climate": { "air_conditioner": { "name": "Air conditioner" @@ -2091,5 +1982,16 @@ "name": "Air extraction" } } + }, + "config": { + "step": { + "user": { + "description": "Do the login", + "data": { + "email": "Email", + "password": "Password" + } + } + } } } \ No newline at end of file diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index d10ae74..003d6e6 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -3,325 +3,73 @@ "sensor": { "washing_modes": { "state": { - "0": "Listo", - "1": "Listo", - "3": "Pausa", - "4": "Programado", - "5": "Programado", - "6": "Error", - "7": "Listo", - "2": "Programa en marcha", - "8": "Test", - "9": "Parada del ciclo..." + "ready": "Listo", + "running": "Programa en marcha", + "pause": "Pausa", + "scheduled": "Programado", + "error": "Error", + "test": "Test", + "ending": "Parada del ciclo..." + } + }, + "mach_modes_ac": { + "state": { + "auto": "Automático", + "cool": "Frío", + "dry": "Deshumidificar", + "heat": "Calor", + "fan": "Ventilador" } }, "program_phases_wm": { "state": { - "0": "Listo", - "1": "Lavado", - "2": "Lavado", - "3": "Centrifugado", - "4": "Aclarado", - "5": "Aclarado", - "6": "Aclarado", - "7": "Secado", - "9": "Vapor", - "10": "Listo", - "11": "Centrifugado", - "12": "Peso ", - "13": "Peso ", - "14": "Lavado", - "15": "Lavado", - "16": "Lavado", - "17": "Aclarado", - "18": "Aclarado", - "19": "Programado", - "20": "Ropa fresca", - "24": "Refrescar", - "25": "Lavado", - "26": "Calentamiento", - "27": "Lavado" + "ready": "Listo", + "spin": "Centrifugado", + "rinse": "Aclarado", + "drying": "Secado", + "steam": "Vapor", + "weighting": "Peso ", + "scheduled": "Programado", + "tumbling": "Ropa fresca", + "refresh": "Refrescar", + "heating": "Calentamiento", + "washing": "Lavado" }, "name": "Fase" }, "program_phases_td": { "state": { - "0": "Listo", - "1": "Secado", - "2": "Secado", - "3": "Enfriar", - "13": "Enfriar", - "14": "Secado", - "15": "Secado", - "16": "Enfriar", - "18": "Ropa fresca", - "19": "Secado", - "20": "Secado", - "11": "Listo", - "17": "unknown", - "12": "unknown" + "ready": "Listo", + "heat_stroke": "Secado", + "drying": "Secado", + "cooldown": "Enfriar", + "unknown": "unknown", + "tumbling": "Ropa fresca" }, "name": "Fase" }, "program_phases_dw": { "state": { - "0": "Listo", - "1": "Prelavado", - "2": "Lavado", - "3": "Aclarado", - "4": "Secado", - "5": "Listo", - "6": "Hot rinse" + "ready": "Listo", + "prewash": "Prelavado", + "washing": "Lavado", + "rinse": "Aclarado", + "drying": "Secado", + "hot_rinse": "Hot rinse" }, "name": "Fase" }, "dry_levels": { "state": { - "0": "Sin secado", - "1": "Planchar", - "2": "Listo para guardar", - "3": "Listo para guardar", - "4": "Extraseco", - "12": "Planchar", - "13": "Listo para guardar", - "14": "Listo para llevar", - "15": "Extraseco", - "11": "Sin secado" + "no_dry": "Sin secado", + "iron_dry": "Planchar", + "no_dry_iron": "Listo para guardar", + "cupboard_dry": "Listo para guardar", + "extra_dry": "Extraseco", + "ready_to_wear": "Listo para llevar" }, "name": "Nivel de secado" }, - "anti_crease": { - "name": "Antiarrugas" - }, - "power": { - "name": "Nivel de potencia" - }, - "remaining_time": { - "name": "Tiempo restante" - }, - "temperature": { - "name": "Temperatura" - }, - "water_efficiency": { - "name": "Eficiencia hídrica" - }, - "water_saving": { - "name": "Ahorro de agua" - }, - "duration": { - "name": "Duración" - }, - "target_temperature": { - "name": "Temperatura deseada" - }, - "spin_speed": { - "name": "Centrifugado" - }, - "steam_leve": { - "name": "Nivel de vapor" - }, - "dirt_level": { - "name": "Nivel de suciedad" - }, - "delay_time": { - "name": "Inicio Diferido" - }, - "dry_time": { - "name": "Tiempo de secado" - }, - "suggested_load": { - "name": "Capacidad de carga" - }, - "energy_label": { - "name": "Eficiencia energética" - }, - "det_dust": { - "name": "Polvo" - }, - "det_liquid": { - "name": "Líquido" - }, - "errors": { - "name": "Error" - }, - "programs": { - "name": "Programa actual" - }, - "cycles_total": { - "name": "Ciclos Total" - }, - "energy_total": { - "name": "Consumo de energía Total" - }, - "water_total": { - "name": "Eficiencia hídrica Total" - }, - "energy_current": { - "name": "Consumo de energía Actual" - }, - "water_current": { - "name": "Eficiencia hídrica Actual" - }, - "mach_modes_ac": { - "state": { - "0": "Automático", - "1": "Frío", - "2": "Frío", - "3": "Deshumidificar", - "4": "Calor", - "5": "Ventilador", - "6": "Ventilador" - } - }, - "programs_td": { - "state": { - "active_dry": "Secado activo", - "allergy_care": "Antialergénico", - "all_in_one": "All in One", - "antiallergy": "Antialergénico", - "anti_odours": "Anti-olor", - "auto_care": "Autocuidado", - "baby": "Baby", - "bed_quilt": "Edredón", - "care_30": "Cuidado 30", - "care_45": "Cuidado 45", - "care_59": "Cuidado 59", - "coloured": "Color", - "daily_45_min": "DIARIO 45'", - "daily_perfect_59_min": "DIARIO PERFECTO 59'", - "darks_and_coloured": "Oscuro & Color", - "delicates": "Delicados", - "duvet": "Edredón", - "eco": "Algodón Eco", - "ecospeed_cottons": "Ecospeed Algodón", - "ecospeed_delicates": "Ecospeed Delicados", - "ecospeed_mixed": "Ecospeed Mixtos", - "extra_hygiene": "Higiene Extra", - "fitness": "Deporte", - "fresh_care": "Cuidado y frescor", - "genius": "Genius", - "hqd_baby_care": "Baby Care", - "hqd_bath_towel": "Toallas", - "hqd_bed_sheets": "Sábanas", - "hqd_bulky": "Objetos voluminosos", - "hqd_casual": "Casual", - "hqd_cold_wind_30": "Brisa fresca 30 minutos", - "hqd_cold_wind_timing": "Brisa fresca ", - "hqd_cotton": "Algodón", - "hqd_curtain": "Cortinas", - "hqd_delicate": "Ropa delicada", - "hqd_diaper": "Pañales", - "hqd_duvet": "Edredones", - "hqd_feather": "Plumíferos", - "hqd_hot_wind_timing": "Aire caliente", - "hqd_hygienic": "Higienizar", - "hqd_i_refresh": "I-Refresh", - "hqd_i_refresh_pro": "I-Refresh Pro", - "hqd_jacket": "Chaquetas", - "hqd_jeans": "Vaqueros", - "hqd_luxury": "Lujo", - "hqd_mix": "Ropa mixta", - "hqd_night_dry": "Secado nocturno", - "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", - "hqd_quick_20": "Rápido 20", - "hqd_quick_30": "Rápido 30", - "hqd_quick_dry": "Secado rápido 30", - "hqd_quilt": "Colchas", - "hqd_refresh": "Refrescar", - "hqd_school_uniform": "Uniformes escolares", - "hqd_shirt": "Camisas", - "hqd_shoes": "Zapatos", - "hqd_silk": "Seda", - "hqd_sports": "Deporte", - "hqd_synthetics": "Sintéticos", - "hqd_timer": "Temporizado", - "hqd_towel": "Toallas", - "hqd_underwear": "Ropa interior", - "hqd_warm_up": "Calentar", - "hqd_wool": "Lana", - "hqd_working_suit": "Ropa de trabajo", - "hygiene": "Higiene", - "iot_checkup": "Revisión", - "iot_dry_anti_mites": "Antiácaros", - "iot_dry_baby": "Baby", - "iot_dry_backpacks": "Mochilas", - "iot_dry_bathrobe": "Ropa de Baño", - "iot_dry_bed_linen": "Ropa de Cama", - "iot_dry_bed_quilt": "Edredón", - "iot_dry_cotton": "Algodón", - "iot_dry_cuddly_toys": "Peluches", - "iot_dry_curtains": "Cortinas", - "iot_dry_dehumidifier": "Eliminador de humedad", - "iot_dry_delicates": "Delicados", - "iot_dry_delicate_tablecloths": "Mantelería Delicada", - "iot_dry_denim_jeans": "Denim - Vaqueros", - "iot_dry_down_jacket": "Jacket", - "iot_dry_duvet": "Edredón", - "iot_dry_easy_iron_cotton": "Planchado Súper Fácil", - "iot_dry_easy_iron_synthetics": "Planchado muy fácil - Sintéticos", - "iot_dry_gym_fit": "Ropa de Deporte - Fitness", - "iot_dry_lingerie": "Lencería", - "iot_dry_mixed": "Ropa mixta", - "iot_dry_playsuits": "Prendas de una pieza - Mono", - "iot_dry_rapid_30": "Rápido 30’", - "iot_dry_rapid_59": "Rápido 59’", - "iot_dry_refresh": "Refresh", - "iot_dry_regenerates_waterproof": "Regeneración Tejidos Impermeables", - "iot_dry_relax_creases": "Reducción Arrugas", - "iot_dry_shirts": "Camisas", - "iot_dry_small_load": "Carga reducida", - "iot_dry_swimsuits_and_bikinis": "Trajes de baño", - "iot_dry_synthetics": "Sintéticos", - "iot_dry_synthetic_dry": "Secado de prendas sintéticas", - "iot_dry_tablecloths": "Mantelería", - "iot_dry_technical_fabrics": "Tejidos Técnicos", - "iot_dry_warm_embrace": "Abrazo cálido", - "iot_dry_wool": "Woolmark", - "jeans": "Vaqueros", - "mix_and_dry": "Mix&Dry", - "pets": "Mascotas", - "pre_iron": "Pre-Planchado", - "rapid_30": "Rápido 30 min", - "rapid_45": "Rápido 45 min", - "rapid_59": "Perfecto Rápido 59 Min", - "refresh": "Refresh", - "relax_creases": "Reducción Arrugas", - "saving_30_min": "ECO 30'", - "shirts": "Camisas", - "shoes": "Zapatos", - "small_load": "Carga reducida", - "soft_care": "Cuidado suave", - "sport_plus": "Deporte", - "super_easy_iron_misti": "Planchado muy fácil ropa mixta", - "super_easy_iron_xxl": "Planchado muy fácil XXL", - "super_fast_cottons": "Algodón Súper Rápido", - "super_fast_delicates": "Delicados Súper Rápidos", - "synthetics": "Sintéticos", - "total_care": "Total Care", - "trainers": "Calzado Deportivo", - "ultra_care": "Ultra Care", - "waterproof_revitalize": "Revitalizante Waterproof", - "whites": "Blanco", - "wool": "Secado Lana", - "woolmark": "Woolmark", - "xxl_load": "Carga XXL", - "zoom_59": "Zoom 59" - }, - "name": "Programa" - }, - "room_temperature": { - "name": "Temperatura ambiente" - }, - "humidity": { - "name": "Humedad" - }, - "freezer_temp": { - "name": "Temperatura del congelador" - }, - "fridge_temp": { - "name": "Temperatura del frigorífico" - }, "programs_ac": { "state": { "iot_10_heating": "Función de calentamiento de 10° C", @@ -545,6 +293,143 @@ }, "name": "Programa" }, + "programs_td": { + "state": { + "active_dry": "Secado activo", + "allergy_care": "Antialergénico", + "all_in_one": "All in One", + "antiallergy": "Antialergénico", + "anti_odours": "Anti-olor", + "auto_care": "Autocuidado", + "baby": "Baby", + "bed_quilt": "Edredón", + "care_30": "Cuidado 30", + "care_45": "Cuidado 45", + "care_59": "Cuidado 59", + "coloured": "Color", + "daily_45_min": "DIARIO 45'", + "daily_perfect_59_min": "DIARIO PERFECTO 59'", + "darks_and_coloured": "Oscuro & Color", + "delicates": "Delicados", + "duvet": "Edredón", + "eco": "Algodón Eco", + "ecospeed_cottons": "Ecospeed Algodón", + "ecospeed_delicates": "Ecospeed Delicados", + "ecospeed_mixed": "Ecospeed Mixtos", + "extra_hygiene": "Higiene Extra", + "fitness": "Deporte", + "fresh_care": "Cuidado y frescor", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Toallas", + "hqd_bed_sheets": "Sábanas", + "hqd_bulky": "Objetos voluminosos", + "hqd_casual": "Casual", + "hqd_cold_wind_30": "Brisa fresca 30 minutos", + "hqd_cold_wind_timing": "Brisa fresca ", + "hqd_cotton": "Algodón", + "hqd_curtain": "Cortinas", + "hqd_delicate": "Ropa delicada", + "hqd_diaper": "Pañales", + "hqd_duvet": "Edredones", + "hqd_feather": "Plumíferos", + "hqd_hot_wind_timing": "Aire caliente", + "hqd_hygienic": "Higienizar", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Chaquetas", + "hqd_jeans": "Vaqueros", + "hqd_luxury": "Lujo", + "hqd_mix": "Ropa mixta", + "hqd_night_dry": "Secado nocturno", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Rápido 20", + "hqd_quick_30": "Rápido 30", + "hqd_quick_dry": "Secado rápido 30", + "hqd_quilt": "Colchas", + "hqd_refresh": "Refrescar", + "hqd_school_uniform": "Uniformes escolares", + "hqd_shirt": "Camisas", + "hqd_shoes": "Zapatos", + "hqd_silk": "Seda", + "hqd_sports": "Deporte", + "hqd_synthetics": "Sintéticos", + "hqd_timer": "Temporizado", + "hqd_towel": "Toallas", + "hqd_underwear": "Ropa interior", + "hqd_warm_up": "Calentar", + "hqd_wool": "Lana", + "hqd_working_suit": "Ropa de trabajo", + "hygiene": "Higiene", + "iot_checkup": "Revisión", + "iot_dry_anti_mites": "Antiácaros", + "iot_dry_baby": "Baby", + "iot_dry_backpacks": "Mochilas", + "iot_dry_bathrobe": "Ropa de Baño", + "iot_dry_bed_linen": "Ropa de Cama", + "iot_dry_bed_quilt": "Edredón", + "iot_dry_cotton": "Algodón", + "iot_dry_cuddly_toys": "Peluches", + "iot_dry_curtains": "Cortinas", + "iot_dry_dehumidifier": "Eliminador de humedad", + "iot_dry_delicates": "Delicados", + "iot_dry_delicate_tablecloths": "Mantelería Delicada", + "iot_dry_denim_jeans": "Denim - Vaqueros", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Edredón", + "iot_dry_easy_iron_cotton": "Planchado Súper Fácil", + "iot_dry_easy_iron_synthetics": "Planchado muy fácil - Sintéticos", + "iot_dry_gym_fit": "Ropa de Deporte - Fitness", + "iot_dry_lingerie": "Lencería", + "iot_dry_mixed": "Ropa mixta", + "iot_dry_playsuits": "Prendas de una pieza - Mono", + "iot_dry_rapid_30": "Rápido 30’", + "iot_dry_rapid_59": "Rápido 59’", + "iot_dry_refresh": "Refresh", + "iot_dry_regenerates_waterproof": "Regeneración Tejidos Impermeables", + "iot_dry_relax_creases": "Reducción Arrugas", + "iot_dry_shirts": "Camisas", + "iot_dry_small_load": "Carga reducida", + "iot_dry_swimsuits_and_bikinis": "Trajes de baño", + "iot_dry_synthetics": "Sintéticos", + "iot_dry_synthetic_dry": "Secado de prendas sintéticas", + "iot_dry_tablecloths": "Mantelería", + "iot_dry_technical_fabrics": "Tejidos Técnicos", + "iot_dry_warm_embrace": "Abrazo cálido", + "iot_dry_wool": "Woolmark", + "jeans": "Vaqueros", + "mix_and_dry": "Mix&Dry", + "pets": "Mascotas", + "pre_iron": "Pre-Planchado", + "rapid_30": "Rápido 30 min", + "rapid_45": "Rápido 45 min", + "rapid_59": "Perfecto Rápido 59 Min", + "refresh": "Refresh", + "relax_creases": "Reducción Arrugas", + "saving_30_min": "ECO 30'", + "shirts": "Camisas", + "shoes": "Zapatos", + "small_load": "Carga reducida", + "soft_care": "Cuidado suave", + "sport_plus": "Deporte", + "super_easy_iron_misti": "Planchado muy fácil ropa mixta", + "super_easy_iron_xxl": "Planchado muy fácil XXL", + "super_fast_cottons": "Algodón Súper Rápido", + "super_fast_delicates": "Delicados Súper Rápidos", + "synthetics": "Sintéticos", + "total_care": "Total Care", + "trainers": "Calzado Deportivo", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Revitalizante Waterproof", + "whites": "Blanco", + "wool": "Secado Lana", + "woolmark": "Woolmark", + "xxl_load": "Carga XXL", + "zoom_59": "Zoom 59" + }, + "name": "Programa" + }, "programs_wm": { "state": { "20_degrees_coloured_cottons": "Color y algodón 20 °C", @@ -556,7 +441,7 @@ "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "Todo en uno 49’", "all_in_one_59": "Todo en uno 59’", - "all_in_one_59_steam": "Lavado activo + Vapor", + "all_in_one_59_steam": "Todo en uno 59’ + Vapor", "autocare": "Autocare", "autoclean": "Limpieza del tambor", "baby_60": "All Baby 60°C", @@ -622,7 +507,7 @@ "iot_active_steam": "Vapor", "iot_active_wash_steam": "Lavado activo", "iot_allergy_care_pro": "Allergy Care Pro", - "iot_all_in_one_59_steam": "Lavado activo + Vapor", + "iot_all_in_one_59_steam": "Todo en uno 59’ + Vapor", "iot_checkup": "Revisión", "iot_colour_59_steam": "Colores 59' + vapor", "iot_cottons_steam": "Algodón + Vapor", @@ -889,9 +774,148 @@ "sparkling": "Espumoso", "white": "Blanco" } + }, + "dry_time": { + "name": "Tiempo de secado" + }, + "power": { + "name": "Nivel de potencia" + }, + "remaining_time": { + "name": "Tiempo restante" + }, + "temperature": { + "name": "Temperatura" + }, + "water_efficiency": { + "name": "Eficiencia hídrica" + }, + "water_saving": { + "name": "Ahorro de agua" + }, + "duration": { + "name": "Duración" + }, + "target_temperature": { + "name": "Temperatura deseada" + }, + "spin_speed": { + "name": "Centrifugado" + }, + "steam_leve": { + "name": "Nivel de vapor" + }, + "dirt_level": { + "name": "Nivel de suciedad" + }, + "delay_time": { + "name": "Inicio Diferido" + }, + "suggested_load": { + "name": "Capacidad de carga" + }, + "energy_label": { + "name": "Eficiencia energética" + }, + "det_dust": { + "name": "Polvo" + }, + "det_liquid": { + "name": "Líquido" + }, + "errors": { + "name": "Error" + }, + "programs": { + "name": "Programa actual" + }, + "room_temperature": { + "name": "Temperatura ambiente" + }, + "humidity": { + "name": "Humedad" + }, + "cycles_total": { + "name": "Ciclos Total" + }, + "energy_total": { + "name": "Consumo de energía Total" + }, + "water_total": { + "name": "Eficiencia hídrica Total" + }, + "energy_current": { + "name": "Consumo de energía Actual" + }, + "water_current": { + "name": "Eficiencia hídrica Actual" + }, + "freezer_temp": { + "name": "Temperatura del congelador" + }, + "fridge_temp": { + "name": "Temperatura del frigorífico" } }, "select": { + "dry_levels": { + "state": { + "no_dry": "Sin secado", + "iron_dry": "Planchar", + "no_dry_iron": "Listo para guardar", + "cupboard_dry": "Listo para guardar", + "extra_dry": "Extraseco", + "ready_to_wear": "Listo para llevar" + }, + "name": "Nivel de secado" + }, + "eco_pilot": { + "state": { + "touch_off": "Apagado", + "avoid_touch": "Evitar el contacto", + "follow_touch": "Sígueme" + }, + "name": "Eco pilot" + }, + "fan_mode": { + "state": { + "high": "Alta", + "mid": "Media ", + "low": "Baja", + "auto": "Automático" + } + }, + "ref_zones": { + "state": { + "fridge": "Frigorífico", + "freezer": "Congelador", + "vtroom1": "My Zone", + "fridge_freezer": "Frigorífico & Congelador" + }, + "name": "Zona" + }, + "programs_ac": { + "state": { + "iot_10_heating": "Función de calentamiento de 10° C", + "iot_auto": "Automático", + "iot_cool": "Frío", + "iot_dry": "Deshumidificar", + "iot_fan": "Ventilador", + "iot_heat": "Calor", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Autopurificar", + "iot_self_clean": "Autolimpieza", + "iot_self_clean_56": "Limpieza desinfectante 56°", + "iot_simple_start": "Iniciar ahora", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Automático", + "iot_uv_and_cool": "UV + Frío", + "iot_uv_and_dry": "UV + Deshumidificador", + "iot_uv_and_fan": "UV + Ventilador", + "iot_uv_and_heat": "UV + Calor" + }, + "name": "Programa" + }, "programs_dw": { "state": { "59_min": "Rápido 59'", @@ -1241,7 +1265,7 @@ "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "Todo en uno 49’", "all_in_one_59": "Todo en uno 59’", - "all_in_one_59_steam": "Lavado activo + Vapor", + "all_in_one_59_steam": "Todo en uno 59’ + Vapor", "autocare": "Autocare", "autoclean": "Limpieza del tambor", "baby_60": "All Baby 60°C", @@ -1307,7 +1331,7 @@ "iot_active_steam": "Vapor", "iot_active_wash_steam": "Lavado activo", "iot_allergy_care_pro": "Allergy Care Pro", - "iot_all_in_one_59_steam": "Lavado activo + Vapor", + "iot_all_in_one_59_steam": "Todo en uno 59’ + Vapor", "iot_checkup": "Revisión", "iot_colour_59_steam": "Colores 59' + vapor", "iot_cottons_steam": "Algodón + Vapor", @@ -1540,69 +1564,6 @@ }, "name": "Programa" }, - "dry_levels": { - "state": { - "0": "Sin secado", - "1": "Planchar", - "2": "Listo para guardar", - "3": "Listo para guardar", - "4": "Extraseco", - "12": "Planchar", - "13": "Listo para guardar", - "14": "Listo para llevar", - "15": "Extraseco", - "11": "Sin secado" - }, - "name": "Nivel de secado" - }, - "spin_speed": { - "name": "Centrifugado" - }, - "temperature": { - "name": "Temperatura" - }, - "dry_time": { - "name": "Tiempo de secado" - }, - "eco_pilot": { - "state": { - "0": "Apagado", - "1": "Evitar el contacto", - "2": "Sígueme" - }, - "name": "Eco pilot" - }, - "fan_mode": { - "state": { - "1": "Alta", - "2": "Media ", - "3": "Baja", - "4": "Automático", - "5": "Automático" - } - }, - "programs_ac": { - "state": { - "iot_10_heating": "Función de calentamiento de 10° C", - "iot_auto": "Automático", - "iot_cool": "Frío", - "iot_dry": "Deshumidificar", - "iot_fan": "Ventilador", - "iot_heat": "Calor", - "iot_nano_aqua": "Nano Aqua", - "iot_purify": "Autopurificar", - "iot_self_clean": "Autolimpieza", - "iot_self_clean_56": "Limpieza desinfectante 56°", - "iot_simple_start": "Iniciar ahora", - "iot_uv": "UV", - "iot_uv_and_auto": "UV + Automático", - "iot_uv_and_cool": "UV + Frío", - "iot_uv_and_dry": "UV + Deshumidificador", - "iot_uv_and_fan": "UV + Ventilador", - "iot_uv_and_heat": "UV + Calor" - }, - "name": "Programa" - }, "programs_ref": { "state": { "auto_set": "AJUSTE AUTOMÁTICO", @@ -1626,17 +1587,17 @@ }, "name": "Programa" }, + "dry_time": { + "name": "Tiempo de secado" + }, + "spin_speed": { + "name": "Centrifugado" + }, + "temperature": { + "name": "Temperatura" + }, "remaining_time": { "name": "Tiempo restante" - }, - "ref_zones": { - "state": { - "fridge": "Frigorífico", - "freezer": "Congelador", - "vtroom1": "My Zone", - "fridge_freezer": "Frigorífico & Congelador" - }, - "name": "Zona" } }, "switch": { @@ -1724,18 +1685,15 @@ "acqua_plus": { "name": "Acquaplus" }, - "auto_dose": { - "name": "Dosificación automática" - }, - "good_night": { - "name": "Buenas noches" - }, "auto_dose_softener": { "name": "Dosificación automática Suavizante" }, "auto_dose_detergent": { "name": "Dosificación automática Detergente" }, + "good_night": { + "name": "Buenas noches" + }, "auto_set": { "name": "Auto-Set" }, @@ -1768,27 +1726,12 @@ "anti_crease": { "name": "Antiarrugas" }, - "aqua_plus": { + "acqua_plus": { "name": "Acquaplus" }, "spin_speed": { "name": "Centrifugado" }, - "programs_dw": { - "name": "Programa" - }, - "programs_ih": { - "name": "Programa" - }, - "programs_ov": { - "name": "Programa" - }, - "programs_td": { - "name": "Programa" - }, - "programs_wm": { - "name": "Programa" - }, "still_hot": { "name": "Todavía caliente" }, @@ -1819,12 +1762,6 @@ "prewash": { "name": "Pre-lavado" }, - "acqua_plus": { - "name": "Acquaplus" - }, - "auto_dose": { - "name": "Dosificación automática" - }, "buzzer": { "name": "Campana de fin de ciclo" }, @@ -1850,6 +1787,17 @@ "name": "Sustitución del filtro" } }, + "button": { + "induction_hob": { + "name": "Placa de inducción" + }, + "start_program": { + "name": "Programa Inicio" + }, + "stop_program": { + "name": "Programa Detener" + } + }, "number": { "power_management": { "name": "Control de la energía" @@ -1888,17 +1836,6 @@ "name": "Temperatura deseada Frigorífico" } }, - "button": { - "induction_hob": { - "name": "Placa de inducción" - }, - "start_program": { - "name": "Programa Inicio" - }, - "stop_program": { - "name": "Programa Detener" - } - }, "climate": { "air_conditioner": { "name": "Aire acondicionado" diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index 11ef229..cb604dc 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -3,325 +3,73 @@ "sensor": { "washing_modes": { "state": { - "0": "Prêt", - "1": "Prêt", - "3": "Pause", - "4": "Planifié", - "5": "Planifié", - "6": "Erreur", - "7": "Prêt", - "2": "Programme en cours", - "8": "Test", - "9": "Arrêt du cycle en cours…" + "ready": "Prêt", + "running": "Programme en cours", + "pause": "Pause", + "scheduled": "Planifié", + "error": "Erreur", + "test": "Test", + "ending": "Arrêt du cycle en cours…" + } + }, + "mach_modes_ac": { + "state": { + "auto": "Automatique", + "cool": "Frais", + "dry": "Sec", + "heat": "Chaleur", + "fan": "Ventilateur" } }, "program_phases_wm": { "state": { - "0": "Prêt", - "1": "Lavage", - "2": "Lavage", - "3": "Essorage", - "4": "Rinçage", - "5": "Rinçage", - "6": "Rinçage", - "7": "Séchage", - "9": "Vapeur d'eau", - "10": "Prêt", - "11": "Essorage", - "12": "Calcul du poids ", - "13": "Calcul du poids ", - "14": "Lavage", - "15": "Lavage", - "16": "Lavage", - "17": "Rinçage", - "18": "Rinçage", - "19": "Planifié", - "20": "Keep Fresh", - "24": "Rafraîchissement", - "25": "Lavage", - "26": "Chauffage", - "27": "Lavage" + "ready": "Prêt", + "spin": "Essorage", + "rinse": "Rinçage", + "drying": "Séchage", + "steam": "Vapeur d'eau", + "weighting": "Calcul du poids ", + "scheduled": "Planifié", + "tumbling": "Keep Fresh", + "refresh": "Rafraîchissement", + "heating": "Chauffage", + "washing": "Lavage" }, "name": "Phase" }, "program_phases_td": { "state": { - "0": "Prêt", - "1": "Séchage", - "2": "Séchage", - "3": "Refroidissement", - "13": "Refroidissement", - "14": "Séchage", - "15": "Séchage", - "16": "Refroidissement", - "18": "Keep Fresh", - "19": "Séchage", - "20": "Séchage", - "11": "Prêt", - "17": "unknown", - "12": "unknown" + "ready": "Prêt", + "heat_stroke": "Séchage", + "drying": "Séchage", + "cooldown": "Refroidissement", + "unknown": "unknown", + "tumbling": "Keep Fresh" }, "name": "Phase" }, "program_phases_dw": { "state": { - "0": "Prêt", - "1": "Prélavage", - "2": "Lavage", - "3": "Rinçage", - "4": "Séchage", - "5": "Prêt", - "6": "Hot rinse" + "ready": "Prêt", + "prewash": "Prélavage", + "washing": "Lavage", + "rinse": "Rinçage", + "drying": "Séchage", + "hot_rinse": "Hot rinse" }, "name": "Phase" }, "dry_levels": { "state": { - "0": "Pas de séchage", - "1": "Fer", - "2": "Prêt à ranger", - "3": "Prêt à ranger", - "4": "Extra sec", - "12": "Fer", - "13": "Prêt à ranger", - "14": "Prêt à porter", - "15": "Extra sec", - "11": "Pas de séchage" + "no_dry": "Pas de séchage", + "iron_dry": "Fer", + "no_dry_iron": "Prêt à ranger", + "cupboard_dry": "Prêt à ranger", + "extra_dry": "Extra sec", + "ready_to_wear": "Prêt à porter" }, "name": "Niveau de séchage" }, - "anti_crease": { - "name": "Anti-pli" - }, - "power": { - "name": "Niveau de puissance" - }, - "remaining_time": { - "name": "Temps restant" - }, - "temperature": { - "name": "Température" - }, - "water_efficiency": { - "name": "Efficacité en eau" - }, - "water_saving": { - "name": "Économies d'eau" - }, - "duration": { - "name": "Durée" - }, - "target_temperature": { - "name": "Température souhaitée" - }, - "spin_speed": { - "name": "Essorage" - }, - "steam_leve": { - "name": "Niveau de vapeur" - }, - "dirt_level": { - "name": "Niveau de saleté" - }, - "delay_time": { - "name": "Démarrage Différé" - }, - "dry_time": { - "name": "Temps de séchage" - }, - "suggested_load": { - "name": "Capacité de charge" - }, - "energy_label": { - "name": "Efficacité énergétique" - }, - "det_dust": { - "name": "Poudre" - }, - "det_liquid": { - "name": "Liquide" - }, - "errors": { - "name": "Erreur" - }, - "programs": { - "name": "Programme actuel" - }, - "cycles_total": { - "name": "Cycles Total" - }, - "energy_total": { - "name": "Consommation d’énergie Total" - }, - "water_total": { - "name": "Efficacité en eau Total" - }, - "energy_current": { - "name": "Consommation d’énergie Actuel" - }, - "water_current": { - "name": "Efficacité en eau Actuel" - }, - "mach_modes_ac": { - "state": { - "0": "Automatique", - "1": "Frais", - "2": "Frais", - "3": "Sec", - "4": "Chaleur", - "5": "Ventilateur", - "6": "Ventilateur" - } - }, - "programs_td": { - "state": { - "active_dry": "Séchage actif", - "allergy_care": "Anti-allergies", - "all_in_one": "Tout en 1", - "antiallergy": "Anti-allergies", - "anti_odours": "Anti-odeurs", - "auto_care": "Soin automatique", - "baby": "Baby", - "bed_quilt": "Couette", - "care_30": "Soin 30", - "care_45": "Soin 45", - "care_59": "Soin 59", - "coloured": "Couleurs", - "daily_45_min": "QUOTIDIEN 45'", - "daily_perfect_59_min": "QUOTIDIEN PARFAIT 59'", - "darks_and_coloured": "Couleurs dont foncées", - "delicates": "Délicat", - "duvet": "Couette", - "eco": "Coton Éco", - "ecospeed_cottons": "Ecospeed coton", - "ecospeed_delicates": "Delicats ecospeed", - "ecospeed_mixed": "Ecospeed mixte", - "extra_hygiene": "Extra Hygiene", - "fitness": "Fitness", - "fresh_care": "Soin frais", - "genius": "Genius", - "hqd_baby_care": "Baby Care", - "hqd_bath_towel": "Serviettes", - "hqd_bed_sheets": "Draps", - "hqd_bulky": "Articles volumineux", - "hqd_casual": "Journalier", - "hqd_cold_wind_30": "Brise rafraîchissante 30 minutes", - "hqd_cold_wind_timing": "Brise rafraîchissante ", - "hqd_cotton": "Coton", - "hqd_curtain": "Rideaux", - "hqd_delicate": "Délicats", - "hqd_diaper": "Couches", - "hqd_duvet": "Couette", - "hqd_feather": "Vestes en duvet", - "hqd_hot_wind_timing": "Air chaud", - "hqd_hygienic": "Hygiénisation", - "hqd_i_refresh": "I-Refresh", - "hqd_i_refresh_pro": "I-Refresh Pro", - "hqd_jacket": "Vestes", - "hqd_jeans": "Jeans", - "hqd_luxury": "Luxury", - "hqd_mix": "Tissus mélangés", - "hqd_night_dry": "Séchage toute la nuit", - "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", - "hqd_quick_20": "Rapide 20’", - "hqd_quick_30": "Rapide 30’", - "hqd_quick_dry": "Séchage rapide 30", - "hqd_quilt": "Couvertures", - "hqd_refresh": "Rafraîchissement", - "hqd_school_uniform": "Uniforme scolaire", - "hqd_shirt": "Chemises", - "hqd_shoes": "Chaussures", - "hqd_silk": "Soie", - "hqd_sports": "Sport", - "hqd_synthetics": "Synthétiques", - "hqd_timer": "Temporisé", - "hqd_towel": "Serviettes", - "hqd_underwear": "Sous-vêtements", - "hqd_warm_up": "Réveil", - "hqd_wool": "Laine", - "hqd_working_suit": "Vêtements de travail", - "hygiene": "Hygiène", - "iot_checkup": "Vérification", - "iot_dry_anti_mites": "Anti-acariens", - "iot_dry_baby": "Baby", - "iot_dry_backpacks": "Sac à dos", - "iot_dry_bathrobe": "Peignoir", - "iot_dry_bed_linen": "Linge de lit", - "iot_dry_bed_quilt": "Couette", - "iot_dry_cotton": "Coton", - "iot_dry_cuddly_toys": "Jouets en peluche", - "iot_dry_curtains": "Rideaux", - "iot_dry_dehumidifier": "Élimination de l\\'humidité", - "iot_dry_delicates": "Délicats", - "iot_dry_delicate_tablecloths": "Nappes délicates", - "iot_dry_denim_jeans": "Denim - jeans", - "iot_dry_down_jacket": "Jacket", - "iot_dry_duvet": "Couette", - "iot_dry_easy_iron_cotton": "Repassage super facile", - "iot_dry_easy_iron_synthetics": "Repassage super facile des synthétiques", - "iot_dry_gym_fit": "Sport", - "iot_dry_lingerie": "Lingerie", - "iot_dry_mixed": "Tissus mélangés", - "iot_dry_playsuits": "Combinaisons", - "iot_dry_rapid_30": "Rapid 30", - "iot_dry_rapid_59": "Rapide 59'.", - "iot_dry_refresh": "Coup d\\'éclat", - "iot_dry_regenerates_waterproof": "Imperméabilisant", - "iot_dry_relax_creases": "Anti-plis", - "iot_dry_shirts": "Chemises", - "iot_dry_small_load": "Faible charge", - "iot_dry_swimsuits_and_bikinis": "Maillots de bain", - "iot_dry_synthetics": "Synthétiques", - "iot_dry_synthetic_dry": "Séchage des synthétiques", - "iot_dry_tablecloths": "Nappes", - "iot_dry_technical_fabrics": "Textiles techniques", - "iot_dry_warm_embrace": "Chauffage délicat", - "iot_dry_wool": "Woolmark", - "jeans": "Jeans", - "mix_and_dry": "Mix&Dry", - "pets": "Animaux de compagnie", - "pre_iron": "Pré-repassage", - "rapid_30": "Rapid 30", - "rapid_45": "Rapide 45 min", - "rapid_59": "Lavage Parfait 59 Min", - "refresh": "Coup d'éclat", - "relax_creases": "Anti-plis", - "saving_30_min": "ECO 30'", - "shirts": "Chemises", - "shoes": "Chaussures", - "small_load": "Faible charge", - "soft_care": "Soin Doux", - "sport_plus": "Sports", - "super_easy_iron_misti": "Repassage super facile des mixtes", - "super_easy_iron_xxl": "Repassage super facile XXL", - "super_fast_cottons": "Super rapide coton", - "super_fast_delicates": "Super rapide délicat", - "synthetics": "Synthétiques", - "total_care": "Total Care", - "trainers": "Baskets", - "ultra_care": "Ultra Care", - "waterproof_revitalize": "Entretien imperméable", - "whites": "Blancs", - "wool": "Séchage Laine", - "woolmark": "Woolmark", - "xxl_load": "Charge XXL", - "zoom_59": "Zoom 59" - }, - "name": "Programme" - }, - "room_temperature": { - "name": "Température ambiante" - }, - "humidity": { - "name": "Humidité" - }, - "freezer_temp": { - "name": "Température du congélateur" - }, - "fridge_temp": { - "name": "Température du réfrigérateur" - }, "programs_ac": { "state": { "iot_10_heating": "Fonction Chauffage 10 °C", @@ -545,6 +293,143 @@ }, "name": "Programme" }, + "programs_td": { + "state": { + "active_dry": "Séchage actif", + "allergy_care": "Anti-allergies", + "all_in_one": "Tout en 1", + "antiallergy": "Anti-allergies", + "anti_odours": "Anti-odeurs", + "auto_care": "Soin automatique", + "baby": "Baby", + "bed_quilt": "Couette", + "care_30": "Soin 30", + "care_45": "Soin 45", + "care_59": "Soin 59", + "coloured": "Couleurs", + "daily_45_min": "QUOTIDIEN 45'", + "daily_perfect_59_min": "QUOTIDIEN PARFAIT 59'", + "darks_and_coloured": "Couleurs dont foncées", + "delicates": "Délicat", + "duvet": "Couette", + "eco": "Coton Éco", + "ecospeed_cottons": "Ecospeed coton", + "ecospeed_delicates": "Delicats ecospeed", + "ecospeed_mixed": "Ecospeed mixte", + "extra_hygiene": "Extra Hygiene", + "fitness": "Fitness", + "fresh_care": "Soin frais", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Serviettes", + "hqd_bed_sheets": "Draps", + "hqd_bulky": "Articles volumineux", + "hqd_casual": "Journalier", + "hqd_cold_wind_30": "Brise rafraîchissante 30 minutes", + "hqd_cold_wind_timing": "Brise rafraîchissante ", + "hqd_cotton": "Coton", + "hqd_curtain": "Rideaux", + "hqd_delicate": "Délicats", + "hqd_diaper": "Couches", + "hqd_duvet": "Couette", + "hqd_feather": "Vestes en duvet", + "hqd_hot_wind_timing": "Air chaud", + "hqd_hygienic": "Hygiénisation", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Vestes", + "hqd_jeans": "Jeans", + "hqd_luxury": "Luxury", + "hqd_mix": "Tissus mélangés", + "hqd_night_dry": "Séchage toute la nuit", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Rapide 20’", + "hqd_quick_30": "Rapide 30’", + "hqd_quick_dry": "Séchage rapide 30", + "hqd_quilt": "Couvertures", + "hqd_refresh": "Rafraîchissement", + "hqd_school_uniform": "Uniforme scolaire", + "hqd_shirt": "Chemises", + "hqd_shoes": "Chaussures", + "hqd_silk": "Soie", + "hqd_sports": "Sport", + "hqd_synthetics": "Synthétiques", + "hqd_timer": "Temporisé", + "hqd_towel": "Serviettes", + "hqd_underwear": "Sous-vêtements", + "hqd_warm_up": "Réveil", + "hqd_wool": "Laine", + "hqd_working_suit": "Vêtements de travail", + "hygiene": "Hygiène", + "iot_checkup": "Vérification", + "iot_dry_anti_mites": "Anti-acariens", + "iot_dry_baby": "Baby", + "iot_dry_backpacks": "Sac à dos", + "iot_dry_bathrobe": "Peignoir", + "iot_dry_bed_linen": "Linge de lit", + "iot_dry_bed_quilt": "Couette", + "iot_dry_cotton": "Coton", + "iot_dry_cuddly_toys": "Jouets en peluche", + "iot_dry_curtains": "Rideaux", + "iot_dry_dehumidifier": "Élimination de l\\'humidité", + "iot_dry_delicates": "Délicats", + "iot_dry_delicate_tablecloths": "Nappes délicates", + "iot_dry_denim_jeans": "Denim - jeans", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Couette", + "iot_dry_easy_iron_cotton": "Repassage super facile", + "iot_dry_easy_iron_synthetics": "Repassage super facile des synthétiques", + "iot_dry_gym_fit": "Sport", + "iot_dry_lingerie": "Lingerie", + "iot_dry_mixed": "Tissus mélangés", + "iot_dry_playsuits": "Combinaisons", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Rapide 59'.", + "iot_dry_refresh": "Coup d\\'éclat", + "iot_dry_regenerates_waterproof": "Imperméabilisant", + "iot_dry_relax_creases": "Anti-plis", + "iot_dry_shirts": "Chemises", + "iot_dry_small_load": "Faible charge", + "iot_dry_swimsuits_and_bikinis": "Maillots de bain", + "iot_dry_synthetics": "Synthétiques", + "iot_dry_synthetic_dry": "Séchage des synthétiques", + "iot_dry_tablecloths": "Nappes", + "iot_dry_technical_fabrics": "Textiles techniques", + "iot_dry_warm_embrace": "Chauffage délicat", + "iot_dry_wool": "Woolmark", + "jeans": "Jeans", + "mix_and_dry": "Mix&Dry", + "pets": "Animaux de compagnie", + "pre_iron": "Pré-repassage", + "rapid_30": "Rapid 30", + "rapid_45": "Rapide 45 min", + "rapid_59": "Lavage Parfait 59 Min", + "refresh": "Coup d'éclat", + "relax_creases": "Anti-plis", + "saving_30_min": "ECO 30'", + "shirts": "Chemises", + "shoes": "Chaussures", + "small_load": "Faible charge", + "soft_care": "Soin Doux", + "sport_plus": "Sports", + "super_easy_iron_misti": "Repassage super facile des mixtes", + "super_easy_iron_xxl": "Repassage super facile XXL", + "super_fast_cottons": "Super rapide coton", + "super_fast_delicates": "Super rapide délicat", + "synthetics": "Synthétiques", + "total_care": "Total Care", + "trainers": "Baskets", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Entretien imperméable", + "whites": "Blancs", + "wool": "Séchage Laine", + "woolmark": "Woolmark", + "xxl_load": "Charge XXL", + "zoom_59": "Zoom 59" + }, + "name": "Programme" + }, "programs_wm": { "state": { "20_degrees_coloured_cottons": "Couleurs 20 °C et cotons", @@ -556,7 +441,7 @@ "allergy_care_pro": "Soin Allergie Pro", "all_in_one_49": "Tout-en-un 49'.", "all_in_one_59": "Tout-en-un 59'.", - "all_in_one_59_steam": "Lavage actif + vapeur", + "all_in_one_59_steam": "Tout-en-un 59' + vapeur", "autocare": "Autocare", "autoclean": "Nettoyage du tambour", "baby_60": "Bébé 60°C", @@ -622,7 +507,7 @@ "iot_active_steam": "Vapeur d'eau", "iot_active_wash_steam": "Lavage actif", "iot_allergy_care_pro": "Soin Allergie Pro", - "iot_all_in_one_59_steam": "Lavage actif + vapeur", + "iot_all_in_one_59_steam": "Tout-en-un 59' + vapeur", "iot_checkup": "Vérification", "iot_colour_59_steam": "Couleurs 59' + Vapeur", "iot_cottons_steam": "Coton + Vapeur d'eau", @@ -889,9 +774,148 @@ "sparkling": "Pétillant", "white": "Blanc" } + }, + "dry_time": { + "name": "Temps de séchage" + }, + "power": { + "name": "Niveau de puissance" + }, + "remaining_time": { + "name": "Temps restant" + }, + "temperature": { + "name": "Température" + }, + "water_efficiency": { + "name": "Efficacité en eau" + }, + "water_saving": { + "name": "Économies d'eau" + }, + "duration": { + "name": "Durée" + }, + "target_temperature": { + "name": "Température souhaitée" + }, + "spin_speed": { + "name": "Essorage" + }, + "steam_leve": { + "name": "Niveau de vapeur" + }, + "dirt_level": { + "name": "Niveau de saleté" + }, + "delay_time": { + "name": "Démarrage Différé" + }, + "suggested_load": { + "name": "Capacité de charge" + }, + "energy_label": { + "name": "Efficacité énergétique" + }, + "det_dust": { + "name": "Poudre" + }, + "det_liquid": { + "name": "Liquide" + }, + "errors": { + "name": "Erreur" + }, + "programs": { + "name": "Programme actuel" + }, + "room_temperature": { + "name": "Température ambiante" + }, + "humidity": { + "name": "Humidité" + }, + "cycles_total": { + "name": "Cycles Total" + }, + "energy_total": { + "name": "Consommation d’énergie Total" + }, + "water_total": { + "name": "Efficacité en eau Total" + }, + "energy_current": { + "name": "Consommation d’énergie Actuel" + }, + "water_current": { + "name": "Efficacité en eau Actuel" + }, + "freezer_temp": { + "name": "Température du congélateur" + }, + "fridge_temp": { + "name": "Température du réfrigérateur" } }, "select": { + "dry_levels": { + "state": { + "no_dry": "Pas de séchage", + "iron_dry": "Fer", + "no_dry_iron": "Prêt à ranger", + "cupboard_dry": "Prêt à ranger", + "extra_dry": "Extra sec", + "ready_to_wear": "Prêt à porter" + }, + "name": "Niveau de séchage" + }, + "eco_pilot": { + "state": { + "touch_off": "Désactivé", + "avoid_touch": "Évitez de toucher", + "follow_touch": "Suivi" + }, + "name": "Pilote éco" + }, + "fan_mode": { + "state": { + "high": "Élevé", + "mid": "Intermédiaire ", + "low": "Faible", + "auto": "Automatique" + } + }, + "ref_zones": { + "state": { + "fridge": "Réfrigérateur", + "freezer": "Congélateur", + "vtroom1": "My Zone", + "fridge_freezer": "Réfrigérateur & Congélateur" + }, + "name": "Zone" + }, + "programs_ac": { + "state": { + "iot_10_heating": "Fonction Chauffage 10 °C", + "iot_auto": "Automatique", + "iot_cool": "Frais", + "iot_dry": "Sec", + "iot_fan": "Ventilateur", + "iot_heat": "Chaleur", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Auto-purification", + "iot_self_clean": "Auto-nettoyage", + "iot_self_clean_56": "Steri-Clean 56°C", + "iot_simple_start": "Démarrez maintenant", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Auto", + "iot_uv_and_cool": "UV + Froid", + "iot_uv_and_dry": "UV + Déshumidificateur", + "iot_uv_and_fan": "UV + ventilateur", + "iot_uv_and_heat": "UV + Chaleur" + }, + "name": "Programme" + }, "programs_dw": { "state": { "59_min": "Rapide 59'", @@ -1241,7 +1265,7 @@ "allergy_care_pro": "Soin Allergie Pro", "all_in_one_49": "Tout-en-un 49'.", "all_in_one_59": "Tout-en-un 59'.", - "all_in_one_59_steam": "Lavage actif + vapeur", + "all_in_one_59_steam": "Tout-en-un 59' + vapeur", "autocare": "Autocare", "autoclean": "Nettoyage du tambour", "baby_60": "Bébé 60°C", @@ -1307,7 +1331,7 @@ "iot_active_steam": "Vapeur d'eau", "iot_active_wash_steam": "Lavage actif", "iot_allergy_care_pro": "Soin Allergie Pro", - "iot_all_in_one_59_steam": "Lavage actif + vapeur", + "iot_all_in_one_59_steam": "Tout-en-un 59' + vapeur", "iot_checkup": "Vérification", "iot_colour_59_steam": "Couleurs 59' + Vapeur", "iot_cottons_steam": "Coton + Vapeur d'eau", @@ -1540,69 +1564,6 @@ }, "name": "Programme" }, - "dry_levels": { - "state": { - "0": "Pas de séchage", - "1": "Fer", - "2": "Prêt à ranger", - "3": "Prêt à ranger", - "4": "Extra sec", - "12": "Fer", - "13": "Prêt à ranger", - "14": "Prêt à porter", - "15": "Extra sec", - "11": "Pas de séchage" - }, - "name": "Niveau de séchage" - }, - "spin_speed": { - "name": "Essorage" - }, - "temperature": { - "name": "Température" - }, - "dry_time": { - "name": "Temps de séchage" - }, - "eco_pilot": { - "state": { - "0": "Désactivé", - "1": "Évitez de toucher", - "2": "Suivi" - }, - "name": "Pilote éco" - }, - "fan_mode": { - "state": { - "1": "Élevé", - "2": "Intermédiaire ", - "3": "Faible", - "4": "Automatique", - "5": "Automatique" - } - }, - "programs_ac": { - "state": { - "iot_10_heating": "Fonction Chauffage 10 °C", - "iot_auto": "Automatique", - "iot_cool": "Frais", - "iot_dry": "Sec", - "iot_fan": "Ventilateur", - "iot_heat": "Chaleur", - "iot_nano_aqua": "Nano Aqua", - "iot_purify": "Auto-purification", - "iot_self_clean": "Auto-nettoyage", - "iot_self_clean_56": "Steri-Clean 56°C", - "iot_simple_start": "Démarrez maintenant", - "iot_uv": "UV", - "iot_uv_and_auto": "UV + Auto", - "iot_uv_and_cool": "UV + Froid", - "iot_uv_and_dry": "UV + Déshumidificateur", - "iot_uv_and_fan": "UV + ventilateur", - "iot_uv_and_heat": "UV + Chaleur" - }, - "name": "Programme" - }, "programs_ref": { "state": { "auto_set": "AUTO-SET", @@ -1626,17 +1587,17 @@ }, "name": "Programme" }, + "dry_time": { + "name": "Temps de séchage" + }, + "spin_speed": { + "name": "Essorage" + }, + "temperature": { + "name": "Température" + }, "remaining_time": { "name": "Temps restant" - }, - "ref_zones": { - "state": { - "fridge": "Réfrigérateur", - "freezer": "Congélateur", - "vtroom1": "My Zone", - "fridge_freezer": "Réfrigérateur & Congélateur" - }, - "name": "Zone" } }, "switch": { @@ -1724,18 +1685,15 @@ "acqua_plus": { "name": "Acquaplus" }, - "auto_dose": { - "name": "Dose automatique" - }, - "good_night": { - "name": "Bonne nuit" - }, "auto_dose_softener": { "name": "Dose automatique Adoucissant" }, "auto_dose_detergent": { "name": "Dose automatique Lessive" }, + "good_night": { + "name": "Bonne nuit" + }, "auto_set": { "name": "Réglage automatique" }, @@ -1768,27 +1726,12 @@ "anti_crease": { "name": "Anti-pli" }, - "aqua_plus": { + "acqua_plus": { "name": "Acquaplus" }, "spin_speed": { "name": "Essorage" }, - "programs_dw": { - "name": "Programme" - }, - "programs_ih": { - "name": "Programme" - }, - "programs_ov": { - "name": "Programme" - }, - "programs_td": { - "name": "Programme" - }, - "programs_wm": { - "name": "Programme" - }, "still_hot": { "name": "Encore chaud" }, @@ -1819,12 +1762,6 @@ "prewash": { "name": "Prélavage" }, - "acqua_plus": { - "name": "Acquaplus" - }, - "auto_dose": { - "name": "Dose automatique" - }, "buzzer": { "name": "Sonnerie de fin de cycle" }, @@ -1850,6 +1787,17 @@ "name": "Remplacement du filtre" } }, + "button": { + "induction_hob": { + "name": "Table de cuisson à induction" + }, + "start_program": { + "name": "Programme Démarrer" + }, + "stop_program": { + "name": "Programme Arrêter" + } + }, "number": { "power_management": { "name": "Gestion de la puissance" @@ -1888,17 +1836,6 @@ "name": "Température cible Réfrigérateur" } }, - "button": { - "induction_hob": { - "name": "Table de cuisson à induction" - }, - "start_program": { - "name": "Programme Démarrer" - }, - "stop_program": { - "name": "Programme Arrêter" - } - }, "climate": { "air_conditioner": { "name": "Climatiseur" diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index ef6d6be..feca9c3 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -3,206 +3,73 @@ "sensor": { "washing_modes": { "state": { - "0": "מוּכָן", - "1": "מוּכָן", - "3": "הַפסָקָה", - "4": "מתוזמן", - "5": "מתוזמן", - "6": "שְׁגִיאָה", - "7": "מוּכָן", - "2": "התוכנית פועלת", - "8": "Test", - "9": "Stopping cycle…" + "ready": "מוּכָן", + "running": "התוכנית פועלת", + "pause": "הַפסָקָה", + "scheduled": "מתוזמן", + "error": "שְׁגִיאָה", + "test": "Test", + "ending": "Stopping cycle…" + } + }, + "mach_modes_ac": { + "state": { + "auto": "Auto", + "cool": "Cool", + "dry": "Dry", + "heat": "Heat", + "fan": "Fan" } }, "program_phases_wm": { "state": { - "0": "מוּכָן", - "1": "לִשְׁטוֹף", - "2": "לִשְׁטוֹף", - "3": "Spin", - "4": "לִשְׁטוֹף", - "5": "לִשְׁטוֹף", - "6": "לִשְׁטוֹף", - "7": "יִבּוּשׁ", - "9": "קִיטוֹר", - "10": "מוּכָן", - "11": "Spin", - "12": "Weighing ", - "13": "Weighing ", - "14": "לִשְׁטוֹף", - "15": "לִשְׁטוֹף", - "16": "לִשְׁטוֹף", - "17": "לִשְׁטוֹף", - "18": "לִשְׁטוֹף", - "19": "מתוזמן", - "20": "שמור על טריות", - "24": "Refresh", - "25": "לִשְׁטוֹף", - "26": "Heating", - "27": "לִשְׁטוֹף" + "ready": "מוּכָן", + "spin": "Spin", + "rinse": "לִשְׁטוֹף", + "drying": "יִבּוּשׁ", + "steam": "קִיטוֹר", + "weighting": "Weighing ", + "scheduled": "מתוזמן", + "tumbling": "שמור על טריות", + "refresh": "Refresh", + "heating": "Heating", + "washing": "לִשְׁטוֹף" }, "name": "שלב" }, "program_phases_td": { "state": { - "0": "מוּכָן", - "1": "Drying", - "2": "יִבּוּשׁ", - "3": "Cooldown", - "13": "Cooldown", - "14": "Drying", - "15": "Drying", - "16": "Cooldown", - "18": "Keep Fresh", - "19": "יִבּוּשׁ", - "20": "יִבּוּשׁ", - "11": "מוּכָן", - "17": "unknown", - "12": "unknown" + "ready": "מוּכָן", + "heat_stroke": "Drying", + "drying": "יִבּוּשׁ", + "cooldown": "Cooldown", + "unknown": "unknown", + "tumbling": "Keep Fresh" }, "name": "שלב" }, "program_phases_dw": { "state": { - "0": "מוּכָן", - "1": "Prewash", - "2": "לִשְׁטוֹף", - "3": "לִשְׁטוֹף", - "4": "יִבּוּשׁ", - "5": "מוּכָן", - "6": "Hot rinse" + "ready": "מוּכָן", + "prewash": "Prewash", + "washing": "לִשְׁטוֹף", + "rinse": "לִשְׁטוֹף", + "drying": "יִבּוּשׁ", + "hot_rinse": "Hot rinse" }, "name": "שלב" }, "dry_levels": { "state": { - "0": "ללא ייבוש", - "1": "בַּרזֶל", - "2": "לא לייבש ברזל", - "3": "ארון יבש", - "4": "יבש במיוחד", - "12": "בַּרזֶל", - "13": "ארון יבש", - "14": "Ready to wear", - "15": "יבש במיוחד", - "11": "ללא ייבוש" + "no_dry": "ללא ייבוש", + "iron_dry": "בַּרזֶל", + "no_dry_iron": "לא לייבש ברזל", + "cupboard_dry": "ארון יבש", + "extra_dry": "יבש במיוחד", + "ready_to_wear": "Ready to wear" }, "name": "רמת ייבוש" }, - "anti_crease": { - "name": "Anticrease" - }, - "power": { - "name": "Power level" - }, - "remaining_time": { - "name": "זמן שנותר" - }, - "temperature": { - "name": "Temperature" - }, - "water_efficiency": { - "name": "Water efficiency" - }, - "water_saving": { - "name": "Water savings" - }, - "duration": { - "name": "מֶשֶׁך" - }, - "target_temperature": { - "name": "Target temperature" - }, - "spin_speed": { - "name": "סיבוב" - }, - "steam_leve": { - "name": "מפלס קיטור" - }, - "dirt_level": { - "name": "רמת עפר" - }, - "delay_time": { - "name": "Delay Start" - }, - "dry_time": { - "name": "זמן ייבוש" - }, - "suggested_load": { - "name": "יכולת עומס" - }, - "energy_label": { - "name": "חסכון באנרגיה" - }, - "det_dust": { - "name": "Powder detergent" - }, - "det_liquid": { - "name": "Liquid detergent" - }, - "errors": { - "name": "Error" - }, - "programs": { - "name": "Current program" - }, - "cycles_total": { - "name": "מחזורים Total" - }, - "energy_total": { - "name": "Energy Consumption Total" - }, - "water_total": { - "name": "Water efficiency Total" - }, - "energy_current": { - "name": "Energy Consumption Current" - }, - "water_current": { - "name": "Water efficiency Current" - }, - "mach_modes_ac": { - "state": { - "0": "Auto", - "1": "Cool", - "2": "Cool", - "3": "Dry", - "4": "Heat", - "5": "Fan", - "6": "Fan" - } - }, - "programs_td": { - "state": { - "genius": "Genius", - "hqd_bath_towel": "Bath towel", - "hqd_bulky": "Bulky", - "hqd_cold_wind_30": "Cold wind 30 minutes", - "hqd_cold_wind_timing": "Cold wind", - "hqd_hot_wind_timing": "Hot wind", - "hqd_luxury": "Luxury", - "hqd_night_dry": "Night dry", - "hqd_refresh": "Refresh", - "hqd_timer": "תוזמן", - "hqd_warm_up": "Warm up", - "hqd_working_suit": "Working suit", - "iot_dry_synthetic_dry": "סינתטי יבש" - }, - "name": "Program" - }, - "room_temperature": { - "name": "Room temperature" - }, - "humidity": { - "name": "Humidity" - }, - "freezer_temp": { - "name": "Freezer temperature" - }, - "fridge_temp": { - "name": "Fridge temperature" - }, "programs_ac": { "state": { "iot_simple_start": "התחל עכשיו" @@ -236,6 +103,24 @@ }, "name": "Program" }, + "programs_td": { + "state": { + "genius": "Genius", + "hqd_bath_towel": "Bath towel", + "hqd_bulky": "Bulky", + "hqd_cold_wind_30": "Cold wind 30 minutes", + "hqd_cold_wind_timing": "Cold wind", + "hqd_hot_wind_timing": "Hot wind", + "hqd_luxury": "Luxury", + "hqd_night_dry": "Night dry", + "hqd_refresh": "Refresh", + "hqd_timer": "תוזמן", + "hqd_warm_up": "Warm up", + "hqd_working_suit": "Working suit", + "iot_dry_synthetic_dry": "סינתטי יבש" + }, + "name": "Program" + }, "programs_wm": { "state": { "20_degrees_new_energy_label": "20 מעלות צלזיוס", @@ -246,7 +131,7 @@ "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "All in One 49 '", "all_in_one_59": "All in One 59 '", - "all_in_one_59_steam": "שטיפה פעילה", + "all_in_one_59_steam": "All in One 59 '", "autocare": "טיפול אוטומטי", "autoclean": "ניקוי אוטומטי", "baby_60": "BABY_60", @@ -276,7 +161,7 @@ "iot_active_steam": "קִיטוֹר", "iot_active_wash_steam": "שטיפה פעילה", "iot_allergy_care_pro": "Allergy Care Pro", - "iot_all_in_one_59_steam": "שטיפה פעילה", + "iot_all_in_one_59_steam": "All in One 59 '", "iot_checkup": "בְּדִיקָה", "iot_delicati_59_steam": "DELICATI_59", "iot_dry_air_refresh": "רענון אוויר", @@ -447,9 +332,132 @@ }, "programs_wc": { "state": {} + }, + "dry_time": { + "name": "זמן ייבוש" + }, + "power": { + "name": "Power level" + }, + "remaining_time": { + "name": "זמן שנותר" + }, + "temperature": { + "name": "Temperature" + }, + "water_efficiency": { + "name": "Water efficiency" + }, + "water_saving": { + "name": "Water savings" + }, + "duration": { + "name": "מֶשֶׁך" + }, + "target_temperature": { + "name": "Target temperature" + }, + "spin_speed": { + "name": "סיבוב" + }, + "steam_leve": { + "name": "מפלס קיטור" + }, + "dirt_level": { + "name": "רמת עפר" + }, + "delay_time": { + "name": "Delay Start" + }, + "suggested_load": { + "name": "יכולת עומס" + }, + "energy_label": { + "name": "חסכון באנרגיה" + }, + "det_dust": { + "name": "Powder detergent" + }, + "det_liquid": { + "name": "Liquid detergent" + }, + "errors": { + "name": "Error" + }, + "programs": { + "name": "Current program" + }, + "room_temperature": { + "name": "Room temperature" + }, + "humidity": { + "name": "Humidity" + }, + "cycles_total": { + "name": "מחזורים Total" + }, + "energy_total": { + "name": "Energy Consumption Total" + }, + "water_total": { + "name": "Water efficiency Total" + }, + "energy_current": { + "name": "Energy Consumption Current" + }, + "water_current": { + "name": "Water efficiency Current" + }, + "freezer_temp": { + "name": "Freezer temperature" + }, + "fridge_temp": { + "name": "Fridge temperature" } }, "select": { + "dry_levels": { + "state": { + "no_dry": "ללא ייבוש", + "iron_dry": "בַּרזֶל", + "no_dry_iron": "לא לייבש ברזל", + "cupboard_dry": "ארון יבש", + "extra_dry": "יבש במיוחד", + "ready_to_wear": "Ready to wear" + }, + "name": "רמת ייבוש" + }, + "eco_pilot": { + "state": { + "touch_off": "Off", + "avoid_touch": "Avoid touch", + "follow_touch": "Follow" + }, + "name": "Eco pilot" + }, + "fan_mode": { + "state": { + "high": "High", + "mid": "Medium ", + "low": "Low", + "auto": "Auto" + } + }, + "ref_zones": { + "state": { + "fridge": "Fridge", + "freezer": "Freezer", + "vtroom1": "My Zone", + "fridge_freezer": "Fridge & Freezer" + }, + "name": "Zone" + }, + "programs_ac": { + "state": { + "iot_simple_start": "התחל עכשיו" + }, + "name": "Program" + }, "programs_dw": { "state": { "gentle_wash": "Gentle wash", @@ -505,7 +513,7 @@ "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "All in One 49 '", "all_in_one_59": "All in One 59 '", - "all_in_one_59_steam": "שטיפה פעילה", + "all_in_one_59_steam": "All in One 59 '", "autocare": "טיפול אוטומטי", "autoclean": "ניקוי אוטומטי", "baby_60": "BABY_60", @@ -535,7 +543,7 @@ "iot_active_steam": "קִיטוֹר", "iot_active_wash_steam": "שטיפה פעילה", "iot_allergy_care_pro": "Allergy Care Pro", - "iot_all_in_one_59_steam": "שטיפה פעילה", + "iot_all_in_one_59_steam": "All in One 59 '", "iot_checkup": "בְּדִיקָה", "iot_delicati_59_steam": "DELICATI_59", "iot_dry_air_refresh": "רענון אוויר", @@ -692,53 +700,6 @@ }, "name": "Program" }, - "dry_levels": { - "state": { - "0": "ללא ייבוש", - "1": "בַּרזֶל", - "2": "לא לייבש ברזל", - "3": "ארון יבש", - "4": "יבש במיוחד", - "12": "בַּרזֶל", - "13": "ארון יבש", - "14": "Ready to wear", - "15": "יבש במיוחד", - "11": "ללא ייבוש" - }, - "name": "רמת ייבוש" - }, - "spin_speed": { - "name": "סיבוב" - }, - "temperature": { - "name": "Temperature" - }, - "dry_time": { - "name": "זמן ייבוש" - }, - "eco_pilot": { - "state": { - "0": "Off", - "1": "Avoid touch", - "2": "Follow" - }, - "name": "Eco pilot" - }, - "fan_mode": { - "state": { - "1": "High", - "2": "Medium ", - "3": "Low", - "4": "Auto", - "5": "Auto" - } - }, - "programs_ac": { - "state": { - "iot_simple_start": "התחל עכשיו" - }, - "name": "Program" - }, "programs_ref": { "state": { "chiller": "Quick cool", @@ -751,17 +712,17 @@ }, "name": "Program" }, + "dry_time": { + "name": "זמן ייבוש" + }, + "spin_speed": { + "name": "סיבוב" + }, + "temperature": { + "name": "Temperature" + }, "remaining_time": { "name": "זמן שנותר" - }, - "ref_zones": { - "state": { - "fridge": "Fridge", - "freezer": "Freezer", - "vtroom1": "My Zone", - "fridge_freezer": "Fridge & Freezer" - }, - "name": "Zone" } }, "switch": { @@ -849,18 +810,15 @@ "acqua_plus": { "name": "Acquaplus" }, - "auto_dose": { - "name": "מינון אוטומטי" - }, - "good_night": { - "name": "לילה טוב" - }, "auto_dose_softener": { "name": "מינון אוטומטי מרכך" }, "auto_dose_detergent": { "name": "מינון אוטומטי חומר ניקוי" }, + "good_night": { + "name": "לילה טוב" + }, "auto_set": { "name": "Auto-Set" }, @@ -893,27 +851,12 @@ "anti_crease": { "name": "Anticrease" }, - "aqua_plus": { + "acqua_plus": { "name": "Acquaplus" }, "spin_speed": { "name": "סיבוב" }, - "programs_dw": { - "name": "Program" - }, - "programs_ih": { - "name": "Program" - }, - "programs_ov": { - "name": "Program" - }, - "programs_td": { - "name": "Program" - }, - "programs_wm": { - "name": "Program" - }, "still_hot": { "name": "Still hot" }, @@ -944,12 +887,6 @@ "prewash": { "name": "שטיפה מראש" }, - "acqua_plus": { - "name": "Acquaplus" - }, - "auto_dose": { - "name": "מינון אוטומטי" - }, "buzzer": { "name": "Cycle end chime" }, @@ -975,6 +912,17 @@ "name": "Filter replacement" } }, + "button": { + "induction_hob": { + "name": "Induction Hob" + }, + "start_program": { + "name": "Program Start" + }, + "stop_program": { + "name": "Program Stop" + } + }, "number": { "power_management": { "name": "Power management" @@ -1013,17 +961,6 @@ "name": "Target temperature Fridge" } }, - "button": { - "induction_hob": { - "name": "Induction Hob" - }, - "start_program": { - "name": "Program Start" - }, - "stop_program": { - "name": "Program Stop" - } - }, "climate": { "air_conditioner": { "name": "Air conditioner" diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index 60f329c..e96dc3f 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -3,325 +3,73 @@ "sensor": { "washing_modes": { "state": { - "0": "Spremno", - "1": "Spremno", - "3": "Zaustavi", - "4": "Zakazano", - "5": "Zakazano", - "6": "Greška", - "7": "Spremno", - "2": "Program u tijeku", - "8": "Test", - "9": "Zaustavljanje ciklusa…" + "ready": "Spremno", + "running": "Program u tijeku", + "pause": "Zaustavi", + "scheduled": "Zakazano", + "error": "Greška", + "test": "Test", + "ending": "Zaustavljanje ciklusa…" + } + }, + "mach_modes_ac": { + "state": { + "auto": "Automatski", + "cool": "Hlađenje", + "dry": "Sušenje", + "heat": "Zagrijavanje", + "fan": "Ventilator" } }, "program_phases_wm": { "state": { - "0": "Spremno", - "1": "Pranje", - "2": "Pranje", - "3": "Okretaj", - "4": "Ispiranje", - "5": "Ispiranje", - "6": "Ispiranje", - "7": "Sušenje", - "9": "Para", - "10": "Spremno", - "11": "Okretaj", - "12": "Mjerenje težine ", - "13": "Mjerenje težine ", - "14": "Pranje", - "15": "Pranje", - "16": "Pranje", - "17": "Ispiranje", - "18": "Ispiranje", - "19": "Zakazano", - "20": "Održavanje svježine", - "24": "Protiv neugodnih mirisa", - "25": "Pranje", - "26": "Grijanje", - "27": "Pranje" + "ready": "Spremno", + "spin": "Okretaj", + "rinse": "Ispiranje", + "drying": "Sušenje", + "steam": "Para", + "weighting": "Mjerenje težine ", + "scheduled": "Zakazano", + "tumbling": "Održavanje svježine", + "refresh": "Protiv neugodnih mirisa", + "heating": "Grijanje", + "washing": "Pranje" }, "name": "Faza" }, "program_phases_td": { "state": { - "0": "Spremno", - "1": "Sušenje", - "2": "Sušenje", - "3": "Hlađenje", - "13": "Hlađenje", - "14": "Sušenje", - "15": "Sušenje", - "16": "Hlađenje", - "18": "Održi svježim", - "19": "Sušenje", - "20": "Sušenje", - "11": "Spremno", - "17": "unknown", - "12": "unknown" + "ready": "Spremno", + "heat_stroke": "Sušenje", + "drying": "Sušenje", + "cooldown": "Hlađenje", + "unknown": "unknown", + "tumbling": "Održi svježim" }, "name": "Faza" }, "program_phases_dw": { "state": { - "0": "Spremno", - "1": "Pretpranje", - "2": "Pranje", - "3": "Ispiranje", - "4": "Sušenje", - "5": "Spremno", - "6": "Hot rinse" + "ready": "Spremno", + "prewash": "Pretpranje", + "washing": "Pranje", + "rinse": "Ispiranje", + "drying": "Sušenje", + "hot_rinse": "Hot rinse" }, "name": "Faza" }, "dry_levels": { "state": { - "0": "Bez sušenja", - "1": "Suho za glačanje", - "2": "Suho za spremanje", - "3": "Suho za spremanje", - "4": "Potpuno suho", - "12": "Suho za glačanje", - "13": "Suho za spremanje", - "14": "Spremno za nošenje", - "15": "Potpuno suho", - "11": "Bez sušenja" + "no_dry": "Bez sušenja", + "iron_dry": "Suho za glačanje", + "no_dry_iron": "Suho za spremanje", + "cupboard_dry": "Suho za spremanje", + "extra_dry": "Potpuno suho", + "ready_to_wear": "Spremno za nošenje" }, "name": "Stupanj suhoće" }, - "anti_crease": { - "name": "Sprečavanje gužvanja" - }, - "power": { - "name": "Razina napajanja" - }, - "remaining_time": { - "name": "Preostalo vrijeme" - }, - "temperature": { - "name": "Temperatura" - }, - "water_efficiency": { - "name": "Učinkovitost vode" - }, - "water_saving": { - "name": "Ušteda na vodi" - }, - "duration": { - "name": "Trajanje" - }, - "target_temperature": { - "name": "Ciljana temperatura" - }, - "spin_speed": { - "name": "Centrifuga" - }, - "steam_leve": { - "name": "Razina pare" - }, - "dirt_level": { - "name": "Stupanj zaprljanosti" - }, - "delay_time": { - "name": "Odgoda početka" - }, - "dry_time": { - "name": "Trajanje sušenja" - }, - "suggested_load": { - "name": "Kapacitet rublja" - }, - "energy_label": { - "name": "Energetska učinkovitost" - }, - "det_dust": { - "name": "Prašak" - }, - "det_liquid": { - "name": "Tekućina" - }, - "errors": { - "name": "Greška" - }, - "programs": { - "name": "Trenutačni program" - }, - "cycles_total": { - "name": "Programi Ukupno" - }, - "energy_total": { - "name": "Potrošnja energije Ukupno" - }, - "water_total": { - "name": "Učinkovitost vode Ukupno" - }, - "energy_current": { - "name": "Potrošnja energije Current" - }, - "water_current": { - "name": "Učinkovitost vode Current" - }, - "mach_modes_ac": { - "state": { - "0": "Automatski", - "1": "Hlađenje", - "2": "Hlađenje", - "3": "Sušenje", - "4": "Zagrijavanje", - "5": "Ventilator", - "6": "Ventilator" - } - }, - "programs_td": { - "state": { - "active_dry": "Aktivno sušenje", - "allergy_care": "Antialergijski", - "all_in_one": "All in One", - "antiallergy": "Antialergijski", - "anti_odours": "Protiv neugodnih mirisa", - "auto_care": "Auto Care", - "baby": "Dječje rublje", - "bed_quilt": "Pokrivači", - "care_30": "Njega 30", - "care_45": "Njega 45", - "care_59": "Njega 59", - "coloured": "Šareno", - "daily_45_min": "Dnevni 45'", - "daily_perfect_59_min": "Dnevni Perfect 59'", - "darks_and_coloured": "Tamno & Šareno", - "delicates": "Osjetljivo", - "duvet": "Popluni", - "eco": "Ekološki pamuk", - "ecospeed_cottons": "Ecospeed Pamuk", - "ecospeed_delicates": "Ecospeed osjetljivo", - "ecospeed_mixed": "Ecospeed Miješane tkanine", - "extra_hygiene": "Extra higijenski", - "fitness": "Fitness", - "fresh_care": "Svježa njega", - "genius": "Genius", - "hqd_baby_care": "Baby Care", - "hqd_bath_towel": "Ručnici", - "hqd_bed_sheets": "Plahte", - "hqd_bulky": "Glomazni komadi", - "hqd_casual": "Opušteno", - "hqd_cold_wind_30": "Hladni zrak, 30 minuta", - "hqd_cold_wind_timing": "Hladni zrak ", - "hqd_cotton": "Pamuk", - "hqd_curtain": "Zavjese", - "hqd_delicate": "Osjetljivo rublje", - "hqd_diaper": "Pelene", - "hqd_duvet": "Poplun", - "hqd_feather": "Jakne punjene paperjem", - "hqd_hot_wind_timing": "Vrući zrak", - "hqd_hygienic": "Higijenizacija", - "hqd_i_refresh": "I-Refresh", - "hqd_i_refresh_pro": "I-Refresh Pro", - "hqd_jacket": "Jakne", - "hqd_jeans": "Traperice", - "hqd_luxury": "Luxury", - "hqd_mix": "Miješano rublje", - "hqd_night_dry": "Sušenje preko noći", - "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious Cure", - "hqd_quick_20": "Brzo 20", - "hqd_quick_30": "Brzo 30", - "hqd_quick_dry": "Brzo sušenje 30", - "hqd_quilt": "Popluni", - "hqd_refresh": "Protiv neugodnih mirisa", - "hqd_school_uniform": "Školska uniforma", - "hqd_shirt": "Majice", - "hqd_shoes": "Cipele", - "hqd_silk": "Svila", - "hqd_sports": "Sportska odjeća", - "hqd_synthetics": "Sintetika", - "hqd_timer": "Vremenski definirano", - "hqd_towel": "Ručnici", - "hqd_underwear": "Donje rublje", - "hqd_warm_up": "Zagrijavanje", - "hqd_wool": "Vuna", - "hqd_working_suit": "Radna odjeća", - "hygiene": "Higijena", - "iot_checkup": "Kontrolni pregled", - "iot_dry_anti_mites": "Protiv grinja", - "iot_dry_baby": "Dječje rublje", - "iot_dry_backpacks": "Ruksaci", - "iot_dry_bathrobe": "Kupaonski ogrtači", - "iot_dry_bed_linen": "Posteljina", - "iot_dry_bed_quilt": "Pokrivači", - "iot_dry_cotton": "Pamuk", - "iot_dry_cuddly_toys": "Plišane igračke", - "iot_dry_curtains": "Zavjese", - "iot_dry_dehumidifier": "Odstranjivač vlage", - "iot_dry_delicates": "Osjetljivo", - "iot_dry_delicate_tablecloths": "Osjetljivi stolnjaci", - "iot_dry_denim_jeans": "Traper – Traperice", - "iot_dry_down_jacket": "Jakna", - "iot_dry_duvet": "Popluni", - "iot_dry_easy_iron_cotton": "Super Easy Iron", - "iot_dry_easy_iron_synthetics": "Super Easy Iron za sintetičko rublje", - "iot_dry_gym_fit": "Fitness odjeća", - "iot_dry_lingerie": "Donje rublje", - "iot_dry_mixed": "Miješane tkanine", - "iot_dry_playsuits": "Kombinezoni", - "iot_dry_rapid_30": "Rapid 30", - "iot_dry_rapid_59": "Brzi program 59’.", - "iot_dry_refresh": "Osvježavanje", - "iot_dry_regenerates_waterproof": "Regeneracija vodootporne odjeće", - "iot_dry_relax_creases": "Smanjenje nabora", - "iot_dry_shirts": "Košulje", - "iot_dry_small_load": "Mali kapacitet", - "iot_dry_swimsuits_and_bikinis": "Kupaći kostimi", - "iot_dry_synthetics": "Sintetika", - "iot_dry_synthetic_dry": "Suha sintetika", - "iot_dry_tablecloths": "Stolnjaci", - "iot_dry_technical_fabrics": "Tehničko platno", - "iot_dry_warm_embrace": "Zagrijavanje", - "iot_dry_wool": "Woolmark", - "jeans": "Traper", - "mix_and_dry": "Mix&Dry", - "pets": "Kućni ljubimci", - "pre_iron": "Prije glačanja", - "rapid_30": "Rapid 30", - "rapid_45": "Brzi 45 min", - "rapid_59": "Perfect Rapid 59 Min", - "refresh": "Osvježavanje", - "relax_creases": "Smanjenje nabora", - "saving_30_min": "ECO 30'", - "shirts": "Košulje", - "shoes": "Cipele", - "small_load": "Mali kapacitet", - "soft_care": "Soft Care", - "sport_plus": "Sport Plus", - "super_easy_iron_misti": "Iznimno jednostavno glačanje za raznovrsne tkanine", - "super_easy_iron_xxl": "Iznimno jednostavno glačanje XXL", - "super_fast_cottons": "Super brzi Pamuk", - "super_fast_delicates": "Super brzi Osjetljivo", - "synthetics": "Sintetika", - "total_care": "Total Care", - "trainers": "Trenirke i sportska obuća", - "ultra_care": "Ultra Care", - "waterproof_revitalize": "Regeneracija vodootporne odjeće", - "whites": "Bijelo", - "wool": "Sušenje vune", - "woolmark": "Woolmark", - "xxl_load": "XXL kapacitet", - "zoom_59": "Zoom 59" - }, - "name": "Program" - }, - "room_temperature": { - "name": "Sobna temperatura" - }, - "humidity": { - "name": "Vlažnost" - }, - "freezer_temp": { - "name": "Temperatura zamrzivača" - }, - "fridge_temp": { - "name": "Temperatura hladnjaka" - }, "programs_ac": { "state": { "iot_10_heating": "Funkcija grijanja na 10 °C", @@ -545,6 +293,143 @@ }, "name": "Program" }, + "programs_td": { + "state": { + "active_dry": "Aktivno sušenje", + "allergy_care": "Antialergijski", + "all_in_one": "All in One", + "antiallergy": "Antialergijski", + "anti_odours": "Protiv neugodnih mirisa", + "auto_care": "Auto Care", + "baby": "Dječje rublje", + "bed_quilt": "Pokrivači", + "care_30": "Njega 30", + "care_45": "Njega 45", + "care_59": "Njega 59", + "coloured": "Šareno", + "daily_45_min": "Dnevni 45'", + "daily_perfect_59_min": "Dnevni Perfect 59'", + "darks_and_coloured": "Tamno & Šareno", + "delicates": "Osjetljivo", + "duvet": "Popluni", + "eco": "Ekološki pamuk", + "ecospeed_cottons": "Ecospeed Pamuk", + "ecospeed_delicates": "Ecospeed osjetljivo", + "ecospeed_mixed": "Ecospeed Miješane tkanine", + "extra_hygiene": "Extra higijenski", + "fitness": "Fitness", + "fresh_care": "Svježa njega", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Ručnici", + "hqd_bed_sheets": "Plahte", + "hqd_bulky": "Glomazni komadi", + "hqd_casual": "Opušteno", + "hqd_cold_wind_30": "Hladni zrak, 30 minuta", + "hqd_cold_wind_timing": "Hladni zrak ", + "hqd_cotton": "Pamuk", + "hqd_curtain": "Zavjese", + "hqd_delicate": "Osjetljivo rublje", + "hqd_diaper": "Pelene", + "hqd_duvet": "Poplun", + "hqd_feather": "Jakne punjene paperjem", + "hqd_hot_wind_timing": "Vrući zrak", + "hqd_hygienic": "Higijenizacija", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Jakne", + "hqd_jeans": "Traperice", + "hqd_luxury": "Luxury", + "hqd_mix": "Miješano rublje", + "hqd_night_dry": "Sušenje preko noći", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious Cure", + "hqd_quick_20": "Brzo 20", + "hqd_quick_30": "Brzo 30", + "hqd_quick_dry": "Brzo sušenje 30", + "hqd_quilt": "Popluni", + "hqd_refresh": "Protiv neugodnih mirisa", + "hqd_school_uniform": "Školska uniforma", + "hqd_shirt": "Majice", + "hqd_shoes": "Cipele", + "hqd_silk": "Svila", + "hqd_sports": "Sportska odjeća", + "hqd_synthetics": "Sintetika", + "hqd_timer": "Vremenski definirano", + "hqd_towel": "Ručnici", + "hqd_underwear": "Donje rublje", + "hqd_warm_up": "Zagrijavanje", + "hqd_wool": "Vuna", + "hqd_working_suit": "Radna odjeća", + "hygiene": "Higijena", + "iot_checkup": "Kontrolni pregled", + "iot_dry_anti_mites": "Protiv grinja", + "iot_dry_baby": "Dječje rublje", + "iot_dry_backpacks": "Ruksaci", + "iot_dry_bathrobe": "Kupaonski ogrtači", + "iot_dry_bed_linen": "Posteljina", + "iot_dry_bed_quilt": "Pokrivači", + "iot_dry_cotton": "Pamuk", + "iot_dry_cuddly_toys": "Plišane igračke", + "iot_dry_curtains": "Zavjese", + "iot_dry_dehumidifier": "Odstranjivač vlage", + "iot_dry_delicates": "Osjetljivo", + "iot_dry_delicate_tablecloths": "Osjetljivi stolnjaci", + "iot_dry_denim_jeans": "Traper – Traperice", + "iot_dry_down_jacket": "Jakna", + "iot_dry_duvet": "Popluni", + "iot_dry_easy_iron_cotton": "Super Easy Iron", + "iot_dry_easy_iron_synthetics": "Super Easy Iron za sintetičko rublje", + "iot_dry_gym_fit": "Fitness odjeća", + "iot_dry_lingerie": "Donje rublje", + "iot_dry_mixed": "Miješane tkanine", + "iot_dry_playsuits": "Kombinezoni", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Brzi program 59’.", + "iot_dry_refresh": "Osvježavanje", + "iot_dry_regenerates_waterproof": "Regeneracija vodootporne odjeće", + "iot_dry_relax_creases": "Smanjenje nabora", + "iot_dry_shirts": "Košulje", + "iot_dry_small_load": "Mali kapacitet", + "iot_dry_swimsuits_and_bikinis": "Kupaći kostimi", + "iot_dry_synthetics": "Sintetika", + "iot_dry_synthetic_dry": "Suha sintetika", + "iot_dry_tablecloths": "Stolnjaci", + "iot_dry_technical_fabrics": "Tehničko platno", + "iot_dry_warm_embrace": "Zagrijavanje", + "iot_dry_wool": "Woolmark", + "jeans": "Traper", + "mix_and_dry": "Mix&Dry", + "pets": "Kućni ljubimci", + "pre_iron": "Prije glačanja", + "rapid_30": "Rapid 30", + "rapid_45": "Brzi 45 min", + "rapid_59": "Perfect Rapid 59 Min", + "refresh": "Osvježavanje", + "relax_creases": "Smanjenje nabora", + "saving_30_min": "ECO 30'", + "shirts": "Košulje", + "shoes": "Cipele", + "small_load": "Mali kapacitet", + "soft_care": "Soft Care", + "sport_plus": "Sport Plus", + "super_easy_iron_misti": "Iznimno jednostavno glačanje za raznovrsne tkanine", + "super_easy_iron_xxl": "Iznimno jednostavno glačanje XXL", + "super_fast_cottons": "Super brzi Pamuk", + "super_fast_delicates": "Super brzi Osjetljivo", + "synthetics": "Sintetika", + "total_care": "Total Care", + "trainers": "Trenirke i sportska obuća", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Regeneracija vodootporne odjeće", + "whites": "Bijelo", + "wool": "Sušenje vune", + "woolmark": "Woolmark", + "xxl_load": "XXL kapacitet", + "zoom_59": "Zoom 59" + }, + "name": "Program" + }, "programs_wm": { "state": { "20_degrees_coloured_cottons": "20° šareno i pamučno rublje", @@ -556,7 +441,7 @@ "allergy_care_pro": "Alergijska njega Pro", "all_in_one_49": "Sve u jednom 49’.", "all_in_one_59": "Sve u jednom 59’.", - "all_in_one_59_steam": "Aktivno pranje + para", + "all_in_one_59_steam": "Sve u jednom 59’ + para", "autocare": "Automatska njega", "autoclean": "Čišćenje bubnja", "baby_60": "All Baby 60°C", @@ -622,7 +507,7 @@ "iot_active_steam": "Para", "iot_active_wash_steam": "Aktivno pranje", "iot_allergy_care_pro": "Alergijska njega Pro", - "iot_all_in_one_59_steam": "Aktivno pranje + para", + "iot_all_in_one_59_steam": "Sve u jednom 59’ + para", "iot_checkup": "Kontrolni pregled", "iot_colour_59_steam": "Boje 59' + para", "iot_cottons_steam": "Pamuk + Para", @@ -889,9 +774,148 @@ "sparkling": "Pjenušavo vino", "white": "Bijelo vino" } + }, + "dry_time": { + "name": "Trajanje sušenja" + }, + "power": { + "name": "Razina napajanja" + }, + "remaining_time": { + "name": "Preostalo vrijeme" + }, + "temperature": { + "name": "Temperatura" + }, + "water_efficiency": { + "name": "Učinkovitost vode" + }, + "water_saving": { + "name": "Ušteda na vodi" + }, + "duration": { + "name": "Trajanje" + }, + "target_temperature": { + "name": "Ciljana temperatura" + }, + "spin_speed": { + "name": "Centrifuga" + }, + "steam_leve": { + "name": "Razina pare" + }, + "dirt_level": { + "name": "Stupanj zaprljanosti" + }, + "delay_time": { + "name": "Odgoda početka" + }, + "suggested_load": { + "name": "Kapacitet rublja" + }, + "energy_label": { + "name": "Energetska učinkovitost" + }, + "det_dust": { + "name": "Prašak" + }, + "det_liquid": { + "name": "Tekućina" + }, + "errors": { + "name": "Greška" + }, + "programs": { + "name": "Trenutačni program" + }, + "room_temperature": { + "name": "Sobna temperatura" + }, + "humidity": { + "name": "Vlažnost" + }, + "cycles_total": { + "name": "Programi Ukupno" + }, + "energy_total": { + "name": "Potrošnja energije Ukupno" + }, + "water_total": { + "name": "Učinkovitost vode Ukupno" + }, + "energy_current": { + "name": "Potrošnja energije Current" + }, + "water_current": { + "name": "Učinkovitost vode Current" + }, + "freezer_temp": { + "name": "Temperatura zamrzivača" + }, + "fridge_temp": { + "name": "Temperatura hladnjaka" } }, "select": { + "dry_levels": { + "state": { + "no_dry": "Bez sušenja", + "iron_dry": "Suho za glačanje", + "no_dry_iron": "Suho za spremanje", + "cupboard_dry": "Suho za spremanje", + "extra_dry": "Potpuno suho", + "ready_to_wear": "Spremno za nošenje" + }, + "name": "Stupanj suhoće" + }, + "eco_pilot": { + "state": { + "touch_off": "Isključeno", + "avoid_touch": "Izbjegavajte dodir", + "follow_touch": "Pratite" + }, + "name": "Eko-pilot" + }, + "fan_mode": { + "state": { + "high": "Visoko", + "mid": "Srednje ", + "low": "Nisko", + "auto": "Automatski" + } + }, + "ref_zones": { + "state": { + "fridge": "Hladnjak", + "freezer": "Zamrzivač", + "vtroom1": "My Zone", + "fridge_freezer": "Hladnjak & Zamrzivač" + }, + "name": "Zona" + }, + "programs_ac": { + "state": { + "iot_10_heating": "Funkcija grijanja na 10 °C", + "iot_auto": "Automatski", + "iot_cool": "Hlađenje", + "iot_dry": "Sušenje", + "iot_fan": "Ventilator", + "iot_heat": "Zagrijavanje", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Sampročišćavanje", + "iot_self_clean": "Samočišćenje", + "iot_self_clean_56": "Sterilno čišćenje 56°C", + "iot_simple_start": "Pokreni sada", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + automatski", + "iot_uv_and_cool": "UV + hladno", + "iot_uv_and_dry": "UV + odvlaživač", + "iot_uv_and_fan": "UV + ventilator", + "iot_uv_and_heat": "UV + grijanje" + }, + "name": "Program" + }, "programs_dw": { "state": { "59_min": "Brzi 59'", @@ -1241,7 +1265,7 @@ "allergy_care_pro": "Alergijska njega Pro", "all_in_one_49": "Sve u jednom 49’.", "all_in_one_59": "Sve u jednom 59’.", - "all_in_one_59_steam": "Aktivno pranje + para", + "all_in_one_59_steam": "Sve u jednom 59’ + para", "autocare": "Automatska njega", "autoclean": "Čišćenje bubnja", "baby_60": "All Baby 60°C", @@ -1307,7 +1331,7 @@ "iot_active_steam": "Para", "iot_active_wash_steam": "Aktivno pranje", "iot_allergy_care_pro": "Alergijska njega Pro", - "iot_all_in_one_59_steam": "Aktivno pranje + para", + "iot_all_in_one_59_steam": "Sve u jednom 59’ + para", "iot_checkup": "Kontrolni pregled", "iot_colour_59_steam": "Boje 59' + para", "iot_cottons_steam": "Pamuk + Para", @@ -1540,69 +1564,6 @@ }, "name": "Program" }, - "dry_levels": { - "state": { - "0": "Bez sušenja", - "1": "Suho za glačanje", - "2": "Suho za spremanje", - "3": "Suho za spremanje", - "4": "Potpuno suho", - "12": "Suho za glačanje", - "13": "Suho za spremanje", - "14": "Spremno za nošenje", - "15": "Potpuno suho", - "11": "Bez sušenja" - }, - "name": "Stupanj suhoće" - }, - "spin_speed": { - "name": "Centrifuga" - }, - "temperature": { - "name": "Temperatura" - }, - "dry_time": { - "name": "Trajanje sušenja" - }, - "eco_pilot": { - "state": { - "0": "Isključeno", - "1": "Izbjegavajte dodir", - "2": "Pratite" - }, - "name": "Eko-pilot" - }, - "fan_mode": { - "state": { - "1": "Visoko", - "2": "Srednje ", - "3": "Nisko", - "4": "Automatski", - "5": "Automatski" - } - }, - "programs_ac": { - "state": { - "iot_10_heating": "Funkcija grijanja na 10 °C", - "iot_auto": "Automatski", - "iot_cool": "Hlađenje", - "iot_dry": "Sušenje", - "iot_fan": "Ventilator", - "iot_heat": "Zagrijavanje", - "iot_nano_aqua": "Nano Aqua", - "iot_purify": "Sampročišćavanje", - "iot_self_clean": "Samočišćenje", - "iot_self_clean_56": "Sterilno čišćenje 56°C", - "iot_simple_start": "Pokreni sada", - "iot_uv": "UV", - "iot_uv_and_auto": "UV + automatski", - "iot_uv_and_cool": "UV + hladno", - "iot_uv_and_dry": "UV + odvlaživač", - "iot_uv_and_fan": "UV + ventilator", - "iot_uv_and_heat": "UV + grijanje" - }, - "name": "Program" - }, "programs_ref": { "state": { "auto_set": "AUTOMATSKA POSTAVKA", @@ -1626,17 +1587,17 @@ }, "name": "Program" }, + "dry_time": { + "name": "Trajanje sušenja" + }, + "spin_speed": { + "name": "Centrifuga" + }, + "temperature": { + "name": "Temperatura" + }, "remaining_time": { "name": "Preostalo vrijeme" - }, - "ref_zones": { - "state": { - "fridge": "Hladnjak", - "freezer": "Zamrzivač", - "vtroom1": "My Zone", - "fridge_freezer": "Hladnjak & Zamrzivač" - }, - "name": "Zona" } }, "switch": { @@ -1724,18 +1685,15 @@ "acqua_plus": { "name": "Aquaplus" }, - "auto_dose": { - "name": "Automatsko doziranje" - }, - "good_night": { - "name": "Good Night" - }, "auto_dose_softener": { "name": "Automatsko doziranje Omekšivač" }, "auto_dose_detergent": { "name": "Automatsko doziranje Deterdžent" }, + "good_night": { + "name": "Good Night" + }, "auto_set": { "name": "Automatsko postavljanje" }, @@ -1768,27 +1726,12 @@ "anti_crease": { "name": "Sprečavanje gužvanja" }, - "aqua_plus": { + "acqua_plus": { "name": "Aquaplus" }, "spin_speed": { "name": "Centrifuga" }, - "programs_dw": { - "name": "Program" - }, - "programs_ih": { - "name": "Program" - }, - "programs_ov": { - "name": "Program" - }, - "programs_td": { - "name": "Program" - }, - "programs_wm": { - "name": "Program" - }, "still_hot": { "name": "Još vruće" }, @@ -1819,12 +1762,6 @@ "prewash": { "name": "Pretpranje" }, - "acqua_plus": { - "name": "Aquaplus" - }, - "auto_dose": { - "name": "Automatsko doziranje" - }, "buzzer": { "name": "Zvono za završetak ciklusa" }, @@ -1850,6 +1787,17 @@ "name": "Zamjena filtra" } }, + "button": { + "induction_hob": { + "name": "Indukcijska ploča za kuhanje" + }, + "start_program": { + "name": "Program Početak" + }, + "stop_program": { + "name": "Program Zaustavi" + } + }, "number": { "power_management": { "name": "Energetski učinkovito upravljanje" @@ -1888,17 +1836,6 @@ "name": "Ciljana temperatura Hladnjak" } }, - "button": { - "induction_hob": { - "name": "Indukcijska ploča za kuhanje" - }, - "start_program": { - "name": "Program Početak" - }, - "stop_program": { - "name": "Program Zaustavi" - } - }, "climate": { "air_conditioner": { "name": "Klimatizacijski uređaj" diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index 9416e94..c076569 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -1,379 +1,75 @@ { - "config": { - "step": { - "user": { - "description": "Fai il login", - "data": { - "email": "Email", - "password": "Password" - } - } - } - }, "entity": { "sensor": { - "mode": { - "state": { - "0": "Disconnesso", - "1": "Pronto", - "2": "In Funzione", - "3": "In Pausa", - "5": "Programmato", - "6": "Errore", - "7": "Terminato" - } - }, - "errors": { - "state": { - "00": "Nessun Errore", - "100000000000": "E2: Controllare se la porta è chiusa correttamente", - "8000000000000": "E4: Controllare l'approvvigionamento idrico" - }, - "name": "Errore" - }, - "programs": { - "state": { - "0": "Default", - "62": "Cotone", - "63": "Sintentici", - "64": "Misti", - "66": "Lenzuola", - "71": "Tende", - "72": "Sports", - "74": "i-time", - "75": "Piumino", - "76": "Lana", - "78": "i-Refresh", - "83": "Asciugamani", - "85": "Asciugatura Rapida", - "92": "Delicati", - "103": "Controllo Remoto" - }, - "name": "Programma attuale" - }, - "tumbledryertemplevel": { - "state": { - "1": "Freddo", - "2": "Bassa temperatura L-1", - "3": "Media temperature L-2", - "4": "Alta temperature L-3" - } - }, "washing_modes": { "state": { - "0": "Pronta", - "1": "Pronta", - "3": "Pausa", - "4": "Pianificato", - "5": "Pianificato", - "6": "Errore", - "7": "Pronta", - "2": "Programma in esecuzione", - "8": "Test", - "9": "Arresto il ciclo..." + "ready": "Pronta", + "running": "Programma in esecuzione", + "pause": "Pausa", + "scheduled": "Pianificato", + "error": "Errore", + "test": "Test", + "ending": "Arresto il ciclo..." + } + }, + "mach_modes_ac": { + "state": { + "auto": "Auto", + "cool": "Freddo", + "dry": "Deumidificazione", + "heat": "Caldo", + "fan": "Ventilatore" } }, "program_phases_wm": { "state": { - "0": "Pronta", - "1": "Lavaggio", - "2": "Lavaggio", - "3": "Centrifuga", - "4": "Risciacqui", - "5": "Risciacqui", - "6": "Risciacqui", - "7": "Asciugatura", - "9": "Vapore", - "10": "Pronta", - "11": "Centrifuga", - "12": "Pesatura", - "13": "Pesatura", - "14": "Lavaggio", - "15": "Lavaggio", - "16": "Lavaggio", - "17": "Risciacqui", - "18": "Risciacqui", - "19": "Pianificato", - "20": "Keep Fresh", - "24": "Rinfresca", - "25": "Lavaggio", - "26": "Riscaldamento", - "27": "Lavaggio" + "ready": "Pronta", + "spin": "Centrifuga", + "rinse": "Risciacqui", + "drying": "Asciugatura", + "steam": "Vapore", + "weighting": "Pesatura", + "scheduled": "Pianificato", + "tumbling": "Keep Fresh", + "refresh": "Rinfresca", + "heating": "Riscaldamento", + "washing": "Lavaggio" }, "name": "Fase" }, "program_phases_td": { "state": { - "0": "Pronta", - "1": "Asciugatura", - "2": "Asciugatura", - "3": "Raffreddamento", - "13": "Raffreddamento", - "14": "Asciugatura", - "15": "Asciugatura", - "16": "Raffreddamento", - "18": "Keep Fresh", - "19": "Asciugatura", - "20": "Asciugatura", - "11": "Pronta", - "17": "unknown", - "12": "unknown" + "ready": "Pronta", + "heat_stroke": "Asciugatura", + "drying": "Asciugatura", + "cooldown": "Raffreddamento", + "unknown": "unknown", + "tumbling": "Keep Fresh" }, "name": "Fase" }, "program_phases_dw": { "state": { - "0": "Pronta", - "1": "Prelavaggio", - "2": "Lavaggio", - "3": "Risciacqui", - "4": "Asciugatura", - "5": "Pronta", - "6": "Risciacquo caldo " + "ready": "Pronta", + "prewash": "Prelavaggio", + "washing": "Lavaggio", + "rinse": "Risciacqui", + "drying": "Asciugatura", + "hot_rinse": "Risciacquo caldo " }, "name": "Fase" }, "dry_levels": { "state": { - "0": "Nessuna asciugatura", - "1": "Stiro facile", - "2": "Appendere", - "3": "Armadio", - "4": "Extra asciutto", - "12": "Stiro facile", - "13": "Armadio", - "14": "Pronto da indossare", - "15": "Extra asciutto", - "11": "Nessuna asciugatura" + "no_dry": "Nessuna asciugatura", + "iron_dry": "Stiro facile", + "no_dry_iron": "Appendere", + "cupboard_dry": "Armadio", + "extra_dry": "Extra asciutto", + "ready_to_wear": "Pronto da indossare" }, "name": "Livello Asciugatura" }, - "anti_crease": { - "name": "Antipieghe " - }, - "power": { - "name": "Livello di potenza" - }, - "remaining_time": { - "name": "Tempo rimanente" - }, - "temperature": { - "name": "Temperatura" - }, - "water_efficiency": { - "name": "Efficienza idrica" - }, - "water_saving": { - "name": "Risparmio acqua" - }, - "duration": { - "name": "Durata" - }, - "target_temperature": { - "name": "Temperatura terget" - }, - "spin_speed": { - "name": "Centrifuga" - }, - "steam_leve": { - "name": "Livello vapore" - }, - "dirt_level": { - "name": "Livello di sporco" - }, - "delay_time": { - "name": "Utilizzo nelle ore notturne" - }, - "dry_time": { - "name": "Tempo asciugatura" - }, - "suggested_load": { - "name": "Capacità di carico" - }, - "energy_label": { - "name": "Efficienza energetica" - }, - "det_dust": { - "name": "Detersivo in polvere" - }, - "det_liquid": { - "name": "Detersivo liquido" - }, - "cycles_total": { - "name": "Cicli Totale" - }, - "energy_total": { - "name": "Consumo energetico Totale" - }, - "water_total": { - "name": "Efficienza idrica Totale" - }, - "energy_current": { - "name": "Consumo energetico Odierna" - }, - "water_current": { - "name": "Efficienza idrica Odierna" - }, - "mach_modes_ac": { - "state": { - "0": "Auto", - "1": "Freddo", - "2": "Freddo", - "3": "Deumidificazione", - "4": "Caldo", - "5": "Ventilatore", - "6": "Ventilatore" - } - }, - "programs_td": { - "state": { - "active_dry": "Active Dry", - "allergy_care": "Anti-allergie", - "all_in_one": "Tutto in Uno", - "antiallergy": "Anti-allergie", - "anti_odours": "Anti-odori", - "auto_care": "Auto Care", - "baby": "Baby", - "bed_quilt": "Trapunte-Piumoni", - "care_30": "Care 30", - "care_45": "Care 45", - "care_59": "Care 59", - "coloured": "Colorati", - "daily_45_min": "Quotidiano 45'", - "daily_perfect_59_min": "Daily Perfect 59'", - "darks_and_coloured": "Scuri e Colorati", - "delicates": "Delicati", - "duvet": "Piumone", - "eco": "Eco Cotton", - "ecospeed_cottons": "Ecospeed Cotone", - "ecospeed_delicates": "Ecospeed Delicati", - "ecospeed_mixed": "Ecospeed Misti", - "extra_hygiene": "Igiene Extra", - "fitness": "Fitness", - "fresh_care": "Fresh Care", - "genius": "Genius", - "hqd_baby_care": "Baby Care", - "hqd_bath_towel": "Asciugamani", - "hqd_bed_sheets": "Lenzuola", - "hqd_bulky": "Vestiti voluminosi", - "hqd_casual": "Casual", - "hqd_cold_wind_30": "Brezza rinfrescante 30m", - "hqd_cold_wind_timing": "Brezza rinfrescante", - "hqd_cotton": "Cotone", - "hqd_curtain": "Tende", - "hqd_delicate": "Delicati", - "hqd_diaper": "Pannolini", - "hqd_duvet": "Piumone", - "hqd_feather": "Piumini", - "hqd_hot_wind_timing": "Aria calda", - "hqd_hygienic": "Igienizzante", - "hqd_i_refresh": "I-Refresh", - "hqd_i_refresh_pro": "I-Refresh Pro", - "hqd_jacket": "Giacche", - "hqd_jeans": "Jeans", - "hqd_luxury": "Capi Pregiati", - "hqd_mix": "Misti", - "hqd_night_dry": "Asciugatura notturna", - "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", - "hqd_quick_20": "Rapido 20m", - "hqd_quick_30": "Rapido 30m", - "hqd_quick_dry": "Asciugatura veloce (30 min)", - "hqd_quilt": "Trapunte", - "hqd_refresh": "Refresh", - "hqd_school_uniform": "Uniforme scolastica", - "hqd_shirt": "Camicie", - "hqd_shoes": "Scarpe", - "hqd_silk": "Seta", - "hqd_sports": "Sport", - "hqd_synthetics": "Sintetici", - "hqd_timer": "A tempo", - "hqd_towel": "Asciugamani", - "hqd_underwear": "Intimo", - "hqd_warm_up": "Riscaldamento", - "hqd_wool": "Lana", - "hqd_working_suit": "Abbigliamento da lavoro", - "hygiene": "Igiene", - "iot_checkup": "Check-Up", - "iot_dry_anti_mites": "Anti-Acari", - "iot_dry_baby": "Baby", - "iot_dry_backpacks": "Zaini", - "iot_dry_bathrobe": "Accappatoi e Spugne", - "iot_dry_bed_linen": "Lenzuola", - "iot_dry_bed_quilt": "Trapunte-Piumoni", - "iot_dry_cotton": "Cotone", - "iot_dry_cuddly_toys": "Peluches", - "iot_dry_curtains": "Tende", - "iot_dry_dehumidifier": "Rimuovi umidità", - "iot_dry_delicates": "Delicati", - "iot_dry_delicate_tablecloths": "Tovaglie delicate", - "iot_dry_denim_jeans": "Denim - jeans", - "iot_dry_down_jacket": "Giacche", - "iot_dry_duvet": "Piumone", - "iot_dry_easy_iron_cotton": "Stira facile", - "iot_dry_easy_iron_synthetics": "Stira facile Sintetici", - "iot_dry_gym_fit": "Gym fit - Fitness", - "iot_dry_lingerie": "Lingerie", - "iot_dry_mixed": "Misti", - "iot_dry_playsuits": "Tutine", - "iot_dry_rapid_30": "Rapido 30m", - "iot_dry_rapid_59": "Rapido 59'.", - "iot_dry_refresh": "Rinfresca", - "iot_dry_regenerates_waterproof": "Rigenera Tessuti Impermeabili", - "iot_dry_relax_creases": "Meno Pieghe", - "iot_dry_shirts": "Camicie", - "iot_dry_small_load": "Carico Small", - "iot_dry_swimsuits_and_bikinis": "Costumi e Bikini", - "iot_dry_synthetics": "Sintetici", - "iot_dry_synthetic_dry": "Asciugatura Sintetici", - "iot_dry_tablecloths": "Tovaglie", - "iot_dry_technical_fabrics": "Tessuti Tecnici", - "iot_dry_warm_embrace": "Caldo abbraccio", - "iot_dry_wool": "Lana", - "jeans": "Jeans", - "mix_and_dry": "Mix&Dry", - "pets": "Pets", - "pre_iron": "Pre-Stiro", - "rapid_30": "Rapido 30", - "rapid_45": "Rapido 45 min", - "rapid_59": "Perfect Rapid 59 Min", - "refresh": "Rinfresca", - "relax_creases": "Meno Pieghe", - "saving_30_min": "Risparmio 30'", - "shirts": "Camicie", - "shoes": "Scarpe", - "small_load": "Carico Small", - "soft_care": "Soft Care", - "sport_plus": "Sport Plus", - "super_easy_iron_misti": "Super Easy Iron misti", - "super_easy_iron_xxl": "Super Easy Iron XXL", - "super_fast_cottons": "Super Fast Cotone", - "super_fast_delicates": "Super Fast Delicati", - "synthetics": "Sintetici", - "total_care": "Total Care", - "trainers": "Scarpe da ginnastica", - "ultra_care": "Ultra Care", - "waterproof_revitalize": "Impermeabilizzazione", - "whites": "Bianchi", - "wool": "Asciugatura Lana", - "woolmark": "Lana", - "xxl_load": "Carico XXL", - "zoom_59": "Zoom 59" - }, - "name": "Programma" - }, - "room_temperature": { - "name": "Temperatura ambiente" - }, - "humidity": { - "name": "Umidità" - }, - "freezer_temp": { - "name": "Temperatura del congelatore" - }, - "fridge_temp": { - "name": "Temperatura del frigorifero" - }, "programs_ac": { "state": { "iot_10_heating": "Funzione 10°C Heating ", @@ -597,6 +293,143 @@ }, "name": "Programma" }, + "programs_td": { + "state": { + "active_dry": "Active Dry", + "allergy_care": "Anti-allergie", + "all_in_one": "Tutto in Uno", + "antiallergy": "Anti-allergie", + "anti_odours": "Anti-odori", + "auto_care": "Auto Care", + "baby": "Baby", + "bed_quilt": "Trapunte-Piumoni", + "care_30": "Care 30", + "care_45": "Care 45", + "care_59": "Care 59", + "coloured": "Colorati", + "daily_45_min": "Quotidiano 45'", + "daily_perfect_59_min": "Daily Perfect 59'", + "darks_and_coloured": "Scuri e Colorati", + "delicates": "Delicati", + "duvet": "Piumone", + "eco": "Eco Cotton", + "ecospeed_cottons": "Ecospeed Cotone", + "ecospeed_delicates": "Ecospeed Delicati", + "ecospeed_mixed": "Ecospeed Misti", + "extra_hygiene": "Igiene Extra", + "fitness": "Fitness", + "fresh_care": "Fresh Care", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Asciugamani", + "hqd_bed_sheets": "Lenzuola", + "hqd_bulky": "Vestiti voluminosi", + "hqd_casual": "Casual", + "hqd_cold_wind_30": "Brezza rinfrescante 30m", + "hqd_cold_wind_timing": "Brezza rinfrescante", + "hqd_cotton": "Cotone", + "hqd_curtain": "Tende", + "hqd_delicate": "Delicati", + "hqd_diaper": "Pannolini", + "hqd_duvet": "Piumone", + "hqd_feather": "Piumini", + "hqd_hot_wind_timing": "Aria calda", + "hqd_hygienic": "Igienizzante", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Giacche", + "hqd_jeans": "Jeans", + "hqd_luxury": "Capi Pregiati", + "hqd_mix": "Misti", + "hqd_night_dry": "Asciugatura notturna", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Rapido 20m", + "hqd_quick_30": "Rapido 30m", + "hqd_quick_dry": "Asciugatura veloce (30 min)", + "hqd_quilt": "Trapunte", + "hqd_refresh": "Refresh", + "hqd_school_uniform": "Uniforme scolastica", + "hqd_shirt": "Camicie", + "hqd_shoes": "Scarpe", + "hqd_silk": "Seta", + "hqd_sports": "Sport", + "hqd_synthetics": "Sintetici", + "hqd_timer": "A tempo", + "hqd_towel": "Asciugamani", + "hqd_underwear": "Intimo", + "hqd_warm_up": "Riscaldamento", + "hqd_wool": "Lana", + "hqd_working_suit": "Abbigliamento da lavoro", + "hygiene": "Igiene", + "iot_checkup": "Check-Up", + "iot_dry_anti_mites": "Anti-Acari", + "iot_dry_baby": "Baby", + "iot_dry_backpacks": "Zaini", + "iot_dry_bathrobe": "Accappatoi e Spugne", + "iot_dry_bed_linen": "Lenzuola", + "iot_dry_bed_quilt": "Trapunte-Piumoni", + "iot_dry_cotton": "Cotone", + "iot_dry_cuddly_toys": "Peluches", + "iot_dry_curtains": "Tende", + "iot_dry_dehumidifier": "Rimuovi umidità", + "iot_dry_delicates": "Delicati", + "iot_dry_delicate_tablecloths": "Tovaglie delicate", + "iot_dry_denim_jeans": "Denim - jeans", + "iot_dry_down_jacket": "Giacche", + "iot_dry_duvet": "Piumone", + "iot_dry_easy_iron_cotton": "Stira facile", + "iot_dry_easy_iron_synthetics": "Stira facile Sintetici", + "iot_dry_gym_fit": "Gym fit - Fitness", + "iot_dry_lingerie": "Lingerie", + "iot_dry_mixed": "Misti", + "iot_dry_playsuits": "Tutine", + "iot_dry_rapid_30": "Rapido 30m", + "iot_dry_rapid_59": "Rapido 59'.", + "iot_dry_refresh": "Rinfresca", + "iot_dry_regenerates_waterproof": "Rigenera Tessuti Impermeabili", + "iot_dry_relax_creases": "Meno Pieghe", + "iot_dry_shirts": "Camicie", + "iot_dry_small_load": "Carico Small", + "iot_dry_swimsuits_and_bikinis": "Costumi e Bikini", + "iot_dry_synthetics": "Sintetici", + "iot_dry_synthetic_dry": "Asciugatura Sintetici", + "iot_dry_tablecloths": "Tovaglie", + "iot_dry_technical_fabrics": "Tessuti Tecnici", + "iot_dry_warm_embrace": "Caldo abbraccio", + "iot_dry_wool": "Lana", + "jeans": "Jeans", + "mix_and_dry": "Mix&Dry", + "pets": "Pets", + "pre_iron": "Pre-Stiro", + "rapid_30": "Rapido 30", + "rapid_45": "Rapido 45 min", + "rapid_59": "Perfect Rapid 59 Min", + "refresh": "Rinfresca", + "relax_creases": "Meno Pieghe", + "saving_30_min": "Risparmio 30'", + "shirts": "Camicie", + "shoes": "Scarpe", + "small_load": "Carico Small", + "soft_care": "Soft Care", + "sport_plus": "Sport Plus", + "super_easy_iron_misti": "Super Easy Iron misti", + "super_easy_iron_xxl": "Super Easy Iron XXL", + "super_fast_cottons": "Super Fast Cotone", + "super_fast_delicates": "Super Fast Delicati", + "synthetics": "Sintetici", + "total_care": "Total Care", + "trainers": "Scarpe da ginnastica", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Impermeabilizzazione", + "whites": "Bianchi", + "wool": "Asciugatura Lana", + "woolmark": "Lana", + "xxl_load": "Carico XXL", + "zoom_59": "Zoom 59" + }, + "name": "Programma" + }, "programs_wm": { "state": { "20_degrees_coloured_cottons": "Cotone e Colorati 20°", @@ -608,7 +441,7 @@ "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "All in One 49'", "all_in_one_59": "All in One 59'", - "all_in_one_59_steam": "Active Wash + Vapore", + "all_in_one_59_steam": "All in One 59' + Vapore", "autocare": "Autocare", "autoclean": "Pulizia cesto e decalcifiazione", "baby_60": "Tutto Bebè 60°C", @@ -674,7 +507,7 @@ "iot_active_steam": "Vapore", "iot_active_wash_steam": "Active Wash + Vapore", "iot_allergy_care_pro": "Allergy Care Pro", - "iot_all_in_one_59_steam": "Active Wash + Vapore", + "iot_all_in_one_59_steam": "All in One 59' + Vapore", "iot_checkup": "Check-Up", "iot_colour_59_steam": "Colorati 59' + Vapore", "iot_cottons_steam": "Cotone + Vapore", @@ -941,9 +774,153 @@ "sparkling": "Bollicine", "white": "Bianco" } + }, + "dry_time": { + "name": "Tempo asciugatura" + }, + "power": { + "name": "Livello di potenza" + }, + "remaining_time": { + "name": "Tempo rimanente" + }, + "temperature": { + "name": "Temperatura" + }, + "water_efficiency": { + "name": "Efficienza idrica" + }, + "water_saving": { + "name": "Risparmio acqua" + }, + "duration": { + "name": "Durata" + }, + "target_temperature": { + "name": "Temperatura terget" + }, + "spin_speed": { + "name": "Centrifuga" + }, + "steam_leve": { + "name": "Livello vapore" + }, + "dirt_level": { + "name": "Livello di sporco" + }, + "delay_time": { + "name": "Utilizzo nelle ore notturne" + }, + "suggested_load": { + "name": "Capacità di carico" + }, + "energy_label": { + "name": "Efficienza energetica" + }, + "det_dust": { + "name": "Detersivo in polvere" + }, + "det_liquid": { + "name": "Detersivo liquido" + }, + "errors": { + "name": "Errore", + "state": { + "00": "Nessun Errore", + "100000000000": "E2: Controllare se la porta è chiusa correttamente", + "8000000000000": "E4: Controllare l'approvvigionamento idrico" + } + }, + "programs": { + "name": "Programma attuale" + }, + "room_temperature": { + "name": "Temperatura ambiente" + }, + "humidity": { + "name": "Umidità" + }, + "cycles_total": { + "name": "Cicli Totale" + }, + "energy_total": { + "name": "Consumo energetico Totale" + }, + "water_total": { + "name": "Efficienza idrica Totale" + }, + "energy_current": { + "name": "Consumo energetico Odierna" + }, + "water_current": { + "name": "Efficienza idrica Odierna" + }, + "freezer_temp": { + "name": "Temperatura del congelatore" + }, + "fridge_temp": { + "name": "Temperatura del frigorifero" } }, "select": { + "dry_levels": { + "state": { + "no_dry": "Nessuna asciugatura", + "iron_dry": "Stiro facile", + "no_dry_iron": "Appendere", + "cupboard_dry": "Armadio", + "extra_dry": "Extra asciutto", + "ready_to_wear": "Pronto da indossare" + }, + "name": "Livello Asciugatura" + }, + "eco_pilot": { + "state": { + "touch_off": "Spento", + "avoid_touch": "Avoid touch", + "follow_touch": "Segui" + }, + "name": "Eco pilot" + }, + "fan_mode": { + "state": { + "high": "Alto", + "mid": "Medio", + "low": "Basso", + "auto": "Auto" + } + }, + "ref_zones": { + "state": { + "fridge": "Frigorifero", + "freezer": "Congelatore", + "vtroom1": "My Zone", + "fridge_freezer": "Frigorifero & Congelatore" + }, + "name": "Zona" + }, + "programs_ac": { + "state": { + "iot_10_heating": "Funzione 10°C Heating ", + "iot_auto": "Auto", + "iot_cool": "Freddo", + "iot_dry": "Deumidificazione", + "iot_fan": "Ventilatore", + "iot_heat": "Caldo", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Self purify", + "iot_self_clean": "Self clean", + "iot_self_clean_56": "Steri-Clean 56°C", + "iot_simple_start": "Avvia ora", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Auto", + "iot_uv_and_cool": "UV + Freddo", + "iot_uv_and_dry": "UV + Deumidificatore", + "iot_uv_and_fan": "UV + Ventola", + "iot_uv_and_heat": "UV + Caldo" + }, + "name": "Programma" + }, "programs_dw": { "state": { "59_min": "Rapido 59'", @@ -1293,7 +1270,7 @@ "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "All in One 49'", "all_in_one_59": "All in One 59'", - "all_in_one_59_steam": "Active Wash + Vapore", + "all_in_one_59_steam": "All in One 59' + Vapore", "autocare": "Autocare", "autoclean": "Pulizia cesto e decalcifiazione", "baby_60": "Tutto Bebè 60°C", @@ -1359,7 +1336,7 @@ "iot_active_steam": "Vapore", "iot_active_wash_steam": "Active Wash + Vapore", "iot_allergy_care_pro": "Allergy Care Pro", - "iot_all_in_one_59_steam": "Active Wash + Vapore", + "iot_all_in_one_59_steam": "All in One 59' + Vapore", "iot_checkup": "Check-Up", "iot_colour_59_steam": "Colorati 59' + Vapore", "iot_cottons_steam": "Cotone + Vapore", @@ -1592,69 +1569,6 @@ }, "name": "Programma" }, - "dry_levels": { - "state": { - "0": "Nessuna asciugatura", - "1": "Stiro facile", - "2": "Appendere", - "3": "Armadio", - "4": "Extra asciutto", - "12": "Stiro facile", - "13": "Armadio", - "14": "Pronto da indossare", - "15": "Extra asciutto", - "11": "Nessuna asciugatura" - }, - "name": "Livello Asciugatura" - }, - "spin_speed": { - "name": "Centrifuga" - }, - "temperature": { - "name": "Temperatura" - }, - "dry_time": { - "name": "Tempo asciugatura" - }, - "eco_pilot": { - "state": { - "0": "Spento", - "1": "Avoid touch", - "2": "Segui" - }, - "name": "Eco pilot" - }, - "fan_mode": { - "state": { - "1": "Alto", - "2": "Medio", - "3": "Basso", - "4": "Auto", - "5": "Auto" - } - }, - "programs_ac": { - "state": { - "iot_10_heating": "Funzione 10°C Heating ", - "iot_auto": "Auto", - "iot_cool": "Freddo", - "iot_dry": "Deumidificazione", - "iot_fan": "Ventilatore", - "iot_heat": "Caldo", - "iot_nano_aqua": "Nano Aqua", - "iot_purify": "Self purify", - "iot_self_clean": "Self clean", - "iot_self_clean_56": "Steri-Clean 56°C", - "iot_simple_start": "Avvia ora", - "iot_uv": "UV", - "iot_uv_and_auto": "UV + Auto", - "iot_uv_and_cool": "UV + Freddo", - "iot_uv_and_dry": "UV + Deumidificatore", - "iot_uv_and_fan": "UV + Ventola", - "iot_uv_and_heat": "UV + Caldo" - }, - "name": "Programma" - }, "programs_ref": { "state": { "auto_set": "AUTO-SET", @@ -1678,17 +1592,17 @@ }, "name": "Programma" }, + "dry_time": { + "name": "Tempo asciugatura" + }, + "spin_speed": { + "name": "Centrifuga" + }, + "temperature": { + "name": "Temperatura" + }, "remaining_time": { "name": "Tempo rimanente" - }, - "ref_zones": { - "state": { - "fridge": "Frigorifero", - "freezer": "Congelatore", - "vtroom1": "My Zone", - "fridge_freezer": "Frigorifero & Congelatore" - }, - "name": "Zona" } }, "switch": { @@ -1776,18 +1690,15 @@ "acqua_plus": { "name": "Acquaplus" }, - "auto_dose": { - "name": "Autodose" - }, - "good_night": { - "name": "Buona notte" - }, "auto_dose_softener": { "name": "Autodose Ammorbidente" }, "auto_dose_detergent": { "name": "Autodose Detergente" }, + "good_night": { + "name": "Buona notte" + }, "auto_set": { "name": "Impostazione automatica" }, @@ -1820,27 +1731,12 @@ "anti_crease": { "name": "Antipieghe " }, - "aqua_plus": { + "acqua_plus": { "name": "Acquaplus" }, "spin_speed": { "name": "Centrifuga" }, - "programs_dw": { - "name": "Programma" - }, - "programs_ih": { - "name": "Programma" - }, - "programs_ov": { - "name": "Programma" - }, - "programs_td": { - "name": "Programma" - }, - "programs_wm": { - "name": "Programma" - }, "still_hot": { "name": "Ancora caldo" }, @@ -1871,12 +1767,6 @@ "prewash": { "name": "Prelavaggio" }, - "acqua_plus": { - "name": "Acquaplus" - }, - "auto_dose": { - "name": "Autodose" - }, "buzzer": { "name": "Avviso di fine ciclo" }, @@ -1902,6 +1792,17 @@ "name": "Sostituzione filtro" } }, + "button": { + "induction_hob": { + "name": "Piano cottura a induzione" + }, + "start_program": { + "name": "Programma Inizia" + }, + "stop_program": { + "name": "Programma Stop" + } + }, "number": { "power_management": { "name": "Power management" @@ -1940,17 +1841,6 @@ "name": "Temperatura target Frigorifero" } }, - "button": { - "induction_hob": { - "name": "Piano cottura a induzione" - }, - "start_program": { - "name": "Programma Inizia" - }, - "stop_program": { - "name": "Programma Stop" - } - }, "climate": { "air_conditioner": { "name": "Condizionatore" @@ -2066,5 +1956,16 @@ "name": "Aspirazione aria" } } + }, + "config": { + "step": { + "user": { + "description": "Fai il login", + "data": { + "email": "Email", + "password": "Password" + } + } + } } } \ No newline at end of file diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index e66115e..f6737ed 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -3,325 +3,73 @@ "sensor": { "washing_modes": { "state": { - "0": "Klaar", - "1": "Klaar", - "3": "Pauze", - "4": "Gepland", - "5": "Gepland", - "6": "Fout", - "7": "Klaar", - "2": "Programma draait", - "8": "Test", - "9": "Programma stoppen…" + "ready": "Klaar", + "running": "Programma draait", + "pause": "Pauze", + "scheduled": "Gepland", + "error": "Fout", + "test": "Test", + "ending": "Programma stoppen…" + } + }, + "mach_modes_ac": { + "state": { + "auto": "Automatisch", + "cool": "Koelen", + "dry": "Drogen", + "heat": "Verwarming", + "fan": "Ventilator" } }, "program_phases_wm": { "state": { - "0": "Klaar", - "1": "Wassen", - "2": "Wassen", - "3": "Centrifugeren", - "4": "Spoelen", - "5": "Spoelen", - "6": "Spoelen", - "7": "Drogen", - "9": "Stoom", - "10": "Klaar", - "11": "Centrifugeren", - "12": "Wegen ", - "13": "Wegen ", - "14": "Wassen", - "15": "Wassen", - "16": "Wassen", - "17": "Spoelen", - "18": "Spoelen", - "19": "Gepland", - "20": "Fris houden", - "24": "Opfrissen", - "25": "Wassen", - "26": "Verwarming", - "27": "Wassen" + "ready": "Klaar", + "spin": "Centrifugeren", + "rinse": "Spoelen", + "drying": "Drogen", + "steam": "Stoom", + "weighting": "Wegen ", + "scheduled": "Gepland", + "tumbling": "Fris houden", + "refresh": "Opfrissen", + "heating": "Verwarming", + "washing": "Wassen" }, "name": "Fase" }, "program_phases_td": { "state": { - "0": "Klaar", - "1": "Drogen", - "2": "Drogen", - "3": "Afkoelen", - "13": "Afkoelen", - "14": "Drogen", - "15": "Drogen", - "16": "Afkoelen", - "18": "Fris houden", - "19": "Drogen", - "20": "Drogen", - "11": "Klaar", - "17": "unknown", - "12": "unknown" + "ready": "Klaar", + "heat_stroke": "Drogen", + "drying": "Drogen", + "cooldown": "Afkoelen", + "unknown": "unknown", + "tumbling": "Fris houden" }, "name": "Fase" }, "program_phases_dw": { "state": { - "0": "Klaar", - "1": "Voorwassen", - "2": "Wassen", - "3": "Spoelen", - "4": "Drogen", - "5": "Klaar", - "6": "Hot rinse" + "ready": "Klaar", + "prewash": "Voorwassen", + "washing": "Wassen", + "rinse": "Spoelen", + "drying": "Drogen", + "hot_rinse": "Hot rinse" }, "name": "Fase" }, "dry_levels": { "state": { - "0": "Niet drogen", - "1": "Strijken", - "2": "Kastdroog", - "3": "Kastdroog", - "4": "Extra droog", - "12": "Strijken", - "13": "Kastdroog", - "14": "Klaar om te dragen", - "15": "Extra droog", - "11": "Niet drogen" + "no_dry": "Niet drogen", + "iron_dry": "Strijken", + "no_dry_iron": "Kastdroog", + "cupboard_dry": "Kastdroog", + "extra_dry": "Extra droog", + "ready_to_wear": "Klaar om te dragen" }, "name": "Droogniveau" }, - "anti_crease": { - "name": "Kreukherstellend" - }, - "power": { - "name": "Vermogensniveau" - }, - "remaining_time": { - "name": "Resterende tijd" - }, - "temperature": { - "name": "Temperatuur" - }, - "water_efficiency": { - "name": "Efficiënt waterverbruik" - }, - "water_saving": { - "name": "Waterbesparing" - }, - "duration": { - "name": "Duur" - }, - "target_temperature": { - "name": "Doeltemperatuur" - }, - "spin_speed": { - "name": "Centrifugeren" - }, - "steam_leve": { - "name": "Stoomniveau" - }, - "dirt_level": { - "name": "Vuilheid" - }, - "delay_time": { - "name": "Vertraag Start" - }, - "dry_time": { - "name": "Droogtijd" - }, - "suggested_load": { - "name": "Laadvermogen" - }, - "energy_label": { - "name": "Energie-efficiëntie" - }, - "det_dust": { - "name": "Poeder" - }, - "det_liquid": { - "name": "Vloeibaar" - }, - "errors": { - "name": "Fout" - }, - "programs": { - "name": "Huidig programma" - }, - "cycles_total": { - "name": "Programma's Totaal" - }, - "energy_total": { - "name": "Energieverbruik Totaal" - }, - "water_total": { - "name": "Efficiënt waterverbruik Totaal" - }, - "energy_current": { - "name": "Energieverbruik Huidige" - }, - "water_current": { - "name": "Efficiënt waterverbruik Huidige" - }, - "mach_modes_ac": { - "state": { - "0": "Automatisch", - "1": "Koelen", - "2": "Koelen", - "3": "Drogen", - "4": "Verwarming", - "5": "Ventilator", - "6": "Ventilator" - } - }, - "programs_td": { - "state": { - "active_dry": "Actief drogen", - "allergy_care": "Anti-allergie", - "all_in_one": "All in One", - "antiallergy": "Anti-allergie", - "anti_odours": "Anti geuren", - "auto_care": "Automatische verzorging", - "baby": "Baby", - "bed_quilt": "Dekbed", - "care_30": "Verzorging 30'", - "care_45": "Verzorging 45'", - "care_59": "Verzorging 59'", - "coloured": "Gekleurd", - "daily_45_min": "DAILY 45'", - "daily_perfect_59_min": "DAILY PERFECT 59'", - "darks_and_coloured": "Donker & Gekleurd", - "delicates": "Fijne was", - "duvet": "Dekbed", - "eco": "Eco katoen", - "ecospeed_cottons": "Ecospeed Katoen", - "ecospeed_delicates": "Ecospeed fijne was", - "ecospeed_mixed": "Ecospeed Gemengd", - "extra_hygiene": "Extra Hygiene", - "fitness": "Fitness", - "fresh_care": "Opfrisverzorging", - "genius": "Genius", - "hqd_baby_care": "Baby Care", - "hqd_bath_towel": "Handdoeken", - "hqd_bed_sheets": "Beddengoed", - "hqd_bulky": "Grote artikelen", - "hqd_casual": "Casual", - "hqd_cold_wind_30": "30 minuten koel briesje", - "hqd_cold_wind_timing": "Koel briesje ", - "hqd_cotton": "Katoen", - "hqd_curtain": "Gordijnen", - "hqd_delicate": "Fijne was", - "hqd_diaper": "Luiers", - "hqd_duvet": "Dekbed", - "hqd_feather": "Donsjassen", - "hqd_hot_wind_timing": "Hete lucht", - "hqd_hygienic": "Ontsmetten", - "hqd_i_refresh": "I-Refresh", - "hqd_i_refresh_pro": "I-Refresh Pro", - "hqd_jacket": "Jassen", - "hqd_jeans": "Jeans", - "hqd_luxury": "Luxury", - "hqd_mix": "Gemengde vezels", - "hqd_night_dry": "Nachtelijk droogprogramma", - "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", - "hqd_quick_20": "Quick 20", - "hqd_quick_30": "Quick 30", - "hqd_quick_dry": "Quick dry 30", - "hqd_quilt": "Quilts", - "hqd_refresh": "Opfrissen", - "hqd_school_uniform": "Schooluniform", - "hqd_shirt": "Overhemden", - "hqd_shoes": "Schoenen", - "hqd_silk": "Zijde", - "hqd_sports": "Sport", - "hqd_synthetics": "Synthetische stoffen", - "hqd_timer": "Getimed", - "hqd_towel": "Handdoeken", - "hqd_underwear": "Ondergoed", - "hqd_warm_up": "Opwarmen", - "hqd_wool": "Wol", - "hqd_working_suit": "Werkkleding", - "hygiene": "Hygiëne", - "iot_checkup": "Controle", - "iot_dry_anti_mites": "Anti-mijten", - "iot_dry_baby": "Baby", - "iot_dry_backpacks": "Rugzakken", - "iot_dry_bathrobe": "Badjas", - "iot_dry_bed_linen": "Bed Linnen", - "iot_dry_bed_quilt": "Dekbed", - "iot_dry_cotton": "Katoen", - "iot_dry_cuddly_toys": "Knufflels", - "iot_dry_curtains": "Gordijnen", - "iot_dry_dehumidifier": "Vochtigheidsverwijderaar", - "iot_dry_delicates": "Delicate was", - "iot_dry_delicate_tablecloths": "Delicate tafelkleden", - "iot_dry_denim_jeans": "Denim – Jeans", - "iot_dry_down_jacket": "Jacket", - "iot_dry_duvet": "Dekbed", - "iot_dry_easy_iron_cotton": "Super Gemakkelijk strijken", - "iot_dry_easy_iron_synthetics": "Synthetische stoffen gemakkelijk strijken", - "iot_dry_gym_fit": "Gym fit - Fitness", - "iot_dry_lingerie": "Lingerie", - "iot_dry_mixed": "Gemengde vezels", - "iot_dry_playsuits": "Jumpsuits", - "iot_dry_rapid_30": "Rapid 30", - "iot_dry_rapid_59": "Snel 59'", - "iot_dry_refresh": "Opfrissen", - "iot_dry_regenerates_waterproof": "Regenereert Waterproof", - "iot_dry_relax_creases": "Ontkreuken", - "iot_dry_shirts": "Overhemden", - "iot_dry_small_load": "Kleine lading", - "iot_dry_swimsuits_and_bikinis": "Badkleding", - "iot_dry_synthetics": "Synthetisch", - "iot_dry_synthetic_dry": "Synthetische stoffen drogen", - "iot_dry_tablecloths": "Tafelkleden", - "iot_dry_technical_fabrics": "Technische Vezels", - "iot_dry_warm_embrace": "Warme Knuffel", - "iot_dry_wool": "Wol", - "jeans": "Jeans", - "mix_and_dry": "Gemengd&Droog", - "pets": "Huisdieren", - "pre_iron": "Gemakkelijk strijken", - "rapid_30": "Rapid 30", - "rapid_45": "Snel 45 min", - "rapid_59": "Perfect Rapid 59 Min", - "refresh": "Opfrissen", - "relax_creases": "Ontkreuken", - "saving_30_min": "ECO 30'", - "shirts": "Overhemden", - "shoes": "Schoenen", - "small_load": "Kleine lading", - "soft_care": "Zachte verzorging", - "sport_plus": "Sports", - "super_easy_iron_misti": "Super eenvoudig strijken gemengd", - "super_easy_iron_xxl": "Super eenvoudig strijken XXL", - "super_fast_cottons": "Super Snel Katoen", - "super_fast_delicates": "Super Snel Delicaat", - "synthetics": "Synthetisch", - "total_care": "Total Care", - "trainers": "Trainers", - "ultra_care": "Ultra Care", - "waterproof_revitalize": "Waterproof Revitaliseren", - "whites": "Witte was", - "wool": "Droge Wol", - "woolmark": "Wol", - "xxl_load": "XXL Lading", - "zoom_59": "Zoom 59" - }, - "name": "Programma" - }, - "room_temperature": { - "name": "Omgevingstemperatuur" - }, - "humidity": { - "name": "Luchtvochtigheid" - }, - "freezer_temp": { - "name": "Vriezertemperatuur" - }, - "fridge_temp": { - "name": "Koelkasttemperatuur" - }, "programs_ac": { "state": { "iot_10_heating": "10°C-verwarmingsfunctie", @@ -545,6 +293,143 @@ }, "name": "Programma" }, + "programs_td": { + "state": { + "active_dry": "Actief drogen", + "allergy_care": "Anti-allergie", + "all_in_one": "All in One", + "antiallergy": "Anti-allergie", + "anti_odours": "Anti geuren", + "auto_care": "Automatische verzorging", + "baby": "Baby", + "bed_quilt": "Dekbed", + "care_30": "Verzorging 30'", + "care_45": "Verzorging 45'", + "care_59": "Verzorging 59'", + "coloured": "Gekleurd", + "daily_45_min": "DAILY 45'", + "daily_perfect_59_min": "DAILY PERFECT 59'", + "darks_and_coloured": "Donker & Gekleurd", + "delicates": "Fijne was", + "duvet": "Dekbed", + "eco": "Eco katoen", + "ecospeed_cottons": "Ecospeed Katoen", + "ecospeed_delicates": "Ecospeed fijne was", + "ecospeed_mixed": "Ecospeed Gemengd", + "extra_hygiene": "Extra Hygiene", + "fitness": "Fitness", + "fresh_care": "Opfrisverzorging", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Handdoeken", + "hqd_bed_sheets": "Beddengoed", + "hqd_bulky": "Grote artikelen", + "hqd_casual": "Casual", + "hqd_cold_wind_30": "30 minuten koel briesje", + "hqd_cold_wind_timing": "Koel briesje ", + "hqd_cotton": "Katoen", + "hqd_curtain": "Gordijnen", + "hqd_delicate": "Fijne was", + "hqd_diaper": "Luiers", + "hqd_duvet": "Dekbed", + "hqd_feather": "Donsjassen", + "hqd_hot_wind_timing": "Hete lucht", + "hqd_hygienic": "Ontsmetten", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Jassen", + "hqd_jeans": "Jeans", + "hqd_luxury": "Luxury", + "hqd_mix": "Gemengde vezels", + "hqd_night_dry": "Nachtelijk droogprogramma", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Quick 20", + "hqd_quick_30": "Quick 30", + "hqd_quick_dry": "Quick dry 30", + "hqd_quilt": "Quilts", + "hqd_refresh": "Opfrissen", + "hqd_school_uniform": "Schooluniform", + "hqd_shirt": "Overhemden", + "hqd_shoes": "Schoenen", + "hqd_silk": "Zijde", + "hqd_sports": "Sport", + "hqd_synthetics": "Synthetische stoffen", + "hqd_timer": "Getimed", + "hqd_towel": "Handdoeken", + "hqd_underwear": "Ondergoed", + "hqd_warm_up": "Opwarmen", + "hqd_wool": "Wol", + "hqd_working_suit": "Werkkleding", + "hygiene": "Hygiëne", + "iot_checkup": "Controle", + "iot_dry_anti_mites": "Anti-mijten", + "iot_dry_baby": "Baby", + "iot_dry_backpacks": "Rugzakken", + "iot_dry_bathrobe": "Badjas", + "iot_dry_bed_linen": "Bed Linnen", + "iot_dry_bed_quilt": "Dekbed", + "iot_dry_cotton": "Katoen", + "iot_dry_cuddly_toys": "Knufflels", + "iot_dry_curtains": "Gordijnen", + "iot_dry_dehumidifier": "Vochtigheidsverwijderaar", + "iot_dry_delicates": "Delicate was", + "iot_dry_delicate_tablecloths": "Delicate tafelkleden", + "iot_dry_denim_jeans": "Denim – Jeans", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Dekbed", + "iot_dry_easy_iron_cotton": "Super Gemakkelijk strijken", + "iot_dry_easy_iron_synthetics": "Synthetische stoffen gemakkelijk strijken", + "iot_dry_gym_fit": "Gym fit - Fitness", + "iot_dry_lingerie": "Lingerie", + "iot_dry_mixed": "Gemengde vezels", + "iot_dry_playsuits": "Jumpsuits", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Snel 59'", + "iot_dry_refresh": "Opfrissen", + "iot_dry_regenerates_waterproof": "Regenereert Waterproof", + "iot_dry_relax_creases": "Ontkreuken", + "iot_dry_shirts": "Overhemden", + "iot_dry_small_load": "Kleine lading", + "iot_dry_swimsuits_and_bikinis": "Badkleding", + "iot_dry_synthetics": "Synthetisch", + "iot_dry_synthetic_dry": "Synthetische stoffen drogen", + "iot_dry_tablecloths": "Tafelkleden", + "iot_dry_technical_fabrics": "Technische Vezels", + "iot_dry_warm_embrace": "Warme Knuffel", + "iot_dry_wool": "Wol", + "jeans": "Jeans", + "mix_and_dry": "Gemengd&Droog", + "pets": "Huisdieren", + "pre_iron": "Gemakkelijk strijken", + "rapid_30": "Rapid 30", + "rapid_45": "Snel 45 min", + "rapid_59": "Perfect Rapid 59 Min", + "refresh": "Opfrissen", + "relax_creases": "Ontkreuken", + "saving_30_min": "ECO 30'", + "shirts": "Overhemden", + "shoes": "Schoenen", + "small_load": "Kleine lading", + "soft_care": "Zachte verzorging", + "sport_plus": "Sports", + "super_easy_iron_misti": "Super eenvoudig strijken gemengd", + "super_easy_iron_xxl": "Super eenvoudig strijken XXL", + "super_fast_cottons": "Super Snel Katoen", + "super_fast_delicates": "Super Snel Delicaat", + "synthetics": "Synthetisch", + "total_care": "Total Care", + "trainers": "Trainers", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Waterproof Revitaliseren", + "whites": "Witte was", + "wool": "Droge Wol", + "woolmark": "Wol", + "xxl_load": "XXL Lading", + "zoom_59": "Zoom 59" + }, + "name": "Programma" + }, "programs_wm": { "state": { "20_degrees_coloured_cottons": "20° gekleurd en katoen", @@ -556,7 +441,7 @@ "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "Alles-in-één 49'.", "all_in_one_59": "Alles-in-één 59'.", - "all_in_one_59_steam": "Actieve was + Stoom", + "all_in_one_59_steam": "Alles-in-één 59' + Stoom", "autocare": "Automatische verzorging", "autoclean": "Trommelreiniging", "baby_60": "All baby 60 ° C", @@ -622,7 +507,7 @@ "iot_active_steam": "Stoom", "iot_active_wash_steam": "Actieve was", "iot_allergy_care_pro": "Allergy Care Pro", - "iot_all_in_one_59_steam": "Actieve was + Stoom", + "iot_all_in_one_59_steam": "Alles-in-één 59' + Stoom", "iot_checkup": "Controle", "iot_colour_59_steam": "Gekleurd 59' + Stoom", "iot_cottons_steam": "Katoen + Stoom", @@ -889,9 +774,148 @@ "sparkling": "Mousserend", "white": "Wit" } + }, + "dry_time": { + "name": "Droogtijd" + }, + "power": { + "name": "Vermogensniveau" + }, + "remaining_time": { + "name": "Resterende tijd" + }, + "temperature": { + "name": "Temperatuur" + }, + "water_efficiency": { + "name": "Efficiënt waterverbruik" + }, + "water_saving": { + "name": "Waterbesparing" + }, + "duration": { + "name": "Duur" + }, + "target_temperature": { + "name": "Doeltemperatuur" + }, + "spin_speed": { + "name": "Centrifugeren" + }, + "steam_leve": { + "name": "Stoomniveau" + }, + "dirt_level": { + "name": "Vuilheid" + }, + "delay_time": { + "name": "Vertraag Start" + }, + "suggested_load": { + "name": "Laadvermogen" + }, + "energy_label": { + "name": "Energie-efficiëntie" + }, + "det_dust": { + "name": "Poeder" + }, + "det_liquid": { + "name": "Vloeibaar" + }, + "errors": { + "name": "Fout" + }, + "programs": { + "name": "Huidig programma" + }, + "room_temperature": { + "name": "Omgevingstemperatuur" + }, + "humidity": { + "name": "Luchtvochtigheid" + }, + "cycles_total": { + "name": "Programma's Totaal" + }, + "energy_total": { + "name": "Energieverbruik Totaal" + }, + "water_total": { + "name": "Efficiënt waterverbruik Totaal" + }, + "energy_current": { + "name": "Energieverbruik Huidige" + }, + "water_current": { + "name": "Efficiënt waterverbruik Huidige" + }, + "freezer_temp": { + "name": "Vriezertemperatuur" + }, + "fridge_temp": { + "name": "Koelkasttemperatuur" } }, "select": { + "dry_levels": { + "state": { + "no_dry": "Niet drogen", + "iron_dry": "Strijken", + "no_dry_iron": "Kastdroog", + "cupboard_dry": "Kastdroog", + "extra_dry": "Extra droog", + "ready_to_wear": "Klaar om te dragen" + }, + "name": "Droogniveau" + }, + "eco_pilot": { + "state": { + "touch_off": "Uit", + "avoid_touch": "Voorkom aanraking", + "follow_touch": "Volgen" + }, + "name": "Eco pilot" + }, + "fan_mode": { + "state": { + "high": "Hoog", + "mid": "Gemiddeld ", + "low": "Laag", + "auto": "Automatisch" + } + }, + "ref_zones": { + "state": { + "fridge": "Koelkast", + "freezer": "Vriezer", + "vtroom1": "My Zone", + "fridge_freezer": "Koelkast & Vriezer" + }, + "name": "Zone" + }, + "programs_ac": { + "state": { + "iot_10_heating": "10°C-verwarmingsfunctie", + "iot_auto": "Automatisch", + "iot_cool": "Koelen", + "iot_dry": "Drogen", + "iot_fan": "Ventilator", + "iot_heat": "Verwarming", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Zelfzuivering", + "iot_self_clean": "Zelfreiniging", + "iot_self_clean_56": "Sterilisatie reiniging 56°C", + "iot_simple_start": "Start nu", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Auto", + "iot_uv_and_cool": "UV + Koud", + "iot_uv_and_dry": "UV + Ontvochtiger", + "iot_uv_and_fan": "UV + Hetelucht", + "iot_uv_and_heat": "UV + Warmte" + }, + "name": "Programma" + }, "programs_dw": { "state": { "59_min": "Snel 59'", @@ -1241,7 +1265,7 @@ "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "Alles-in-één 49'.", "all_in_one_59": "Alles-in-één 59'.", - "all_in_one_59_steam": "Actieve was + Stoom", + "all_in_one_59_steam": "Alles-in-één 59' + Stoom", "autocare": "Automatische verzorging", "autoclean": "Trommelreiniging", "baby_60": "All baby 60 ° C", @@ -1307,7 +1331,7 @@ "iot_active_steam": "Stoom", "iot_active_wash_steam": "Actieve was", "iot_allergy_care_pro": "Allergy Care Pro", - "iot_all_in_one_59_steam": "Actieve was + Stoom", + "iot_all_in_one_59_steam": "Alles-in-één 59' + Stoom", "iot_checkup": "Controle", "iot_colour_59_steam": "Gekleurd 59' + Stoom", "iot_cottons_steam": "Katoen + Stoom", @@ -1540,69 +1564,6 @@ }, "name": "Programma" }, - "dry_levels": { - "state": { - "0": "Niet drogen", - "1": "Strijken", - "2": "Kastdroog", - "3": "Kastdroog", - "4": "Extra droog", - "12": "Strijken", - "13": "Kastdroog", - "14": "Klaar om te dragen", - "15": "Extra droog", - "11": "Niet drogen" - }, - "name": "Droogniveau" - }, - "spin_speed": { - "name": "Centrifugeren" - }, - "temperature": { - "name": "Temperatuur" - }, - "dry_time": { - "name": "Droogtijd" - }, - "eco_pilot": { - "state": { - "0": "Uit", - "1": "Voorkom aanraking", - "2": "Volgen" - }, - "name": "Eco pilot" - }, - "fan_mode": { - "state": { - "1": "Hoog", - "2": "Gemiddeld ", - "3": "Laag", - "4": "Automatisch", - "5": "Automatisch" - } - }, - "programs_ac": { - "state": { - "iot_10_heating": "10°C-verwarmingsfunctie", - "iot_auto": "Automatisch", - "iot_cool": "Koelen", - "iot_dry": "Drogen", - "iot_fan": "Ventilator", - "iot_heat": "Verwarming", - "iot_nano_aqua": "Nano Aqua", - "iot_purify": "Zelfzuivering", - "iot_self_clean": "Zelfreiniging", - "iot_self_clean_56": "Sterilisatie reiniging 56°C", - "iot_simple_start": "Start nu", - "iot_uv": "UV", - "iot_uv_and_auto": "UV + Auto", - "iot_uv_and_cool": "UV + Koud", - "iot_uv_and_dry": "UV + Ontvochtiger", - "iot_uv_and_fan": "UV + Hetelucht", - "iot_uv_and_heat": "UV + Warmte" - }, - "name": "Programma" - }, "programs_ref": { "state": { "auto_set": "AUTO-SET", @@ -1626,17 +1587,17 @@ }, "name": "Programma" }, + "dry_time": { + "name": "Droogtijd" + }, + "spin_speed": { + "name": "Centrifugeren" + }, + "temperature": { + "name": "Temperatuur" + }, "remaining_time": { "name": "Resterende tijd" - }, - "ref_zones": { - "state": { - "fridge": "Koelkast", - "freezer": "Vriezer", - "vtroom1": "My Zone", - "fridge_freezer": "Koelkast & Vriezer" - }, - "name": "Zone" } }, "switch": { @@ -1724,18 +1685,15 @@ "acqua_plus": { "name": "Acquaplus" }, - "auto_dose": { - "name": "Automatisch doseren" - }, - "good_night": { - "name": "Goede nacht" - }, "auto_dose_softener": { "name": "Automatisch doseren Wasverzachter" }, "auto_dose_detergent": { "name": "Automatisch doseren Wasmiddel" }, + "good_night": { + "name": "Goede nacht" + }, "auto_set": { "name": "Automatisch instellen" }, @@ -1768,27 +1726,12 @@ "anti_crease": { "name": "Kreukherstellend" }, - "aqua_plus": { + "acqua_plus": { "name": "Acquaplus" }, "spin_speed": { "name": "Centrifugeren" }, - "programs_dw": { - "name": "Programma" - }, - "programs_ih": { - "name": "Programma" - }, - "programs_ov": { - "name": "Programma" - }, - "programs_td": { - "name": "Programma" - }, - "programs_wm": { - "name": "Programma" - }, "still_hot": { "name": "Nog heet" }, @@ -1819,12 +1762,6 @@ "prewash": { "name": "Voorwas" }, - "acqua_plus": { - "name": "Acquaplus" - }, - "auto_dose": { - "name": "Automatisch doseren" - }, "buzzer": { "name": "Bel voor einde cyclus" }, @@ -1850,6 +1787,17 @@ "name": "Filter vervangen" } }, + "button": { + "induction_hob": { + "name": "Inductiekookplaat" + }, + "start_program": { + "name": "Programma Start" + }, + "stop_program": { + "name": "Programma Stoppen" + } + }, "number": { "power_management": { "name": "Vermogensbeheer" @@ -1888,17 +1836,6 @@ "name": "Doeltemperatuur Koelkast" } }, - "button": { - "induction_hob": { - "name": "Inductiekookplaat" - }, - "start_program": { - "name": "Programma Start" - }, - "stop_program": { - "name": "Programma Stoppen" - } - }, "climate": { "air_conditioner": { "name": "Airconditioner" diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index 97e76a4..6a36344 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -3,325 +3,73 @@ "sensor": { "washing_modes": { "state": { - "0": "Gotowe", - "1": "Gotowe", - "3": "Zatrzymaj", - "4": "Zaplanowane", - "5": "Zaplanowane", - "6": "Błąd", - "7": "Gotowe", - "2": "Program uruchomiony", - "8": "Test", - "9": "Zatrzymanie cyklu…" + "ready": "Gotowe", + "running": "Program uruchomiony", + "pause": "Zatrzymaj", + "scheduled": "Zaplanowane", + "error": "Błąd", + "test": "Test", + "ending": "Zatrzymanie cyklu…" + } + }, + "mach_modes_ac": { + "state": { + "auto": "Auto", + "cool": "Chłodzenie", + "dry": "Osuszanie", + "heat": "Grzanie", + "fan": "Wentylator" } }, "program_phases_wm": { "state": { - "0": "Gotowe", - "1": "Pranie", - "2": "Pranie", - "3": "Wirowanie", - "4": "Płukanie", - "5": "Płukanie", - "6": "Płukanie", - "7": "Suszenie", - "9": "Para", - "10": "Gotowe", - "11": "Wirowanie", - "12": "Ważenie ", - "13": "Ważenie ", - "14": "Pranie", - "15": "Pranie", - "16": "Pranie", - "17": "Płukanie", - "18": "Płukanie", - "19": "Zaplanowane", - "20": "Utrzymaj świeżość", - "24": "Odświeżanie", - "25": "Pranie", - "26": "Ogrzewanie", - "27": "Pranie" + "ready": "Gotowe", + "spin": "Wirowanie", + "rinse": "Płukanie", + "drying": "Suszenie", + "steam": "Para", + "weighting": "Ważenie ", + "scheduled": "Zaplanowane", + "tumbling": "Utrzymaj świeżość", + "refresh": "Odświeżanie", + "heating": "Ogrzewanie", + "washing": "Pranie" }, "name": "Faza" }, "program_phases_td": { "state": { - "0": "Gotowe", - "1": "Suszenie", - "2": "Suszenie", - "3": "Chłodzenie", - "13": "Chłodzenie", - "14": "Suszenie", - "15": "Suszenie", - "16": "Chłodzenie", - "18": "Utrzymaj świeżość", - "19": "Suszenie", - "20": "Suszenie", - "11": "Gotowe", - "17": "unknown", - "12": "unknown" + "ready": "Gotowe", + "heat_stroke": "Suszenie", + "drying": "Suszenie", + "cooldown": "Chłodzenie", + "unknown": "unknown", + "tumbling": "Utrzymaj świeżość" }, "name": "Faza" }, "program_phases_dw": { "state": { - "0": "Gotowe", - "1": "Zmywanie wstępne", - "2": "Pranie", - "3": "Płukanie", - "4": "Suszenie", - "5": "Gotowe", - "6": "Hot rinse" + "ready": "Gotowe", + "prewash": "Zmywanie wstępne", + "washing": "Pranie", + "rinse": "Płukanie", + "drying": "Suszenie", + "hot_rinse": "Hot rinse" }, "name": "Faza" }, "dry_levels": { "state": { - "0": "Bez suszenia", - "1": "Prasowanie", - "2": "Gotowe do garderoby", - "3": "Gotowe do garderoby", - "4": "Ekstra suchy", - "12": "Prasowanie", - "13": "Gotowe do garderoby", - "14": "Gotowe do włożenia", - "15": "Ekstra suchy", - "11": "Bez suszenia" + "no_dry": "Bez suszenia", + "iron_dry": "Prasowanie", + "no_dry_iron": "Gotowe do garderoby", + "cupboard_dry": "Gotowe do garderoby", + "extra_dry": "Ekstra suchy", + "ready_to_wear": "Gotowe do włożenia" }, "name": "Poziom suszenia" }, - "anti_crease": { - "name": "Przeciw gnieceniu" - }, - "power": { - "name": "Poziom mocy" - }, - "remaining_time": { - "name": "Pozostały czas" - }, - "temperature": { - "name": "Temperatura" - }, - "water_efficiency": { - "name": "Wydajność zużycia wody" - }, - "water_saving": { - "name": "Oszczędność wody" - }, - "duration": { - "name": "Czas trwania" - }, - "target_temperature": { - "name": "Temperatura docelowa" - }, - "spin_speed": { - "name": "Wirowanie" - }, - "steam_leve": { - "name": "Poziom pary" - }, - "dirt_level": { - "name": "Stopień zabrudzenia" - }, - "delay_time": { - "name": "Opóźniony Start" - }, - "dry_time": { - "name": "Czas suszenia" - }, - "suggested_load": { - "name": "Ładowność" - }, - "energy_label": { - "name": "Efektywność energetyczna" - }, - "det_dust": { - "name": "Proszek" - }, - "det_liquid": { - "name": "Płyn" - }, - "errors": { - "name": "Błąd" - }, - "programs": { - "name": "Aktualny program" - }, - "cycles_total": { - "name": "Cykle Suma" - }, - "energy_total": { - "name": "Zużycie energii Suma" - }, - "water_total": { - "name": "Wydajność zużycia wody Suma" - }, - "energy_current": { - "name": "Zużycie energii Aktualne" - }, - "water_current": { - "name": "Wydajność zużycia wody Aktualne" - }, - "mach_modes_ac": { - "state": { - "0": "Auto", - "1": "Chłodzenie", - "2": "Chłodzenie", - "3": "Osuszanie", - "4": "Grzanie", - "5": "Wentylator", - "6": "Wentylator" - } - }, - "programs_td": { - "state": { - "active_dry": "Aktywne suche", - "allergy_care": "Antiallergy", - "all_in_one": "All in One", - "antiallergy": "Antiallergy", - "anti_odours": "Odświeżenie", - "auto_care": "Auto Care", - "baby": "Dzieci", - "bed_quilt": "Bed Quilt", - "care_30": "Care 30", - "care_45": "Care 45", - "care_59": "Care 59", - "coloured": "Kolorowe", - "daily_45_min": "CODZIENNY 45'", - "daily_perfect_59_min": "CODZIENNY PERFEKT 59'", - "darks_and_coloured": "Darks & Coloured", - "delicates": "Delikatne", - "duvet": "Kołdry", - "eco": "Bawełna ekologiczna", - "ecospeed_cottons": "Ecospeed Cottons", - "ecospeed_delicates": "Szybki Eco do tkanin delikatnych", - "ecospeed_mixed": "Ecospeed Mixed", - "extra_hygiene": "HIGIENICZNY", - "fitness": "Fitness", - "fresh_care": "Fresh Care", - "genius": "Genius", - "hqd_baby_care": "Baby Care", - "hqd_bath_towel": "Ręczniki", - "hqd_bed_sheets": "Prześcieradła", - "hqd_bulky": "Elementy wielkogabarytowe", - "hqd_casual": "Nieformalny", - "hqd_cold_wind_30": "Chłodna bryza 30 minut", - "hqd_cold_wind_timing": "Chłodny wietrzyk ", - "hqd_cotton": "Bawełna", - "hqd_curtain": "Zasłony", - "hqd_delicate": "Delikatne", - "hqd_diaper": "Pieluchy", - "hqd_duvet": "Kołdry", - "hqd_feather": "Kurtki puchowe", - "hqd_hot_wind_timing": "Gorące powietrze", - "hqd_hygienic": "Higienizacja", - "hqd_i_refresh": "I-Refresh", - "hqd_i_refresh_pro": "I-Refresh Pro", - "hqd_jacket": "Kurtki", - "hqd_jeans": "Dżins", - "hqd_luxury": "Luxury", - "hqd_mix": "Mieszane", - "hqd_night_dry": "Suszenie nocne", - "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", - "hqd_quick_20": "Szybkie 20", - "hqd_quick_30": "Szybkie 30", - "hqd_quick_dry": "Szybkoschnące 30", - "hqd_quilt": "Kołdry", - "hqd_refresh": "Odświeżanie", - "hqd_school_uniform": "Mundurek szkolny", - "hqd_shirt": "Koszule", - "hqd_shoes": "Buty", - "hqd_silk": "Jedwab", - "hqd_sports": "Odzież sportowa", - "hqd_synthetics": "Syntetyki", - "hqd_timer": "Czasowe", - "hqd_towel": "Ręczniki", - "hqd_underwear": "Bielizna", - "hqd_warm_up": "Podgrzej", - "hqd_wool": "Wełna", - "hqd_working_suit": "Odzież robocza", - "hygiene": "Higiena", - "iot_checkup": "Kontrola", - "iot_dry_anti_mites": "Przeciw roztoczom", - "iot_dry_baby": "Dzieci", - "iot_dry_backpacks": "Plecaki", - "iot_dry_bathrobe": "Szlafroki", - "iot_dry_bed_linen": "Pościel", - "iot_dry_bed_quilt": "Bed Quilt", - "iot_dry_cotton": "Bawełna", - "iot_dry_cuddly_toys": "Zabawki pluszowe", - "iot_dry_curtains": "Zasłony", - "iot_dry_dehumidifier": "Środek do usuwania wilgoci", - "iot_dry_delicates": "Bielizna", - "iot_dry_delicate_tablecloths": "Delikatne obrusy", - "iot_dry_denim_jeans": "Dżinsy", - "iot_dry_down_jacket": "Jacket", - "iot_dry_duvet": "Kołdry", - "iot_dry_easy_iron_cotton": "Super Easy Iron", - "iot_dry_easy_iron_synthetics": "Super łatwe prasowanie tkanin syntetycznych", - "iot_dry_gym_fit": "Gimnastyczne - Fitness", - "iot_dry_lingerie": "Bielizna", - "iot_dry_mixed": "Mieszane", - "iot_dry_playsuits": "Pajacyki", - "iot_dry_rapid_30": "Rapid 30", - "iot_dry_rapid_59": "Szybki 59’.", - "iot_dry_refresh": "Refresh", - "iot_dry_regenerates_waterproof": "Regeneracja wodoodpornych", - "iot_dry_relax_creases": "Relax Creases", - "iot_dry_shirts": "Koszule", - "iot_dry_small_load": "Small Load", - "iot_dry_swimsuits_and_bikinis": "Stroje kąpielowe", - "iot_dry_synthetics": "Syntetyczne", - "iot_dry_synthetic_dry": "Suszenie materiałów syntetycznych", - "iot_dry_tablecloths": "Obrusy", - "iot_dry_technical_fabrics": "Materiały techniczne", - "iot_dry_warm_embrace": "Ciepłe objęcie", - "iot_dry_wool": "Woolmark", - "jeans": "Dżinsy", - "mix_and_dry": "Mix&Dry", - "pets": "Zwierzęta domowe", - "pre_iron": "Pre-Iron", - "rapid_30": "Rapid 30", - "rapid_45": "Rapid 45 min", - "rapid_59": "Perfekcyjne szybkie w 59 min", - "refresh": "Odświeżanie", - "relax_creases": "Relax Creases", - "saving_30_min": "ECO 30'", - "shirts": "Koszule", - "shoes": "Buty", - "small_load": "Small Load", - "soft_care": "Soft Care", - "sport_plus": "Sportowe", - "super_easy_iron_misti": "Super łatwe prasowanie tkanin mieszanych", - "super_easy_iron_xxl": "Super łatwe prasowanie XXL", - "super_fast_cottons": "Super Fast Cottons", - "super_fast_delicates": "Super Fast Delicates", - "synthetics": "Syntetyczne", - "total_care": "Total Care", - "trainers": "Buty sportowe", - "ultra_care": "Ultra Care", - "waterproof_revitalize": "Waterproof Revitalize", - "whites": "Białe", - "wool": "Suszenie wełny", - "woolmark": "Woolmark", - "xxl_load": "XXL Load", - "zoom_59": "Zoom 59" - }, - "name": "Program" - }, - "room_temperature": { - "name": "Temperatura pokojowa" - }, - "humidity": { - "name": "Wilgotność" - }, - "freezer_temp": { - "name": "Temperatura zamrażarki" - }, - "fridge_temp": { - "name": "Temperatura lodówki" - }, "programs_ac": { "state": { "iot_10_heating": "Funkcja grzania 10°C", @@ -545,6 +293,143 @@ }, "name": "Program" }, + "programs_td": { + "state": { + "active_dry": "Aktywne suche", + "allergy_care": "Antiallergy", + "all_in_one": "All in One", + "antiallergy": "Antiallergy", + "anti_odours": "Odświeżenie", + "auto_care": "Auto Care", + "baby": "Dzieci", + "bed_quilt": "Bed Quilt", + "care_30": "Care 30", + "care_45": "Care 45", + "care_59": "Care 59", + "coloured": "Kolorowe", + "daily_45_min": "CODZIENNY 45'", + "daily_perfect_59_min": "CODZIENNY PERFEKT 59'", + "darks_and_coloured": "Darks & Coloured", + "delicates": "Delikatne", + "duvet": "Kołdry", + "eco": "Bawełna ekologiczna", + "ecospeed_cottons": "Ecospeed Cottons", + "ecospeed_delicates": "Szybki Eco do tkanin delikatnych", + "ecospeed_mixed": "Ecospeed Mixed", + "extra_hygiene": "HIGIENICZNY", + "fitness": "Fitness", + "fresh_care": "Fresh Care", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Ręczniki", + "hqd_bed_sheets": "Prześcieradła", + "hqd_bulky": "Elementy wielkogabarytowe", + "hqd_casual": "Nieformalny", + "hqd_cold_wind_30": "Chłodna bryza 30 minut", + "hqd_cold_wind_timing": "Chłodny wietrzyk ", + "hqd_cotton": "Bawełna", + "hqd_curtain": "Zasłony", + "hqd_delicate": "Delikatne", + "hqd_diaper": "Pieluchy", + "hqd_duvet": "Kołdry", + "hqd_feather": "Kurtki puchowe", + "hqd_hot_wind_timing": "Gorące powietrze", + "hqd_hygienic": "Higienizacja", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Kurtki", + "hqd_jeans": "Dżins", + "hqd_luxury": "Luxury", + "hqd_mix": "Mieszane", + "hqd_night_dry": "Suszenie nocne", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Szybkie 20", + "hqd_quick_30": "Szybkie 30", + "hqd_quick_dry": "Szybkoschnące 30", + "hqd_quilt": "Kołdry", + "hqd_refresh": "Odświeżanie", + "hqd_school_uniform": "Mundurek szkolny", + "hqd_shirt": "Koszule", + "hqd_shoes": "Buty", + "hqd_silk": "Jedwab", + "hqd_sports": "Odzież sportowa", + "hqd_synthetics": "Syntetyki", + "hqd_timer": "Czasowe", + "hqd_towel": "Ręczniki", + "hqd_underwear": "Bielizna", + "hqd_warm_up": "Podgrzej", + "hqd_wool": "Wełna", + "hqd_working_suit": "Odzież robocza", + "hygiene": "Higiena", + "iot_checkup": "Kontrola", + "iot_dry_anti_mites": "Przeciw roztoczom", + "iot_dry_baby": "Dzieci", + "iot_dry_backpacks": "Plecaki", + "iot_dry_bathrobe": "Szlafroki", + "iot_dry_bed_linen": "Pościel", + "iot_dry_bed_quilt": "Bed Quilt", + "iot_dry_cotton": "Bawełna", + "iot_dry_cuddly_toys": "Zabawki pluszowe", + "iot_dry_curtains": "Zasłony", + "iot_dry_dehumidifier": "Środek do usuwania wilgoci", + "iot_dry_delicates": "Bielizna", + "iot_dry_delicate_tablecloths": "Delikatne obrusy", + "iot_dry_denim_jeans": "Dżinsy", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Kołdry", + "iot_dry_easy_iron_cotton": "Super Easy Iron", + "iot_dry_easy_iron_synthetics": "Super łatwe prasowanie tkanin syntetycznych", + "iot_dry_gym_fit": "Gimnastyczne - Fitness", + "iot_dry_lingerie": "Bielizna", + "iot_dry_mixed": "Mieszane", + "iot_dry_playsuits": "Pajacyki", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Szybki 59’.", + "iot_dry_refresh": "Refresh", + "iot_dry_regenerates_waterproof": "Regeneracja wodoodpornych", + "iot_dry_relax_creases": "Relax Creases", + "iot_dry_shirts": "Koszule", + "iot_dry_small_load": "Small Load", + "iot_dry_swimsuits_and_bikinis": "Stroje kąpielowe", + "iot_dry_synthetics": "Syntetyczne", + "iot_dry_synthetic_dry": "Suszenie materiałów syntetycznych", + "iot_dry_tablecloths": "Obrusy", + "iot_dry_technical_fabrics": "Materiały techniczne", + "iot_dry_warm_embrace": "Ciepłe objęcie", + "iot_dry_wool": "Woolmark", + "jeans": "Dżinsy", + "mix_and_dry": "Mix&Dry", + "pets": "Zwierzęta domowe", + "pre_iron": "Pre-Iron", + "rapid_30": "Rapid 30", + "rapid_45": "Rapid 45 min", + "rapid_59": "Perfekcyjne szybkie w 59 min", + "refresh": "Odświeżanie", + "relax_creases": "Relax Creases", + "saving_30_min": "ECO 30'", + "shirts": "Koszule", + "shoes": "Buty", + "small_load": "Small Load", + "soft_care": "Soft Care", + "sport_plus": "Sportowe", + "super_easy_iron_misti": "Super łatwe prasowanie tkanin mieszanych", + "super_easy_iron_xxl": "Super łatwe prasowanie XXL", + "super_fast_cottons": "Super Fast Cottons", + "super_fast_delicates": "Super Fast Delicates", + "synthetics": "Syntetyczne", + "total_care": "Total Care", + "trainers": "Buty sportowe", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Waterproof Revitalize", + "whites": "Białe", + "wool": "Suszenie wełny", + "woolmark": "Woolmark", + "xxl_load": "XXL Load", + "zoom_59": "Zoom 59" + }, + "name": "Program" + }, "programs_wm": { "state": { "20_degrees_coloured_cottons": "20° Kolorowe i Bawełna", @@ -556,7 +441,7 @@ "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "Wszystko w jednym cyklu 49’", "all_in_one_59": "Wszystko w jednym cyklu 59’", - "all_in_one_59_steam": "Aktywne pranie + Para", + "all_in_one_59_steam": "Wszystko w jednym cyklu 59’ + Para", "autocare": "Pielęgnacja własna", "autoclean": "Czyszczenie bębna", "baby_60": "Wszystkie dziecinne 60°C", @@ -622,7 +507,7 @@ "iot_active_steam": "Para", "iot_active_wash_steam": "Aktywne pranie", "iot_allergy_care_pro": "Allergy Care Pro", - "iot_all_in_one_59_steam": "Aktywne pranie + Para", + "iot_all_in_one_59_steam": "Wszystko w jednym cyklu 59’ + Para", "iot_checkup": "Kontrola", "iot_colour_59_steam": "Kolorowe 59' + Para", "iot_cottons_steam": "Bawełna + Para", @@ -889,9 +774,148 @@ "sparkling": "Musujące", "white": "Białe" } + }, + "dry_time": { + "name": "Czas suszenia" + }, + "power": { + "name": "Poziom mocy" + }, + "remaining_time": { + "name": "Pozostały czas" + }, + "temperature": { + "name": "Temperatura" + }, + "water_efficiency": { + "name": "Wydajność zużycia wody" + }, + "water_saving": { + "name": "Oszczędność wody" + }, + "duration": { + "name": "Czas trwania" + }, + "target_temperature": { + "name": "Temperatura docelowa" + }, + "spin_speed": { + "name": "Wirowanie" + }, + "steam_leve": { + "name": "Poziom pary" + }, + "dirt_level": { + "name": "Stopień zabrudzenia" + }, + "delay_time": { + "name": "Opóźniony Start" + }, + "suggested_load": { + "name": "Ładowność" + }, + "energy_label": { + "name": "Efektywność energetyczna" + }, + "det_dust": { + "name": "Proszek" + }, + "det_liquid": { + "name": "Płyn" + }, + "errors": { + "name": "Błąd" + }, + "programs": { + "name": "Aktualny program" + }, + "room_temperature": { + "name": "Temperatura pokojowa" + }, + "humidity": { + "name": "Wilgotność" + }, + "cycles_total": { + "name": "Cykle Suma" + }, + "energy_total": { + "name": "Zużycie energii Suma" + }, + "water_total": { + "name": "Wydajność zużycia wody Suma" + }, + "energy_current": { + "name": "Zużycie energii Aktualne" + }, + "water_current": { + "name": "Wydajność zużycia wody Aktualne" + }, + "freezer_temp": { + "name": "Temperatura zamrażarki" + }, + "fridge_temp": { + "name": "Temperatura lodówki" } }, "select": { + "dry_levels": { + "state": { + "no_dry": "Bez suszenia", + "iron_dry": "Prasowanie", + "no_dry_iron": "Gotowe do garderoby", + "cupboard_dry": "Gotowe do garderoby", + "extra_dry": "Ekstra suchy", + "ready_to_wear": "Gotowe do włożenia" + }, + "name": "Poziom suszenia" + }, + "eco_pilot": { + "state": { + "touch_off": "Wyłącz", + "avoid_touch": "Unikanie kontaktu", + "follow_touch": "Podążanie" + }, + "name": "Eco pilot" + }, + "fan_mode": { + "state": { + "high": "Wysoki", + "mid": "Średni ", + "low": "Niski", + "auto": "Auto" + } + }, + "ref_zones": { + "state": { + "fridge": "Lodówka", + "freezer": "Zamrażarka", + "vtroom1": "My Zone", + "fridge_freezer": "Lodówka & Zamrażarka" + }, + "name": "Strefa" + }, + "programs_ac": { + "state": { + "iot_10_heating": "Funkcja grzania 10°C", + "iot_auto": "Auto", + "iot_cool": "Chłodzenie", + "iot_dry": "Osuszanie", + "iot_fan": "Wentylator", + "iot_heat": "Grzanie", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Self Purify", + "iot_self_clean": "Self Clean", + "iot_self_clean_56": "Steri Clean 56°C", + "iot_simple_start": "Uruchom teraz", + "iot_uv": "Sterylizacja UVC", + "iot_uv_and_auto": "UV + automat", + "iot_uv_and_cool": "UV + chłodzenie", + "iot_uv_and_dry": "UV + osuszacz powietrza", + "iot_uv_and_fan": "UV + wentylator", + "iot_uv_and_heat": "UV + podgrzewanie" + }, + "name": "Program" + }, "programs_dw": { "state": { "59_min": "Szybki 59'", @@ -1241,7 +1265,7 @@ "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "Wszystko w jednym cyklu 49’", "all_in_one_59": "Wszystko w jednym cyklu 59’", - "all_in_one_59_steam": "Aktywne pranie + Para", + "all_in_one_59_steam": "Wszystko w jednym cyklu 59’ + Para", "autocare": "Pielęgnacja własna", "autoclean": "Czyszczenie bębna", "baby_60": "Wszystkie dziecinne 60°C", @@ -1307,7 +1331,7 @@ "iot_active_steam": "Para", "iot_active_wash_steam": "Aktywne pranie", "iot_allergy_care_pro": "Allergy Care Pro", - "iot_all_in_one_59_steam": "Aktywne pranie + Para", + "iot_all_in_one_59_steam": "Wszystko w jednym cyklu 59’ + Para", "iot_checkup": "Kontrola", "iot_colour_59_steam": "Kolorowe 59' + Para", "iot_cottons_steam": "Bawełna + Para", @@ -1540,69 +1564,6 @@ }, "name": "Program" }, - "dry_levels": { - "state": { - "0": "Bez suszenia", - "1": "Prasowanie", - "2": "Gotowe do garderoby", - "3": "Gotowe do garderoby", - "4": "Ekstra suchy", - "12": "Prasowanie", - "13": "Gotowe do garderoby", - "14": "Gotowe do włożenia", - "15": "Ekstra suchy", - "11": "Bez suszenia" - }, - "name": "Poziom suszenia" - }, - "spin_speed": { - "name": "Wirowanie" - }, - "temperature": { - "name": "Temperatura" - }, - "dry_time": { - "name": "Czas suszenia" - }, - "eco_pilot": { - "state": { - "0": "Wyłącz", - "1": "Unikanie kontaktu", - "2": "Podążanie" - }, - "name": "Eco pilot" - }, - "fan_mode": { - "state": { - "1": "Wysoki", - "2": "Średni ", - "3": "Niski", - "4": "Auto", - "5": "Auto" - } - }, - "programs_ac": { - "state": { - "iot_10_heating": "Funkcja grzania 10°C", - "iot_auto": "Auto", - "iot_cool": "Chłodzenie", - "iot_dry": "Osuszanie", - "iot_fan": "Wentylator", - "iot_heat": "Grzanie", - "iot_nano_aqua": "Nano Aqua", - "iot_purify": "Self Purify", - "iot_self_clean": "Self Clean", - "iot_self_clean_56": "Steri Clean 56°C", - "iot_simple_start": "Uruchom teraz", - "iot_uv": "Sterylizacja UVC", - "iot_uv_and_auto": "UV + automat", - "iot_uv_and_cool": "UV + chłodzenie", - "iot_uv_and_dry": "UV + osuszacz powietrza", - "iot_uv_and_fan": "UV + wentylator", - "iot_uv_and_heat": "UV + podgrzewanie" - }, - "name": "Program" - }, "programs_ref": { "state": { "auto_set": "AUTO-SET", @@ -1626,17 +1587,17 @@ }, "name": "Program" }, + "dry_time": { + "name": "Czas suszenia" + }, + "spin_speed": { + "name": "Wirowanie" + }, + "temperature": { + "name": "Temperatura" + }, "remaining_time": { "name": "Pozostały czas" - }, - "ref_zones": { - "state": { - "fridge": "Lodówka", - "freezer": "Zamrażarka", - "vtroom1": "My Zone", - "fridge_freezer": "Lodówka & Zamrażarka" - }, - "name": "Strefa" } }, "switch": { @@ -1724,18 +1685,15 @@ "acqua_plus": { "name": "Acquaplus" }, - "auto_dose": { - "name": "Automatyczne dozowanie" - }, - "good_night": { - "name": "Dobranoc" - }, "auto_dose_softener": { "name": "Automatyczne dozowanie Środek zmiękczający" }, "auto_dose_detergent": { "name": "Automatyczne dozowanie Detergent" }, + "good_night": { + "name": "Dobranoc" + }, "auto_set": { "name": "Ustawianie automatyczne" }, @@ -1768,27 +1726,12 @@ "anti_crease": { "name": "Przeciw gnieceniu" }, - "aqua_plus": { + "acqua_plus": { "name": "Acquaplus" }, "spin_speed": { "name": "Wirowanie" }, - "programs_dw": { - "name": "Program" - }, - "programs_ih": { - "name": "Program" - }, - "programs_ov": { - "name": "Program" - }, - "programs_td": { - "name": "Program" - }, - "programs_wm": { - "name": "Program" - }, "still_hot": { "name": "Nadal gorące" }, @@ -1819,12 +1762,6 @@ "prewash": { "name": "Mycie wstępne" }, - "acqua_plus": { - "name": "Acquaplus" - }, - "auto_dose": { - "name": "Automatyczne dozowanie" - }, "buzzer": { "name": "Sygnał dźwiękowy końca cyklu" }, @@ -1850,6 +1787,17 @@ "name": "Wymiana filtra" } }, + "button": { + "induction_hob": { + "name": "Płyta indukcyjna" + }, + "start_program": { + "name": "Program Początek" + }, + "stop_program": { + "name": "Program Zatrzymaj" + } + }, "number": { "power_management": { "name": "Zarządzanie zasilaniem" @@ -1888,17 +1836,6 @@ "name": "Temperatura docelowa Lodówka" } }, - "button": { - "induction_hob": { - "name": "Płyta indukcyjna" - }, - "start_program": { - "name": "Program Początek" - }, - "stop_program": { - "name": "Program Zatrzymaj" - } - }, "climate": { "air_conditioner": { "name": "Klimatyzator" diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index c941c8d..3d342c0 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -3,325 +3,73 @@ "sensor": { "washing_modes": { "state": { - "0": "Pronto", - "1": "Pronto", - "3": "Pausa", - "4": "Agendado", - "5": "Agendado", - "6": "Erro", - "7": "Pronto", - "2": "Programa em execução", - "8": "Test", - "9": "Ciclo de paragem…" + "ready": "Pronto", + "running": "Programa em execução", + "pause": "Pausa", + "scheduled": "Agendado", + "error": "Erro", + "test": "Test", + "ending": "Ciclo de paragem…" + } + }, + "mach_modes_ac": { + "state": { + "auto": "Auto", + "cool": "Frio", + "dry": "Secar", + "heat": "Calor", + "fan": "Ventilador" } }, "program_phases_wm": { "state": { - "0": "Pronto", - "1": "Lavar", - "2": "Lavar", - "3": "Centrifugar", - "4": "Lavagem", - "5": "Lavagem", - "6": "Lavagem", - "7": "Secagem", - "9": "Vapor", - "10": "Pronto", - "11": "Centrifugar", - "12": "Pesagem ", - "13": "Pesagem ", - "14": "Lavar", - "15": "Lavar", - "16": "Lavar", - "17": "Lavagem", - "18": "Lavagem", - "19": "Agendado", - "20": "Manter Fresco", - "24": "Refrescar", - "25": "Lavar", - "26": "Aquecimento", - "27": "Lavar" + "ready": "Pronto", + "spin": "Centrifugar", + "rinse": "Lavagem", + "drying": "Secagem", + "steam": "Vapor", + "weighting": "Pesagem ", + "scheduled": "Agendado", + "tumbling": "Manter Fresco", + "refresh": "Refrescar", + "heating": "Aquecimento", + "washing": "Lavar" }, "name": "Fase" }, "program_phases_td": { "state": { - "0": "Pronto", - "1": "Secagem", - "2": "Secagem", - "3": "Arrefecimento", - "13": "Arrefecimento", - "14": "Secagem", - "15": "Secagem", - "16": "Arrefecimento", - "18": "Manter Fresco", - "19": "Secagem", - "20": "Secagem", - "11": "Pronto", - "17": "unknown", - "12": "unknown" + "ready": "Pronto", + "heat_stroke": "Secagem", + "drying": "Secagem", + "cooldown": "Arrefecimento", + "unknown": "unknown", + "tumbling": "Manter Fresco" }, "name": "Fase" }, "program_phases_dw": { "state": { - "0": "Pronto", - "1": "Pré-lavagem", - "2": "Lavar", - "3": "Lavagem", - "4": "Secagem", - "5": "Pronto", - "6": "Hot rinse" + "ready": "Pronto", + "prewash": "Pré-lavagem", + "washing": "Lavar", + "rinse": "Lavagem", + "drying": "Secagem", + "hot_rinse": "Hot rinse" }, "name": "Fase" }, "dry_levels": { "state": { - "0": "Sem secagem", - "1": "Engomar", - "2": "Guarda-Roupa pronto", - "3": "Guarda-Roupa pronto", - "4": "Extra seco", - "12": "Engomar", - "13": "Guarda-Roupa pronto", - "14": "Pronto a usar", - "15": "Extra seco", - "11": "Sem secagem" + "no_dry": "Sem secagem", + "iron_dry": "Engomar", + "no_dry_iron": "Guarda-Roupa pronto", + "cupboard_dry": "Guarda-Roupa pronto", + "extra_dry": "Extra seco", + "ready_to_wear": "Pronto a usar" }, "name": "Nível de secagem" }, - "anti_crease": { - "name": "Anti-vincos" - }, - "power": { - "name": "Nível de potência" - }, - "remaining_time": { - "name": "Tempo restante" - }, - "temperature": { - "name": "Temperatura" - }, - "water_efficiency": { - "name": "Eficiência da água" - }, - "water_saving": { - "name": "Poupança de água" - }, - "duration": { - "name": "Duração" - }, - "target_temperature": { - "name": "Temperatura alvo" - }, - "spin_speed": { - "name": "Centrifugar" - }, - "steam_leve": { - "name": "Nível de vapor" - }, - "dirt_level": { - "name": "Nível de sujidade" - }, - "delay_time": { - "name": "Início adiado" - }, - "dry_time": { - "name": "Tempo de secagem" - }, - "suggested_load": { - "name": "Capacidade de carga" - }, - "energy_label": { - "name": "Eficiência energética" - }, - "det_dust": { - "name": "Pó" - }, - "det_liquid": { - "name": "Líquido" - }, - "errors": { - "name": "Erro" - }, - "programs": { - "name": "Programa atual" - }, - "cycles_total": { - "name": "Ciclos Total" - }, - "energy_total": { - "name": "Consumo de energia Total" - }, - "water_total": { - "name": "Eficiência da água Total" - }, - "energy_current": { - "name": "Consumo de energia Data" - }, - "water_current": { - "name": "Eficiência da água Data" - }, - "mach_modes_ac": { - "state": { - "0": "Auto", - "1": "Frio", - "2": "Frio", - "3": "Secar", - "4": "Calor", - "5": "Ventilador", - "6": "Ventilador" - } - }, - "programs_td": { - "state": { - "active_dry": "Secagem ativa", - "allergy_care": "Anti alergias", - "all_in_one": "All in One", - "antiallergy": "Anti alergias", - "anti_odours": "Anti-odor", - "auto_care": "Auto Care", - "baby": "Roupa de bebé", - "bed_quilt": "Colchas", - "care_30": "Cuidado 30", - "care_45": "Cuidado 45", - "care_59": "Cuidado 59", - "coloured": "Cores", - "daily_45_min": "DIARIO 45'", - "daily_perfect_59_min": "DIARIO PERFEITO 59'", - "darks_and_coloured": "Roupa escura e colorida", - "delicates": "Delicados", - "duvet": "Edredãos", - "eco": "Eco Algodão", - "ecospeed_cottons": "Velocidade eco algodões", - "ecospeed_delicates": "Ecospeed roupa delicada", - "ecospeed_mixed": "Velocidade eco mistos", - "extra_hygiene": "Higiene Extra", - "fitness": "Fitness", - "fresh_care": "Cuidado Fresco", - "genius": "Genius", - "hqd_baby_care": "Baby Care", - "hqd_bath_towel": "Toalhas", - "hqd_bed_sheets": "Lençóis", - "hqd_bulky": "Itens volumosos", - "hqd_casual": "Casual", - "hqd_cold_wind_30": "Brisa fresca durante 30 minutos", - "hqd_cold_wind_timing": "Brisa fresca ", - "hqd_cotton": "Algodão", - "hqd_curtain": "Cortinas", - "hqd_delicate": "Roupa delicada", - "hqd_diaper": "Fraldas", - "hqd_duvet": "Edredões", - "hqd_feather": "Blusões", - "hqd_hot_wind_timing": "Ar quente", - "hqd_hygienic": "Higienização", - "hqd_i_refresh": "I-Refresh", - "hqd_i_refresh_pro": "I-Refresh Pro", - "hqd_jacket": "Casacos", - "hqd_jeans": "Jeans", - "hqd_luxury": "Peças requintadas", - "hqd_mix": "Mistos", - "hqd_night_dry": "Secagem durante a noite", - "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", - "hqd_quick_20": "Rápido 20", - "hqd_quick_30": "Rápido 30", - "hqd_quick_dry": "Secagem rápida 30", - "hqd_quilt": "Colchas", - "hqd_refresh": "Refrescar", - "hqd_school_uniform": "Farda da escola", - "hqd_shirt": "Camisas", - "hqd_shoes": "Calçado", - "hqd_silk": "Seda", - "hqd_sports": "Desporto", - "hqd_synthetics": "Sintéticos", - "hqd_timer": "Temporizado", - "hqd_towel": "Toalhas", - "hqd_underwear": "Roupa interior", - "hqd_warm_up": "Aquecer", - "hqd_wool": "Lãs", - "hqd_working_suit": "Roupa de trabalho", - "hygiene": "Higiene", - "iot_checkup": "Check-Up", - "iot_dry_anti_mites": "Anti-ácaros", - "iot_dry_baby": "Roupa de bebé", - "iot_dry_backpacks": "Mochilas", - "iot_dry_bathrobe": "Roupões", - "iot_dry_bed_linen": "Roupa de cama", - "iot_dry_bed_quilt": "Colchas", - "iot_dry_cotton": "Algodão", - "iot_dry_cuddly_toys": "Brinquedos macios", - "iot_dry_curtains": "Cortinas", - "iot_dry_dehumidifier": "Removedor de humidade", - "iot_dry_delicates": "Roupa delicada", - "iot_dry_delicate_tablecloths": "Roupa de mesa delicada", - "iot_dry_denim_jeans": "Ganga - Jeans", - "iot_dry_down_jacket": "Jacket", - "iot_dry_duvet": "Edredãos", - "iot_dry_easy_iron_cotton": "Engomar fácil", - "iot_dry_easy_iron_synthetics": "Engomar Super Fácil de Sintéticos", - "iot_dry_gym_fit": "Roupa de desporto - Fitness", - "iot_dry_lingerie": "Roupa interior", - "iot_dry_mixed": "Mistos", - "iot_dry_playsuits": "Macacões", - "iot_dry_rapid_30": "Rapid 30", - "iot_dry_rapid_59": "Rápido 59’.", - "iot_dry_refresh": "Refrescar", - "iot_dry_regenerates_waterproof": "Regeneração da Impermeabilização (?)", - "iot_dry_relax_creases": "Menos vincos", - "iot_dry_shirts": "Camisas", - "iot_dry_small_load": "Pequena carga", - "iot_dry_swimsuits_and_bikinis": "Fatos de banho", - "iot_dry_synthetics": "Sintéticos", - "iot_dry_synthetic_dry": "Secagem de Sintéticos", - "iot_dry_tablecloths": "Roupa de mesa", - "iot_dry_technical_fabrics": "Tecidos técnicos", - "iot_dry_warm_embrace": "Warm Embrace (?)", - "iot_dry_wool": "Woolmark", - "jeans": "Jeans", - "mix_and_dry": "Mix&Dry (Mista e Seca)", - "pets": "Animais de estimação", - "pre_iron": "Pré engomar", - "rapid_30": "Rapid 30", - "rapid_45": "Rápido 45 min", - "rapid_59": "Rápida Perfeita 59 min", - "refresh": "Refrescar", - "relax_creases": "Menos vincos", - "saving_30_min": "ECO 30'", - "shirts": "Camisas", - "shoes": "Calçado", - "small_load": "Pequena carga", - "soft_care": "Cuidado Suave", - "sport_plus": "Roupa desportiva", - "super_easy_iron_misti": "Engomar Super Fácil de mistos", - "super_easy_iron_xxl": "Engomar Super Fácil XXL", - "super_fast_cottons": "Algodões super rápido", - "super_fast_delicates": "Delicados super rápido", - "synthetics": "Sintéticos", - "total_care": "Total Care", - "trainers": "Ténis", - "ultra_care": "Ultra Care", - "waterproof_revitalize": "Revitalização da impermeabialização", - "whites": "Roupa branca", - "wool": "Secagem de lãs", - "woolmark": "Woolmark", - "xxl_load": "Carga XXL", - "zoom_59": "Zoom 59" - }, - "name": "Programa" - }, - "room_temperature": { - "name": "Temperatura ambiente" - }, - "humidity": { - "name": "Humidade" - }, - "freezer_temp": { - "name": "Temperatura do congelador" - }, - "fridge_temp": { - "name": "Temperatura do frigorífico" - }, "programs_ac": { "state": { "iot_10_heating": "Função de aquecimento de 10 °C", @@ -545,6 +293,143 @@ }, "name": "Programa" }, + "programs_td": { + "state": { + "active_dry": "Secagem ativa", + "allergy_care": "Anti alergias", + "all_in_one": "All in One", + "antiallergy": "Anti alergias", + "anti_odours": "Anti-odor", + "auto_care": "Auto Care", + "baby": "Roupa de bebé", + "bed_quilt": "Colchas", + "care_30": "Cuidado 30", + "care_45": "Cuidado 45", + "care_59": "Cuidado 59", + "coloured": "Cores", + "daily_45_min": "DIARIO 45'", + "daily_perfect_59_min": "DIARIO PERFEITO 59'", + "darks_and_coloured": "Roupa escura e colorida", + "delicates": "Delicados", + "duvet": "Edredãos", + "eco": "Eco Algodão", + "ecospeed_cottons": "Velocidade eco algodões", + "ecospeed_delicates": "Ecospeed roupa delicada", + "ecospeed_mixed": "Velocidade eco mistos", + "extra_hygiene": "Higiene Extra", + "fitness": "Fitness", + "fresh_care": "Cuidado Fresco", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Toalhas", + "hqd_bed_sheets": "Lençóis", + "hqd_bulky": "Itens volumosos", + "hqd_casual": "Casual", + "hqd_cold_wind_30": "Brisa fresca durante 30 minutos", + "hqd_cold_wind_timing": "Brisa fresca ", + "hqd_cotton": "Algodão", + "hqd_curtain": "Cortinas", + "hqd_delicate": "Roupa delicada", + "hqd_diaper": "Fraldas", + "hqd_duvet": "Edredões", + "hqd_feather": "Blusões", + "hqd_hot_wind_timing": "Ar quente", + "hqd_hygienic": "Higienização", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Casacos", + "hqd_jeans": "Jeans", + "hqd_luxury": "Peças requintadas", + "hqd_mix": "Mistos", + "hqd_night_dry": "Secagem durante a noite", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Rápido 20", + "hqd_quick_30": "Rápido 30", + "hqd_quick_dry": "Secagem rápida 30", + "hqd_quilt": "Colchas", + "hqd_refresh": "Refrescar", + "hqd_school_uniform": "Farda da escola", + "hqd_shirt": "Camisas", + "hqd_shoes": "Calçado", + "hqd_silk": "Seda", + "hqd_sports": "Desporto", + "hqd_synthetics": "Sintéticos", + "hqd_timer": "Temporizado", + "hqd_towel": "Toalhas", + "hqd_underwear": "Roupa interior", + "hqd_warm_up": "Aquecer", + "hqd_wool": "Lãs", + "hqd_working_suit": "Roupa de trabalho", + "hygiene": "Higiene", + "iot_checkup": "Check-Up", + "iot_dry_anti_mites": "Anti-ácaros", + "iot_dry_baby": "Roupa de bebé", + "iot_dry_backpacks": "Mochilas", + "iot_dry_bathrobe": "Roupões", + "iot_dry_bed_linen": "Roupa de cama", + "iot_dry_bed_quilt": "Colchas", + "iot_dry_cotton": "Algodão", + "iot_dry_cuddly_toys": "Brinquedos macios", + "iot_dry_curtains": "Cortinas", + "iot_dry_dehumidifier": "Removedor de humidade", + "iot_dry_delicates": "Roupa delicada", + "iot_dry_delicate_tablecloths": "Roupa de mesa delicada", + "iot_dry_denim_jeans": "Ganga - Jeans", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Edredãos", + "iot_dry_easy_iron_cotton": "Engomar fácil", + "iot_dry_easy_iron_synthetics": "Engomar Super Fácil de Sintéticos", + "iot_dry_gym_fit": "Roupa de desporto - Fitness", + "iot_dry_lingerie": "Roupa interior", + "iot_dry_mixed": "Mistos", + "iot_dry_playsuits": "Macacões", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Rápido 59’.", + "iot_dry_refresh": "Refrescar", + "iot_dry_regenerates_waterproof": "Regeneração da Impermeabilização (?)", + "iot_dry_relax_creases": "Menos vincos", + "iot_dry_shirts": "Camisas", + "iot_dry_small_load": "Pequena carga", + "iot_dry_swimsuits_and_bikinis": "Fatos de banho", + "iot_dry_synthetics": "Sintéticos", + "iot_dry_synthetic_dry": "Secagem de Sintéticos", + "iot_dry_tablecloths": "Roupa de mesa", + "iot_dry_technical_fabrics": "Tecidos técnicos", + "iot_dry_warm_embrace": "Warm Embrace (?)", + "iot_dry_wool": "Woolmark", + "jeans": "Jeans", + "mix_and_dry": "Mix&Dry (Mista e Seca)", + "pets": "Animais de estimação", + "pre_iron": "Pré engomar", + "rapid_30": "Rapid 30", + "rapid_45": "Rápido 45 min", + "rapid_59": "Rápida Perfeita 59 min", + "refresh": "Refrescar", + "relax_creases": "Menos vincos", + "saving_30_min": "ECO 30'", + "shirts": "Camisas", + "shoes": "Calçado", + "small_load": "Pequena carga", + "soft_care": "Cuidado Suave", + "sport_plus": "Roupa desportiva", + "super_easy_iron_misti": "Engomar Super Fácil de mistos", + "super_easy_iron_xxl": "Engomar Super Fácil XXL", + "super_fast_cottons": "Algodões super rápido", + "super_fast_delicates": "Delicados super rápido", + "synthetics": "Sintéticos", + "total_care": "Total Care", + "trainers": "Ténis", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Revitalização da impermeabialização", + "whites": "Roupa branca", + "wool": "Secagem de lãs", + "woolmark": "Woolmark", + "xxl_load": "Carga XXL", + "zoom_59": "Zoom 59" + }, + "name": "Programa" + }, "programs_wm": { "state": { "20_degrees_coloured_cottons": "20° Cores e Algodões", @@ -556,7 +441,7 @@ "allergy_care_pro": "Cuidado Alergias Pro", "all_in_one_49": "Tudo em Um 49'.", "all_in_one_59": "Tudo em Um 59'.", - "all_in_one_59_steam": "Active Wash + Vapor", + "all_in_one_59_steam": "Tudo em Um 59' + Vapor", "autocare": "Cuidado automático", "autoclean": "Limpeza do tambor", "baby_60": "All Baby 60°C", @@ -622,7 +507,7 @@ "iot_active_steam": "Vapor", "iot_active_wash_steam": "Lavagem Ativa", "iot_allergy_care_pro": "Cuidado Alergias Pro", - "iot_all_in_one_59_steam": "Active Wash + Vapor", + "iot_all_in_one_59_steam": "Tudo em Um 59' + Vapor", "iot_checkup": "Check-Up", "iot_colour_59_steam": "Cores 59' + vapor", "iot_cottons_steam": "Algodão + Vapor", @@ -889,9 +774,148 @@ "sparkling": "Espumante", "white": "Branco" } + }, + "dry_time": { + "name": "Tempo de secagem" + }, + "power": { + "name": "Nível de potência" + }, + "remaining_time": { + "name": "Tempo restante" + }, + "temperature": { + "name": "Temperatura" + }, + "water_efficiency": { + "name": "Eficiência da água" + }, + "water_saving": { + "name": "Poupança de água" + }, + "duration": { + "name": "Duração" + }, + "target_temperature": { + "name": "Temperatura alvo" + }, + "spin_speed": { + "name": "Centrifugar" + }, + "steam_leve": { + "name": "Nível de vapor" + }, + "dirt_level": { + "name": "Nível de sujidade" + }, + "delay_time": { + "name": "Início adiado" + }, + "suggested_load": { + "name": "Capacidade de carga" + }, + "energy_label": { + "name": "Eficiência energética" + }, + "det_dust": { + "name": "Pó" + }, + "det_liquid": { + "name": "Líquido" + }, + "errors": { + "name": "Erro" + }, + "programs": { + "name": "Programa atual" + }, + "room_temperature": { + "name": "Temperatura ambiente" + }, + "humidity": { + "name": "Humidade" + }, + "cycles_total": { + "name": "Ciclos Total" + }, + "energy_total": { + "name": "Consumo de energia Total" + }, + "water_total": { + "name": "Eficiência da água Total" + }, + "energy_current": { + "name": "Consumo de energia Data" + }, + "water_current": { + "name": "Eficiência da água Data" + }, + "freezer_temp": { + "name": "Temperatura do congelador" + }, + "fridge_temp": { + "name": "Temperatura do frigorífico" } }, "select": { + "dry_levels": { + "state": { + "no_dry": "Sem secagem", + "iron_dry": "Engomar", + "no_dry_iron": "Guarda-Roupa pronto", + "cupboard_dry": "Guarda-Roupa pronto", + "extra_dry": "Extra seco", + "ready_to_wear": "Pronto a usar" + }, + "name": "Nível de secagem" + }, + "eco_pilot": { + "state": { + "touch_off": "Off", + "avoid_touch": "Evitar o toque", + "follow_touch": "Seguir" + }, + "name": "Eco pilot" + }, + "fan_mode": { + "state": { + "high": "Alta", + "mid": "Média ", + "low": "Baixa", + "auto": "Auto" + } + }, + "ref_zones": { + "state": { + "fridge": "Frigorífico", + "freezer": "Congelador", + "vtroom1": "My Zone", + "fridge_freezer": "Frigorífico & Congelador" + }, + "name": "Zona" + }, + "programs_ac": { + "state": { + "iot_10_heating": "Função de aquecimento de 10 °C", + "iot_auto": "Auto", + "iot_cool": "Frio", + "iot_dry": "Secar", + "iot_fan": "Ventilador", + "iot_heat": "Calor", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Autopurificação", + "iot_self_clean": "Autolimpeza", + "iot_self_clean_56": "Steri-Clean 56°C", + "iot_simple_start": "Iniciar agora", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Auto", + "iot_uv_and_cool": "UV + Frio", + "iot_uv_and_dry": "UV + Desumidificador", + "iot_uv_and_fan": "UV + Ventilação", + "iot_uv_and_heat": "UV + Calor" + }, + "name": "Programa" + }, "programs_dw": { "state": { "59_min": "Rápido 59'", @@ -1241,7 +1265,7 @@ "allergy_care_pro": "Cuidado Alergias Pro", "all_in_one_49": "Tudo em Um 49'.", "all_in_one_59": "Tudo em Um 59'.", - "all_in_one_59_steam": "Active Wash + Vapor", + "all_in_one_59_steam": "Tudo em Um 59' + Vapor", "autocare": "Cuidado automático", "autoclean": "Limpeza do tambor", "baby_60": "All Baby 60°C", @@ -1307,7 +1331,7 @@ "iot_active_steam": "Vapor", "iot_active_wash_steam": "Lavagem Ativa", "iot_allergy_care_pro": "Cuidado Alergias Pro", - "iot_all_in_one_59_steam": "Active Wash + Vapor", + "iot_all_in_one_59_steam": "Tudo em Um 59' + Vapor", "iot_checkup": "Check-Up", "iot_colour_59_steam": "Cores 59' + vapor", "iot_cottons_steam": "Algodão + Vapor", @@ -1540,69 +1564,6 @@ }, "name": "Programa" }, - "dry_levels": { - "state": { - "0": "Sem secagem", - "1": "Engomar", - "2": "Guarda-Roupa pronto", - "3": "Guarda-Roupa pronto", - "4": "Extra seco", - "12": "Engomar", - "13": "Guarda-Roupa pronto", - "14": "Pronto a usar", - "15": "Extra seco", - "11": "Sem secagem" - }, - "name": "Nível de secagem" - }, - "spin_speed": { - "name": "Centrifugar" - }, - "temperature": { - "name": "Temperatura" - }, - "dry_time": { - "name": "Tempo de secagem" - }, - "eco_pilot": { - "state": { - "0": "Off", - "1": "Evitar o toque", - "2": "Seguir" - }, - "name": "Eco pilot" - }, - "fan_mode": { - "state": { - "1": "Alta", - "2": "Média ", - "3": "Baixa", - "4": "Auto", - "5": "Auto" - } - }, - "programs_ac": { - "state": { - "iot_10_heating": "Função de aquecimento de 10 °C", - "iot_auto": "Auto", - "iot_cool": "Frio", - "iot_dry": "Secar", - "iot_fan": "Ventilador", - "iot_heat": "Calor", - "iot_nano_aqua": "Nano Aqua", - "iot_purify": "Autopurificação", - "iot_self_clean": "Autolimpeza", - "iot_self_clean_56": "Steri-Clean 56°C", - "iot_simple_start": "Iniciar agora", - "iot_uv": "UV", - "iot_uv_and_auto": "UV + Auto", - "iot_uv_and_cool": "UV + Frio", - "iot_uv_and_dry": "UV + Desumidificador", - "iot_uv_and_fan": "UV + Ventilação", - "iot_uv_and_heat": "UV + Calor" - }, - "name": "Programa" - }, "programs_ref": { "state": { "auto_set": "AUTO-SET", @@ -1626,17 +1587,17 @@ }, "name": "Programa" }, + "dry_time": { + "name": "Tempo de secagem" + }, + "spin_speed": { + "name": "Centrifugar" + }, + "temperature": { + "name": "Temperatura" + }, "remaining_time": { "name": "Tempo restante" - }, - "ref_zones": { - "state": { - "fridge": "Frigorífico", - "freezer": "Congelador", - "vtroom1": "My Zone", - "fridge_freezer": "Frigorífico & Congelador" - }, - "name": "Zona" } }, "switch": { @@ -1724,18 +1685,15 @@ "acqua_plus": { "name": "Acquaplus" }, - "auto_dose": { - "name": "Autodosagem" - }, - "good_night": { - "name": "Boa Noite" - }, "auto_dose_softener": { "name": "Autodosagem Amaciador" }, "auto_dose_detergent": { "name": "Autodosagem Detergente" }, + "good_night": { + "name": "Boa Noite" + }, "auto_set": { "name": "Ajuste automático" }, @@ -1768,27 +1726,12 @@ "anti_crease": { "name": "Anti-vincos" }, - "aqua_plus": { + "acqua_plus": { "name": "Acquaplus" }, "spin_speed": { "name": "Centrifugar" }, - "programs_dw": { - "name": "Programa" - }, - "programs_ih": { - "name": "Programa" - }, - "programs_ov": { - "name": "Programa" - }, - "programs_td": { - "name": "Programa" - }, - "programs_wm": { - "name": "Programa" - }, "still_hot": { "name": "Ainda quente" }, @@ -1819,12 +1762,6 @@ "prewash": { "name": "Pré-lavagem" }, - "acqua_plus": { - "name": "Acquaplus" - }, - "auto_dose": { - "name": "Autodosagem" - }, "buzzer": { "name": "Besouro de fim de ciclo" }, @@ -1850,6 +1787,17 @@ "name": "Substituição do filtro" } }, + "button": { + "induction_hob": { + "name": "Placa de indução" + }, + "start_program": { + "name": "Programa Início" + }, + "stop_program": { + "name": "Programa Parar" + } + }, "number": { "power_management": { "name": "Gestão de energia" @@ -1888,17 +1836,6 @@ "name": "Temperatura alvo Frigorífico" } }, - "button": { - "induction_hob": { - "name": "Placa de indução" - }, - "start_program": { - "name": "Programa Início" - }, - "stop_program": { - "name": "Programa Parar" - } - }, "climate": { "air_conditioner": { "name": "Ar Condicionado" diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index 777e15f..b650ab2 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -3,325 +3,73 @@ "sensor": { "washing_modes": { "state": { - "0": "Pregătit", - "1": "Pregătit", - "3": "Pauză", - "4": "Programat", - "5": "Programat", - "6": "Eroare", - "7": "Pregătit", - "2": "Program în desfășurare", - "8": "Test", - "9": "Ciclul de oprire..." + "ready": "Pregătit", + "running": "Program în desfășurare", + "pause": "Pauză", + "scheduled": "Programat", + "error": "Eroare", + "test": "Test", + "ending": "Ciclul de oprire..." + } + }, + "mach_modes_ac": { + "state": { + "auto": "Automat", + "cool": "Răcire", + "dry": "Uscare", + "heat": "Încălzire", + "fan": "Ventilare" } }, "program_phases_wm": { "state": { - "0": "Pregătit", - "1": "Spălare", - "2": "Spălare", - "3": "Stoarcere", - "4": "Clătire", - "5": "Clătire", - "6": "Clătire", - "7": "Uscare", - "9": "Abur", - "10": "Pregătit", - "11": "Stoarcere", - "12": "Cântărire ", - "13": "Cântărire ", - "14": "Spălare", - "15": "Spălare", - "16": "Spălare", - "17": "Clătire", - "18": "Clătire", - "19": "Programat", - "20": "Menținere prospețime", - "24": "Reîmprospătare", - "25": "Spălare", - "26": "Încălzire", - "27": "Spălare" + "ready": "Pregătit", + "spin": "Stoarcere", + "rinse": "Clătire", + "drying": "Uscare", + "steam": "Abur", + "weighting": "Cântărire ", + "scheduled": "Programat", + "tumbling": "Menținere prospețime", + "refresh": "Reîmprospătare", + "heating": "Încălzire", + "washing": "Spălare" }, "name": "Fază" }, "program_phases_td": { "state": { - "0": "Pregătit", - "1": "Uscare", - "2": "Uscare", - "3": "Răcire", - "13": "Răcire", - "14": "Uscare", - "15": "Uscare", - "16": "Răcire", - "18": "Menținere prospețime", - "19": "Uscare", - "20": "Uscare", - "11": "Pregătit", - "17": "unknown", - "12": "unknown" + "ready": "Pregătit", + "heat_stroke": "Uscare", + "drying": "Uscare", + "cooldown": "Răcire", + "unknown": "unknown", + "tumbling": "Menținere prospețime" }, "name": "Fază" }, "program_phases_dw": { "state": { - "0": "Pregătit", - "1": "Prespălare", - "2": "Spălare", - "3": "Clătire", - "4": "Uscare", - "5": "Pregătit", - "6": "Hot rinse" + "ready": "Pregătit", + "prewash": "Prespălare", + "washing": "Spălare", + "rinse": "Clătire", + "drying": "Uscare", + "hot_rinse": "Hot rinse" }, "name": "Fază" }, "dry_levels": { "state": { - "0": "Fără uscare", - "1": "Călcare", - "2": "Șifonier pregătit", - "3": "Șifonier pregătit", - "4": "Uscare suplimentară", - "12": "Călcare", - "13": "Șifonier pregătit", - "14": "Gata de purtat", - "15": "Uscare suplimentară", - "11": "Fără uscare" + "no_dry": "Fără uscare", + "iron_dry": "Călcare", + "no_dry_iron": "Șifonier pregătit", + "cupboard_dry": "Șifonier pregătit", + "extra_dry": "Uscare suplimentară", + "ready_to_wear": "Gata de purtat" }, "name": "Nivel de uscare" }, - "anti_crease": { - "name": "Antișifonare" - }, - "power": { - "name": "Nivel de putere" - }, - "remaining_time": { - "name": "Timp rămas" - }, - "temperature": { - "name": "Temperatură" - }, - "water_efficiency": { - "name": "Eficiența apei" - }, - "water_saving": { - "name": "Economii de apă" - }, - "duration": { - "name": "Durată" - }, - "target_temperature": { - "name": "Temperatură vizată" - }, - "spin_speed": { - "name": "Stoarcere" - }, - "steam_leve": { - "name": "Nivel abur" - }, - "dirt_level": { - "name": "Nivel de murdărie" - }, - "delay_time": { - "name": "Pornire întârziată" - }, - "dry_time": { - "name": "Timp de uscare" - }, - "suggested_load": { - "name": "Capacitate de încărcare" - }, - "energy_label": { - "name": "Eficiență energetică" - }, - "det_dust": { - "name": "Pudră" - }, - "det_liquid": { - "name": "Lichid" - }, - "errors": { - "name": "Eroare" - }, - "programs": { - "name": "Program actual" - }, - "cycles_total": { - "name": "Cicluri Total" - }, - "energy_total": { - "name": "Consumul de energie Total" - }, - "water_total": { - "name": "Eficiența apei Total" - }, - "energy_current": { - "name": "Consumul de energie Current" - }, - "water_current": { - "name": "Eficiența apei Current" - }, - "mach_modes_ac": { - "state": { - "0": "Automat", - "1": "Răcire", - "2": "Răcire", - "3": "Uscare", - "4": "Încălzire", - "5": "Ventilare", - "6": "Ventilare" - } - }, - "programs_td": { - "state": { - "active_dry": "Uscare activă", - "allergy_care": "Anti-alergic", - "all_in_one": "Tot în unu", - "antiallergy": "Anti-alergic", - "anti_odours": "Anti mirosuri", - "auto_care": "Îngrijire automată", - "baby": "Haine copii", - "bed_quilt": "Pilote", - "care_30": "Îngrijire 30", - "care_45": "Îngrijire 45", - "care_59": "Îngrijire 59", - "coloured": "Colorate", - "daily_45_min": "ZILNIC 45'", - "daily_perfect_59_min": "ZILNIC PERFECT 59'", - "darks_and_coloured": "Țesături închise & colorate", - "delicates": "Delicate", - "duvet": "Pătură", - "eco": "Bumbac Eco", - "ecospeed_cottons": "Bumbac Ecospeed", - "ecospeed_delicates": "Delicate Ecospeed", - "ecospeed_mixed": "Țesături mixte Ecospeed", - "extra_hygiene": "EXTRA IGIENIZARE", - "fitness": "Fitness", - "fresh_care": "Îngrijire proaspătă", - "genius": "Genius", - "hqd_baby_care": "Baby Care", - "hqd_bath_towel": "Prosoape", - "hqd_bed_sheets": "Cearceafuri", - "hqd_bulky": "Articole voluminoase", - "hqd_casual": "Articole obișnuite", - "hqd_cold_wind_30": "Vânt rece 30 minute", - "hqd_cold_wind_timing": "Vânt rece ", - "hqd_cotton": "Bumbac", - "hqd_curtain": "Perdele", - "hqd_delicate": "Delicate", - "hqd_diaper": "Scutece", - "hqd_duvet": "Cuvertură", - "hqd_feather": "Geci", - "hqd_hot_wind_timing": "Aer cald", - "hqd_hygienic": "Igienizare", - "hqd_i_refresh": "I-Refresh", - "hqd_i_refresh_pro": "I-Refresh Pro", - "hqd_jacket": "Jachete", - "hqd_jeans": "Blugi", - "hqd_luxury": "Luxury", - "hqd_mix": "Mixte", - "hqd_night_dry": "Uscare peste noapte", - "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", - "hqd_quick_20": "Rapid 20", - "hqd_quick_30": "Rapid 30", - "hqd_quick_dry": "Uscare rapidă 30", - "hqd_quilt": "Pilote", - "hqd_refresh": "Reîmprospătare", - "hqd_school_uniform": "Uniformă școlară", - "hqd_shirt": "Cămăși", - "hqd_shoes": "Încălțăminte", - "hqd_silk": "Mătase", - "hqd_sports": "Articole sportive", - "hqd_synthetics": "Sintetice", - "hqd_timer": "Cronometrat", - "hqd_towel": "Prosoape", - "hqd_underwear": "Lenjerie", - "hqd_warm_up": "Încălzire", - "hqd_wool": "Lână", - "hqd_working_suit": "Îmbrăcăminte de lucru", - "hygiene": "Igienizare", - "iot_checkup": "Verificare", - "iot_dry_anti_mites": "Anti-acarieni", - "iot_dry_baby": "Haine copii", - "iot_dry_backpacks": "Rucsaci", - "iot_dry_bathrobe": "Halat de baie", - "iot_dry_bed_linen": "Lenjerie de pat", - "iot_dry_bed_quilt": "Pilote", - "iot_dry_cotton": "Bumbac", - "iot_dry_cuddly_toys": "Jucării", - "iot_dry_curtains": "Perdele", - "iot_dry_dehumidifier": "Dispozitiv pentru îndepărtarea umidității", - "iot_dry_delicates": "Delicate", - "iot_dry_delicate_tablecloths": "Fețe de masă delicate", - "iot_dry_denim_jeans": "Denim - Blugi", - "iot_dry_down_jacket": "Jacket", - "iot_dry_duvet": "Pătură", - "iot_dry_easy_iron_cotton": "Călcare Super Easy", - "iot_dry_easy_iron_synthetics": "Călcare super ușoară a rufelor sintetice", - "iot_dry_gym_fit": "Articole sportive - Fitness", - "iot_dry_lingerie": "Lenjerie", - "iot_dry_mixed": "Mixte", - "iot_dry_playsuits": "Haine de joacă", - "iot_dry_rapid_30": "Rapid 30", - "iot_dry_rapid_59": "Rapid 59'.", - "iot_dry_refresh": "Reîmprospătare", - "iot_dry_regenerates_waterproof": "Rezistente la apă", - "iot_dry_relax_creases": "Reducere șifonare", - "iot_dry_shirts": "Cămăși", - "iot_dry_small_load": "Încărcare mică", - "iot_dry_swimsuits_and_bikinis": "Costume de baie", - "iot_dry_synthetics": "Sintetice", - "iot_dry_synthetic_dry": "Uscare material sintetic", - "iot_dry_tablecloths": "Fețe de masă", - "iot_dry_technical_fabrics": "Țesături industriale", - "iot_dry_warm_embrace": "Îmbrățișare caldă", - "iot_dry_wool": "Woolmark", - "jeans": "Jeans", - "mix_and_dry": "Mix&Uscare", - "pets": "Animale de companie", - "pre_iron": "Pre-Călcare", - "rapid_30": "Rapid 30", - "rapid_45": "Rapid 45 min", - "rapid_59": "Rapid Perfect 59 Min", - "refresh": "Reîmprospătare", - "relax_creases": "Reducere șifonare", - "saving_30_min": "ECO 30'", - "shirts": "Cămăși", - "shoes": "Încălțăminte", - "small_load": "Încărcare mică", - "soft_care": "Îngrijire blândă", - "sport_plus": "Haine sport", - "super_easy_iron_misti": "Călcare super ușoară a rufelor cu fibre mixte", - "super_easy_iron_xxl": "Călcare super ușoară a rufelor XXL", - "super_fast_cottons": "Bumbac Super Rapid", - "super_fast_delicates": "Delicate Super Rapid", - "synthetics": "Sintetice", - "total_care": "Total Care", - "trainers": "Încălțăminte sport", - "ultra_care": "Ultra Care", - "waterproof_revitalize": "Revitalizare impermeabile", - "whites": "Albe", - "wool": "Uscare lână", - "woolmark": "Woolmark", - "xxl_load": "Încărcare XXL", - "zoom_59": "Zoom 59" - }, - "name": "Program" - }, - "room_temperature": { - "name": "Temperatura camerei" - }, - "humidity": { - "name": "Umiditate" - }, - "freezer_temp": { - "name": "Temperatura congelatorului" - }, - "fridge_temp": { - "name": "Temperatura frigiderului" - }, "programs_ac": { "state": { "iot_10_heating": "Funcția de încălzire la 10 °C", @@ -545,6 +293,143 @@ }, "name": "Program" }, + "programs_td": { + "state": { + "active_dry": "Uscare activă", + "allergy_care": "Anti-alergic", + "all_in_one": "Tot în unu", + "antiallergy": "Anti-alergic", + "anti_odours": "Anti mirosuri", + "auto_care": "Îngrijire automată", + "baby": "Haine copii", + "bed_quilt": "Pilote", + "care_30": "Îngrijire 30", + "care_45": "Îngrijire 45", + "care_59": "Îngrijire 59", + "coloured": "Colorate", + "daily_45_min": "ZILNIC 45'", + "daily_perfect_59_min": "ZILNIC PERFECT 59'", + "darks_and_coloured": "Țesături închise & colorate", + "delicates": "Delicate", + "duvet": "Pătură", + "eco": "Bumbac Eco", + "ecospeed_cottons": "Bumbac Ecospeed", + "ecospeed_delicates": "Delicate Ecospeed", + "ecospeed_mixed": "Țesături mixte Ecospeed", + "extra_hygiene": "EXTRA IGIENIZARE", + "fitness": "Fitness", + "fresh_care": "Îngrijire proaspătă", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Prosoape", + "hqd_bed_sheets": "Cearceafuri", + "hqd_bulky": "Articole voluminoase", + "hqd_casual": "Articole obișnuite", + "hqd_cold_wind_30": "Vânt rece 30 minute", + "hqd_cold_wind_timing": "Vânt rece ", + "hqd_cotton": "Bumbac", + "hqd_curtain": "Perdele", + "hqd_delicate": "Delicate", + "hqd_diaper": "Scutece", + "hqd_duvet": "Cuvertură", + "hqd_feather": "Geci", + "hqd_hot_wind_timing": "Aer cald", + "hqd_hygienic": "Igienizare", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Jachete", + "hqd_jeans": "Blugi", + "hqd_luxury": "Luxury", + "hqd_mix": "Mixte", + "hqd_night_dry": "Uscare peste noapte", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Rapid 20", + "hqd_quick_30": "Rapid 30", + "hqd_quick_dry": "Uscare rapidă 30", + "hqd_quilt": "Pilote", + "hqd_refresh": "Reîmprospătare", + "hqd_school_uniform": "Uniformă școlară", + "hqd_shirt": "Cămăși", + "hqd_shoes": "Încălțăminte", + "hqd_silk": "Mătase", + "hqd_sports": "Articole sportive", + "hqd_synthetics": "Sintetice", + "hqd_timer": "Cronometrat", + "hqd_towel": "Prosoape", + "hqd_underwear": "Lenjerie", + "hqd_warm_up": "Încălzire", + "hqd_wool": "Lână", + "hqd_working_suit": "Îmbrăcăminte de lucru", + "hygiene": "Igienizare", + "iot_checkup": "Verificare", + "iot_dry_anti_mites": "Anti-acarieni", + "iot_dry_baby": "Haine copii", + "iot_dry_backpacks": "Rucsaci", + "iot_dry_bathrobe": "Halat de baie", + "iot_dry_bed_linen": "Lenjerie de pat", + "iot_dry_bed_quilt": "Pilote", + "iot_dry_cotton": "Bumbac", + "iot_dry_cuddly_toys": "Jucării", + "iot_dry_curtains": "Perdele", + "iot_dry_dehumidifier": "Dispozitiv pentru îndepărtarea umidității", + "iot_dry_delicates": "Delicate", + "iot_dry_delicate_tablecloths": "Fețe de masă delicate", + "iot_dry_denim_jeans": "Denim - Blugi", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Pătură", + "iot_dry_easy_iron_cotton": "Călcare Super Easy", + "iot_dry_easy_iron_synthetics": "Călcare super ușoară a rufelor sintetice", + "iot_dry_gym_fit": "Articole sportive - Fitness", + "iot_dry_lingerie": "Lenjerie", + "iot_dry_mixed": "Mixte", + "iot_dry_playsuits": "Haine de joacă", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Rapid 59'.", + "iot_dry_refresh": "Reîmprospătare", + "iot_dry_regenerates_waterproof": "Rezistente la apă", + "iot_dry_relax_creases": "Reducere șifonare", + "iot_dry_shirts": "Cămăși", + "iot_dry_small_load": "Încărcare mică", + "iot_dry_swimsuits_and_bikinis": "Costume de baie", + "iot_dry_synthetics": "Sintetice", + "iot_dry_synthetic_dry": "Uscare material sintetic", + "iot_dry_tablecloths": "Fețe de masă", + "iot_dry_technical_fabrics": "Țesături industriale", + "iot_dry_warm_embrace": "Îmbrățișare caldă", + "iot_dry_wool": "Woolmark", + "jeans": "Jeans", + "mix_and_dry": "Mix&Uscare", + "pets": "Animale de companie", + "pre_iron": "Pre-Călcare", + "rapid_30": "Rapid 30", + "rapid_45": "Rapid 45 min", + "rapid_59": "Rapid Perfect 59 Min", + "refresh": "Reîmprospătare", + "relax_creases": "Reducere șifonare", + "saving_30_min": "ECO 30'", + "shirts": "Cămăși", + "shoes": "Încălțăminte", + "small_load": "Încărcare mică", + "soft_care": "Îngrijire blândă", + "sport_plus": "Haine sport", + "super_easy_iron_misti": "Călcare super ușoară a rufelor cu fibre mixte", + "super_easy_iron_xxl": "Călcare super ușoară a rufelor XXL", + "super_fast_cottons": "Bumbac Super Rapid", + "super_fast_delicates": "Delicate Super Rapid", + "synthetics": "Sintetice", + "total_care": "Total Care", + "trainers": "Încălțăminte sport", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Revitalizare impermeabile", + "whites": "Albe", + "wool": "Uscare lână", + "woolmark": "Woolmark", + "xxl_load": "Încărcare XXL", + "zoom_59": "Zoom 59" + }, + "name": "Program" + }, "programs_wm": { "state": { "20_degrees_coloured_cottons": "20° Colorate și bumbac", @@ -556,7 +441,7 @@ "allergy_care_pro": "Îngrijire alergie pro", "all_in_one_49": "Toate în One 49'.", "all_in_one_59": "Toate în One 59'.", - "all_in_one_59_steam": "Spălare activă + abur", + "all_in_one_59_steam": "Toate în One 59' + abur", "autocare": "Autoîngrijire", "autoclean": "Curățarea tamburului", "baby_60": "Haine bebeluși 60°C", @@ -622,7 +507,7 @@ "iot_active_steam": "Abur", "iot_active_wash_steam": "Spălare activă", "iot_allergy_care_pro": "Îngrijire alergie pro", - "iot_all_in_one_59_steam": "Spălare activă + abur", + "iot_all_in_one_59_steam": "Toate în One 59' + abur", "iot_checkup": "Verificare", "iot_colour_59_steam": "Colorate 59' + Abur", "iot_cottons_steam": "Bumbac + Abur", @@ -889,9 +774,148 @@ "sparkling": "Spumant", "white": "Alb" } + }, + "dry_time": { + "name": "Timp de uscare" + }, + "power": { + "name": "Nivel de putere" + }, + "remaining_time": { + "name": "Timp rămas" + }, + "temperature": { + "name": "Temperatură" + }, + "water_efficiency": { + "name": "Eficiența apei" + }, + "water_saving": { + "name": "Economii de apă" + }, + "duration": { + "name": "Durată" + }, + "target_temperature": { + "name": "Temperatură vizată" + }, + "spin_speed": { + "name": "Stoarcere" + }, + "steam_leve": { + "name": "Nivel abur" + }, + "dirt_level": { + "name": "Nivel de murdărie" + }, + "delay_time": { + "name": "Pornire întârziată" + }, + "suggested_load": { + "name": "Capacitate de încărcare" + }, + "energy_label": { + "name": "Eficiență energetică" + }, + "det_dust": { + "name": "Pudră" + }, + "det_liquid": { + "name": "Lichid" + }, + "errors": { + "name": "Eroare" + }, + "programs": { + "name": "Program actual" + }, + "room_temperature": { + "name": "Temperatura camerei" + }, + "humidity": { + "name": "Umiditate" + }, + "cycles_total": { + "name": "Cicluri Total" + }, + "energy_total": { + "name": "Consumul de energie Total" + }, + "water_total": { + "name": "Eficiența apei Total" + }, + "energy_current": { + "name": "Consumul de energie Current" + }, + "water_current": { + "name": "Eficiența apei Current" + }, + "freezer_temp": { + "name": "Temperatura congelatorului" + }, + "fridge_temp": { + "name": "Temperatura frigiderului" } }, "select": { + "dry_levels": { + "state": { + "no_dry": "Fără uscare", + "iron_dry": "Călcare", + "no_dry_iron": "Șifonier pregătit", + "cupboard_dry": "Șifonier pregătit", + "extra_dry": "Uscare suplimentară", + "ready_to_wear": "Gata de purtat" + }, + "name": "Nivel de uscare" + }, + "eco_pilot": { + "state": { + "touch_off": "Oprit", + "avoid_touch": "Evitați atingerea", + "follow_touch": "Urmărire" + }, + "name": "Eco pilot" + }, + "fan_mode": { + "state": { + "high": "Ridicat", + "mid": "Mediu ", + "low": "Scăzut", + "auto": "Automat" + } + }, + "ref_zones": { + "state": { + "fridge": "Frigider", + "freezer": "Congelator", + "vtroom1": "My Zone", + "fridge_freezer": "Frigider & Congelator" + }, + "name": "Zonă" + }, + "programs_ac": { + "state": { + "iot_10_heating": "Funcția de încălzire la 10 °C", + "iot_auto": "Automat", + "iot_cool": "Răcire", + "iot_dry": "Uscare", + "iot_fan": "Ventilare", + "iot_heat": "Încălzire", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Auto-purificare", + "iot_self_clean": "Autocurățare", + "iot_self_clean_56": "Curățare-sterilizare la 56°C", + "iot_simple_start": "Începeți acum", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + automat", + "iot_uv_and_cool": "UV + răcire", + "iot_uv_and_dry": "UV + dezumidificator", + "iot_uv_and_fan": "UV + ventilator", + "iot_uv_and_heat": "UV + încălzire" + }, + "name": "Program" + }, "programs_dw": { "state": { "59_min": "Rapid 59'", @@ -1241,7 +1265,7 @@ "allergy_care_pro": "Îngrijire alergie pro", "all_in_one_49": "Toate în One 49'.", "all_in_one_59": "Toate în One 59'.", - "all_in_one_59_steam": "Spălare activă + abur", + "all_in_one_59_steam": "Toate în One 59' + abur", "autocare": "Autoîngrijire", "autoclean": "Curățarea tamburului", "baby_60": "Haine bebeluși 60°C", @@ -1307,7 +1331,7 @@ "iot_active_steam": "Abur", "iot_active_wash_steam": "Spălare activă", "iot_allergy_care_pro": "Îngrijire alergie pro", - "iot_all_in_one_59_steam": "Spălare activă + abur", + "iot_all_in_one_59_steam": "Toate în One 59' + abur", "iot_checkup": "Verificare", "iot_colour_59_steam": "Colorate 59' + Abur", "iot_cottons_steam": "Bumbac + Abur", @@ -1540,69 +1564,6 @@ }, "name": "Program" }, - "dry_levels": { - "state": { - "0": "Fără uscare", - "1": "Călcare", - "2": "Șifonier pregătit", - "3": "Șifonier pregătit", - "4": "Uscare suplimentară", - "12": "Călcare", - "13": "Șifonier pregătit", - "14": "Gata de purtat", - "15": "Uscare suplimentară", - "11": "Fără uscare" - }, - "name": "Nivel de uscare" - }, - "spin_speed": { - "name": "Stoarcere" - }, - "temperature": { - "name": "Temperatură" - }, - "dry_time": { - "name": "Timp de uscare" - }, - "eco_pilot": { - "state": { - "0": "Oprit", - "1": "Evitați atingerea", - "2": "Urmărire" - }, - "name": "Eco pilot" - }, - "fan_mode": { - "state": { - "1": "Ridicat", - "2": "Mediu ", - "3": "Scăzut", - "4": "Automat", - "5": "Automat" - } - }, - "programs_ac": { - "state": { - "iot_10_heating": "Funcția de încălzire la 10 °C", - "iot_auto": "Automat", - "iot_cool": "Răcire", - "iot_dry": "Uscare", - "iot_fan": "Ventilare", - "iot_heat": "Încălzire", - "iot_nano_aqua": "Nano Aqua", - "iot_purify": "Auto-purificare", - "iot_self_clean": "Autocurățare", - "iot_self_clean_56": "Curățare-sterilizare la 56°C", - "iot_simple_start": "Începeți acum", - "iot_uv": "UV", - "iot_uv_and_auto": "UV + automat", - "iot_uv_and_cool": "UV + răcire", - "iot_uv_and_dry": "UV + dezumidificator", - "iot_uv_and_fan": "UV + ventilator", - "iot_uv_and_heat": "UV + încălzire" - }, - "name": "Program" - }, "programs_ref": { "state": { "auto_set": "AUTO-SET (Setare automată)", @@ -1626,17 +1587,17 @@ }, "name": "Program" }, + "dry_time": { + "name": "Timp de uscare" + }, + "spin_speed": { + "name": "Stoarcere" + }, + "temperature": { + "name": "Temperatură" + }, "remaining_time": { "name": "Timp rămas" - }, - "ref_zones": { - "state": { - "fridge": "Frigider", - "freezer": "Congelator", - "vtroom1": "My Zone", - "fridge_freezer": "Frigider & Congelator" - }, - "name": "Zonă" } }, "switch": { @@ -1724,18 +1685,15 @@ "acqua_plus": { "name": "Acquaplus" }, - "auto_dose": { - "name": "Autodozare" - }, - "good_night": { - "name": "Noapte bună" - }, "auto_dose_softener": { "name": "Autodozare Balsam" }, "auto_dose_detergent": { "name": "Autodozare Detergent" }, + "good_night": { + "name": "Noapte bună" + }, "auto_set": { "name": "Setare automată" }, @@ -1768,27 +1726,12 @@ "anti_crease": { "name": "Antișifonare" }, - "aqua_plus": { + "acqua_plus": { "name": "Acquaplus" }, "spin_speed": { "name": "Stoarcere" }, - "programs_dw": { - "name": "Program" - }, - "programs_ih": { - "name": "Program" - }, - "programs_ov": { - "name": "Program" - }, - "programs_td": { - "name": "Program" - }, - "programs_wm": { - "name": "Program" - }, "still_hot": { "name": "Încă fierbinte" }, @@ -1819,12 +1762,6 @@ "prewash": { "name": "Prespălare" }, - "acqua_plus": { - "name": "Acquaplus" - }, - "auto_dose": { - "name": "Autodozare" - }, "buzzer": { "name": "Sonerie la finalul ciclului" }, @@ -1850,6 +1787,17 @@ "name": "Înlocuirea filtrului" } }, + "button": { + "induction_hob": { + "name": "Plita cu inducție" + }, + "start_program": { + "name": "Program Pornire" + }, + "stop_program": { + "name": "Program Oprire" + } + }, "number": { "power_management": { "name": "Administrarea puterii" @@ -1888,17 +1836,6 @@ "name": "Temperatură vizată Frigider" } }, - "button": { - "induction_hob": { - "name": "Plita cu inducție" - }, - "start_program": { - "name": "Program Pornire" - }, - "stop_program": { - "name": "Program Oprire" - } - }, "climate": { "air_conditioner": { "name": "Aer condiționat" diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index d37f928..b688ad0 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -3,325 +3,73 @@ "sensor": { "washing_modes": { "state": { - "0": "Готово", - "1": "Готово", - "3": "Пауза", - "4": "Запланировано", - "5": "Запланировано", - "6": "Ошибка", - "7": "Готово", - "2": "Выполнение программы", - "8": "Test", - "9": "Остановка цикла..." + "ready": "Готово", + "running": "Выполнение программы", + "pause": "Пауза", + "scheduled": "Запланировано", + "error": "Ошибка", + "test": "Test", + "ending": "Остановка цикла..." + } + }, + "mach_modes_ac": { + "state": { + "auto": "Авто", + "cool": "Охлаждение", + "dry": "Сушка", + "heat": "Нагрев", + "fan": "Вентилятор" } }, "program_phases_wm": { "state": { - "0": "Готово", - "1": "Стирка", - "2": "Стирка", - "3": "Отжим", - "4": "Полоскание", - "5": "Полоскание", - "6": "Полоскание", - "7": "Сушка", - "9": "Пар", - "10": "Готово", - "11": "Отжим", - "12": "Взвешивание ", - "13": "Взвешивание ", - "14": "Стирка", - "15": "Стирка", - "16": "Стирка", - "17": "Полоскание", - "18": "Полоскание", - "19": "Запланировано", - "20": "Сохранение свежести", - "24": "Освежить", - "25": "Стирка", - "26": "Нагрев", - "27": "Стирка" + "ready": "Готово", + "spin": "Отжим", + "rinse": "Полоскание", + "drying": "Сушка", + "steam": "Пар", + "weighting": "Взвешивание ", + "scheduled": "Запланировано", + "tumbling": "Сохранение свежести", + "refresh": "Освежить", + "heating": "Нагрев", + "washing": "Стирка" }, "name": "Фаза" }, "program_phases_td": { "state": { - "0": "Готово", - "1": "Сушка", - "2": "Сушка", - "3": "Охлаждение", - "13": "Охлаждение", - "14": "Сушка", - "15": "Сушка", - "16": "Охлаждение", - "18": "Keep Fresh (Сохранение свежести)", - "19": "Сушка", - "20": "Сушка", - "11": "Готово", - "17": "unknown", - "12": "unknown" + "ready": "Готово", + "heat_stroke": "Сушка", + "drying": "Сушка", + "cooldown": "Охлаждение", + "unknown": "unknown", + "tumbling": "Keep Fresh (Сохранение свежести)" }, "name": "Фаза" }, "program_phases_dw": { "state": { - "0": "Готово", - "1": "Предварительная мойка", - "2": "Стирка", - "3": "Полоскание", - "4": "Сушка", - "5": "Готово", - "6": "Hot rinse" + "ready": "Готово", + "prewash": "Предварительная мойка", + "washing": "Стирка", + "rinse": "Полоскание", + "drying": "Сушка", + "hot_rinse": "Hot rinse" }, "name": "Фаза" }, "dry_levels": { "state": { - "0": "Без сушки", - "1": "Под утюг", - "2": "В шкаф", - "3": "Готово в шкаф", - "4": "Экстра сушка", - "12": "Под утюг", - "13": "Готово в шкаф", - "14": "Готово для надевания", - "15": "Экстра сушка", - "11": "Без сушки" + "no_dry": "Без сушки", + "iron_dry": "Под утюг", + "no_dry_iron": "В шкаф", + "cupboard_dry": "Готово в шкаф", + "extra_dry": "Экстра сушка", + "ready_to_wear": "Готово для надевания" }, "name": "Уровень сухости" }, - "anti_crease": { - "name": "Противосминание" - }, - "power": { - "name": "Уровень мощности" - }, - "remaining_time": { - "name": "Оставшееся время" - }, - "temperature": { - "name": "Температура" - }, - "water_efficiency": { - "name": "Эффективность расхода воды" - }, - "water_saving": { - "name": "Экономия воды" - }, - "duration": { - "name": "Длительность" - }, - "target_temperature": { - "name": "Заданная температура" - }, - "spin_speed": { - "name": "Отжим" - }, - "steam_leve": { - "name": "Уровень пара" - }, - "dirt_level": { - "name": "Уровень загрязнения" - }, - "delay_time": { - "name": "Отложенный пуск" - }, - "dry_time": { - "name": "Время сушки" - }, - "suggested_load": { - "name": "Допустимая загрузка" - }, - "energy_label": { - "name": "Энергоэффективность" - }, - "det_dust": { - "name": "Стиральный порошок" - }, - "det_liquid": { - "name": "Жидкое средство" - }, - "errors": { - "name": "Ошибка" - }, - "programs": { - "name": "Текущая программа" - }, - "cycles_total": { - "name": "Циклы Итого" - }, - "energy_total": { - "name": "Потребление энергии Итого" - }, - "water_total": { - "name": "Эффективность расхода воды Итого" - }, - "energy_current": { - "name": "Потребление энергии Текущий" - }, - "water_current": { - "name": "Эффективность расхода воды Текущий" - }, - "mach_modes_ac": { - "state": { - "0": "Авто", - "1": "Охлаждение", - "2": "Охлаждение", - "3": "Сушка", - "4": "Нагрев", - "5": "Вентилятор", - "6": "Вентилятор" - } - }, - "programs_td": { - "state": { - "active_dry": "Активная сушка", - "allergy_care": "Противоаллергическое действие", - "all_in_one": "Все в одном", - "antiallergy": "Противоаллергическое действие", - "anti_odours": "Против запаха", - "auto_care": "Автоуход", - "baby": "Детская одежда", - "bed_quilt": "Стеганые и пуховые одеяла", - "care_30": "Уход 30", - "care_45": "Уход 45", - "care_59": "Уход 59", - "coloured": "цветные", - "daily_45_min": "ЕЖЕДНЕВНАЯ 45'", - "daily_perfect_59_min": "ЕЖЕДНЕВНАЯ ИДЕАЛЬНАЯ 59'", - "darks_and_coloured": "Темные и Цветные", - "delicates": "Деликатные", - "duvet": "Пуховое одеяло", - "eco": "Эко хлопок", - "ecospeed_cottons": "Эко скорость хлопок", - "ecospeed_delicates": "Эко скорость деликатные", - "ecospeed_mixed": "Эко скорость смешанные", - "extra_hygiene": "ЭКСТРА ГИГИЕНА", - "fitness": "Фитнес", - "fresh_care": "Свежесть", - "genius": "Genius", - "hqd_baby_care": "Baby Care", - "hqd_bath_towel": "Полотенца", - "hqd_bed_sheets": "Простыни", - "hqd_bulky": "Объемные изделия", - "hqd_casual": "Повседневная одежда", - "hqd_cold_wind_30": "Прохладный обдув 30 минут", - "hqd_cold_wind_timing": "Прохладный обдув ", - "hqd_cotton": "Хлопок", - "hqd_curtain": "Шторы", - "hqd_delicate": "Деликатные вещи", - "hqd_diaper": "Пеленки", - "hqd_duvet": "Пуховое одеяло", - "hqd_feather": "Пуховики", - "hqd_hot_wind_timing": "Горячий воздух", - "hqd_hygienic": "Санитарная обработка", - "hqd_i_refresh": "I-Refresh", - "hqd_i_refresh_pro": "I-Refresh Pro", - "hqd_jacket": "Куртки", - "hqd_jeans": "Джинсы", - "hqd_luxury": "Люксовые изделия", - "hqd_mix": "Смешанные ткани", - "hqd_night_dry": "Ночная сушка", - "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", - "hqd_quick_20": "Быстрая 20", - "hqd_quick_30": "Быстрая 30", - "hqd_quick_dry": "Быстрая сушка 30", - "hqd_quilt": "Стеганые одеяла", - "hqd_refresh": "Освежение", - "hqd_school_uniform": "Школьная форма", - "hqd_shirt": "Рубашки", - "hqd_shoes": "Обувь", - "hqd_silk": "Шелк", - "hqd_sports": "Спортивная одежда", - "hqd_synthetics": "Синтетика", - "hqd_timer": "Timed", - "hqd_towel": "Полотенца", - "hqd_underwear": "Нижнее белье", - "hqd_warm_up": "Подогрев", - "hqd_wool": "Шерсть", - "hqd_working_suit": "Рабочая одежда", - "hygiene": "Гигиена", - "iot_checkup": "Проверка", - "iot_dry_anti_mites": "Противоклещевая обработка", - "iot_dry_baby": "Детская одежда", - "iot_dry_backpacks": "Рюкзаки", - "iot_dry_bathrobe": "Банные халаты", - "iot_dry_bed_linen": "Постельное белье", - "iot_dry_bed_quilt": "Стеганые и пуховые одеяла", - "iot_dry_cotton": "Хлопок", - "iot_dry_cuddly_toys": "Мягкие игрушки", - "iot_dry_curtains": "Шторы", - "iot_dry_dehumidifier": "Влагопоглотитель", - "iot_dry_delicates": "Деликатные", - "iot_dry_delicate_tablecloths": "Деликатные скатерти", - "iot_dry_denim_jeans": "Деним – джинсы", - "iot_dry_down_jacket": "Куртки", - "iot_dry_duvet": "Пуховое одеяло", - "iot_dry_easy_iron_cotton": "Сверхлегкая глажка", - "iot_dry_easy_iron_synthetics": "Суперудобная глажка синтетики", - "iot_dry_gym_fit": "Одежда для спортзала – Фитнес", - "iot_dry_lingerie": "Белье", - "iot_dry_mixed": "Смешанные ткани", - "iot_dry_playsuits": "Пляжные костюмы", - "iot_dry_rapid_30": "Быстрая 30'", - "iot_dry_rapid_59": "Быстрая 59 мин.", - "iot_dry_refresh": "Освежить", - "iot_dry_regenerates_waterproof": "Восстановление водонепроницаемых тканей", - "iot_dry_relax_creases": "Уменьшение образования складок", - "iot_dry_shirts": "Рубашки", - "iot_dry_small_load": "Малая загрузка", - "iot_dry_swimsuits_and_bikinis": "Купальники", - "iot_dry_synthetics": "Синтетика", - "iot_dry_synthetic_dry": "Сушка синтетики", - "iot_dry_tablecloths": "Скатерти", - "iot_dry_technical_fabrics": "Технические ткани", - "iot_dry_warm_embrace": "Обработка теплом", - "iot_dry_wool": "Шерсть", - "jeans": "джинсы", - "mix_and_dry": "Смешанные+сушка", - "pets": "Животные", - "pre_iron": "Предварительная глажка", - "rapid_30": "Быстрая 30'", - "rapid_45": "Быстрая 45 мин", - "rapid_59": "Быстрая идеальная 59 мин.", - "refresh": "Освежить", - "relax_creases": "Уменьшение образования складок", - "saving_30_min": "ЭКО 30'", - "shirts": "Рубашки", - "shoes": "Обувь", - "small_load": "Малая загрузка", - "soft_care": "Деликатный уход", - "sport_plus": "Спорт", - "super_easy_iron_misti": "Суперлегкая глажка смешанные", - "super_easy_iron_xxl": "Суперлегкая глажка XXL", - "super_fast_cottons": "Супер-БЫСТРАЯ хлопок", - "super_fast_delicates": "Супер-БЫСТРАЯ деликатные", - "synthetics": "Синтетика", - "total_care": "Общии уход", - "trainers": "Спортивная обувь", - "ultra_care": "Ultra Care", - "waterproof_revitalize": "Восстановление водонепроницаемости", - "whites": "Белые ткани", - "wool": "Сушка шерсти", - "woolmark": "Шерсть", - "xxl_load": "Объемные вещи", - "zoom_59": "Zoom 59 (Зум 59)" - }, - "name": "Программа" - }, - "room_temperature": { - "name": "Комнатная температура" - }, - "humidity": { - "name": "Влажность" - }, - "freezer_temp": { - "name": "Температура в морозильном отделении" - }, - "fridge_temp": { - "name": "Температура в холодильнике" - }, "programs_ac": { "state": { "iot_10_heating": "Функция нагрева до 10°C", @@ -545,6 +293,143 @@ }, "name": "Программа" }, + "programs_td": { + "state": { + "active_dry": "Активная сушка", + "allergy_care": "Противоаллергическое действие", + "all_in_one": "Все в одном", + "antiallergy": "Противоаллергическое действие", + "anti_odours": "Против запаха", + "auto_care": "Автоуход", + "baby": "Детская одежда", + "bed_quilt": "Стеганые и пуховые одеяла", + "care_30": "Уход 30", + "care_45": "Уход 45", + "care_59": "Уход 59", + "coloured": "цветные", + "daily_45_min": "ЕЖЕДНЕВНАЯ 45'", + "daily_perfect_59_min": "ЕЖЕДНЕВНАЯ ИДЕАЛЬНАЯ 59'", + "darks_and_coloured": "Темные и Цветные", + "delicates": "Деликатные", + "duvet": "Пуховое одеяло", + "eco": "Эко хлопок", + "ecospeed_cottons": "Эко скорость хлопок", + "ecospeed_delicates": "Эко скорость деликатные", + "ecospeed_mixed": "Эко скорость смешанные", + "extra_hygiene": "ЭКСТРА ГИГИЕНА", + "fitness": "Фитнес", + "fresh_care": "Свежесть", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Полотенца", + "hqd_bed_sheets": "Простыни", + "hqd_bulky": "Объемные изделия", + "hqd_casual": "Повседневная одежда", + "hqd_cold_wind_30": "Прохладный обдув 30 минут", + "hqd_cold_wind_timing": "Прохладный обдув ", + "hqd_cotton": "Хлопок", + "hqd_curtain": "Шторы", + "hqd_delicate": "Деликатные вещи", + "hqd_diaper": "Пеленки", + "hqd_duvet": "Пуховое одеяло", + "hqd_feather": "Пуховики", + "hqd_hot_wind_timing": "Горячий воздух", + "hqd_hygienic": "Санитарная обработка", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Куртки", + "hqd_jeans": "Джинсы", + "hqd_luxury": "Люксовые изделия", + "hqd_mix": "Смешанные ткани", + "hqd_night_dry": "Ночная сушка", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Быстрая 20", + "hqd_quick_30": "Быстрая 30", + "hqd_quick_dry": "Быстрая сушка 30", + "hqd_quilt": "Стеганые одеяла", + "hqd_refresh": "Освежение", + "hqd_school_uniform": "Школьная форма", + "hqd_shirt": "Рубашки", + "hqd_shoes": "Обувь", + "hqd_silk": "Шелк", + "hqd_sports": "Спортивная одежда", + "hqd_synthetics": "Синтетика", + "hqd_timer": "Timed", + "hqd_towel": "Полотенца", + "hqd_underwear": "Нижнее белье", + "hqd_warm_up": "Подогрев", + "hqd_wool": "Шерсть", + "hqd_working_suit": "Рабочая одежда", + "hygiene": "Гигиена", + "iot_checkup": "Проверка", + "iot_dry_anti_mites": "Противоклещевая обработка", + "iot_dry_baby": "Детская одежда", + "iot_dry_backpacks": "Рюкзаки", + "iot_dry_bathrobe": "Банные халаты", + "iot_dry_bed_linen": "Постельное белье", + "iot_dry_bed_quilt": "Стеганые и пуховые одеяла", + "iot_dry_cotton": "Хлопок", + "iot_dry_cuddly_toys": "Мягкие игрушки", + "iot_dry_curtains": "Шторы", + "iot_dry_dehumidifier": "Влагопоглотитель", + "iot_dry_delicates": "Деликатные", + "iot_dry_delicate_tablecloths": "Деликатные скатерти", + "iot_dry_denim_jeans": "Деним – джинсы", + "iot_dry_down_jacket": "Куртки", + "iot_dry_duvet": "Пуховое одеяло", + "iot_dry_easy_iron_cotton": "Сверхлегкая глажка", + "iot_dry_easy_iron_synthetics": "Суперудобная глажка синтетики", + "iot_dry_gym_fit": "Одежда для спортзала – Фитнес", + "iot_dry_lingerie": "Белье", + "iot_dry_mixed": "Смешанные ткани", + "iot_dry_playsuits": "Пляжные костюмы", + "iot_dry_rapid_30": "Быстрая 30'", + "iot_dry_rapid_59": "Быстрая 59 мин.", + "iot_dry_refresh": "Освежить", + "iot_dry_regenerates_waterproof": "Восстановление водонепроницаемых тканей", + "iot_dry_relax_creases": "Уменьшение образования складок", + "iot_dry_shirts": "Рубашки", + "iot_dry_small_load": "Малая загрузка", + "iot_dry_swimsuits_and_bikinis": "Купальники", + "iot_dry_synthetics": "Синтетика", + "iot_dry_synthetic_dry": "Сушка синтетики", + "iot_dry_tablecloths": "Скатерти", + "iot_dry_technical_fabrics": "Технические ткани", + "iot_dry_warm_embrace": "Обработка теплом", + "iot_dry_wool": "Шерсть", + "jeans": "джинсы", + "mix_and_dry": "Смешанные+сушка", + "pets": "Животные", + "pre_iron": "Предварительная глажка", + "rapid_30": "Быстрая 30'", + "rapid_45": "Быстрая 45 мин", + "rapid_59": "Быстрая идеальная 59 мин.", + "refresh": "Освежить", + "relax_creases": "Уменьшение образования складок", + "saving_30_min": "ЭКО 30'", + "shirts": "Рубашки", + "shoes": "Обувь", + "small_load": "Малая загрузка", + "soft_care": "Деликатный уход", + "sport_plus": "Спорт", + "super_easy_iron_misti": "Суперлегкая глажка смешанные", + "super_easy_iron_xxl": "Суперлегкая глажка XXL", + "super_fast_cottons": "Супер-БЫСТРАЯ хлопок", + "super_fast_delicates": "Супер-БЫСТРАЯ деликатные", + "synthetics": "Синтетика", + "total_care": "Общии уход", + "trainers": "Спортивная обувь", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Восстановление водонепроницаемости", + "whites": "Белые ткани", + "wool": "Сушка шерсти", + "woolmark": "Шерсть", + "xxl_load": "Объемные вещи", + "zoom_59": "Zoom 59 (Зум 59)" + }, + "name": "Программа" + }, "programs_wm": { "state": { "20_degrees_coloured_cottons": "20° Цветные ткани и Хлопок", @@ -556,7 +441,7 @@ "allergy_care_pro": "Уход для аллергиков про", "all_in_one_49": "Все в одном 49 мин.", "all_in_one_59": "Все в одном 59 мин.", - "all_in_one_59_steam": "Активная стирка + пар", + "all_in_one_59_steam": "Все в одном 59' + пар", "autocare": "Автоуход", "autoclean": "Очистка барабана", "baby_60": "Стирка детского белья при 60°С", @@ -622,7 +507,7 @@ "iot_active_steam": "Пар", "iot_active_wash_steam": "Активная стирка", "iot_allergy_care_pro": "Уход для аллергиков про", - "iot_all_in_one_59_steam": "Активная стирка + пар", + "iot_all_in_one_59_steam": "Все в одном 59' + пар", "iot_checkup": "Проверка", "iot_colour_59_steam": "Цветные ткани 59' + пар", "iot_cottons_steam": "Хлопок + Пар", @@ -889,9 +774,148 @@ "sparkling": "Игристое", "white": "Белое" } + }, + "dry_time": { + "name": "Время сушки" + }, + "power": { + "name": "Уровень мощности" + }, + "remaining_time": { + "name": "Оставшееся время" + }, + "temperature": { + "name": "Температура" + }, + "water_efficiency": { + "name": "Эффективность расхода воды" + }, + "water_saving": { + "name": "Экономия воды" + }, + "duration": { + "name": "Длительность" + }, + "target_temperature": { + "name": "Заданная температура" + }, + "spin_speed": { + "name": "Отжим" + }, + "steam_leve": { + "name": "Уровень пара" + }, + "dirt_level": { + "name": "Уровень загрязнения" + }, + "delay_time": { + "name": "Отложенный пуск" + }, + "suggested_load": { + "name": "Допустимая загрузка" + }, + "energy_label": { + "name": "Энергоэффективность" + }, + "det_dust": { + "name": "Стиральный порошок" + }, + "det_liquid": { + "name": "Жидкое средство" + }, + "errors": { + "name": "Ошибка" + }, + "programs": { + "name": "Текущая программа" + }, + "room_temperature": { + "name": "Комнатная температура" + }, + "humidity": { + "name": "Влажность" + }, + "cycles_total": { + "name": "Циклы Итого" + }, + "energy_total": { + "name": "Потребление энергии Итого" + }, + "water_total": { + "name": "Эффективность расхода воды Итого" + }, + "energy_current": { + "name": "Потребление энергии Текущий" + }, + "water_current": { + "name": "Эффективность расхода воды Текущий" + }, + "freezer_temp": { + "name": "Температура в морозильном отделении" + }, + "fridge_temp": { + "name": "Температура в холодильнике" } }, "select": { + "dry_levels": { + "state": { + "no_dry": "Без сушки", + "iron_dry": "Под утюг", + "no_dry_iron": "В шкаф", + "cupboard_dry": "Готово в шкаф", + "extra_dry": "Экстра сушка", + "ready_to_wear": "Готово для надевания" + }, + "name": "Уровень сухости" + }, + "eco_pilot": { + "state": { + "touch_off": "ВЫКЛ", + "avoid_touch": "Не прикасайтесь", + "follow_touch": "Следование" + }, + "name": "Eco pilot" + }, + "fan_mode": { + "state": { + "high": "Высокий", + "mid": "Средний ", + "low": "Низкий", + "auto": "Авто" + } + }, + "ref_zones": { + "state": { + "fridge": "Холодильник", + "freezer": "Морозильник", + "vtroom1": "My Zone", + "fridge_freezer": "Холодильник & Морозильник" + }, + "name": "Зона" + }, + "programs_ac": { + "state": { + "iot_10_heating": "Функция нагрева до 10°C", + "iot_auto": "Авто", + "iot_cool": "Охлаждение", + "iot_dry": "Сушка", + "iot_fan": "Вентилятор", + "iot_heat": "Нагрев", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Самоочищение", + "iot_self_clean": "Самоочистка", + "iot_self_clean_56": "Steri-Clean 56°C", + "iot_simple_start": "Пуск сейчас", + "iot_uv": "Ультрафиолет", + "iot_uv_and_auto": "УФ + Авто", + "iot_uv_and_cool": "УФ + Охлаждение", + "iot_uv_and_dry": "УФ + Осушитель", + "iot_uv_and_fan": "УФ + Вентилятор", + "iot_uv_and_heat": "УФ + Нагрев" + }, + "name": "Программа" + }, "programs_dw": { "state": { "59_min": "Быcтрая Мойkа 59'", @@ -1241,7 +1265,7 @@ "allergy_care_pro": "Уход для аллергиков про", "all_in_one_49": "Все в одном 49 мин.", "all_in_one_59": "Все в одном 59 мин.", - "all_in_one_59_steam": "Активная стирка + пар", + "all_in_one_59_steam": "Все в одном 59' + пар", "autocare": "Автоуход", "autoclean": "Очистка барабана", "baby_60": "Стирка детского белья при 60°С", @@ -1307,7 +1331,7 @@ "iot_active_steam": "Пар", "iot_active_wash_steam": "Активная стирка", "iot_allergy_care_pro": "Уход для аллергиков про", - "iot_all_in_one_59_steam": "Активная стирка + пар", + "iot_all_in_one_59_steam": "Все в одном 59' + пар", "iot_checkup": "Проверка", "iot_colour_59_steam": "Цветные ткани 59' + пар", "iot_cottons_steam": "Хлопок + Пар", @@ -1540,69 +1564,6 @@ }, "name": "Программа" }, - "dry_levels": { - "state": { - "0": "Без сушки", - "1": "Под утюг", - "2": "В шкаф", - "3": "Готово в шкаф", - "4": "Экстра сушка", - "12": "Под утюг", - "13": "Готово в шкаф", - "14": "Готово для надевания", - "15": "Экстра сушка", - "11": "Без сушки" - }, - "name": "Уровень сухости" - }, - "spin_speed": { - "name": "Отжим" - }, - "temperature": { - "name": "Температура" - }, - "dry_time": { - "name": "Время сушки" - }, - "eco_pilot": { - "state": { - "0": "ВЫКЛ", - "1": "Не прикасайтесь", - "2": "Следование" - }, - "name": "Eco pilot" - }, - "fan_mode": { - "state": { - "1": "Высокий", - "2": "Средний ", - "3": "Низкий", - "4": "Авто", - "5": "Авто" - } - }, - "programs_ac": { - "state": { - "iot_10_heating": "Функция нагрева до 10°C", - "iot_auto": "Авто", - "iot_cool": "Охлаждение", - "iot_dry": "Сушка", - "iot_fan": "Вентилятор", - "iot_heat": "Нагрев", - "iot_nano_aqua": "Nano Aqua", - "iot_purify": "Самоочищение", - "iot_self_clean": "Самоочистка", - "iot_self_clean_56": "Steri-Clean 56°C", - "iot_simple_start": "Пуск сейчас", - "iot_uv": "Ультрафиолет", - "iot_uv_and_auto": "УФ + Авто", - "iot_uv_and_cool": "УФ + Охлаждение", - "iot_uv_and_dry": "УФ + Осушитель", - "iot_uv_and_fan": "УФ + Вентилятор", - "iot_uv_and_heat": "УФ + Нагрев" - }, - "name": "Программа" - }, "programs_ref": { "state": { "auto_set": "АВТОМАТИЧЕСКАЯ НАСТРОЙКА", @@ -1626,17 +1587,17 @@ }, "name": "Программа" }, + "dry_time": { + "name": "Время сушки" + }, + "spin_speed": { + "name": "Отжим" + }, + "temperature": { + "name": "Температура" + }, "remaining_time": { "name": "Оставшееся время" - }, - "ref_zones": { - "state": { - "fridge": "Холодильник", - "freezer": "Морозильник", - "vtroom1": "My Zone", - "fridge_freezer": "Холодильник & Морозильник" - }, - "name": "Зона" } }, "switch": { @@ -1724,18 +1685,15 @@ "acqua_plus": { "name": "Акваплюс" }, - "auto_dose": { - "name": "Автодозирование" - }, - "good_night": { - "name": "Спокойной ночи" - }, "auto_dose_softener": { "name": "Автодозирование Кондиционер" }, "auto_dose_detergent": { "name": "Автодозирование Средство для стирки" }, + "good_night": { + "name": "Спокойной ночи" + }, "auto_set": { "name": "Автоматическая установка" }, @@ -1768,27 +1726,12 @@ "anti_crease": { "name": "Противосминание" }, - "aqua_plus": { + "acqua_plus": { "name": "Акваплюс" }, "spin_speed": { "name": "Отжим" }, - "programs_dw": { - "name": "Программа" - }, - "programs_ih": { - "name": "Программа" - }, - "programs_ov": { - "name": "Программа" - }, - "programs_td": { - "name": "Программа" - }, - "programs_wm": { - "name": "Программа" - }, "still_hot": { "name": "Еще горячий" }, @@ -1819,12 +1762,6 @@ "prewash": { "name": "предварительная мойка" }, - "acqua_plus": { - "name": "Акваплюс" - }, - "auto_dose": { - "name": "Автодозирование" - }, "buzzer": { "name": "Звуковой сигнал окончания цикла" }, @@ -1850,6 +1787,17 @@ "name": "Замена фильтра" } }, + "button": { + "induction_hob": { + "name": "Индукционная варочная панель" + }, + "start_program": { + "name": "Программа Начать" + }, + "stop_program": { + "name": "Программа Стоп" + } + }, "number": { "power_management": { "name": "Управление электропитанием" @@ -1888,17 +1836,6 @@ "name": "Заданная температура Холодильник" } }, - "button": { - "induction_hob": { - "name": "Индукционная варочная панель" - }, - "start_program": { - "name": "Программа Начать" - }, - "stop_program": { - "name": "Программа Стоп" - } - }, "climate": { "air_conditioner": { "name": "Кондиционер воздуха" diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index ff073c1..dfc4ccf 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -3,325 +3,73 @@ "sensor": { "washing_modes": { "state": { - "0": "Pripravené", - "1": "Pripravené", - "3": "Pozastaviť", - "4": "Naplánované", - "5": "Naplánované", - "6": "Chyba", - "7": "Pripravené", - "2": "Program beží", - "8": "Test", - "9": "Cyklus zastavenia…" + "ready": "Pripravené", + "running": "Program beží", + "pause": "Pozastaviť", + "scheduled": "Naplánované", + "error": "Chyba", + "test": "Test", + "ending": "Cyklus zastavenia…" + } + }, + "mach_modes_ac": { + "state": { + "auto": "Automatika", + "cool": "Chladiť", + "dry": "Sušiť", + "heat": "Ohrev", + "fan": "Ventilátor" } }, "program_phases_wm": { "state": { - "0": "Pripravené", - "1": "Pranie", - "2": "Pranie", - "3": "Odstreďovanie", - "4": "Oplachovanie", - "5": "Oplachovanie", - "6": "Oplachovanie", - "7": "Sušenie", - "9": "Para", - "10": "Pripravené", - "11": "Odstreďovanie", - "12": "Váženie ", - "13": "Váženie ", - "14": "Pranie", - "15": "Pranie", - "16": "Pranie", - "17": "Oplachovanie", - "18": "Oplachovanie", - "19": "Naplánované", - "20": "Uchovať svieže", - "24": "Osvieženie", - "25": "Pranie", - "26": "Ohrev", - "27": "Pranie" + "ready": "Pripravené", + "spin": "Odstreďovanie", + "rinse": "Oplachovanie", + "drying": "Sušenie", + "steam": "Para", + "weighting": "Váženie ", + "scheduled": "Naplánované", + "tumbling": "Uchovať svieže", + "refresh": "Osvieženie", + "heating": "Ohrev", + "washing": "Pranie" }, "name": "Fáza" }, "program_phases_td": { "state": { - "0": "Pripravené", - "1": "Sušenie", - "2": "Sušenie", - "3": "Schladiť", - "13": "Schladiť", - "14": "Sušenie", - "15": "Sušenie", - "16": "Schladiť", - "18": "Uchovať svieže", - "19": "Sušenie", - "20": "Sušenie", - "11": "Pripravené", - "17": "unknown", - "12": "unknown" + "ready": "Pripravené", + "heat_stroke": "Sušenie", + "drying": "Sušenie", + "cooldown": "Schladiť", + "unknown": "unknown", + "tumbling": "Uchovať svieže" }, "name": "Fáza" }, "program_phases_dw": { "state": { - "0": "Pripravené", - "1": "Predpierka", - "2": "Pranie", - "3": "Oplachovanie", - "4": "Sušenie", - "5": "Pripravené", - "6": "Hot rinse" + "ready": "Pripravené", + "prewash": "Predpierka", + "washing": "Pranie", + "rinse": "Oplachovanie", + "drying": "Sušenie", + "hot_rinse": "Hot rinse" }, "name": "Fáza" }, "dry_levels": { "state": { - "0": "Bez sušenia", - "1": "Žehlenie", - "2": "Šatník pripravený", - "3": "Šatník pripravený", - "4": "Extra sušenie", - "12": "Žehlenie", - "13": "Šatník pripravený", - "14": "Hotové na nosenie", - "15": "Extra sušenie", - "11": "Bez sušenia" + "no_dry": "Bez sušenia", + "iron_dry": "Žehlenie", + "no_dry_iron": "Šatník pripravený", + "cupboard_dry": "Šatník pripravený", + "extra_dry": "Extra sušenie", + "ready_to_wear": "Hotové na nosenie" }, "name": "Úroveň sušenia" }, - "anti_crease": { - "name": "Proti pokrčeniu" - }, - "power": { - "name": "Úroveň výkonu" - }, - "remaining_time": { - "name": "Zostávajúci čas" - }, - "temperature": { - "name": "Teplota" - }, - "water_efficiency": { - "name": "Účinnosť vody" - }, - "water_saving": { - "name": "Úspora vody" - }, - "duration": { - "name": "Trvanie" - }, - "target_temperature": { - "name": "Cieľová teplota" - }, - "spin_speed": { - "name": "Odstreďovanie" - }, - "steam_leve": { - "name": "Úroveň nastavenia pary" - }, - "dirt_level": { - "name": "Úroveň znečistenia" - }, - "delay_time": { - "name": "Odložený štart" - }, - "dry_time": { - "name": "Čas sušenia" - }, - "suggested_load": { - "name": "Kapacita naplnenia" - }, - "energy_label": { - "name": "Energetická účinnosť" - }, - "det_dust": { - "name": "Prášok" - }, - "det_liquid": { - "name": "Kvapalné pracie prostriedky" - }, - "errors": { - "name": "Chyba" - }, - "programs": { - "name": "Aktuálny program" - }, - "cycles_total": { - "name": "Cykly Súčet" - }, - "energy_total": { - "name": "Spotreba energie Súčet" - }, - "water_total": { - "name": "Účinnosť vody Súčet" - }, - "energy_current": { - "name": "Spotreba energie Current" - }, - "water_current": { - "name": "Účinnosť vody Current" - }, - "mach_modes_ac": { - "state": { - "0": "Automatika", - "1": "Chladiť", - "2": "Chladiť", - "3": "Sušiť", - "4": "Ohrev", - "5": "Ventilátor", - "6": "Ventilátor" - } - }, - "programs_td": { - "state": { - "active_dry": "Aktívne sušenie", - "allergy_care": "Antialergický", - "all_in_one": "All in One", - "antiallergy": "Antialergický", - "anti_odours": "Oživenie", - "auto_care": "Automatická starostlivosť", - "baby": "Detská", - "bed_quilt": "Posteľná prikrývka", - "care_30": "Starostlivosť 30", - "care_45": "Starostlivosť 45", - "care_59": "Starostlivosť 59", - "coloured": "Farebná", - "daily_45_min": "DENNY 45'", - "daily_perfect_59_min": "DAILY PERFECT 59'", - "darks_and_coloured": "Tmavá a farebná", - "delicates": "Jemné", - "duvet": "Prikrývky", - "eco": "Eco bavlna", - "ecospeed_cottons": "Ecospeed bavlna", - "ecospeed_delicates": "Eco rychly - jemne", - "ecospeed_mixed": "Ecospeed zmiešaná", - "extra_hygiene": "EXTRA HYGIENA", - "fitness": "Fitnes", - "fresh_care": "Svieža starostlivosť", - "genius": "Genius", - "hqd_baby_care": "Baby Care", - "hqd_bath_towel": "Osušky", - "hqd_bed_sheets": "Posteľná bielizeň", - "hqd_bulky": "Objemné položky", - "hqd_casual": "Neformálne", - "hqd_cold_wind_30": "Chladný vánok 30 minút", - "hqd_cold_wind_timing": "Studený vánok ", - "hqd_cotton": "Bavlna", - "hqd_curtain": "Záclony", - "hqd_delicate": "Jemné materiály", - "hqd_diaper": "Plienky", - "hqd_duvet": "Paplón", - "hqd_feather": "Prešívané bundy", - "hqd_hot_wind_timing": "Horúci vzduch", - "hqd_hygienic": "Hygienizácia", - "hqd_i_refresh": "I-Refresh", - "hqd_i_refresh_pro": "I-Refresh Pro", - "hqd_jacket": "Bundy", - "hqd_jeans": "Džínsy", - "hqd_luxury": "Luxury", - "hqd_mix": "Zmiešané", - "hqd_night_dry": "Nočné sušenie", - "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", - "hqd_quick_20": "Rýchle 20", - "hqd_quick_30": "Rýchle 30", - "hqd_quick_dry": "Rýchle sušenie 30", - "hqd_quilt": "Prikrývky", - "hqd_refresh": "Osvieženie", - "hqd_school_uniform": "Školská uniforma", - "hqd_shirt": "Košele", - "hqd_shoes": "Obuv", - "hqd_silk": "Hodváb", - "hqd_sports": "Šport", - "hqd_synthetics": "Syntetika", - "hqd_timer": "Načasované", - "hqd_towel": "Osušky", - "hqd_underwear": "Spodná bielizeň", - "hqd_warm_up": "Zahriatie", - "hqd_wool": "Vlna", - "hqd_working_suit": "Pracovné odevy", - "hygiene": "Hygiena", - "iot_checkup": "Kontrola", - "iot_dry_anti_mites": "Proti roztočom", - "iot_dry_baby": "Detská", - "iot_dry_backpacks": "Batohy", - "iot_dry_bathrobe": "Bathrobe", - "iot_dry_bed_linen": "Posteľná bielizeň", - "iot_dry_bed_quilt": "Posteľná prikrývka", - "iot_dry_cotton": "Bavlna", - "iot_dry_cuddly_toys": "Plyšové hračky", - "iot_dry_curtains": "Závesy", - "iot_dry_dehumidifier": "Odstraňovač vlhkosti", - "iot_dry_delicates": "Jemná", - "iot_dry_delicate_tablecloths": "Jemné obrusy", - "iot_dry_denim_jeans": "Džínsovina – džínsy", - "iot_dry_down_jacket": "Jacket", - "iot_dry_duvet": "Prikrývky", - "iot_dry_easy_iron_cotton": "Super ľahké žehlenie", - "iot_dry_easy_iron_synthetics": "Super ľahké žehlenie syntetiky", - "iot_dry_gym_fit": "Športovné oblečenie", - "iot_dry_lingerie": "Spodná bielizeň", - "iot_dry_mixed": "Zmiešané", - "iot_dry_playsuits": "Tepláky", - "iot_dry_rapid_30": "Rapid 30", - "iot_dry_rapid_59": "Rýchly 59 min.", - "iot_dry_refresh": "Osvieženie", - "iot_dry_regenerates_waterproof": "Oživení nepromokavých tkanin", - "iot_dry_relax_creases": "Uvoľnenie záhybov", - "iot_dry_shirts": "Košele", - "iot_dry_small_load": "Malá náplň", - "iot_dry_swimsuits_and_bikinis": "Plavky", - "iot_dry_synthetics": "Syntetická", - "iot_dry_synthetic_dry": "Syntetika – sušenie", - "iot_dry_tablecloths": "Obrusy", - "iot_dry_technical_fabrics": "Technické tkaniny", - "iot_dry_warm_embrace": "Detská zavinovačka", - "iot_dry_wool": "Woolmark", - "jeans": "Džínsy", - "mix_and_dry": "Mix&Dry", - "pets": "Domáce zvieratá", - "pre_iron": "Pred žehlením", - "rapid_30": "Rapid 30", - "rapid_45": "Rýchly 45 min", - "rapid_59": "Perfektne rýchly 59 min", - "refresh": "Osvieženie", - "relax_creases": "Uvoľnenie záhybov", - "saving_30_min": "EKONOMICKY 30'", - "shirts": "Košele", - "shoes": "Obuv", - "small_load": "Malá náplň", - "soft_care": "Jemná starostlivosť", - "sport_plus": "Sportovy", - "super_easy_iron_misti": "Super ľahké žehlenie pre Zmiešané", - "super_easy_iron_xxl": "Super ľahké žehlenie XXL", - "super_fast_cottons": "Super rýchly bavlna", - "super_fast_delicates": "Super rýchly jemná", - "synthetics": "Syntetická", - "total_care": "Total Care", - "trainers": "Športová obuv", - "ultra_care": "Ultra Care", - "waterproof_revitalize": "Obnovenie vodeodolnosti", - "whites": "Biela", - "wool": "Sušenie vlny", - "woolmark": "Woolmark", - "xxl_load": "XXL náplň", - "zoom_59": "Zoom 59" - }, - "name": "Program" - }, - "room_temperature": { - "name": "Izbová teplota" - }, - "humidity": { - "name": "Vlhkosť" - }, - "freezer_temp": { - "name": "Teplota mrazničky" - }, - "fridge_temp": { - "name": "Teplota chladničky" - }, "programs_ac": { "state": { "iot_10_heating": "Funkcia vykurovania na 10 °C", @@ -545,6 +293,143 @@ }, "name": "Program" }, + "programs_td": { + "state": { + "active_dry": "Aktívne sušenie", + "allergy_care": "Antialergický", + "all_in_one": "All in One", + "antiallergy": "Antialergický", + "anti_odours": "Oživenie", + "auto_care": "Automatická starostlivosť", + "baby": "Detská", + "bed_quilt": "Posteľná prikrývka", + "care_30": "Starostlivosť 30", + "care_45": "Starostlivosť 45", + "care_59": "Starostlivosť 59", + "coloured": "Farebná", + "daily_45_min": "DENNY 45'", + "daily_perfect_59_min": "DAILY PERFECT 59'", + "darks_and_coloured": "Tmavá a farebná", + "delicates": "Jemné", + "duvet": "Prikrývky", + "eco": "Eco bavlna", + "ecospeed_cottons": "Ecospeed bavlna", + "ecospeed_delicates": "Eco rychly - jemne", + "ecospeed_mixed": "Ecospeed zmiešaná", + "extra_hygiene": "EXTRA HYGIENA", + "fitness": "Fitnes", + "fresh_care": "Svieža starostlivosť", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Osušky", + "hqd_bed_sheets": "Posteľná bielizeň", + "hqd_bulky": "Objemné položky", + "hqd_casual": "Neformálne", + "hqd_cold_wind_30": "Chladný vánok 30 minút", + "hqd_cold_wind_timing": "Studený vánok ", + "hqd_cotton": "Bavlna", + "hqd_curtain": "Záclony", + "hqd_delicate": "Jemné materiály", + "hqd_diaper": "Plienky", + "hqd_duvet": "Paplón", + "hqd_feather": "Prešívané bundy", + "hqd_hot_wind_timing": "Horúci vzduch", + "hqd_hygienic": "Hygienizácia", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Bundy", + "hqd_jeans": "Džínsy", + "hqd_luxury": "Luxury", + "hqd_mix": "Zmiešané", + "hqd_night_dry": "Nočné sušenie", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Rýchle 20", + "hqd_quick_30": "Rýchle 30", + "hqd_quick_dry": "Rýchle sušenie 30", + "hqd_quilt": "Prikrývky", + "hqd_refresh": "Osvieženie", + "hqd_school_uniform": "Školská uniforma", + "hqd_shirt": "Košele", + "hqd_shoes": "Obuv", + "hqd_silk": "Hodváb", + "hqd_sports": "Šport", + "hqd_synthetics": "Syntetika", + "hqd_timer": "Načasované", + "hqd_towel": "Osušky", + "hqd_underwear": "Spodná bielizeň", + "hqd_warm_up": "Zahriatie", + "hqd_wool": "Vlna", + "hqd_working_suit": "Pracovné odevy", + "hygiene": "Hygiena", + "iot_checkup": "Kontrola", + "iot_dry_anti_mites": "Proti roztočom", + "iot_dry_baby": "Detská", + "iot_dry_backpacks": "Batohy", + "iot_dry_bathrobe": "Bathrobe", + "iot_dry_bed_linen": "Posteľná bielizeň", + "iot_dry_bed_quilt": "Posteľná prikrývka", + "iot_dry_cotton": "Bavlna", + "iot_dry_cuddly_toys": "Plyšové hračky", + "iot_dry_curtains": "Závesy", + "iot_dry_dehumidifier": "Odstraňovač vlhkosti", + "iot_dry_delicates": "Jemná", + "iot_dry_delicate_tablecloths": "Jemné obrusy", + "iot_dry_denim_jeans": "Džínsovina – džínsy", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Prikrývky", + "iot_dry_easy_iron_cotton": "Super ľahké žehlenie", + "iot_dry_easy_iron_synthetics": "Super ľahké žehlenie syntetiky", + "iot_dry_gym_fit": "Športovné oblečenie", + "iot_dry_lingerie": "Spodná bielizeň", + "iot_dry_mixed": "Zmiešané", + "iot_dry_playsuits": "Tepláky", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Rýchly 59 min.", + "iot_dry_refresh": "Osvieženie", + "iot_dry_regenerates_waterproof": "Oživení nepromokavých tkanin", + "iot_dry_relax_creases": "Uvoľnenie záhybov", + "iot_dry_shirts": "Košele", + "iot_dry_small_load": "Malá náplň", + "iot_dry_swimsuits_and_bikinis": "Plavky", + "iot_dry_synthetics": "Syntetická", + "iot_dry_synthetic_dry": "Syntetika – sušenie", + "iot_dry_tablecloths": "Obrusy", + "iot_dry_technical_fabrics": "Technické tkaniny", + "iot_dry_warm_embrace": "Detská zavinovačka", + "iot_dry_wool": "Woolmark", + "jeans": "Džínsy", + "mix_and_dry": "Mix&Dry", + "pets": "Domáce zvieratá", + "pre_iron": "Pred žehlením", + "rapid_30": "Rapid 30", + "rapid_45": "Rýchly 45 min", + "rapid_59": "Perfektne rýchly 59 min", + "refresh": "Osvieženie", + "relax_creases": "Uvoľnenie záhybov", + "saving_30_min": "EKONOMICKY 30'", + "shirts": "Košele", + "shoes": "Obuv", + "small_load": "Malá náplň", + "soft_care": "Jemná starostlivosť", + "sport_plus": "Sportovy", + "super_easy_iron_misti": "Super ľahké žehlenie pre Zmiešané", + "super_easy_iron_xxl": "Super ľahké žehlenie XXL", + "super_fast_cottons": "Super rýchly bavlna", + "super_fast_delicates": "Super rýchly jemná", + "synthetics": "Syntetická", + "total_care": "Total Care", + "trainers": "Športová obuv", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Obnovenie vodeodolnosti", + "whites": "Biela", + "wool": "Sušenie vlny", + "woolmark": "Woolmark", + "xxl_load": "XXL náplň", + "zoom_59": "Zoom 59" + }, + "name": "Program" + }, "programs_wm": { "state": { "20_degrees_coloured_cottons": "20° farebné a bavlnené", @@ -556,7 +441,7 @@ "allergy_care_pro": "Antialergické ošetrenie Pro", "all_in_one_49": "Všetko v jednom 49 min.", "all_in_one_59": "Všetko v jednom 59 min.", - "all_in_one_59_steam": "Aktívne pranie + para", + "all_in_one_59_steam": "Všetko v jednom 59' + para", "autocare": "Automatická starostlivosť", "autoclean": "Čistenie bubna", "baby_60": "Všetka detská 60°C", @@ -622,7 +507,7 @@ "iot_active_steam": "Para", "iot_active_wash_steam": "Aktívne pranie", "iot_allergy_care_pro": "Antialergické ošetrenie Pro", - "iot_all_in_one_59_steam": "Aktívne pranie + para", + "iot_all_in_one_59_steam": "Všetko v jednom 59' + para", "iot_checkup": "Kontrola", "iot_colour_59_steam": "Farebná bielizeň 59' + Para", "iot_cottons_steam": "Bavlna + Para", @@ -889,9 +774,148 @@ "sparkling": "Šumivé", "white": "Biele" } + }, + "dry_time": { + "name": "Čas sušenia" + }, + "power": { + "name": "Úroveň výkonu" + }, + "remaining_time": { + "name": "Zostávajúci čas" + }, + "temperature": { + "name": "Teplota" + }, + "water_efficiency": { + "name": "Účinnosť vody" + }, + "water_saving": { + "name": "Úspora vody" + }, + "duration": { + "name": "Trvanie" + }, + "target_temperature": { + "name": "Cieľová teplota" + }, + "spin_speed": { + "name": "Odstreďovanie" + }, + "steam_leve": { + "name": "Úroveň nastavenia pary" + }, + "dirt_level": { + "name": "Úroveň znečistenia" + }, + "delay_time": { + "name": "Odložený štart" + }, + "suggested_load": { + "name": "Kapacita naplnenia" + }, + "energy_label": { + "name": "Energetická účinnosť" + }, + "det_dust": { + "name": "Prášok" + }, + "det_liquid": { + "name": "Kvapalné pracie prostriedky" + }, + "errors": { + "name": "Chyba" + }, + "programs": { + "name": "Aktuálny program" + }, + "room_temperature": { + "name": "Izbová teplota" + }, + "humidity": { + "name": "Vlhkosť" + }, + "cycles_total": { + "name": "Cykly Súčet" + }, + "energy_total": { + "name": "Spotreba energie Súčet" + }, + "water_total": { + "name": "Účinnosť vody Súčet" + }, + "energy_current": { + "name": "Spotreba energie Current" + }, + "water_current": { + "name": "Účinnosť vody Current" + }, + "freezer_temp": { + "name": "Teplota mrazničky" + }, + "fridge_temp": { + "name": "Teplota chladničky" } }, "select": { + "dry_levels": { + "state": { + "no_dry": "Bez sušenia", + "iron_dry": "Žehlenie", + "no_dry_iron": "Šatník pripravený", + "cupboard_dry": "Šatník pripravený", + "extra_dry": "Extra sušenie", + "ready_to_wear": "Hotové na nosenie" + }, + "name": "Úroveň sušenia" + }, + "eco_pilot": { + "state": { + "touch_off": "Off (Vypnúť)", + "avoid_touch": "Nedotýkať sa", + "follow_touch": "Nasledovať" + }, + "name": "Ekologický pilot" + }, + "fan_mode": { + "state": { + "high": "Vysoká", + "mid": "Stredne ťažká ", + "low": "Nízka", + "auto": "Automatika" + } + }, + "ref_zones": { + "state": { + "fridge": "Chladnička", + "freezer": "Mraznička", + "vtroom1": "My Zone", + "fridge_freezer": "Chladnička & Mraznička" + }, + "name": "Zóna" + }, + "programs_ac": { + "state": { + "iot_10_heating": "Funkcia vykurovania na 10 °C", + "iot_auto": "Automatika", + "iot_cool": "Chladiť", + "iot_dry": "Sušiť", + "iot_fan": "Ventilátor", + "iot_heat": "Ohrev", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Samoprečisťovanie", + "iot_self_clean": "Samočistenie", + "iot_self_clean_56": "Sterilné čistenie 56°C", + "iot_simple_start": "Spustiť teraz", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Auto", + "iot_uv_and_cool": "UV + Studené", + "iot_uv_and_dry": "UV + Odvlhčovač", + "iot_uv_and_fan": "UV + Ventilátor", + "iot_uv_and_heat": "UV + Ohrev" + }, + "name": "Program" + }, "programs_dw": { "state": { "59_min": "Rýchly 59'", @@ -1241,7 +1265,7 @@ "allergy_care_pro": "Antialergické ošetrenie Pro", "all_in_one_49": "Všetko v jednom 49 min.", "all_in_one_59": "Všetko v jednom 59 min.", - "all_in_one_59_steam": "Aktívne pranie + para", + "all_in_one_59_steam": "Všetko v jednom 59' + para", "autocare": "Automatická starostlivosť", "autoclean": "Čistenie bubna", "baby_60": "Všetka detská 60°C", @@ -1307,7 +1331,7 @@ "iot_active_steam": "Para", "iot_active_wash_steam": "Aktívne pranie", "iot_allergy_care_pro": "Antialergické ošetrenie Pro", - "iot_all_in_one_59_steam": "Aktívne pranie + para", + "iot_all_in_one_59_steam": "Všetko v jednom 59' + para", "iot_checkup": "Kontrola", "iot_colour_59_steam": "Farebná bielizeň 59' + Para", "iot_cottons_steam": "Bavlna + Para", @@ -1540,69 +1564,6 @@ }, "name": "Program" }, - "dry_levels": { - "state": { - "0": "Bez sušenia", - "1": "Žehlenie", - "2": "Šatník pripravený", - "3": "Šatník pripravený", - "4": "Extra sušenie", - "12": "Žehlenie", - "13": "Šatník pripravený", - "14": "Hotové na nosenie", - "15": "Extra sušenie", - "11": "Bez sušenia" - }, - "name": "Úroveň sušenia" - }, - "spin_speed": { - "name": "Odstreďovanie" - }, - "temperature": { - "name": "Teplota" - }, - "dry_time": { - "name": "Čas sušenia" - }, - "eco_pilot": { - "state": { - "0": "Off (Vypnúť)", - "1": "Nedotýkať sa", - "2": "Nasledovať" - }, - "name": "Ekologický pilot" - }, - "fan_mode": { - "state": { - "1": "Vysoká", - "2": "Stredne ťažká ", - "3": "Nízka", - "4": "Automatika", - "5": "Automatika" - } - }, - "programs_ac": { - "state": { - "iot_10_heating": "Funkcia vykurovania na 10 °C", - "iot_auto": "Automatika", - "iot_cool": "Chladiť", - "iot_dry": "Sušiť", - "iot_fan": "Ventilátor", - "iot_heat": "Ohrev", - "iot_nano_aqua": "Nano Aqua", - "iot_purify": "Samoprečisťovanie", - "iot_self_clean": "Samočistenie", - "iot_self_clean_56": "Sterilné čistenie 56°C", - "iot_simple_start": "Spustiť teraz", - "iot_uv": "UV", - "iot_uv_and_auto": "UV + Auto", - "iot_uv_and_cool": "UV + Studené", - "iot_uv_and_dry": "UV + Odvlhčovač", - "iot_uv_and_fan": "UV + Ventilátor", - "iot_uv_and_heat": "UV + Ohrev" - }, - "name": "Program" - }, "programs_ref": { "state": { "auto_set": "AUTOMATICKÉ NASTAVENIE", @@ -1626,17 +1587,17 @@ }, "name": "Program" }, + "dry_time": { + "name": "Čas sušenia" + }, + "spin_speed": { + "name": "Odstreďovanie" + }, + "temperature": { + "name": "Teplota" + }, "remaining_time": { "name": "Zostávajúci čas" - }, - "ref_zones": { - "state": { - "fridge": "Chladnička", - "freezer": "Mraznička", - "vtroom1": "My Zone", - "fridge_freezer": "Chladnička & Mraznička" - }, - "name": "Zóna" } }, "switch": { @@ -1724,18 +1685,15 @@ "acqua_plus": { "name": "Aquaplus" }, - "auto_dose": { - "name": "Automatická dávka" - }, - "good_night": { - "name": "Dobrú noc" - }, "auto_dose_softener": { "name": "Automatická dávka Aviváž" }, "auto_dose_detergent": { "name": "Automatická dávka Prací prostriedok" }, + "good_night": { + "name": "Dobrú noc" + }, "auto_set": { "name": "Automatické nastavenie" }, @@ -1768,27 +1726,12 @@ "anti_crease": { "name": "Proti pokrčeniu" }, - "aqua_plus": { + "acqua_plus": { "name": "Aquaplus" }, "spin_speed": { "name": "Odstreďovanie" }, - "programs_dw": { - "name": "Program" - }, - "programs_ih": { - "name": "Program" - }, - "programs_ov": { - "name": "Program" - }, - "programs_td": { - "name": "Program" - }, - "programs_wm": { - "name": "Program" - }, "still_hot": { "name": "Stále horúce" }, @@ -1819,12 +1762,6 @@ "prewash": { "name": "Predumývanie" }, - "acqua_plus": { - "name": "Aquaplus" - }, - "auto_dose": { - "name": "Automatická dávka" - }, "buzzer": { "name": "Signál na konci cyklu" }, @@ -1850,6 +1787,17 @@ "name": "Výmena filtra" } }, + "button": { + "induction_hob": { + "name": "Indukčná varná doska" + }, + "start_program": { + "name": "Program Začiatok" + }, + "stop_program": { + "name": "Program Zastaviť" + } + }, "number": { "power_management": { "name": "Správa výkonu" @@ -1888,17 +1836,6 @@ "name": "Cieľová teplota Chladnička" } }, - "button": { - "induction_hob": { - "name": "Indukčná varná doska" - }, - "start_program": { - "name": "Program Začiatok" - }, - "stop_program": { - "name": "Program Zastaviť" - } - }, "climate": { "air_conditioner": { "name": "Klimatizácia" diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index dda46b7..592a02c 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -3,325 +3,73 @@ "sensor": { "washing_modes": { "state": { - "0": "Pripravljen", - "1": "Pripravljen", - "3": "Premor", - "4": "Načrtovano", - "5": "Načrtovano", - "6": "Napaka", - "7": "Pripravljen", - "2": "Program poteka", - "8": "Test", - "9": "Ustavljanje cikla …" + "ready": "Pripravljen", + "running": "Program poteka", + "pause": "Premor", + "scheduled": "Načrtovano", + "error": "Napaka", + "test": "Test", + "ending": "Ustavljanje cikla …" + } + }, + "mach_modes_ac": { + "state": { + "auto": "Samodejno", + "cool": "Hlajenje", + "dry": "Sušenje", + "heat": "Segrevanje", + "fan": "Ventilator" } }, "program_phases_wm": { "state": { - "0": "Pripravljen", - "1": "Pranje", - "2": "Pranje", - "3": "Ožemanje", - "4": "Izpiranje", - "5": "Izpiranje", - "6": "Izpiranje", - "7": "Sušenje", - "9": "Para", - "10": "Pripravljen", - "11": "Ožemanje", - "12": "Tehtanje ", - "13": "Tehtanje ", - "14": "Pranje", - "15": "Pranje", - "16": "Pranje", - "17": "Izpiranje", - "18": "Izpiranje", - "19": "Načrtovano", - "20": "Ohranjanje svežine", - "24": "Osvežitev", - "25": "Pranje", - "26": "Ogrevanje", - "27": "Pranje" + "ready": "Pripravljen", + "spin": "Ožemanje", + "rinse": "Izpiranje", + "drying": "Sušenje", + "steam": "Para", + "weighting": "Tehtanje ", + "scheduled": "Načrtovano", + "tumbling": "Ohranjanje svežine", + "refresh": "Osvežitev", + "heating": "Ogrevanje", + "washing": "Pranje" }, "name": "Faza" }, "program_phases_td": { "state": { - "0": "Pripravljen", - "1": "Sušenje", - "2": "Sušenje", - "3": "Hlajenje", - "13": "Hlajenje", - "14": "Sušenje", - "15": "Sušenje", - "16": "Hlajenje", - "18": "Ohrani sveže", - "19": "Sušenje", - "20": "Sušenje", - "11": "Pripravljen", - "17": "unknown", - "12": "unknown" + "ready": "Pripravljen", + "heat_stroke": "Sušenje", + "drying": "Sušenje", + "cooldown": "Hlajenje", + "unknown": "unknown", + "tumbling": "Ohrani sveže" }, "name": "Faza" }, "program_phases_dw": { "state": { - "0": "Pripravljen", - "1": "Predpranje", - "2": "Pranje", - "3": "Izpiranje", - "4": "Sušenje", - "5": "Pripravljen", - "6": "Hot rinse" + "ready": "Pripravljen", + "prewash": "Predpranje", + "washing": "Pranje", + "rinse": "Izpiranje", + "drying": "Sušenje", + "hot_rinse": "Hot rinse" }, "name": "Faza" }, "dry_levels": { "state": { - "0": "Brez sušenja", - "1": "Likanje", - "2": "Suho za omaro", - "3": "Suho za omaro", - "4": "Zelo suho", - "12": "Likanje", - "13": "Suho za omaro", - "14": "Pripravljeno za uporabo", - "15": "Zelo suho", - "11": "Brez sušenja" + "no_dry": "Brez sušenja", + "iron_dry": "Likanje", + "no_dry_iron": "Suho za omaro", + "cupboard_dry": "Suho za omaro", + "extra_dry": "Zelo suho", + "ready_to_wear": "Pripravljeno za uporabo" }, "name": "Stopnja sušenja" }, - "anti_crease": { - "name": "Proti mečkanju" - }, - "power": { - "name": "Stopnja moči" - }, - "remaining_time": { - "name": "Time remaining" - }, - "temperature": { - "name": "Temperatura" - }, - "water_efficiency": { - "name": "Učinkovita raba vode" - }, - "water_saving": { - "name": "Privarčevana voda" - }, - "duration": { - "name": "Trajanje" - }, - "target_temperature": { - "name": "Ciljna temperatura" - }, - "spin_speed": { - "name": "Ožemanje" - }, - "steam_leve": { - "name": "Količina pare" - }, - "dirt_level": { - "name": "Stopnja umazanije" - }, - "delay_time": { - "name": "S funkcijo Zamik vklopa je možno odložiti začetek sušilnega cikla od 1 do 24 ur. Na zaslonu se prikaže izbrana zakasnitev. Da bi videli kako se zmanjšuje iz ure v uro, pritisnite ZAČETEK. Na ta način bo perilo suho takrat, ko boste to želeli, in zagnali cikel, ko vam to najbolj ustreza, celo ponoči." - }, - "dry_time": { - "name": "Čas sušenja" - }, - "suggested_load": { - "name": "Zmogljivost pranja" - }, - "energy_label": { - "name": "Energijska učinkovitost" - }, - "det_dust": { - "name": "Prašek" - }, - "det_liquid": { - "name": "Tekočina" - }, - "errors": { - "name": "Napaka" - }, - "programs": { - "name": "Trenutni program" - }, - "cycles_total": { - "name": "Programi Skupaj" - }, - "energy_total": { - "name": "Poraba energije Skupaj" - }, - "water_total": { - "name": "Učinkovita raba vode Skupaj" - }, - "energy_current": { - "name": "Poraba energije Current" - }, - "water_current": { - "name": "Učinkovita raba vode Current" - }, - "mach_modes_ac": { - "state": { - "0": "Samodejno", - "1": "Hlajenje", - "2": "Hlajenje", - "3": "Sušenje", - "4": "Segrevanje", - "5": "Ventilator", - "6": "Ventilator" - } - }, - "programs_td": { - "state": { - "active_dry": "Aktivno sušenje", - "allergy_care": "Protialergijski", - "all_in_one": "Vse hkrati", - "antiallergy": "Protialergijski", - "anti_odours": "Odstranjevanje vonjav", - "auto_care": "Samodejna nega", - "baby": "Oblačila dojenčkov", - "bed_quilt": "Prešite odeje", - "care_30": "Nega 30 min", - "care_45": "Nega 45 min", - "care_59": "Nega 59 min", - "coloured": "Barvno", - "daily_45_min": "DNEVNO 45 min", - "daily_perfect_59_min": "DNEVNO POPOLNO 59 min", - "darks_and_coloured": "Temno in barvno", - "delicates": "Občutljivo perilo", - "duvet": "Prešite odeje", - "eco": "Eko bombaž", - "ecospeed_cottons": "Eko hitri za bombaž", - "ecospeed_delicates": "Eko hitri za občutljivo", - "ecospeed_mixed": "Eko hitri za mešano", - "extra_hygiene": "DODATNA HIGIENA", - "fitness": "Fitnes", - "fresh_care": "Nega za svežino", - "genius": "Genius", - "hqd_baby_care": "Baby Care", - "hqd_bath_towel": "Brisače", - "hqd_bed_sheets": "Rjuhe", - "hqd_bulky": "Večji kosi", - "hqd_casual": "Za prosti čas", - "hqd_cold_wind_30": "Hladen vetrič 30 minut", - "hqd_cold_wind_timing": "Hladen vetrič ", - "hqd_cotton": "Bombaž", - "hqd_curtain": "Zavese", - "hqd_delicate": "Občutljive tkanine", - "hqd_diaper": "Plenice", - "hqd_duvet": "Prešite odeje", - "hqd_feather": "Puhovke", - "hqd_hot_wind_timing": "Vroč zrak", - "hqd_hygienic": "Higienizacija", - "hqd_i_refresh": "I-Refresh", - "hqd_i_refresh_pro": "I-Refresh Pro", - "hqd_jacket": "Suknjiči", - "hqd_jeans": "Kavbojke", - "hqd_luxury": "Luxury", - "hqd_mix": "Mešano", - "hqd_night_dry": "Sušenje čez noč", - "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", - "hqd_quick_20": "Hitro 20", - "hqd_quick_30": "Hitro 30", - "hqd_quick_dry": "Hitro sušenje 30", - "hqd_quilt": "Posteljna pregrinjala", - "hqd_refresh": "Osvežitev", - "hqd_school_uniform": "Šolska uniforma", - "hqd_shirt": "Srajce", - "hqd_shoes": "Obuvala", - "hqd_silk": "Svila", - "hqd_sports": "Šport", - "hqd_synthetics": "Sintetika", - "hqd_timer": "Časovno", - "hqd_towel": "Brisače", - "hqd_underwear": "Spodnje perilo", - "hqd_warm_up": "Pogrevanje", - "hqd_wool": "Volna", - "hqd_working_suit": "Delovna oblačila", - "hygiene": "Higiena", - "iot_checkup": "Pregled", - "iot_dry_anti_mites": "Proti pršicam", - "iot_dry_baby": "Oblačila dojenčkov", - "iot_dry_backpacks": "Nahrbtniki", - "iot_dry_bathrobe": "Kopalni plašč", - "iot_dry_bed_linen": "Posteljnina", - "iot_dry_bed_quilt": "Prešite odeje", - "iot_dry_cotton": "Bombaž", - "iot_dry_cuddly_toys": "Plišaste igračke", - "iot_dry_curtains": "Zavese", - "iot_dry_dehumidifier": "Odstranjevalec vlage", - "iot_dry_delicates": "Občutljivo", - "iot_dry_delicate_tablecloths": "Občutljivi namizni prti", - "iot_dry_denim_jeans": "Denim – jeans", - "iot_dry_down_jacket": "Suknjiči", - "iot_dry_duvet": "Prešite odeje", - "iot_dry_easy_iron_cotton": "Super lažje likanje", - "iot_dry_easy_iron_synthetics": "Super lažje likanje sintetike", - "iot_dry_gym_fit": "Oblačila za telovadbo in fitnes", - "iot_dry_lingerie": "Spodnje perilo", - "iot_dry_mixed": "Mešano", - "iot_dry_playsuits": "Pajaci", - "iot_dry_rapid_30": "Rapid 30", - "iot_dry_rapid_59": "Hitro 59’", - "iot_dry_refresh": "Osvežitev", - "iot_dry_regenerates_waterproof": "Obnovitev nepremočljivih oblačil", - "iot_dry_relax_creases": "Mehčanje gub", - "iot_dry_shirts": "Srajce", - "iot_dry_small_load": "Malo perila", - "iot_dry_swimsuits_and_bikinis": "Kopalke", - "iot_dry_synthetics": "Sintetika", - "iot_dry_synthetic_dry": "Sušenje sintetike", - "iot_dry_tablecloths": "Namizni prti", - "iot_dry_technical_fabrics": "Tehnične tkanine", - "iot_dry_warm_embrace": "Mehkoba", - "iot_dry_wool": "Woolmark", - "jeans": "Džins", - "mix_and_dry": "Sušenje – mešana sestava", - "pets": "Hišne živali", - "pre_iron": "Pred likanjem", - "rapid_30": "Rapid 30", - "rapid_45": "Hitri 45 min", - "rapid_59": "Popolni hitri program 59 min.", - "refresh": "Osvežitev", - "relax_creases": "Mehčanje gub", - "saving_30_min": "EKO 30 min", - "shirts": "Srajce", - "shoes": "Obuvala", - "small_load": "Malo perila", - "soft_care": "Nega za mehkobo", - "sport_plus": "Športna oblacila", - "super_easy_iron_misti": "Super lažje likanje mešanih tkanin", - "super_easy_iron_xxl": "Super lažje likanje XXL", - "super_fast_cottons": "Super hitri za bombaž", - "super_fast_delicates": "Super hitri za občutljivo", - "synthetics": "Sintetika", - "total_care": "Total Care", - "trainers": "Športna obutev", - "ultra_care": "Ultra Care", - "waterproof_revitalize": "Obnovitev nepremočljivih oblačil", - "whites": "Belo", - "wool": "Sušenje volne", - "woolmark": "Woolmark", - "xxl_load": "Zelo veliki kosi perila", - "zoom_59": "Zoom 59" - }, - "name": "Program" - }, - "room_temperature": { - "name": "Sobna temperatura" - }, - "humidity": { - "name": "Vlaga " - }, - "freezer_temp": { - "name": "Temperatura zamrzovalnika" - }, - "fridge_temp": { - "name": "Temperatura hladilnika" - }, "programs_ac": { "state": { "iot_10_heating": "Funkcija ogrevanja pri 10 °C", @@ -545,6 +293,143 @@ }, "name": "Program" }, + "programs_td": { + "state": { + "active_dry": "Aktivno sušenje", + "allergy_care": "Protialergijski", + "all_in_one": "Vse hkrati", + "antiallergy": "Protialergijski", + "anti_odours": "Odstranjevanje vonjav", + "auto_care": "Samodejna nega", + "baby": "Oblačila dojenčkov", + "bed_quilt": "Prešite odeje", + "care_30": "Nega 30 min", + "care_45": "Nega 45 min", + "care_59": "Nega 59 min", + "coloured": "Barvno", + "daily_45_min": "DNEVNO 45 min", + "daily_perfect_59_min": "DNEVNO POPOLNO 59 min", + "darks_and_coloured": "Temno in barvno", + "delicates": "Občutljivo perilo", + "duvet": "Prešite odeje", + "eco": "Eko bombaž", + "ecospeed_cottons": "Eko hitri za bombaž", + "ecospeed_delicates": "Eko hitri za občutljivo", + "ecospeed_mixed": "Eko hitri za mešano", + "extra_hygiene": "DODATNA HIGIENA", + "fitness": "Fitnes", + "fresh_care": "Nega za svežino", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Brisače", + "hqd_bed_sheets": "Rjuhe", + "hqd_bulky": "Večji kosi", + "hqd_casual": "Za prosti čas", + "hqd_cold_wind_30": "Hladen vetrič 30 minut", + "hqd_cold_wind_timing": "Hladen vetrič ", + "hqd_cotton": "Bombaž", + "hqd_curtain": "Zavese", + "hqd_delicate": "Občutljive tkanine", + "hqd_diaper": "Plenice", + "hqd_duvet": "Prešite odeje", + "hqd_feather": "Puhovke", + "hqd_hot_wind_timing": "Vroč zrak", + "hqd_hygienic": "Higienizacija", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Suknjiči", + "hqd_jeans": "Kavbojke", + "hqd_luxury": "Luxury", + "hqd_mix": "Mešano", + "hqd_night_dry": "Sušenje čez noč", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Hitro 20", + "hqd_quick_30": "Hitro 30", + "hqd_quick_dry": "Hitro sušenje 30", + "hqd_quilt": "Posteljna pregrinjala", + "hqd_refresh": "Osvežitev", + "hqd_school_uniform": "Šolska uniforma", + "hqd_shirt": "Srajce", + "hqd_shoes": "Obuvala", + "hqd_silk": "Svila", + "hqd_sports": "Šport", + "hqd_synthetics": "Sintetika", + "hqd_timer": "Časovno", + "hqd_towel": "Brisače", + "hqd_underwear": "Spodnje perilo", + "hqd_warm_up": "Pogrevanje", + "hqd_wool": "Volna", + "hqd_working_suit": "Delovna oblačila", + "hygiene": "Higiena", + "iot_checkup": "Pregled", + "iot_dry_anti_mites": "Proti pršicam", + "iot_dry_baby": "Oblačila dojenčkov", + "iot_dry_backpacks": "Nahrbtniki", + "iot_dry_bathrobe": "Kopalni plašč", + "iot_dry_bed_linen": "Posteljnina", + "iot_dry_bed_quilt": "Prešite odeje", + "iot_dry_cotton": "Bombaž", + "iot_dry_cuddly_toys": "Plišaste igračke", + "iot_dry_curtains": "Zavese", + "iot_dry_dehumidifier": "Odstranjevalec vlage", + "iot_dry_delicates": "Občutljivo", + "iot_dry_delicate_tablecloths": "Občutljivi namizni prti", + "iot_dry_denim_jeans": "Denim – jeans", + "iot_dry_down_jacket": "Suknjiči", + "iot_dry_duvet": "Prešite odeje", + "iot_dry_easy_iron_cotton": "Super lažje likanje", + "iot_dry_easy_iron_synthetics": "Super lažje likanje sintetike", + "iot_dry_gym_fit": "Oblačila za telovadbo in fitnes", + "iot_dry_lingerie": "Spodnje perilo", + "iot_dry_mixed": "Mešano", + "iot_dry_playsuits": "Pajaci", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Hitro 59’", + "iot_dry_refresh": "Osvežitev", + "iot_dry_regenerates_waterproof": "Obnovitev nepremočljivih oblačil", + "iot_dry_relax_creases": "Mehčanje gub", + "iot_dry_shirts": "Srajce", + "iot_dry_small_load": "Malo perila", + "iot_dry_swimsuits_and_bikinis": "Kopalke", + "iot_dry_synthetics": "Sintetika", + "iot_dry_synthetic_dry": "Sušenje sintetike", + "iot_dry_tablecloths": "Namizni prti", + "iot_dry_technical_fabrics": "Tehnične tkanine", + "iot_dry_warm_embrace": "Mehkoba", + "iot_dry_wool": "Woolmark", + "jeans": "Džins", + "mix_and_dry": "Sušenje – mešana sestava", + "pets": "Hišne živali", + "pre_iron": "Pred likanjem", + "rapid_30": "Rapid 30", + "rapid_45": "Hitri 45 min", + "rapid_59": "Popolni hitri program 59 min.", + "refresh": "Osvežitev", + "relax_creases": "Mehčanje gub", + "saving_30_min": "EKO 30 min", + "shirts": "Srajce", + "shoes": "Obuvala", + "small_load": "Malo perila", + "soft_care": "Nega za mehkobo", + "sport_plus": "Športna oblacila", + "super_easy_iron_misti": "Super lažje likanje mešanih tkanin", + "super_easy_iron_xxl": "Super lažje likanje XXL", + "super_fast_cottons": "Super hitri za bombaž", + "super_fast_delicates": "Super hitri za občutljivo", + "synthetics": "Sintetika", + "total_care": "Total Care", + "trainers": "Športna obutev", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Obnovitev nepremočljivih oblačil", + "whites": "Belo", + "wool": "Sušenje volne", + "woolmark": "Woolmark", + "xxl_load": "Zelo veliki kosi perila", + "zoom_59": "Zoom 59" + }, + "name": "Program" + }, "programs_wm": { "state": { "20_degrees_coloured_cottons": "20° pisano in bombaž", @@ -556,7 +441,7 @@ "allergy_care_pro": "Nega proti alergijam Pro", "all_in_one_49": "Vse v enem 49'.", "all_in_one_59": "Vse v enem 59'.", - "all_in_one_59_steam": "Aktivno pranje + para", + "all_in_one_59_steam": "Vse v enem 59' + para", "autocare": "Samodejna nega", "autoclean": "Čiščenje bobna", "baby_60": "Vsa otroška oblačila 60 °C", @@ -622,7 +507,7 @@ "iot_active_steam": "Para", "iot_active_wash_steam": "Aktivno pranje", "iot_allergy_care_pro": "Nega proti alergijam Pro", - "iot_all_in_one_59_steam": "Aktivno pranje + para", + "iot_all_in_one_59_steam": "Vse v enem 59' + para", "iot_checkup": "Preveri", "iot_colour_59_steam": "Barvno perilo 59' + para", "iot_cottons_steam": "Bombaž + Para", @@ -889,9 +774,148 @@ "sparkling": "Peneče vino", "white": "Belo" } + }, + "dry_time": { + "name": "Čas sušenja" + }, + "power": { + "name": "Stopnja moči" + }, + "remaining_time": { + "name": "Time remaining" + }, + "temperature": { + "name": "Temperatura" + }, + "water_efficiency": { + "name": "Učinkovita raba vode" + }, + "water_saving": { + "name": "Privarčevana voda" + }, + "duration": { + "name": "Trajanje" + }, + "target_temperature": { + "name": "Ciljna temperatura" + }, + "spin_speed": { + "name": "Ožemanje" + }, + "steam_leve": { + "name": "Količina pare" + }, + "dirt_level": { + "name": "Stopnja umazanije" + }, + "delay_time": { + "name": "S funkcijo Zamik vklopa je možno odložiti začetek sušilnega cikla od 1 do 24 ur. Na zaslonu se prikaže izbrana zakasnitev. Da bi videli kako se zmanjšuje iz ure v uro, pritisnite ZAČETEK. Na ta način bo perilo suho takrat, ko boste to želeli, in zagnali cikel, ko vam to najbolj ustreza, celo ponoči." + }, + "suggested_load": { + "name": "Zmogljivost pranja" + }, + "energy_label": { + "name": "Energijska učinkovitost" + }, + "det_dust": { + "name": "Prašek" + }, + "det_liquid": { + "name": "Tekočina" + }, + "errors": { + "name": "Napaka" + }, + "programs": { + "name": "Trenutni program" + }, + "room_temperature": { + "name": "Sobna temperatura" + }, + "humidity": { + "name": "Vlaga " + }, + "cycles_total": { + "name": "Programi Skupaj" + }, + "energy_total": { + "name": "Poraba energije Skupaj" + }, + "water_total": { + "name": "Učinkovita raba vode Skupaj" + }, + "energy_current": { + "name": "Poraba energije Current" + }, + "water_current": { + "name": "Učinkovita raba vode Current" + }, + "freezer_temp": { + "name": "Temperatura zamrzovalnika" + }, + "fridge_temp": { + "name": "Temperatura hladilnika" } }, "select": { + "dry_levels": { + "state": { + "no_dry": "Brez sušenja", + "iron_dry": "Likanje", + "no_dry_iron": "Suho za omaro", + "cupboard_dry": "Suho za omaro", + "extra_dry": "Zelo suho", + "ready_to_wear": "Pripravljeno za uporabo" + }, + "name": "Stopnja sušenja" + }, + "eco_pilot": { + "state": { + "touch_off": "Izklop", + "avoid_touch": "Brez dotika", + "follow_touch": "Sledenje" + }, + "name": "Eko pilot" + }, + "fan_mode": { + "state": { + "high": "Visoko", + "mid": "Srednje ", + "low": "Nizko", + "auto": "Samodejno" + } + }, + "ref_zones": { + "state": { + "fridge": "Hladilnik", + "freezer": "Zamrzovalnik", + "vtroom1": "My Zone", + "fridge_freezer": "Hladilnik & Zamrzovalnik" + }, + "name": "Cona" + }, + "programs_ac": { + "state": { + "iot_10_heating": "Funkcija ogrevanja pri 10 °C", + "iot_auto": "Samodejno", + "iot_cool": "Hlajenje", + "iot_dry": "Sušenje", + "iot_fan": "Ventilator", + "iot_heat": "Segrevanje", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Samoočiščevanje", + "iot_self_clean": "Samodejno čiščenje", + "iot_self_clean_56": "Sterilno čiščenje 56°C", + "iot_simple_start": "Zaženi zdaj", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + samodejno", + "iot_uv_and_cool": "UV + hlajenje", + "iot_uv_and_dry": "UV + razvlaževanje", + "iot_uv_and_fan": "UV + ventilator", + "iot_uv_and_heat": "UV + gretje" + }, + "name": "Program" + }, "programs_dw": { "state": { "59_min": "Hitri progr. 59'", @@ -1241,7 +1265,7 @@ "allergy_care_pro": "Nega proti alergijam Pro", "all_in_one_49": "Vse v enem 49'.", "all_in_one_59": "Vse v enem 59'.", - "all_in_one_59_steam": "Aktivno pranje + para", + "all_in_one_59_steam": "Vse v enem 59' + para", "autocare": "Samodejna nega", "autoclean": "Čiščenje bobna", "baby_60": "Vsa otroška oblačila 60 °C", @@ -1307,7 +1331,7 @@ "iot_active_steam": "Para", "iot_active_wash_steam": "Aktivno pranje", "iot_allergy_care_pro": "Nega proti alergijam Pro", - "iot_all_in_one_59_steam": "Aktivno pranje + para", + "iot_all_in_one_59_steam": "Vse v enem 59' + para", "iot_checkup": "Preveri", "iot_colour_59_steam": "Barvno perilo 59' + para", "iot_cottons_steam": "Bombaž + Para", @@ -1540,69 +1564,6 @@ }, "name": "Program" }, - "dry_levels": { - "state": { - "0": "Brez sušenja", - "1": "Likanje", - "2": "Suho za omaro", - "3": "Suho za omaro", - "4": "Zelo suho", - "12": "Likanje", - "13": "Suho za omaro", - "14": "Pripravljeno za uporabo", - "15": "Zelo suho", - "11": "Brez sušenja" - }, - "name": "Stopnja sušenja" - }, - "spin_speed": { - "name": "Ožemanje" - }, - "temperature": { - "name": "Temperatura" - }, - "dry_time": { - "name": "Čas sušenja" - }, - "eco_pilot": { - "state": { - "0": "Izklop", - "1": "Brez dotika", - "2": "Sledenje" - }, - "name": "Eko pilot" - }, - "fan_mode": { - "state": { - "1": "Visoko", - "2": "Srednje ", - "3": "Nizko", - "4": "Samodejno", - "5": "Samodejno" - } - }, - "programs_ac": { - "state": { - "iot_10_heating": "Funkcija ogrevanja pri 10 °C", - "iot_auto": "Samodejno", - "iot_cool": "Hlajenje", - "iot_dry": "Sušenje", - "iot_fan": "Ventilator", - "iot_heat": "Segrevanje", - "iot_nano_aqua": "Nano Aqua", - "iot_purify": "Samoočiščevanje", - "iot_self_clean": "Samodejno čiščenje", - "iot_self_clean_56": "Sterilno čiščenje 56°C", - "iot_simple_start": "Zaženi zdaj", - "iot_uv": "UV", - "iot_uv_and_auto": "UV + samodejno", - "iot_uv_and_cool": "UV + hlajenje", - "iot_uv_and_dry": "UV + razvlaževanje", - "iot_uv_and_fan": "UV + ventilator", - "iot_uv_and_heat": "UV + gretje" - }, - "name": "Program" - }, "programs_ref": { "state": { "auto_set": "SAMODEJNA NASTAVITEV", @@ -1626,17 +1587,17 @@ }, "name": "Program" }, + "dry_time": { + "name": "Čas sušenja" + }, + "spin_speed": { + "name": "Ožemanje" + }, + "temperature": { + "name": "Temperatura" + }, "remaining_time": { "name": "Time remaining" - }, - "ref_zones": { - "state": { - "fridge": "Hladilnik", - "freezer": "Zamrzovalnik", - "vtroom1": "My Zone", - "fridge_freezer": "Hladilnik & Zamrzovalnik" - }, - "name": "Cona" } }, "switch": { @@ -1724,18 +1685,15 @@ "acqua_plus": { "name": "Acquaplus" }, - "auto_dose": { - "name": "Samodejno odmerjanje" - }, - "good_night": { - "name": "Lahko noč" - }, "auto_dose_softener": { "name": "Samodejno odmerjanje Mehčalec" }, "auto_dose_detergent": { "name": "Samodejno odmerjanje Detergent" }, + "good_night": { + "name": "Lahko noč" + }, "auto_set": { "name": "Samodejna nastavitev" }, @@ -1768,27 +1726,12 @@ "anti_crease": { "name": "Proti mečkanju" }, - "aqua_plus": { + "acqua_plus": { "name": "Acquaplus" }, "spin_speed": { "name": "Ožemanje" }, - "programs_dw": { - "name": "Program" - }, - "programs_ih": { - "name": "Program" - }, - "programs_ov": { - "name": "Program" - }, - "programs_td": { - "name": "Program" - }, - "programs_wm": { - "name": "Program" - }, "still_hot": { "name": "Še vedno vroče" }, @@ -1819,12 +1762,6 @@ "prewash": { "name": "Predpranje" }, - "acqua_plus": { - "name": "Acquaplus" - }, - "auto_dose": { - "name": "Samodejno odmerjanje" - }, "buzzer": { "name": "Zvočni signal ob koncu cikla" }, @@ -1850,6 +1787,17 @@ "name": "Menjava filtra" } }, + "button": { + "induction_hob": { + "name": "Indukcijska kuhalna plošča" + }, + "start_program": { + "name": "Program Start" + }, + "stop_program": { + "name": "Program Stop" + } + }, "number": { "power_management": { "name": "Upravljanje moči" @@ -1888,17 +1836,6 @@ "name": "Ciljna temperatura Hladilnik" } }, - "button": { - "induction_hob": { - "name": "Indukcijska kuhalna plošča" - }, - "start_program": { - "name": "Program Start" - }, - "stop_program": { - "name": "Program Stop" - } - }, "climate": { "air_conditioner": { "name": "Klimatska naprava" diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index 1bddfc8..ca8fd65 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -3,325 +3,73 @@ "sensor": { "washing_modes": { "state": { - "0": "Spremno", - "1": "Spremno", - "3": "Pauza", - "4": "Planirano", - "5": "Planirano", - "6": "Greška", - "7": "Spremno", - "2": "Program u toku", - "8": "Test", - "9": "Zaustavljanje ciklusa..." + "ready": "Spremno", + "running": "Program u toku", + "pause": "Pauza", + "scheduled": "Planirano", + "error": "Greška", + "test": "Test", + "ending": "Zaustavljanje ciklusa..." + } + }, + "mach_modes_ac": { + "state": { + "auto": "Automatski", + "cool": "Hlađenje", + "dry": "Sušenje", + "heat": "Toplota", + "fan": "Ventilator" } }, "program_phases_wm": { "state": { - "0": "Spremno", - "1": "Pranje", - "2": "Pranje", - "3": "Centrifuga", - "4": "Ispiranje", - "5": "Ispiranje", - "6": "Ispiranje", - "7": "Sušenje", - "9": "Vodena para", - "10": "Spremno", - "11": "Centrifuga", - "12": "Vaganje ", - "13": "Vaganje ", - "14": "Pranje", - "15": "Pranje", - "16": "Pranje", - "17": "Ispiranje", - "18": "Ispiranje", - "19": "Planirano", - "20": "Održavanje svežine", - "24": "Osvežavanje", - "25": "Pranje", - "26": "Grejanje", - "27": "Pranje" + "ready": "Spremno", + "spin": "Centrifuga", + "rinse": "Ispiranje", + "drying": "Sušenje", + "steam": "Vodena para", + "weighting": "Vaganje ", + "scheduled": "Planirano", + "tumbling": "Održavanje svežine", + "refresh": "Osvežavanje", + "heating": "Grejanje", + "washing": "Pranje" }, "name": "Faza" }, "program_phases_td": { "state": { - "0": "Spremno", - "1": "Sušenje", - "2": "Sušenje", - "3": "Hlađenje", - "13": "Hlađenje", - "14": "Sušenje", - "15": "Sušenje", - "16": "Hlađenje", - "18": "Očuvanje svežine", - "19": "Sušenje", - "20": "Sušenje", - "11": "Spremno", - "17": "unknown", - "12": "unknown" + "ready": "Spremno", + "heat_stroke": "Sušenje", + "drying": "Sušenje", + "cooldown": "Hlađenje", + "unknown": "unknown", + "tumbling": "Očuvanje svežine" }, "name": "Faza" }, "program_phases_dw": { "state": { - "0": "Spremno", - "1": "Pretpranje", - "2": "Pranje", - "3": "Ispiranje", - "4": "Sušenje", - "5": "Spremno", - "6": "Hot rinse" + "ready": "Spremno", + "prewash": "Pretpranje", + "washing": "Pranje", + "rinse": "Ispiranje", + "drying": "Sušenje", + "hot_rinse": "Hot rinse" }, "name": "Faza" }, "dry_levels": { "state": { - "0": "Bez sušenja", - "1": "Peglanje", - "2": "Suvo za ormar", - "3": "Suvo za ormar", - "4": "Ekstra suvo", - "12": "Peglanje", - "13": "Suvo za ormar", - "14": "Spremno za nošenje", - "15": "Ekstra suvo", - "11": "Bez sušenja" + "no_dry": "Bez sušenja", + "iron_dry": "Peglanje", + "no_dry_iron": "Suvo za ormar", + "cupboard_dry": "Suvo za ormar", + "extra_dry": "Ekstra suvo", + "ready_to_wear": "Spremno za nošenje" }, "name": "Nivo sušenja" }, - "anti_crease": { - "name": "Protiv gužvanja" - }, - "power": { - "name": "Jačina" - }, - "remaining_time": { - "name": "Preostalo vreme" - }, - "temperature": { - "name": "Temperatura" - }, - "water_efficiency": { - "name": "Efikasnost vode" - }, - "water_saving": { - "name": "Ušteda vode" - }, - "duration": { - "name": "Trajanje" - }, - "target_temperature": { - "name": "Željena temperatura" - }, - "spin_speed": { - "name": "Centrifuga" - }, - "steam_leve": { - "name": "Nivo pare" - }, - "dirt_level": { - "name": "Nivo zaprljanosti" - }, - "delay_time": { - "name": "Odloženi start" - }, - "dry_time": { - "name": "Vreme sušenja" - }, - "suggested_load": { - "name": "Kapacitet punjenja" - }, - "energy_label": { - "name": "Energetska efikasnost" - }, - "det_dust": { - "name": "Prašak" - }, - "det_liquid": { - "name": "Tečni" - }, - "errors": { - "name": "Greška" - }, - "programs": { - "name": "Trenutni program" - }, - "cycles_total": { - "name": "Ciklusi Ukupno" - }, - "energy_total": { - "name": "Potrošnja energije Ukupno" - }, - "water_total": { - "name": "Efikasnost vode Ukupno" - }, - "energy_current": { - "name": "Potrošnja energije Current" - }, - "water_current": { - "name": "Efikasnost vode Current" - }, - "mach_modes_ac": { - "state": { - "0": "Automatski", - "1": "Hlađenje", - "2": "Hlađenje", - "3": "Sušenje", - "4": "Toplota", - "5": "Ventilator", - "6": "Ventilator" - } - }, - "programs_td": { - "state": { - "active_dry": "Aktivno sušenje", - "allergy_care": "Antialergijski", - "all_in_one": "All in One", - "antiallergy": "Antialergijski", - "anti_odours": "Protiv neugodnih mirisa", - "auto_care": "Aktivna nega", - "baby": "Baby", - "bed_quilt": "Ćebad i jorgani", - "care_30": "Nega 30", - "care_45": "Nega 45", - "care_59": "Nega 59", - "coloured": "Obojeno", - "daily_45_min": "SVAKODNEVNI 45'", - "daily_perfect_59_min": "PERFECT SVAKODNEVNI 59'", - "darks_and_coloured": "Tamno i obojeno", - "delicates": "Osetljivo", - "duvet": "Jorgani", - "eco": "Eko pamuk", - "ecospeed_cottons": "Ecospeed Pamuk", - "ecospeed_delicates": "Ecospeed osetljive tkanine", - "ecospeed_mixed": "Ecospeed Mešano", - "extra_hygiene": "EXTRA HIGIJENA", - "fitness": "Fitnes", - "fresh_care": "Tretman za osvežavanje", - "genius": "Genius", - "hqd_baby_care": "Baby Care", - "hqd_bath_towel": "Peškiri", - "hqd_bed_sheets": "Posteljina", - "hqd_bulky": "Glomazni artikli", - "hqd_casual": "Neformalno", - "hqd_cold_wind_30": "Hladan vazduh 30 minuta", - "hqd_cold_wind_timing": "Hladan vazduh ", - "hqd_cotton": "Pamuk", - "hqd_curtain": "Zavese", - "hqd_delicate": "Osetljive tkanine", - "hqd_diaper": "Pelene", - "hqd_duvet": "Jorgan", - "hqd_feather": "Perjane jakne", - "hqd_hot_wind_timing": "Vruć vazduh", - "hqd_hygienic": "Higijenski", - "hqd_i_refresh": "I-Refresh", - "hqd_i_refresh_pro": "I-Refresh Pro", - "hqd_jacket": "Jakne", - "hqd_jeans": "Džins", - "hqd_luxury": "Luksuzno", - "hqd_mix": "Mešovito", - "hqd_night_dry": "Noćno sušenje", - "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", - "hqd_quick_20": "Brzo 20", - "hqd_quick_30": "Brzo 30", - "hqd_quick_dry": "Brzo sušenje 30", - "hqd_quilt": "Jorgani", - "hqd_refresh": "Osvežavanje", - "hqd_school_uniform": "Školska uniforma", - "hqd_shirt": "Košulje", - "hqd_shoes": "Cipele", - "hqd_silk": "Svila", - "hqd_sports": "Sportska odeća", - "hqd_synthetics": "Sintetika", - "hqd_timer": "Vremenski ograničeno", - "hqd_towel": "Peškiri", - "hqd_underwear": "Donji veš", - "hqd_warm_up": "Zagrevanje", - "hqd_wool": "Vuna", - "hqd_working_suit": "Radna odeća", - "hygiene": "Higijena", - "iot_checkup": "Provera", - "iot_dry_anti_mites": "Anti-grinje", - "iot_dry_baby": "Baby", - "iot_dry_backpacks": "Rančevi", - "iot_dry_bathrobe": "Bade-mantili", - "iot_dry_bed_linen": "Posteljine", - "iot_dry_bed_quilt": "Ćebad i jorgani", - "iot_dry_cotton": "Pamuk", - "iot_dry_cuddly_toys": "Plišane igračke", - "iot_dry_curtains": "Zavese", - "iot_dry_dehumidifier": "Uklanjanje vlage", - "iot_dry_delicates": "Delikatni", - "iot_dry_delicate_tablecloths": "Osetljivi stoljnjaci", - "iot_dry_denim_jeans": "Teksas - džins", - "iot_dry_down_jacket": "Jacket", - "iot_dry_duvet": "Jorgani", - "iot_dry_easy_iron_cotton": "Super Lako peglanje", - "iot_dry_easy_iron_synthetics": "Sintetika koja se veoma lako pegla", - "iot_dry_gym_fit": "Gym fit - Fitness", - "iot_dry_lingerie": "Donji veš", - "iot_dry_mixed": "Mešani veš", - "iot_dry_playsuits": "Kostimi", - "iot_dry_rapid_30": "Rapid 30", - "iot_dry_rapid_59": "Brzi program 59'.", - "iot_dry_refresh": "Osvežavanje", - "iot_dry_regenerates_waterproof": "Regenerisanje vodootpornosti", - "iot_dry_relax_creases": "Otpuštanje prevoja", - "iot_dry_shirts": "Košulje", - "iot_dry_small_load": "Mala količina veša", - "iot_dry_swimsuits_and_bikinis": "Odeća za kupanje", - "iot_dry_synthetics": "Sintetika", - "iot_dry_synthetic_dry": "Sušenje sintetike", - "iot_dry_tablecloths": "Stolnjaci", - "iot_dry_technical_fabrics": "Sintetički materijali", - "iot_dry_warm_embrace": "Topao zagrljaj", - "iot_dry_wool": "Woolmark", - "jeans": "Jeans", - "mix_and_dry": "Mix&Dry", - "pets": "Ljubimci", - "pre_iron": "Pre-peglanje", - "rapid_30": "Rapid 30", - "rapid_45": "Brzi 45 min", - "rapid_59": "Perfect Rapid 59 Min", - "refresh": "Osvežavanje", - "relax_creases": "Otpuštanje prevoja", - "saving_30_min": "EKO 30'", - "shirts": "Košulje", - "shoes": "Cipele", - "small_load": "Mala količina veša", - "soft_care": "Blagi tretman", - "sport_plus": "Sportska odeca", - "super_easy_iron_misti": "Mešani veš koji se veoma lako pegla", - "super_easy_iron_xxl": "XXL veš koji se veoma lako pegla", - "super_fast_cottons": "Super brzo Pamuk", - "super_fast_delicates": "Super brzo Osetljivo", - "synthetics": "Sintetika", - "total_care": "Total Care", - "trainers": "Trenerke i sportska obuća", - "ultra_care": "Ultra Care", - "waterproof_revitalize": "Revitalizacija vodootpornosti", - "whites": "Beli veš", - "wool": "Sušenje vune", - "woolmark": "Woolmark", - "xxl_load": "XXL veš", - "zoom_59": "Zoom 59" - }, - "name": "Program" - }, - "room_temperature": { - "name": "Sobna temperatura" - }, - "humidity": { - "name": "Vlažnost" - }, - "freezer_temp": { - "name": "Temperatura zamrzivača" - }, - "fridge_temp": { - "name": "Temperatura frižidera" - }, "programs_ac": { "state": { "iot_10_heating": "Funkcija grejanja – 10° C", @@ -545,6 +293,143 @@ }, "name": "Program" }, + "programs_td": { + "state": { + "active_dry": "Aktivno sušenje", + "allergy_care": "Antialergijski", + "all_in_one": "All in One", + "antiallergy": "Antialergijski", + "anti_odours": "Protiv neugodnih mirisa", + "auto_care": "Aktivna nega", + "baby": "Baby", + "bed_quilt": "Ćebad i jorgani", + "care_30": "Nega 30", + "care_45": "Nega 45", + "care_59": "Nega 59", + "coloured": "Obojeno", + "daily_45_min": "SVAKODNEVNI 45'", + "daily_perfect_59_min": "PERFECT SVAKODNEVNI 59'", + "darks_and_coloured": "Tamno i obojeno", + "delicates": "Osetljivo", + "duvet": "Jorgani", + "eco": "Eko pamuk", + "ecospeed_cottons": "Ecospeed Pamuk", + "ecospeed_delicates": "Ecospeed osetljive tkanine", + "ecospeed_mixed": "Ecospeed Mešano", + "extra_hygiene": "EXTRA HIGIJENA", + "fitness": "Fitnes", + "fresh_care": "Tretman za osvežavanje", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Peškiri", + "hqd_bed_sheets": "Posteljina", + "hqd_bulky": "Glomazni artikli", + "hqd_casual": "Neformalno", + "hqd_cold_wind_30": "Hladan vazduh 30 minuta", + "hqd_cold_wind_timing": "Hladan vazduh ", + "hqd_cotton": "Pamuk", + "hqd_curtain": "Zavese", + "hqd_delicate": "Osetljive tkanine", + "hqd_diaper": "Pelene", + "hqd_duvet": "Jorgan", + "hqd_feather": "Perjane jakne", + "hqd_hot_wind_timing": "Vruć vazduh", + "hqd_hygienic": "Higijenski", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Jakne", + "hqd_jeans": "Džins", + "hqd_luxury": "Luksuzno", + "hqd_mix": "Mešovito", + "hqd_night_dry": "Noćno sušenje", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Brzo 20", + "hqd_quick_30": "Brzo 30", + "hqd_quick_dry": "Brzo sušenje 30", + "hqd_quilt": "Jorgani", + "hqd_refresh": "Osvežavanje", + "hqd_school_uniform": "Školska uniforma", + "hqd_shirt": "Košulje", + "hqd_shoes": "Cipele", + "hqd_silk": "Svila", + "hqd_sports": "Sportska odeća", + "hqd_synthetics": "Sintetika", + "hqd_timer": "Vremenski ograničeno", + "hqd_towel": "Peškiri", + "hqd_underwear": "Donji veš", + "hqd_warm_up": "Zagrevanje", + "hqd_wool": "Vuna", + "hqd_working_suit": "Radna odeća", + "hygiene": "Higijena", + "iot_checkup": "Provera", + "iot_dry_anti_mites": "Anti-grinje", + "iot_dry_baby": "Baby", + "iot_dry_backpacks": "Rančevi", + "iot_dry_bathrobe": "Bade-mantili", + "iot_dry_bed_linen": "Posteljine", + "iot_dry_bed_quilt": "Ćebad i jorgani", + "iot_dry_cotton": "Pamuk", + "iot_dry_cuddly_toys": "Plišane igračke", + "iot_dry_curtains": "Zavese", + "iot_dry_dehumidifier": "Uklanjanje vlage", + "iot_dry_delicates": "Delikatni", + "iot_dry_delicate_tablecloths": "Osetljivi stoljnjaci", + "iot_dry_denim_jeans": "Teksas - džins", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Jorgani", + "iot_dry_easy_iron_cotton": "Super Lako peglanje", + "iot_dry_easy_iron_synthetics": "Sintetika koja se veoma lako pegla", + "iot_dry_gym_fit": "Gym fit - Fitness", + "iot_dry_lingerie": "Donji veš", + "iot_dry_mixed": "Mešani veš", + "iot_dry_playsuits": "Kostimi", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Brzi program 59'.", + "iot_dry_refresh": "Osvežavanje", + "iot_dry_regenerates_waterproof": "Regenerisanje vodootpornosti", + "iot_dry_relax_creases": "Otpuštanje prevoja", + "iot_dry_shirts": "Košulje", + "iot_dry_small_load": "Mala količina veša", + "iot_dry_swimsuits_and_bikinis": "Odeća za kupanje", + "iot_dry_synthetics": "Sintetika", + "iot_dry_synthetic_dry": "Sušenje sintetike", + "iot_dry_tablecloths": "Stolnjaci", + "iot_dry_technical_fabrics": "Sintetički materijali", + "iot_dry_warm_embrace": "Topao zagrljaj", + "iot_dry_wool": "Woolmark", + "jeans": "Jeans", + "mix_and_dry": "Mix&Dry", + "pets": "Ljubimci", + "pre_iron": "Pre-peglanje", + "rapid_30": "Rapid 30", + "rapid_45": "Brzi 45 min", + "rapid_59": "Perfect Rapid 59 Min", + "refresh": "Osvežavanje", + "relax_creases": "Otpuštanje prevoja", + "saving_30_min": "EKO 30'", + "shirts": "Košulje", + "shoes": "Cipele", + "small_load": "Mala količina veša", + "soft_care": "Blagi tretman", + "sport_plus": "Sportska odeca", + "super_easy_iron_misti": "Mešani veš koji se veoma lako pegla", + "super_easy_iron_xxl": "XXL veš koji se veoma lako pegla", + "super_fast_cottons": "Super brzo Pamuk", + "super_fast_delicates": "Super brzo Osetljivo", + "synthetics": "Sintetika", + "total_care": "Total Care", + "trainers": "Trenerke i sportska obuća", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Revitalizacija vodootpornosti", + "whites": "Beli veš", + "wool": "Sušenje vune", + "woolmark": "Woolmark", + "xxl_load": "XXL veš", + "zoom_59": "Zoom 59" + }, + "name": "Program" + }, "programs_wm": { "state": { "20_degrees_coloured_cottons": "20° u boji i pamuk", @@ -556,7 +441,7 @@ "allergy_care_pro": "Tretman protiv alergija Pro", "all_in_one_49": "Sve u jedan 49'.", "all_in_one_59": "Sve u jedan 59'.", - "all_in_one_59_steam": "Aktivno pranje + para", + "all_in_one_59_steam": "Sve u jedan 59' + para", "autocare": "Automatska nega", "autoclean": "Čišćenje bubnja", "baby_60": "All Baby 60°C", @@ -622,7 +507,7 @@ "iot_active_steam": "Para", "iot_active_wash_steam": "Aktivno pranje", "iot_allergy_care_pro": "Tretman protiv alergija Pro", - "iot_all_in_one_59_steam": "Aktivno pranje + para", + "iot_all_in_one_59_steam": "Sve u jedan 59' + para", "iot_checkup": "Provera", "iot_colour_59_steam": "Šarena odeća 59' + para", "iot_cottons_steam": "Pamuk + Para", @@ -889,9 +774,148 @@ "sparkling": "Penušavo", "white": "Belo" } + }, + "dry_time": { + "name": "Vreme sušenja" + }, + "power": { + "name": "Jačina" + }, + "remaining_time": { + "name": "Preostalo vreme" + }, + "temperature": { + "name": "Temperatura" + }, + "water_efficiency": { + "name": "Efikasnost vode" + }, + "water_saving": { + "name": "Ušteda vode" + }, + "duration": { + "name": "Trajanje" + }, + "target_temperature": { + "name": "Željena temperatura" + }, + "spin_speed": { + "name": "Centrifuga" + }, + "steam_leve": { + "name": "Nivo pare" + }, + "dirt_level": { + "name": "Nivo zaprljanosti" + }, + "delay_time": { + "name": "Odloženi start" + }, + "suggested_load": { + "name": "Kapacitet punjenja" + }, + "energy_label": { + "name": "Energetska efikasnost" + }, + "det_dust": { + "name": "Prašak" + }, + "det_liquid": { + "name": "Tečni" + }, + "errors": { + "name": "Greška" + }, + "programs": { + "name": "Trenutni program" + }, + "room_temperature": { + "name": "Sobna temperatura" + }, + "humidity": { + "name": "Vlažnost" + }, + "cycles_total": { + "name": "Ciklusi Ukupno" + }, + "energy_total": { + "name": "Potrošnja energije Ukupno" + }, + "water_total": { + "name": "Efikasnost vode Ukupno" + }, + "energy_current": { + "name": "Potrošnja energije Current" + }, + "water_current": { + "name": "Efikasnost vode Current" + }, + "freezer_temp": { + "name": "Temperatura zamrzivača" + }, + "fridge_temp": { + "name": "Temperatura frižidera" } }, "select": { + "dry_levels": { + "state": { + "no_dry": "Bez sušenja", + "iron_dry": "Peglanje", + "no_dry_iron": "Suvo za ormar", + "cupboard_dry": "Suvo za ormar", + "extra_dry": "Ekstra suvo", + "ready_to_wear": "Spremno za nošenje" + }, + "name": "Nivo sušenja" + }, + "eco_pilot": { + "state": { + "touch_off": "Isključeno", + "avoid_touch": "Izbegavajte dodir", + "follow_touch": "Pratiti" + }, + "name": "Eko pilot" + }, + "fan_mode": { + "state": { + "high": "Visoko", + "mid": "Srednje ", + "low": "Nisko", + "auto": "Automatski" + } + }, + "ref_zones": { + "state": { + "fridge": "Frižider", + "freezer": "Zamrzivač", + "vtroom1": "My Zone", + "fridge_freezer": "Frižider & Zamrzivač" + }, + "name": "Zona" + }, + "programs_ac": { + "state": { + "iot_10_heating": "Funkcija grejanja – 10° C", + "iot_auto": "Automatski", + "iot_cool": "Hlađenje", + "iot_dry": "Sušenje", + "iot_fan": "Ventilator", + "iot_heat": "Toplota", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Samopročišćavanje", + "iot_self_clean": "Samočišćenje", + "iot_self_clean_56": "Sterilno čišćenje 56°C", + "iot_simple_start": "Pokrenuti sada", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + automatsko", + "iot_uv_and_cool": "UV+ hladno", + "iot_uv_and_dry": "UV + odvlaživač", + "iot_uv_and_fan": "UV + ventilator", + "iot_uv_and_heat": "UV + toplota" + }, + "name": "Program" + }, "programs_dw": { "state": { "59_min": "Brzi 59'", @@ -1241,7 +1265,7 @@ "allergy_care_pro": "Tretman protiv alergija Pro", "all_in_one_49": "Sve u jedan 49'.", "all_in_one_59": "Sve u jedan 59'.", - "all_in_one_59_steam": "Aktivno pranje + para", + "all_in_one_59_steam": "Sve u jedan 59' + para", "autocare": "Automatska nega", "autoclean": "Čišćenje bubnja", "baby_60": "All Baby 60°C", @@ -1307,7 +1331,7 @@ "iot_active_steam": "Para", "iot_active_wash_steam": "Aktivno pranje", "iot_allergy_care_pro": "Tretman protiv alergija Pro", - "iot_all_in_one_59_steam": "Aktivno pranje + para", + "iot_all_in_one_59_steam": "Sve u jedan 59' + para", "iot_checkup": "Provera", "iot_colour_59_steam": "Šarena odeća 59' + para", "iot_cottons_steam": "Pamuk + Para", @@ -1540,69 +1564,6 @@ }, "name": "Program" }, - "dry_levels": { - "state": { - "0": "Bez sušenja", - "1": "Peglanje", - "2": "Suvo za ormar", - "3": "Suvo za ormar", - "4": "Ekstra suvo", - "12": "Peglanje", - "13": "Suvo za ormar", - "14": "Spremno za nošenje", - "15": "Ekstra suvo", - "11": "Bez sušenja" - }, - "name": "Nivo sušenja" - }, - "spin_speed": { - "name": "Centrifuga" - }, - "temperature": { - "name": "Temperatura" - }, - "dry_time": { - "name": "Vreme sušenja" - }, - "eco_pilot": { - "state": { - "0": "Isključeno", - "1": "Izbegavajte dodir", - "2": "Pratiti" - }, - "name": "Eko pilot" - }, - "fan_mode": { - "state": { - "1": "Visoko", - "2": "Srednje ", - "3": "Nisko", - "4": "Automatski", - "5": "Automatski" - } - }, - "programs_ac": { - "state": { - "iot_10_heating": "Funkcija grejanja – 10° C", - "iot_auto": "Automatski", - "iot_cool": "Hlađenje", - "iot_dry": "Sušenje", - "iot_fan": "Ventilator", - "iot_heat": "Toplota", - "iot_nano_aqua": "Nano Aqua", - "iot_purify": "Samopročišćavanje", - "iot_self_clean": "Samočišćenje", - "iot_self_clean_56": "Sterilno čišćenje 56°C", - "iot_simple_start": "Pokrenuti sada", - "iot_uv": "UV", - "iot_uv_and_auto": "UV + automatsko", - "iot_uv_and_cool": "UV+ hladno", - "iot_uv_and_dry": "UV + odvlaživač", - "iot_uv_and_fan": "UV + ventilator", - "iot_uv_and_heat": "UV + toplota" - }, - "name": "Program" - }, "programs_ref": { "state": { "auto_set": "AUTOMATSKO PODEŠAVANJE", @@ -1626,17 +1587,17 @@ }, "name": "Program" }, + "dry_time": { + "name": "Vreme sušenja" + }, + "spin_speed": { + "name": "Centrifuga" + }, + "temperature": { + "name": "Temperatura" + }, "remaining_time": { "name": "Preostalo vreme" - }, - "ref_zones": { - "state": { - "fridge": "Frižider", - "freezer": "Zamrzivač", - "vtroom1": "My Zone", - "fridge_freezer": "Frižider & Zamrzivač" - }, - "name": "Zona" } }, "switch": { @@ -1724,18 +1685,15 @@ "acqua_plus": { "name": "Viši nivo vode" }, - "auto_dose": { - "name": "Automatsko doziranje" - }, - "good_night": { - "name": "Laku noć" - }, "auto_dose_softener": { "name": "Automatsko doziranje Omekšivač" }, "auto_dose_detergent": { "name": "Automatsko doziranje Deterdžent" }, + "good_night": { + "name": "Laku noć" + }, "auto_set": { "name": "Automatsko podešavanje" }, @@ -1768,27 +1726,12 @@ "anti_crease": { "name": "Protiv gužvanja" }, - "aqua_plus": { + "acqua_plus": { "name": "Viši nivo vode" }, "spin_speed": { "name": "Centrifuga" }, - "programs_dw": { - "name": "Program" - }, - "programs_ih": { - "name": "Program" - }, - "programs_ov": { - "name": "Program" - }, - "programs_td": { - "name": "Program" - }, - "programs_wm": { - "name": "Program" - }, "still_hot": { "name": "Još uvek vruće" }, @@ -1819,12 +1762,6 @@ "prewash": { "name": "Predpranje" }, - "acqua_plus": { - "name": "Viši nivo vode" - }, - "auto_dose": { - "name": "Automatsko doziranje" - }, "buzzer": { "name": "Zvono na kraju ciklusa" }, @@ -1850,6 +1787,17 @@ "name": "Zamena filtera" } }, + "button": { + "induction_hob": { + "name": "Indukciona ploča" + }, + "start_program": { + "name": "Program Pokretanje" + }, + "stop_program": { + "name": "Program Zaustavi" + } + }, "number": { "power_management": { "name": "Upravljanje napajanjem" @@ -1888,17 +1836,6 @@ "name": "Željena temperatura Frižider" } }, - "button": { - "induction_hob": { - "name": "Indukciona ploča" - }, - "start_program": { - "name": "Program Pokretanje" - }, - "stop_program": { - "name": "Program Zaustavi" - } - }, "climate": { "air_conditioner": { "name": "Klima uređaj" diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index d005f13..0af9515 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -3,325 +3,73 @@ "sensor": { "washing_modes": { "state": { - "0": "Hazır", - "1": "Hazır", - "3": "Duraklat", - "4": "Planlandı", - "5": "Planlandı", - "6": "Hata", - "7": "Hazır", - "2": "Program çalışıyor", - "8": "Test", - "9": "Program durduruluyor…" + "ready": "Hazır", + "running": "Program çalışıyor", + "pause": "Duraklat", + "scheduled": "Planlandı", + "error": "Hata", + "test": "Test", + "ending": "Program durduruluyor…" + } + }, + "mach_modes_ac": { + "state": { + "auto": "Otomatik", + "cool": "Soğuk", + "dry": "Kuru", + "heat": "Isı", + "fan": "Fan" } }, "program_phases_wm": { "state": { - "0": "Hazır", - "1": "Yıkama", - "2": "Yıkama", - "3": "Sıkma", - "4": "Durulama", - "5": "Durulama", - "6": "Durulama", - "7": "Kurutma", - "9": "Buhar", - "10": "Hazır", - "11": "Sıkma", - "12": "Tartma ", - "13": "Tartma ", - "14": "Yıkama", - "15": "Yıkama", - "16": "Yıkama", - "17": "Durulama", - "18": "Durulama", - "19": "Planlandı", - "20": "Tazeleme", - "24": "Tazeleme", - "25": "Yıkama", - "26": "Isıtma", - "27": "Yıkama" + "ready": "Hazır", + "spin": "Sıkma", + "rinse": "Durulama", + "drying": "Kurutma", + "steam": "Buhar", + "weighting": "Tartma ", + "scheduled": "Planlandı", + "tumbling": "Tazeleme", + "refresh": "Tazeleme", + "heating": "Isıtma", + "washing": "Yıkama" }, "name": "Aşama" }, "program_phases_td": { "state": { - "0": "Hazır", - "1": "Kurutma", - "2": "Kurutma", - "3": "Soğutma", - "13": "Soğutma", - "14": "Kurutma", - "15": "Kurutma", - "16": "Soğutma", - "18": "Tazeleme", - "19": "Kurutma", - "20": "Kurutma", - "11": "Hazır", - "17": "unknown", - "12": "unknown" + "ready": "Hazır", + "heat_stroke": "Kurutma", + "drying": "Kurutma", + "cooldown": "Soğutma", + "unknown": "unknown", + "tumbling": "Tazeleme" }, "name": "Aşama" }, "program_phases_dw": { "state": { - "0": "Hazır", - "1": "Ön Yıkama", - "2": "Yıkama", - "3": "Durulama", - "4": "Kurutma", - "5": "Hazır", - "6": "Hot rinse" + "ready": "Hazır", + "prewash": "Ön Yıkama", + "washing": "Yıkama", + "rinse": "Durulama", + "drying": "Kurutma", + "hot_rinse": "Hot rinse" }, "name": "Aşama" }, "dry_levels": { "state": { - "0": "Kurutma yok", - "1": "Ütü", - "2": "Gardırop hazır", - "3": "Gardırop hazır", - "4": "Ekstra kurutma", - "12": "Ütü", - "13": "Gardırop hazır", - "14": "Giyilmeye hazır", - "15": "Ekstra kurutma", - "11": "Kurutma yok" + "no_dry": "Kurutma yok", + "iron_dry": "Ütü", + "no_dry_iron": "Gardırop hazır", + "cupboard_dry": "Gardırop hazır", + "extra_dry": "Ekstra kurutma", + "ready_to_wear": "Giyilmeye hazır" }, "name": "Kurutma seviyesi" }, - "anti_crease": { - "name": "Kırışık açma" - }, - "power": { - "name": "Güç seviyesi" - }, - "remaining_time": { - "name": "Kalan süre" - }, - "temperature": { - "name": "Sıcaklık" - }, - "water_efficiency": { - "name": "Su verimliliği" - }, - "water_saving": { - "name": "Su tasarrufu" - }, - "duration": { - "name": "Süre" - }, - "target_temperature": { - "name": "Hedef sıcaklık" - }, - "spin_speed": { - "name": "Sıkma" - }, - "steam_leve": { - "name": "Buhar Seviyesi" - }, - "dirt_level": { - "name": "Kir seviyesi" - }, - "delay_time": { - "name": "Gecikmeli Başlatma" - }, - "dry_time": { - "name": "Kurutma zamanı" - }, - "suggested_load": { - "name": "Yük kapasitesi" - }, - "energy_label": { - "name": "Enerji verimliliği" - }, - "det_dust": { - "name": "Toz" - }, - "det_liquid": { - "name": "Sıvı" - }, - "errors": { - "name": "Hata" - }, - "programs": { - "name": "Geçerli program" - }, - "cycles_total": { - "name": "Programlar Toplam" - }, - "energy_total": { - "name": "Enerji Tüketimi Toplam" - }, - "water_total": { - "name": "Su verimliliği Toplam" - }, - "energy_current": { - "name": "Enerji Tüketimi Current" - }, - "water_current": { - "name": "Su verimliliği Current" - }, - "mach_modes_ac": { - "state": { - "0": "Otomatik", - "1": "Soğuk", - "2": "Soğuk", - "3": "Kuru", - "4": "Isı", - "5": "Fan", - "6": "Fan" - } - }, - "programs_td": { - "state": { - "active_dry": "Aktif Kurutma", - "allergy_care": "Antialerji", - "all_in_one": "Hepsi Bir Arada", - "antiallergy": "Antialerji", - "anti_odours": "Koku giderme", - "auto_care": "Oto. Bakım", - "baby": "Bebek", - "bed_quilt": "Yorgan", - "care_30": "Bakım 30", - "care_45": "Bakım 45", - "care_59": "Bakım 59", - "coloured": "Renkli", - "daily_45_min": "GUNLUK 45'", - "daily_perfect_59_min": "GUNLUK 59'", - "darks_and_coloured": "Koyu Renkliler ve Renkliler", - "delicates": "Hassas", - "duvet": "Yorgan", - "eco": "Eko Pamuk", - "ecospeed_cottons": "Eko hız Pamuklu", - "ecospeed_delicates": "ECOSEPEED Hassas", - "ecospeed_mixed": "Eko hız Karışık", - "extra_hygiene": "EKSTRA HIJYEN", - "fitness": "Fitness", - "fresh_care": "Yenileme Bakımı", - "genius": "Genius", - "hqd_baby_care": "Baby Care", - "hqd_bath_towel": "Havlular", - "hqd_bed_sheets": "Çarşaflar", - "hqd_bulky": "Hacimli eşyalar", - "hqd_casual": "Gündelik", - "hqd_cold_wind_30": "Serin esinti 30 dakika", - "hqd_cold_wind_timing": "Serin esinti ", - "hqd_cotton": "Pamuk", - "hqd_curtain": "Perdeler", - "hqd_delicate": "Narin Çamaşırlar", - "hqd_diaper": "Bebek bezi", - "hqd_duvet": "Nevresim", - "hqd_feather": "Şişme montlar", - "hqd_hot_wind_timing": "Sıcak hava", - "hqd_hygienic": "Hijyen", - "hqd_i_refresh": "I-Refresh", - "hqd_i_refresh_pro": "I-Refresh Pro", - "hqd_jacket": "Ceketler", - "hqd_jeans": "Kot pantolon", - "hqd_luxury": "Konfor", - "hqd_mix": "Karışık", - "hqd_night_dry": "Gece kurutma", - "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", - "hqd_quick_20": "Hızlı 20", - "hqd_quick_30": "Hızlı 30", - "hqd_quick_dry": "Hızlı kurutma 30", - "hqd_quilt": "Yorganlar", - "hqd_refresh": "Yenileme", - "hqd_school_uniform": "Okul üniforması", - "hqd_shirt": "Gömlekler", - "hqd_shoes": "Ayakkabılar", - "hqd_silk": "İpek", - "hqd_sports": "Spor", - "hqd_synthetics": "Sentetikler", - "hqd_timer": "Zaman Ayarlı", - "hqd_towel": "Havlular", - "hqd_underwear": "İç çamaşırı", - "hqd_warm_up": "Isıtma", - "hqd_wool": "Yün", - "hqd_working_suit": "İş giysisi", - "hygiene": "Hijyen", - "iot_checkup": "Kontrol", - "iot_dry_anti_mites": "Anti-akar", - "iot_dry_baby": "Bebek", - "iot_dry_backpacks": "Sırt Çantaları", - "iot_dry_bathrobe": "Bornoz", - "iot_dry_bed_linen": "Çarşaf", - "iot_dry_bed_quilt": "Yorgan", - "iot_dry_cotton": "Pamuklular", - "iot_dry_cuddly_toys": "Yumuşak Oyuncaklar", - "iot_dry_curtains": "Perdeler", - "iot_dry_dehumidifier": "Nem giderici", - "iot_dry_delicates": "Hassas", - "iot_dry_delicate_tablecloths": "Hassas masa örtüleri", - "iot_dry_denim_jeans": "Denim - kot pantolon", - "iot_dry_down_jacket": "Jacket", - "iot_dry_duvet": "Yorgan", - "iot_dry_easy_iron_cotton": "Süper Kolay Ütüleme", - "iot_dry_easy_iron_synthetics": "Sentetikler Süper Kolay Ütü", - "iot_dry_gym_fit": "Spor kıyafetleri", - "iot_dry_lingerie": "İç Çamaşırı", - "iot_dry_mixed": "Karışık", - "iot_dry_playsuits": "Oyun elbiseleri", - "iot_dry_rapid_30": "Rapid 30", - "iot_dry_rapid_59": "Hızlı 59'.", - "iot_dry_refresh": "Yenileme", - "iot_dry_regenerates_waterproof": "Su geçirmezliği artırmak", - "iot_dry_relax_creases": "Kırışıklık Açma", - "iot_dry_shirts": "Gömlek", - "iot_dry_small_load": "Az Çamaşır", - "iot_dry_swimsuits_and_bikinis": "Mayolar", - "iot_dry_synthetics": "Sentetik", - "iot_dry_synthetic_dry": "Sentetik Kurutma", - "iot_dry_tablecloths": "Masa örtüleri", - "iot_dry_technical_fabrics": "Teknik Kumaşlar", - "iot_dry_warm_embrace": "Sıcak Hava", - "iot_dry_wool": "Saf yün markası", - "jeans": "Kot", - "mix_and_dry": "Karışık ve Kuru", - "pets": "Evcil hayvanlar", - "pre_iron": "Ön Ütüleme", - "rapid_30": "Rapid 30", - "rapid_45": "45 dak. hızlı", - "rapid_59": "Mükemmel Hızlı 59 dk", - "refresh": "Yenileme", - "relax_creases": "Kırışıklık Açma", - "saving_30_min": "EKO 30'", - "shirts": "Gömlekler", - "shoes": "Ayakkabılar", - "small_load": "Az Çamaşır", - "soft_care": "Yumuşak Bakım", - "sport_plus": "Spor+", - "super_easy_iron_misti": "Süper Kolay Ütü karışık", - "super_easy_iron_xxl": "Süper Kolay Ütü XXL", - "super_fast_cottons": "Süper Hızlı Pamuklu", - "super_fast_delicates": "Süper Hızlı Hassas", - "synthetics": "Sentetik", - "total_care": "Total Care", - "trainers": "Spor Ayakkabıları", - "ultra_care": "Ultra Care", - "waterproof_revitalize": "Su Geçirmez Canlandırma", - "whites": "Beyazlar", - "wool": "Yünlüleri Kurutma", - "woolmark": "Saf yün markası", - "xxl_load": "XXL Çamaşır", - "zoom_59": "Yakınlaştır 59" - }, - "name": "Program" - }, - "room_temperature": { - "name": "Oda sıcaklığı" - }, - "humidity": { - "name": "Nem" - }, - "freezer_temp": { - "name": "Dondurucu sıcaklığı" - }, - "fridge_temp": { - "name": "Buzdolabı sıcaklığı" - }, "programs_ac": { "state": { "iot_10_heating": "10°C Isıtma fonksiyonu", @@ -545,6 +293,143 @@ }, "name": "Program" }, + "programs_td": { + "state": { + "active_dry": "Aktif Kurutma", + "allergy_care": "Antialerji", + "all_in_one": "Hepsi Bir Arada", + "antiallergy": "Antialerji", + "anti_odours": "Koku giderme", + "auto_care": "Oto. Bakım", + "baby": "Bebek", + "bed_quilt": "Yorgan", + "care_30": "Bakım 30", + "care_45": "Bakım 45", + "care_59": "Bakım 59", + "coloured": "Renkli", + "daily_45_min": "GUNLUK 45'", + "daily_perfect_59_min": "GUNLUK 59'", + "darks_and_coloured": "Koyu Renkliler ve Renkliler", + "delicates": "Hassas", + "duvet": "Yorgan", + "eco": "Eko Pamuk", + "ecospeed_cottons": "Eko hız Pamuklu", + "ecospeed_delicates": "ECOSEPEED Hassas", + "ecospeed_mixed": "Eko hız Karışık", + "extra_hygiene": "EKSTRA HIJYEN", + "fitness": "Fitness", + "fresh_care": "Yenileme Bakımı", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "Havlular", + "hqd_bed_sheets": "Çarşaflar", + "hqd_bulky": "Hacimli eşyalar", + "hqd_casual": "Gündelik", + "hqd_cold_wind_30": "Serin esinti 30 dakika", + "hqd_cold_wind_timing": "Serin esinti ", + "hqd_cotton": "Pamuk", + "hqd_curtain": "Perdeler", + "hqd_delicate": "Narin Çamaşırlar", + "hqd_diaper": "Bebek bezi", + "hqd_duvet": "Nevresim", + "hqd_feather": "Şişme montlar", + "hqd_hot_wind_timing": "Sıcak hava", + "hqd_hygienic": "Hijyen", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "Ceketler", + "hqd_jeans": "Kot pantolon", + "hqd_luxury": "Konfor", + "hqd_mix": "Karışık", + "hqd_night_dry": "Gece kurutma", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "Hızlı 20", + "hqd_quick_30": "Hızlı 30", + "hqd_quick_dry": "Hızlı kurutma 30", + "hqd_quilt": "Yorganlar", + "hqd_refresh": "Yenileme", + "hqd_school_uniform": "Okul üniforması", + "hqd_shirt": "Gömlekler", + "hqd_shoes": "Ayakkabılar", + "hqd_silk": "İpek", + "hqd_sports": "Spor", + "hqd_synthetics": "Sentetikler", + "hqd_timer": "Zaman Ayarlı", + "hqd_towel": "Havlular", + "hqd_underwear": "İç çamaşırı", + "hqd_warm_up": "Isıtma", + "hqd_wool": "Yün", + "hqd_working_suit": "İş giysisi", + "hygiene": "Hijyen", + "iot_checkup": "Kontrol", + "iot_dry_anti_mites": "Anti-akar", + "iot_dry_baby": "Bebek", + "iot_dry_backpacks": "Sırt Çantaları", + "iot_dry_bathrobe": "Bornoz", + "iot_dry_bed_linen": "Çarşaf", + "iot_dry_bed_quilt": "Yorgan", + "iot_dry_cotton": "Pamuklular", + "iot_dry_cuddly_toys": "Yumuşak Oyuncaklar", + "iot_dry_curtains": "Perdeler", + "iot_dry_dehumidifier": "Nem giderici", + "iot_dry_delicates": "Hassas", + "iot_dry_delicate_tablecloths": "Hassas masa örtüleri", + "iot_dry_denim_jeans": "Denim - kot pantolon", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "Yorgan", + "iot_dry_easy_iron_cotton": "Süper Kolay Ütüleme", + "iot_dry_easy_iron_synthetics": "Sentetikler Süper Kolay Ütü", + "iot_dry_gym_fit": "Spor kıyafetleri", + "iot_dry_lingerie": "İç Çamaşırı", + "iot_dry_mixed": "Karışık", + "iot_dry_playsuits": "Oyun elbiseleri", + "iot_dry_rapid_30": "Rapid 30", + "iot_dry_rapid_59": "Hızlı 59'.", + "iot_dry_refresh": "Yenileme", + "iot_dry_regenerates_waterproof": "Su geçirmezliği artırmak", + "iot_dry_relax_creases": "Kırışıklık Açma", + "iot_dry_shirts": "Gömlek", + "iot_dry_small_load": "Az Çamaşır", + "iot_dry_swimsuits_and_bikinis": "Mayolar", + "iot_dry_synthetics": "Sentetik", + "iot_dry_synthetic_dry": "Sentetik Kurutma", + "iot_dry_tablecloths": "Masa örtüleri", + "iot_dry_technical_fabrics": "Teknik Kumaşlar", + "iot_dry_warm_embrace": "Sıcak Hava", + "iot_dry_wool": "Saf yün markası", + "jeans": "Kot", + "mix_and_dry": "Karışık ve Kuru", + "pets": "Evcil hayvanlar", + "pre_iron": "Ön Ütüleme", + "rapid_30": "Rapid 30", + "rapid_45": "45 dak. hızlı", + "rapid_59": "Mükemmel Hızlı 59 dk", + "refresh": "Yenileme", + "relax_creases": "Kırışıklık Açma", + "saving_30_min": "EKO 30'", + "shirts": "Gömlekler", + "shoes": "Ayakkabılar", + "small_load": "Az Çamaşır", + "soft_care": "Yumuşak Bakım", + "sport_plus": "Spor+", + "super_easy_iron_misti": "Süper Kolay Ütü karışık", + "super_easy_iron_xxl": "Süper Kolay Ütü XXL", + "super_fast_cottons": "Süper Hızlı Pamuklu", + "super_fast_delicates": "Süper Hızlı Hassas", + "synthetics": "Sentetik", + "total_care": "Total Care", + "trainers": "Spor Ayakkabıları", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Su Geçirmez Canlandırma", + "whites": "Beyazlar", + "wool": "Yünlüleri Kurutma", + "woolmark": "Saf yün markası", + "xxl_load": "XXL Çamaşır", + "zoom_59": "Yakınlaştır 59" + }, + "name": "Program" + }, "programs_wm": { "state": { "20_degrees_coloured_cottons": "20° Renkli ve Pamuklular", @@ -556,7 +441,7 @@ "allergy_care_pro": "Anti-Alerji Pro", "all_in_one_49": "Hepsi bir Arada 49'.", "all_in_one_59": "Hepsi bir Arada 59'.", - "all_in_one_59_steam": "Aktif Yıkama + Buhar", + "all_in_one_59_steam": "Hepsi bir Arada 59' + Buhar", "autocare": "Otomatik bakım", "autoclean": "Tambur temizliği", "baby_60": "Bebek Kıyafetleri 60°C", @@ -622,7 +507,7 @@ "iot_active_steam": "Buhar", "iot_active_wash_steam": "Aktif Yıkama", "iot_allergy_care_pro": "Anti-Alerji Pro", - "iot_all_in_one_59_steam": "Aktif Yıkama + Buhar", + "iot_all_in_one_59_steam": "Hepsi bir Arada 59' + Buhar", "iot_checkup": "Check-up", "iot_colour_59_steam": "Renkliler 59' + Buhar", "iot_cottons_steam": "Pamuklular + Buhar", @@ -889,9 +774,148 @@ "sparkling": "Köpüklü", "white": "Beyaz" } + }, + "dry_time": { + "name": "Kurutma zamanı" + }, + "power": { + "name": "Güç seviyesi" + }, + "remaining_time": { + "name": "Kalan süre" + }, + "temperature": { + "name": "Sıcaklık" + }, + "water_efficiency": { + "name": "Su verimliliği" + }, + "water_saving": { + "name": "Su tasarrufu" + }, + "duration": { + "name": "Süre" + }, + "target_temperature": { + "name": "Hedef sıcaklık" + }, + "spin_speed": { + "name": "Sıkma" + }, + "steam_leve": { + "name": "Buhar Seviyesi" + }, + "dirt_level": { + "name": "Kir seviyesi" + }, + "delay_time": { + "name": "Gecikmeli Başlatma" + }, + "suggested_load": { + "name": "Yük kapasitesi" + }, + "energy_label": { + "name": "Enerji verimliliği" + }, + "det_dust": { + "name": "Toz" + }, + "det_liquid": { + "name": "Sıvı" + }, + "errors": { + "name": "Hata" + }, + "programs": { + "name": "Geçerli program" + }, + "room_temperature": { + "name": "Oda sıcaklığı" + }, + "humidity": { + "name": "Nem" + }, + "cycles_total": { + "name": "Programlar Toplam" + }, + "energy_total": { + "name": "Enerji Tüketimi Toplam" + }, + "water_total": { + "name": "Su verimliliği Toplam" + }, + "energy_current": { + "name": "Enerji Tüketimi Current" + }, + "water_current": { + "name": "Su verimliliği Current" + }, + "freezer_temp": { + "name": "Dondurucu sıcaklığı" + }, + "fridge_temp": { + "name": "Buzdolabı sıcaklığı" } }, "select": { + "dry_levels": { + "state": { + "no_dry": "Kurutma yok", + "iron_dry": "Ütü", + "no_dry_iron": "Gardırop hazır", + "cupboard_dry": "Gardırop hazır", + "extra_dry": "Ekstra kurutma", + "ready_to_wear": "Giyilmeye hazır" + }, + "name": "Kurutma seviyesi" + }, + "eco_pilot": { + "state": { + "touch_off": "Kapali", + "avoid_touch": "Dokunmaktan kaçının", + "follow_touch": "Takip et" + }, + "name": "Eko pilot" + }, + "fan_mode": { + "state": { + "high": "Yüksek", + "mid": "Orta ", + "low": "Düşük", + "auto": "Otomatik" + } + }, + "ref_zones": { + "state": { + "fridge": "Buzdolabı", + "freezer": "Dondurucu", + "vtroom1": "My Zone", + "fridge_freezer": "Buzdolabı & Dondurucu" + }, + "name": "Ocak gözü" + }, + "programs_ac": { + "state": { + "iot_10_heating": "10°C Isıtma fonksiyonu", + "iot_auto": "Otomatik", + "iot_cool": "Soğuk", + "iot_dry": "Kuru", + "iot_fan": "Fan", + "iot_heat": "Isı", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Kendi kendini arındırma", + "iot_self_clean": "Kendi kendini temizleme", + "iot_self_clean_56": "Steril Temizleme 56°C", + "iot_simple_start": "Şimdi başlat", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Otomatik", + "iot_uv_and_cool": "UV + Soğuk", + "iot_uv_and_dry": "UV + Nem giderici", + "iot_uv_and_fan": "UV + Fan", + "iot_uv_and_heat": "UV + Isıtma" + }, + "name": "Program" + }, "programs_dw": { "state": { "59_min": "Hizli 59'", @@ -1241,7 +1265,7 @@ "allergy_care_pro": "Anti-Alerji Pro", "all_in_one_49": "Hepsi bir Arada 49'.", "all_in_one_59": "Hepsi bir Arada 59'.", - "all_in_one_59_steam": "Aktif Yıkama + Buhar", + "all_in_one_59_steam": "Hepsi bir Arada 59' + Buhar", "autocare": "Otomatik bakım", "autoclean": "Tambur temizliği", "baby_60": "Bebek Kıyafetleri 60°C", @@ -1307,7 +1331,7 @@ "iot_active_steam": "Buhar", "iot_active_wash_steam": "Aktif Yıkama", "iot_allergy_care_pro": "Anti-Alerji Pro", - "iot_all_in_one_59_steam": "Aktif Yıkama + Buhar", + "iot_all_in_one_59_steam": "Hepsi bir Arada 59' + Buhar", "iot_checkup": "Check-up", "iot_colour_59_steam": "Renkliler 59' + Buhar", "iot_cottons_steam": "Pamuklular + Buhar", @@ -1540,69 +1564,6 @@ }, "name": "Program" }, - "dry_levels": { - "state": { - "0": "Kurutma yok", - "1": "Ütü", - "2": "Gardırop hazır", - "3": "Gardırop hazır", - "4": "Ekstra kurutma", - "12": "Ütü", - "13": "Gardırop hazır", - "14": "Giyilmeye hazır", - "15": "Ekstra kurutma", - "11": "Kurutma yok" - }, - "name": "Kurutma seviyesi" - }, - "spin_speed": { - "name": "Sıkma" - }, - "temperature": { - "name": "Sıcaklık" - }, - "dry_time": { - "name": "Kurutma zamanı" - }, - "eco_pilot": { - "state": { - "0": "Kapali", - "1": "Dokunmaktan kaçının", - "2": "Takip et" - }, - "name": "Eko pilot" - }, - "fan_mode": { - "state": { - "1": "Yüksek", - "2": "Orta ", - "3": "Düşük", - "4": "Otomatik", - "5": "Otomatik" - } - }, - "programs_ac": { - "state": { - "iot_10_heating": "10°C Isıtma fonksiyonu", - "iot_auto": "Otomatik", - "iot_cool": "Soğuk", - "iot_dry": "Kuru", - "iot_fan": "Fan", - "iot_heat": "Isı", - "iot_nano_aqua": "Nano Aqua", - "iot_purify": "Kendi kendini arındırma", - "iot_self_clean": "Kendi kendini temizleme", - "iot_self_clean_56": "Steril Temizleme 56°C", - "iot_simple_start": "Şimdi başlat", - "iot_uv": "UV", - "iot_uv_and_auto": "UV + Otomatik", - "iot_uv_and_cool": "UV + Soğuk", - "iot_uv_and_dry": "UV + Nem giderici", - "iot_uv_and_fan": "UV + Fan", - "iot_uv_and_heat": "UV + Isıtma" - }, - "name": "Program" - }, "programs_ref": { "state": { "auto_set": "OTOMATİK AYAR", @@ -1626,17 +1587,17 @@ }, "name": "Program" }, + "dry_time": { + "name": "Kurutma zamanı" + }, + "spin_speed": { + "name": "Sıkma" + }, + "temperature": { + "name": "Sıcaklık" + }, "remaining_time": { "name": "Kalan süre" - }, - "ref_zones": { - "state": { - "fridge": "Buzdolabı", - "freezer": "Dondurucu", - "vtroom1": "My Zone", - "fridge_freezer": "Buzdolabı & Dondurucu" - }, - "name": "Ocak gözü" } }, "switch": { @@ -1724,18 +1685,15 @@ "acqua_plus": { "name": "Acquaplus" }, - "auto_dose": { - "name": "Otomatik doz" - }, - "good_night": { - "name": "İyi Geceler" - }, "auto_dose_softener": { "name": "Otomatik doz Yumuşatıcı" }, "auto_dose_detergent": { "name": "Otomatik doz Deterjan" }, + "good_night": { + "name": "İyi Geceler" + }, "auto_set": { "name": "Otomatik Ayarla" }, @@ -1768,27 +1726,12 @@ "anti_crease": { "name": "Kırışık açma" }, - "aqua_plus": { + "acqua_plus": { "name": "Acquaplus" }, "spin_speed": { "name": "Sıkma" }, - "programs_dw": { - "name": "Program" - }, - "programs_ih": { - "name": "Program" - }, - "programs_ov": { - "name": "Program" - }, - "programs_td": { - "name": "Program" - }, - "programs_wm": { - "name": "Program" - }, "still_hot": { "name": "Hala sıcak" }, @@ -1819,12 +1762,6 @@ "prewash": { "name": "Pre-wash" }, - "acqua_plus": { - "name": "Acquaplus" - }, - "auto_dose": { - "name": "Otomatik doz" - }, "buzzer": { "name": "Program sonu zili" }, @@ -1850,6 +1787,17 @@ "name": "Filtre değişimi" } }, + "button": { + "induction_hob": { + "name": "İndüksiyonlu Ocak" + }, + "start_program": { + "name": "Program Başlangıç" + }, + "stop_program": { + "name": "Program Durdur" + } + }, "number": { "power_management": { "name": "Power management" @@ -1888,17 +1836,6 @@ "name": "Hedef sıcaklık Buzdolabı" } }, - "button": { - "induction_hob": { - "name": "İndüksiyonlu Ocak" - }, - "start_program": { - "name": "Program Başlangıç" - }, - "stop_program": { - "name": "Program Durdur" - } - }, "climate": { "air_conditioner": { "name": "Klima" diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index 46cd8e3..efb9296 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -3,325 +3,73 @@ "sensor": { "washing_modes": { "state": { - "0": "就绪", - "1": "就绪", - "3": "暂停", - "4": "已计划", - "5": "已计划", - "6": "错误", - "7": "就绪", - "2": "程序运行中", - "8": "Test", - "9": "正在停止循环..." + "ready": "就绪", + "running": "程序运行中", + "pause": "暂停", + "scheduled": "已计划", + "error": "错误", + "test": "Test", + "ending": "正在停止循环..." + } + }, + "mach_modes_ac": { + "state": { + "auto": "自动", + "cool": "冷却", + "dry": "烘干", + "heat": "加热", + "fan": "风扇" } }, "program_phases_wm": { "state": { - "0": "就绪", - "1": "洗涤", - "2": "洗涤", - "3": "甩干", - "4": "漂洗", - "5": "漂洗", - "6": "漂洗", - "7": "烘干", - "9": "蒸汽", - "10": "就绪", - "11": "甩干", - "12": "正在称重 ", - "13": "正在称重 ", - "14": "洗涤", - "15": "洗涤", - "16": "洗涤", - "17": "漂洗", - "18": "漂洗", - "19": "已计划", - "20": "保持清新", - "24": "清新", - "25": "洗涤", - "26": "加热", - "27": "洗涤" + "ready": "就绪", + "spin": "甩干", + "rinse": "漂洗", + "drying": "烘干", + "steam": "蒸汽", + "weighting": "正在称重 ", + "scheduled": "已计划", + "tumbling": "保持清新", + "refresh": "清新", + "heating": "加热", + "washing": "洗涤" }, "name": "阶段" }, "program_phases_td": { "state": { - "0": "就绪", - "1": "正在烘干", - "2": "烘干", - "3": "冷却", - "13": "冷却", - "14": "正在烘干", - "15": "正在烘干", - "16": "冷却", - "18": "保持清新", - "19": "烘干", - "20": "烘干", - "11": "就绪", - "17": "unknown", - "12": "unknown" + "ready": "就绪", + "heat_stroke": "正在烘干", + "drying": "烘干", + "cooldown": "冷却", + "unknown": "unknown", + "tumbling": "保持清新" }, "name": "阶段" }, "program_phases_dw": { "state": { - "0": "就绪", - "1": "预洗", - "2": "洗涤", - "3": "漂洗", - "4": "烘干", - "5": "就绪", - "6": "Hot rinse" + "ready": "就绪", + "prewash": "预洗", + "washing": "洗涤", + "rinse": "漂洗", + "drying": "烘干", + "hot_rinse": "Hot rinse" }, "name": "阶段" }, "dry_levels": { "state": { - "0": "不烘干", - "1": "熨烫", - "2": "衣柜就绪", - "3": "衣柜就绪", - "4": "特干", - "12": "熨烫", - "13": "衣柜就绪", - "14": "可穿", - "15": "特干", - "11": "不烘干" + "no_dry": "不烘干", + "iron_dry": "熨烫", + "no_dry_iron": "衣柜就绪", + "cupboard_dry": "衣柜就绪", + "extra_dry": "特干", + "ready_to_wear": "可穿" }, "name": "烘干水平" }, - "anti_crease": { - "name": "抗皱" - }, - "power": { - "name": "功率级" - }, - "remaining_time": { - "name": "剩余时间" - }, - "temperature": { - "name": "温度" - }, - "water_efficiency": { - "name": "用水效率" - }, - "water_saving": { - "name": "节水" - }, - "duration": { - "name": "持续时间" - }, - "target_temperature": { - "name": "目标温度" - }, - "spin_speed": { - "name": "甩干" - }, - "steam_leve": { - "name": "蒸汽档位" - }, - "dirt_level": { - "name": "脏污程度" - }, - "delay_time": { - "name": "延时启动" - }, - "dry_time": { - "name": "烘干时间" - }, - "suggested_load": { - "name": "负载能力" - }, - "energy_label": { - "name": "能效" - }, - "det_dust": { - "name": "洗衣粉" - }, - "det_liquid": { - "name": "洗衣液" - }, - "errors": { - "name": "错误" - }, - "programs": { - "name": "当前程序" - }, - "cycles_total": { - "name": "循环 总计" - }, - "energy_total": { - "name": "能耗 总计" - }, - "water_total": { - "name": "用水效率 总计" - }, - "energy_current": { - "name": "能耗 Current" - }, - "water_current": { - "name": "用水效率 Current" - }, - "mach_modes_ac": { - "state": { - "0": "自动", - "1": "冷却", - "2": "冷却", - "3": "烘干", - "4": "加热", - "5": "风扇", - "6": "风扇" - } - }, - "programs_td": { - "state": { - "active_dry": "主动干燥", - "allergy_care": "Antiallergy", - "all_in_one": "All in One", - "antiallergy": "抗过敏", - "anti_odours": "除味", - "auto_care": "自动护理", - "baby": "婴儿服", - "bed_quilt": "床被", - "care_30": "护理 30", - "care_45": "护理 45", - "care_59": "护理 59", - "coloured": "彩色衣物", - "daily_45_min": "每日 45 分钟", - "daily_perfect_59_min": "每日完美 59 分钟", - "darks_and_coloured": "深色和彩色衣物", - "delicates": "精细织物", - "duvet": "羽绒服", - "eco": "生态棉", - "ecospeed_cottons": "经济速度棉质衣物", - "ecospeed_delicates": "经济速度精致衣物", - "ecospeed_mixed": "经济速度混合衣物", - "extra_hygiene": "额外卫生", - "fitness": "健身衣物", - "fresh_care": "清新护理", - "genius": "Genius", - "hqd_baby_care": "Baby Care", - "hqd_bath_towel": "毛巾", - "hqd_bed_sheets": "床单", - "hqd_bulky": "大件物品", - "hqd_casual": "休闲", - "hqd_cold_wind_30": "凉风 30 分钟", - "hqd_cold_wind_timing": "凉风 ", - "hqd_cotton": "棉布", - "hqd_curtain": "窗帘", - "hqd_delicate": "精致衣物", - "hqd_diaper": "纸尿裤", - "hqd_duvet": "羽绒被", - "hqd_feather": "羽绒服", - "hqd_hot_wind_timing": "热空气", - "hqd_hygienic": "卫生保护", - "hqd_i_refresh": "I-Refresh", - "hqd_i_refresh_pro": "I-Refresh Pro", - "hqd_jacket": "夹克", - "hqd_jeans": "牛仔裤", - "hqd_luxury": "奢侈衣物", - "hqd_mix": "混合材质", - "hqd_night_dry": "过夜烘干", - "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", - "hqd_quick_20": "快洗 20", - "hqd_quick_30": "快洗 30", - "hqd_quick_dry": "快速干燥", - "hqd_quilt": "棉被", - "hqd_refresh": "清新", - "hqd_school_uniform": "校服", - "hqd_shirt": "衬衫", - "hqd_shoes": "鞋子", - "hqd_silk": "丝绸", - "hqd_sports": "运动装", - "hqd_synthetics": "合成纤维", - "hqd_timer": "定时", - "hqd_towel": "毛巾", - "hqd_underwear": "内衣", - "hqd_warm_up": "加热", - "hqd_wool": "羊毛衣物", - "hqd_working_suit": "工作服", - "hygiene": "卫生", - "iot_checkup": "检测", - "iot_dry_anti_mites": "除螨", - "iot_dry_baby": "婴儿服", - "iot_dry_backpacks": "背包", - "iot_dry_bathrobe": "浴衣", - "iot_dry_bed_linen": "被单枕套", - "iot_dry_bed_quilt": "床被", - "iot_dry_cotton": "棉布", - "iot_dry_cuddly_toys": "毛绒玩具", - "iot_dry_curtains": "窗帘", - "iot_dry_dehumidifier": "除湿机", - "iot_dry_delicates": "精细织物", - "iot_dry_delicate_tablecloths": "精细台布", - "iot_dry_denim_jeans": "牛仔布 - 牛仔裤", - "iot_dry_down_jacket": "Jacket", - "iot_dry_duvet": "羽绒服", - "iot_dry_easy_iron_cotton": "Super Easy Iron", - "iot_dry_easy_iron_synthetics": "超级易熨合成织物", - "iot_dry_gym_fit": "健身服", - "iot_dry_lingerie": "女性内衣", - "iot_dry_mixed": "混合材质", - "iot_dry_playsuits": "运动装", - "iot_dry_rapid_30": "快速 30", - "iot_dry_rapid_59": "快速 59’", - "iot_dry_refresh": "Refresh", - "iot_dry_regenerates_waterproof": "防水布", - "iot_dry_relax_creases": "Relax Creases", - "iot_dry_shirts": "衬衫", - "iot_dry_small_load": "Small Load", - "iot_dry_swimsuits_and_bikinis": "泳衣", - "iot_dry_synthetics": "合成纤维衣物", - "iot_dry_synthetic_dry": "合成纤维烘干", - "iot_dry_tablecloths": "台布", - "iot_dry_technical_fabrics": "弹性织物", - "iot_dry_warm_embrace": "衣物蓬松", - "iot_dry_wool": "Woolmark", - "jeans": "牛仔裤", - "mix_and_dry": "混合化纤洗干一体", - "pets": "宠物", - "pre_iron": "熨烫前", - "rapid_30": "快速 30", - "rapid_45": "快速 45 分钟", - "rapid_59": "完美快洗59′", - "refresh": "清新", - "relax_creases": "Relax Creases", - "saving_30_min": "节约 30 分钟", - "shirts": "衬衫", - "shoes": "鞋子", - "small_load": "Small Load", - "soft_care": "柔软保养", - "sport_plus": "Sport Plus", - "super_easy_iron_misti": "超易熨烫混合衣物", - "super_easy_iron_xxl": "超易熨烫超大衣物", - "super_fast_cottons": "Super Fast Cottons", - "super_fast_delicates": "Super Fast Delicates", - "synthetics": "合成纤维衣物", - "total_care": "Total Care", - "trainers": "运动鞋", - "ultra_care": "Ultra Care", - "waterproof_revitalize": "Waterproof Revitalize", - "whites": "浅色衣物", - "wool": "烘干羊毛衣物", - "woolmark": "Woolmark", - "xxl_load": "XXL Load", - "zoom_59": "缩放 59" - }, - "name": "程序" - }, - "room_temperature": { - "name": "室温" - }, - "humidity": { - "name": "湿度" - }, - "freezer_temp": { - "name": "冷藏室温度" - }, - "fridge_temp": { - "name": "冰箱温度" - }, "programs_ac": { "state": { "iot_10_heating": "10°C 加热功能", @@ -545,6 +293,143 @@ }, "name": "程序" }, + "programs_td": { + "state": { + "active_dry": "主动干燥", + "allergy_care": "Antiallergy", + "all_in_one": "All in One", + "antiallergy": "抗过敏", + "anti_odours": "除味", + "auto_care": "自动护理", + "baby": "婴儿服", + "bed_quilt": "床被", + "care_30": "护理 30", + "care_45": "护理 45", + "care_59": "护理 59", + "coloured": "彩色衣物", + "daily_45_min": "每日 45 分钟", + "daily_perfect_59_min": "每日完美 59 分钟", + "darks_and_coloured": "深色和彩色衣物", + "delicates": "精细织物", + "duvet": "羽绒服", + "eco": "生态棉", + "ecospeed_cottons": "经济速度棉质衣物", + "ecospeed_delicates": "经济速度精致衣物", + "ecospeed_mixed": "经济速度混合衣物", + "extra_hygiene": "额外卫生", + "fitness": "健身衣物", + "fresh_care": "清新护理", + "genius": "Genius", + "hqd_baby_care": "Baby Care", + "hqd_bath_towel": "毛巾", + "hqd_bed_sheets": "床单", + "hqd_bulky": "大件物品", + "hqd_casual": "休闲", + "hqd_cold_wind_30": "凉风 30 分钟", + "hqd_cold_wind_timing": "凉风 ", + "hqd_cotton": "棉布", + "hqd_curtain": "窗帘", + "hqd_delicate": "精致衣物", + "hqd_diaper": "纸尿裤", + "hqd_duvet": "羽绒被", + "hqd_feather": "羽绒服", + "hqd_hot_wind_timing": "热空气", + "hqd_hygienic": "卫生保护", + "hqd_i_refresh": "I-Refresh", + "hqd_i_refresh_pro": "I-Refresh Pro", + "hqd_jacket": "夹克", + "hqd_jeans": "牛仔裤", + "hqd_luxury": "奢侈衣物", + "hqd_mix": "混合材质", + "hqd_night_dry": "过夜烘干", + "hqd_outdoor": "Outdoor", + "hqd_precious_cure": "Precious cure", + "hqd_quick_20": "快洗 20", + "hqd_quick_30": "快洗 30", + "hqd_quick_dry": "快速干燥", + "hqd_quilt": "棉被", + "hqd_refresh": "清新", + "hqd_school_uniform": "校服", + "hqd_shirt": "衬衫", + "hqd_shoes": "鞋子", + "hqd_silk": "丝绸", + "hqd_sports": "运动装", + "hqd_synthetics": "合成纤维", + "hqd_timer": "定时", + "hqd_towel": "毛巾", + "hqd_underwear": "内衣", + "hqd_warm_up": "加热", + "hqd_wool": "羊毛衣物", + "hqd_working_suit": "工作服", + "hygiene": "卫生", + "iot_checkup": "检测", + "iot_dry_anti_mites": "除螨", + "iot_dry_baby": "婴儿服", + "iot_dry_backpacks": "背包", + "iot_dry_bathrobe": "浴衣", + "iot_dry_bed_linen": "被单枕套", + "iot_dry_bed_quilt": "床被", + "iot_dry_cotton": "棉布", + "iot_dry_cuddly_toys": "毛绒玩具", + "iot_dry_curtains": "窗帘", + "iot_dry_dehumidifier": "除湿机", + "iot_dry_delicates": "精细织物", + "iot_dry_delicate_tablecloths": "精细台布", + "iot_dry_denim_jeans": "牛仔布 - 牛仔裤", + "iot_dry_down_jacket": "Jacket", + "iot_dry_duvet": "羽绒服", + "iot_dry_easy_iron_cotton": "Super Easy Iron", + "iot_dry_easy_iron_synthetics": "超级易熨合成织物", + "iot_dry_gym_fit": "健身服", + "iot_dry_lingerie": "女性内衣", + "iot_dry_mixed": "混合材质", + "iot_dry_playsuits": "运动装", + "iot_dry_rapid_30": "快速 30", + "iot_dry_rapid_59": "快速 59’", + "iot_dry_refresh": "Refresh", + "iot_dry_regenerates_waterproof": "防水布", + "iot_dry_relax_creases": "Relax Creases", + "iot_dry_shirts": "衬衫", + "iot_dry_small_load": "Small Load", + "iot_dry_swimsuits_and_bikinis": "泳衣", + "iot_dry_synthetics": "合成纤维衣物", + "iot_dry_synthetic_dry": "合成纤维烘干", + "iot_dry_tablecloths": "台布", + "iot_dry_technical_fabrics": "弹性织物", + "iot_dry_warm_embrace": "衣物蓬松", + "iot_dry_wool": "Woolmark", + "jeans": "牛仔裤", + "mix_and_dry": "混合化纤洗干一体", + "pets": "宠物", + "pre_iron": "熨烫前", + "rapid_30": "快速 30", + "rapid_45": "快速 45 分钟", + "rapid_59": "完美快洗59′", + "refresh": "清新", + "relax_creases": "Relax Creases", + "saving_30_min": "节约 30 分钟", + "shirts": "衬衫", + "shoes": "鞋子", + "small_load": "Small Load", + "soft_care": "柔软保养", + "sport_plus": "Sport Plus", + "super_easy_iron_misti": "超易熨烫混合衣物", + "super_easy_iron_xxl": "超易熨烫超大衣物", + "super_fast_cottons": "Super Fast Cottons", + "super_fast_delicates": "Super Fast Delicates", + "synthetics": "合成纤维衣物", + "total_care": "Total Care", + "trainers": "运动鞋", + "ultra_care": "Ultra Care", + "waterproof_revitalize": "Waterproof Revitalize", + "whites": "浅色衣物", + "wool": "烘干羊毛衣物", + "woolmark": "Woolmark", + "xxl_load": "XXL Load", + "zoom_59": "缩放 59" + }, + "name": "程序" + }, "programs_wm": { "state": { "20_degrees_coloured_cottons": "20° 彩色和棉花", @@ -556,7 +441,7 @@ "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "一体化 49'", "all_in_one_59": "一体化 59'", - "all_in_one_59_steam": "活化洗涤 + 蒸汽", + "all_in_one_59_steam": "一体化 59' + 蒸汽", "autocare": "自动护理", "autoclean": "滚筒清洁", "baby_60": "婴儿服60℃", @@ -622,7 +507,7 @@ "iot_active_steam": "蒸汽", "iot_active_wash_steam": "活化洗涤", "iot_allergy_care_pro": "Allergy Care Pro", - "iot_all_in_one_59_steam": "活化洗涤 + 蒸汽", + "iot_all_in_one_59_steam": "一体化 59' + 蒸汽", "iot_checkup": "检测", "iot_colour_59_steam": "Coloureds 59' + 蒸汽", "iot_cottons_steam": "棉质 + 蒸汽", @@ -889,9 +774,148 @@ "sparkling": "起泡酒", "white": "白葡萄酒" } + }, + "dry_time": { + "name": "烘干时间" + }, + "power": { + "name": "功率级" + }, + "remaining_time": { + "name": "剩余时间" + }, + "temperature": { + "name": "温度" + }, + "water_efficiency": { + "name": "用水效率" + }, + "water_saving": { + "name": "节水" + }, + "duration": { + "name": "持续时间" + }, + "target_temperature": { + "name": "目标温度" + }, + "spin_speed": { + "name": "甩干" + }, + "steam_leve": { + "name": "蒸汽档位" + }, + "dirt_level": { + "name": "脏污程度" + }, + "delay_time": { + "name": "延时启动" + }, + "suggested_load": { + "name": "负载能力" + }, + "energy_label": { + "name": "能效" + }, + "det_dust": { + "name": "洗衣粉" + }, + "det_liquid": { + "name": "洗衣液" + }, + "errors": { + "name": "错误" + }, + "programs": { + "name": "当前程序" + }, + "room_temperature": { + "name": "室温" + }, + "humidity": { + "name": "湿度" + }, + "cycles_total": { + "name": "循环 总计" + }, + "energy_total": { + "name": "能耗 总计" + }, + "water_total": { + "name": "用水效率 总计" + }, + "energy_current": { + "name": "能耗 Current" + }, + "water_current": { + "name": "用水效率 Current" + }, + "freezer_temp": { + "name": "冷藏室温度" + }, + "fridge_temp": { + "name": "冰箱温度" } }, "select": { + "dry_levels": { + "state": { + "no_dry": "不烘干", + "iron_dry": "熨烫", + "no_dry_iron": "衣柜就绪", + "cupboard_dry": "衣柜就绪", + "extra_dry": "特干", + "ready_to_wear": "可穿" + }, + "name": "烘干水平" + }, + "eco_pilot": { + "state": { + "touch_off": "关闭", + "avoid_touch": "避免触摸", + "follow_touch": "跟随" + }, + "name": "节能模式" + }, + "fan_mode": { + "state": { + "high": "高", + "mid": "中 ", + "low": "低", + "auto": "自动" + } + }, + "ref_zones": { + "state": { + "fridge": "冰箱", + "freezer": "冷藏箱", + "vtroom1": "My Zone", + "fridge_freezer": "冰箱 & 冷藏箱" + }, + "name": "区域" + }, + "programs_ac": { + "state": { + "iot_10_heating": "10°C 加热功能", + "iot_auto": "自动", + "iot_cool": "冷却", + "iot_dry": "烘干", + "iot_fan": "风扇", + "iot_heat": "加热", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "自净", + "iot_self_clean": "自洁", + "iot_self_clean_56": "无菌清洁 56°C", + "iot_simple_start": "立即启动", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + 自动", + "iot_uv_and_cool": "UV + 制冷", + "iot_uv_and_dry": "UV + 减湿器", + "iot_uv_and_fan": "UV + 风扇", + "iot_uv_and_heat": "UV + 加热" + }, + "name": "程序" + }, "programs_dw": { "state": { "59_min": "Rapid 59'", @@ -1241,7 +1265,7 @@ "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "一体化 49'", "all_in_one_59": "一体化 59'", - "all_in_one_59_steam": "活化洗涤 + 蒸汽", + "all_in_one_59_steam": "一体化 59' + 蒸汽", "autocare": "自动护理", "autoclean": "滚筒清洁", "baby_60": "婴儿服60℃", @@ -1307,7 +1331,7 @@ "iot_active_steam": "蒸汽", "iot_active_wash_steam": "活化洗涤", "iot_allergy_care_pro": "Allergy Care Pro", - "iot_all_in_one_59_steam": "活化洗涤 + 蒸汽", + "iot_all_in_one_59_steam": "一体化 59' + 蒸汽", "iot_checkup": "检测", "iot_colour_59_steam": "Coloureds 59' + 蒸汽", "iot_cottons_steam": "棉质 + 蒸汽", @@ -1540,69 +1564,6 @@ }, "name": "程序" }, - "dry_levels": { - "state": { - "0": "不烘干", - "1": "熨烫", - "2": "衣柜就绪", - "3": "衣柜就绪", - "4": "特干", - "12": "熨烫", - "13": "衣柜就绪", - "14": "可穿", - "15": "特干", - "11": "不烘干" - }, - "name": "烘干水平" - }, - "spin_speed": { - "name": "甩干" - }, - "temperature": { - "name": "温度" - }, - "dry_time": { - "name": "烘干时间" - }, - "eco_pilot": { - "state": { - "0": "关闭", - "1": "避免触摸", - "2": "跟随" - }, - "name": "节能模式" - }, - "fan_mode": { - "state": { - "1": "高", - "2": "中 ", - "3": "低", - "4": "自动", - "5": "自动" - } - }, - "programs_ac": { - "state": { - "iot_10_heating": "10°C 加热功能", - "iot_auto": "自动", - "iot_cool": "冷却", - "iot_dry": "烘干", - "iot_fan": "风扇", - "iot_heat": "加热", - "iot_nano_aqua": "Nano Aqua", - "iot_purify": "自净", - "iot_self_clean": "自洁", - "iot_self_clean_56": "无菌清洁 56°C", - "iot_simple_start": "立即启动", - "iot_uv": "UV", - "iot_uv_and_auto": "UV + 自动", - "iot_uv_and_cool": "UV + 制冷", - "iot_uv_and_dry": "UV + 减湿器", - "iot_uv_and_fan": "UV + 风扇", - "iot_uv_and_heat": "UV + 加热" - }, - "name": "程序" - }, "programs_ref": { "state": { "auto_set": "AUTO-SET(自动设置)", @@ -1626,17 +1587,17 @@ }, "name": "程序" }, + "dry_time": { + "name": "烘干时间" + }, + "spin_speed": { + "name": "甩干" + }, + "temperature": { + "name": "温度" + }, "remaining_time": { "name": "剩余时间" - }, - "ref_zones": { - "state": { - "fridge": "冰箱", - "freezer": "冷藏箱", - "vtroom1": "My Zone", - "fridge_freezer": "冰箱 & 冷藏箱" - }, - "name": "区域" } }, "switch": { @@ -1724,18 +1685,15 @@ "acqua_plus": { "name": "Acquaplus" }, - "auto_dose": { - "name": "自动定量" - }, - "good_night": { - "name": "晚安" - }, "auto_dose_softener": { "name": "自动定量 柔软剂" }, "auto_dose_detergent": { "name": "自动定量 洗涤剂" }, + "good_night": { + "name": "晚安" + }, "auto_set": { "name": "自动设置" }, @@ -1768,27 +1726,12 @@ "anti_crease": { "name": "抗皱" }, - "aqua_plus": { + "acqua_plus": { "name": "Acquaplus" }, "spin_speed": { "name": "甩干" }, - "programs_dw": { - "name": "程序" - }, - "programs_ih": { - "name": "程序" - }, - "programs_ov": { - "name": "程序" - }, - "programs_td": { - "name": "程序" - }, - "programs_wm": { - "name": "程序" - }, "still_hot": { "name": "仍然热" }, @@ -1819,12 +1762,6 @@ "prewash": { "name": "预洗" }, - "acqua_plus": { - "name": "Acquaplus" - }, - "auto_dose": { - "name": "自动定量" - }, "buzzer": { "name": "循环结束提示音" }, @@ -1850,6 +1787,17 @@ "name": "更换过滤器" } }, + "button": { + "induction_hob": { + "name": "电磁炉" + }, + "start_program": { + "name": "程序 开始" + }, + "stop_program": { + "name": "程序 停止" + } + }, "number": { "power_management": { "name": "电源管理" @@ -1888,17 +1836,6 @@ "name": "目标温度 冰箱" } }, - "button": { - "induction_hob": { - "name": "电磁炉" - }, - "start_program": { - "name": "程序 开始" - }, - "stop_program": { - "name": "程序 停止" - } - }, "climate": { "air_conditioner": { "name": "空调" diff --git a/scripts/generate_translation.py b/scripts/generate_translation.py index e84f19f..e562780 100755 --- a/scripts/generate_translation.py +++ b/scripts/generate_translation.py @@ -8,256 +8,13 @@ from pathlib import Path from pyhon import HonAPI + if __name__ == "__main__": sys.path.insert(0, str(Path(__file__).parent.parent)) +from scripts.translation_keys import SENSOR, SELECT, PROGRAMS, NAMES, CLIMATE from custom_components.hon import const -SENSOR = { - "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": const.TUMBLE_DRYER_DRY_LEVEL, - "eco_pilot": const.AC_HUMAN_SENSE, - "fan_mode": const.AC_FAN_MODE, - "ref_zones": const.REF_ZONES, -} - -PROGRAMS = { - "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", - "programs_ref": "PROGRAMS.REF", - }, - "sensor": { - "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", - "programs_ref": "PROGRAMS.REF", - "programs_wc": "PROGRAMS.WC", - }, -} - -CLIMATE = { - "fridge": { - "preset_mode": { - "name": "REF_CMD&CTRL.MODE_SELECTION_DRAWER_FRIDGE.FRIDGE_MODE_TITLE", - "state": { - "auto_set": "REF_CMD&CTRL.MODALITIES.ECO", - "super_cool": "REF_CMD&CTRL.MODALITIES.SUPER_COOL", - "holiday": "REF_CMD&CTRL.MODALITIES.BACK_FROM_HOLIDAY", - "no_mode": "REF_CMD&CTRL.MODALITIES.NO_MODE_SELECTED", - }, - } - }, - "freezer": { - "preset_mode": { - "name": "REF_CMD&CTRL.MODE_SELECTION_DRAWER_FREEZER.FREEZER_MODE_TITLE", - "state": { - "auto_set": "REF_CMD&CTRL.MODALITIES.ECO", - "super_freeze": "REF_CMD&CTRL.MODALITIES.SHOCK_FREEZE", - "no_mode": "REF_CMD&CTRL.MODALITIES.NO_MODE_SELECTED", - }, - } - }, - "oven": { - "preset_mode": { - "name": "OV.TABS.PROGRAMS_TITLE", - "state": "PROGRAMS.OV", - } - }, - "wine": { - "preset_mode": { - "name": "WC.NAME", - "state": "PROGRAMS.WC", - } - }, -} - -NAMES = { - "switch": { - "anti_crease": "HDRY_CMD&CTRL.PROGRAM_CYCLE_DETAIL.ANTICREASE_TITLE", - "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", - "open_door": "DW_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.OPEN_DOOR", - "three_in_one": "DW_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.THREE_IN_ONE", - "preheat": "OV.PROGRAM_DETAIL.PREHEAT", - "dish_washer": "GLOBALS.APPLIANCES_NAME.DW", - "tumble_dryer": "GLOBALS.APPLIANCES_NAME.TD", - "washing_machine": "GLOBALS.APPLIANCES_NAME.WM", - "washer_dryer": "GLOBALS.APPLIANCES_NAME.WD", - "oven": "GLOBALS.APPLIANCES_NAME.OV", - "prewash": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.PREWASH", - "pause": "GENERAL.PAUSE_PROGRAM", - "keep_fresh": "GLOBALS.APPLIANCE_STATUS.TUMBLING", - "delay_time": "HINTS.TIPS_TIME_ENERGY_SAVING.TIPS_USE_AT_NIGHT_TITLE", - "rapid_mode": "AC.PROGRAM_CARD.RAPID", - "eco_mode": "AC.PROGRAM_CARD.ECO_MODE", - "10_degree_heating": "PROGRAMS.AC.IOT_10_HEATING", - "self_clean": "PROGRAMS.AC.IOT_SELF_CLEAN", - "self_clean_56": "PROGRAMS.AC.IOT_SELF_CLEAN_56", - "silent_mode": "AC.PROGRAM_DETAIL.SILENT_MODE", - "mute_mode": "AC.PROGRAM_DETAIL.MUTE_MODE", - "extra_rinse_1": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.EXTRARINSE1", - "extra_rinse_2": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.EXTRARINSE2", - "extra_rinse_3": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.EXTRARINSE3", - "acqua_plus": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.ACQUAPLUS", - "auto_dose_softener": [ - "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.AUTODOSE", - "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.SOFTENER", - ], - "auto_dose_detergent": [ - "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.AUTODOSE", - "WASHING_CMD&CTRL.DASHBOARD_MENU_MORE_SETTINGS_WATER.DETERGENT", - ], - "good_night": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.GOODNIGHT", - "auto_set": "REF_CMD&CTRL.MODALITIES.ECO", - "super_cool": "REF_CMD&CTRL.MODALITIES.SUPER_COOL", - "super_freeze": "REF_CMD&CTRL.MODALITIES.SUPER_FREEZE", - "refrigerator": "REF.NAME", - }, - "binary_sensor": { - "door_lock": "WASHING_CMD&CTRL.CHECK_UP_RESULTS.DOOR_LOCK", - "extra_rinse_1": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.EXTRARINSE1", - "extra_rinse_2": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.EXTRARINSE2", - "extra_rinse_3": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.EXTRARINSE3", - "good_night": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.GOODNIGHT", - "anti_crease": "HDRY_CMD&CTRL.PROGRAM_CYCLE_DETAIL.ANTICREASE_TITLE", - "acqua_plus": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.ACQUAPLUS", - "spin_speed": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.SPINSPEED", - "still_hot": "IH.COILS_STATUS.STILL_HOT", - "pan_status": "IH.COILS_STATUS.PAN", - "remote_control": "OV.SUPPORT.REMOTE_CONTROL", - "rinse_aid": "DW_CMD&CTRL.MAINTENANCE.CONSUMABLE_LEVELS_ICON_RINSE_AID", - "salt_level": "DW_CMD&CTRL.MAINTENANCE.CONSUMABLE_LEVELS_ICON_SALT", - "door_open": "GLOBALS.APPLIANCE_STATUS.DOOR_OPEN", - "connection": "ENROLLMENT_COMMON.HEADER_NAME.STEP_APPLIANCE_CONNECTION", - "child_lock": "AP.FOOTER_MENU_MORE.SECURITY_LOCK_TITLE", - "on": "GLOBALS.GENERAL.ON", - "prewash": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.PREWASH", - "buzzer": "DW_CMD&CTRL.SETTINGS.END_CYCLE_BUZZER", - "holiday_mode": "REF.DASHBOARD_MENU_MORE_NOTIFICATIONS.HOLIDAY_MODE", - "auto_set": "REF_CMD&CTRL.MODALITIES.ECO", - "super_cool": "REF_CMD&CTRL.MODALITIES.SUPER_COOL", - "super_freeze": "REF_CMD&CTRL.MODALITIES.SUPER_FREEZE", - "freezer_door": ["GLOBALS.APPLIANCE_STATUS.DOOR_OPEN", "REF.ZONES.FREEZER"], - "fridge_door": ["GLOBALS.APPLIANCE_STATUS.DOOR_OPEN", "REF.ZONES.FRIDGE"], - "filter_replacement": "AP.MAINTENANCE.FILTER_REPLACEMENT", - }, - "button": { - "induction_hob": "GLOBALS.APPLIANCES_NAME.IH", - "start_program": ["WC.SET_PROGRAM.PROGRAM", "GLOBALS.GENERAL.START_ON"], - "stop_program": ["WC.SET_PROGRAM.PROGRAM", "GLOBALS.GENERAL.STOP"], - }, - "select": { - "dry_levels": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_LEVEL", - "dry_time": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_TIME", - "spin_speed": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.SPINSPEED", - "temperature": "IH.COMMON.TEMPERATURE", - "programs_dw": "WC.SET_PROGRAM.PROGRAM", - "programs_ih": "WC.SET_PROGRAM.PROGRAM", - "programs_ov": "WC.SET_PROGRAM.PROGRAM", - "programs_td": "WC.SET_PROGRAM.PROGRAM", - "programs_wm": "WC.SET_PROGRAM.PROGRAM", - "programs_ac": "WC.SET_PROGRAM.PROGRAM", - "programs_ref": "WC.SET_PROGRAM.PROGRAM", - "eco_pilot": "AC.PROGRAM_DETAIL.ECO_PILOT", - "remaining_time": "ENROLLMENT_COMMON.GENERAL.REMAINING_TIME", - "ref_zones": "IH.COMMON.COIL", - }, - "sensor": { - "dry_levels": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_LEVEL", - "dry_time": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_TIME", - "power": "OV.RECIPE_DETAIL.POWER_LEVEL", - "remaining_time": "ENROLLMENT_COMMON.GENERAL.REMAINING_TIME", - "temperature": "IH.COMMON.TEMPERATURE", - "water_efficiency": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_RESULT.WATER_EFFICIENCY", - "water_saving": "STATISTICS.SMART_AI_CYCLE.WATER_SAVING", - "duration": "WASHING_CMD&CTRL.DRAWER_PROGRAM_FILTERS.DURATION", - "target_temperature": "IH.COOKING_DETAIL.TEMPERATURE_TARGETING", - "spin_speed": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.SPINSPEED", - "steam_leve": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.STEAM_LEVEL", - "dirt_level": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.DIRTY_LEVEL", - "program_phases_wm": "WASHING_CMD&CTRL.STATISTICS_GRAPHIC_INSTANT_CONSUMPTION.PHASE", - "program_phases_td": "WASHING_CMD&CTRL.STATISTICS_GRAPHIC_INSTANT_CONSUMPTION.PHASE", - "program_phases_dw": "WASHING_CMD&CTRL.STATISTICS_GRAPHIC_INSTANT_CONSUMPTION.PHASE", - "delay_time": "HINTS.TIPS_TIME_ENERGY_SAVING.TIPS_USE_AT_NIGHT_TITLE", - "suggested_load": "WASHING_CMD&CTRL.DRAWER_PROGRAM_FILTERS.LOAD_CAPACITY", - "energy_label": "WASHING_CMD&CTRL.DRAWER_PROGRAM_FILTERS.ENERGY_EFFICIENCY", - "det_dust": "HUBS.WIDGET.STAINS_WIDGET.STAINS.SUGGESTED_DET_DUST", - "det_liquid": "HUBS.WIDGET.STAINS_WIDGET.STAINS.SUGGESTED_DET_LIQUID", - "errors": "ROBOT_CMD&CTRL.PHASE_ERROR.TITLE", - "programs": "OV.TABS.CURRENT_PROGRAM", - "room_temperature": "REF.SMART_DRINK_ASSISTANT.AMBIENT", - "humidity": "AP.TITLES.HUMIDITY", - "cycles_total": [ - "WASHING_CMD&CTRL.GENERAL.CYCLES", - "WC.VIRTUAL_WINE_STATS_COUNTRY.TOTAL", - ], - "energy_total": [ - "MISE.ENERGY_CONSUMPTION.TITLE", - "WC.VIRTUAL_WINE_STATS_COUNTRY.TOTAL", - ], - "water_total": [ - "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_RESULT.WATER_EFFICIENCY", - "WC.VIRTUAL_WINE_STATS_COUNTRY.TOTAL", - ], - "energy_current": [ - "MISE.ENERGY_CONSUMPTION.TITLE", - "CUBE90_GLOBAL.GENERAL.CURRENT", - ], - "water_current": [ - "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_RESULT.WATER_EFFICIENCY", - "CUBE90_GLOBAL.GENERAL.CURRENT", - ], - "freezer_temp": "REF_CMD&CTRL.TEMPERATURE_DRAWER_FREEZER.FREEZER_TEMPERATURE_TITLE", - "fridge_temp": "REF_CMD&CTRL.TEMPERATURE_DRAWER_FRIDGE.FRIDGE_TEMPERATURE_TITLE", - "programs_dw": "WC.SET_PROGRAM.PROGRAM", - "programs_ih": "WC.SET_PROGRAM.PROGRAM", - "programs_ov": "WC.SET_PROGRAM.PROGRAM", - "programs_td": "WC.SET_PROGRAM.PROGRAM", - "programs_wm": "WC.SET_PROGRAM.PROGRAM", - "programs_ac": "WC.SET_PROGRAM.PROGRAM", - "programs_ref": "WC.SET_PROGRAM.PROGRAM", - }, - "number": { - "power_management": "HINTS.COOKING_WITH_INDUCTION.POWER_MANAGEMENT", - "temperature": "IH.COMMON.TEMPERATURE", - "delay_time": "HINTS.TIPS_TIME_ENERGY_SAVING.TIPS_USE_AT_NIGHT_TITLE", - "water_hard": "WASHING_CMD&CTRL.DASHBOARD_MENU_MORE_SETTINGS_WATER.TITLE", - "program_duration": "OV.PROGRAM_DETAIL.PROGRAM_DURATION", - "target_temperature": "IH.COOKING_DETAIL.TEMPERATURE_TARGETING", - "rinse_iterations": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL.DRAWER_HEADER_RINSE", - "wash_time": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL.WASHING_TIME", - "dry_time": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_TIME", - "steam_level": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.STEAM_LEVEL", - "freezer_temp_sel": ["OV.COMMON.GOAL_TEMPERATURE", "REF.ZONES.FREEZER"], - "fridge_temp_sel": ["OV.COMMON.GOAL_TEMPERATURE", "REF.ZONES.FRIDGE"], - }, - "climate": { - "air_conditioner": "GLOBALS.APPLIANCES_NAME.AC", - "fridge": "REF.ZONES.FRIDGE", - "freezer": "REF.ZONES.FREEZER", - "oven": "GLOBALS.APPLIANCES_NAME.OV", - }, - "fan": {"air_extraction": "HO.DASHBOARD.AIR_EXTRACTION_TITLE"}, -} - async def check_translation_files(translations): for language in const.LANGUAGES: diff --git a/scripts/translation_keys.py b/scripts/translation_keys.py new file mode 100644 index 0000000..9f475cc --- /dev/null +++ b/scripts/translation_keys.py @@ -0,0 +1,337 @@ +WASHING_PR_PHASE = { + "ready": "WASHING_CMD&CTRL.PHASE_READY.TITLE", + "spin": "WASHING_CMD&CTRL.PHASE_SPIN.TITLE", + "rinse": "WASHING_CMD&CTRL.PHASE_RINSE.TITLE", + "drying": "WASHING_CMD&CTRL.PHASE_DRYING.TITLE", + "steam": "WASHING_CMD&CTRL.PHASE_STEAM.TITLE", + "weighting": "WASHING_CMD&CTRL.PHASE_WEIGHTING.TITLE", + "scheduled": "WASHING_CMD&CTRL.PHASE_SCHEDULED.TITLE", + "tumbling": "WASHING_CMD&CTRL.PHASE_TUMBLING.TITLE", + "refresh": "WASHING_CMD&CTRL.PHASE_REFRESH.TITLE", + "heating": "WASHING_CMD&CTRL.PHASE_HEATING.TITLE", + "washing": "WASHING_CMD&CTRL.PHASE_WASHING.TITLE", +} + +MACH_MODE = { + "ready": "WASHING_CMD&CTRL.PHASE_READY.TITLE", + "running": "WASHING_CMD&CTRL.PHASE_RUNNING.TITLE", + "pause": "WASHING_CMD&CTRL.PHASE_PAUSE.TITLE", + "scheduled": "WASHING_CMD&CTRL.PHASE_SCHEDULED.TITLE", + "error": "WASHING_CMD&CTRL.PHASE_ERROR.TITLE", + "test": "Test", + "ending": "GLOBALS.APPLIANCE_STATUS.ENDING_PROGRAM", +} + +TUMBLE_DRYER_PR_PHASE = { + "ready": "WASHING_CMD&CTRL.PHASE_READY.TITLE", + "heat_stroke": "TD_CMD&CTRL.STATUS_PHASE.PHASE_HEAT_STROKE", + "drying": "WASHING_CMD&CTRL.PHASE_DRYING.TITLE", + "cooldown": "TD_CMD&CTRL.STATUS_PHASE.PHASE_COOLDOWN", + "unknown": "unknown", + "tumbling": "WASHING_CMD&CTRL.PHASE_TUMBLING.DASHBOARD_TITLE", +} + +DIRTY_LEVEL = { + "little": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OPTIONS_VALUES_DESCRIPTION.LITTLE", + "normal": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OPTIONS_VALUES_DESCRIPTION.NORMAL", + "very": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OPTIONS_VALUES_DESCRIPTION.VERY", +} + +STEAM_LEVEL = { + "no_steam": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OPTIONS_VALUES_DESCRIPTION.NO_STEAM", + "cotton": "WASHING_CMD&CTRL.GUIDED_WASHING_SYMBOLS_FABRICS.COTTON_TITLE", + "delicate": "WASHING_CMD&CTRL.GUIDED_WASHING_SYMBOLS_FABRICS.DELICATE_TITLE", + "synthetic": "WASHING_CMD&CTRL.GUIDED_WASHING_SYMBOLS_FABRICS.SYNTHETIC_TITLE", +} + +DISHWASHER_PR_PHASE = { + "ready": "WASHING_CMD&CTRL.PHASE_READY.TITLE", + "prewash": "WASHING_CMD&CTRL.PHASE_PREWASH.TITLE", + "washing": "WASHING_CMD&CTRL.PHASE_WASHING.TITLE", + "rinse": "WASHING_CMD&CTRL.PHASE_RINSE.TITLE", + "drying": "WASHING_CMD&CTRL.PHASE_DRYING.TITLE", + "hot_rinse": "WASHING_CMD&CTRL.PHASE_HOT_RINSE.TITLE", +} + +TUMBLE_DRYER_DRY_LEVEL = { + "no_dry": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.NO_DRY", + "iron_dry": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OPTIONS_VALUES_DESCRIPTION.IRON_DRY", + "no_dry_iron": "WASHING_CMD&CTRL.GUIDED_WASHING_SYMBOLS_DRYING.NO_DRY_IRON_TITLE", + "cupboard_dry": "WASHING_CMD&CTRL.GUIDED_WASHING_SYMBOLS_DRYING.CUPBOARD_DRY_TITLE", + "extra_dry": "WASHING_CMD&CTRL.GUIDED_WASHING_SYMBOLS_DRYING.EXTRA_DRY_TITLE", + "ready_to_wear": "WASHING_CMD&CTRL.GUIDED_WASHING_SYMBOLS_DRYING.READY_TO_WEAR_TITLE", +} + +AC_MACH_MODE = { + "auto": "PROGRAMS.AC.IOT_AUTO", + "cool": "PROGRAMS.AC.IOT_COOL", + "dry": "PROGRAMS.AC.IOT_DRY", + "heat": "PROGRAMS.AC.IOT_HEAT", + "fan": "PROGRAMS.AC.IOT_FAN", +} + +AC_FAN_MODE = { + "high": "AC.PROGRAM_CARD.WIND_SPEED_HIGH", + "mid": "AC.PROGRAM_CARD.WIND_SPEED_MID", + "low": "AC.PROGRAM_CARD.WIND_SPEED_LOW", + "auto": "AC.PROGRAM_CARD.WIND_SPEED_AUTO", +} + +AC_HUMAN_SENSE = { + "touch_off": "AC.PROGRAM_DETAIL.TOUCH_OFF", + "avoid_touch": "AC.PROGRAM_DETAIL.AVOID_TOUCH", + "follow_touch": "AC.PROGRAM_DETAIL.FOLLOW_TOUCH", +} + +REF_ZONES = { + "fridge": "REF.ZONES.FRIDGE", + "freezer": "REF.ZONES.FREEZER", + "vtroom1": "REF.ZONES.MY_ZONE_1", + "fridge_freezer": ["REF.ZONES.FRIDGE", " & ", "REF.ZONES.FREEZER"], +} + + +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, +} + +SELECT = { + "dry_levels": TUMBLE_DRYER_DRY_LEVEL, + "eco_pilot": AC_HUMAN_SENSE, + "fan_mode": AC_FAN_MODE, + "ref_zones": REF_ZONES, +} + +PROGRAMS = { + "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", + "programs_ref": "PROGRAMS.REF", + }, + "sensor": { + "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", + "programs_ref": "PROGRAMS.REF", + "programs_wc": "PROGRAMS.WC", + }, +} + +CLIMATE = { + "fridge": { + "preset_mode": { + "name": "REF_CMD&CTRL.MODE_SELECTION_DRAWER_FRIDGE.FRIDGE_MODE_TITLE", + "state": { + "auto_set": "REF_CMD&CTRL.MODALITIES.ECO", + "super_cool": "REF_CMD&CTRL.MODALITIES.SUPER_COOL", + "holiday": "REF_CMD&CTRL.MODALITIES.BACK_FROM_HOLIDAY", + "no_mode": "REF_CMD&CTRL.MODALITIES.NO_MODE_SELECTED", + }, + } + }, + "freezer": { + "preset_mode": { + "name": "REF_CMD&CTRL.MODE_SELECTION_DRAWER_FREEZER.FREEZER_MODE_TITLE", + "state": { + "auto_set": "REF_CMD&CTRL.MODALITIES.ECO", + "super_freeze": "REF_CMD&CTRL.MODALITIES.SHOCK_FREEZE", + "no_mode": "REF_CMD&CTRL.MODALITIES.NO_MODE_SELECTED", + }, + } + }, + "oven": { + "preset_mode": { + "name": "OV.TABS.PROGRAMS_TITLE", + "state": "PROGRAMS.OV", + } + }, + "wine": { + "preset_mode": { + "name": "WC.NAME", + "state": "PROGRAMS.WC", + } + }, +} + +NAMES = { + "switch": { + "anti_crease": "HDRY_CMD&CTRL.PROGRAM_CYCLE_DETAIL.ANTICREASE_TITLE", + "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", + "open_door": "DW_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.OPEN_DOOR", + "three_in_one": "DW_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.THREE_IN_ONE", + "preheat": "OV.PROGRAM_DETAIL.PREHEAT", + "dish_washer": "GLOBALS.APPLIANCES_NAME.DW", + "tumble_dryer": "GLOBALS.APPLIANCES_NAME.TD", + "washing_machine": "GLOBALS.APPLIANCES_NAME.WM", + "washer_dryer": "GLOBALS.APPLIANCES_NAME.WD", + "oven": "GLOBALS.APPLIANCES_NAME.OV", + "prewash": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.PREWASH", + "pause": "GENERAL.PAUSE_PROGRAM", + "keep_fresh": "GLOBALS.APPLIANCE_STATUS.TUMBLING", + "delay_time": "HINTS.TIPS_TIME_ENERGY_SAVING.TIPS_USE_AT_NIGHT_TITLE", + "rapid_mode": "AC.PROGRAM_CARD.RAPID", + "eco_mode": "AC.PROGRAM_CARD.ECO_MODE", + "10_degree_heating": "PROGRAMS.AC.IOT_10_HEATING", + "self_clean": "PROGRAMS.AC.IOT_SELF_CLEAN", + "self_clean_56": "PROGRAMS.AC.IOT_SELF_CLEAN_56", + "silent_mode": "AC.PROGRAM_DETAIL.SILENT_MODE", + "mute_mode": "AC.PROGRAM_DETAIL.MUTE_MODE", + "extra_rinse_1": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.EXTRARINSE1", + "extra_rinse_2": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.EXTRARINSE2", + "extra_rinse_3": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.EXTRARINSE3", + "acqua_plus": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.ACQUAPLUS", + "auto_dose_softener": [ + "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.AUTODOSE", + "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.SOFTENER", + ], + "auto_dose_detergent": [ + "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.AUTODOSE", + "WASHING_CMD&CTRL.DASHBOARD_MENU_MORE_SETTINGS_WATER.DETERGENT", + ], + "good_night": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.GOODNIGHT", + "auto_set": "REF_CMD&CTRL.MODALITIES.ECO", + "super_cool": "REF_CMD&CTRL.MODALITIES.SUPER_COOL", + "super_freeze": "REF_CMD&CTRL.MODALITIES.SUPER_FREEZE", + "refrigerator": "REF.NAME", + }, + "binary_sensor": { + "door_lock": "WASHING_CMD&CTRL.CHECK_UP_RESULTS.DOOR_LOCK", + "extra_rinse_1": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.EXTRARINSE1", + "extra_rinse_2": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.EXTRARINSE2", + "extra_rinse_3": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.EXTRARINSE3", + "good_night": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.GOODNIGHT", + "anti_crease": "HDRY_CMD&CTRL.PROGRAM_CYCLE_DETAIL.ANTICREASE_TITLE", + "acqua_plus": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.ACQUAPLUS", + "spin_speed": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.SPINSPEED", + "still_hot": "IH.COILS_STATUS.STILL_HOT", + "pan_status": "IH.COILS_STATUS.PAN", + "remote_control": "OV.SUPPORT.REMOTE_CONTROL", + "rinse_aid": "DW_CMD&CTRL.MAINTENANCE.CONSUMABLE_LEVELS_ICON_RINSE_AID", + "salt_level": "DW_CMD&CTRL.MAINTENANCE.CONSUMABLE_LEVELS_ICON_SALT", + "door_open": "GLOBALS.APPLIANCE_STATUS.DOOR_OPEN", + "connection": "ENROLLMENT_COMMON.HEADER_NAME.STEP_APPLIANCE_CONNECTION", + "child_lock": "AP.FOOTER_MENU_MORE.SECURITY_LOCK_TITLE", + "on": "GLOBALS.GENERAL.ON", + "prewash": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.PREWASH", + "buzzer": "DW_CMD&CTRL.SETTINGS.END_CYCLE_BUZZER", + "holiday_mode": "REF.DASHBOARD_MENU_MORE_NOTIFICATIONS.HOLIDAY_MODE", + "auto_set": "REF_CMD&CTRL.MODALITIES.ECO", + "super_cool": "REF_CMD&CTRL.MODALITIES.SUPER_COOL", + "super_freeze": "REF_CMD&CTRL.MODALITIES.SUPER_FREEZE", + "freezer_door": ["GLOBALS.APPLIANCE_STATUS.DOOR_OPEN", "REF.ZONES.FREEZER"], + "fridge_door": ["GLOBALS.APPLIANCE_STATUS.DOOR_OPEN", "REF.ZONES.FRIDGE"], + "filter_replacement": "AP.MAINTENANCE.FILTER_REPLACEMENT", + }, + "button": { + "induction_hob": "GLOBALS.APPLIANCES_NAME.IH", + "start_program": ["WC.SET_PROGRAM.PROGRAM", "GLOBALS.GENERAL.START_ON"], + "stop_program": ["WC.SET_PROGRAM.PROGRAM", "GLOBALS.GENERAL.STOP"], + }, + "select": { + "dry_levels": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_LEVEL", + "dry_time": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_TIME", + "spin_speed": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.SPINSPEED", + "temperature": "IH.COMMON.TEMPERATURE", + "programs_dw": "WC.SET_PROGRAM.PROGRAM", + "programs_ih": "WC.SET_PROGRAM.PROGRAM", + "programs_ov": "WC.SET_PROGRAM.PROGRAM", + "programs_td": "WC.SET_PROGRAM.PROGRAM", + "programs_wm": "WC.SET_PROGRAM.PROGRAM", + "programs_ac": "WC.SET_PROGRAM.PROGRAM", + "programs_ref": "WC.SET_PROGRAM.PROGRAM", + "eco_pilot": "AC.PROGRAM_DETAIL.ECO_PILOT", + "remaining_time": "ENROLLMENT_COMMON.GENERAL.REMAINING_TIME", + "ref_zones": "IH.COMMON.COIL", + }, + "sensor": { + "dry_levels": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_LEVEL", + "dry_time": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_TIME", + "power": "OV.RECIPE_DETAIL.POWER_LEVEL", + "remaining_time": "ENROLLMENT_COMMON.GENERAL.REMAINING_TIME", + "temperature": "IH.COMMON.TEMPERATURE", + "water_efficiency": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_RESULT.WATER_EFFICIENCY", + "water_saving": "STATISTICS.SMART_AI_CYCLE.WATER_SAVING", + "duration": "WASHING_CMD&CTRL.DRAWER_PROGRAM_FILTERS.DURATION", + "target_temperature": "IH.COOKING_DETAIL.TEMPERATURE_TARGETING", + "spin_speed": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.SPINSPEED", + "steam_leve": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.STEAM_LEVEL", + "dirt_level": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.DIRTY_LEVEL", + "program_phases_wm": "WASHING_CMD&CTRL.STATISTICS_GRAPHIC_INSTANT_CONSUMPTION.PHASE", + "program_phases_td": "WASHING_CMD&CTRL.STATISTICS_GRAPHIC_INSTANT_CONSUMPTION.PHASE", + "program_phases_dw": "WASHING_CMD&CTRL.STATISTICS_GRAPHIC_INSTANT_CONSUMPTION.PHASE", + "delay_time": "HINTS.TIPS_TIME_ENERGY_SAVING.TIPS_USE_AT_NIGHT_TITLE", + "suggested_load": "WASHING_CMD&CTRL.DRAWER_PROGRAM_FILTERS.LOAD_CAPACITY", + "energy_label": "WASHING_CMD&CTRL.DRAWER_PROGRAM_FILTERS.ENERGY_EFFICIENCY", + "det_dust": "HUBS.WIDGET.STAINS_WIDGET.STAINS.SUGGESTED_DET_DUST", + "det_liquid": "HUBS.WIDGET.STAINS_WIDGET.STAINS.SUGGESTED_DET_LIQUID", + "errors": "ROBOT_CMD&CTRL.PHASE_ERROR.TITLE", + "programs": "OV.TABS.CURRENT_PROGRAM", + "room_temperature": "REF.SMART_DRINK_ASSISTANT.AMBIENT", + "humidity": "AP.TITLES.HUMIDITY", + "cycles_total": [ + "WASHING_CMD&CTRL.GENERAL.CYCLES", + "WC.VIRTUAL_WINE_STATS_COUNTRY.TOTAL", + ], + "energy_total": [ + "MISE.ENERGY_CONSUMPTION.TITLE", + "WC.VIRTUAL_WINE_STATS_COUNTRY.TOTAL", + ], + "water_total": [ + "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_RESULT.WATER_EFFICIENCY", + "WC.VIRTUAL_WINE_STATS_COUNTRY.TOTAL", + ], + "energy_current": [ + "MISE.ENERGY_CONSUMPTION.TITLE", + "CUBE90_GLOBAL.GENERAL.CURRENT", + ], + "water_current": [ + "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_RESULT.WATER_EFFICIENCY", + "CUBE90_GLOBAL.GENERAL.CURRENT", + ], + "freezer_temp": "REF_CMD&CTRL.TEMPERATURE_DRAWER_FREEZER.FREEZER_TEMPERATURE_TITLE", + "fridge_temp": "REF_CMD&CTRL.TEMPERATURE_DRAWER_FRIDGE.FRIDGE_TEMPERATURE_TITLE", + "programs_dw": "WC.SET_PROGRAM.PROGRAM", + "programs_ih": "WC.SET_PROGRAM.PROGRAM", + "programs_ov": "WC.SET_PROGRAM.PROGRAM", + "programs_td": "WC.SET_PROGRAM.PROGRAM", + "programs_wm": "WC.SET_PROGRAM.PROGRAM", + "programs_ac": "WC.SET_PROGRAM.PROGRAM", + "programs_ref": "WC.SET_PROGRAM.PROGRAM", + }, + "number": { + "power_management": "HINTS.COOKING_WITH_INDUCTION.POWER_MANAGEMENT", + "temperature": "IH.COMMON.TEMPERATURE", + "delay_time": "HINTS.TIPS_TIME_ENERGY_SAVING.TIPS_USE_AT_NIGHT_TITLE", + "water_hard": "WASHING_CMD&CTRL.DASHBOARD_MENU_MORE_SETTINGS_WATER.TITLE", + "program_duration": "OV.PROGRAM_DETAIL.PROGRAM_DURATION", + "target_temperature": "IH.COOKING_DETAIL.TEMPERATURE_TARGETING", + "rinse_iterations": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL.DRAWER_HEADER_RINSE", + "wash_time": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL.WASHING_TIME", + "dry_time": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_TIME", + "steam_level": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.STEAM_LEVEL", + "freezer_temp_sel": ["OV.COMMON.GOAL_TEMPERATURE", "REF.ZONES.FREEZER"], + "fridge_temp_sel": ["OV.COMMON.GOAL_TEMPERATURE", "REF.ZONES.FRIDGE"], + }, + "climate": { + "air_conditioner": "GLOBALS.APPLIANCES_NAME.AC", + "fridge": "REF.ZONES.FRIDGE", + "freezer": "REF.ZONES.FREEZER", + "oven": "GLOBALS.APPLIANCES_NAME.OV", + }, + "fan": {"air_extraction": "HO.DASHBOARD.AIR_EXTRACTION_TITLE"}, +} -- 2.39.5 From dfa5735bc2d6a62a6644437f2d02d53082c5f87f Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 12 Jun 2023 00:20:38 +0200 Subject: [PATCH 129/205] Readable internal names for some selects --- README.md | 1 + custom_components/hon/const.py | 2 + custom_components/hon/manifest.json | 2 +- custom_components/hon/select.py | 31 ++++++++------ custom_components/hon/sensor.py | 48 ++++++++++++++-------- custom_components/hon/translations/cs.json | 3 +- custom_components/hon/translations/de.json | 3 +- custom_components/hon/translations/el.json | 3 +- custom_components/hon/translations/en.json | 3 +- custom_components/hon/translations/es.json | 3 +- custom_components/hon/translations/fr.json | 3 +- custom_components/hon/translations/he.json | 3 +- custom_components/hon/translations/hr.json | 3 +- custom_components/hon/translations/it.json | 3 +- custom_components/hon/translations/nl.json | 3 +- custom_components/hon/translations/pl.json | 3 +- custom_components/hon/translations/pt.json | 3 +- custom_components/hon/translations/ro.json | 3 +- custom_components/hon/translations/ru.json | 3 +- custom_components/hon/translations/sk.json | 3 +- custom_components/hon/translations/sl.json | 3 +- custom_components/hon/translations/sr.json | 3 +- custom_components/hon/translations/tr.json | 3 +- custom_components/hon/translations/zh.json | 3 +- scripts/translation_keys.py | 2 + 25 files changed, 93 insertions(+), 50 deletions(-) diff --git a/README.md b/README.md index a52cdaa..e0ac3ea 100644 --- a/README.md +++ b/README.md @@ -164,6 +164,7 @@ For every device exists a hidden button which can be used to log all infos of yo | Filter Replacement | | `binary_sensor` | `filterChangeStatusLocal` | | In Air Temperature Outdoor | `thermometer` | `sensor` | `tempInAirOutdoor` | | Indoor Temperature | `thermometer` | `sensor` | `tempIndoor` | +| Machine Status | `information` | `sensor` | `machMode` | | Outdoor Temperature | `thermometer` | `sensor` | `tempOutdoor` | | Program | | `select` | `startProgram.program` | | Program | `play` | `sensor` | `programName` | diff --git a/custom_components/hon/const.py b/custom_components/hon/const.py index 3525859..9290eaa 100644 --- a/custom_components/hon/const.py +++ b/custom_components/hon/const.py @@ -128,6 +128,7 @@ TUMBLE_DRYER_PR_PHASE = { } DIRTY_LEVEL = { + "0": "unknown", "1": "little", "2": "normal", "3": "very", @@ -185,4 +186,5 @@ AC_HUMAN_SENSE = { "0": "touch_off", "1": "avoid_touch", "2": "follow_touch", + "3": "unknown", } diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 70e82d3..d39f53b 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -11,5 +11,5 @@ "requirements": [ "pyhOn==0.13.0" ], - "version": "0.9.0-beta.1" + "version": "0.9.0-beta.2" } diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index 947db9a..d15f4b3 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -2,6 +2,7 @@ from __future__ import annotations import logging from dataclasses import dataclass +from typing import Dict, List from homeassistant.components.select import SelectEntity, SelectEntityDescription from homeassistant.config_entries import ConfigEntry @@ -9,8 +10,8 @@ from homeassistant.const import UnitOfTemperature, UnitOfTime, REVOLUTIONS_PER_M from homeassistant.core import callback from homeassistant.helpers.entity import EntityCategory from pyhon.appliance import HonAppliance -from pyhon.parameter.fixed import HonParameterFixed +from . import const from .const import DOMAIN from .hon import HonEntity, unique_entities @@ -19,12 +20,13 @@ _LOGGER = logging.getLogger(__name__) @dataclass class HonSelectEntityDescription(SelectEntityDescription): - pass + option_list: Dict[str, str] = None @dataclass class HonConfigSelectEntityDescription(SelectEntityDescription): entity_category: EntityCategory = EntityCategory.CONFIG + option_list: Dict[str, str] = None SELECTS = { @@ -67,6 +69,7 @@ SELECTS = { name="Dry level", icon="mdi:hair-dryer", translation_key="dry_levels", + option_list=const.TUMBLE_DRYER_DRY_LEVEL, ), ), "OV": ( @@ -115,6 +118,7 @@ SELECTS = { name="Eco Pilot", icon="mdi:run", translation_key="eco_pilot", + option_list=const.AC_HUMAN_SENSE, ), ), "REF": ( @@ -158,13 +162,6 @@ class HonSelectEntity(HonEntity, SelectEntity): def __init__(self, hass, entry, device: HonAppliance, description) -> None: super().__init__(hass, entry, device, description) - if not (setting := self._device.settings.get(description.key)): - self._attr_options: list[str] = [] - elif not isinstance(setting, HonParameterFixed): - self._attr_options: list[str] = setting.values - else: - self._attr_options: list[str] = [setting.value] - @property def current_option(self) -> str | None: value = self._device.settings.get(self.entity_description.key) @@ -183,12 +180,20 @@ class HonSelectEntity(HonEntity, SelectEntity): setting = self._device.settings.get(self.entity_description.key) if setting is None: self._attr_available = False - self._attr_options: list[str] = [] - self._attr_native_value = None + self._attr_options: List[str] = [] + value = None else: self._attr_available = True - self._attr_options: list[str] = setting.values - self._attr_native_value = setting.value + self._attr_options: List[str] = setting.values + value = setting.value + if self.entity_description.option_list is not None: + self._attr_options = [ + self.entity_description.option_list.get(k, k) + for k in self._attr_options + ] + if value is not None: + value = self.entity_description.option_list.get(value, value) + self._attr_native_value = value if update: self.async_write_ha_state() diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 3d2a124..0286811 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -1,6 +1,6 @@ import logging from dataclasses import dataclass -from typing import List +from typing import Dict from homeassistant.components.sensor import ( SensorEntity, @@ -21,7 +21,6 @@ from homeassistant.const import ( ) from homeassistant.core import callback from homeassistant.helpers.entity import EntityCategory -from pyhon.appliance import HonAppliance from . import const from .const import DOMAIN @@ -33,11 +32,12 @@ _LOGGER = logging.getLogger(__name__) @dataclass class HonConfigSensorEntityDescription(SensorEntityDescription): entity_category: EntityCategory = EntityCategory.CONFIG + option_list: Dict[str, str] = None @dataclass class HonSensorEntityDescription(SensorEntityDescription): - option_list: List = None + option_list: Dict[str, str] = None SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { @@ -155,7 +155,9 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { key="dirtyLevel", name="Dirt level", icon="mdi:liquid-spot", + device_class=SensorDeviceClass.ENUM, translation_key="dirt_level", + option_list=const.DIRTY_LEVEL, ), HonConfigSensorEntityDescription( key="startProgram.suggestedLoadW", @@ -256,14 +258,18 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { HonConfigSensorEntityDescription( key="startProgram.steamLevel", name="Steam level", + device_class=SensorDeviceClass.ENUM, icon="mdi:smoke", translation_key="steam_level", + option_list=const.STEAM_LEVEL, ), HonSensorEntityDescription( key="steamLevel", name="Steam level", icon="mdi:smoke", + device_class=SensorDeviceClass.ENUM, translation_key="steam_level", + option_list=const.STEAM_LEVEL, ), HonConfigSensorEntityDescription( key="steamType", @@ -494,6 +500,14 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { device_class=SensorDeviceClass.ENUM, translation_key="programs_ac", ), + HonSensorEntityDescription( + key="machMode", + name="Machine Status", + icon="mdi:information", + device_class=SensorDeviceClass.ENUM, + translation_key="mach_modes_ac", + option_list=const.AC_MACH_MODE, + ), ), "REF": ( HonSensorEntityDescription( @@ -696,20 +710,16 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non class HonSensorEntity(HonEntity, SensorEntity): entity_description: HonSensorEntityDescription - def __init__(self, hass, entry, device: HonAppliance, description): - super().__init__(hass, entry, device, description) - if description.key == "programName": - self._attr_options = self._device.settings.get( - "startProgram.program" - ).values + ["No Program"] - elif description.option_list is not None: - self._attr_options = list(description.option_list.values()) - @callback def _handle_coordinator_update(self, update=True) -> None: value = self._device.get(self.entity_description.key, "") - if self.entity_description.option_list is not None: - value = self.entity_description.option_list[value] + if self.entity_description.key == "programName": + self._attr_options = self._device.settings.get( + "startProgram.program" + ).values + ["No Program"] + elif self.entity_description.option_list is not None: + self._attr_options = list(self.entity_description.option_list.values()) + value = self.entity_description.option_list.get(value, value) if not value and self.entity_description.state_class is not None: self._attr_native_value = 0 self._attr_native_value = value @@ -725,12 +735,16 @@ class HonConfigSensorEntity(HonEntity, SensorEntity): value = self._device.settings.get(self.entity_description.key, None) if self.entity_description.state_class is not None: if value and value.value: - self._attr_native_value = ( + value = ( float(value.value) if "." in str(value.value) else int(value.value) ) else: - self._attr_native_value = 0 + value = 0 else: - self._attr_native_value = value.value + value = value.value + if self.entity_description.option_list is not None and not value == 0: + self._attr_options = list(self.entity_description.option_list.values()) + value = self.entity_description.option_list.get(value, value) + self._attr_native_value = value if update: self.async_write_ha_state() diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index e034a44..2d66d47 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -873,7 +873,8 @@ "state": { "touch_off": "Vypnuto", "avoid_touch": "Vyhybání", - "follow_touch": "Sledování" + "follow_touch": "Sledování", + "unknown": "unknown" }, "name": "Senzor osob" }, diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index 8c21355..7cf3cf3 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -873,7 +873,8 @@ "state": { "touch_off": "Aus", "avoid_touch": "Berührung vermeiden", - "follow_touch": "Folgen" + "follow_touch": "Folgen", + "unknown": "unknown" }, "name": "Eco Pilot" }, diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index 24b419d..93d4665 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -873,7 +873,8 @@ "state": { "touch_off": "Απενεργοποιηση", "avoid_touch": "Αποφύγετε την αφή", - "follow_touch": "Σας ακολουθεί" + "follow_touch": "Σας ακολουθεί", + "unknown": "unknown" }, "name": "Οικολογικός πιλότος" }, diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 672e62d..f14fa71 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -894,7 +894,8 @@ "state": { "touch_off": "Off", "avoid_touch": "Avoid touch", - "follow_touch": "Follow" + "follow_touch": "Follow", + "unknown": "unknown" }, "name": "Eco pilot" }, diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index 003d6e6..02dd717 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -873,7 +873,8 @@ "state": { "touch_off": "Apagado", "avoid_touch": "Evitar el contacto", - "follow_touch": "Sígueme" + "follow_touch": "Sígueme", + "unknown": "unknown" }, "name": "Eco pilot" }, diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index cb604dc..fe78f66 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -873,7 +873,8 @@ "state": { "touch_off": "Désactivé", "avoid_touch": "Évitez de toucher", - "follow_touch": "Suivi" + "follow_touch": "Suivi", + "unknown": "unknown" }, "name": "Pilote éco" }, diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index feca9c3..7a0ff87 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -431,7 +431,8 @@ "state": { "touch_off": "Off", "avoid_touch": "Avoid touch", - "follow_touch": "Follow" + "follow_touch": "Follow", + "unknown": "unknown" }, "name": "Eco pilot" }, diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index e96dc3f..385085f 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -873,7 +873,8 @@ "state": { "touch_off": "Isključeno", "avoid_touch": "Izbjegavajte dodir", - "follow_touch": "Pratite" + "follow_touch": "Pratite", + "unknown": "unknown" }, "name": "Eko-pilot" }, diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index c076569..dcad47c 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -878,7 +878,8 @@ "state": { "touch_off": "Spento", "avoid_touch": "Avoid touch", - "follow_touch": "Segui" + "follow_touch": "Segui", + "unknown": "unknown" }, "name": "Eco pilot" }, diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index f6737ed..ba5c686 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -873,7 +873,8 @@ "state": { "touch_off": "Uit", "avoid_touch": "Voorkom aanraking", - "follow_touch": "Volgen" + "follow_touch": "Volgen", + "unknown": "unknown" }, "name": "Eco pilot" }, diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index 6a36344..a9a0096 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -873,7 +873,8 @@ "state": { "touch_off": "Wyłącz", "avoid_touch": "Unikanie kontaktu", - "follow_touch": "Podążanie" + "follow_touch": "Podążanie", + "unknown": "unknown" }, "name": "Eco pilot" }, diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index 3d342c0..44ad0e8 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -873,7 +873,8 @@ "state": { "touch_off": "Off", "avoid_touch": "Evitar o toque", - "follow_touch": "Seguir" + "follow_touch": "Seguir", + "unknown": "unknown" }, "name": "Eco pilot" }, diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index b650ab2..d750b22 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -873,7 +873,8 @@ "state": { "touch_off": "Oprit", "avoid_touch": "Evitați atingerea", - "follow_touch": "Urmărire" + "follow_touch": "Urmărire", + "unknown": "unknown" }, "name": "Eco pilot" }, diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index b688ad0..ffecc52 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -873,7 +873,8 @@ "state": { "touch_off": "ВЫКЛ", "avoid_touch": "Не прикасайтесь", - "follow_touch": "Следование" + "follow_touch": "Следование", + "unknown": "unknown" }, "name": "Eco pilot" }, diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index dfc4ccf..1d84748 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -873,7 +873,8 @@ "state": { "touch_off": "Off (Vypnúť)", "avoid_touch": "Nedotýkať sa", - "follow_touch": "Nasledovať" + "follow_touch": "Nasledovať", + "unknown": "unknown" }, "name": "Ekologický pilot" }, diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index 592a02c..cedf8f8 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -873,7 +873,8 @@ "state": { "touch_off": "Izklop", "avoid_touch": "Brez dotika", - "follow_touch": "Sledenje" + "follow_touch": "Sledenje", + "unknown": "unknown" }, "name": "Eko pilot" }, diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index ca8fd65..aaa157e 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -873,7 +873,8 @@ "state": { "touch_off": "Isključeno", "avoid_touch": "Izbegavajte dodir", - "follow_touch": "Pratiti" + "follow_touch": "Pratiti", + "unknown": "unknown" }, "name": "Eko pilot" }, diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index 0af9515..562fd7f 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -873,7 +873,8 @@ "state": { "touch_off": "Kapali", "avoid_touch": "Dokunmaktan kaçının", - "follow_touch": "Takip et" + "follow_touch": "Takip et", + "unknown": "unknown" }, "name": "Eko pilot" }, diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index efb9296..0c2111e 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -873,7 +873,8 @@ "state": { "touch_off": "关闭", "avoid_touch": "避免触摸", - "follow_touch": "跟随" + "follow_touch": "跟随", + "unknown": "unknown" }, "name": "节能模式" }, diff --git a/scripts/translation_keys.py b/scripts/translation_keys.py index 9f475cc..57b5364 100644 --- a/scripts/translation_keys.py +++ b/scripts/translation_keys.py @@ -35,6 +35,7 @@ DIRTY_LEVEL = { "little": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OPTIONS_VALUES_DESCRIPTION.LITTLE", "normal": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OPTIONS_VALUES_DESCRIPTION.NORMAL", "very": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OPTIONS_VALUES_DESCRIPTION.VERY", + "unknown": "unknown", } STEAM_LEVEL = { @@ -81,6 +82,7 @@ AC_HUMAN_SENSE = { "touch_off": "AC.PROGRAM_DETAIL.TOUCH_OFF", "avoid_touch": "AC.PROGRAM_DETAIL.AVOID_TOUCH", "follow_touch": "AC.PROGRAM_DETAIL.FOLLOW_TOUCH", + "unknown": "unknown", } REF_ZONES = { -- 2.39.5 From b1448ddfd8c7977dea3497ac326a661258d8e201 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 12 Jun 2023 01:30:43 +0200 Subject: [PATCH 130/205] Update readme --- README.md | 33 +++++++++++++++++---------------- info.md | 33 +++++++++++++++++---------------- 2 files changed, 34 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index e0ac3ea..06b1777 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![PyPI](https://img.shields.io/pypi/v/pyhon?label=pyhOn)](https://github.com/Andre0512/pyhOn) [![GitHub](https://img.shields.io/github/license/Andre0512/hon?color=red)](https://github.com/Andre0512/hon/blob/main/LICENSE) [![GitHub all releases](https://img.shields.io/github/downloads/Andre0512/hon/total?color=blue)](https://tooomm.github.io/github-release-stats/?username=Andre0512&repository=hon) -Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.com/). +Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.com/) based on [pyhOn](https://github.com/Andre0512/pyhon). ## Supported Appliances - [Washing Machine](https://github.com/Andre0512/hon#washing-machine) @@ -34,6 +34,22 @@ _Restart Home Assistant_ **Method 2**: Settings > Devices & Services > Add Integration > **Haier hOn** _If the integration is not in the list, you need to clear the browser cache._ +## Supported Models +Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). + +| | **Haier** | **Hoover** | **Candy** | +|---------------------|------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------| +| **Washing Machine** | HW90-B14TEAM5
HW100-B14959U1 | H-WASH 500
H7W4 48MBC-S | RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | +| **Tumble Dryer** | HD80-A3959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S | +| **Washer Dryer** | HWD100-B14979 | HWPS4954DAMR-11 | RPW41066BWMR/1-S | +| **Oven** | HWO60SM2F3XH | HSOT3161WG | | +| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | +| **Air conditioner** | AD105S2SM3FA
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35TADHRA-2
| | | +| **Fridge** | HFW7720ENMB | | CCE4T620EWU | +| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | +| **Hood** | HADG6DS46BWIFI | | | +| **Wine Cellar** | HWS247FDU1 | | | + ## Supported Languages Translation of internal names like programs are available for all languages which are official supported by the hOn app: * 🇨🇳 Chinese @@ -60,21 +76,6 @@ Translation of internal names like programs are available for all languages whic ### Washing Machine ![washing_machine.png](assets/washing_machine.png) -## Supported Models -Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). - -| | **Haier** | **Hoover** | **Candy** | -|--------------------|------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------| -| **Washing Machine** | HW90-B14TEAM5
HW100-B14959U1 | H-WASH 500
H7W4 48MBC-S | RO44 1286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | -| **Tumble Dryer** | HD80-A3959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S | -| **Washer Dryer** | HWD100-B14979 | HWPS4954DAMR-11 | RPW41066BWMR/1-S | -| **Oven** | HWO60SM2F3XH | HSOT3161WG | | -| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | -| **Air conditioner** | AD105S2SM3FA
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35TADHRA-2
| | | -| **Fridge** | HFW7720ENMB | | CCE4T620EWU | -| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | -| **Hood** | HADG6DS46BWIFI | | | - ## Contribute Any kind of contribution is welcome! ### Read out device data diff --git a/info.md b/info.md index 8e58f8c..1dafd95 100644 --- a/info.md +++ b/info.md @@ -2,7 +2,7 @@ [![GitHub release (latest by date)](https://img.shields.io/github/v/release/Andre0512/hon?color=green)](https://github.com/Andre0512/hon/releases/latest) [![GitHub](https://img.shields.io/github/license/Andre0512/hon?color=red)](https://github.com/Andre0512/hon/blob/main/LICENSE) [![GitHub all releases](https://img.shields.io/github/downloads/Andre0512/hon/total?color=blue)](https://tooomm.github.io/github-release-stats/?username=Andre0512&repository=hon) -Support for home appliances of Haier's mobile app hOn. +Support for home appliances of [Haier's mobile app hOn](https://hon-smarthome.com/) based on [pyhOn](https://github.com/Andre0512/pyhon). ## Supported Appliances - [Washing Machine](https://github.com/Andre0512/hon#washing-machine) @@ -23,6 +23,22 @@ Support for home appliances of Haier's mobile app hOn. **Method 2**: Settings > Devices & Services > Add Integration > **Haier hOn** _If the integration is not in the list, you need to clear the browser cache._ +## Supported Models +Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). + +| | **Haier** | **Hoover** | **Candy** | +|---------------------|------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------| +| **Washing Machine** | HW90-B14TEAM5
HW100-B14959U1 | H-WASH 500
H7W4 48MBC-S | RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | +| **Tumble Dryer** | HD80-A3959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S | +| **Washer Dryer** | HWD100-B14979 | HWPS4954DAMR-11 | RPW41066BWMR/1-S | +| **Oven** | HWO60SM2F3XH | HSOT3161WG | | +| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | +| **Air conditioner** | AD105S2SM3FA
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35TADHRA-2
| | | +| **Fridge** | HFW7720ENMB | | CCE4T620EWU | +| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | +| **Hood** | HADG6DS46BWIFI | | | +| **Wine Cellar** | HWS247FDU1 | | | + ## Supported Languages Translation of internal names like programs are available for all languages which are official supported by the hOn app: * 🇨🇳 Chinese @@ -49,21 +65,6 @@ Translation of internal names like programs are available for all languages whic ### Washing Machine ![washing_machine.png](assets/washing_machine.png) -## Supported Models -Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). - -| | **Haier** | **Hoover** | **Candy** | -|--------------------|------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------| -| **Washing Machine** | HW90-B14TEAM5
HW100-B14959U1 | H-WASH 500
H7W4 48MBC-S | RO44 1286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | -| **Tumble Dryer** | HD80-A3959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S | -| **Washer Dryer** | HWD100-B14979 | HWPS4954DAMR-11 | RPW41066BWMR/1-S | -| **Oven** | HWO60SM2F3XH | HSOT3161WG | | -| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | -| **Air conditioner** | AD105S2SM3FA
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35TADHRA-2
| | | -| **Fridge** | HFW7720ENMB | | CCE4T620EWU | -| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | -| **Hood** | HADG6DS46BWIFI | | | - ## Contribute Want to help us to support more appliances? Or add more sensors? Or help with translating? Or beautify some icons or captions? Check out the [project on GitHub](https://github.com/Andre0512/hon), every contribution is welcome! -- 2.39.5 From c1e6f9547c16d4035f7a560126473f75218bc475 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 12 Jun 2023 12:28:39 +0200 Subject: [PATCH 131/205] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 39 +++++++++++++++++++++++ .github/ISSUE_TEMPLATE/feature_request.md | 26 +++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..661bc9c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,39 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: bug +assignees: Andre0512 + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Environment (please complete the following information):** + - Home Assistant Version: [e.g. `2023.6.1`] + - hOn Integration Version [e.g. `0.8.1`, can be found in HACS] + - pyhOn Version [e.g. `0.13.1`, can be found in device log] + +**Additional context** +Add any other context about the problem here. + +**Device Log** +Post your device info here (if available) +1. Enable the "Show Device Info" button +_This button can be found in the diagnostic section of your device or in the entity overview if "show disabled entities" is enabled._ +2. Press the button to create a notification +3. Open home assistant notifications and copy the message (Crtl+A, Ctrl+C) diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..cb133ce --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,26 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: enhancement +assignees: Andre0512 + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Device Log** +Post your device info here (if available) +1. Enable the "Show Device Info" button +_This button can be found in the diagnostic section of your device or in the entity overview if "show disabled entities" is enabled._ +2. Press the button to create a notification +3. Open home assistant notifications and copy the message (Crtl+A, Ctrl+C) +**Additional context** +Add any other context or screenshots about the feature request here. -- 2.39.5 From 1ea9153c2e1b2710c0b9b17f418a8c2fa296eeea Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Tue, 13 Jun 2023 00:14:51 +0200 Subject: [PATCH 132/205] Apply changes for new pyhon version --- custom_components/hon/binary_sensor.py | 43 +++--- custom_components/hon/button.py | 2 +- custom_components/hon/climate.py | 22 +-- custom_components/hon/const.py | 204 ++++++++++++------------- custom_components/hon/fan.py | 6 +- custom_components/hon/hon.py | 6 + custom_components/hon/number.py | 2 +- custom_components/hon/select.py | 22 +-- custom_components/hon/sensor.py | 12 +- custom_components/hon/switch.py | 16 +- 10 files changed, 170 insertions(+), 165 deletions(-) diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index c30e02d..8a29705 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -17,7 +17,7 @@ _LOGGER = logging.getLogger(__name__) @dataclass class HonBinarySensorEntityDescriptionMixin: - on_value: str = "" + on_value: str | float = "" @dataclass @@ -41,14 +41,14 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { key="doorLockStatus", name="Door Lock", device_class=BinarySensorDeviceClass.LOCK, - on_value="0", + on_value=0, translation_key="door_lock", ), HonBinarySensorEntityDescription( key="doorStatus", name="Door", device_class=BinarySensorDeviceClass.DOOR, - on_value="1", + on_value=1, translation_key="door_open", ), HonBinarySensorEntityDescription( @@ -82,7 +82,7 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { key="doorStatus", name="Door", device_class=BinarySensorDeviceClass.DOOR, - on_value="1", + on_value=1, translation_key="door_open", ), HonBinarySensorEntityDescription( @@ -102,7 +102,7 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { key="attributes.parameters.onOffStatus", name="On", device_class=BinarySensorDeviceClass.RUNNING, - on_value="1", + on_value=1, icon="mdi:power-cycle", translation_key="on", ), @@ -120,7 +120,7 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { key="attributes.parameters.onOffStatus", name="On", device_class=BinarySensorDeviceClass.RUNNING, - on_value="1", + on_value=1, icon="mdi:power-cycle", translation_key="on", ), @@ -128,13 +128,13 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { key="hotStatus", name="Hot Status", device_class=BinarySensorDeviceClass.HEAT, - on_value="1", + on_value=1, translation_key="still_hot", ), HonBinarySensorEntityDescription( key="panStatus", name="Pan Status", - on_value="1", + on_value=1, icon="mdi:pot-mix", translation_key="pan_status", ), @@ -142,7 +142,7 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { key="hobLockStatus", name="Hob Lock", device_class=BinarySensorDeviceClass.LOCK, - on_value="0", + on_value=0, translation_key="child_lock", ), ), @@ -151,7 +151,7 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { key="saltStatus", name="Salt", device_class=BinarySensorDeviceClass.PROBLEM, - on_value="1", + on_value=1, icon="mdi:shaker-outline", translation_key="salt_level", ), @@ -159,7 +159,7 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { key="rinseAidStatus", name="Rinse Aid", device_class=BinarySensorDeviceClass.PROBLEM, - on_value="1", + on_value=1, icon="mdi:spray-bottle", translation_key="rinse_aid", ), @@ -174,7 +174,7 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { key="doorStatus", name="Door", device_class=BinarySensorDeviceClass.DOOR, - on_value="1", + on_value=1, translation_key="door_open", ), ), @@ -183,13 +183,13 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { key="filterChangeStatusLocal", name="Filter Replacement", device_class=BinarySensorDeviceClass.PROBLEM, - on_value="1", + on_value=1, translation_key="filter_replacement", ), HonBinarySensorEntityDescription( key="ch2oCleaningStatus", name="Ch2O Cleaning", - on_value="1", + on_value=1, ), ), "REF": ( @@ -198,7 +198,7 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { name="Super Cool", icon="mdi:snowflake", device_class=BinarySensorDeviceClass.RUNNING, - on_value="1", + on_value=1, translation_key="super_cool", ), HonBinarySensorEntityDescription( @@ -206,7 +206,7 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { name="Super Freeze", icon="mdi:snowflake-variant", device_class=BinarySensorDeviceClass.RUNNING, - on_value="1", + on_value=1, translation_key="super_freeze", ), HonBinarySensorEntityDescription( @@ -214,7 +214,7 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { name="Door Status Freezer", device_class=BinarySensorDeviceClass.DOOR, icon="mdi:fridge-top", - on_value="1", + on_value=1, translation_key="freezer_door", ), HonBinarySensorEntityDescription( @@ -222,7 +222,7 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { name="Door Status Fridge", icon="mdi:fridge-bottom", device_class=BinarySensorDeviceClass.DOOR, - on_value="1", + on_value=1, translation_key="fridge_door", ), HonBinarySensorEntityDescription( @@ -230,7 +230,7 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { name="Auto-Set Mode", icon="mdi:thermometer-auto", device_class=BinarySensorDeviceClass.RUNNING, - on_value="1", + on_value=1, translation_key="auto_set", ), HonBinarySensorEntityDescription( @@ -238,13 +238,12 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { name="Holiday Mode", icon="mdi:palm-tree", device_class=BinarySensorDeviceClass.RUNNING, - on_value="1", + on_value=1, translation_key="holiday_mode", ), ), } - BINARY_SENSORS["WD"] = unique_entities(BINARY_SENSORS["WM"], BINARY_SENSORS["TD"]) @@ -252,7 +251,7 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non entities = [] for device in hass.data[DOMAIN][entry.unique_id].appliances: for description in BINARY_SENSORS.get(device.appliance_type, []): - if not device.get(description.key): + if device.get(description.key) is None: continue entity = HonBinarySensorEntity(hass, entry, device, description) await entity.coordinator.async_config_entry_first_refresh() diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index 1309914..f503c21 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -77,7 +77,7 @@ class HonButtonEntity(HonEntity, ButtonEntity): """Return True if entity is available.""" return ( super().available - and self._device.get("remoteCtrValid", "1") == "1" + and int(self._device.get("remoteCtrValid", "1")) == 1 and self._device.get("attributes.lastConnEvent.category") != "DISCONNECTED" ) diff --git a/custom_components/hon/climate.py b/custom_components/hon/climate.py index c2bd3f2..fb8a62a 100644 --- a/custom_components/hon/climate.py +++ b/custom_components/hon/climate.py @@ -121,10 +121,10 @@ class HonACClimateEntity(HonEntity, ClimateEntity): self._attr_hvac_modes = [HVACMode.OFF] for mode in device.settings["settings.machMode"].values: - self._attr_hvac_modes.append(HON_HVAC_MODE[mode]) + self._attr_hvac_modes.append(HON_HVAC_MODE[int(mode)]) self._attr_fan_modes = [FAN_OFF] for mode in device.settings["settings.windSpeed"].values: - self._attr_fan_modes.append(HON_FAN[mode]) + self._attr_fan_modes.append(HON_FAN[int(mode)]) self._attr_swing_modes = [ SWING_OFF, SWING_VERTICAL, @@ -142,12 +142,12 @@ class HonACClimateEntity(HonEntity, ClimateEntity): @property def target_temperature(self) -> int | None: """Return the temperature we try to reach.""" - return int(float(self._device.get("tempSel"))) + return self._device.get("tempSel") @property def current_temperature(self) -> float | None: """Return the current temperature.""" - return float(self._device.get("tempIndoor")) + return self._device.get("tempIndoor") async def async_set_temperature(self, **kwargs): if (temperature := kwargs.get(ATTR_TEMPERATURE)) is None: @@ -158,7 +158,7 @@ class HonACClimateEntity(HonEntity, ClimateEntity): @property def hvac_mode(self) -> HVACMode | str | None: - if self._device.get("onOffStatus") == "0": + if self._device.get("onOffStatus") == 0: return HVACMode.OFF else: return HON_HVAC_MODE[self._device.get("machMode")] @@ -193,11 +193,11 @@ class HonACClimateEntity(HonEntity, ClimateEntity): """Return the swing setting.""" horizontal = self._device.get("windDirectionHorizontal") vertical = self._device.get("windDirectionVertical") - if horizontal == "7" and vertical == "8": + if horizontal == 7 and vertical == 8: return SWING_BOTH - elif horizontal == "7": + elif horizontal == 7: return SWING_HORIZONTAL - elif vertical == "8": + elif vertical == 8: return SWING_VERTICAL else: return SWING_OFF @@ -263,13 +263,13 @@ class HonClimateEntity(HonEntity, ClimateEntity): @property def target_temperature(self) -> float | None: """Return the temperature we try to reach.""" - return float(self._device.get(self.entity_description.key)) + return self._device.get(self.entity_description.key) @property def current_temperature(self) -> float | None: """Return the current temperature.""" temp_key = self.entity_description.key.split(".")[-1].replace("Sel", "") - return float(self._device.get(temp_key)) + return self._device.get(temp_key) async def async_set_temperature(self, **kwargs): if (temperature := kwargs.get(ATTR_TEMPERATURE)) is None: @@ -280,7 +280,7 @@ class HonClimateEntity(HonEntity, ClimateEntity): @property def hvac_mode(self) -> HVACMode | str | None: - if self._device.get("onOffStatus") == "0": + if self._device.get("onOffStatus") == 0: return HVACMode.OFF else: return self.entity_description.mode diff --git a/custom_components/hon/const.py b/custom_components/hon/const.py index 9290eaa..a4d2dbd 100644 --- a/custom_components/hon/const.py +++ b/custom_components/hon/const.py @@ -21,13 +21,13 @@ PLATFORMS = [ ] HON_HVAC_MODE = { - "0": HVACMode.AUTO, - "1": HVACMode.COOL, - "2": HVACMode.DRY, - "3": HVACMode.DRY, - "4": HVACMode.HEAT, - "5": HVACMode.FAN_ONLY, - "6": HVACMode.FAN_ONLY, + 0: HVACMode.AUTO, + 1: HVACMode.COOL, + 2: HVACMode.DRY, + 3: HVACMode.DRY, + 4: HVACMode.HEAT, + 5: HVACMode.FAN_ONLY, + 6: HVACMode.FAN_ONLY, } HON_HVAC_PROGRAM = { @@ -39,11 +39,11 @@ HON_HVAC_PROGRAM = { } HON_FAN = { - "1": FAN_HIGH, - "2": FAN_MEDIUM, - "3": FAN_LOW, - "4": FAN_AUTO, - "5": FAN_AUTO, + 1: FAN_HIGH, + 2: FAN_MEDIUM, + 3: FAN_LOW, + 4: FAN_AUTO, + 5: FAN_AUTO, } # These languages are official supported by hOn @@ -70,121 +70,121 @@ LANGUAGES = [ ] WASHING_PR_PHASE = { - "0": "ready", - "1": "washing", - "2": "washing", - "3": "spin", - "4": "rinse", - "5": "rinse", - "6": "rinse", - "7": "drying", - "9": "steam", - "10": "ready", - "11": "spin", - "12": "weighting", - "13": "weighting", - "14": "washing", - "15": "washing", - "16": "washing", - "17": "rinse", - "18": "rinse", - "19": "scheduled", - "20": "tumbling", - "24": "refresh", - "25": "washing", - "26": "heating", - "27": "washing", + 0: "ready", + 1: "washing", + 2: "washing", + 3: "spin", + 4: "rinse", + 5: "rinse", + 6: "rinse", + 7: "drying", + 9: "steam", + 10: "ready", + 11: "spin", + 12: "weighting", + 13: "weighting", + 14: "washing", + 15: "washing", + 16: "washing", + 17: "rinse", + 18: "rinse", + 19: "scheduled", + 20: "tumbling", + 24: "refresh", + 25: "washing", + 26: "heating", + 27: "washing", } MACH_MODE = { - "0": "ready", # NO_STATE - "1": "ready", # SELECTION_MODE - "2": "running", # EXECUTION_MODE - "3": "pause", # PAUSE_MODE - "4": "scheduled", # DELAY_START_SELECTION_MODE - "5": "scheduled", # DELAY_START_EXECUTION_MODE - "6": "error", # ERROR_MODE - "7": "ready", # END_MODE - "8": "test", # TEST_MODE - "9": "ending", # STOP_MODE + 0: "ready", # NO_STATE + 1: "ready", # SELECTION_MODE + 2: "running", # EXECUTION_MODE + 3: "pause", # PAUSE_MODE + 4: "scheduled", # DELAY_START_SELECTION_MODE + 5: "scheduled", # DELAY_START_EXECUTION_MODE + 6: "error", # ERROR_MODE + 7: "ready", # END_MODE + 8: "test", # TEST_MODE + 9: "ending", # STOP_MODE } TUMBLE_DRYER_PR_PHASE = { - "0": "ready", - "1": "heat_stroke", - "2": "drying", - "3": "cooldown", - "8": "unknown", - "11": "ready", - "12": "unknown", - "13": "cooldown", - "14": "heat_stroke", - "15": "heat_stroke", - "16": "cooldown", - "17": "unknown", - "18": "tumbling", - "19": "drying", - "20": "drying", + 0: "ready", + 1: "heat_stroke", + 2: "drying", + 3: "cooldown", + 8: "unknown", + 11: "ready", + 12: "unknown", + 13: "cooldown", + 14: "heat_stroke", + 15: "heat_stroke", + 16: "cooldown", + 17: "unknown", + 18: "tumbling", + 19: "drying", + 20: "drying", } DIRTY_LEVEL = { - "0": "unknown", - "1": "little", - "2": "normal", - "3": "very", + 0: "unknown", + 1: "little", + 2: "normal", + 3: "very", } STEAM_LEVEL = { - "0": "no_steam", - "1": "cotton", - "2": "delicate", - "3": "synthetic", + 0: "no_steam", + 1: "cotton", + 2: "delicate", + 3: "synthetic", } DISHWASHER_PR_PHASE = { - "0": "ready", - "1": "prewash", - "2": "washing", - "3": "rinse", - "4": "drying", - "5": "ready", - "6": "hot_rinse", + 0: "ready", + 1: "prewash", + 2: "washing", + 3: "rinse", + 4: "drying", + 5: "ready", + 6: "hot_rinse", } TUMBLE_DRYER_DRY_LEVEL = { - "0": "no_dry", - "1": "iron_dry", - "2": "no_dry_iron", - "3": "cupboard_dry", - "4": "extra_dry", - "11": "no_dry", - "12": "iron_dry", - "13": "cupboard_dry", - "14": "ready_to_wear", - "15": "extra_dry", + 0: "no_dry", + 1: "iron_dry", + 2: "no_dry_iron", + 3: "cupboard_dry", + 4: "extra_dry", + 11: "no_dry", + 12: "iron_dry", + 13: "cupboard_dry", + 14: "ready_to_wear", + 15: "extra_dry", } AC_MACH_MODE = { - "0": "auto", - "1": "cool", - "2": "cool", - "3": "dry", - "4": "heat", - "5": "fan", - "6": "fan", + 0: "auto", + 1: "cool", + 2: "cool", + 3: "dry", + 4: "heat", + 5: "fan", + 6: "fan", } AC_FAN_MODE = { - "1": "high", - "2": "mid", - "3": "low", - "4": "auto", - "5": "auto", + 1: "high", + 2: "mid", + 3: "low", + 4: "auto", + 5: "auto", } AC_HUMAN_SENSE = { - "0": "touch_off", - "1": "avoid_touch", - "2": "follow_touch", - "3": "unknown", + 0: "touch_off", + 1: "avoid_touch", + 2: "follow_touch", + 3: "unknown", } diff --git a/custom_components/hon/fan.py b/custom_components/hon/fan.py index 80e3251..f4ce402 100644 --- a/custom_components/hon/fan.py +++ b/custom_components/hon/fan.py @@ -44,8 +44,8 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non for device in hass.data[DOMAIN][entry.unique_id].appliances: for description in FANS.get(device.appliance_type, []): if isinstance(description, HonFanEntityDescription): - if description.key not in device.available_settings or not device.get( - description.key.split(".")[-1] + if description.key not in device.available_settings or device.get( + description.key.split(".")[-1] is None ): continue entity = HonFanEntity(hass, entry, device, description) @@ -74,7 +74,7 @@ class HonFanEntity(HonEntity, FanEntity): @property def percentage(self) -> int | None: """Return the current speed.""" - value = int(self._device.get(self._parameter, "0")) + value = self._device.get(self._parameter, 0) return ranged_value_to_percentage(self._speed_range, value) @property diff --git a/custom_components/hon/hon.py b/custom_components/hon/hon.py index feffd8d..81f6eb0 100644 --- a/custom_components/hon/hon.py +++ b/custom_components/hon/hon.py @@ -1,4 +1,5 @@ import logging +from contextlib import suppress from datetime import timedelta from homeassistant.core import callback @@ -81,3 +82,8 @@ def get_coordinator(hass, appliance): coordinator = HonCoordinator(hass, appliance) hass.data[DOMAIN]["coordinators"][appliance.unique_id] = coordinator return coordinator + + +def get_readable(description, value): + with suppress(ValueError): + return description.option_list.get(int(value), value) diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index 43f3761..7aeb518 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -232,7 +232,7 @@ class HonNumberEntity(HonEntity, NumberEntity): """Return True if entity is available.""" return ( super().available - and self._device.get("remoteCtrValid", "1") == "1" + and int(self._device.get("remoteCtrValid", 1)) == 1 and self._device.get("attributes.lastConnEvent.category") != "DISCONNECTED" ) diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index d15f4b3..72c5afa 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -1,6 +1,7 @@ from __future__ import annotations import logging +from contextlib import suppress from dataclasses import dataclass from typing import Dict, List @@ -13,20 +14,20 @@ from pyhon.appliance import HonAppliance from . import const from .const import DOMAIN -from .hon import HonEntity, unique_entities +from .hon import HonEntity, unique_entities, get_readable _LOGGER = logging.getLogger(__name__) @dataclass class HonSelectEntityDescription(SelectEntityDescription): - option_list: Dict[str, str] = None + option_list: Dict[int, str] = None @dataclass class HonConfigSelectEntityDescription(SelectEntityDescription): entity_category: EntityCategory = EntityCategory.CONFIG - option_list: Dict[str, str] = None + option_list: Dict[int, str] = None SELECTS = { @@ -180,19 +181,18 @@ class HonSelectEntity(HonEntity, SelectEntity): setting = self._device.settings.get(self.entity_description.key) if setting is None: self._attr_available = False - self._attr_options: List[str] = [] + options = [] value = None else: self._attr_available = True - self._attr_options: List[str] = setting.values + options = setting.values value = setting.value if self.entity_description.option_list is not None: - self._attr_options = [ - self.entity_description.option_list.get(k, k) - for k in self._attr_options - ] + with suppress(ValueError): + options = [get_readable(self.entity_description, k) for k in options] if value is not None: - value = self.entity_description.option_list.get(value, value) + value = get_readable(self.entity_description, value) + self._attr_options: List[str] = options self._attr_native_value = value if update: self.async_write_ha_state() @@ -202,7 +202,7 @@ class HonSelectEntity(HonEntity, SelectEntity): """Return True if entity is available.""" return ( super().available - and self._device.get("remoteCtrValid", "1") == "1" + and int(self._device.get("remoteCtrValid", 1)) == 1 and self._device.get("attributes.lastConnEvent.category") != "DISCONNECTED" ) diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 0286811..735a860 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -24,7 +24,7 @@ from homeassistant.helpers.entity import EntityCategory from . import const from .const import DOMAIN -from .hon import HonEntity, unique_entities +from .hon import HonEntity, unique_entities, get_readable _LOGGER = logging.getLogger(__name__) @@ -32,12 +32,12 @@ _LOGGER = logging.getLogger(__name__) @dataclass class HonConfigSensorEntityDescription(SensorEntityDescription): entity_category: EntityCategory = EntityCategory.CONFIG - option_list: Dict[str, str] = None + option_list: Dict[int, str] = None @dataclass class HonSensorEntityDescription(SensorEntityDescription): - option_list: Dict[str, str] = None + option_list: Dict[int, str] = None SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { @@ -692,7 +692,7 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non for device in hass.data[DOMAIN][entry.unique_id].appliances: for description in SENSORS.get(device.appliance_type, []): if isinstance(description, HonSensorEntityDescription): - if not device.get(description.key): + if device.get(description.key) is None: continue entity = HonSensorEntity(hass, entry, device, description) elif isinstance(description, HonConfigSensorEntityDescription): @@ -719,7 +719,7 @@ class HonSensorEntity(HonEntity, SensorEntity): ).values + ["No Program"] elif self.entity_description.option_list is not None: self._attr_options = list(self.entity_description.option_list.values()) - value = self.entity_description.option_list.get(value, value) + value = get_readable(self.entity_description, value) if not value and self.entity_description.state_class is not None: self._attr_native_value = 0 self._attr_native_value = value @@ -744,7 +744,7 @@ class HonConfigSensorEntity(HonEntity, SensorEntity): value = value.value if self.entity_description.option_list is not None and not value == 0: self._attr_options = list(self.entity_description.option_list.values()) - value = self.entity_description.option_list.get(value, value) + value = get_readable(self.entity_description, value) self._attr_native_value = value if update: self.async_write_ha_state() diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 03273a7..3cc71b0 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -358,7 +358,7 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non elif isinstance(description, HonSwitchEntityDescription): if ( f"settings.{description.key}" not in device.available_settings - or not device.get(description.key) + or device.get(description.key) is None ): continue entity = HonSwitchEntity(hass, entry, device, description) @@ -376,7 +376,7 @@ class HonSwitchEntity(HonEntity, SwitchEntity): @property def is_on(self) -> bool | None: """Return True if entity is on.""" - return self._device.get(self.entity_description.key, "0") == "1" + return self._device.get(self.entity_description.key, 0) == 1 async def async_turn_on(self, **kwargs: Any) -> None: setting = self._device.settings[f"settings.{self.entity_description.key}"] @@ -401,14 +401,14 @@ class HonSwitchEntity(HonEntity, SwitchEntity): """Return True if entity is available.""" return ( super().available - and self._device.get("remoteCtrValid", "1") == "1" + and int(self._device.get("remoteCtrValid", 1)) == 1 and self._device.get("attributes.lastConnEvent.category") != "DISCONNECTED" ) @callback def _handle_coordinator_update(self, update=True) -> None: - value = self._device.get(self.entity_description.key, "0") - self._attr_state = value == "1" + value = self._device.get(self.entity_description.key, 0) + self._attr_state = value == 1 if update: self.async_write_ha_state() @@ -436,7 +436,7 @@ class HonControlSwitchEntity(HonEntity, SwitchEntity): """Return True if entity is available.""" return ( super().available - and self._device.get("remoteCtrValid", "1") == "1" + and int(self._device.get("remoteCtrValid", 1)) == 1 and self._device.get("attributes.lastConnEvent.category") != "DISCONNECTED" ) @@ -444,8 +444,8 @@ class HonControlSwitchEntity(HonEntity, SwitchEntity): def extra_state_attributes(self) -> dict[str, Any]: """Return the optional state attributes.""" result = {} - if remaining_time := int(self._device.get("remainingTimeMM", 0)): - delay_time = int(self._device.get("delayTime", 0)) + if remaining_time := self._device.get("remainingTimeMM", 0): + delay_time = self._device.get("delayTime", 0) result["start_time"] = datetime.now() + timedelta(minutes=delay_time) result["end_time"] = datetime.now() + timedelta( minutes=delay_time + remaining_time -- 2.39.5 From ae985cb0d94648f69dd7580ca0440bcb96395f8d Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Thu, 15 Jun 2023 23:52:56 +0200 Subject: [PATCH 133/205] Fix set select entity #70 --- custom_components/hon/select.py | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index d15f4b3..f141ada 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -164,13 +164,24 @@ class HonSelectEntity(HonEntity, SelectEntity): @property def current_option(self) -> str | None: - value = self._device.settings.get(self.entity_description.key) - if value is None or value.value not in self._attr_options: + if not (setting := self._device.settings.get(self.entity_description.key)): return None - return value.value + value = setting.value + if self.entity_description.option_list: + value = self.entity_description.option_list.get(str(value), value) + if value not in self._attr_options: + return None + return value async def async_select_option(self, option: str) -> None: - self._device.settings[self.entity_description.key].value = option + setting = self._device.settings[self.entity_description.key] + if (options := self.entity_description.option_list) is not None: + setting.value = next( + (k for k, v in options.items() if k in setting.values and v == option), + option, + ) + else: + setting.value = option command = self.entity_description.key.split(".")[0] await self._device.commands[command].send() await self.coordinator.async_refresh() @@ -185,7 +196,7 @@ class HonSelectEntity(HonEntity, SelectEntity): else: self._attr_available = True self._attr_options: List[str] = setting.values - value = setting.value + value = str(setting.value) if self.entity_description.option_list is not None: self._attr_options = [ self.entity_description.option_list.get(k, k) @@ -211,7 +222,14 @@ class HonConfigSelectEntity(HonSelectEntity): entity_description: HonConfigSelectEntityDescription async def async_select_option(self, option: str) -> None: - self._device.settings[self.entity_description.key].value = option + setting = self._device.settings[self.entity_description.key] + if (options := self.entity_description.option_list) is not None: + setting.value = next( + (k for k, v in options.items() if k in setting.values and v == option), + option, + ) + else: + setting.value = option await self.coordinator.async_refresh() @property -- 2.39.5 From 11a3d39f2ca6537b12e0497fc4468d9e28b46fc5 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Fri, 16 Jun 2023 00:05:17 +0200 Subject: [PATCH 134/205] Bump version --- README.md | 24 ++++++++++++------------ custom_components/hon/manifest.json | 2 +- info.md | 24 ++++++++++++------------ 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 06b1777..67065ef 100644 --- a/README.md +++ b/README.md @@ -37,18 +37,18 @@ _If the integration is not in the list, you need to clear the browser cache._ ## Supported Models Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). -| | **Haier** | **Hoover** | **Candy** | -|---------------------|------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------| -| **Washing Machine** | HW90-B14TEAM5
HW100-B14959U1 | H-WASH 500
H7W4 48MBC-S | RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | -| **Tumble Dryer** | HD80-A3959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S | -| **Washer Dryer** | HWD100-B14979 | HWPS4954DAMR-11 | RPW41066BWMR/1-S | -| **Oven** | HWO60SM2F3XH | HSOT3161WG | | -| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | -| **Air conditioner** | AD105S2SM3FA
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35TADHRA-2
| | | -| **Fridge** | HFW7720ENMB | | CCE4T620EWU | -| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | -| **Hood** | HADG6DS46BWIFI | | | -| **Wine Cellar** | HWS247FDU1 | | | +| | **Haier** | **Hoover** | **Candy** | +|---------------------|----------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------| +| **Washing Machine** | HW90-B14TEAM5
HW100-B14959U1 | H-WASH 500
H7W4 48MBC-S | CO4 107T1/2-07
RO44 1286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | +| **Tumble Dryer** | HD80-A3959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S | +| **Washer Dryer** | HWD100-B14979 | HWPS4954DAMR-11 | RPW41066BWMR/1-S | +| **Oven** | HWO60SM2F3XH | HSOT3161WG | | +| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | +| **Air conditioner** | AD105S2SM3FA
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C | | | +| **Fridge** | HFW7720ENMB | | CCE4T620EWU | +| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | +| **Hood** | HADG6DS46BWIFI | | | +| **Wine Cellar** | HWS247FDU1 | | | ## Supported Languages Translation of internal names like programs are available for all languages which are official supported by the hOn app: diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index d39f53b..a0f5e63 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -11,5 +11,5 @@ "requirements": [ "pyhOn==0.13.0" ], - "version": "0.9.0-beta.2" + "version": "0.9.0-beta.3" } diff --git a/info.md b/info.md index 1dafd95..1972063 100644 --- a/info.md +++ b/info.md @@ -26,18 +26,18 @@ _If the integration is not in the list, you need to clear the browser cache._ ## Supported Models Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). -| | **Haier** | **Hoover** | **Candy** | -|---------------------|------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------| -| **Washing Machine** | HW90-B14TEAM5
HW100-B14959U1 | H-WASH 500
H7W4 48MBC-S | RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | -| **Tumble Dryer** | HD80-A3959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S | -| **Washer Dryer** | HWD100-B14979 | HWPS4954DAMR-11 | RPW41066BWMR/1-S | -| **Oven** | HWO60SM2F3XH | HSOT3161WG | | -| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | -| **Air conditioner** | AD105S2SM3FA
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35TADHRA-2
| | | -| **Fridge** | HFW7720ENMB | | CCE4T620EWU | -| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | -| **Hood** | HADG6DS46BWIFI | | | -| **Wine Cellar** | HWS247FDU1 | | | +| | **Haier** | **Hoover** | **Candy** | +|---------------------|----------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------| +| **Washing Machine** | HW90-B14TEAM5
HW100-B14959U1 | H-WASH 500
H7W4 48MBC-S | CO4 107T1/2-07
RO44 1286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | +| **Tumble Dryer** | HD80-A3959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S | +| **Washer Dryer** | HWD100-B14979 | HWPS4954DAMR-11 | RPW41066BWMR/1-S | +| **Oven** | HWO60SM2F3XH | HSOT3161WG | | +| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | +| **Air conditioner** | AD105S2SM3FA
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C | | | +| **Fridge** | HFW7720ENMB | | CCE4T620EWU | +| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | +| **Hood** | HADG6DS46BWIFI | | | +| **Wine Cellar** | HWS247FDU1 | | | ## Supported Languages Translation of internal names like programs are available for all languages which are official supported by the hOn app: -- 2.39.5 From d83179a9fa01876d6f27fca6d60c0d81442f30ac Mon Sep 17 00:00:00 2001 From: Riccardo Briccola Date: Mon, 19 Jun 2023 16:47:30 +0200 Subject: [PATCH 135/205] Fix deprecated import --- custom_components/hon/button.py | 2 +- custom_components/hon/switch.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index 1309914..934370d 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -4,7 +4,7 @@ import pkg_resources from homeassistant.components import persistent_notification from homeassistant.components.button import ButtonEntityDescription, ButtonEntity from homeassistant.config_entries import ConfigEntry -from homeassistant.const import EntityCategory +from homeassistant.helpers.entity import EntityCategory from pyhon.appliance import HonAppliance from .const import DOMAIN diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 03273a7..7351a08 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -5,7 +5,7 @@ from typing import Any from homeassistant.components.switch import SwitchEntityDescription, SwitchEntity from homeassistant.config_entries import ConfigEntry -from homeassistant.const import EntityCategory +from homeassistant.helpers.entity import EntityCategory from homeassistant.core import callback from pyhon.parameter.base import HonParameter from pyhon.parameter.range import HonParameterRange -- 2.39.5 From a181359faaa4c9b91575e4f28732c1e7f9dd02b8 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Wed, 21 Jun 2023 00:23:49 +0200 Subject: [PATCH 136/205] Refactor select entity --- custom_components/hon/select.py | 83 ++++++++++++++------------------- 1 file changed, 34 insertions(+), 49 deletions(-) diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index f141ada..2bee890 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -9,7 +9,6 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.const import UnitOfTemperature, UnitOfTime, REVOLUTIONS_PER_MINUTE from homeassistant.core import callback from homeassistant.helpers.entity import EntityCategory -from pyhon.appliance import HonAppliance from . import const from .const import DOMAIN @@ -156,11 +155,8 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non async_add_entities(entities) -class HonSelectEntity(HonEntity, SelectEntity): - entity_description: HonSelectEntityDescription - - def __init__(self, hass, entry, device: HonAppliance, description) -> None: - super().__init__(hass, entry, device, description) +class HonConfigSelectEntity(HonEntity, SelectEntity): + entity_description: HonConfigSelectEntityDescription @property def current_option(self) -> str | None: @@ -173,41 +169,50 @@ class HonSelectEntity(HonEntity, SelectEntity): return None return value - async def async_select_option(self, option: str) -> None: - setting = self._device.settings[self.entity_description.key] + @property + def options(self) -> list[str]: + setting = self._device.settings.get(self.entity_description.key) + if setting is None: + return [] + options = self.entity_description.option_list or {} + return [options.get(str(key), key) for key in setting.values] + + def _option_to_number(self, option: str, values: List[str]): if (options := self.entity_description.option_list) is not None: - setting.value = next( - (k for k, v in options.items() if k in setting.values and v == option), + return next( + (k for k, v in options.items() if k in values and v == option), option, ) - else: - setting.value = option + return option + + async def async_select_option(self, option: str) -> None: + setting = self._device.settings[self.entity_description.key] + setting.value = self._option_to_number(option, setting.values) command = self.entity_description.key.split(".")[0] await self._device.commands[command].send() await self.coordinator.async_refresh() @callback def _handle_coordinator_update(self, update=True) -> None: - setting = self._device.settings.get(self.entity_description.key) - if setting is None: - self._attr_available = False - self._attr_options: List[str] = [] - value = None - else: - self._attr_available = True - self._attr_options: List[str] = setting.values - value = str(setting.value) - if self.entity_description.option_list is not None: - self._attr_options = [ - self.entity_description.option_list.get(k, k) - for k in self._attr_options - ] - if value is not None: - value = self.entity_description.option_list.get(value, value) - self._attr_native_value = value + self._attr_available = self.available + self._attr_options = self.options + self._attr_current_option = self.current_option if update: self.async_write_ha_state() + @property + def available(self) -> bool: + return self._device.settings.get(self.entity_description.key) is not None + + +class HonSelectEntity(HonConfigSelectEntity): + entity_description: HonSelectEntityDescription + + async def async_select_option(self, option: str) -> None: + setting = self._device.settings[self.entity_description.key] + setting.value = self._option_to_number(option, setting.values) + await self.coordinator.async_refresh() + @property def available(self) -> bool: """Return True if entity is available.""" @@ -216,23 +221,3 @@ class HonSelectEntity(HonEntity, SelectEntity): and self._device.get("remoteCtrValid", "1") == "1" and self._device.get("attributes.lastConnEvent.category") != "DISCONNECTED" ) - - -class HonConfigSelectEntity(HonSelectEntity): - entity_description: HonConfigSelectEntityDescription - - async def async_select_option(self, option: str) -> None: - setting = self._device.settings[self.entity_description.key] - if (options := self.entity_description.option_list) is not None: - setting.value = next( - (k for k, v in options.items() if k in setting.values and v == option), - option, - ) - else: - setting.value = option - await self.coordinator.async_refresh() - - @property - def available(self) -> bool: - """Return True if entity is available.""" - return super(SelectEntity, self).available -- 2.39.5 From 78727e89cd6302e8e0e143d91e3147e69547c4dc Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Wed, 21 Jun 2023 00:59:00 +0200 Subject: [PATCH 137/205] Add entites for air purifier #72 --- README.md | 73 ++++++++++++++++-------- custom_components/hon/binary_sensor.py | 10 ++++ custom_components/hon/const.py | 15 +++++ custom_components/hon/number.py | 28 ++++++++- custom_components/hon/select.py | 13 +++++ custom_components/hon/sensor.py | 79 +++++++++++++++++++++++++- custom_components/hon/switch.py | 10 ++++ info.md | 29 +++++----- scripts/sensor_docs.py | 18 +++--- 9 files changed, 225 insertions(+), 50 deletions(-) diff --git a/README.md b/README.md index 67065ef..e5e4f34 100644 --- a/README.md +++ b/README.md @@ -14,9 +14,10 @@ Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.co - [Dish Washer](https://github.com/Andre0512/hon#dish-washer) - [Air conditioner](https://github.com/Andre0512/hon#air-conditioner) - [Fridge](https://github.com/Andre0512/hon#fridge) -- [Hob](https://github.com/Andre0512/hon#hob) [BETA] +- [Induction Hob](https://github.com/Andre0512/hon#induction-hob) [BETA] - [Hood](https://github.com/Andre0512/hon#hood) [BETA] - [Wine Cellar](https://github.com/Andre0512/hon#wine-cellar) [BETA] +- [Air Purifier](https://github.com/Andre0512/hon#air-purifier) [BETA] ## Installation **Method 1:** [![Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?owner=Andre0512&repository=hon&category=integration) @@ -37,18 +38,18 @@ _If the integration is not in the list, you need to clear the browser cache._ ## Supported Models Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). -| | **Haier** | **Hoover** | **Candy** | -|---------------------|----------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------| -| **Washing Machine** | HW90-B14TEAM5
HW100-B14959U1 | H-WASH 500
H7W4 48MBC-S | CO4 107T1/2-07
RO44 1286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | -| **Tumble Dryer** | HD80-A3959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S | -| **Washer Dryer** | HWD100-B14979 | HWPS4954DAMR-11 | RPW41066BWMR/1-S | -| **Oven** | HWO60SM2F3XH | HSOT3161WG | | -| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | -| **Air conditioner** | AD105S2SM3FA
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C | | | -| **Fridge** | HFW7720ENMB | | CCE4T620EWU | -| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | -| **Hood** | HADG6DS46BWIFI | | | -| **Wine Cellar** | HWS247FDU1 | | | +| | **Haier** | **Hoover** | **Candy** | +|---------------------|----------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------| +| **Washing Machine** | HW90-B14TEAM5
HW100-B14959U1 | H-WASH 500
H7W4 48MBC-S | CO4 107T1/2-07
CBWO49TWME-S
RO44 1286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | +| **Tumble Dryer** | HD80-A3959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S | +| **Washer Dryer** | HWD100-B14979 | HWPS4954DAMR-11 | RPW41066BWMR/1-S | +| **Oven** | HWO60SM2F3XH | HSOT3161WG | | +| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | +| **Air Conditioner** | AD105S2SM3FA
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C | | | +| **Fridge** | HFW7720ENMB | | CCE4T620EWU | +| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | +| **Hood** | HADG6DS46BWIFI | | | +| **Wine Cellar** | HWS247FDU1 | | | ## Supported Languages Translation of internal names like programs are available for all languages which are official supported by the hOn app: @@ -137,7 +138,7 @@ For every device exists a hidden button which can be used to log all infos of yo ## Appliance Features -### Air conditioner +### Air Conditioner #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | @@ -171,7 +172,36 @@ For every device exists a hidden button which can be used to log all infos of yo | Program | `play` | `sensor` | `programName` | | Selected Temperature | `thermometer` | `sensor` | `tempSel` | -### Dish washer +### Air Purifier +#### Controls +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Aroma Time Off | `thermometer` | `number` | `settings.aromaTimeOff` | +| Aroma Time On | `thermometer` | `number` | `settings.aromaTimeOn` | +| Diffuser Level | | `select` | `settings.aromaStatus` | +| Light status | `lightbulb` | `number` | `settings.lightStatus` | +| Lock Status | | `switch` | `lockStatus` | +| Mode | `run` | `select` | `settings.machMode` | +| Pollen Level | | `number` | `settings.pollenLevel` | +| Touch Tone | | `switch` | `touchToneStatus` | +#### Sensors +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Air Quality | | `sensor` | `airQuality` | +| CO Level | | `sensor` | `coLevel` | +| Error | `math-log` | `sensor` | `errors` | +| Humidity | | `sensor` | `humidityIndoor` | +| Main Filter Status | | `sensor` | `mainFilterStatus` | +| On | `power-cycle` | `binary_sensor` | `attributes.parameters.onOffStatus` | +| Pre Filter Status | | `sensor` | `preFilterStatus` | +| Temperature | | `sensor` | `temp` | +| Total Work Time | | `sensor` | `totalWorkTime` | +| VOC | | `sensor` | `vocValueIndoor` | +| Wind Speed | | `sensor` | `windSpeed` | +| pm10 | | `sensor` | `pm10ValueIndoor` | +| pm2p5 | | `sensor` | `pm2p5ValueIndoor` | + +### Dish Washer #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | @@ -217,10 +247,6 @@ For every device exists a hidden button which can be used to log all infos of yo | Start Program | `hvac` | `button` | `startProgram` | | Stop Program | `hvac-off` | `button` | `stopProgram` | | Wind Speed | | `fan` | `settings.windSpeed` | -#### Configs -| Name | Icon | Entity | Key | -| --- | --- | --- | --- | -| Light status | `lightbulb` | `number` | `startProgram.lightStatus` | #### Sensors | Name | Icon | Entity | Key | | --- | --- | --- | --- | @@ -231,13 +257,14 @@ For every device exists a hidden button which can be used to log all infos of yo | Filter Cleaning Status | | `sensor` | `filterCleaningStatus` | | Last Work Time | `clock-start` | `sensor` | `lastWorkTime` | | Light Status | `lightbulb` | `sensor` | `lightStatus` | +| Light status | `lightbulb` | `number` | `startProgram.lightStatus` | | Mach Mode | | `sensor` | `machMode` | | On / Off Status | `lightbulb` | `sensor` | `onOffStatus` | | Quick Delay Time Status | | `sensor` | `quickDelayTimeStatus` | | RGB Light Color | `lightbulb` | `sensor` | `rgbLightColors` | | RGB Light Status | `lightbulb` | `sensor` | `rgbLightStatus` | -### Hob +### Induction Hob #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | @@ -321,7 +348,7 @@ For every device exists a hidden button which can be used to log all infos of yo | Temperature Freezer | `snowflake-thermometer` | `sensor` | `tempZ2` | | Temperature Fridge | `thermometer` | `sensor` | `tempZ1` | -### Tumble dryer +### Tumble Dryer #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | @@ -380,7 +407,7 @@ For every device exists a hidden button which can be used to log all infos of yo | Temperature | `thermometer` | `sensor` | `temp` | | Temperature 2 | `thermometer` | `sensor` | `tempZ2` | -### Washer dryer +### Washer Dryer #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | @@ -455,7 +482,7 @@ For every device exists a hidden button which can be used to log all infos of yo | Total Wash Cycle | `counter` | `sensor` | `totalWashCycle` | | Total Water | | `sensor` | `totalWaterUsed` | -### Washing machine +### Washing Machine #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index c30e02d..2ff945f 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -242,6 +242,16 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { translation_key="holiday_mode", ), ), + "AP": ( + HonBinarySensorEntityDescription( + key="attributes.parameters.onOffStatus", + name="On", + device_class=BinarySensorDeviceClass.RUNNING, + on_value="1", + icon="mdi:power-cycle", + translation_key="on", + ), + ), } diff --git a/custom_components/hon/const.py b/custom_components/hon/const.py index 9290eaa..bf2f85e 100644 --- a/custom_components/hon/const.py +++ b/custom_components/hon/const.py @@ -188,3 +188,18 @@ AC_HUMAN_SENSE = { "2": "follow_touch", "3": "unknown", } + +AP_MACH_MODE = { + "0": "standby", + "1": "sleep", + "2": "auto", + "3": "allergens", + "4": "max", +} + +AP_DIFFUSER_LEVEL = { + "1": "soft", + "2": "mid", + "3": "h_biotics", + "4": "custom", +} diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index 43f3761..bec5c17 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -167,7 +167,29 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { key="startProgram.lightStatus", name="Light status", icon="mdi:lightbulb", - entity_category=EntityCategory.CONFIG, + ), + ), + "AP": ( + HonNumberEntityDescription( + key="settings.aromaTimeOn", + name="Aroma Time On", + icon="mdi:thermometer", + native_unit_of_measurement=UnitOfTime.SECONDS, + ), + HonNumberEntityDescription( + key="settings.aromaTimeOff", + name="Aroma Time Off", + icon="mdi:thermometer", + native_unit_of_measurement=UnitOfTime.SECONDS, + ), + HonNumberEntityDescription( + key="settings.lightStatus", + name="Light status", + icon="mdi:lightbulb", + ), + HonNumberEntityDescription( + key="settings.pollenLevel", + name="Pollen Level", ), ), } @@ -206,7 +228,7 @@ class HonNumberEntity(HonEntity, NumberEntity): @property def native_value(self) -> float | None: - return self._device.get(self.entity_description.key) + return self._device.get(self.entity_description.key.split(".")[-1]) async def async_set_native_value(self, value: float) -> None: setting = self._device.settings[self.entity_description.key] @@ -223,7 +245,7 @@ class HonNumberEntity(HonEntity, NumberEntity): self._attr_native_max_value = setting.max self._attr_native_min_value = setting.min self._attr_native_step = setting.step - self._attr_native_value = setting.value + self._attr_native_value = self.native_value if update: self.async_write_ha_state() diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index 2bee890..046630c 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -133,6 +133,19 @@ SELECTS = { translation_key="ref_zones", ), ), + "AP": ( + HonSelectEntityDescription( + key="settings.aromaStatus", + name="Diffuser Level", + option_list=const.AP_DIFFUSER_LEVEL, + ), + HonSelectEntityDescription( + key="settings.machMode", + name="Mode", + icon="mdi:run", + option_list=const.AP_MACH_MODE, + ), + ), } SELECTS["WD"] = unique_entities(SELECTS["WM"], SELECTS["TD"]) diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 0286811..7582db5 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -9,7 +9,12 @@ from homeassistant.components.sensor import ( SensorEntityDescription, ) from homeassistant.config_entries import ConfigEntry -from homeassistant.const import PERCENTAGE +from homeassistant.const import ( + PERCENTAGE, + CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, + CONCENTRATION_PARTS_PER_BILLION, + CONCENTRATION_PARTS_PER_MILLION, +) from homeassistant.const import ( REVOLUTIONS_PER_MINUTE, UnitOfEnergy, @@ -637,6 +642,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { name="Temperature", icon="mdi:thermometer", state_class=SensorStateClass.MEASUREMENT, + device_class=SensorDeviceClass.TEMPERATURE, native_unit_of_measurement=UnitOfTemperature.CELSIUS, translation_key="temperature", ), @@ -673,6 +679,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:thermometer", state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=UnitOfTemperature.CELSIUS, + device_class=SensorDeviceClass.TEMPERATURE, translation_key="temperature", ), HonSensorEntityDescription( @@ -683,6 +690,76 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { translation_key="programs_wc", ), ), + "AP": ( + HonSensorEntityDescription( + key="errors", name="Error", icon="mdi:math-log", translation_key="errors" + ), + HonSensorEntityDescription( + key="mainFilterStatus", + name="Main Filter Status", + native_unit_of_measurement=PERCENTAGE, + ), + HonSensorEntityDescription( + key="preFilterStatus", + name="Pre Filter Status", + native_unit_of_measurement=PERCENTAGE, + ), + HonSensorEntityDescription( + key="totalWorkTime", + name="Total Work Time", + native_unit_of_measurement=UnitOfTime.MINUTES, + device_class=SensorDeviceClass.DURATION, + ), + HonSensorEntityDescription( + key="coLevel", + name="CO Level", + state_class=SensorStateClass.MEASUREMENT, + device_class=SensorDeviceClass.CO, + native_unit_of_measurement=CONCENTRATION_PARTS_PER_MILLION, + ), + HonSensorEntityDescription( + key="pm10ValueIndoor", + name="pm10", + state_class=SensorStateClass.MEASUREMENT, + device_class=SensorDeviceClass.PM10, + native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, + ), + HonSensorEntityDescription( + key="pm2p5ValueIndoor", + name="pm2p5", + state_class=SensorStateClass.MEASUREMENT, + device_class=SensorDeviceClass.PM25, + native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, + ), + HonSensorEntityDescription( + key="vocValueIndoor", + name="VOC", + state_class=SensorStateClass.MEASUREMENT, + device_class=SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS, + native_unit_of_measurement=CONCENTRATION_PARTS_PER_BILLION, + ), + HonSensorEntityDescription( + key="humidityIndoor", + name="Humidity", + state_class=SensorStateClass.MEASUREMENT, + device_class=SensorDeviceClass.HUMIDITY, + native_unit_of_measurement=PERCENTAGE, + translation_key="humidity", + ), + HonSensorEntityDescription( + key="temp", + name="Temperature", + state_class=SensorStateClass.MEASUREMENT, + device_class=SensorDeviceClass.TEMPERATURE, + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + translation_key="temperature", + ), + HonSensorEntityDescription(key="windSpeed", name="Wind Speed"), + HonSensorEntityDescription( + key="airQuality", + name="Air Quality", + ), + ), } SENSORS["WD"] = unique_entities(SENSORS["WM"], SENSORS["TD"]) diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 7351a08..fbd4b65 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -333,6 +333,16 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { key="lightStatus", name="Light", icon="mdi:lightbulb" ), ), + "AP": ( + HonSwitchEntityDescription( + key="touchToneStatus", + name="Touch Tone", + ), + HonSwitchEntityDescription( + key="lockStatus", + name="Lock Status", + ), + ), } SWITCHES["WD"] = unique_entities(SWITCHES["WD"], SWITCHES["WM"]) diff --git a/info.md b/info.md index 1972063..26f76b2 100644 --- a/info.md +++ b/info.md @@ -10,11 +10,12 @@ Support for home appliances of [Haier's mobile app hOn](https://hon-smarthome.co - [Washer Dryer](https://github.com/Andre0512/hon#washer-dryer) - [Oven](https://github.com/Andre0512/hon#oven) - [Dish Washer](https://github.com/Andre0512/hon#dish-washer) -- [Air conditioner](https://github.com/Andre0512/hon#air-conditioner) +- [Air Conditioner](https://github.com/Andre0512/hon#air-conditioner) - [Fridge](https://github.com/Andre0512/hon#fridge) -- [Hob](https://github.com/Andre0512/hon#hob) [BETA] +- [Induction Hob](https://github.com/Andre0512/hon#induction-hob) [BETA] - [Hood](https://github.com/Andre0512/hon#hood) [BETA] - [Wine Cellar](https://github.com/Andre0512/hon#wine-cellar) [BETA] +- [Air Purifier](https://github.com/Andre0512/hon#air-purifier) [BETA] ## Configuration @@ -26,18 +27,18 @@ _If the integration is not in the list, you need to clear the browser cache._ ## Supported Models Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). -| | **Haier** | **Hoover** | **Candy** | -|---------------------|----------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------| -| **Washing Machine** | HW90-B14TEAM5
HW100-B14959U1 | H-WASH 500
H7W4 48MBC-S | CO4 107T1/2-07
RO44 1286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | -| **Tumble Dryer** | HD80-A3959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S | -| **Washer Dryer** | HWD100-B14979 | HWPS4954DAMR-11 | RPW41066BWMR/1-S | -| **Oven** | HWO60SM2F3XH | HSOT3161WG | | -| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | -| **Air conditioner** | AD105S2SM3FA
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C | | | -| **Fridge** | HFW7720ENMB | | CCE4T620EWU | -| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | -| **Hood** | HADG6DS46BWIFI | | | -| **Wine Cellar** | HWS247FDU1 | | | +| | **Haier** | **Hoover** | **Candy** | +|---------------------|----------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------| +| **Washing Machine** | HW90-B14TEAM5
HW100-B14959U1 | H-WASH 500
H7W4 48MBC-S | CO4 107T1/2-07
CBWO49TWME-S
RO44 1286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | +| **Tumble Dryer** | HD80-A3959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S | +| **Washer Dryer** | HWD100-B14979 | HWPS4954DAMR-11 | RPW41066BWMR/1-S | +| **Oven** | HWO60SM2F3XH | HSOT3161WG | | +| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | +| **Air Conditioner** | AD105S2SM3FA
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C | | | +| **Fridge** | HFW7720ENMB | | CCE4T620EWU | +| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | +| **Hood** | HADG6DS46BWIFI | | | +| **Wine Cellar** | HWS247FDU1 | | | ## Supported Languages Translation of internal names like programs are available for all languages which are official supported by the hOn app: diff --git a/scripts/sensor_docs.py b/scripts/sensor_docs.py index e009186..ddc32b8 100755 --- a/scripts/sensor_docs.py +++ b/scripts/sensor_docs.py @@ -22,21 +22,21 @@ from custom_components.hon.switch import ( ) APPLIANCES = { - "AC": "Air conditioner", - "AP": "Air purifier", - "AS": "Air scanner", - "DW": "Dish washer", + "AC": "Air Conditioner", + "AP": "Air Purifier", + "AS": "Air Scanner", + "DW": "Dish Washer", "HO": "Hood", - "IH": "Hob", + "IH": "Induction Hob", "MW": "Microwave", "OV": "Oven", "REF": "Fridge", - "RVC": "Robot vacuum cleaner", - "TD": "Tumble dryer", + "RVC": "Robot Vacuum Cleaner", + "TD": "Tumble Dryer", "WC": "Wine Cellar", - "WD": "Washer dryer", + "WD": "Washer Dryer", "WH": "Water Heater", - "WM": "Washing machine", + "WM": "Washing Machine", } ENTITY_CATEGORY_SORT = ["control", "config", "sensor"] -- 2.39.5 From fbd1bdf5babb042d198b86ec1c5349284286fdbd Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Wed, 21 Jun 2023 19:52:32 +0200 Subject: [PATCH 138/205] Split program and mach mode of ac #75 --- custom_components/hon/climate.py | 47 +++++++++++++++++----- custom_components/hon/number.py | 2 + custom_components/hon/select.py | 6 ++- custom_components/hon/translations/cs.json | 26 +++++++++++- custom_components/hon/translations/de.json | 26 +++++++++++- custom_components/hon/translations/el.json | 26 +++++++++++- custom_components/hon/translations/en.json | 26 +++++++++++- custom_components/hon/translations/es.json | 26 +++++++++++- custom_components/hon/translations/fr.json | 26 +++++++++++- custom_components/hon/translations/he.json | 10 ++++- custom_components/hon/translations/hr.json | 26 +++++++++++- custom_components/hon/translations/it.json | 26 +++++++++++- custom_components/hon/translations/nl.json | 26 +++++++++++- custom_components/hon/translations/pl.json | 26 +++++++++++- custom_components/hon/translations/pt.json | 26 +++++++++++- custom_components/hon/translations/ro.json | 26 +++++++++++- custom_components/hon/translations/ru.json | 26 +++++++++++- custom_components/hon/translations/sk.json | 26 +++++++++++- custom_components/hon/translations/sl.json | 26 +++++++++++- custom_components/hon/translations/sr.json | 26 +++++++++++- custom_components/hon/translations/tr.json | 26 +++++++++++- custom_components/hon/translations/zh.json | 26 +++++++++++- scripts/translation_keys.py | 6 +++ 23 files changed, 508 insertions(+), 31 deletions(-) diff --git a/custom_components/hon/climate.py b/custom_components/hon/climate.py index c2bd3f2..31e8c24 100644 --- a/custom_components/hon/climate.py +++ b/custom_components/hon/climate.py @@ -22,7 +22,7 @@ from homeassistant.const import ( from homeassistant.core import callback from pyhon.appliance import HonAppliance -from .const import HON_HVAC_MODE, HON_FAN, HON_HVAC_PROGRAM, DOMAIN +from .const import HON_HVAC_MODE, HON_FAN, DOMAIN from .hon import HonEntity _LOGGER = logging.getLogger(__name__) @@ -115,13 +115,14 @@ class HonACClimateEntity(HonEntity, ClimateEntity): super().__init__(hass, entry, device, description) self._attr_temperature_unit = TEMP_CELSIUS - self._attr_target_temperature_step = device.settings["settings.tempSel"].step - self._attr_max_temp = device.settings["settings.tempSel"].max - self._attr_min_temp = device.settings["settings.tempSel"].min + self._set_temperature_bound() self._attr_hvac_modes = [HVACMode.OFF] for mode in device.settings["settings.machMode"].values: self._attr_hvac_modes.append(HON_HVAC_MODE[mode]) + self._attr_preset_modes = [] + for mode in device.settings["startProgram.program"].values: + self._attr_preset_modes.append(mode) self._attr_fan_modes = [FAN_OFF] for mode in device.settings["settings.windSpeed"].values: self._attr_fan_modes.append(HON_FAN[mode]) @@ -135,10 +136,18 @@ class HonACClimateEntity(HonEntity, ClimateEntity): ClimateEntityFeature.TARGET_TEMPERATURE | ClimateEntityFeature.FAN_MODE | ClimateEntityFeature.SWING_MODE + | ClimateEntityFeature.PRESET_MODE ) self._handle_coordinator_update(update=False) + def _set_temperature_bound(self) -> None: + self._attr_target_temperature_step = self._device.settings[ + "settings.tempSel" + ].step + self._attr_max_temp = self._device.settings["settings.tempSel"].max + self._attr_min_temp = self._device.settings["settings.tempSel"].min + @property def target_temperature(self) -> int | None: """Return the temperature we try to reach.""" @@ -166,13 +175,31 @@ class HonACClimateEntity(HonEntity, ClimateEntity): async def async_set_hvac_mode(self, hvac_mode): self._attr_hvac_mode = hvac_mode if hvac_mode == HVACMode.OFF: - command = "stopProgram" + await self._device.commands["stopProgram"].send() + self._device.sync_command("stopProgram", "settings") else: - mode = HON_HVAC_PROGRAM[hvac_mode] - self._device.settings["startProgram.program"].value = mode - command = "startProgram" - await self._device.commands[command].send() - self._device.sync_command(command, "settings") + self._device.settings["settings.onOffStatus"].value = "1" + setting = self._device.settings["settings.machMode"] + modes = {HON_HVAC_MODE[number]: number for number in setting.values} + setting.value = modes[hvac_mode] + await self._device.commands["settings"].send() + self.async_write_ha_state() + + @property + def preset_mode(self) -> str | None: + """Return the current Preset for this channel.""" + return None + + async def async_set_preset_mode(self, preset_mode: str) -> None: + """Set the new preset mode.""" + if program := self._device.settings.get(f"startProgram.program"): + program.value = preset_mode + self._device.sync_command("startProgram", "settings") + self._set_temperature_bound() + self._handle_coordinator_update(update=False) + await self.coordinator.async_refresh() + self._attr_preset_mode = preset_mode + await self._device.commands["startProgram"].send() self.async_write_ha_state() @property diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index bec5c17..5bbdb56 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -236,6 +236,8 @@ class HonNumberEntity(HonEntity, NumberEntity): setting.value = value command = self.entity_description.key.split(".")[0] await self._device.commands[command].send() + if command != "settings": + self._device.sync_command(command, "settings") await self.coordinator.async_refresh() @callback diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index 046630c..7d04f9a 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -201,8 +201,6 @@ class HonConfigSelectEntity(HonEntity, SelectEntity): async def async_select_option(self, option: str) -> None: setting = self._device.settings[self.entity_description.key] setting.value = self._option_to_number(option, setting.values) - command = self.entity_description.key.split(".")[0] - await self._device.commands[command].send() await self.coordinator.async_refresh() @callback @@ -224,6 +222,10 @@ class HonSelectEntity(HonConfigSelectEntity): async def async_select_option(self, option: str) -> None: setting = self._device.settings[self.entity_description.key] setting.value = self._option_to_number(option, setting.values) + command = self.entity_description.key.split(".")[0] + await self._device.commands[command].send() + if command != "settings": + self._device.sync_command(command, "settings") await self.coordinator.async_refresh() @property diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index 2d66d47..f801b0d 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -1839,7 +1839,31 @@ }, "climate": { "air_conditioner": { - "name": "Klimatizační jednotka" + "name": "Klimatizační jednotka", + "state_attributes": { + "preset_mode": { + "name": "Programy", + "state": { + "iot_10_heating": "Funkce Vytápění 10 °C", + "iot_auto": "Auto", + "iot_cool": "Chlazení", + "iot_dry": "Odvlhčování", + "iot_fan": "Ventilátor", + "iot_heat": "Vytápění", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Automatické čištění", + "iot_self_clean": "Samočištění zamrazením", + "iot_self_clean_56": "Samočištění 56°C sterilizace ", + "iot_simple_start": "Spustit nyní", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + auto", + "iot_uv_and_cool": "UV + zchlazení", + "iot_uv_and_dry": "UV + odstranění vlhkosti", + "iot_uv_and_fan": "UV + ventilátor", + "iot_uv_and_heat": "UV + ohřev" + } + } + } }, "fridge": { "name": "Chladnička", diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index 7cf3cf3..d2df5ef 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -1839,7 +1839,31 @@ }, "climate": { "air_conditioner": { - "name": "Klimaanlage" + "name": "Klimaanlage", + "state_attributes": { + "preset_mode": { + "name": "Programme", + "state": { + "iot_10_heating": "10°C Heizfunktion", + "iot_auto": "Auto", + "iot_cool": "Kühl", + "iot_dry": "Trocken", + "iot_fan": "Ventilator", + "iot_heat": "Heizen", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Selbst reinigen", + "iot_self_clean": "Self-Clean", + "iot_self_clean_56": "Steri-Clean 56°C", + "iot_simple_start": "Jetzt beginnen", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Auto", + "iot_uv_and_cool": "UV + Kalt", + "iot_uv_and_dry": "UV + Entfeuchter", + "iot_uv_and_fan": "UV + Gebläse", + "iot_uv_and_heat": "UV + Heizen" + } + } + } }, "fridge": { "name": "Kühlschrank", diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index 93d4665..8fe6ba1 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -1839,7 +1839,31 @@ }, "climate": { "air_conditioner": { - "name": "Κλιματιστικό" + "name": "Κλιματιστικό", + "state_attributes": { + "preset_mode": { + "name": "Προγράμματα", + "state": { + "iot_10_heating": "10° C Λειτουργία θέρμανσης", + "iot_auto": "Αυτόματο", + "iot_cool": "Ψύξη", + "iot_dry": "Στέγνωμα", + "iot_fan": "Ανεμιστήρας", + "iot_heat": "Ζέστη", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Αυτοκαθαρισμός", + "iot_self_clean": "Αυτοκαθαρισμός", + "iot_self_clean_56": "Steri-Clean 56°C", + "iot_simple_start": "Εκκίνηση τώρα", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Auto", + "iot_uv_and_cool": "UV + Ψύξη", + "iot_uv_and_dry": "UV + Αφυγραντήρας", + "iot_uv_and_fan": "UV + Ανεμιστήρας", + "iot_uv_and_heat": "UV + Θέρμανση" + } + } + } }, "fridge": { "name": "Ψυγείο", diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index f14fa71..514c214 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -1868,7 +1868,31 @@ }, "climate": { "air_conditioner": { - "name": "Air conditioner" + "name": "Air conditioner", + "state_attributes": { + "preset_mode": { + "name": "Programs", + "state": { + "iot_10_heating": "10°C Heating function", + "iot_auto": "Auto", + "iot_cool": "Cool", + "iot_dry": "Dry", + "iot_fan": "Fan", + "iot_heat": "Heat", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Self-purify", + "iot_self_clean": "Self-clean", + "iot_self_clean_56": "Steri-Clean 56°C", + "iot_simple_start": "Start now", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Auto", + "iot_uv_and_cool": "UV + Cold", + "iot_uv_and_dry": "UV + Dehumidifier", + "iot_uv_and_fan": "UV + Fan", + "iot_uv_and_heat": "UV + Heat" + } + } + } }, "fridge": { "name": "Fridge", diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index 02dd717..cc3d0b6 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -1839,7 +1839,31 @@ }, "climate": { "air_conditioner": { - "name": "Aire acondicionado" + "name": "Aire acondicionado", + "state_attributes": { + "preset_mode": { + "name": "Programas", + "state": { + "iot_10_heating": "Función de calentamiento de 10° C", + "iot_auto": "Automático", + "iot_cool": "Frío", + "iot_dry": "Deshumidificar", + "iot_fan": "Ventilador", + "iot_heat": "Calor", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Autopurificar", + "iot_self_clean": "Autolimpieza", + "iot_self_clean_56": "Limpieza desinfectante 56°", + "iot_simple_start": "Iniciar ahora", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Automático", + "iot_uv_and_cool": "UV + Frío", + "iot_uv_and_dry": "UV + Deshumidificador", + "iot_uv_and_fan": "UV + Ventilador", + "iot_uv_and_heat": "UV + Calor" + } + } + } }, "fridge": { "name": "Frigorífico", diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index fe78f66..2478178 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -1839,7 +1839,31 @@ }, "climate": { "air_conditioner": { - "name": "Climatiseur" + "name": "Climatiseur", + "state_attributes": { + "preset_mode": { + "name": "Programmes", + "state": { + "iot_10_heating": "Fonction Chauffage 10 °C", + "iot_auto": "Automatique", + "iot_cool": "Frais", + "iot_dry": "Sec", + "iot_fan": "Ventilateur", + "iot_heat": "Chaleur", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Auto-purification", + "iot_self_clean": "Auto-nettoyage", + "iot_self_clean_56": "Steri-Clean 56°C", + "iot_simple_start": "Démarrez maintenant", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Auto", + "iot_uv_and_cool": "UV + Froid", + "iot_uv_and_dry": "UV + Déshumidificateur", + "iot_uv_and_fan": "UV + ventilateur", + "iot_uv_and_heat": "UV + Chaleur" + } + } + } }, "fridge": { "name": "Réfrigérateur", diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index 7a0ff87..a68d88c 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -964,7 +964,15 @@ }, "climate": { "air_conditioner": { - "name": "Air conditioner" + "name": "Air conditioner", + "state_attributes": { + "preset_mode": { + "name": "Programs", + "state": { + "iot_simple_start": "התחל עכשיו" + } + } + } }, "fridge": { "name": "Fridge", diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index 385085f..2c66312 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -1839,7 +1839,31 @@ }, "climate": { "air_conditioner": { - "name": "Klimatizacijski uređaj" + "name": "Klimatizacijski uređaj", + "state_attributes": { + "preset_mode": { + "name": "Programi", + "state": { + "iot_10_heating": "Funkcija grijanja na 10 °C", + "iot_auto": "Automatski", + "iot_cool": "Hlađenje", + "iot_dry": "Sušenje", + "iot_fan": "Ventilator", + "iot_heat": "Zagrijavanje", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Sampročišćavanje", + "iot_self_clean": "Samočišćenje", + "iot_self_clean_56": "Sterilno čišćenje 56°C", + "iot_simple_start": "Pokreni sada", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + automatski", + "iot_uv_and_cool": "UV + hladno", + "iot_uv_and_dry": "UV + odvlaživač", + "iot_uv_and_fan": "UV + ventilator", + "iot_uv_and_heat": "UV + grijanje" + } + } + } }, "fridge": { "name": "Hladnjak", diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index dcad47c..fe02131 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -1844,7 +1844,31 @@ }, "climate": { "air_conditioner": { - "name": "Condizionatore" + "name": "Condizionatore", + "state_attributes": { + "preset_mode": { + "name": "Programmi", + "state": { + "iot_10_heating": "Funzione 10°C Heating ", + "iot_auto": "Auto", + "iot_cool": "Freddo", + "iot_dry": "Deumidificazione", + "iot_fan": "Ventilatore", + "iot_heat": "Caldo", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Self purify", + "iot_self_clean": "Self clean", + "iot_self_clean_56": "Steri-Clean 56°C", + "iot_simple_start": "Avvia ora", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Auto", + "iot_uv_and_cool": "UV + Freddo", + "iot_uv_and_dry": "UV + Deumidificatore", + "iot_uv_and_fan": "UV + Ventola", + "iot_uv_and_heat": "UV + Caldo" + } + } + } }, "fridge": { "name": "Frigorifero", diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index ba5c686..524522a 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -1839,7 +1839,31 @@ }, "climate": { "air_conditioner": { - "name": "Airconditioner" + "name": "Airconditioner", + "state_attributes": { + "preset_mode": { + "name": "Programma's", + "state": { + "iot_10_heating": "10°C-verwarmingsfunctie", + "iot_auto": "Automatisch", + "iot_cool": "Koelen", + "iot_dry": "Drogen", + "iot_fan": "Ventilator", + "iot_heat": "Verwarming", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Zelfzuivering", + "iot_self_clean": "Zelfreiniging", + "iot_self_clean_56": "Sterilisatie reiniging 56°C", + "iot_simple_start": "Start nu", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Auto", + "iot_uv_and_cool": "UV + Koud", + "iot_uv_and_dry": "UV + Ontvochtiger", + "iot_uv_and_fan": "UV + Hetelucht", + "iot_uv_and_heat": "UV + Warmte" + } + } + } }, "fridge": { "name": "Koelkast", diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index a9a0096..9a9513b 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -1839,7 +1839,31 @@ }, "climate": { "air_conditioner": { - "name": "Klimatyzator" + "name": "Klimatyzator", + "state_attributes": { + "preset_mode": { + "name": "Programy", + "state": { + "iot_10_heating": "Funkcja grzania 10°C", + "iot_auto": "Auto", + "iot_cool": "Chłodzenie", + "iot_dry": "Osuszanie", + "iot_fan": "Wentylator", + "iot_heat": "Grzanie", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Self Purify", + "iot_self_clean": "Self Clean", + "iot_self_clean_56": "Steri Clean 56°C", + "iot_simple_start": "Uruchom teraz", + "iot_uv": "Sterylizacja UVC", + "iot_uv_and_auto": "UV + automat", + "iot_uv_and_cool": "UV + chłodzenie", + "iot_uv_and_dry": "UV + osuszacz powietrza", + "iot_uv_and_fan": "UV + wentylator", + "iot_uv_and_heat": "UV + podgrzewanie" + } + } + } }, "fridge": { "name": "Lodówka", diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index 44ad0e8..1ad5fe1 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -1839,7 +1839,31 @@ }, "climate": { "air_conditioner": { - "name": "Ar Condicionado" + "name": "Ar Condicionado", + "state_attributes": { + "preset_mode": { + "name": "Programas", + "state": { + "iot_10_heating": "Função de aquecimento de 10 °C", + "iot_auto": "Auto", + "iot_cool": "Frio", + "iot_dry": "Secar", + "iot_fan": "Ventilador", + "iot_heat": "Calor", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Autopurificação", + "iot_self_clean": "Autolimpeza", + "iot_self_clean_56": "Steri-Clean 56°C", + "iot_simple_start": "Iniciar agora", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Auto", + "iot_uv_and_cool": "UV + Frio", + "iot_uv_and_dry": "UV + Desumidificador", + "iot_uv_and_fan": "UV + Ventilação", + "iot_uv_and_heat": "UV + Calor" + } + } + } }, "fridge": { "name": "Frigorífico", diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index d750b22..820a2d7 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -1839,7 +1839,31 @@ }, "climate": { "air_conditioner": { - "name": "Aer condiționat" + "name": "Aer condiționat", + "state_attributes": { + "preset_mode": { + "name": "Programe", + "state": { + "iot_10_heating": "Funcția de încălzire la 10 °C", + "iot_auto": "Automat", + "iot_cool": "Răcire", + "iot_dry": "Uscare", + "iot_fan": "Ventilare", + "iot_heat": "Încălzire", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Auto-purificare", + "iot_self_clean": "Autocurățare", + "iot_self_clean_56": "Curățare-sterilizare la 56°C", + "iot_simple_start": "Începeți acum", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + automat", + "iot_uv_and_cool": "UV + răcire", + "iot_uv_and_dry": "UV + dezumidificator", + "iot_uv_and_fan": "UV + ventilator", + "iot_uv_and_heat": "UV + încălzire" + } + } + } }, "fridge": { "name": "Frigider", diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index ffecc52..7c8eb0e 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -1839,7 +1839,31 @@ }, "climate": { "air_conditioner": { - "name": "Кондиционер воздуха" + "name": "Кондиционер воздуха", + "state_attributes": { + "preset_mode": { + "name": "Программы", + "state": { + "iot_10_heating": "Функция нагрева до 10°C", + "iot_auto": "Авто", + "iot_cool": "Охлаждение", + "iot_dry": "Сушка", + "iot_fan": "Вентилятор", + "iot_heat": "Нагрев", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Самоочищение", + "iot_self_clean": "Самоочистка", + "iot_self_clean_56": "Steri-Clean 56°C", + "iot_simple_start": "Пуск сейчас", + "iot_uv": "Ультрафиолет", + "iot_uv_and_auto": "УФ + Авто", + "iot_uv_and_cool": "УФ + Охлаждение", + "iot_uv_and_dry": "УФ + Осушитель", + "iot_uv_and_fan": "УФ + Вентилятор", + "iot_uv_and_heat": "УФ + Нагрев" + } + } + } }, "fridge": { "name": "Холодильник", diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index 1d84748..1967d9f 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -1839,7 +1839,31 @@ }, "climate": { "air_conditioner": { - "name": "Klimatizácia" + "name": "Klimatizácia", + "state_attributes": { + "preset_mode": { + "name": "Programy", + "state": { + "iot_10_heating": "Funkcia vykurovania na 10 °C", + "iot_auto": "Automatika", + "iot_cool": "Chladiť", + "iot_dry": "Sušiť", + "iot_fan": "Ventilátor", + "iot_heat": "Ohrev", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Samoprečisťovanie", + "iot_self_clean": "Samočistenie", + "iot_self_clean_56": "Sterilné čistenie 56°C", + "iot_simple_start": "Spustiť teraz", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Auto", + "iot_uv_and_cool": "UV + Studené", + "iot_uv_and_dry": "UV + Odvlhčovač", + "iot_uv_and_fan": "UV + Ventilátor", + "iot_uv_and_heat": "UV + Ohrev" + } + } + } }, "fridge": { "name": "Chladnička", diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index cedf8f8..5c22857 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -1839,7 +1839,31 @@ }, "climate": { "air_conditioner": { - "name": "Klimatska naprava" + "name": "Klimatska naprava", + "state_attributes": { + "preset_mode": { + "name": "Programi", + "state": { + "iot_10_heating": "Funkcija ogrevanja pri 10 °C", + "iot_auto": "Samodejno", + "iot_cool": "Hlajenje", + "iot_dry": "Sušenje", + "iot_fan": "Ventilator", + "iot_heat": "Segrevanje", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Samoočiščevanje", + "iot_self_clean": "Samodejno čiščenje", + "iot_self_clean_56": "Sterilno čiščenje 56°C", + "iot_simple_start": "Zaženi zdaj", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + samodejno", + "iot_uv_and_cool": "UV + hlajenje", + "iot_uv_and_dry": "UV + razvlaževanje", + "iot_uv_and_fan": "UV + ventilator", + "iot_uv_and_heat": "UV + gretje" + } + } + } }, "fridge": { "name": "Hladilnik", diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index aaa157e..f86e6de 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -1839,7 +1839,31 @@ }, "climate": { "air_conditioner": { - "name": "Klima uređaj" + "name": "Klima uređaj", + "state_attributes": { + "preset_mode": { + "name": "Programi", + "state": { + "iot_10_heating": "Funkcija grejanja – 10° C", + "iot_auto": "Automatski", + "iot_cool": "Hlađenje", + "iot_dry": "Sušenje", + "iot_fan": "Ventilator", + "iot_heat": "Toplota", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Samopročišćavanje", + "iot_self_clean": "Samočišćenje", + "iot_self_clean_56": "Sterilno čišćenje 56°C", + "iot_simple_start": "Pokrenuti sada", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + automatsko", + "iot_uv_and_cool": "UV+ hladno", + "iot_uv_and_dry": "UV + odvlaživač", + "iot_uv_and_fan": "UV + ventilator", + "iot_uv_and_heat": "UV + toplota" + } + } + } }, "fridge": { "name": "Frižider", diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index 562fd7f..c32c931 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -1839,7 +1839,31 @@ }, "climate": { "air_conditioner": { - "name": "Klima" + "name": "Klima", + "state_attributes": { + "preset_mode": { + "name": "Programlar", + "state": { + "iot_10_heating": "10°C Isıtma fonksiyonu", + "iot_auto": "Otomatik", + "iot_cool": "Soğuk", + "iot_dry": "Kuru", + "iot_fan": "Fan", + "iot_heat": "Isı", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "Kendi kendini arındırma", + "iot_self_clean": "Kendi kendini temizleme", + "iot_self_clean_56": "Steril Temizleme 56°C", + "iot_simple_start": "Şimdi başlat", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + Otomatik", + "iot_uv_and_cool": "UV + Soğuk", + "iot_uv_and_dry": "UV + Nem giderici", + "iot_uv_and_fan": "UV + Fan", + "iot_uv_and_heat": "UV + Isıtma" + } + } + } }, "fridge": { "name": "Buzdolabı", diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index 0c2111e..c6a628c 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -1839,7 +1839,31 @@ }, "climate": { "air_conditioner": { - "name": "空调" + "name": "空调", + "state_attributes": { + "preset_mode": { + "name": "程序", + "state": { + "iot_10_heating": "10°C 加热功能", + "iot_auto": "自动", + "iot_cool": "冷却", + "iot_dry": "烘干", + "iot_fan": "风扇", + "iot_heat": "加热", + "iot_nano_aqua": "Nano Aqua", + "iot_purify": "自净", + "iot_self_clean": "自洁", + "iot_self_clean_56": "无菌清洁 56°C", + "iot_simple_start": "立即启动", + "iot_uv": "UV", + "iot_uv_and_auto": "UV + 自动", + "iot_uv_and_cool": "UV + 制冷", + "iot_uv_and_dry": "UV + 减湿器", + "iot_uv_and_fan": "UV + 风扇", + "iot_uv_and_heat": "UV + 加热" + } + } + } }, "fridge": { "name": "冰箱", diff --git a/scripts/translation_keys.py b/scripts/translation_keys.py index 57b5364..3f45cb1 100644 --- a/scripts/translation_keys.py +++ b/scripts/translation_keys.py @@ -159,6 +159,12 @@ CLIMATE = { "state": "PROGRAMS.OV", } }, + "air_conditioner": { + "preset_mode": { + "name": "OV.TABS.PROGRAMS_TITLE", + "state": "PROGRAMS.AC", + } + }, "wine": { "preset_mode": { "name": "WC.NAME", -- 2.39.5 From 2c3217ff95b94b06e90c1e25e1b72399ec9023d1 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Wed, 21 Jun 2023 19:56:45 +0200 Subject: [PATCH 139/205] Bump version --- custom_components/hon/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index a0f5e63..2175a14 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -9,7 +9,7 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": [ - "pyhOn==0.13.0" + "pyhOn==0.13.1" ], - "version": "0.9.0-beta.3" + "version": "0.9.0-beta.4" } -- 2.39.5 From 4b1f500f90ecb8d63d2b5aac68a09b6c026e8625 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Thu, 22 Jun 2023 13:31:26 +0200 Subject: [PATCH 140/205] Fix wrong name for silent mode #52 --- README.md | 4 ++-- custom_components/hon/switch.py | 10 +++++----- custom_components/hon/translations/cs.json | 3 +++ custom_components/hon/translations/de.json | 3 +++ custom_components/hon/translations/el.json | 3 +++ custom_components/hon/translations/en.json | 3 +++ custom_components/hon/translations/es.json | 3 +++ custom_components/hon/translations/fr.json | 3 +++ custom_components/hon/translations/he.json | 3 +++ custom_components/hon/translations/hr.json | 3 +++ custom_components/hon/translations/it.json | 3 +++ custom_components/hon/translations/nl.json | 3 +++ custom_components/hon/translations/pl.json | 3 +++ custom_components/hon/translations/pt.json | 3 +++ custom_components/hon/translations/ro.json | 3 +++ custom_components/hon/translations/ru.json | 3 +++ custom_components/hon/translations/sk.json | 3 +++ custom_components/hon/translations/sl.json | 3 +++ custom_components/hon/translations/sr.json | 3 +++ custom_components/hon/translations/tr.json | 3 +++ custom_components/hon/translations/zh.json | 3 +++ scripts/translation_keys.py | 2 +- 22 files changed, 65 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index e5e4f34..67777c5 100644 --- a/README.md +++ b/README.md @@ -148,12 +148,12 @@ For every device exists a hidden button which can be used to log all infos of yo | Eco Mode | | `switch` | `ecoMode` | | Eco Pilot | `run` | `select` | `settings.humanSensingStatus` | | Health Mode | `medication-outline` | `switch` | `healthMode` | -| Mute | `volume-off` | `switch` | `muteStatus` | +| Night Mode | `bed` | `switch` | `silentSleepStatus` | | Rapid Mode | `run-fast` | `switch` | `rapidMode` | | Screen Display | `monitor-small` | `switch` | `screenDisplayStatus` | | Self Cleaning | `air-filter` | `switch` | `selfCleaningStatus` | | Self Cleaning 56 | `air-filter` | `switch` | `selfCleaning56Status` | -| Silent Sleep | `bed` | `switch` | `silentSleepStatus` | +| Silent Mode | `volume-off` | `switch` | `muteStatus` | | Target Temperature | `thermometer` | `number` | `settings.tempSel` | #### Sensors | Name | Icon | Entity | Key | diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index e69eaa5..a77aacd 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -5,8 +5,8 @@ from typing import Any from homeassistant.components.switch import SwitchEntityDescription, SwitchEntity from homeassistant.config_entries import ConfigEntry -from homeassistant.helpers.entity import EntityCategory from homeassistant.core import callback +from homeassistant.helpers.entity import EntityCategory from pyhon.parameter.base import HonParameter from pyhon.parameter.range import HonParameterRange @@ -262,9 +262,9 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { ), HonSwitchEntityDescription( key="muteStatus", - name="Mute", + name="Silent Mode", icon="mdi:volume-off", - translation_key="mute_mode", + translation_key="silent_mode", ), HonSwitchEntityDescription( key="rapidMode", @@ -291,9 +291,9 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { ), HonSwitchEntityDescription( key="silentSleepStatus", - name="Silent Sleep", + name="Night Mode", icon="mdi:bed", - translation_key="silent_mode", + translation_key="night_mode", ), ), "REF": ( diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index f801b0d..2bb309f 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -1706,6 +1706,9 @@ }, "refrigerator": { "name": "Chladnička" + }, + "night_mode": { + "name": "Noční režim" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index d2df5ef..c9a8302 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -1706,6 +1706,9 @@ }, "refrigerator": { "name": "Kühlschrank" + }, + "night_mode": { + "name": "Nachtmodus" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index 8fe6ba1..10c28a4 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -1706,6 +1706,9 @@ }, "refrigerator": { "name": "Ψυγείο" + }, + "night_mode": { + "name": "Νυχτερινή λειτουργία" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 514c214..20bbfaa 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -1735,6 +1735,9 @@ }, "refrigerator": { "name": "Refrigerator" + }, + "night_mode": { + "name": "Night mode" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index cc3d0b6..12579ac 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -1706,6 +1706,9 @@ }, "refrigerator": { "name": "Frigorífico" + }, + "night_mode": { + "name": "Modo nocturno" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index 2478178..97024e1 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -1706,6 +1706,9 @@ }, "refrigerator": { "name": "Réfrigérateur" + }, + "night_mode": { + "name": "Mode nuit" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index a68d88c..ee08a39 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -831,6 +831,9 @@ }, "refrigerator": { "name": "Refrigerator" + }, + "night_mode": { + "name": "Night mode" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index 2c66312..4fe7c1d 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -1706,6 +1706,9 @@ }, "refrigerator": { "name": "Hladnjak" + }, + "night_mode": { + "name": "Noćni način rada" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index fe02131..2ca238f 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -1711,6 +1711,9 @@ }, "refrigerator": { "name": "Frigo" + }, + "night_mode": { + "name": "Modalità notte" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index 524522a..2e99758 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -1706,6 +1706,9 @@ }, "refrigerator": { "name": "Koelkast" + }, + "night_mode": { + "name": "Nachtmodus" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index 9a9513b..bead418 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -1706,6 +1706,9 @@ }, "refrigerator": { "name": "Lodówka" + }, + "night_mode": { + "name": "Tryb nocny" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index 1ad5fe1..a71e789 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -1706,6 +1706,9 @@ }, "refrigerator": { "name": "Frigorífico" + }, + "night_mode": { + "name": "Modo noturno" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index 820a2d7..4a562a1 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -1706,6 +1706,9 @@ }, "refrigerator": { "name": "Frigider" + }, + "night_mode": { + "name": "Modul noapte" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index 7c8eb0e..452bbb2 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -1706,6 +1706,9 @@ }, "refrigerator": { "name": "Холодильник" + }, + "night_mode": { + "name": "Ночной режим" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index 1967d9f..cfd0db3 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -1706,6 +1706,9 @@ }, "refrigerator": { "name": "Chladnička" + }, + "night_mode": { + "name": "Nočný režim" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index 5c22857..379f258 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -1706,6 +1706,9 @@ }, "refrigerator": { "name": "Hladilnik" + }, + "night_mode": { + "name": "Nočni način" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index f86e6de..7ba5f27 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -1706,6 +1706,9 @@ }, "refrigerator": { "name": "Frižider" + }, + "night_mode": { + "name": "Noćni režim" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index c32c931..3220505 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -1706,6 +1706,9 @@ }, "refrigerator": { "name": "Buzdolabı" + }, + "night_mode": { + "name": "Gece modu" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index c6a628c..1f2292b 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -1706,6 +1706,9 @@ }, "refrigerator": { "name": "冰箱" + }, + "night_mode": { + "name": "夜间模式" } }, "binary_sensor": { diff --git a/scripts/translation_keys.py b/scripts/translation_keys.py index 3f45cb1..41da415 100644 --- a/scripts/translation_keys.py +++ b/scripts/translation_keys.py @@ -198,7 +198,7 @@ NAMES = { "self_clean": "PROGRAMS.AC.IOT_SELF_CLEAN", "self_clean_56": "PROGRAMS.AC.IOT_SELF_CLEAN_56", "silent_mode": "AC.PROGRAM_DETAIL.SILENT_MODE", - "mute_mode": "AC.PROGRAM_DETAIL.MUTE_MODE", + "night_mode": "AC.PROGRAM_CARD.NIGHT", "extra_rinse_1": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.EXTRARINSE1", "extra_rinse_2": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.EXTRARINSE2", "extra_rinse_3": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.EXTRARINSE3", -- 2.39.5 From e5e351272be9dcaa8f5caf71da31a4b82b4897dd Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sun, 25 Jun 2023 17:33:30 +0200 Subject: [PATCH 141/205] Create data archive --- custom_components/hon/__init__.py | 10 ++++++---- custom_components/hon/button.py | 32 ++++++++++++++++++++++++++----- 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/custom_components/hon/__init__.py b/custom_components/hon/__init__.py index 37010b3..901a824 100644 --- a/custom_components/hon/__init__.py +++ b/custom_components/hon/__init__.py @@ -1,18 +1,17 @@ import logging +from pathlib import Path import voluptuous as vol -from pyhon import Hon - from homeassistant.config_entries import ConfigEntry from homeassistant.const import CONF_EMAIL, CONF_PASSWORD from homeassistant.helpers import config_validation as cv, aiohttp_client from homeassistant.helpers.typing import HomeAssistantType +from pyhon import Hon from .const import DOMAIN, PLATFORMS _LOGGER = logging.getLogger(__name__) - HON_SCHEMA = vol.Schema( { vol.Required(CONF_EMAIL): cv.string, @@ -29,7 +28,10 @@ CONFIG_SCHEMA = vol.Schema( async def async_setup_entry(hass: HomeAssistantType, entry: ConfigEntry): session = aiohttp_client.async_get_clientsession(hass) hon = await Hon( - entry.data["email"], entry.data["password"], session=session + entry.data["email"], + entry.data["password"], + session=session, + test_data_path=Path(hass.config.config_dir), ).create() hass.data.setdefault(DOMAIN, {}) hass.data[DOMAIN][entry.unique_id] = hon diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index 55f2747..8a07b2a 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -1,4 +1,5 @@ import logging +from pathlib import Path import pkg_resources from homeassistant.components import persistent_notification @@ -61,7 +62,8 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non entity = HonButtonEntity(hass, entry, device, description) await entity.coordinator.async_config_entry_first_refresh() entities.append(entity) - entities.append(HonFeatureRequestButton(hass, entry, device)) + entities.append(HonDeviceInfo(hass, entry, device)) + entities.append(HonDataArchive(hass, entry, device)) await entities[-1].coordinator.async_config_entry_first_refresh() async_add_entities(entities) @@ -82,21 +84,41 @@ class HonButtonEntity(HonEntity, ButtonEntity): ) -class HonFeatureRequestButton(HonEntity, ButtonEntity): +class HonDeviceInfo(HonEntity, ButtonEntity): def __init__(self, hass, entry, device: HonAppliance) -> None: super().__init__(hass, entry, device) - self._attr_unique_id = f"{super().unique_id}_log_device_info" + self._attr_unique_id = f"{super().unique_id}_show_device_info" self._attr_icon = "mdi:information" self._attr_name = "Show Device Info" self._attr_entity_category = EntityCategory.DIAGNOSTIC - self._attr_entity_registry_enabled_default = False async def async_press(self) -> None: pyhon_version = pkg_resources.get_distribution("pyhon").version - info = f"{self._device.diagnose()}pyhOnVersion: {pyhon_version}" + info = f"{self._device.diagnose}pyhOnVersion: {pyhon_version}" title = f"{self._device.nick_name} Device Info" persistent_notification.create( self._hass, f"````\n```\n{info}\n```\n````", title ) _LOGGER.info(info.replace(" ", "\u200B ")) + + +class HonDataArchive(HonEntity, ButtonEntity): + def __init__(self, hass, entry, device: HonAppliance) -> None: + super().__init__(hass, entry, device) + + self._attr_unique_id = f"{super().unique_id}_create_data_archive" + self._attr_icon = "mdi:archive-arrow-down" + self._attr_name = "Create Data Archive" + self._attr_entity_category = EntityCategory.DIAGNOSTIC + + async def async_press(self) -> None: + path = Path(self._hass.config.config_dir) / "www" + data = await self._device.data_archive(path) + title = f"{self._device.nick_name} Data Archive" + text = ( + f'{data}

' + f"Use this data for [GitHub Issues of Haier hOn](https://github.com/Andre0512/hon).
" + f"Or add it to the [hon-test-data collection](https://github.com/Andre0512/hon-test-data)." + ) + persistent_notification.create(self._hass, text, title) -- 2.39.5 From a25510184e57453dcb18fb54c6c6010f4cf1d9dd Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sun, 25 Jun 2023 17:59:18 +0200 Subject: [PATCH 142/205] Bump version --- .github/ISSUE_TEMPLATE/bug_report.md | 8 ++++++++ .github/ISSUE_TEMPLATE/feature_request.md | 8 ++++++++ README.md | 11 ++++++----- custom_components/hon/manifest.json | 4 ++-- info.md | 5 +++++ 5 files changed, 29 insertions(+), 7 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 661bc9c..4ffa126 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -37,3 +37,11 @@ Post your device info here (if available) _This button can be found in the diagnostic section of your device or in the entity overview if "show disabled entities" is enabled._ 2. Press the button to create a notification 3. Open home assistant notifications and copy the message (Crtl+A, Ctrl+C) + +**Data Archive** +For further analysis, please add your appliance data archive here. +Navigate to `Settings` -> `Device & Services` -> `Haier hOn` -> _your device_ and press the _Create Data Archive_ button. +Then open notifications to download the data zip archive. +To attach the file: +* GitHub Web: Use the "Attach files by dragging & dropping, selecting or pasting them." function +* GitHub Mobile: Upload the zip archive as image diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index cb133ce..fb0389e 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -24,3 +24,11 @@ _This button can be found in the diagnostic section of your device or in the ent 3. Open home assistant notifications and copy the message (Crtl+A, Ctrl+C) **Additional context** Add any other context or screenshots about the feature request here. + +**Data Archive** +For further analysis, please add your appliance data archive here. +Navigate to `Settings` -> `Device & Services` -> `Haier hOn` -> _your device_ and press the _Create Data Archive_ button. +Then open notifications to download the data zip archive. +To attach the file: +* GitHub Web: Use the "Attach files by dragging & dropping, selecting or pasting them." function +* GitHub Mobile: Upload the zip archive as image diff --git a/README.md b/README.md index 67777c5..7bc5c5b 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,9 @@ Support has been confirmed for these models, but many more will work. Please add | **Hood** | HADG6DS46BWIFI | | | | **Wine Cellar** | HWS247FDU1 | | | +| Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data).
This helps us to develop new features and not to break compatibility in newer versions. | +|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + ## Supported Languages Translation of internal names like programs are available for all languages which are official supported by the hOn app: * 🇨🇳 Chinese @@ -81,11 +84,9 @@ Translation of internal names like programs are available for all languages whic Any kind of contribution is welcome! ### Read out device data If you want to make a request for adding new appliances or additional attributes and don't want to use the command line, here is how you can read out your device data. -For every device exists a hidden button which can be used to log all infos of your appliance. -1. Enable the "Show Device Info" button - _This button can be found in the diagnostic section of your device or in the entity overview if "show disabled entities" is enabled._ -2. Press the button to create a notification -3. Open home assistant notifications and copy the message (Crtl+A, Ctrl+C) +For every device exists a button under diagnostics which can be used to log all info of your appliance. +1. Press the button to create a notification +2. Open home assistant notifications and copy the message (Crtl+A, Ctrl+C) ### Add appliances or additional attributes 1. Install [pyhOn](https://github.com/Andre0512/pyhOn) ```commandline diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 2175a14..f35b94f 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -9,7 +9,7 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": [ - "pyhOn==0.13.1" + "pyhOn==0.14.1" ], - "version": "0.9.0-beta.4" + "version": "0.9.0-beta.5" } diff --git a/info.md b/info.md index 26f76b2..f07ae53 100644 --- a/info.md +++ b/info.md @@ -40,6 +40,9 @@ Support has been confirmed for these models, but many more will work. Please add | **Hood** | HADG6DS46BWIFI | | | | **Wine Cellar** | HWS247FDU1 | | | +| Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data).
This helps us to develop new features and not to break compatibility in newer versions. | +|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + ## Supported Languages Translation of internal names like programs are available for all languages which are official supported by the hOn app: * 🇨🇳 Chinese @@ -67,6 +70,8 @@ Translation of internal names like programs are available for all languages whic ![washing_machine.png](assets/washing_machine.png) ## Contribute + + Want to help us to support more appliances? Or add more sensors? Or help with translating? Or beautify some icons or captions? Check out the [project on GitHub](https://github.com/Andre0512/hon), every contribution is welcome! -- 2.39.5 From 6519bef12aeb2d11aa03ceb4ab59d125b56a6514 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Wed, 28 Jun 2023 22:54:03 +0200 Subject: [PATCH 143/205] Bump version --- README.md | 24 ++++++++++++------------ custom_components/hon/manifest.json | 4 ++-- info.md | 24 ++++++++++++------------ 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 7bc5c5b..13215a1 100644 --- a/README.md +++ b/README.md @@ -38,18 +38,18 @@ _If the integration is not in the list, you need to clear the browser cache._ ## Supported Models Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). -| | **Haier** | **Hoover** | **Candy** | -|---------------------|----------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------| -| **Washing Machine** | HW90-B14TEAM5
HW100-B14959U1 | H-WASH 500
H7W4 48MBC-S | CO4 107T1/2-07
CBWO49TWME-S
RO44 1286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | -| **Tumble Dryer** | HD80-A3959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S | -| **Washer Dryer** | HWD100-B14979 | HWPS4954DAMR-11 | RPW41066BWMR/1-S | -| **Oven** | HWO60SM2F3XH | HSOT3161WG | | -| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | -| **Air Conditioner** | AD105S2SM3FA
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C | | | -| **Fridge** | HFW7720ENMB | | CCE4T620EWU | -| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | -| **Hood** | HADG6DS46BWIFI | | | -| **Wine Cellar** | HWS247FDU1 | | | +| | **Haier** | **Hoover** | **Candy** | +|---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------| +| **Washing Machine** | HW90-B14TEAM5
HW100-B14959U1 | H-WASH 500
H7W4 48MBC-S
HW 410AMBCB/1-80 | CO4 107T1/2-07
CBWO49TWME-S
RO44 1286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | +| **Tumble Dryer** | HD80-A3959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S | +| **Washer Dryer** | HWD100-B14979 | HWPS4954DAMR-11 | RPW41066BWMR/1-S | +| **Oven** | HWO60SM2F3XH | HSOT3161WG | | +| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | +| **Air Conditioner** | AD105S2SM3FA
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C | | | +| **Fridge** | HFW7720ENMB | | CCE4T620EWU | +| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | +| **Hood** | HADG6DS46BWIFI | | | +| **Wine Cellar** | HWS247FDU1 | | | | Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data).
This helps us to develop new features and not to break compatibility in newer versions. | |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index f35b94f..df8a178 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -9,7 +9,7 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": [ - "pyhOn==0.14.1" + "pyhOn==0.14.4" ], - "version": "0.9.0-beta.5" + "version": "0.9.0-beta.6" } diff --git a/info.md b/info.md index f07ae53..e71b020 100644 --- a/info.md +++ b/info.md @@ -27,18 +27,18 @@ _If the integration is not in the list, you need to clear the browser cache._ ## Supported Models Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). -| | **Haier** | **Hoover** | **Candy** | -|---------------------|----------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------| -| **Washing Machine** | HW90-B14TEAM5
HW100-B14959U1 | H-WASH 500
H7W4 48MBC-S | CO4 107T1/2-07
CBWO49TWME-S
RO44 1286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | -| **Tumble Dryer** | HD80-A3959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S | -| **Washer Dryer** | HWD100-B14979 | HWPS4954DAMR-11 | RPW41066BWMR/1-S | -| **Oven** | HWO60SM2F3XH | HSOT3161WG | | -| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | -| **Air Conditioner** | AD105S2SM3FA
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C | | | -| **Fridge** | HFW7720ENMB | | CCE4T620EWU | -| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | -| **Hood** | HADG6DS46BWIFI | | | -| **Wine Cellar** | HWS247FDU1 | | | +| | **Haier** | **Hoover** | **Candy** | +|---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------| +| **Washing Machine** | HW90-B14TEAM5
HW100-B14959U1
HW 410AMBCB/1-80 | H-WASH 500
H7W4 48MBC-S
| CO4 107T1/2-07
CBWO49TWME-S
RO44 1286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | +| **Tumble Dryer** | HD80-A3959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S | +| **Washer Dryer** | HWD100-B14979 | HWPS4954DAMR-11 | RPW41066BWMR/1-S | +| **Oven** | HWO60SM2F3XH | HSOT3161WG | | +| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | +| **Air Conditioner** | AD105S2SM3FA
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C | | | +| **Fridge** | HFW7720ENMB | | CCE4T620EWU | +| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | +| **Hood** | HADG6DS46BWIFI | | | +| **Wine Cellar** | HWS247FDU1 | | | | Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data).
This helps us to develop new features and not to break compatibility in newer versions. | |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -- 2.39.5 From 60ed8b4ec1d869b45de6d2279910d821ceae2af4 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Thu, 29 Jun 2023 22:19:29 +0200 Subject: [PATCH 144/205] Read out version --- custom_components/hon/button.py | 11 ++++++--- custom_components/hon/hon.py | 37 ++++++++++++++++++++++++++--- custom_components/hon/manifest.json | 4 ++-- 3 files changed, 44 insertions(+), 8 deletions(-) diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index 8a07b2a..9adb0b8 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -1,7 +1,6 @@ import logging from pathlib import Path -import pkg_resources from homeassistant.components import persistent_notification from homeassistant.components.button import ButtonEntityDescription, ButtonEntity from homeassistant.config_entries import ConfigEntry @@ -92,10 +91,14 @@ class HonDeviceInfo(HonEntity, ButtonEntity): self._attr_icon = "mdi:information" self._attr_name = "Show Device Info" self._attr_entity_category = EntityCategory.DIAGNOSTIC + if "beta" not in self.coordinator.info.hon_version: + self._attr_entity_registry_enabled_default = False async def async_press(self) -> None: - pyhon_version = pkg_resources.get_distribution("pyhon").version - info = f"{self._device.diagnose}pyhOnVersion: {pyhon_version}" + versions = "versions:\n" + versions += f" hon: {self.coordinator.info.hon_version}\n" + versions += f" pyhOn: {self.coordinator.info.pyhon_version}\n" + info = f"{self._device.diagnose}{versions}" title = f"{self._device.nick_name} Device Info" persistent_notification.create( self._hass, f"````\n```\n{info}\n```\n````", title @@ -111,6 +114,8 @@ class HonDataArchive(HonEntity, ButtonEntity): self._attr_icon = "mdi:archive-arrow-down" self._attr_name = "Create Data Archive" self._attr_entity_category = EntityCategory.DIAGNOSTIC + if "beta" not in self.coordinator.info.hon_version: + self._attr_entity_registry_enabled_default = False async def async_press(self) -> None: path = Path(self._hass.config.config_dir) / "www" diff --git a/custom_components/hon/hon.py b/custom_components/hon/hon.py index 40007aa..3a43678 100644 --- a/custom_components/hon/hon.py +++ b/custom_components/hon/hon.py @@ -1,7 +1,10 @@ +import json import logging from contextlib import suppress from datetime import timedelta +from pathlib import Path +import pkg_resources from homeassistant.core import callback from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.update_coordinator import CoordinatorEntity @@ -37,9 +40,7 @@ class HonEntity(CoordinatorEntity): return DeviceInfo( identifiers={(DOMAIN, self._device.unique_id)}, manufacturer=self._device.get("brand", ""), - name=self._device.nick_name - if self._device.nick_name - else self._device.model_name, + name=self._device.nick_name, model=self._device.model_name, sw_version=self._device.get("fwVersion", ""), ) @@ -50,6 +51,31 @@ class HonEntity(CoordinatorEntity): self.async_write_ha_state() +class HonInfo: + def __init__(self): + self._manifest = self._get_manifest() + self._hon_version = self._manifest.get("version", "") + self._pyhon_version = pkg_resources.get_distribution("pyhon").version + + @staticmethod + def _get_manifest(): + manifest = Path(__file__).parent / "manifest.json" + with open(manifest, "r", encoding="utf-8") as file: + return json.loads(file.read()) + + @property + def manifest(self): + return self._manifest + + @property + def hon_version(self): + return self._hon_version + + @property + def pyhon_version(self): + return self._pyhon_version + + class HonCoordinator(DataUpdateCoordinator): def __init__(self, hass, device: HonAppliance): """Initialize my coordinator.""" @@ -60,10 +86,15 @@ class HonCoordinator(DataUpdateCoordinator): update_interval=timedelta(seconds=UPDATE_INTERVAL), ) self._device = device + self._info = HonInfo() async def _async_update_data(self): await self._device.update() + @property + def info(self) -> HonInfo: + return self._info + def unique_entities(base_entities, new_entities): result = list(base_entities) diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index df8a178..c6d92bb 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -9,7 +9,7 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": [ - "pyhOn==0.14.4" + "pyhOn==0.14.6" ], - "version": "0.9.0-beta.6" + "version": "0.9.0-beta.7" } -- 2.39.5 From 1d83162f7de4a71ecd77545f389618369d168438 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Thu, 29 Jun 2023 22:29:10 +0200 Subject: [PATCH 145/205] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 7 +++++-- .github/ISSUE_TEMPLATE/feature_request.md | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 4ffa126..859f87b 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -25,12 +25,15 @@ If applicable, add screenshots to help explain your problem. **Environment (please complete the following information):** - Home Assistant Version: [e.g. `2023.6.1`] - - hOn Integration Version [e.g. `0.8.1`, can be found in HACS] + - hOn Integration Version [e.g. `0.8.1`, can be found in HACS or device log] - pyhOn Version [e.g. `0.13.1`, can be found in device log] **Additional context** Add any other context about the problem here. +**Home Assistant Logs** +Check `System` -> `Logs` if you can find any logs related to this integration and post it here. + **Device Log** Post your device info here (if available) 1. Enable the "Show Device Info" button @@ -39,7 +42,7 @@ _This button can be found in the diagnostic section of your device or in the ent 3. Open home assistant notifications and copy the message (Crtl+A, Ctrl+C) **Data Archive** -For further analysis, please add your appliance data archive here. +For further analysis, please add your appliance data archive here (if available) Navigate to `Settings` -> `Device & Services` -> `Haier hOn` -> _your device_ and press the _Create Data Archive_ button. Then open notifications to download the data zip archive. To attach the file: diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index fb0389e..bfe6033 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -26,7 +26,7 @@ _This button can be found in the diagnostic section of your device or in the ent Add any other context or screenshots about the feature request here. **Data Archive** -For further analysis, please add your appliance data archive here. +For further analysis, please add your appliance data archive here (if available) Navigate to `Settings` -> `Device & Services` -> `Haier hOn` -> _your device_ and press the _Create Data Archive_ button. Then open notifications to download the data zip archive. To attach the file: -- 2.39.5 From 97637ef244e90fa6a75d17f5017823970c10e33d Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Fri, 30 Jun 2023 19:36:36 +0200 Subject: [PATCH 146/205] Add light entity for lights --- custom_components/hon/const.py | 1 + custom_components/hon/fan.py | 5 +- custom_components/hon/light.py | 109 ++++++++++++++++++++++++++++++++ custom_components/hon/number.py | 12 ---- custom_components/hon/switch.py | 3 - 5 files changed, 113 insertions(+), 17 deletions(-) create mode 100644 custom_components/hon/light.py diff --git a/custom_components/hon/const.py b/custom_components/hon/const.py index 48f7fba..d43308d 100644 --- a/custom_components/hon/const.py +++ b/custom_components/hon/const.py @@ -18,6 +18,7 @@ PLATFORMS = [ "binary_sensor", "climate", "fan", + "light", ] HON_HVAC_MODE = { diff --git a/custom_components/hon/fan.py b/custom_components/hon/fan.py index f4ce402..35f3536 100644 --- a/custom_components/hon/fan.py +++ b/custom_components/hon/fan.py @@ -44,8 +44,9 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non for device in hass.data[DOMAIN][entry.unique_id].appliances: for description in FANS.get(device.appliance_type, []): if isinstance(description, HonFanEntityDescription): - if description.key not in device.available_settings or device.get( - description.key.split(".")[-1] is None + if ( + description.key not in device.available_settings + or device.get(description.key.split(".")[-1]) is None ): continue entity = HonFanEntity(hass, entry, device, description) diff --git a/custom_components/hon/light.py b/custom_components/hon/light.py new file mode 100644 index 0000000..d6be0ae --- /dev/null +++ b/custom_components/hon/light.py @@ -0,0 +1,109 @@ +import logging +from typing import Any + +from homeassistant.components.light import ( + LightEntityDescription, + LightEntity, + ColorMode, + ATTR_BRIGHTNESS, +) +from homeassistant.config_entries import ConfigEntry +from homeassistant.core import callback +from pyhon.appliance import HonAppliance +from pyhon.parameter.range import HonParameterRange + +from .const import DOMAIN +from .hon import HonEntity + +_LOGGER = logging.getLogger(__name__) + + +FANS = { + "WC": (LightEntityDescription(key="settings.lightStatus", name="Light"),), + "HO": ( + LightEntityDescription( + key="startProgram.lightStatus", + name="Light status", + ), + ), + "AP": (LightEntityDescription(key="settings.lightStatus", name="Light status"),), +} + + +async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: + entities = [] + for device in hass.data[DOMAIN][entry.unique_id].appliances: + for description in FANS.get(device.appliance_type, []): + if ( + description.key not in device.available_settings + or device.get(description.key.split(".")[-1]) is None + ): + continue + entity = HonLightEntity(hass, entry, device, description) + await entity.coordinator.async_config_entry_first_refresh() + entities.append(entity) + async_add_entities(entities) + + +class HonLightEntity(HonEntity, LightEntity): + entity_description: LightEntityDescription + + def __init__(self, hass, entry, device: HonAppliance, description) -> None: + light: HonParameterRange = device.settings.get(description.key) + self._light_range = (light.min, light.max) + self._attr_supported_color_modes: set[ColorMode] = set() + if len(light.values) == 2: + self._attr_supported_color_modes.add(ColorMode.ONOFF) + else: + self._attr_supported_color_modes.add(ColorMode.BRIGHTNESS) + self._command, self._parameter = description.key.split(".") + super().__init__(hass, entry, device, description) + self._handle_coordinator_update(update=False) + + @property + def is_on(self) -> bool: + """Return true if light is on.""" + light = self._device.settings.get(self.entity_description.key) + return light.value != light.min + + async def async_turn_on(self, **kwargs: Any) -> None: + """Turn on or control the light.""" + light: HonParameterRange = self._device.settings.get( + self.entity_description.key + ) + if ColorMode.BRIGHTNESS in self._attr_supported_color_modes: + percent = int(100 / 255 * kwargs.get(ATTR_BRIGHTNESS, 128)) + light.value = round(light.max / 100 * percent) + if light.value == light.min: + self._attr_is_on = False + self._attr_brightness = self.brightness + else: + light.value = light.max + await self._device.commands[self._command].send() + self.async_write_ha_state() + + async def async_turn_off(self, **kwargs: Any) -> None: + """Instruct the light to turn off.""" + light: HonParameterRange = self._device.settings.get( + self.entity_description.key + ) + light.value = light.min + await self._device.commands[self._command].send() + self.async_write_ha_state() + + @property + def brightness(self) -> int | None: + """Return the brightness of the light.""" + light: HonParameterRange = self._device.settings.get( + self.entity_description.key + ) + if light.value == light.min: + return None + return int(255 / light.max * light.value) + + @callback + def _handle_coordinator_update(self, update=True) -> None: + self._attr_is_on = self.is_on + self._attr_brightness = self.brightness + if update: + self.async_write_ha_state() diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index 3bbad56..60081e9 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -162,13 +162,6 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { translation_key="freezer_temp_sel", ), ), - "HO": ( - HonNumberEntityDescription( - key="startProgram.lightStatus", - name="Light status", - icon="mdi:lightbulb", - ), - ), "AP": ( HonNumberEntityDescription( key="settings.aromaTimeOn", @@ -182,11 +175,6 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { icon="mdi:thermometer", native_unit_of_measurement=UnitOfTime.SECONDS, ), - HonNumberEntityDescription( - key="settings.lightStatus", - name="Light status", - icon="mdi:lightbulb", - ), HonNumberEntityDescription( key="settings.pollenLevel", name="Pollen Level", diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index a77aacd..3b8e059 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -329,9 +329,6 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { icon="mdi:palm-tree", translation_key="holiday_mode", ), - HonSwitchEntityDescription( - key="lightStatus", name="Light", icon="mdi:lightbulb" - ), ), "AP": ( HonSwitchEntityDescription( -- 2.39.5 From e33a609d40722ffc2d7bbccc3440cbf3391f01cb Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Fri, 30 Jun 2023 19:40:30 +0200 Subject: [PATCH 147/205] Update docs --- README.md | 6 +-- custom_components/hon/light.py | 4 +- custom_components/hon/translations/cs.json | 36 ++++++++-------- custom_components/hon/translations/de.json | 28 +++++++------ custom_components/hon/translations/el.json | 36 ++++++++-------- custom_components/hon/translations/en.json | 46 +++++++++++---------- custom_components/hon/translations/es.json | 32 ++++++++------- custom_components/hon/translations/fr.json | 48 ++++++++++++---------- custom_components/hon/translations/he.json | 4 +- custom_components/hon/translations/hr.json | 40 ++++++++++-------- custom_components/hon/translations/it.json | 46 +++++++++++---------- custom_components/hon/translations/nl.json | 24 ++++++----- custom_components/hon/translations/pl.json | 28 +++++++------ custom_components/hon/translations/pt.json | 40 ++++++++++-------- custom_components/hon/translations/ro.json | 32 ++++++++------- custom_components/hon/translations/ru.json | 28 +++++++------ custom_components/hon/translations/sk.json | 28 +++++++------ custom_components/hon/translations/sl.json | 46 +++++++++++---------- custom_components/hon/translations/sr.json | 28 +++++++------ custom_components/hon/translations/tr.json | 32 ++++++++------- custom_components/hon/translations/zh.json | 34 ++++++++------- scripts/sensor_docs.py | 2 + 22 files changed, 360 insertions(+), 288 deletions(-) diff --git a/README.md b/README.md index 13215a1..844bbae 100644 --- a/README.md +++ b/README.md @@ -180,7 +180,7 @@ For every device exists a button under diagnostics which can be used to log all | Aroma Time Off | `thermometer` | `number` | `settings.aromaTimeOff` | | Aroma Time On | `thermometer` | `number` | `settings.aromaTimeOn` | | Diffuser Level | | `select` | `settings.aromaStatus` | -| Light status | `lightbulb` | `number` | `settings.lightStatus` | +| Light status | | `light` | `settings.lightStatus` | | Lock Status | | `switch` | `lockStatus` | | Mode | `run` | `select` | `settings.machMode` | | Pollen Level | | `number` | `settings.pollenLevel` | @@ -258,7 +258,7 @@ For every device exists a button under diagnostics which can be used to log all | Filter Cleaning Status | | `sensor` | `filterCleaningStatus` | | Last Work Time | `clock-start` | `sensor` | `lastWorkTime` | | Light Status | `lightbulb` | `sensor` | `lightStatus` | -| Light status | `lightbulb` | `number` | `startProgram.lightStatus` | +| Light status | | `light` | `startProgram.lightStatus` | | Mach Mode | | `sensor` | `machMode` | | On / Off Status | `lightbulb` | `sensor` | `onOffStatus` | | Quick Delay Time Status | | `sensor` | `quickDelayTimeStatus` | @@ -391,7 +391,7 @@ For every device exists a button under diagnostics which can be used to log all #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | -| Light | `lightbulb` | `switch` | `lightStatus` | +| Light | | `light` | `settings.lightStatus` | | Sabbath Mode | `palm-tree` | `switch` | `sabbathStatus` | | Wine Cellar | `thermometer` | `climate` | `settings.tempSel` | | Wine Cellar | `thermometer` | `climate` | `settings.tempSelZ2` | diff --git a/custom_components/hon/light.py b/custom_components/hon/light.py index d6be0ae..3f12647 100644 --- a/custom_components/hon/light.py +++ b/custom_components/hon/light.py @@ -18,7 +18,7 @@ from .hon import HonEntity _LOGGER = logging.getLogger(__name__) -FANS = { +LIGHTS = { "WC": (LightEntityDescription(key="settings.lightStatus", name="Light"),), "HO": ( LightEntityDescription( @@ -33,7 +33,7 @@ FANS = { async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: entities = [] for device in hass.data[DOMAIN][entry.unique_id].appliances: - for description in FANS.get(device.appliance_type, []): + for description in LIGHTS.get(device.appliance_type, []): if ( description.key not in device.available_settings or device.get(description.key.split(".")[-1]) is None diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index 2bb309f..b78c475 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -28,7 +28,7 @@ "rinse": "Máchání", "drying": "Sušení", "steam": "Pára", - "weighting": "Vážení ", + "weighting": "Vážení", "scheduled": "Naplánováno", "tumbling": "Keep Fresh", "refresh": "Osvěžení", @@ -81,7 +81,7 @@ "iot_nano_aqua": "Nano Aqua", "iot_purify": "Automatické čištění", "iot_self_clean": "Samočištění zamrazením", - "iot_self_clean_56": "Samočištění 56°C sterilizace ", + "iot_self_clean_56": "Samočištění 56°C sterilizace", "iot_simple_start": "Spustit nyní", "iot_uv": "UV", "iot_uv_and_auto": "UV + auto", @@ -97,7 +97,9 @@ "59_min": "Rychlý 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Aut. Hygienický", "auto_plus": "AutoPlus", + "auto_rapid": "Aut. Rychlý", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Auto univerzální 50 -60°C", @@ -326,7 +328,7 @@ "hqd_bulky": "Objemné kusy", "hqd_casual": "Casual", "hqd_cold_wind_30": "Chladný vánek 30 minut", - "hqd_cold_wind_timing": "Chladný vánek ", + "hqd_cold_wind_timing": "Chladný vánek", "hqd_cotton": "Bavlna", "hqd_curtain": "Záclony", "hqd_delicate": "Jemné", @@ -346,7 +348,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Rychlý 20", "hqd_quick_30": "Rychlý 30", - "hqd_quick_dry": "Rychlé sušení 30", + "hqd_quick_dry": "Rychlé sušení 30'", "hqd_quilt": "Deky", "hqd_refresh": "Osvěžení", "hqd_school_uniform": "Školní uniformy", @@ -554,7 +556,7 @@ "iot_smart_wash": "Chytré praní", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Speciální 39' + pára", - "iot_steam_hygiene_plus": "Hygiena plus pára ", + "iot_steam_hygiene_plus": "Hygiena plus pára", "iot_synthetic_and_coloured_steam": "Syntetika a barevné + pára", "iot_wash_and_dry": "Praní a sušení", "iot_wash_anti_mites": "Proti roztočům", @@ -725,7 +727,7 @@ "steam_care_pro_cotton": "Steam Care Pro – bavlna", "steam_care_pro_delicates": "Steam Care Pro – jemné", "steam_care_pro_synthetic": "Steam Care Pro – syntetika", - "steam_hygiene_plus": "Hygiena plus pára ", + "steam_hygiene_plus": "Hygiena plus pára", "synthetics": "Syntetika", "synthetic_and_coloured": "Syntetika a barevné", "synthetic_and_coloured_steam": "Syntetika a barevné + pára", @@ -881,7 +883,7 @@ "fan_mode": { "state": { "high": "Vysoký", - "mid": "Střední ", + "mid": "Střední", "low": "Nízký", "auto": "Auto" } @@ -906,7 +908,7 @@ "iot_nano_aqua": "Nano Aqua", "iot_purify": "Automatické čištění", "iot_self_clean": "Samočištění zamrazením", - "iot_self_clean_56": "Samočištění 56°C sterilizace ", + "iot_self_clean_56": "Samočištění 56°C sterilizace", "iot_simple_start": "Spustit nyní", "iot_uv": "UV", "iot_uv_and_auto": "UV + auto", @@ -922,7 +924,9 @@ "59_min": "Rychlý 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Aut. Hygienický", "auto_plus": "AutoPlus", + "auto_rapid": "Aut. Rychlý", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Auto univerzální 50 -60°C", @@ -1151,7 +1155,7 @@ "hqd_bulky": "Objemné kusy", "hqd_casual": "Casual", "hqd_cold_wind_30": "Chladný vánek 30 minut", - "hqd_cold_wind_timing": "Chladný vánek ", + "hqd_cold_wind_timing": "Chladný vánek", "hqd_cotton": "Bavlna", "hqd_curtain": "Záclony", "hqd_delicate": "Jemné", @@ -1171,7 +1175,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Rychlý 20", "hqd_quick_30": "Rychlý 30", - "hqd_quick_dry": "Rychlé sušení 30", + "hqd_quick_dry": "Rychlé sušení 30'", "hqd_quilt": "Deky", "hqd_refresh": "Osvěžení", "hqd_school_uniform": "Školní uniformy", @@ -1379,7 +1383,7 @@ "iot_smart_wash": "Chytré praní", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Speciální 39' + pára", - "iot_steam_hygiene_plus": "Hygiena plus pára ", + "iot_steam_hygiene_plus": "Hygiena plus pára", "iot_synthetic_and_coloured_steam": "Syntetika a barevné + pára", "iot_wash_and_dry": "Praní a sušení", "iot_wash_anti_mites": "Proti roztočům", @@ -1550,7 +1554,7 @@ "steam_care_pro_cotton": "Steam Care Pro – bavlna", "steam_care_pro_delicates": "Steam Care Pro – jemné", "steam_care_pro_synthetic": "Steam Care Pro – syntetika", - "steam_hygiene_plus": "Hygiena plus pára ", + "steam_hygiene_plus": "Hygiena plus pára", "synthetics": "Syntetika", "synthetic_and_coloured": "Syntetika a barevné", "synthetic_and_coloured_steam": "Syntetika a barevné + pára", @@ -1642,7 +1646,7 @@ "name": "Trouba" }, "prewash": { - "name": "Předpírka\r\r\r\r\r\r\r\n" + "name": "Předpírka" }, "pause": { "name": "Pozastavit" @@ -1666,7 +1670,7 @@ "name": "Samočištění zamrazením" }, "self_clean_56": { - "name": "Samočištění 56°C sterilizace " + "name": "Samočištění 56°C sterilizace" }, "silent_mode": { "name": "Tichý režim" @@ -1764,7 +1768,7 @@ "name": "Zapnout" }, "prewash": { - "name": "Předpírka\r\r\r\r\r\r\r\n" + "name": "Předpírka" }, "buzzer": { "name": "Zvuková signalizace konce cyklu" @@ -1856,7 +1860,7 @@ "iot_nano_aqua": "Nano Aqua", "iot_purify": "Automatické čištění", "iot_self_clean": "Samočištění zamrazením", - "iot_self_clean_56": "Samočištění 56°C sterilizace ", + "iot_self_clean_56": "Samočištění 56°C sterilizace", "iot_simple_start": "Spustit nyní", "iot_uv": "UV", "iot_uv_and_auto": "UV + auto", diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index c9a8302..e14f7ed 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -28,7 +28,7 @@ "rinse": "Spülen", "drying": "Trocknen", "steam": "Dampf", - "weighting": "Wiegen ", + "weighting": "Wiegen", "scheduled": "Geplant", "tumbling": "Auffrischen", "refresh": "Auffrischen", @@ -97,7 +97,9 @@ "59_min": "Rapid 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Auto Hygiene", "auto_plus": "AutoPlus", + "auto_rapid": "Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "AutoUniversal 50-60°C", @@ -119,7 +121,7 @@ "glass_care": "Glass Care", "hygiene": "Hygiene", "hygiene_plus": "Hygiene 75 °C", - "intensive": "Intensiv ", + "intensive": "Intensiv", "intensive_rapid": "Intensiv-Schnellspülgang", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "AutoUniversal 50-60°C", @@ -326,7 +328,7 @@ "hqd_bulky": "Schwere Textilien", "hqd_casual": "Casual", "hqd_cold_wind_30": "Kühle Brise 30 Minuten", - "hqd_cold_wind_timing": "Kühle Brise ", + "hqd_cold_wind_timing": "Kühle Brise", "hqd_cotton": "Baumwolle", "hqd_curtain": "Vorhänge", "hqd_delicate": "Feinwäsche", @@ -346,7 +348,7 @@ "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Schnell 20", "hqd_quick_30": "Schnell 30", - "hqd_quick_dry": "Schnell trocken 30", + "hqd_quick_dry": "Schnell trocken 30'", "hqd_quilt": "Steppdecken", "hqd_refresh": "Auffrischen", "hqd_school_uniform": "Schuluniform", @@ -554,7 +556,7 @@ "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Special 39' + Dampf", - "iot_steam_hygiene_plus": "Hygiene Plus Dampf ", + "iot_steam_hygiene_plus": "Hygiene Plus Dampf", "iot_synthetic_and_coloured_steam": "Synthetik und Farben + Dampf", "iot_wash_and_dry": "Waschen und trocknen", "iot_wash_anti_mites": "Milbenbekämpfung", @@ -725,7 +727,7 @@ "steam_care_pro_cotton": "Steam Care Pro - Baumwolle", "steam_care_pro_delicates": "Steam Care Pro - Feinwäsche", "steam_care_pro_synthetic": "Steam Care Pro - Synthetik", - "steam_hygiene_plus": "Hygiene Plus Dampf ", + "steam_hygiene_plus": "Hygiene Plus Dampf", "synthetics": "Synthetik", "synthetic_and_coloured": "Synthetik und Farben", "synthetic_and_coloured_steam": "Synthetik und Farben + Dampf", @@ -881,7 +883,7 @@ "fan_mode": { "state": { "high": "Hoch", - "mid": "Mittel ", + "mid": "Mittel", "low": "Niedrig", "auto": "Auto" } @@ -922,7 +924,9 @@ "59_min": "Rapid 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Auto Hygiene", "auto_plus": "AutoPlus", + "auto_rapid": "Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "AutoUniversal 50-60°C", @@ -944,7 +948,7 @@ "glass_care": "Glass Care", "hygiene": "Hygiene", "hygiene_plus": "Hygiene 75 °C", - "intensive": "Intensiv ", + "intensive": "Intensiv", "intensive_rapid": "Intensiv-Schnellspülgang", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "AutoUniversal 50-60°C", @@ -1151,7 +1155,7 @@ "hqd_bulky": "Schwere Textilien", "hqd_casual": "Casual", "hqd_cold_wind_30": "Kühle Brise 30 Minuten", - "hqd_cold_wind_timing": "Kühle Brise ", + "hqd_cold_wind_timing": "Kühle Brise", "hqd_cotton": "Baumwolle", "hqd_curtain": "Vorhänge", "hqd_delicate": "Feinwäsche", @@ -1171,7 +1175,7 @@ "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Schnell 20", "hqd_quick_30": "Schnell 30", - "hqd_quick_dry": "Schnell trocken 30", + "hqd_quick_dry": "Schnell trocken 30'", "hqd_quilt": "Steppdecken", "hqd_refresh": "Auffrischen", "hqd_school_uniform": "Schuluniform", @@ -1379,7 +1383,7 @@ "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Special 39' + Dampf", - "iot_steam_hygiene_plus": "Hygiene Plus Dampf ", + "iot_steam_hygiene_plus": "Hygiene Plus Dampf", "iot_synthetic_and_coloured_steam": "Synthetik und Farben + Dampf", "iot_wash_and_dry": "Waschen und trocknen", "iot_wash_anti_mites": "Milbenbekämpfung", @@ -1550,7 +1554,7 @@ "steam_care_pro_cotton": "Steam Care Pro - Baumwolle", "steam_care_pro_delicates": "Steam Care Pro - Feinwäsche", "steam_care_pro_synthetic": "Steam Care Pro - Synthetik", - "steam_hygiene_plus": "Hygiene Plus Dampf ", + "steam_hygiene_plus": "Hygiene Plus Dampf", "synthetics": "Synthetik", "synthetic_and_coloured": "Synthetik und Farben", "synthetic_and_coloured_steam": "Synthetik und Farben + Dampf", diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index 10c28a4..5112860 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -28,7 +28,7 @@ "rinse": "Ξέβγαλμα", "drying": "Στέγνωμα", "steam": "Ατμός", - "weighting": "Ζύγισμα ", + "weighting": "Ζύγισμα", "scheduled": "Προγραμματισμένος", "tumbling": "Κρατήστε τη φρεσκάδα", "refresh": "Φρεσκάρισμα", @@ -63,8 +63,8 @@ "state": { "no_dry": "Χωρίς στέγνωμα", "iron_dry": "Σιδέρωμα", - "no_dry_iron": "Στέγνωμα για Αποθήκευση ", - "cupboard_dry": "Στέγνωμα για Αποθήκευση ", + "no_dry_iron": "Στέγνωμα για Αποθήκευση", + "cupboard_dry": "Στέγνωμα για Αποθήκευση", "extra_dry": "Επιπλέον στέγνωμα", "ready_to_wear": "Ετοιμο να φορεθεί" }, @@ -97,7 +97,9 @@ "59_min": "Γρηγορο 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Αυτοματη Υγιεινη", "auto_plus": "AutoPlus", + "auto_rapid": "Αυτοματο Γρηγορο", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "αυτοματο Universal 50 - 60°C", @@ -119,7 +121,7 @@ "glass_care": "Glass Care", "hygiene": "Υγιεινό", "hygiene_plus": "Hygiene+ 75°C", - "intensive": "Εντατικό ", + "intensive": "Εντατικό", "intensive_rapid": "δυνατο γρηγορο", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "αυτοματο Universal 50 - 60°C", @@ -326,7 +328,7 @@ "hqd_bulky": "Ογκώδη αντικείμενα", "hqd_casual": "Καθημερινά ρούχα", "hqd_cold_wind_30": "Δροσερό αεράκι 30 λεπτά", - "hqd_cold_wind_timing": "Δροσερό αεράκι ", + "hqd_cold_wind_timing": "Δροσερό αεράκι", "hqd_cotton": "Βαμβακερό", "hqd_curtain": "Κουρτίνες", "hqd_delicate": "Ευαίσθητα", @@ -346,7 +348,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Γρήγορα 20", "hqd_quick_30": "Γρήγορα 30", - "hqd_quick_dry": "Γρήγορο στέγνωμα 30", + "hqd_quick_dry": "Γρήγορο στέγνωμα 30'", "hqd_quilt": "Παπλώματα", "hqd_refresh": "Φρεσκάρισμα", "hqd_school_uniform": "Σχολική στολή", @@ -554,7 +556,7 @@ "iot_smart_wash": "Έξυπνη πλύση", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Ειδικό 39' + Ατμός", - "iot_steam_hygiene_plus": "Ατμός για περισσότερο υγιεινό φαγητό ", + "iot_steam_hygiene_plus": "Ατμός για περισσότερο υγιεινό φαγητό", "iot_synthetic_and_coloured_steam": "Συνθετικά και χρωματιστά + Ατμός", "iot_wash_and_dry": "Πλύσιμο & στέγνωμα", "iot_wash_anti_mites": "Αντι-ακάρεα", @@ -725,7 +727,7 @@ "steam_care_pro_cotton": "Steam Care Pro - Βαμβακερά", "steam_care_pro_delicates": "Steam Care Pro - Ευαίσθητα", "steam_care_pro_synthetic": "Steam Care Pro - Συνθετικά", - "steam_hygiene_plus": "Ατμός για περισσότερο υγιεινό φαγητό ", + "steam_hygiene_plus": "Ατμός για περισσότερο υγιεινό φαγητό", "synthetics": "Συνθετικά", "synthetic_and_coloured": "Συνθετικά και χρωματιστά", "synthetic_and_coloured_steam": "Συνθετικά και χρωματιστά + Ατμός", @@ -862,8 +864,8 @@ "state": { "no_dry": "Χωρίς στέγνωμα", "iron_dry": "Σιδέρωμα", - "no_dry_iron": "Στέγνωμα για Αποθήκευση ", - "cupboard_dry": "Στέγνωμα για Αποθήκευση ", + "no_dry_iron": "Στέγνωμα για Αποθήκευση", + "cupboard_dry": "Στέγνωμα για Αποθήκευση", "extra_dry": "Επιπλέον στέγνωμα", "ready_to_wear": "Ετοιμο να φορεθεί" }, @@ -881,7 +883,7 @@ "fan_mode": { "state": { "high": "Υψηλό", - "mid": "Μέτριο ", + "mid": "Μέτριο", "low": "Χαμηλό", "auto": "Αυτόματο" } @@ -922,7 +924,9 @@ "59_min": "Γρηγορο 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Αυτοματη Υγιεινη", "auto_plus": "AutoPlus", + "auto_rapid": "Αυτοματο Γρηγορο", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "αυτοματο Universal 50 - 60°C", @@ -944,7 +948,7 @@ "glass_care": "Glass Care", "hygiene": "Υγιεινό", "hygiene_plus": "Hygiene+ 75°C", - "intensive": "Εντατικό ", + "intensive": "Εντατικό", "intensive_rapid": "δυνατο γρηγορο", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "αυτοματο Universal 50 - 60°C", @@ -1151,7 +1155,7 @@ "hqd_bulky": "Ογκώδη αντικείμενα", "hqd_casual": "Καθημερινά ρούχα", "hqd_cold_wind_30": "Δροσερό αεράκι 30 λεπτά", - "hqd_cold_wind_timing": "Δροσερό αεράκι ", + "hqd_cold_wind_timing": "Δροσερό αεράκι", "hqd_cotton": "Βαμβακερό", "hqd_curtain": "Κουρτίνες", "hqd_delicate": "Ευαίσθητα", @@ -1171,7 +1175,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Γρήγορα 20", "hqd_quick_30": "Γρήγορα 30", - "hqd_quick_dry": "Γρήγορο στέγνωμα 30", + "hqd_quick_dry": "Γρήγορο στέγνωμα 30'", "hqd_quilt": "Παπλώματα", "hqd_refresh": "Φρεσκάρισμα", "hqd_school_uniform": "Σχολική στολή", @@ -1379,7 +1383,7 @@ "iot_smart_wash": "Έξυπνη πλύση", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Ειδικό 39' + Ατμός", - "iot_steam_hygiene_plus": "Ατμός για περισσότερο υγιεινό φαγητό ", + "iot_steam_hygiene_plus": "Ατμός για περισσότερο υγιεινό φαγητό", "iot_synthetic_and_coloured_steam": "Συνθετικά και χρωματιστά + Ατμός", "iot_wash_and_dry": "Πλύσιμο & στέγνωμα", "iot_wash_anti_mites": "Αντι-ακάρεα", @@ -1550,7 +1554,7 @@ "steam_care_pro_cotton": "Steam Care Pro - Βαμβακερά", "steam_care_pro_delicates": "Steam Care Pro - Ευαίσθητα", "steam_care_pro_synthetic": "Steam Care Pro - Συνθετικά", - "steam_hygiene_plus": "Ατμός για περισσότερο υγιεινό φαγητό ", + "steam_hygiene_plus": "Ατμός για περισσότερο υγιεινό φαγητό", "synthetics": "Συνθετικά", "synthetic_and_coloured": "Συνθετικά και χρωματιστά", "synthetic_and_coloured_steam": "Συνθετικά και χρωματιστά + Ατμός", diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 20bbfaa..65cd887 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -36,7 +36,7 @@ "rinse": "Rinse", "drying": "Drying", "steam": "Steam", - "weighting": "Weighing ", + "weighting": "Weighing", "scheduled": "Scheduled", "tumbling": "Keep Fresh", "refresh": "Refresh", @@ -131,7 +131,7 @@ "glass_care": "Glass Care", "hygiene": "Hygiene", "hygiene_plus": "Hygiene+ 75°C", - "intensive": "Intensive ", + "intensive": "Intensive", "intensive_rapid": "Intensive Rapid", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "Auto Universal 50 - 60°C", @@ -164,7 +164,7 @@ "iot_porcelain": "Porcelain", "iot_power_mix_wash": "Power Mix Wash", "iot_power_mix_wash_soil": "Power Mix Wash", - "iot_prewash": "Pre-wash ", + "iot_prewash": "Pre-wash", "iot_pyrex_and_glassware": "Pyrex & Glassware", "iot_rapid_29": "Rapid 29'", "iot_rapid_39": "Rapid 39' 60°C", @@ -178,7 +178,7 @@ "iot_wok_grids_maxi_pans_soil": "Special Pans (Wok, Grids & Maxi Pans)", "iot_yes_quick_cycle": "Yes Quick", "night": "Night 55°C", - "prewash": "Pre-wash ", + "prewash": "Pre-wash", "rapid_20": "Rapid 20'", "rapid_24": "Rapid 24'", "rapid_29": "Rapid 29' 50°C", @@ -341,7 +341,7 @@ "hqd_bulky": "Bulky Items", "hqd_casual": "Casual", "hqd_cold_wind_30": "Cool Breeze 30m", - "hqd_cold_wind_timing": "Cool Breeze ", + "hqd_cold_wind_timing": "Cool Breeze", "hqd_cotton": "Cotton", "hqd_curtain": "Curtains", "hqd_delicate": "Delicates", @@ -360,8 +360,8 @@ "hqd_outdoor": "Outdoor", "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Quick 20m", - "hqd_quick_30": "Quick 30m", - "hqd_quick_dry": "Quick dry (30 min)", + "hqd_quick_30": "Quick 30'", + "hqd_quick_dry": "Quick dry 30'", "hqd_quilt": "Quilts", "hqd_refresh": "Refresh", "hqd_school_uniform": "School Uniform", @@ -399,7 +399,7 @@ "iot_dry_lingerie": "Lingerie", "iot_dry_mixed": "Mixed", "iot_dry_playsuits": "Playsuits", - "iot_dry_rapid_30": "Rapid 30m", + "iot_dry_rapid_30": "Rapid 30'", "iot_dry_rapid_59": "Rapid 59'", "iot_dry_refresh": "Refresh", "iot_dry_regenerates_waterproof": "Regenerates Waterproof", @@ -458,7 +458,7 @@ "all_in_one_59": "All in One 59'", "all_in_one_59_steam": "All in One 59' + Vapore", "autocare": "Autocare", - "autoclean": "Drum cleaning and descaling ", + "autoclean": "Drum cleaning and descaling", "baby_60": "All Baby 60°C", "care_14": "Rapid Care 14'", "care_30": "Rapid Care 30'", @@ -538,7 +538,7 @@ "iot_dry_cuddly_toys": "Cuddly Toys", "iot_dry_curtains": "Curtains", "iot_dry_dehumidifier": "Humidity Remover", - "iot_dry_delicates_antiallergy": "Delicates Anti-allergy", + "iot_dry_delicates_antiallergy": "DelicatesAnti-allergy", "iot_dry_delicate_tablecloths": "Delicate Tablecloths", "iot_dry_denim_jeans": "Denim - Jeans", "iot_dry_easy_iron_cotton": "Easy Iron - Cotton", @@ -699,6 +699,7 @@ "iot_wash_wool": "Wool", "jeans": "Jeans", "jeans_60": "Jeans", + "jeans_60_steam": "Jeans + Steam", "low_dry": "Low Heat Dry", "mixed": "Mixed", "mixed_and_colored_59": "Mixed and Colored 59'", @@ -902,7 +903,7 @@ "fan_mode": { "state": { "high": "High", - "mid": "Medium ", + "mid": "Medium", "low": "Low", "auto": "Auto" } @@ -969,7 +970,7 @@ "glass_care": "Glass Care", "hygiene": "Hygiene", "hygiene_plus": "Hygiene+ 75°C", - "intensive": "Intensive ", + "intensive": "Intensive", "intensive_rapid": "Intensive Rapid", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "Auto Universal 50 - 60°C", @@ -1002,7 +1003,7 @@ "iot_porcelain": "Porcelain", "iot_power_mix_wash": "Power Mix Wash", "iot_power_mix_wash_soil": "Power Mix Wash", - "iot_prewash": "Pre-wash ", + "iot_prewash": "Pre-wash", "iot_pyrex_and_glassware": "Pyrex & Glassware", "iot_rapid_29": "Rapid 29'", "iot_rapid_39": "Rapid 39' 60°C", @@ -1016,7 +1017,7 @@ "iot_wok_grids_maxi_pans_soil": "Special Pans (Wok, Grids & Maxi Pans)", "iot_yes_quick_cycle": "Yes Quick", "night": "Night 55°C", - "prewash": "Pre-wash ", + "prewash": "Pre-wash", "rapid_20": "Rapid 20'", "rapid_24": "Rapid 24'", "rapid_29": "Rapid 29' 50°C", @@ -1179,7 +1180,7 @@ "hqd_bulky": "Bulky Items", "hqd_casual": "Casual", "hqd_cold_wind_30": "Cool Breeze 30m", - "hqd_cold_wind_timing": "Cool Breeze ", + "hqd_cold_wind_timing": "Cool Breeze", "hqd_cotton": "Cotton", "hqd_curtain": "Curtains", "hqd_delicate": "Delicates", @@ -1198,8 +1199,8 @@ "hqd_outdoor": "Outdoor", "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Quick 20m", - "hqd_quick_30": "Quick 30m", - "hqd_quick_dry": "Quick dry (30 min)", + "hqd_quick_30": "Quick 30'", + "hqd_quick_dry": "Quick dry 30'", "hqd_quilt": "Quilts", "hqd_refresh": "Refresh", "hqd_school_uniform": "School Uniform", @@ -1237,7 +1238,7 @@ "iot_dry_lingerie": "Lingerie", "iot_dry_mixed": "Mixed", "iot_dry_playsuits": "Playsuits", - "iot_dry_rapid_30": "Rapid 30m", + "iot_dry_rapid_30": "Rapid 30'", "iot_dry_rapid_59": "Rapid 59'", "iot_dry_refresh": "Refresh", "iot_dry_regenerates_waterproof": "Regenerates Waterproof", @@ -1296,7 +1297,7 @@ "all_in_one_59": "All in One 59'", "all_in_one_59_steam": "All in One 59' + Vapore", "autocare": "Autocare", - "autoclean": "Drum cleaning and descaling ", + "autoclean": "Drum cleaning and descaling", "baby_60": "All Baby 60°C", "care_14": "Rapid Care 14'", "care_30": "Rapid Care 30'", @@ -1376,7 +1377,7 @@ "iot_dry_cuddly_toys": "Cuddly Toys", "iot_dry_curtains": "Curtains", "iot_dry_dehumidifier": "Humidity Remover", - "iot_dry_delicates_antiallergy": "Delicates Anti-allergy", + "iot_dry_delicates_antiallergy": "DelicatesAnti-allergy", "iot_dry_delicate_tablecloths": "Delicate Tablecloths", "iot_dry_denim_jeans": "Denim - Jeans", "iot_dry_easy_iron_cotton": "Easy Iron - Cotton", @@ -1537,6 +1538,7 @@ "iot_wash_wool": "Wool", "jeans": "Jeans", "jeans_60": "Jeans", + "jeans_60_steam": "Jeans + Steam", "low_dry": "Low Heat Dry", "mixed": "Mixed", "mixed_and_colored_59": "Mixed and Colored 59'", @@ -1671,7 +1673,7 @@ "name": "Oven" }, "prewash": { - "name": "Pre-wash " + "name": "Pre-wash" }, "pause": { "name": "Pause" @@ -1793,7 +1795,7 @@ "name": "On" }, "prewash": { - "name": "Pre-wash " + "name": "Pre-wash" }, "buzzer": { "name": "Cycle end chime" diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index 12579ac..6930167 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -28,7 +28,7 @@ "rinse": "Aclarado", "drying": "Secado", "steam": "Vapor", - "weighting": "Peso ", + "weighting": "Peso", "scheduled": "Programado", "tumbling": "Ropa fresca", "refresh": "Refrescar", @@ -97,7 +97,9 @@ "59_min": "Rápido 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Auto Hygiene", "auto_plus": "AutoPlus", + "auto_rapid": "Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Auto Universal 50 - 60°C", @@ -119,7 +121,7 @@ "glass_care": "Glass Care", "hygiene": "Higiene", "hygiene_plus": "Higiene+ 75 °C", - "intensive": "Intensivo ", + "intensive": "Intensivo", "intensive_rapid": "Fuerte rápido", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "Auto Universal 50 - 60°C", @@ -326,7 +328,7 @@ "hqd_bulky": "Objetos voluminosos", "hqd_casual": "Casual", "hqd_cold_wind_30": "Brisa fresca 30 minutos", - "hqd_cold_wind_timing": "Brisa fresca ", + "hqd_cold_wind_timing": "Brisa fresca", "hqd_cotton": "Algodón", "hqd_curtain": "Cortinas", "hqd_delicate": "Ropa delicada", @@ -346,7 +348,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Rápido 20", "hqd_quick_30": "Rápido 30", - "hqd_quick_dry": "Secado rápido 30", + "hqd_quick_dry": "Secado rápido 30'", "hqd_quilt": "Colchas", "hqd_refresh": "Refrescar", "hqd_school_uniform": "Uniformes escolares", @@ -554,7 +556,7 @@ "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Especial 39' + Vapor", - "iot_steam_hygiene_plus": "Vapor higiene extra ", + "iot_steam_hygiene_plus": "Vapor higiene extra", "iot_synthetic_and_coloured_steam": "Ropa sintética y de color + Vapor", "iot_wash_and_dry": "Lavar y secar", "iot_wash_anti_mites": "Antiácaros", @@ -630,7 +632,7 @@ "iot_wash_masks_sanification": "Desinfección de mascarillas", "iot_wash_masks_sanification_steam": "Desinfección de mascarillas + Vapor", "iot_wash_mats": "Alfombras", - "iot_wash_men_s_trousers": "Pantalones ", + "iot_wash_men_s_trousers": "Pantalones", "iot_wash_mixed": "Ropa mixta", "iot_wash_mixed_steam": "Ropa mixta + Vapor", "iot_wash_mix_and_coloured_44": "Mixta y de color 44’", @@ -725,7 +727,7 @@ "steam_care_pro_cotton": "Steam Care Pro - Algodón", "steam_care_pro_delicates": "Steam Care Pro - Delicados", "steam_care_pro_synthetic": "Steam Care Pro - Sintéticos", - "steam_hygiene_plus": "Vapor higiene extra ", + "steam_hygiene_plus": "Vapor higiene extra", "synthetics": "Ropa sintética", "synthetic_and_coloured": "Ropa sintética y de color", "synthetic_and_coloured_steam": "Ropa sintética y de color + Vapor", @@ -881,7 +883,7 @@ "fan_mode": { "state": { "high": "Alta", - "mid": "Media ", + "mid": "Media", "low": "Baja", "auto": "Automático" } @@ -922,7 +924,9 @@ "59_min": "Rápido 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Auto Hygiene", "auto_plus": "AutoPlus", + "auto_rapid": "Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Auto Universal 50 - 60°C", @@ -944,7 +948,7 @@ "glass_care": "Glass Care", "hygiene": "Higiene", "hygiene_plus": "Higiene+ 75 °C", - "intensive": "Intensivo ", + "intensive": "Intensivo", "intensive_rapid": "Fuerte rápido", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "Auto Universal 50 - 60°C", @@ -1151,7 +1155,7 @@ "hqd_bulky": "Objetos voluminosos", "hqd_casual": "Casual", "hqd_cold_wind_30": "Brisa fresca 30 minutos", - "hqd_cold_wind_timing": "Brisa fresca ", + "hqd_cold_wind_timing": "Brisa fresca", "hqd_cotton": "Algodón", "hqd_curtain": "Cortinas", "hqd_delicate": "Ropa delicada", @@ -1171,7 +1175,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Rápido 20", "hqd_quick_30": "Rápido 30", - "hqd_quick_dry": "Secado rápido 30", + "hqd_quick_dry": "Secado rápido 30'", "hqd_quilt": "Colchas", "hqd_refresh": "Refrescar", "hqd_school_uniform": "Uniformes escolares", @@ -1379,7 +1383,7 @@ "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Especial 39' + Vapor", - "iot_steam_hygiene_plus": "Vapor higiene extra ", + "iot_steam_hygiene_plus": "Vapor higiene extra", "iot_synthetic_and_coloured_steam": "Ropa sintética y de color + Vapor", "iot_wash_and_dry": "Lavar y secar", "iot_wash_anti_mites": "Antiácaros", @@ -1455,7 +1459,7 @@ "iot_wash_masks_sanification": "Desinfección de mascarillas", "iot_wash_masks_sanification_steam": "Desinfección de mascarillas + Vapor", "iot_wash_mats": "Alfombras", - "iot_wash_men_s_trousers": "Pantalones ", + "iot_wash_men_s_trousers": "Pantalones", "iot_wash_mixed": "Ropa mixta", "iot_wash_mixed_steam": "Ropa mixta + Vapor", "iot_wash_mix_and_coloured_44": "Mixta y de color 44’", @@ -1550,7 +1554,7 @@ "steam_care_pro_cotton": "Steam Care Pro - Algodón", "steam_care_pro_delicates": "Steam Care Pro - Delicados", "steam_care_pro_synthetic": "Steam Care Pro - Sintéticos", - "steam_hygiene_plus": "Vapor higiene extra ", + "steam_hygiene_plus": "Vapor higiene extra", "synthetics": "Ropa sintética", "synthetic_and_coloured": "Ropa sintética y de color", "synthetic_and_coloured_steam": "Ropa sintética y de color + Vapor", diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index 97024e1..b594498 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -28,7 +28,7 @@ "rinse": "Rinçage", "drying": "Séchage", "steam": "Vapeur d'eau", - "weighting": "Calcul du poids ", + "weighting": "Calcul du poids", "scheduled": "Planifié", "tumbling": "Keep Fresh", "refresh": "Rafraîchissement", @@ -97,7 +97,9 @@ "59_min": "Rapide 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Auto Hygiène", "auto_plus": "AutoPlus", + "auto_rapid": "Auto Rapide", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Auto universel 50 - 60°C", @@ -119,7 +121,7 @@ "glass_care": "Glass Care", "hygiene": "Hygiène", "hygiene_plus": "Hygiène 75 °C", - "intensive": "Intensif ", + "intensive": "Intensif", "intensive_rapid": "Intensif rapide", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "Auto universel 50 - 60°C", @@ -326,7 +328,7 @@ "hqd_bulky": "Articles volumineux", "hqd_casual": "Journalier", "hqd_cold_wind_30": "Brise rafraîchissante 30 minutes", - "hqd_cold_wind_timing": "Brise rafraîchissante ", + "hqd_cold_wind_timing": "Brise rafraîchissante", "hqd_cotton": "Coton", "hqd_curtain": "Rideaux", "hqd_delicate": "Délicats", @@ -346,7 +348,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Rapide 20’", "hqd_quick_30": "Rapide 30’", - "hqd_quick_dry": "Séchage rapide 30", + "hqd_quick_dry": "Séchage rapide 30'", "hqd_quilt": "Couvertures", "hqd_refresh": "Rafraîchissement", "hqd_school_uniform": "Uniforme scolaire", @@ -372,7 +374,7 @@ "iot_dry_cotton": "Coton", "iot_dry_cuddly_toys": "Jouets en peluche", "iot_dry_curtains": "Rideaux", - "iot_dry_dehumidifier": "Élimination de l\\'humidité", + "iot_dry_dehumidifier": "Élimination de l'humidité", "iot_dry_delicates": "Délicats", "iot_dry_delicate_tablecloths": "Nappes délicates", "iot_dry_denim_jeans": "Denim - jeans", @@ -386,7 +388,7 @@ "iot_dry_playsuits": "Combinaisons", "iot_dry_rapid_30": "Rapid 30", "iot_dry_rapid_59": "Rapide 59'.", - "iot_dry_refresh": "Coup d\\'éclat", + "iot_dry_refresh": "Coup d'éclat", "iot_dry_regenerates_waterproof": "Imperméabilisant", "iot_dry_relax_creases": "Anti-plis", "iot_dry_shirts": "Chemises", @@ -488,7 +490,7 @@ "hqd_quick_15": "Rapide 15'", "hqd_quick_wash_57": "Lavage rapide 57 min", "hqd_rapid_wash_and_dry": "Lavage et séchage", - "hqd_refresh": "Coup d\\'éclat", + "hqd_refresh": "Coup d'éclat", "hqd_rinse": "Rinçage", "hqd_shirts": "Chemises", "hqd_smart": "Smart A.I.", @@ -522,7 +524,7 @@ "iot_dry_cotton_dry": "Séchage du coton", "iot_dry_cuddly_toys": "Animaux en peluche", "iot_dry_curtains": "Rideaux", - "iot_dry_dehumidifier": "Élimination de l\\'humidité", + "iot_dry_dehumidifier": "Élimination de l'humidité", "iot_dry_delicates_antiallergy": "Délicat - anti-allergique", "iot_dry_delicate_tablecloths": "Nappes délicates", "iot_dry_denim_jeans": "Denim - Jeans", @@ -554,7 +556,7 @@ "iot_smart_wash": "Lavage intelligent", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Spécial 39’ + vapeur", - "iot_steam_hygiene_plus": "Vapeur Hygiène Plus ", + "iot_steam_hygiene_plus": "Vapeur Hygiène Plus", "iot_synthetic_and_coloured_steam": "Synthétiques et couleurs + vapeur", "iot_wash_and_dry": "Lavage et séchage", "iot_wash_anti_mites": "Anti-acarien", @@ -630,7 +632,7 @@ "iot_wash_masks_sanification": "Désinfection des masques", "iot_wash_masks_sanification_steam": "Désinfection des masques + Vapeur d'eau", "iot_wash_mats": "Tapis", - "iot_wash_men_s_trousers": "Pantalons ", + "iot_wash_men_s_trousers": "Pantalons", "iot_wash_mixed": "Tissus mélangés", "iot_wash_mixed_steam": "Tissus mélangés + Vapeur d'eau", "iot_wash_mix_and_coloured_44": "Tissus mélangés et colorés 44'", @@ -725,7 +727,7 @@ "steam_care_pro_cotton": "Steam Care Pro - Coton", "steam_care_pro_delicates": "Steam Care Pro - Délicats", "steam_care_pro_synthetic": "Steam Care Pro - Synthétiques", - "steam_hygiene_plus": "Vapeur Hygiène Plus ", + "steam_hygiene_plus": "Vapeur Hygiène Plus", "synthetics": "Synthétiques", "synthetic_and_coloured": "Synthétiques et couleurs", "synthetic_and_coloured_steam": "Synthétiques et couleurs + vapeur", @@ -881,7 +883,7 @@ "fan_mode": { "state": { "high": "Élevé", - "mid": "Intermédiaire ", + "mid": "Intermédiaire", "low": "Faible", "auto": "Automatique" } @@ -922,7 +924,9 @@ "59_min": "Rapide 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Auto Hygiène", "auto_plus": "AutoPlus", + "auto_rapid": "Auto Rapide", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Auto universel 50 - 60°C", @@ -944,7 +948,7 @@ "glass_care": "Glass Care", "hygiene": "Hygiène", "hygiene_plus": "Hygiène 75 °C", - "intensive": "Intensif ", + "intensive": "Intensif", "intensive_rapid": "Intensif rapide", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "Auto universel 50 - 60°C", @@ -1151,7 +1155,7 @@ "hqd_bulky": "Articles volumineux", "hqd_casual": "Journalier", "hqd_cold_wind_30": "Brise rafraîchissante 30 minutes", - "hqd_cold_wind_timing": "Brise rafraîchissante ", + "hqd_cold_wind_timing": "Brise rafraîchissante", "hqd_cotton": "Coton", "hqd_curtain": "Rideaux", "hqd_delicate": "Délicats", @@ -1171,7 +1175,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Rapide 20’", "hqd_quick_30": "Rapide 30’", - "hqd_quick_dry": "Séchage rapide 30", + "hqd_quick_dry": "Séchage rapide 30'", "hqd_quilt": "Couvertures", "hqd_refresh": "Rafraîchissement", "hqd_school_uniform": "Uniforme scolaire", @@ -1197,7 +1201,7 @@ "iot_dry_cotton": "Coton", "iot_dry_cuddly_toys": "Jouets en peluche", "iot_dry_curtains": "Rideaux", - "iot_dry_dehumidifier": "Élimination de l\\'humidité", + "iot_dry_dehumidifier": "Élimination de l'humidité", "iot_dry_delicates": "Délicats", "iot_dry_delicate_tablecloths": "Nappes délicates", "iot_dry_denim_jeans": "Denim - jeans", @@ -1211,7 +1215,7 @@ "iot_dry_playsuits": "Combinaisons", "iot_dry_rapid_30": "Rapid 30", "iot_dry_rapid_59": "Rapide 59'.", - "iot_dry_refresh": "Coup d\\'éclat", + "iot_dry_refresh": "Coup d'éclat", "iot_dry_regenerates_waterproof": "Imperméabilisant", "iot_dry_relax_creases": "Anti-plis", "iot_dry_shirts": "Chemises", @@ -1313,7 +1317,7 @@ "hqd_quick_15": "Rapide 15'", "hqd_quick_wash_57": "Lavage rapide 57 min", "hqd_rapid_wash_and_dry": "Lavage et séchage", - "hqd_refresh": "Coup d\\'éclat", + "hqd_refresh": "Coup d'éclat", "hqd_rinse": "Rinçage", "hqd_shirts": "Chemises", "hqd_smart": "Smart A.I.", @@ -1347,7 +1351,7 @@ "iot_dry_cotton_dry": "Séchage du coton", "iot_dry_cuddly_toys": "Animaux en peluche", "iot_dry_curtains": "Rideaux", - "iot_dry_dehumidifier": "Élimination de l\\'humidité", + "iot_dry_dehumidifier": "Élimination de l'humidité", "iot_dry_delicates_antiallergy": "Délicat - anti-allergique", "iot_dry_delicate_tablecloths": "Nappes délicates", "iot_dry_denim_jeans": "Denim - Jeans", @@ -1379,7 +1383,7 @@ "iot_smart_wash": "Lavage intelligent", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Spécial 39’ + vapeur", - "iot_steam_hygiene_plus": "Vapeur Hygiène Plus ", + "iot_steam_hygiene_plus": "Vapeur Hygiène Plus", "iot_synthetic_and_coloured_steam": "Synthétiques et couleurs + vapeur", "iot_wash_and_dry": "Lavage et séchage", "iot_wash_anti_mites": "Anti-acarien", @@ -1455,7 +1459,7 @@ "iot_wash_masks_sanification": "Désinfection des masques", "iot_wash_masks_sanification_steam": "Désinfection des masques + Vapeur d'eau", "iot_wash_mats": "Tapis", - "iot_wash_men_s_trousers": "Pantalons ", + "iot_wash_men_s_trousers": "Pantalons", "iot_wash_mixed": "Tissus mélangés", "iot_wash_mixed_steam": "Tissus mélangés + Vapeur d'eau", "iot_wash_mix_and_coloured_44": "Tissus mélangés et colorés 44'", @@ -1550,7 +1554,7 @@ "steam_care_pro_cotton": "Steam Care Pro - Coton", "steam_care_pro_delicates": "Steam Care Pro - Délicats", "steam_care_pro_synthetic": "Steam Care Pro - Synthétiques", - "steam_hygiene_plus": "Vapeur Hygiène Plus ", + "steam_hygiene_plus": "Vapeur Hygiène Plus", "synthetics": "Synthétiques", "synthetic_and_coloured": "Synthétiques et couleurs", "synthetic_and_coloured_steam": "Synthétiques et couleurs + vapeur", diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index ee08a39..6ecbb49 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -28,7 +28,7 @@ "rinse": "לִשְׁטוֹף", "drying": "יִבּוּשׁ", "steam": "קִיטוֹר", - "weighting": "Weighing ", + "weighting": "Weighing", "scheduled": "מתוזמן", "tumbling": "שמור על טריות", "refresh": "Refresh", @@ -439,7 +439,7 @@ "fan_mode": { "state": { "high": "High", - "mid": "Medium ", + "mid": "Medium", "low": "Low", "auto": "Auto" } diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index 4fe7c1d..39814c9 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -28,7 +28,7 @@ "rinse": "Ispiranje", "drying": "Sušenje", "steam": "Para", - "weighting": "Mjerenje težine ", + "weighting": "Mjerenje težine", "scheduled": "Zakazano", "tumbling": "Održavanje svježine", "refresh": "Protiv neugodnih mirisa", @@ -97,7 +97,9 @@ "59_min": "Brzi 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Automatska Higijena", "auto_plus": "AutoPlus", + "auto_rapid": "Automatski Brzi", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Automatski univerzalni 50 - 60°C", @@ -119,7 +121,7 @@ "glass_care": "Glass Care", "hygiene": "Hygiene", "hygiene_plus": "Hygiene+ (Higijena+) 75 °C", - "intensive": "Intenzivno ", + "intensive": "Intenzivno", "intensive_rapid": "Snažan i brz", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "Automatski univerzalni 50 - 60°C", @@ -326,7 +328,7 @@ "hqd_bulky": "Glomazni komadi", "hqd_casual": "Opušteno", "hqd_cold_wind_30": "Hladni zrak, 30 minuta", - "hqd_cold_wind_timing": "Hladni zrak ", + "hqd_cold_wind_timing": "Hladni zrak", "hqd_cotton": "Pamuk", "hqd_curtain": "Zavjese", "hqd_delicate": "Osjetljivo rublje", @@ -346,7 +348,7 @@ "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Brzo 20", "hqd_quick_30": "Brzo 30", - "hqd_quick_dry": "Brzo sušenje 30", + "hqd_quick_dry": "Brzo sušenje 30'", "hqd_quilt": "Popluni", "hqd_refresh": "Protiv neugodnih mirisa", "hqd_school_uniform": "Školska uniforma", @@ -554,7 +556,7 @@ "iot_smart_wash": "Pametno pranje", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Posebna 39' + para", - "iot_steam_hygiene_plus": "Hygiene Plus Steam ", + "iot_steam_hygiene_plus": "Hygiene Plus Steam", "iot_synthetic_and_coloured_steam": "Sintetika i šareno rublje + para", "iot_wash_and_dry": "Pranje & sušenje", "iot_wash_anti_mites": "Protiv grinja", @@ -725,7 +727,7 @@ "steam_care_pro_cotton": "Steam Care Pro - pamuk", "steam_care_pro_delicates": "Steam Care Pro - osjetljivo", "steam_care_pro_synthetic": "Steam Care Pro - sintetika", - "steam_hygiene_plus": "Hygiene Plus Steam ", + "steam_hygiene_plus": "Hygiene Plus Steam", "synthetics": "Sintetika", "synthetic_and_coloured": "Sintetika i šareno rublje", "synthetic_and_coloured_steam": "Sintetika i šareno rublje + para", @@ -881,7 +883,7 @@ "fan_mode": { "state": { "high": "Visoko", - "mid": "Srednje ", + "mid": "Srednje", "low": "Nisko", "auto": "Automatski" } @@ -922,7 +924,9 @@ "59_min": "Brzi 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Automatska Higijena", "auto_plus": "AutoPlus", + "auto_rapid": "Automatski Brzi", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Automatski univerzalni 50 - 60°C", @@ -944,7 +948,7 @@ "glass_care": "Glass Care", "hygiene": "Hygiene", "hygiene_plus": "Hygiene+ (Higijena+) 75 °C", - "intensive": "Intenzivno ", + "intensive": "Intenzivno", "intensive_rapid": "Snažan i brz", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "Automatski univerzalni 50 - 60°C", @@ -1151,7 +1155,7 @@ "hqd_bulky": "Glomazni komadi", "hqd_casual": "Opušteno", "hqd_cold_wind_30": "Hladni zrak, 30 minuta", - "hqd_cold_wind_timing": "Hladni zrak ", + "hqd_cold_wind_timing": "Hladni zrak", "hqd_cotton": "Pamuk", "hqd_curtain": "Zavjese", "hqd_delicate": "Osjetljivo rublje", @@ -1171,7 +1175,7 @@ "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Brzo 20", "hqd_quick_30": "Brzo 30", - "hqd_quick_dry": "Brzo sušenje 30", + "hqd_quick_dry": "Brzo sušenje 30'", "hqd_quilt": "Popluni", "hqd_refresh": "Protiv neugodnih mirisa", "hqd_school_uniform": "Školska uniforma", @@ -1379,7 +1383,7 @@ "iot_smart_wash": "Pametno pranje", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Posebna 39' + para", - "iot_steam_hygiene_plus": "Hygiene Plus Steam ", + "iot_steam_hygiene_plus": "Hygiene Plus Steam", "iot_synthetic_and_coloured_steam": "Sintetika i šareno rublje + para", "iot_wash_and_dry": "Pranje & sušenje", "iot_wash_anti_mites": "Protiv grinja", @@ -1550,7 +1554,7 @@ "steam_care_pro_cotton": "Steam Care Pro - pamuk", "steam_care_pro_delicates": "Steam Care Pro - osjetljivo", "steam_care_pro_synthetic": "Steam Care Pro - sintetika", - "steam_hygiene_plus": "Hygiene Plus Steam ", + "steam_hygiene_plus": "Hygiene Plus Steam", "synthetics": "Sintetika", "synthetic_and_coloured": "Sintetika i šareno rublje", "synthetic_and_coloured_steam": "Sintetika i šareno rublje + para", @@ -1675,13 +1679,13 @@ "name": "Bešumni način rada" }, "extra_rinse_1": { - "name": "+1 ispiranje " + "name": "+1 ispiranje" }, "extra_rinse_2": { - "name": "+2 ispiranja " + "name": "+2 ispiranja" }, "extra_rinse_3": { - "name": "+3 ispiranja " + "name": "+3 ispiranja" }, "acqua_plus": { "name": "Aquaplus" @@ -1716,13 +1720,13 @@ "name": "Brava na vratima" }, "extra_rinse_1": { - "name": "+1 ispiranje " + "name": "+1 ispiranje" }, "extra_rinse_2": { - "name": "+2 ispiranja " + "name": "+2 ispiranja" }, "extra_rinse_3": { - "name": "+3 ispiranja " + "name": "+3 ispiranja" }, "good_night": { "name": "Good Night" diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index 2ca238f..546b945 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -55,7 +55,7 @@ "washing": "Lavaggio", "rinse": "Risciacqui", "drying": "Asciugatura", - "hot_rinse": "Risciacquo caldo " + "hot_rinse": "Risciacquo caldo" }, "name": "Fase" }, @@ -72,7 +72,7 @@ }, "programs_ac": { "state": { - "iot_10_heating": "Funzione 10°C Heating ", + "iot_10_heating": "Funzione 10°C Heating", "iot_auto": "Auto", "iot_cool": "Freddo", "iot_dry": "Deumidificazione", @@ -97,7 +97,9 @@ "59_min": "Rapido 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Auto Igiene", "auto_plus": "AutoPlus", + "auto_rapid": "Auto Rapido", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Auto Universale 50 - 60°C", @@ -119,7 +121,7 @@ "glass_care": "Glass Care", "hygiene": "Igiene", "hygiene_plus": "Igiene 75°C", - "intensive": "Intensivo ", + "intensive": "Intensivo", "intensive_rapid": "Forte Veloce", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "Auto Universale 50 - 60°C", @@ -345,8 +347,8 @@ "hqd_outdoor": "Outdoor", "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Rapido 20m", - "hqd_quick_30": "Rapido 30m", - "hqd_quick_dry": "Asciugatura veloce (30 min)", + "hqd_quick_30": "Rapido 30'", + "hqd_quick_dry": "Asciugatura veloce 30'", "hqd_quilt": "Trapunte", "hqd_refresh": "Refresh", "hqd_school_uniform": "Uniforme scolastica", @@ -384,7 +386,7 @@ "iot_dry_lingerie": "Lingerie", "iot_dry_mixed": "Misti", "iot_dry_playsuits": "Tutine", - "iot_dry_rapid_30": "Rapido 30m", + "iot_dry_rapid_30": "Rapido 30'", "iot_dry_rapid_59": "Rapido 59'.", "iot_dry_refresh": "Rinfresca", "iot_dry_regenerates_waterproof": "Rigenera Tessuti Impermeabili", @@ -630,7 +632,7 @@ "iot_wash_masks_sanification": "Sanificazione Mascherine", "iot_wash_masks_sanification_steam": "Sanificazione Mascherine + Vapore", "iot_wash_mats": "Tappetini", - "iot_wash_men_s_trousers": "Pantaloni ", + "iot_wash_men_s_trousers": "Pantaloni", "iot_wash_mixed": "Misti", "iot_wash_mixed_steam": "Misti + Vapore", "iot_wash_mix_and_coloured_44": "Misti e colorati 44'", @@ -676,7 +678,7 @@ "iot_wash_technical_jackets": "Giacconi Tecnici", "iot_wash_technical_jackets_zelig": "Giacconi Tecnici", "iot_wash_trainers": "Scarpe da ginnastica", - "iot_wash_whites": "Bianchi ", + "iot_wash_whites": "Bianchi", "iot_wash_whites_44": "Bianchi 44'", "iot_wash_whites_59": "Bianchi 59'", "iot_wash_whites_xl": "Bianchi XL", @@ -753,7 +755,7 @@ "holiday": "HOLIDAY", "keep_fresh": "0° Fresh", "no_mode_selected": "Nessuna modalità selezionata", - "quick_cool": " QUICK COOL", + "quick_cool": "QUICK COOL", "sea_food": "Ready to cook meal", "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", @@ -902,7 +904,7 @@ }, "programs_ac": { "state": { - "iot_10_heating": "Funzione 10°C Heating ", + "iot_10_heating": "Funzione 10°C Heating", "iot_auto": "Auto", "iot_cool": "Freddo", "iot_dry": "Deumidificazione", @@ -927,7 +929,9 @@ "59_min": "Rapido 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Auto Igiene", "auto_plus": "AutoPlus", + "auto_rapid": "Auto Rapido", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Auto Universale 50 - 60°C", @@ -949,7 +953,7 @@ "glass_care": "Glass Care", "hygiene": "Igiene", "hygiene_plus": "Igiene 75°C", - "intensive": "Intensivo ", + "intensive": "Intensivo", "intensive_rapid": "Forte Veloce", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "Auto Universale 50 - 60°C", @@ -1175,8 +1179,8 @@ "hqd_outdoor": "Outdoor", "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Rapido 20m", - "hqd_quick_30": "Rapido 30m", - "hqd_quick_dry": "Asciugatura veloce (30 min)", + "hqd_quick_30": "Rapido 30'", + "hqd_quick_dry": "Asciugatura veloce 30'", "hqd_quilt": "Trapunte", "hqd_refresh": "Refresh", "hqd_school_uniform": "Uniforme scolastica", @@ -1214,7 +1218,7 @@ "iot_dry_lingerie": "Lingerie", "iot_dry_mixed": "Misti", "iot_dry_playsuits": "Tutine", - "iot_dry_rapid_30": "Rapido 30m", + "iot_dry_rapid_30": "Rapido 30'", "iot_dry_rapid_59": "Rapido 59'.", "iot_dry_refresh": "Rinfresca", "iot_dry_regenerates_waterproof": "Rigenera Tessuti Impermeabili", @@ -1460,7 +1464,7 @@ "iot_wash_masks_sanification": "Sanificazione Mascherine", "iot_wash_masks_sanification_steam": "Sanificazione Mascherine + Vapore", "iot_wash_mats": "Tappetini", - "iot_wash_men_s_trousers": "Pantaloni ", + "iot_wash_men_s_trousers": "Pantaloni", "iot_wash_mixed": "Misti", "iot_wash_mixed_steam": "Misti + Vapore", "iot_wash_mix_and_coloured_44": "Misti e colorati 44'", @@ -1506,7 +1510,7 @@ "iot_wash_technical_jackets": "Giacconi Tecnici", "iot_wash_technical_jackets_zelig": "Giacconi Tecnici", "iot_wash_trainers": "Scarpe da ginnastica", - "iot_wash_whites": "Bianchi ", + "iot_wash_whites": "Bianchi", "iot_wash_whites_44": "Bianchi 44'", "iot_wash_whites_59": "Bianchi 59'", "iot_wash_whites_xl": "Bianchi XL", @@ -1583,7 +1587,7 @@ "holiday": "HOLIDAY", "keep_fresh": "0° Fresh", "no_mode_selected": "Nessuna modalità selezionata", - "quick_cool": " QUICK COOL", + "quick_cool": "QUICK COOL", "sea_food": "Ready to cook meal", "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", @@ -1608,7 +1612,7 @@ }, "switch": { "anti_crease": { - "name": "Antipieghe " + "name": "Antipieghe" }, "add_dish": { "name": "Aggiungi stoviglie" @@ -1665,7 +1669,7 @@ "name": "Modalità ECO" }, "10_degree_heating": { - "name": "Funzione 10°C Heating " + "name": "Funzione 10°C Heating" }, "self_clean": { "name": "Self clean" @@ -1733,7 +1737,7 @@ "name": "Buona notte" }, "anti_crease": { - "name": "Antipieghe " + "name": "Antipieghe" }, "acqua_plus": { "name": "Acquaplus" @@ -1852,7 +1856,7 @@ "preset_mode": { "name": "Programmi", "state": { - "iot_10_heating": "Funzione 10°C Heating ", + "iot_10_heating": "Funzione 10°C Heating", "iot_auto": "Auto", "iot_cool": "Freddo", "iot_dry": "Deumidificazione", diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index 2e99758..4f85a2d 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -28,7 +28,7 @@ "rinse": "Spoelen", "drying": "Drogen", "steam": "Stoom", - "weighting": "Wegen ", + "weighting": "Wegen", "scheduled": "Gepland", "tumbling": "Fris houden", "refresh": "Opfrissen", @@ -97,7 +97,9 @@ "59_min": "Snel 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Auto Hygiene", "auto_plus": "AutoPlus", + "auto_rapid": "Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Auto universeel 50 - 60°C", @@ -326,7 +328,7 @@ "hqd_bulky": "Grote artikelen", "hqd_casual": "Casual", "hqd_cold_wind_30": "30 minuten koel briesje", - "hqd_cold_wind_timing": "Koel briesje ", + "hqd_cold_wind_timing": "Koel briesje", "hqd_cotton": "Katoen", "hqd_curtain": "Gordijnen", "hqd_delicate": "Fijne was", @@ -346,7 +348,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Quick 20", "hqd_quick_30": "Quick 30", - "hqd_quick_dry": "Quick dry 30", + "hqd_quick_dry": "Quick dry 30'", "hqd_quilt": "Quilts", "hqd_refresh": "Opfrissen", "hqd_school_uniform": "Schooluniform", @@ -554,7 +556,7 @@ "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Speciaal 39' + Stoom", - "iot_steam_hygiene_plus": "Hygiëne Plus Stoom ", + "iot_steam_hygiene_plus": "Hygiëne Plus Stoom", "iot_synthetic_and_coloured_steam": "Synthetisch en gekleurd + Stoom", "iot_wash_and_dry": "Wassen en drogen", "iot_wash_anti_mites": "Antimijt", @@ -725,7 +727,7 @@ "steam_care_pro_cotton": "Steam Care Pro - Katoen", "steam_care_pro_delicates": "Steam Care Pro - Fijne was", "steam_care_pro_synthetic": "Steam Care Pro - Synthetisch", - "steam_hygiene_plus": "Hygiëne Plus Stoom ", + "steam_hygiene_plus": "Hygiëne Plus Stoom", "synthetics": "Synthetische stoffen", "synthetic_and_coloured": "Synthetische vezels en kleuren", "synthetic_and_coloured_steam": "Synthetisch en gekleurd + Stoom", @@ -881,7 +883,7 @@ "fan_mode": { "state": { "high": "Hoog", - "mid": "Gemiddeld ", + "mid": "Gemiddeld", "low": "Laag", "auto": "Automatisch" } @@ -922,7 +924,9 @@ "59_min": "Snel 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Auto Hygiene", "auto_plus": "AutoPlus", + "auto_rapid": "Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Auto universeel 50 - 60°C", @@ -1151,7 +1155,7 @@ "hqd_bulky": "Grote artikelen", "hqd_casual": "Casual", "hqd_cold_wind_30": "30 minuten koel briesje", - "hqd_cold_wind_timing": "Koel briesje ", + "hqd_cold_wind_timing": "Koel briesje", "hqd_cotton": "Katoen", "hqd_curtain": "Gordijnen", "hqd_delicate": "Fijne was", @@ -1171,7 +1175,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Quick 20", "hqd_quick_30": "Quick 30", - "hqd_quick_dry": "Quick dry 30", + "hqd_quick_dry": "Quick dry 30'", "hqd_quilt": "Quilts", "hqd_refresh": "Opfrissen", "hqd_school_uniform": "Schooluniform", @@ -1379,7 +1383,7 @@ "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Speciaal 39' + Stoom", - "iot_steam_hygiene_plus": "Hygiëne Plus Stoom ", + "iot_steam_hygiene_plus": "Hygiëne Plus Stoom", "iot_synthetic_and_coloured_steam": "Synthetisch en gekleurd + Stoom", "iot_wash_and_dry": "Wassen en drogen", "iot_wash_anti_mites": "Antimijt", @@ -1550,7 +1554,7 @@ "steam_care_pro_cotton": "Steam Care Pro - Katoen", "steam_care_pro_delicates": "Steam Care Pro - Fijne was", "steam_care_pro_synthetic": "Steam Care Pro - Synthetisch", - "steam_hygiene_plus": "Hygiëne Plus Stoom ", + "steam_hygiene_plus": "Hygiëne Plus Stoom", "synthetics": "Synthetische stoffen", "synthetic_and_coloured": "Synthetische vezels en kleuren", "synthetic_and_coloured_steam": "Synthetisch en gekleurd + Stoom", diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index bead418..6d2e167 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -28,7 +28,7 @@ "rinse": "Płukanie", "drying": "Suszenie", "steam": "Para", - "weighting": "Ważenie ", + "weighting": "Ważenie", "scheduled": "Zaplanowane", "tumbling": "Utrzymaj świeżość", "refresh": "Odświeżanie", @@ -97,7 +97,9 @@ "59_min": "Szybki 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Auto Hygiene", "auto_plus": "AutoPlus", + "auto_rapid": "Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Auto Universalny 50 - 60°C", @@ -119,7 +121,7 @@ "glass_care": "Glass Care", "hygiene": "Higiena", "hygiene_plus": "Higiena+ 75°C", - "intensive": "Intensywne ", + "intensive": "Intensywne", "intensive_rapid": "intensywny szybki", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "Auto Universalny 50 - 60°C", @@ -326,7 +328,7 @@ "hqd_bulky": "Elementy wielkogabarytowe", "hqd_casual": "Nieformalny", "hqd_cold_wind_30": "Chłodna bryza 30 minut", - "hqd_cold_wind_timing": "Chłodny wietrzyk ", + "hqd_cold_wind_timing": "Chłodny wietrzyk", "hqd_cotton": "Bawełna", "hqd_curtain": "Zasłony", "hqd_delicate": "Delikatne", @@ -346,7 +348,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Szybkie 20", "hqd_quick_30": "Szybkie 30", - "hqd_quick_dry": "Szybkoschnące 30", + "hqd_quick_dry": "Szybkoschnące 30'", "hqd_quilt": "Kołdry", "hqd_refresh": "Odświeżanie", "hqd_school_uniform": "Mundurek szkolny", @@ -554,7 +556,7 @@ "iot_smart_wash": "Inteligentne pranie", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Specjalny 39' + Para", - "iot_steam_hygiene_plus": "Higiena Plus Para ", + "iot_steam_hygiene_plus": "Higiena Plus Para", "iot_synthetic_and_coloured_steam": "Syntetyki i Kolorowe + Para", "iot_wash_and_dry": "Pranie + suszenie", "iot_wash_anti_mites": "Przeciw roztoczom", @@ -725,7 +727,7 @@ "steam_care_pro_cotton": "Steam Care Pro - Bawełna", "steam_care_pro_delicates": "Steam Care Pro - Delikatne", "steam_care_pro_synthetic": "Steam Care Pro - Syntetyki", - "steam_hygiene_plus": "Higiena Plus Para ", + "steam_hygiene_plus": "Higiena Plus Para", "synthetics": "Syntetyki", "synthetic_and_coloured": "Syntetyki i Kolorowe", "synthetic_and_coloured_steam": "Syntetyki i Kolorowe + Para", @@ -881,7 +883,7 @@ "fan_mode": { "state": { "high": "Wysoki", - "mid": "Średni ", + "mid": "Średni", "low": "Niski", "auto": "Auto" } @@ -922,7 +924,9 @@ "59_min": "Szybki 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Auto Hygiene", "auto_plus": "AutoPlus", + "auto_rapid": "Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Auto Universalny 50 - 60°C", @@ -944,7 +948,7 @@ "glass_care": "Glass Care", "hygiene": "Higiena", "hygiene_plus": "Higiena+ 75°C", - "intensive": "Intensywne ", + "intensive": "Intensywne", "intensive_rapid": "intensywny szybki", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "Auto Universalny 50 - 60°C", @@ -1151,7 +1155,7 @@ "hqd_bulky": "Elementy wielkogabarytowe", "hqd_casual": "Nieformalny", "hqd_cold_wind_30": "Chłodna bryza 30 minut", - "hqd_cold_wind_timing": "Chłodny wietrzyk ", + "hqd_cold_wind_timing": "Chłodny wietrzyk", "hqd_cotton": "Bawełna", "hqd_curtain": "Zasłony", "hqd_delicate": "Delikatne", @@ -1171,7 +1175,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Szybkie 20", "hqd_quick_30": "Szybkie 30", - "hqd_quick_dry": "Szybkoschnące 30", + "hqd_quick_dry": "Szybkoschnące 30'", "hqd_quilt": "Kołdry", "hqd_refresh": "Odświeżanie", "hqd_school_uniform": "Mundurek szkolny", @@ -1379,7 +1383,7 @@ "iot_smart_wash": "Inteligentne pranie", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Specjalny 39' + Para", - "iot_steam_hygiene_plus": "Higiena Plus Para ", + "iot_steam_hygiene_plus": "Higiena Plus Para", "iot_synthetic_and_coloured_steam": "Syntetyki i Kolorowe + Para", "iot_wash_and_dry": "Pranie + suszenie", "iot_wash_anti_mites": "Przeciw roztoczom", @@ -1550,7 +1554,7 @@ "steam_care_pro_cotton": "Steam Care Pro - Bawełna", "steam_care_pro_delicates": "Steam Care Pro - Delikatne", "steam_care_pro_synthetic": "Steam Care Pro - Syntetyki", - "steam_hygiene_plus": "Higiena Plus Para ", + "steam_hygiene_plus": "Higiena Plus Para", "synthetics": "Syntetyki", "synthetic_and_coloured": "Syntetyki i Kolorowe", "synthetic_and_coloured_steam": "Syntetyki i Kolorowe + Para", diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index a71e789..7ef49ca 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -28,7 +28,7 @@ "rinse": "Lavagem", "drying": "Secagem", "steam": "Vapor", - "weighting": "Pesagem ", + "weighting": "Pesagem", "scheduled": "Agendado", "tumbling": "Manter Fresco", "refresh": "Refrescar", @@ -97,7 +97,9 @@ "59_min": "Rápido 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Auto Hygiene", "auto_plus": "AutoPlus", + "auto_rapid": "Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Auto Universal 50 - 60°C", @@ -119,7 +121,7 @@ "glass_care": "Glass Care", "hygiene": "Higiene", "hygiene_plus": "Higiene+ 75 °C", - "intensive": "Intensivo ", + "intensive": "Intensivo", "intensive_rapid": "Rápido intensivo", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "Auto Universal 50 - 60°C", @@ -201,7 +203,7 @@ "state": { "iot_special_ash_brown": "Castanho cinza", "iot_special_beef_fillet": "Lombo de novilho", - "iot_special_beef_veal_stew": "Carne de vitela guisada ", + "iot_special_beef_veal_stew": "Carne de vitela guisada", "iot_special_boiled_rice": "Arroz cozido", "iot_special_chicken_breast": "Peito de frango", "iot_special_chicken_legs": "Pernas de frango", @@ -217,7 +219,7 @@ "iot_special_pancakes": "Panquecas", "iot_special_paris_style_peas": "Ervilhas ao estilo parisiense", "iot_special_poached_eggs": "Ovos escalfados", - "iot_special_pork_fillet": "Lombo porco ", + "iot_special_pork_fillet": "Lombo porco", "iot_special_pork_ribs": "Lombo de porco", "iot_special_prawns": "Camarões", "iot_special_quinoa": "Quinoa", @@ -326,7 +328,7 @@ "hqd_bulky": "Itens volumosos", "hqd_casual": "Casual", "hqd_cold_wind_30": "Brisa fresca durante 30 minutos", - "hqd_cold_wind_timing": "Brisa fresca ", + "hqd_cold_wind_timing": "Brisa fresca", "hqd_cotton": "Algodão", "hqd_curtain": "Cortinas", "hqd_delicate": "Roupa delicada", @@ -346,7 +348,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Rápido 20", "hqd_quick_30": "Rápido 30", - "hqd_quick_dry": "Secagem rápida 30", + "hqd_quick_dry": "Secagem rápida 30'", "hqd_quilt": "Colchas", "hqd_refresh": "Refrescar", "hqd_school_uniform": "Farda da escola", @@ -554,7 +556,7 @@ "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Special 39' + Vapor", - "iot_steam_hygiene_plus": "Hygiene Plus Steam ", + "iot_steam_hygiene_plus": "Hygiene Plus Steam", "iot_synthetic_and_coloured_steam": "Sintéticos e Cores + Vapor", "iot_wash_and_dry": "Lavar & secar", "iot_wash_anti_mites": "Anti-ácaros", @@ -630,7 +632,7 @@ "iot_wash_masks_sanification": "Desinfeção de Máscaras", "iot_wash_masks_sanification_steam": "Desinfeção de Máscaras + Vapor", "iot_wash_mats": "Tapetes", - "iot_wash_men_s_trousers": "Calças ", + "iot_wash_men_s_trousers": "Calças", "iot_wash_mixed": "Misto", "iot_wash_mixed_steam": "Mistos + Vapor", "iot_wash_mix_and_coloured_44": "Misto e cores 44'", @@ -725,7 +727,7 @@ "steam_care_pro_cotton": "Steam Care Pro - Algodões", "steam_care_pro_delicates": "Steam Care Pro - Delicados", "steam_care_pro_synthetic": "Steam Care Pro - Sintéticos", - "steam_hygiene_plus": "Hygiene Plus Steam ", + "steam_hygiene_plus": "Hygiene Plus Steam", "synthetics": "Sintéticos", "synthetic_and_coloured": "Sintéticos e Cores", "synthetic_and_coloured_steam": "Sintéticos e Cores + Vapor", @@ -881,7 +883,7 @@ "fan_mode": { "state": { "high": "Alta", - "mid": "Média ", + "mid": "Média", "low": "Baixa", "auto": "Auto" } @@ -922,7 +924,9 @@ "59_min": "Rápido 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Auto Hygiene", "auto_plus": "AutoPlus", + "auto_rapid": "Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Auto Universal 50 - 60°C", @@ -944,7 +948,7 @@ "glass_care": "Glass Care", "hygiene": "Higiene", "hygiene_plus": "Higiene+ 75 °C", - "intensive": "Intensivo ", + "intensive": "Intensivo", "intensive_rapid": "Rápido intensivo", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "Auto Universal 50 - 60°C", @@ -1026,7 +1030,7 @@ "state": { "iot_special_ash_brown": "Castanho cinza", "iot_special_beef_fillet": "Lombo de novilho", - "iot_special_beef_veal_stew": "Carne de vitela guisada ", + "iot_special_beef_veal_stew": "Carne de vitela guisada", "iot_special_boiled_rice": "Arroz cozido", "iot_special_chicken_breast": "Peito de frango", "iot_special_chicken_legs": "Pernas de frango", @@ -1042,7 +1046,7 @@ "iot_special_pancakes": "Panquecas", "iot_special_paris_style_peas": "Ervilhas ao estilo parisiense", "iot_special_poached_eggs": "Ovos escalfados", - "iot_special_pork_fillet": "Lombo porco ", + "iot_special_pork_fillet": "Lombo porco", "iot_special_pork_ribs": "Lombo de porco", "iot_special_prawns": "Camarões", "iot_special_quinoa": "Quinoa", @@ -1151,7 +1155,7 @@ "hqd_bulky": "Itens volumosos", "hqd_casual": "Casual", "hqd_cold_wind_30": "Brisa fresca durante 30 minutos", - "hqd_cold_wind_timing": "Brisa fresca ", + "hqd_cold_wind_timing": "Brisa fresca", "hqd_cotton": "Algodão", "hqd_curtain": "Cortinas", "hqd_delicate": "Roupa delicada", @@ -1171,7 +1175,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Rápido 20", "hqd_quick_30": "Rápido 30", - "hqd_quick_dry": "Secagem rápida 30", + "hqd_quick_dry": "Secagem rápida 30'", "hqd_quilt": "Colchas", "hqd_refresh": "Refrescar", "hqd_school_uniform": "Farda da escola", @@ -1379,7 +1383,7 @@ "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Special 39' + Vapor", - "iot_steam_hygiene_plus": "Hygiene Plus Steam ", + "iot_steam_hygiene_plus": "Hygiene Plus Steam", "iot_synthetic_and_coloured_steam": "Sintéticos e Cores + Vapor", "iot_wash_and_dry": "Lavar & secar", "iot_wash_anti_mites": "Anti-ácaros", @@ -1455,7 +1459,7 @@ "iot_wash_masks_sanification": "Desinfeção de Máscaras", "iot_wash_masks_sanification_steam": "Desinfeção de Máscaras + Vapor", "iot_wash_mats": "Tapetes", - "iot_wash_men_s_trousers": "Calças ", + "iot_wash_men_s_trousers": "Calças", "iot_wash_mixed": "Misto", "iot_wash_mixed_steam": "Mistos + Vapor", "iot_wash_mix_and_coloured_44": "Misto e cores 44'", @@ -1550,7 +1554,7 @@ "steam_care_pro_cotton": "Steam Care Pro - Algodões", "steam_care_pro_delicates": "Steam Care Pro - Delicados", "steam_care_pro_synthetic": "Steam Care Pro - Sintéticos", - "steam_hygiene_plus": "Hygiene Plus Steam ", + "steam_hygiene_plus": "Hygiene Plus Steam", "synthetics": "Sintéticos", "synthetic_and_coloured": "Sintéticos e Cores", "synthetic_and_coloured_steam": "Sintéticos e Cores + Vapor", diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index 4a562a1..3189d00 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -28,7 +28,7 @@ "rinse": "Clătire", "drying": "Uscare", "steam": "Abur", - "weighting": "Cântărire ", + "weighting": "Cântărire", "scheduled": "Programat", "tumbling": "Menținere prospețime", "refresh": "Reîmprospătare", @@ -97,7 +97,9 @@ "59_min": "Rapid 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Autoigienă", "auto_plus": "AutoPlus", + "auto_rapid": "Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Auto Universal 50 - 60°C", @@ -119,7 +121,7 @@ "glass_care": "Glass Care", "hygiene": "Igienă", "hygiene_plus": "Igienă+ 75 °C", - "intensive": "Intensiv ", + "intensive": "Intensiv", "intensive_rapid": "rapid intensiv", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "Auto Universal 50 - 60°C", @@ -326,7 +328,7 @@ "hqd_bulky": "Articole voluminoase", "hqd_casual": "Articole obișnuite", "hqd_cold_wind_30": "Vânt rece 30 minute", - "hqd_cold_wind_timing": "Vânt rece ", + "hqd_cold_wind_timing": "Vânt rece", "hqd_cotton": "Bumbac", "hqd_curtain": "Perdele", "hqd_delicate": "Delicate", @@ -346,7 +348,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Rapid 20", "hqd_quick_30": "Rapid 30", - "hqd_quick_dry": "Uscare rapidă 30", + "hqd_quick_dry": "Uscare rapidă 30'", "hqd_quilt": "Pilote", "hqd_refresh": "Reîmprospătare", "hqd_school_uniform": "Uniformă școlară", @@ -554,7 +556,7 @@ "iot_smart_wash": "Spălare inteligentă", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Special 39' + abur", - "iot_steam_hygiene_plus": "Hygiene Plus Steam ", + "iot_steam_hygiene_plus": "Hygiene Plus Steam", "iot_synthetic_and_coloured_steam": "Sintetice și colorate + abur", "iot_wash_and_dry": "Spălare și uscare", "iot_wash_anti_mites": "Anti-acarieni", @@ -605,7 +607,7 @@ "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", "iot_wash_delicate": "Delicate", "iot_wash_delicate_antiallergy": "Antialergic pentru haine delicate", - "iot_wash_delicate_antiallergy_steam": "Anti-alergenic pentru țesături delicate + Abur", + "iot_wash_delicate_antiallergy_steam": "Anti-alergenic pentru țesături delicate+ Abur", "iot_wash_delicate_antiallergy_zelig": "Antialergic pentru haine delicate", "iot_wash_delicate_colors": "Colorate delicate", "iot_wash_delicate_colors_steam": "Culori + Abur", @@ -725,7 +727,7 @@ "steam_care_pro_cotton": "Steam Care Pro - bumbac", "steam_care_pro_delicates": "Steam Care Pro - delicate", "steam_care_pro_synthetic": "Steam Care Pro - sintetice", - "steam_hygiene_plus": "Hygiene Plus Steam ", + "steam_hygiene_plus": "Hygiene Plus Steam", "synthetics": "Sintetice", "synthetic_and_coloured": "Sintetice și colorate", "synthetic_and_coloured_steam": "Sintetice și colorate + abur", @@ -881,7 +883,7 @@ "fan_mode": { "state": { "high": "Ridicat", - "mid": "Mediu ", + "mid": "Mediu", "low": "Scăzut", "auto": "Automat" } @@ -922,7 +924,9 @@ "59_min": "Rapid 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Autoigienă", "auto_plus": "AutoPlus", + "auto_rapid": "Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Auto Universal 50 - 60°C", @@ -944,7 +948,7 @@ "glass_care": "Glass Care", "hygiene": "Igienă", "hygiene_plus": "Igienă+ 75 °C", - "intensive": "Intensiv ", + "intensive": "Intensiv", "intensive_rapid": "rapid intensiv", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "Auto Universal 50 - 60°C", @@ -1151,7 +1155,7 @@ "hqd_bulky": "Articole voluminoase", "hqd_casual": "Articole obișnuite", "hqd_cold_wind_30": "Vânt rece 30 minute", - "hqd_cold_wind_timing": "Vânt rece ", + "hqd_cold_wind_timing": "Vânt rece", "hqd_cotton": "Bumbac", "hqd_curtain": "Perdele", "hqd_delicate": "Delicate", @@ -1171,7 +1175,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Rapid 20", "hqd_quick_30": "Rapid 30", - "hqd_quick_dry": "Uscare rapidă 30", + "hqd_quick_dry": "Uscare rapidă 30'", "hqd_quilt": "Pilote", "hqd_refresh": "Reîmprospătare", "hqd_school_uniform": "Uniformă școlară", @@ -1379,7 +1383,7 @@ "iot_smart_wash": "Spălare inteligentă", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Special 39' + abur", - "iot_steam_hygiene_plus": "Hygiene Plus Steam ", + "iot_steam_hygiene_plus": "Hygiene Plus Steam", "iot_synthetic_and_coloured_steam": "Sintetice și colorate + abur", "iot_wash_and_dry": "Spălare și uscare", "iot_wash_anti_mites": "Anti-acarieni", @@ -1430,7 +1434,7 @@ "iot_wash_dash_fresh_cycle": "Dash Fresh Clean", "iot_wash_delicate": "Delicate", "iot_wash_delicate_antiallergy": "Antialergic pentru haine delicate", - "iot_wash_delicate_antiallergy_steam": "Anti-alergenic pentru țesături delicate + Abur", + "iot_wash_delicate_antiallergy_steam": "Anti-alergenic pentru țesături delicate+ Abur", "iot_wash_delicate_antiallergy_zelig": "Antialergic pentru haine delicate", "iot_wash_delicate_colors": "Colorate delicate", "iot_wash_delicate_colors_steam": "Culori + Abur", @@ -1550,7 +1554,7 @@ "steam_care_pro_cotton": "Steam Care Pro - bumbac", "steam_care_pro_delicates": "Steam Care Pro - delicate", "steam_care_pro_synthetic": "Steam Care Pro - sintetice", - "steam_hygiene_plus": "Hygiene Plus Steam ", + "steam_hygiene_plus": "Hygiene Plus Steam", "synthetics": "Sintetice", "synthetic_and_coloured": "Sintetice și colorate", "synthetic_and_coloured_steam": "Sintetice și colorate + abur", diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index 452bbb2..b9de6ae 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -28,7 +28,7 @@ "rinse": "Полоскание", "drying": "Сушка", "steam": "Пар", - "weighting": "Взвешивание ", + "weighting": "Взвешивание", "scheduled": "Запланировано", "tumbling": "Сохранение свежести", "refresh": "Освежить", @@ -97,7 +97,9 @@ "59_min": "Быcтрая Мойkа 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Автоочистка", "auto_plus": "AutoPlus", + "auto_rapid": "Быстрая Автомойка", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "авто универсальная 50 - 60°C", @@ -326,7 +328,7 @@ "hqd_bulky": "Объемные изделия", "hqd_casual": "Повседневная одежда", "hqd_cold_wind_30": "Прохладный обдув 30 минут", - "hqd_cold_wind_timing": "Прохладный обдув ", + "hqd_cold_wind_timing": "Прохладный обдув", "hqd_cotton": "Хлопок", "hqd_curtain": "Шторы", "hqd_delicate": "Деликатные вещи", @@ -346,7 +348,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Быстрая 20", "hqd_quick_30": "Быстрая 30", - "hqd_quick_dry": "Быстрая сушка 30", + "hqd_quick_dry": "Быстрая сушка 30'", "hqd_quilt": "Стеганые одеяла", "hqd_refresh": "Освежение", "hqd_school_uniform": "Школьная форма", @@ -554,7 +556,7 @@ "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Специальная 39 мин + пар", - "iot_steam_hygiene_plus": "Гигиена плюс парообработка ", + "iot_steam_hygiene_plus": "Гигиена плюс парообработка", "iot_synthetic_and_coloured_steam": "Синтетика и цветные ткани + пар", "iot_wash_and_dry": "Стирка и сушка", "iot_wash_anti_mites": "Противоклещевая обработка", @@ -725,7 +727,7 @@ "steam_care_pro_cotton": "Steam Care Pro — хлопок", "steam_care_pro_delicates": "Steam Care Pro — деликатные вещи", "steam_care_pro_synthetic": "Steam Care Pro — синтетика", - "steam_hygiene_plus": "Гигиена плюс парообработка ", + "steam_hygiene_plus": "Гигиена плюс парообработка", "synthetics": "Синтетика", "synthetic_and_coloured": "Синтетика и цветные ткани", "synthetic_and_coloured_steam": "Синтетика и цветные ткани + пар", @@ -753,7 +755,7 @@ "holiday": "HOLIDAY", "keep_fresh": "0° Fresh", "no_mode_selected": "Режим не выбран", - "quick_cool": " БЫСТРОЕ ОХЛАЖДЕНИЕ", + "quick_cool": "БЫСТРОЕ ОХЛАЖДЕНИЕ", "sea_food": "Ready to cook meal", "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", @@ -881,7 +883,7 @@ "fan_mode": { "state": { "high": "Высокий", - "mid": "Средний ", + "mid": "Средний", "low": "Низкий", "auto": "Авто" } @@ -922,7 +924,9 @@ "59_min": "Быcтрая Мойkа 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Автоочистка", "auto_plus": "AutoPlus", + "auto_rapid": "Быстрая Автомойка", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "авто универсальная 50 - 60°C", @@ -1151,7 +1155,7 @@ "hqd_bulky": "Объемные изделия", "hqd_casual": "Повседневная одежда", "hqd_cold_wind_30": "Прохладный обдув 30 минут", - "hqd_cold_wind_timing": "Прохладный обдув ", + "hqd_cold_wind_timing": "Прохладный обдув", "hqd_cotton": "Хлопок", "hqd_curtain": "Шторы", "hqd_delicate": "Деликатные вещи", @@ -1171,7 +1175,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Быстрая 20", "hqd_quick_30": "Быстрая 30", - "hqd_quick_dry": "Быстрая сушка 30", + "hqd_quick_dry": "Быстрая сушка 30'", "hqd_quilt": "Стеганые одеяла", "hqd_refresh": "Освежение", "hqd_school_uniform": "Школьная форма", @@ -1379,7 +1383,7 @@ "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Специальная 39 мин + пар", - "iot_steam_hygiene_plus": "Гигиена плюс парообработка ", + "iot_steam_hygiene_plus": "Гигиена плюс парообработка", "iot_synthetic_and_coloured_steam": "Синтетика и цветные ткани + пар", "iot_wash_and_dry": "Стирка и сушка", "iot_wash_anti_mites": "Противоклещевая обработка", @@ -1550,7 +1554,7 @@ "steam_care_pro_cotton": "Steam Care Pro — хлопок", "steam_care_pro_delicates": "Steam Care Pro — деликатные вещи", "steam_care_pro_synthetic": "Steam Care Pro — синтетика", - "steam_hygiene_plus": "Гигиена плюс парообработка ", + "steam_hygiene_plus": "Гигиена плюс парообработка", "synthetics": "Синтетика", "synthetic_and_coloured": "Синтетика и цветные ткани", "synthetic_and_coloured_steam": "Синтетика и цветные ткани + пар", @@ -1578,7 +1582,7 @@ "holiday": "HOLIDAY", "keep_fresh": "0° Fresh", "no_mode_selected": "Режим не выбран", - "quick_cool": " БЫСТРОЕ ОХЛАЖДЕНИЕ", + "quick_cool": "БЫСТРОЕ ОХЛАЖДЕНИЕ", "sea_food": "Ready to cook meal", "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index cfd0db3..37ca163 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -28,7 +28,7 @@ "rinse": "Oplachovanie", "drying": "Sušenie", "steam": "Para", - "weighting": "Váženie ", + "weighting": "Váženie", "scheduled": "Naplánované", "tumbling": "Uchovať svieže", "refresh": "Osvieženie", @@ -97,7 +97,9 @@ "59_min": "Rýchly 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Automatická Hygiena", "auto_plus": "AutoPlus", + "auto_rapid": "Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Auto univerzálny 50 -60°C", @@ -119,7 +121,7 @@ "glass_care": "Glass Care", "hygiene": "Hygiena", "hygiene_plus": "Hygienické umývanie + 75 °C", - "intensive": "Intenzívne pranie ", + "intensive": "Intenzívne pranie", "intensive_rapid": "intenzívny rýchly", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "Auto univerzálny 50 -60°C", @@ -326,7 +328,7 @@ "hqd_bulky": "Objemné položky", "hqd_casual": "Neformálne", "hqd_cold_wind_30": "Chladný vánok 30 minút", - "hqd_cold_wind_timing": "Studený vánok ", + "hqd_cold_wind_timing": "Studený vánok", "hqd_cotton": "Bavlna", "hqd_curtain": "Záclony", "hqd_delicate": "Jemné materiály", @@ -346,7 +348,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Rýchle 20", "hqd_quick_30": "Rýchle 30", - "hqd_quick_dry": "Rýchle sušenie 30", + "hqd_quick_dry": "Rýchle sušenie 30'", "hqd_quilt": "Prikrývky", "hqd_refresh": "Osvieženie", "hqd_school_uniform": "Školská uniforma", @@ -554,7 +556,7 @@ "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Špeciál 39' + Para", - "iot_steam_hygiene_plus": "Para Hygiene Plus ", + "iot_steam_hygiene_plus": "Para Hygiene Plus", "iot_synthetic_and_coloured_steam": "Syntetika a farebné materiály + para", "iot_wash_and_dry": "Pranie a sušenie", "iot_wash_anti_mites": "Proti roztočom", @@ -725,7 +727,7 @@ "steam_care_pro_cotton": "Steam Care Pro - bavlna", "steam_care_pro_delicates": "Steam Care Pro - jemné", "steam_care_pro_synthetic": "Steam Care Pro - syntetika", - "steam_hygiene_plus": "Para Hygiene Plus ", + "steam_hygiene_plus": "Para Hygiene Plus", "synthetics": "Syntetika", "synthetic_and_coloured": "Syntetika a farebné materiály", "synthetic_and_coloured_steam": "Syntetika a farebné materiály + para", @@ -881,7 +883,7 @@ "fan_mode": { "state": { "high": "Vysoká", - "mid": "Stredne ťažká ", + "mid": "Stredne ťažká", "low": "Nízka", "auto": "Automatika" } @@ -922,7 +924,9 @@ "59_min": "Rýchly 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Automatická Hygiena", "auto_plus": "AutoPlus", + "auto_rapid": "Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Auto univerzálny 50 -60°C", @@ -944,7 +948,7 @@ "glass_care": "Glass Care", "hygiene": "Hygiena", "hygiene_plus": "Hygienické umývanie + 75 °C", - "intensive": "Intenzívne pranie ", + "intensive": "Intenzívne pranie", "intensive_rapid": "intenzívny rýchly", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "Auto univerzálny 50 -60°C", @@ -1151,7 +1155,7 @@ "hqd_bulky": "Objemné položky", "hqd_casual": "Neformálne", "hqd_cold_wind_30": "Chladný vánok 30 minút", - "hqd_cold_wind_timing": "Studený vánok ", + "hqd_cold_wind_timing": "Studený vánok", "hqd_cotton": "Bavlna", "hqd_curtain": "Záclony", "hqd_delicate": "Jemné materiály", @@ -1171,7 +1175,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Rýchle 20", "hqd_quick_30": "Rýchle 30", - "hqd_quick_dry": "Rýchle sušenie 30", + "hqd_quick_dry": "Rýchle sušenie 30'", "hqd_quilt": "Prikrývky", "hqd_refresh": "Osvieženie", "hqd_school_uniform": "Školská uniforma", @@ -1379,7 +1383,7 @@ "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Špeciál 39' + Para", - "iot_steam_hygiene_plus": "Para Hygiene Plus ", + "iot_steam_hygiene_plus": "Para Hygiene Plus", "iot_synthetic_and_coloured_steam": "Syntetika a farebné materiály + para", "iot_wash_and_dry": "Pranie a sušenie", "iot_wash_anti_mites": "Proti roztočom", @@ -1550,7 +1554,7 @@ "steam_care_pro_cotton": "Steam Care Pro - bavlna", "steam_care_pro_delicates": "Steam Care Pro - jemné", "steam_care_pro_synthetic": "Steam Care Pro - syntetika", - "steam_hygiene_plus": "Para Hygiene Plus ", + "steam_hygiene_plus": "Para Hygiene Plus", "synthetics": "Syntetika", "synthetic_and_coloured": "Syntetika a farebné materiály", "synthetic_and_coloured_steam": "Syntetika a farebné materiály + para", diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index 379f258..ce5c072 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -28,7 +28,7 @@ "rinse": "Izpiranje", "drying": "Sušenje", "steam": "Para", - "weighting": "Tehtanje ", + "weighting": "Tehtanje", "scheduled": "Načrtovano", "tumbling": "Ohranjanje svežine", "refresh": "Osvežitev", @@ -97,7 +97,9 @@ "59_min": "Hitri progr. 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Auto Higiena", "auto_plus": "AutoPlus", + "auto_rapid": "Avtomatsko Hitro", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Samodejno univerzalno 50–60 °C", @@ -119,7 +121,7 @@ "glass_care": "Glass Care", "hygiene": "Higiena", "hygiene_plus": "Higiena + 75 °C", - "intensive": "Intenzivno ", + "intensive": "Intenzivno", "intensive_rapid": "Hitro in intenzivno", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "Samodejno univerzalno 50–60 °C", @@ -326,7 +328,7 @@ "hqd_bulky": "Večji kosi", "hqd_casual": "Za prosti čas", "hqd_cold_wind_30": "Hladen vetrič 30 minut", - "hqd_cold_wind_timing": "Hladen vetrič ", + "hqd_cold_wind_timing": "Hladen vetrič", "hqd_cotton": "Bombaž", "hqd_curtain": "Zavese", "hqd_delicate": "Občutljive tkanine", @@ -346,7 +348,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Hitro 20", "hqd_quick_30": "Hitro 30", - "hqd_quick_dry": "Hitro sušenje 30", + "hqd_quick_dry": "Hitro sušenje 30'", "hqd_quilt": "Posteljna pregrinjala", "hqd_refresh": "Osvežitev", "hqd_school_uniform": "Šolska uniforma", @@ -554,7 +556,7 @@ "iot_smart_wash": "Pametno pranje", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Posebno 39' + para", - "iot_steam_hygiene_plus": "Higiena plus para ", + "iot_steam_hygiene_plus": "Higiena plus para", "iot_synthetic_and_coloured_steam": "Sintetične in pisane tkanine + para", "iot_wash_and_dry": "Pranje in sušenje", "iot_wash_anti_mites": "Proti pršicam", @@ -725,7 +727,7 @@ "steam_care_pro_cotton": "Steam Care Pro – bombaž", "steam_care_pro_delicates": "Steam Care Pro – občutljive tkanine", "steam_care_pro_synthetic": "Steam Care Pro – sintetika", - "steam_hygiene_plus": "Higiena plus para ", + "steam_hygiene_plus": "Higiena plus para", "synthetics": "Sintetika", "synthetic_and_coloured": "Sintetične in pisane tkanine", "synthetic_and_coloured_steam": "Sintetične in pisane tkanine + para", @@ -753,7 +755,7 @@ "holiday": "POČITNICE", "keep_fresh": "0° Fresh", "no_mode_selected": "Izbran ni noben način", - "quick_cool": " HITRO HLAJENJE", + "quick_cool": "HITRO HLAJENJE", "sea_food": "Ready to cook meal", "soft_frozen": "Soft freezing", "super_cool": "SUPER HLAJENJE", @@ -833,7 +835,7 @@ "name": "Sobna temperatura" }, "humidity": { - "name": "Vlaga " + "name": "Vlaga" }, "cycles_total": { "name": "Programi Skupaj" @@ -881,7 +883,7 @@ "fan_mode": { "state": { "high": "Visoko", - "mid": "Srednje ", + "mid": "Srednje", "low": "Nizko", "auto": "Samodejno" } @@ -922,7 +924,9 @@ "59_min": "Hitri progr. 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Auto Higiena", "auto_plus": "AutoPlus", + "auto_rapid": "Avtomatsko Hitro", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Samodejno univerzalno 50–60 °C", @@ -944,7 +948,7 @@ "glass_care": "Glass Care", "hygiene": "Higiena", "hygiene_plus": "Higiena + 75 °C", - "intensive": "Intenzivno ", + "intensive": "Intenzivno", "intensive_rapid": "Hitro in intenzivno", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "Samodejno univerzalno 50–60 °C", @@ -1151,7 +1155,7 @@ "hqd_bulky": "Večji kosi", "hqd_casual": "Za prosti čas", "hqd_cold_wind_30": "Hladen vetrič 30 minut", - "hqd_cold_wind_timing": "Hladen vetrič ", + "hqd_cold_wind_timing": "Hladen vetrič", "hqd_cotton": "Bombaž", "hqd_curtain": "Zavese", "hqd_delicate": "Občutljive tkanine", @@ -1171,7 +1175,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Hitro 20", "hqd_quick_30": "Hitro 30", - "hqd_quick_dry": "Hitro sušenje 30", + "hqd_quick_dry": "Hitro sušenje 30'", "hqd_quilt": "Posteljna pregrinjala", "hqd_refresh": "Osvežitev", "hqd_school_uniform": "Šolska uniforma", @@ -1379,7 +1383,7 @@ "iot_smart_wash": "Pametno pranje", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Posebno 39' + para", - "iot_steam_hygiene_plus": "Higiena plus para ", + "iot_steam_hygiene_plus": "Higiena plus para", "iot_synthetic_and_coloured_steam": "Sintetične in pisane tkanine + para", "iot_wash_and_dry": "Pranje in sušenje", "iot_wash_anti_mites": "Proti pršicam", @@ -1550,7 +1554,7 @@ "steam_care_pro_cotton": "Steam Care Pro – bombaž", "steam_care_pro_delicates": "Steam Care Pro – občutljive tkanine", "steam_care_pro_synthetic": "Steam Care Pro – sintetika", - "steam_hygiene_plus": "Higiena plus para ", + "steam_hygiene_plus": "Higiena plus para", "synthetics": "Sintetika", "synthetic_and_coloured": "Sintetične in pisane tkanine", "synthetic_and_coloured_steam": "Sintetične in pisane tkanine + para", @@ -1578,7 +1582,7 @@ "holiday": "POČITNICE", "keep_fresh": "0° Fresh", "no_mode_selected": "Izbran ni noben način", - "quick_cool": " HITRO HLAJENJE", + "quick_cool": "HITRO HLAJENJE", "sea_food": "Ready to cook meal", "soft_frozen": "Soft freezing", "super_cool": "SUPER HLAJENJE", @@ -1675,13 +1679,13 @@ "name": "Način z izklopljenim zvokom" }, "extra_rinse_1": { - "name": " + 1 izpiranje" + "name": "+ 1 izpiranje" }, "extra_rinse_2": { - "name": " + 2 izpiranji" + "name": "+ 2 izpiranji" }, "extra_rinse_3": { - "name": " + 3 izpiranja" + "name": "+ 3 izpiranja" }, "acqua_plus": { "name": "Acquaplus" @@ -1716,13 +1720,13 @@ "name": "Zaklepanje vrat" }, "extra_rinse_1": { - "name": " + 1 izpiranje" + "name": "+ 1 izpiranje" }, "extra_rinse_2": { - "name": " + 2 izpiranji" + "name": "+ 2 izpiranji" }, "extra_rinse_3": { - "name": " + 3 izpiranja" + "name": "+ 3 izpiranja" }, "good_night": { "name": "Lahko noč" diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index 7ba5f27..e30669c 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -28,7 +28,7 @@ "rinse": "Ispiranje", "drying": "Sušenje", "steam": "Vodena para", - "weighting": "Vaganje ", + "weighting": "Vaganje", "scheduled": "Planirano", "tumbling": "Održavanje svežine", "refresh": "Osvežavanje", @@ -97,7 +97,9 @@ "59_min": "Brzi 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Automatska Higijena", "auto_plus": "AutoPlus", + "auto_rapid": "Automatski Brzi", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Automatski univerzalni 50 - 60°C", @@ -119,7 +121,7 @@ "glass_care": "Glass Care", "hygiene": "Higijena", "hygiene_plus": "Higijenski+ 75°C", - "intensive": "Intenzivno ", + "intensive": "Intenzivno", "intensive_rapid": "snažno i brzo", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "Automatski univerzalni 50 - 60°C", @@ -326,7 +328,7 @@ "hqd_bulky": "Glomazni artikli", "hqd_casual": "Neformalno", "hqd_cold_wind_30": "Hladan vazduh 30 minuta", - "hqd_cold_wind_timing": "Hladan vazduh ", + "hqd_cold_wind_timing": "Hladan vazduh", "hqd_cotton": "Pamuk", "hqd_curtain": "Zavese", "hqd_delicate": "Osetljive tkanine", @@ -346,7 +348,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Brzo 20", "hqd_quick_30": "Brzo 30", - "hqd_quick_dry": "Brzo sušenje 30", + "hqd_quick_dry": "Brzo sušenje 30'", "hqd_quilt": "Jorgani", "hqd_refresh": "Osvežavanje", "hqd_school_uniform": "Školska uniforma", @@ -554,7 +556,7 @@ "iot_smart_wash": "Pametno pranje", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Posebno 39' + para", - "iot_steam_hygiene_plus": "Higijena plus sa parom ", + "iot_steam_hygiene_plus": "Higijena plus sa parom", "iot_synthetic_and_coloured_steam": "Sintetika i šarena odeća + para", "iot_wash_and_dry": "Pranje i sušenje", "iot_wash_anti_mites": "Protiv grinja", @@ -725,7 +727,7 @@ "steam_care_pro_cotton": "Steam Care Pro - pamuk", "steam_care_pro_delicates": "Steam Care Pro - osetljive tkanine", "steam_care_pro_synthetic": "Steam Care Pro - sintetika", - "steam_hygiene_plus": "Higijena plus sa parom ", + "steam_hygiene_plus": "Higijena plus sa parom", "synthetics": "Sintetika", "synthetic_and_coloured": "Sintetika i materijal u boji", "synthetic_and_coloured_steam": "Sintetika i šarena odeća + para", @@ -881,7 +883,7 @@ "fan_mode": { "state": { "high": "Visoko", - "mid": "Srednje ", + "mid": "Srednje", "low": "Nisko", "auto": "Automatski" } @@ -922,7 +924,9 @@ "59_min": "Brzi 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Automatska Higijena", "auto_plus": "AutoPlus", + "auto_rapid": "Automatski Brzi", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Automatski univerzalni 50 - 60°C", @@ -944,7 +948,7 @@ "glass_care": "Glass Care", "hygiene": "Higijena", "hygiene_plus": "Higijenski+ 75°C", - "intensive": "Intenzivno ", + "intensive": "Intenzivno", "intensive_rapid": "snažno i brzo", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "Automatski univerzalni 50 - 60°C", @@ -1151,7 +1155,7 @@ "hqd_bulky": "Glomazni artikli", "hqd_casual": "Neformalno", "hqd_cold_wind_30": "Hladan vazduh 30 minuta", - "hqd_cold_wind_timing": "Hladan vazduh ", + "hqd_cold_wind_timing": "Hladan vazduh", "hqd_cotton": "Pamuk", "hqd_curtain": "Zavese", "hqd_delicate": "Osetljive tkanine", @@ -1171,7 +1175,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Brzo 20", "hqd_quick_30": "Brzo 30", - "hqd_quick_dry": "Brzo sušenje 30", + "hqd_quick_dry": "Brzo sušenje 30'", "hqd_quilt": "Jorgani", "hqd_refresh": "Osvežavanje", "hqd_school_uniform": "Školska uniforma", @@ -1379,7 +1383,7 @@ "iot_smart_wash": "Pametno pranje", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Posebno 39' + para", - "iot_steam_hygiene_plus": "Higijena plus sa parom ", + "iot_steam_hygiene_plus": "Higijena plus sa parom", "iot_synthetic_and_coloured_steam": "Sintetika i šarena odeća + para", "iot_wash_and_dry": "Pranje i sušenje", "iot_wash_anti_mites": "Protiv grinja", @@ -1550,7 +1554,7 @@ "steam_care_pro_cotton": "Steam Care Pro - pamuk", "steam_care_pro_delicates": "Steam Care Pro - osetljive tkanine", "steam_care_pro_synthetic": "Steam Care Pro - sintetika", - "steam_hygiene_plus": "Higijena plus sa parom ", + "steam_hygiene_plus": "Higijena plus sa parom", "synthetics": "Sintetika", "synthetic_and_coloured": "Sintetika i materijal u boji", "synthetic_and_coloured_steam": "Sintetika i šarena odeća + para", diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index 3220505..61b2261 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -28,7 +28,7 @@ "rinse": "Durulama", "drying": "Kurutma", "steam": "Buhar", - "weighting": "Tartma ", + "weighting": "Tartma", "scheduled": "Planlandı", "tumbling": "Tazeleme", "refresh": "Tazeleme", @@ -97,7 +97,9 @@ "59_min": "Hizli 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Oto. Hijyen", "auto_plus": "AutoPlus", + "auto_rapid": "Oto. Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Universal 50-60°C", @@ -119,7 +121,7 @@ "glass_care": "Glass Care", "hygiene": "Hijyen", "hygiene_plus": "Hijyen+ 75°C", - "intensive": "Yoğun ", + "intensive": "Yoğun", "intensive_rapid": "yogun hizli", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "Universal 50-60°C", @@ -326,7 +328,7 @@ "hqd_bulky": "Hacimli eşyalar", "hqd_casual": "Gündelik", "hqd_cold_wind_30": "Serin esinti 30 dakika", - "hqd_cold_wind_timing": "Serin esinti ", + "hqd_cold_wind_timing": "Serin esinti", "hqd_cotton": "Pamuk", "hqd_curtain": "Perdeler", "hqd_delicate": "Narin Çamaşırlar", @@ -346,7 +348,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Hızlı 20", "hqd_quick_30": "Hızlı 30", - "hqd_quick_dry": "Hızlı kurutma 30", + "hqd_quick_dry": "Hızlı kurutma 30'", "hqd_quilt": "Yorganlar", "hqd_refresh": "Yenileme", "hqd_school_uniform": "Okul üniforması", @@ -554,7 +556,7 @@ "iot_smart_wash": "Akıllı Yıkama", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Özel program 39' + Buhar", - "iot_steam_hygiene_plus": "Hijyen Artı Buhar ", + "iot_steam_hygiene_plus": "Hijyen Artı Buhar", "iot_synthetic_and_coloured_steam": "Sentetikler ve Renkliler + Buhar", "iot_wash_and_dry": "Yıkama ve kurutma", "iot_wash_anti_mites": "Akar önleyici", @@ -725,7 +727,7 @@ "steam_care_pro_cotton": "Steam Care Pro - Pamuklular", "steam_care_pro_delicates": "Steam Care Pro - Narin çamaşırlar", "steam_care_pro_synthetic": "Steam Care Pro - Sentetikler", - "steam_hygiene_plus": "Hijyen Artı Buhar ", + "steam_hygiene_plus": "Hijyen Artı Buhar", "synthetics": "Sentetikler", "synthetic_and_coloured": "Sentetikler ve Renkliler", "synthetic_and_coloured_steam": "Sentetikler ve Renkliler + Buhar", @@ -750,7 +752,7 @@ "eco_mode": "Eco modu", "fruits_and_veg": "Meyve Ve Sebze", "fruit_and_veg": "Fruit & Veg", - "holiday": "TATİL ", + "holiday": "TATİL", "keep_fresh": "0° Fresh", "no_mode_selected": "Hiç mod seçilmedi", "quick_cool": "HIZLI SOĞUTMA", @@ -881,7 +883,7 @@ "fan_mode": { "state": { "high": "Yüksek", - "mid": "Orta ", + "mid": "Orta", "low": "Düşük", "auto": "Otomatik" } @@ -922,7 +924,9 @@ "59_min": "Hizli 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Oto. Hijyen", "auto_plus": "AutoPlus", + "auto_rapid": "Oto. Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Universal 50-60°C", @@ -944,7 +948,7 @@ "glass_care": "Glass Care", "hygiene": "Hijyen", "hygiene_plus": "Hijyen+ 75°C", - "intensive": "Yoğun ", + "intensive": "Yoğun", "intensive_rapid": "yogun hizli", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "Universal 50-60°C", @@ -1151,7 +1155,7 @@ "hqd_bulky": "Hacimli eşyalar", "hqd_casual": "Gündelik", "hqd_cold_wind_30": "Serin esinti 30 dakika", - "hqd_cold_wind_timing": "Serin esinti ", + "hqd_cold_wind_timing": "Serin esinti", "hqd_cotton": "Pamuk", "hqd_curtain": "Perdeler", "hqd_delicate": "Narin Çamaşırlar", @@ -1171,7 +1175,7 @@ "hqd_precious_cure": "Precious cure", "hqd_quick_20": "Hızlı 20", "hqd_quick_30": "Hızlı 30", - "hqd_quick_dry": "Hızlı kurutma 30", + "hqd_quick_dry": "Hızlı kurutma 30'", "hqd_quilt": "Yorganlar", "hqd_refresh": "Yenileme", "hqd_school_uniform": "Okul üniforması", @@ -1379,7 +1383,7 @@ "iot_smart_wash": "Akıllı Yıkama", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Özel program 39' + Buhar", - "iot_steam_hygiene_plus": "Hijyen Artı Buhar ", + "iot_steam_hygiene_plus": "Hijyen Artı Buhar", "iot_synthetic_and_coloured_steam": "Sentetikler ve Renkliler + Buhar", "iot_wash_and_dry": "Yıkama ve kurutma", "iot_wash_anti_mites": "Akar önleyici", @@ -1550,7 +1554,7 @@ "steam_care_pro_cotton": "Steam Care Pro - Pamuklular", "steam_care_pro_delicates": "Steam Care Pro - Narin çamaşırlar", "steam_care_pro_synthetic": "Steam Care Pro - Sentetikler", - "steam_hygiene_plus": "Hijyen Artı Buhar ", + "steam_hygiene_plus": "Hijyen Artı Buhar", "synthetics": "Sentetikler", "synthetic_and_coloured": "Sentetikler ve Renkliler", "synthetic_and_coloured_steam": "Sentetikler ve Renkliler + Buhar", @@ -1575,7 +1579,7 @@ "eco_mode": "Eco modu", "fruits_and_veg": "Meyve Ve Sebze", "fruit_and_veg": "Fruit & Veg", - "holiday": "TATİL ", + "holiday": "TATİL", "keep_fresh": "0° Fresh", "no_mode_selected": "Hiç mod seçilmedi", "quick_cool": "HIZLI SOĞUTMA", diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index 1f2292b..855e698 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -28,7 +28,7 @@ "rinse": "漂洗", "drying": "烘干", "steam": "蒸汽", - "weighting": "正在称重 ", + "weighting": "正在称重", "scheduled": "已计划", "tumbling": "保持清新", "refresh": "清新", @@ -97,7 +97,9 @@ "59_min": "Rapid 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Auto Hygiene", "auto_plus": "AutoPlus", + "auto_rapid": "Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "自动通用50℃-60℃", @@ -119,7 +121,7 @@ "glass_care": "Glass Care", "hygiene": "卫生", "hygiene_plus": "消毒洗+75°C", - "intensive": "加强 ", + "intensive": "加强", "intensive_rapid": "强化快速", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "自动通用50℃-60℃", @@ -241,7 +243,7 @@ "state": { "bakery": "意大利面和烘焙食品", "bakery_steam": "烤炉蒸汽", - "bottom_heating": "底部加热 ", + "bottom_heating": "底部加热", "bottom_heating_fan": "底部加热 + 风扇", "bread": "面包", "bread_steam": "蒸烤的面包", @@ -326,7 +328,7 @@ "hqd_bulky": "大件物品", "hqd_casual": "休闲", "hqd_cold_wind_30": "凉风 30 分钟", - "hqd_cold_wind_timing": "凉风 ", + "hqd_cold_wind_timing": "凉风", "hqd_cotton": "棉布", "hqd_curtain": "窗帘", "hqd_delicate": "精致衣物", @@ -500,7 +502,7 @@ "hygiene_60": "卫生 60°", "hygiene_plus_59": "卫生增强 59 分", "hygiene_plus_59_min": "卫生增强 59 分", - "hygiene_pro_49_min": "Hygiene Pro 49 min", + "hygiene_pro_49_min": "49 分钟卫生专家", "hygiene_pro_steam": "Hygiene Pro + 蒸汽", "intensive_40": "加强 40°C", "intensive_40_steam": "Intensive 40°C + 蒸汽", @@ -554,7 +556,7 @@ "iot_smart_wash": "智能洗涤", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "专用 39' + 蒸汽", - "iot_steam_hygiene_plus": "卫生增强蒸汽 ", + "iot_steam_hygiene_plus": "卫生增强蒸汽", "iot_synthetic_and_coloured_steam": "化纤和彩色 + 蒸汽", "iot_wash_and_dry": "洗涤与烘干", "iot_wash_anti_mites": "防螨", @@ -725,7 +727,7 @@ "steam_care_pro_cotton": "Steam Care Pro - 棉", "steam_care_pro_delicates": "Steam Care Pro - 精致衣物", "steam_care_pro_synthetic": "Steam Care Pro - 化纤", - "steam_hygiene_plus": "卫生增强蒸汽 ", + "steam_hygiene_plus": "卫生增强蒸汽", "synthetics": "合成纤维", "synthetic_and_coloured": "合成纤维和彩色衣物", "synthetic_and_coloured_steam": "化纤和彩色 + 蒸汽", @@ -881,7 +883,7 @@ "fan_mode": { "state": { "high": "高", - "mid": "中 ", + "mid": "中", "low": "低", "auto": "自动" } @@ -922,7 +924,9 @@ "59_min": "Rapid 59'", "auto_care": "Auto Care", "auto_care_soil": "Auto Care", + "auto_hygiene": "Auto Hygiene", "auto_plus": "AutoPlus", + "auto_rapid": "Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "自动通用50℃-60℃", @@ -944,7 +948,7 @@ "glass_care": "Glass Care", "hygiene": "卫生", "hygiene_plus": "消毒洗+75°C", - "intensive": "加强 ", + "intensive": "加强", "intensive_rapid": "强化快速", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "自动通用50℃-60℃", @@ -1066,7 +1070,7 @@ "state": { "bakery": "意大利面和烘焙食品", "bakery_steam": "烤炉蒸汽", - "bottom_heating": "底部加热 ", + "bottom_heating": "底部加热", "bottom_heating_fan": "底部加热 + 风扇", "bread": "面包", "bread_steam": "蒸烤的面包", @@ -1151,7 +1155,7 @@ "hqd_bulky": "大件物品", "hqd_casual": "休闲", "hqd_cold_wind_30": "凉风 30 分钟", - "hqd_cold_wind_timing": "凉风 ", + "hqd_cold_wind_timing": "凉风", "hqd_cotton": "棉布", "hqd_curtain": "窗帘", "hqd_delicate": "精致衣物", @@ -1325,7 +1329,7 @@ "hygiene_60": "卫生 60°", "hygiene_plus_59": "卫生增强 59 分", "hygiene_plus_59_min": "卫生增强 59 分", - "hygiene_pro_49_min": "Hygiene Pro 49 min", + "hygiene_pro_49_min": "49 分钟卫生专家", "hygiene_pro_steam": "Hygiene Pro + 蒸汽", "intensive_40": "加强 40°C", "intensive_40_steam": "Intensive 40°C + 蒸汽", @@ -1379,7 +1383,7 @@ "iot_smart_wash": "智能洗涤", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "专用 39' + 蒸汽", - "iot_steam_hygiene_plus": "卫生增强蒸汽 ", + "iot_steam_hygiene_plus": "卫生增强蒸汽", "iot_synthetic_and_coloured_steam": "化纤和彩色 + 蒸汽", "iot_wash_and_dry": "洗涤与烘干", "iot_wash_anti_mites": "防螨", @@ -1550,7 +1554,7 @@ "steam_care_pro_cotton": "Steam Care Pro - 棉", "steam_care_pro_delicates": "Steam Care Pro - 精致衣物", "steam_care_pro_synthetic": "Steam Care Pro - 化纤", - "steam_hygiene_plus": "卫生增强蒸汽 ", + "steam_hygiene_plus": "卫生增强蒸汽", "synthetics": "合成纤维", "synthetic_and_coloured": "合成纤维和彩色衣物", "synthetic_and_coloured_steam": "化纤和彩色 + 蒸汽", @@ -1903,7 +1907,7 @@ "state": { "bakery": "意大利面和烘焙食品", "bakery_steam": "烤炉蒸汽", - "bottom_heating": "底部加热 ", + "bottom_heating": "底部加热", "bottom_heating_fan": "底部加热 + 风扇", "bread": "面包", "bread_steam": "蒸烤的面包", diff --git a/scripts/sensor_docs.py b/scripts/sensor_docs.py index ddc32b8..10c914f 100755 --- a/scripts/sensor_docs.py +++ b/scripts/sensor_docs.py @@ -10,6 +10,7 @@ if __name__ == "__main__": from custom_components.hon.binary_sensor import BINARY_SENSORS from custom_components.hon.button import BUTTONS +from custom_components.hon.light import LIGHTS from custom_components.hon.climate import CLIMATES from custom_components.hon.number import NUMBERS from custom_components.hon.select import SELECTS @@ -50,6 +51,7 @@ entities = { "switch": SWITCHES, "climate": CLIMATES, "fan": FANS, + "light": LIGHTS, } result = {} -- 2.39.5 From 0cd4db083979c5442a9c4350f328397d9f88f4c9 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Fri, 30 Jun 2023 20:09:55 +0200 Subject: [PATCH 148/205] Fix missing value for number entities --- custom_components/hon/number.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index 60081e9..ba148e9 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -252,6 +252,10 @@ class HonNumberEntity(HonEntity, NumberEntity): class HonConfigNumberEntity(HonNumberEntity): entity_description: HonConfigNumberEntityDescription + @property + def native_value(self) -> float | None: + return self._device.settings[self.entity_description.key].value + async def async_set_native_value(self, value: str) -> None: setting = self._device.settings[self.entity_description.key] if isinstance(setting, HonParameterRange): -- 2.39.5 From 3c747f9602688fe68814b22098b66c50aa2bc78d Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sat, 1 Jul 2023 01:44:23 +0200 Subject: [PATCH 149/205] Add script to check missing translations --- scripts/check.py | 46 ++++++++++++++++++++++++++++++++++++++++++ scripts/sensor_docs.py | 25 ++++------------------- 2 files changed, 50 insertions(+), 21 deletions(-) create mode 100755 scripts/check.py diff --git a/scripts/check.py b/scripts/check.py new file mode 100755 index 0000000..150259f --- /dev/null +++ b/scripts/check.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python +import sys +from pathlib import Path + +if __name__ == "__main__": + sys.path.insert(0, str(Path(__file__).parent.parent)) + +from custom_components.hon.binary_sensor import BINARY_SENSORS +from custom_components.hon.button import BUTTONS +from custom_components.hon.climate import CLIMATES +from custom_components.hon.fan import FANS +from custom_components.hon.light import LIGHTS +from custom_components.hon.number import NUMBERS +from custom_components.hon.select import SELECTS +from custom_components.hon.sensor import SENSORS +from custom_components.hon.switch import SWITCHES + +entities = { + "binary_sensor": BINARY_SENSORS, + "button": BUTTONS, + "light": LIGHTS, + "climate": CLIMATES, + "number": NUMBERS, + "select": SELECTS, + "sensor": SENSORS, + "fan": FANS, + "switch": SWITCHES, +} + + +def get_missing_translation_keys(): + result = {} + for entity_type, appliances in entities.items(): + for appliance, data in appliances.items(): + for entity in data: + if entity.translation_key: + continue + key = f"{entity_type}.{entity.key}" + result.setdefault(appliance, []).append(key) + return result + + +if __name__ == "__main__": + for appliance, data in sorted(get_missing_translation_keys().items()): + for key in data: + print(f"WARNING - {appliance} - Missing translation key for {key}") diff --git a/scripts/sensor_docs.py b/scripts/sensor_docs.py index 10c914f..cc144d4 100755 --- a/scripts/sensor_docs.py +++ b/scripts/sensor_docs.py @@ -8,6 +8,7 @@ from pathlib import Path if __name__ == "__main__": sys.path.insert(0, str(Path(__file__).parent.parent)) +from custom_components.hon.const import APPLIANCES from custom_components.hon.binary_sensor import BINARY_SENSORS from custom_components.hon.button import BUTTONS from custom_components.hon.light import LIGHTS @@ -22,36 +23,18 @@ from custom_components.hon.switch import ( HonSwitchEntityDescription, ) -APPLIANCES = { - "AC": "Air Conditioner", - "AP": "Air Purifier", - "AS": "Air Scanner", - "DW": "Dish Washer", - "HO": "Hood", - "IH": "Induction Hob", - "MW": "Microwave", - "OV": "Oven", - "REF": "Fridge", - "RVC": "Robot Vacuum Cleaner", - "TD": "Tumble Dryer", - "WC": "Wine Cellar", - "WD": "Washer Dryer", - "WH": "Water Heater", - "WM": "Washing Machine", -} - ENTITY_CATEGORY_SORT = ["control", "config", "sensor"] entities = { "binary_sensor": BINARY_SENSORS, "button": BUTTONS, + "light": LIGHTS, + "climate": CLIMATES, "number": NUMBERS, "select": SELECTS, "sensor": SENSORS, - "switch": SWITCHES, - "climate": CLIMATES, "fan": FANS, - "light": LIGHTS, + "switch": SWITCHES, } result = {} -- 2.39.5 From 269a521435a208c32e5b8ed68f7c78e676b65f85 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sat, 1 Jul 2023 01:45:32 +0200 Subject: [PATCH 150/205] Add more translation keys for ap #72 --- README.md | 6 +++--- custom_components/hon/const.py | 18 ++++++++++++++++++ custom_components/hon/light.py | 17 +++++++++++++++-- custom_components/hon/number.py | 1 + custom_components/hon/select.py | 2 ++ custom_components/hon/sensor.py | 5 +++-- custom_components/hon/switch.py | 2 ++ custom_components/hon/translations/cs.json | 20 ++++++++++++++++++++ custom_components/hon/translations/de.json | 20 ++++++++++++++++++++ custom_components/hon/translations/el.json | 20 ++++++++++++++++++++ custom_components/hon/translations/en.json | 20 ++++++++++++++++++++ custom_components/hon/translations/es.json | 20 ++++++++++++++++++++ custom_components/hon/translations/fr.json | 20 ++++++++++++++++++++ custom_components/hon/translations/he.json | 20 ++++++++++++++++++++ custom_components/hon/translations/hr.json | 20 ++++++++++++++++++++ custom_components/hon/translations/it.json | 20 ++++++++++++++++++++ custom_components/hon/translations/nl.json | 20 ++++++++++++++++++++ custom_components/hon/translations/pl.json | 20 ++++++++++++++++++++ custom_components/hon/translations/pt.json | 20 ++++++++++++++++++++ custom_components/hon/translations/ro.json | 20 ++++++++++++++++++++ custom_components/hon/translations/ru.json | 20 ++++++++++++++++++++ custom_components/hon/translations/sk.json | 20 ++++++++++++++++++++ custom_components/hon/translations/sl.json | 20 ++++++++++++++++++++ custom_components/hon/translations/sr.json | 20 ++++++++++++++++++++ custom_components/hon/translations/tr.json | 20 ++++++++++++++++++++ custom_components/hon/translations/zh.json | 20 ++++++++++++++++++++ scripts/translation_keys.py | 6 ++++++ 27 files changed, 430 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 844bbae..cb0fbc6 100644 --- a/README.md +++ b/README.md @@ -194,13 +194,13 @@ For every device exists a button under diagnostics which can be used to log all | Humidity | | `sensor` | `humidityIndoor` | | Main Filter Status | | `sensor` | `mainFilterStatus` | | On | `power-cycle` | `binary_sensor` | `attributes.parameters.onOffStatus` | +| PM 10 | | `sensor` | `pm10ValueIndoor` | +| PM 2.5 | | `sensor` | `pm2p5ValueIndoor` | | Pre Filter Status | | `sensor` | `preFilterStatus` | | Temperature | | `sensor` | `temp` | | Total Work Time | | `sensor` | `totalWorkTime` | | VOC | | `sensor` | `vocValueIndoor` | | Wind Speed | | `sensor` | `windSpeed` | -| pm10 | | `sensor` | `pm10ValueIndoor` | -| pm2p5 | | `sensor` | `pm2p5ValueIndoor` | ### Dish Washer #### Controls @@ -294,8 +294,8 @@ For every device exists a button under diagnostics which can be used to log all #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | -| Oven | `toaster-oven` | `switch` | `startProgram` / `stopProgram` | | Oven | `thermometer` | `climate` | `settings.tempSel` | +| Oven | `toaster-oven` | `switch` | `startProgram` / `stopProgram` | #### Configs | Name | Icon | Entity | Key | | --- | --- | --- | --- | diff --git a/custom_components/hon/const.py b/custom_components/hon/const.py index d43308d..d2155ac 100644 --- a/custom_components/hon/const.py +++ b/custom_components/hon/const.py @@ -21,6 +21,24 @@ PLATFORMS = [ "light", ] +APPLIANCES = { + "AC": "Air Conditioner", + "AP": "Air Purifier", + "AS": "Air Scanner", + "DW": "Dish Washer", + "HO": "Hood", + "IH": "Induction Hob", + "MW": "Microwave", + "OV": "Oven", + "REF": "Fridge", + "RVC": "Robot Vacuum Cleaner", + "TD": "Tumble Dryer", + "WC": "Wine Cellar", + "WD": "Washer Dryer", + "WH": "Water Heater", + "WM": "Washing Machine", +} + HON_HVAC_MODE = { 0: HVACMode.AUTO, 1: HVACMode.COOL, diff --git a/custom_components/hon/light.py b/custom_components/hon/light.py index 3f12647..7e8633f 100644 --- a/custom_components/hon/light.py +++ b/custom_components/hon/light.py @@ -19,14 +19,27 @@ _LOGGER = logging.getLogger(__name__) LIGHTS = { - "WC": (LightEntityDescription(key="settings.lightStatus", name="Light"),), + "WC": ( + LightEntityDescription( + key="settings.lightStatus", + name="Light", + translation_key="light", + ), + ), "HO": ( LightEntityDescription( key="startProgram.lightStatus", name="Light status", + translation_key="light", + ), + ), + "AP": ( + LightEntityDescription( + key="settings.lightStatus", + name="Light status", + translation_key="light", ), ), - "AP": (LightEntityDescription(key="settings.lightStatus", name="Light status"),), } diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index ba148e9..1008190 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -178,6 +178,7 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { HonNumberEntityDescription( key="settings.pollenLevel", name="Pollen Level", + translation_key="pollen_level", ), ), } diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index f238b68..a2d9f8e 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -138,12 +138,14 @@ SELECTS = { key="settings.aromaStatus", name="Diffuser Level", option_list=const.AP_DIFFUSER_LEVEL, + translation_key="diffuser", ), HonSelectEntityDescription( key="settings.machMode", name="Mode", icon="mdi:run", option_list=const.AP_MACH_MODE, + translation_key="mode", ), ), } diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 68886fe..cb54814 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -719,14 +719,14 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { ), HonSensorEntityDescription( key="pm10ValueIndoor", - name="pm10", + name="PM 10", state_class=SensorStateClass.MEASUREMENT, device_class=SensorDeviceClass.PM10, native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, ), HonSensorEntityDescription( key="pm2p5ValueIndoor", - name="pm2p5", + name="PM 2.5", state_class=SensorStateClass.MEASUREMENT, device_class=SensorDeviceClass.PM25, native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, @@ -737,6 +737,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { state_class=SensorStateClass.MEASUREMENT, device_class=SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS, native_unit_of_measurement=CONCENTRATION_PARTS_PER_BILLION, + translation_key="voc", ), HonSensorEntityDescription( key="humidityIndoor", diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 3b8e059..3823643 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -334,10 +334,12 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { HonSwitchEntityDescription( key="touchToneStatus", name="Touch Tone", + translation_key="touch_tone", ), HonSwitchEntityDescription( key="lockStatus", name="Lock Status", + translation_key="mode", ), ), } diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index b78c475..62da552 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -857,6 +857,9 @@ }, "fridge_temp": { "name": "Teplota chladničky" + }, + "voc": { + "name": "Plyn (VOC)" } }, "select": { @@ -1603,6 +1606,12 @@ }, "remaining_time": { "name": "Zbývající čas" + }, + "diffuser": { + "name": "Difuzér" + }, + "mode": { + "name": "Režim" } }, "switch": { @@ -1713,6 +1722,9 @@ }, "night_mode": { "name": "Noční režim" + }, + "touch_tone": { + "name": "Hlasitost tónu klepnutí" } }, "binary_sensor": { @@ -1842,6 +1854,9 @@ }, "fridge_temp_sel": { "name": "Cílová teplota Chladnička" + }, + "pollen_level": { + "name": "Hladina pylu" } }, "climate": { @@ -1982,6 +1997,11 @@ "air_extraction": { "name": "Odsávání vzduchu" } + }, + "light": { + "light": { + "name": "Světlo" + } } }, "config": { diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index e14f7ed..6b29423 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -857,6 +857,9 @@ }, "fridge_temp": { "name": "Temperatur des Kühlschranks" + }, + "voc": { + "name": "Gas (VOC)" } }, "select": { @@ -1603,6 +1606,12 @@ }, "remaining_time": { "name": "Verbleibende Zeit" + }, + "diffuser": { + "name": "Luftverteiler" + }, + "mode": { + "name": "Modus" } }, "switch": { @@ -1713,6 +1722,9 @@ }, "night_mode": { "name": "Nachtmodus" + }, + "touch_tone": { + "name": "Tastentonlautstärke" } }, "binary_sensor": { @@ -1842,6 +1854,9 @@ }, "fridge_temp_sel": { "name": "Zieltemperatur Kühlschrank" + }, + "pollen_level": { + "name": "Pollenkonzentration" } }, "climate": { @@ -1982,6 +1997,11 @@ "air_extraction": { "name": "Dunstabzug" } + }, + "light": { + "light": { + "name": "Licht" + } } }, "config": { diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index 5112860..feefbb9 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -857,6 +857,9 @@ }, "fridge_temp": { "name": "Θερμοκρασία ψυγείου" + }, + "voc": { + "name": "Αέριο (VOC)" } }, "select": { @@ -1603,6 +1606,12 @@ }, "remaining_time": { "name": "Χρόνος που απομένει" + }, + "diffuser": { + "name": "Διαχύτης" + }, + "mode": { + "name": "Mode" } }, "switch": { @@ -1713,6 +1722,9 @@ }, "night_mode": { "name": "Νυχτερινή λειτουργία" + }, + "touch_tone": { + "name": "Ένταση τόνου αφής" } }, "binary_sensor": { @@ -1842,6 +1854,9 @@ }, "fridge_temp_sel": { "name": "Στοχευμένη θερμοκρασία Ψυγείο" + }, + "pollen_level": { + "name": "Επίπεδο γύρης" } }, "climate": { @@ -1982,6 +1997,11 @@ "air_extraction": { "name": "Εξαγωγή αέρα" } + }, + "light": { + "light": { + "name": "Φως" + } } }, "config": { diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 65cd887..434ec0b 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -877,6 +877,9 @@ }, "fridge_temp": { "name": "Fridge temperature" + }, + "voc": { + "name": "Gas (VOC)" } }, "select": { @@ -1630,6 +1633,12 @@ }, "remaining_time": { "name": "Time remaining" + }, + "diffuser": { + "name": "Diffuser" + }, + "mode": { + "name": "Mode" } }, "switch": { @@ -1740,6 +1749,9 @@ }, "night_mode": { "name": "Night mode" + }, + "touch_tone": { + "name": "Touch tone volume" } }, "binary_sensor": { @@ -1869,6 +1881,9 @@ }, "fridge_temp_sel": { "name": "Target temperature Fridge" + }, + "pollen_level": { + "name": "Pollen level" } }, "climate": { @@ -2011,6 +2026,11 @@ "air_extraction": { "name": "Air extraction" } + }, + "light": { + "light": { + "name": "Light" + } } }, "config": { diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index 6930167..cd10c97 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -857,6 +857,9 @@ }, "fridge_temp": { "name": "Temperatura del frigorífico" + }, + "voc": { + "name": "Gas (COV)" } }, "select": { @@ -1603,6 +1606,12 @@ }, "remaining_time": { "name": "Tiempo restante" + }, + "diffuser": { + "name": "Difusor" + }, + "mode": { + "name": "Modo" } }, "switch": { @@ -1713,6 +1722,9 @@ }, "night_mode": { "name": "Modo nocturno" + }, + "touch_tone": { + "name": "Volumen del tono táctil" } }, "binary_sensor": { @@ -1842,6 +1854,9 @@ }, "fridge_temp_sel": { "name": "Temperatura deseada Frigorífico" + }, + "pollen_level": { + "name": "Nivel de polen" } }, "climate": { @@ -1982,6 +1997,11 @@ "air_extraction": { "name": "Extracción de aire" } + }, + "light": { + "light": { + "name": "Luz" + } } }, "config": { diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index b594498..bce9694 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -857,6 +857,9 @@ }, "fridge_temp": { "name": "Température du réfrigérateur" + }, + "voc": { + "name": "COV gazeux" } }, "select": { @@ -1603,6 +1606,12 @@ }, "remaining_time": { "name": "Temps restant" + }, + "diffuser": { + "name": "Diffuseur" + }, + "mode": { + "name": "Mode" } }, "switch": { @@ -1713,6 +1722,9 @@ }, "night_mode": { "name": "Mode nuit" + }, + "touch_tone": { + "name": "Volume des tonalités" } }, "binary_sensor": { @@ -1842,6 +1854,9 @@ }, "fridge_temp_sel": { "name": "Température cible Réfrigérateur" + }, + "pollen_level": { + "name": "Niveau de pollen" } }, "climate": { @@ -1982,6 +1997,11 @@ "air_extraction": { "name": "Extraction de l'air" } + }, + "light": { + "light": { + "name": "Luminosité" + } } }, "config": { diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index 6ecbb49..9477caa 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -413,6 +413,9 @@ }, "fridge_temp": { "name": "Fridge temperature" + }, + "voc": { + "name": "Gas (VOC)" } }, "select": { @@ -724,6 +727,12 @@ }, "remaining_time": { "name": "זמן שנותר" + }, + "diffuser": { + "name": "Diffuser" + }, + "mode": { + "name": "Mode" } }, "switch": { @@ -834,6 +843,9 @@ }, "night_mode": { "name": "Night mode" + }, + "touch_tone": { + "name": "Touch tone volume" } }, "binary_sensor": { @@ -963,6 +975,9 @@ }, "fridge_temp_sel": { "name": "Target temperature Fridge" + }, + "pollen_level": { + "name": "Pollen level" } }, "climate": { @@ -1030,6 +1045,11 @@ "air_extraction": { "name": "Air extraction" } + }, + "light": { + "light": { + "name": "Light" + } } }, "config": { diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index 39814c9..229b28a 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -857,6 +857,9 @@ }, "fridge_temp": { "name": "Temperatura hladnjaka" + }, + "voc": { + "name": "Plinovi (HOS-ovi)" } }, "select": { @@ -1603,6 +1606,12 @@ }, "remaining_time": { "name": "Preostalo vrijeme" + }, + "diffuser": { + "name": "Raspršivač" + }, + "mode": { + "name": "Mode" } }, "switch": { @@ -1713,6 +1722,9 @@ }, "night_mode": { "name": "Noćni način rada" + }, + "touch_tone": { + "name": "Glasnoća tona pri dodiru" } }, "binary_sensor": { @@ -1842,6 +1854,9 @@ }, "fridge_temp_sel": { "name": "Ciljana temperatura Hladnjak" + }, + "pollen_level": { + "name": "Razina peludi" } }, "climate": { @@ -1982,6 +1997,11 @@ "air_extraction": { "name": "Odvođenje zraka" } + }, + "light": { + "light": { + "name": "Svjetlo" + } } }, "config": { diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index 546b945..dafa2e9 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -862,6 +862,9 @@ }, "fridge_temp": { "name": "Temperatura del frigorifero" + }, + "voc": { + "name": "Gas (VOC)" } }, "select": { @@ -1608,6 +1611,12 @@ }, "remaining_time": { "name": "Tempo rimanente" + }, + "diffuser": { + "name": "Diffusore" + }, + "mode": { + "name": "Modalità" } }, "switch": { @@ -1718,6 +1727,9 @@ }, "night_mode": { "name": "Modalità notte" + }, + "touch_tone": { + "name": "Volume Tasti" } }, "binary_sensor": { @@ -1847,6 +1859,9 @@ }, "fridge_temp_sel": { "name": "Temperatura target Frigorifero" + }, + "pollen_level": { + "name": "Livello di polline" } }, "climate": { @@ -1987,6 +2002,11 @@ "air_extraction": { "name": "Aspirazione aria" } + }, + "light": { + "light": { + "name": "Illuminazione" + } } }, "config": { diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index 4f85a2d..34f53dc 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -857,6 +857,9 @@ }, "fridge_temp": { "name": "Koelkasttemperatuur" + }, + "voc": { + "name": "Gas (VOC)" } }, "select": { @@ -1603,6 +1606,12 @@ }, "remaining_time": { "name": "Resterende tijd" + }, + "diffuser": { + "name": "Diffuser" + }, + "mode": { + "name": "Modus" } }, "switch": { @@ -1713,6 +1722,9 @@ }, "night_mode": { "name": "Nachtmodus" + }, + "touch_tone": { + "name": "Volume van geluid bij aanraking" } }, "binary_sensor": { @@ -1842,6 +1854,9 @@ }, "fridge_temp_sel": { "name": "Doeltemperatuur Koelkast" + }, + "pollen_level": { + "name": "Pollenniveau" } }, "climate": { @@ -1982,6 +1997,11 @@ "air_extraction": { "name": "Luchtafvoer" } + }, + "light": { + "light": { + "name": "Licht" + } } }, "config": { diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index 6d2e167..72a6665 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -857,6 +857,9 @@ }, "fridge_temp": { "name": "Temperatura lodówki" + }, + "voc": { + "name": "Gaz (VOC)" } }, "select": { @@ -1603,6 +1606,12 @@ }, "remaining_time": { "name": "Pozostały czas" + }, + "diffuser": { + "name": "Dyfuzor" + }, + "mode": { + "name": "Tryb" } }, "switch": { @@ -1713,6 +1722,9 @@ }, "night_mode": { "name": "Tryb nocny" + }, + "touch_tone": { + "name": "Dźwięk przycisku dotykowego" } }, "binary_sensor": { @@ -1842,6 +1854,9 @@ }, "fridge_temp_sel": { "name": "Temperatura docelowa Lodówka" + }, + "pollen_level": { + "name": "Poziom pyłków" } }, "climate": { @@ -1982,6 +1997,11 @@ "air_extraction": { "name": "Wyciąg powietrza" } + }, + "light": { + "light": { + "name": "Światło" + } } }, "config": { diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index 7ef49ca..0fb37a9 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -857,6 +857,9 @@ }, "fridge_temp": { "name": "Temperatura do frigorífico" + }, + "voc": { + "name": "Gás (VOC)" } }, "select": { @@ -1603,6 +1606,12 @@ }, "remaining_time": { "name": "Tempo restante" + }, + "diffuser": { + "name": "Difusor" + }, + "mode": { + "name": "Modo" } }, "switch": { @@ -1713,6 +1722,9 @@ }, "night_mode": { "name": "Modo noturno" + }, + "touch_tone": { + "name": "Volume do tom de toque" } }, "binary_sensor": { @@ -1842,6 +1854,9 @@ }, "fridge_temp_sel": { "name": "Temperatura alvo Frigorífico" + }, + "pollen_level": { + "name": "Nível de pólenes" } }, "climate": { @@ -1982,6 +1997,11 @@ "air_extraction": { "name": "Extração de ar" } + }, + "light": { + "light": { + "name": "Luz" + } } }, "config": { diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index 3189d00..f864985 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -857,6 +857,9 @@ }, "fridge_temp": { "name": "Temperatura frigiderului" + }, + "voc": { + "name": "Gaze (COV)" } }, "select": { @@ -1603,6 +1606,12 @@ }, "remaining_time": { "name": "Timp rămas" + }, + "diffuser": { + "name": "Difuzor" + }, + "mode": { + "name": "Mode" } }, "switch": { @@ -1713,6 +1722,9 @@ }, "night_mode": { "name": "Modul noapte" + }, + "touch_tone": { + "name": "Volum la atingerea tastelor" } }, "binary_sensor": { @@ -1842,6 +1854,9 @@ }, "fridge_temp_sel": { "name": "Temperatură vizată Frigider" + }, + "pollen_level": { + "name": "Nivel polen" } }, "climate": { @@ -1982,6 +1997,11 @@ "air_extraction": { "name": "Extracția aerului" } + }, + "light": { + "light": { + "name": "Lumină" + } } }, "config": { diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index b9de6ae..81ac0c3 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -857,6 +857,9 @@ }, "fridge_temp": { "name": "Температура в холодильнике" + }, + "voc": { + "name": "Газ (ЛОС)" } }, "select": { @@ -1603,6 +1606,12 @@ }, "remaining_time": { "name": "Оставшееся время" + }, + "diffuser": { + "name": "Распылитель" + }, + "mode": { + "name": "Режим" } }, "switch": { @@ -1713,6 +1722,9 @@ }, "night_mode": { "name": "Ночной режим" + }, + "touch_tone": { + "name": "Громкость сенсорных кнопок" } }, "binary_sensor": { @@ -1842,6 +1854,9 @@ }, "fridge_temp_sel": { "name": "Заданная температура Холодильник" + }, + "pollen_level": { + "name": "Уровень пыльцы в воздухе" } }, "climate": { @@ -1982,6 +1997,11 @@ "air_extraction": { "name": "Отвод воздуха" } + }, + "light": { + "light": { + "name": "Свет" + } } }, "config": { diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index 37ca163..a4acbb0 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -857,6 +857,9 @@ }, "fridge_temp": { "name": "Teplota chladničky" + }, + "voc": { + "name": "Plyn (VOC)" } }, "select": { @@ -1603,6 +1606,12 @@ }, "remaining_time": { "name": "Zostávajúci čas" + }, + "diffuser": { + "name": "Difuzér" + }, + "mode": { + "name": "Mode" } }, "switch": { @@ -1713,6 +1722,9 @@ }, "night_mode": { "name": "Nočný režim" + }, + "touch_tone": { + "name": "Hlasitosť tónu dotyku" } }, "binary_sensor": { @@ -1842,6 +1854,9 @@ }, "fridge_temp_sel": { "name": "Cieľová teplota Chladnička" + }, + "pollen_level": { + "name": "Úroveň peľu" } }, "climate": { @@ -1982,6 +1997,11 @@ "air_extraction": { "name": "Odsávanie vzduchu" } + }, + "light": { + "light": { + "name": "Osvetlenie" + } } }, "config": { diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index ce5c072..91de5a9 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -857,6 +857,9 @@ }, "fridge_temp": { "name": "Temperatura hladilnika" + }, + "voc": { + "name": "Lahkohlapne organske spojine (HOS)" } }, "select": { @@ -1603,6 +1606,12 @@ }, "remaining_time": { "name": "Time remaining" + }, + "diffuser": { + "name": "Razpršilnik" + }, + "mode": { + "name": "Mode" } }, "switch": { @@ -1713,6 +1722,9 @@ }, "night_mode": { "name": "Nočni način" + }, + "touch_tone": { + "name": "Glasnost tona dotika" } }, "binary_sensor": { @@ -1842,6 +1854,9 @@ }, "fridge_temp_sel": { "name": "Ciljna temperatura Hladilnik" + }, + "pollen_level": { + "name": "Raven cvetnega prahu" } }, "climate": { @@ -1982,6 +1997,11 @@ "air_extraction": { "name": "Odvajanje zraka" } + }, + "light": { + "light": { + "name": "Osvetljava" + } } }, "config": { diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index e30669c..d09c6cb 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -857,6 +857,9 @@ }, "fridge_temp": { "name": "Temperatura frižidera" + }, + "voc": { + "name": "Gas (VOC)" } }, "select": { @@ -1603,6 +1606,12 @@ }, "remaining_time": { "name": "Preostalo vreme" + }, + "diffuser": { + "name": "Difuzor" + }, + "mode": { + "name": "Mode" } }, "switch": { @@ -1713,6 +1722,9 @@ }, "night_mode": { "name": "Noćni režim" + }, + "touch_tone": { + "name": "Jačina tona dodira" } }, "binary_sensor": { @@ -1842,6 +1854,9 @@ }, "fridge_temp_sel": { "name": "Željena temperatura Frižider" + }, + "pollen_level": { + "name": "Nivo polena u vazduhu" } }, "climate": { @@ -1982,6 +1997,11 @@ "air_extraction": { "name": "Usisavanje vazduha" } + }, + "light": { + "light": { + "name": "Svetlo" + } } }, "config": { diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index 61b2261..51708f3 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -857,6 +857,9 @@ }, "fridge_temp": { "name": "Buzdolabı sıcaklığı" + }, + "voc": { + "name": "Gaz (VOC)" } }, "select": { @@ -1603,6 +1606,12 @@ }, "remaining_time": { "name": "Kalan süre" + }, + "diffuser": { + "name": "Difüzör" + }, + "mode": { + "name": "Mode" } }, "switch": { @@ -1713,6 +1722,9 @@ }, "night_mode": { "name": "Gece modu" + }, + "touch_tone": { + "name": "Dokunma tonu seviyesi" } }, "binary_sensor": { @@ -1842,6 +1854,9 @@ }, "fridge_temp_sel": { "name": "Hedef sıcaklık Buzdolabı" + }, + "pollen_level": { + "name": "Polen seviyesi" } }, "climate": { @@ -1982,6 +1997,11 @@ "air_extraction": { "name": "Hava tahliyesi" } + }, + "light": { + "light": { + "name": "Işık" + } } }, "config": { diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index 855e698..22ab938 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -857,6 +857,9 @@ }, "fridge_temp": { "name": "冰箱温度" + }, + "voc": { + "name": "气体(VOC)" } }, "select": { @@ -1603,6 +1606,12 @@ }, "remaining_time": { "name": "剩余时间" + }, + "diffuser": { + "name": "扩散器" + }, + "mode": { + "name": "Mode" } }, "switch": { @@ -1713,6 +1722,9 @@ }, "night_mode": { "name": "夜间模式" + }, + "touch_tone": { + "name": "按键音量" } }, "binary_sensor": { @@ -1842,6 +1854,9 @@ }, "fridge_temp_sel": { "name": "目标温度 冰箱" + }, + "pollen_level": { + "name": "花粉水平" } }, "climate": { @@ -1982,6 +1997,11 @@ "air_extraction": { "name": "抽气" } + }, + "light": { + "light": { + "name": "照明" + } } }, "config": { diff --git a/scripts/translation_keys.py b/scripts/translation_keys.py index 41da415..b81f615 100644 --- a/scripts/translation_keys.py +++ b/scripts/translation_keys.py @@ -216,6 +216,7 @@ NAMES = { "super_cool": "REF_CMD&CTRL.MODALITIES.SUPER_COOL", "super_freeze": "REF_CMD&CTRL.MODALITIES.SUPER_FREEZE", "refrigerator": "REF.NAME", + "touch_tone": "AP.FOOTER_MENU_MORE.TOUCH_TONE_VOLUME", }, "binary_sensor": { "door_lock": "WASHING_CMD&CTRL.CHECK_UP_RESULTS.DOOR_LOCK", @@ -265,6 +266,8 @@ NAMES = { "eco_pilot": "AC.PROGRAM_DETAIL.ECO_PILOT", "remaining_time": "ENROLLMENT_COMMON.GENERAL.REMAINING_TIME", "ref_zones": "IH.COMMON.COIL", + "diffuser": "AP.TITLES.DIFFUSER", + "mode": "CUBE90_GLOBAL.GENERAL.MODE", }, "sensor": { "dry_levels": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_LEVEL", @@ -320,6 +323,7 @@ NAMES = { "programs_wm": "WC.SET_PROGRAM.PROGRAM", "programs_ac": "WC.SET_PROGRAM.PROGRAM", "programs_ref": "WC.SET_PROGRAM.PROGRAM", + "voc": "HINTS.WHAT_POLLUTES_THE_AIR_IN_OUR_HOMES.GAS_VOC_TITLE", }, "number": { "power_management": "HINTS.COOKING_WITH_INDUCTION.POWER_MANAGEMENT", @@ -334,6 +338,7 @@ NAMES = { "steam_level": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.STEAM_LEVEL", "freezer_temp_sel": ["OV.COMMON.GOAL_TEMPERATURE", "REF.ZONES.FREEZER"], "fridge_temp_sel": ["OV.COMMON.GOAL_TEMPERATURE", "REF.ZONES.FRIDGE"], + "pollen_level": "AP.AIR_QUALITY.POLLEN_LEVEL", }, "climate": { "air_conditioner": "GLOBALS.APPLIANCES_NAME.AC", @@ -342,4 +347,5 @@ NAMES = { "oven": "GLOBALS.APPLIANCES_NAME.OV", }, "fan": {"air_extraction": "HO.DASHBOARD.AIR_EXTRACTION_TITLE"}, + "light": {"light": "WC.DASHBOARD_MENU_MORE.LIGHT"}, } -- 2.39.5 From 3ed335d356c33e4656c30c798fdee7b4251b06b2 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sat, 1 Jul 2023 14:24:04 +0200 Subject: [PATCH 151/205] Add lock --- README.md | 2 +- custom_components/hon/const.py | 1 + custom_components/hon/lock.py | 85 +++++++++++++++++++++++++++++++++ custom_components/hon/sensor.py | 3 +- custom_components/hon/switch.py | 5 -- scripts/check.py | 7 ++- scripts/sensor_docs.py | 10 ++-- 7 files changed, 99 insertions(+), 14 deletions(-) create mode 100644 custom_components/hon/lock.py diff --git a/README.md b/README.md index cb0fbc6..0b9c4c6 100644 --- a/README.md +++ b/README.md @@ -181,7 +181,6 @@ For every device exists a button under diagnostics which can be used to log all | Aroma Time On | `thermometer` | `number` | `settings.aromaTimeOn` | | Diffuser Level | | `select` | `settings.aromaStatus` | | Light status | | `light` | `settings.lightStatus` | -| Lock Status | | `switch` | `lockStatus` | | Mode | `run` | `select` | `settings.machMode` | | Pollen Level | | `number` | `settings.pollenLevel` | | Touch Tone | | `switch` | `touchToneStatus` | @@ -192,6 +191,7 @@ For every device exists a button under diagnostics which can be used to log all | CO Level | | `sensor` | `coLevel` | | Error | `math-log` | `sensor` | `errors` | | Humidity | | `sensor` | `humidityIndoor` | +| Lock Status | | `lock` | `lockStatus` | | Main Filter Status | | `sensor` | `mainFilterStatus` | | On | `power-cycle` | `binary_sensor` | `attributes.parameters.onOffStatus` | | PM 10 | | `sensor` | `pm10ValueIndoor` | diff --git a/custom_components/hon/const.py b/custom_components/hon/const.py index d2155ac..fdcc1f2 100644 --- a/custom_components/hon/const.py +++ b/custom_components/hon/const.py @@ -19,6 +19,7 @@ PLATFORMS = [ "climate", "fan", "light", + "lock", ] APPLIANCES = { diff --git a/custom_components/hon/lock.py b/custom_components/hon/lock.py new file mode 100644 index 0000000..b130136 --- /dev/null +++ b/custom_components/hon/lock.py @@ -0,0 +1,85 @@ +import logging +from typing import Any + +from homeassistant.components.lock import LockEntity, LockEntityDescription +from homeassistant.config_entries import ConfigEntry +from homeassistant.core import callback +from pyhon.parameter.base import HonParameter +from pyhon.parameter.range import HonParameterRange + +from .const import DOMAIN +from .hon import HonEntity + +_LOGGER = logging.getLogger(__name__) + +LOCKS: dict[str, tuple[LockEntityDescription, ...]] = { + "AP": ( + LockEntityDescription( + key="lockStatus", + name="Lock Status", + translation_key="mode", + ), + ), +} + + +async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: + entities = [] + for device in hass.data[DOMAIN][entry.unique_id].appliances: + for description in LOCKS.get(device.appliance_type, []): + if ( + f"settings.{description.key}" not in device.available_settings + or device.get(description.key) is None + ): + continue + entity = HonLockEntity(hass, entry, device, description) + await entity.coordinator.async_config_entry_first_refresh() + entities.append(entity) + + async_add_entities(entities) + + +class HonLockEntity(HonEntity, LockEntity): + entity_description: LockEntityDescription + + @property + def is_locked(self) -> bool | None: + """Return a boolean for the state of the lock.""" + """Return True if entity is on.""" + return self._device.get(self.entity_description.key, 0) == 1 + + async def async_lock(self, **kwargs: Any) -> None: + """Lock method.""" + setting = self._device.settings[f"settings.{self.entity_description.key}"] + if type(setting) == HonParameter: + return + setting.value = setting.max if isinstance(setting, HonParameterRange) else 1 + self.async_write_ha_state() + await self._device.commands["settings"].send() + await self.coordinator.async_refresh() + + async def async_unlock(self, **kwargs: Any) -> None: + """Unlock method.""" + setting = self._device.settings[f"settings.{self.entity_description.key}"] + if type(setting) == HonParameter: + return + setting.value = setting.min if isinstance(setting, HonParameterRange) else 0 + self.async_write_ha_state() + await self._device.commands["settings"].send() + await self.coordinator.async_refresh() + + @property + def available(self) -> bool: + """Return True if entity is available.""" + return ( + super().available + and int(self._device.get("remoteCtrValid", 1)) == 1 + and self._device.get("attributes.lastConnEvent.category") != "DISCONNECTED" + ) + + @callback + def _handle_coordinator_update(self, update=True) -> None: + value = self._device.get(self.entity_description.key, 0) + self._attr_is_locked = self.is_locked + if update: + self.async_write_ha_state() diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index cb54814..668fb0b 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -12,7 +12,6 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.const import ( PERCENTAGE, CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, - CONCENTRATION_PARTS_PER_BILLION, CONCENTRATION_PARTS_PER_MILLION, ) from homeassistant.const import ( @@ -736,7 +735,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { name="VOC", state_class=SensorStateClass.MEASUREMENT, device_class=SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS, - native_unit_of_measurement=CONCENTRATION_PARTS_PER_BILLION, + native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, translation_key="voc", ), HonSensorEntityDescription( diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 3823643..8e919fe 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -336,11 +336,6 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { name="Touch Tone", translation_key="touch_tone", ), - HonSwitchEntityDescription( - key="lockStatus", - name="Lock Status", - translation_key="mode", - ), ), } diff --git a/scripts/check.py b/scripts/check.py index 150259f..2045d71 100755 --- a/scripts/check.py +++ b/scripts/check.py @@ -2,6 +2,7 @@ import sys from pathlib import Path + if __name__ == "__main__": sys.path.insert(0, str(Path(__file__).parent.parent)) @@ -10,6 +11,7 @@ from custom_components.hon.button import BUTTONS from custom_components.hon.climate import CLIMATES from custom_components.hon.fan import FANS from custom_components.hon.light import LIGHTS +from custom_components.hon.lock import LOCKS from custom_components.hon.number import NUMBERS from custom_components.hon.select import SELECTS from custom_components.hon.sensor import SENSORS @@ -18,12 +20,13 @@ from custom_components.hon.switch import SWITCHES entities = { "binary_sensor": BINARY_SENSORS, "button": BUTTONS, - "light": LIGHTS, "climate": CLIMATES, + "fan": FANS, + "light": LIGHTS, + "lock": LOCKS, "number": NUMBERS, "select": SELECTS, "sensor": SENSORS, - "fan": FANS, "switch": SWITCHES, } diff --git a/scripts/sensor_docs.py b/scripts/sensor_docs.py index cc144d4..855efe0 100755 --- a/scripts/sensor_docs.py +++ b/scripts/sensor_docs.py @@ -11,12 +11,13 @@ if __name__ == "__main__": from custom_components.hon.const import APPLIANCES from custom_components.hon.binary_sensor import BINARY_SENSORS from custom_components.hon.button import BUTTONS -from custom_components.hon.light import LIGHTS from custom_components.hon.climate import CLIMATES +from custom_components.hon.fan import FANS +from custom_components.hon.light import LIGHTS +from custom_components.hon.lock import LOCKS from custom_components.hon.number import NUMBERS from custom_components.hon.select import SELECTS from custom_components.hon.sensor import SENSORS -from custom_components.hon.fan import FANS from custom_components.hon.switch import ( SWITCHES, HonControlSwitchEntityDescription, @@ -28,12 +29,13 @@ ENTITY_CATEGORY_SORT = ["control", "config", "sensor"] entities = { "binary_sensor": BINARY_SENSORS, "button": BUTTONS, - "light": LIGHTS, "climate": CLIMATES, + "fan": FANS, + "light": LIGHTS, + "lock": LOCKS, "number": NUMBERS, "select": SELECTS, "sensor": SENSORS, - "fan": FANS, "switch": SWITCHES, } -- 2.39.5 From 0fec3697468bed3f6efacb008195e4770035e9de Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sat, 1 Jul 2023 15:10:52 +0200 Subject: [PATCH 152/205] Fix setting fan mode #84 --- custom_components/hon/climate.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/hon/climate.py b/custom_components/hon/climate.py index ede5e0e..e772072 100644 --- a/custom_components/hon/climate.py +++ b/custom_components/hon/climate.py @@ -210,7 +210,7 @@ class HonACClimateEntity(HonEntity, ClimateEntity): async def async_set_fan_mode(self, fan_mode): mode_number = list(HON_FAN.values()).index(fan_mode) mode = list(HON_FAN.keys())[mode_number] - self._device.settings["settings.windSpeed"].value = mode + self._device.settings["settings.windSpeed"].value = str(mode) self._attr_fan_mode = fan_mode await self._device.commands["settings"].send() self.async_write_ha_state() -- 2.39.5 From 0b345e082bf64545280b159cd54acc12b5390a8e Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sat, 1 Jul 2023 16:38:24 +0200 Subject: [PATCH 153/205] Bump version --- custom_components/hon/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index c6d92bb..b68f53e 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -9,7 +9,7 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": [ - "pyhOn==0.14.6" + "pyhOn==0.14.7" ], - "version": "0.9.0-beta.7" + "version": "0.9.0-beta.8" } -- 2.39.5 From 303608792559b8f91033da80afeb1a16ae9d878d Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sat, 1 Jul 2023 17:09:53 +0200 Subject: [PATCH 154/205] Update readme --- README.md | 4 ++-- scripts/sensor_docs.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0b9c4c6..25cdd93 100644 --- a/README.md +++ b/README.md @@ -181,6 +181,7 @@ For every device exists a button under diagnostics which can be used to log all | Aroma Time On | `thermometer` | `number` | `settings.aromaTimeOn` | | Diffuser Level | | `select` | `settings.aromaStatus` | | Light status | | `light` | `settings.lightStatus` | +| Lock Status | | `lock` | `lockStatus` | | Mode | `run` | `select` | `settings.machMode` | | Pollen Level | | `number` | `settings.pollenLevel` | | Touch Tone | | `switch` | `touchToneStatus` | @@ -191,7 +192,6 @@ For every device exists a button under diagnostics which can be used to log all | CO Level | | `sensor` | `coLevel` | | Error | `math-log` | `sensor` | `errors` | | Humidity | | `sensor` | `humidityIndoor` | -| Lock Status | | `lock` | `lockStatus` | | Main Filter Status | | `sensor` | `mainFilterStatus` | | On | `power-cycle` | `binary_sensor` | `attributes.parameters.onOffStatus` | | PM 10 | | `sensor` | `pm10ValueIndoor` | @@ -245,6 +245,7 @@ For every device exists a button under diagnostics which can be used to log all #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | +| Light status | | `light` | `startProgram.lightStatus` | | Start Program | `hvac` | `button` | `startProgram` | | Stop Program | `hvac-off` | `button` | `stopProgram` | | Wind Speed | | `fan` | `settings.windSpeed` | @@ -258,7 +259,6 @@ For every device exists a button under diagnostics which can be used to log all | Filter Cleaning Status | | `sensor` | `filterCleaningStatus` | | Last Work Time | `clock-start` | `sensor` | `lastWorkTime` | | Light Status | `lightbulb` | `sensor` | `lightStatus` | -| Light status | | `light` | `startProgram.lightStatus` | | Mach Mode | | `sensor` | `machMode` | | On / Off Status | `lightbulb` | `sensor` | `onOffStatus` | | Quick Delay Time Status | | `sensor` | `quickDelayTimeStatus` | diff --git a/scripts/sensor_docs.py b/scripts/sensor_docs.py index 855efe0..0f79e5d 100755 --- a/scripts/sensor_docs.py +++ b/scripts/sensor_docs.py @@ -53,7 +53,7 @@ for entity_type, appliances in entities.items(): if entity.key.startswith("settings") or isinstance(entity, HonSwitchEntityDescription) or isinstance(entity, HonControlSwitchEntityDescription) - or entity_type in ["button", "climate"] + or entity_type in ["button", "climate", "lock", "light", "fan"] else "sensor" ) result.setdefault(appliance, {}).setdefault( -- 2.39.5 From de844d96a58d1e9736f3533b441194400ecf12aa Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sun, 9 Jul 2023 01:58:59 +0200 Subject: [PATCH 155/205] Update appliance list --- README.md | 26 ++++++++++++++------------ info.md | 25 +++++++++++++------------ 2 files changed, 27 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 25cdd93..d8e2c47 100644 --- a/README.md +++ b/README.md @@ -38,18 +38,20 @@ _If the integration is not in the list, you need to clear the browser cache._ ## Supported Models Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). -| | **Haier** | **Hoover** | **Candy** | -|---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------| -| **Washing Machine** | HW90-B14TEAM5
HW100-B14959U1 | H-WASH 500
H7W4 48MBC-S
HW 410AMBCB/1-80 | CO4 107T1/2-07
CBWO49TWME-S
RO44 1286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | -| **Tumble Dryer** | HD80-A3959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S | -| **Washer Dryer** | HWD100-B14979 | HWPS4954DAMR-11 | RPW41066BWMR/1-S | -| **Oven** | HWO60SM2F3XH | HSOT3161WG | | -| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | -| **Air Conditioner** | AD105S2SM3FA
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C | | | -| **Fridge** | HFW7720ENMB | | CCE4T620EWU | -| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | -| **Hood** | HADG6DS46BWIFI | | | -| **Wine Cellar** | HWS247FDU1 | | | +| | **Haier** | **Hoover** | **Candy** | +|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------| +| **Washing Machine** | HW80-B14959TU1DE
HW90-B14TEAM5
HW100-B14959U1 | H-WASH 500
H7W4 48MBC-S
HW 410AMBCB/1-80 | CO4 107T1/2-07
CBWO49TWME-S
RO44 1286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | +| **Tumble Dryer** | HD80-A3959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S | +| **Washer Dryer** | HWD100-B14979 | HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | +| **Oven** | HWO60SM2F3XH | HSOT3161WG | | +| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | +| **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C | | | +| **Fridge** | HFW7720ENMB | | CCE4T620EWU | +| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | +| **Hood** | HADG6DS46BWIFI | | | +| **Wine Cellar** | HWS247FDU1 | | | +| **Air Purifier** | | HHP50CA001 | | + | Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data).
This helps us to develop new features and not to break compatibility in newer versions. | |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| diff --git a/info.md b/info.md index e71b020..ee0b457 100644 --- a/info.md +++ b/info.md @@ -27,18 +27,19 @@ _If the integration is not in the list, you need to clear the browser cache._ ## Supported Models Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). -| | **Haier** | **Hoover** | **Candy** | -|---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------| -| **Washing Machine** | HW90-B14TEAM5
HW100-B14959U1
HW 410AMBCB/1-80 | H-WASH 500
H7W4 48MBC-S
| CO4 107T1/2-07
CBWO49TWME-S
RO44 1286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | -| **Tumble Dryer** | HD80-A3959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S | -| **Washer Dryer** | HWD100-B14979 | HWPS4954DAMR-11 | RPW41066BWMR/1-S | -| **Oven** | HWO60SM2F3XH | HSOT3161WG | | -| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | -| **Air Conditioner** | AD105S2SM3FA
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C | | | -| **Fridge** | HFW7720ENMB | | CCE4T620EWU | -| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | -| **Hood** | HADG6DS46BWIFI | | | -| **Wine Cellar** | HWS247FDU1 | | | +| | **Haier** | **Hoover** | **Candy** | +|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------| +| **Washing Machine** | HW80-B14959TU1DE
HW90-B14TEAM5
HW100-B14959U1 | H-WASH 500
H7W4 48MBC-S
HW 410AMBCB/1-80 | CO4 107T1/2-07
CBWO49TWME-S
RO44 1286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | +| **Tumble Dryer** | HD80-A3959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S | +| **Washer Dryer** | HWD100-B14979 | HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | +| **Oven** | HWO60SM2F3XH | HSOT3161WG | | +| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | +| **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C | | | +| **Fridge** | HFW7720ENMB | | CCE4T620EWU | +| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | +| **Hood** | HADG6DS46BWIFI | | | +| **Wine Cellar** | HWS247FDU1 | | | +| **Air Purifier** | | HHP50CA001 | | | Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data).
This helps us to develop new features and not to break compatibility in newer versions. | |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -- 2.39.5 From 2e056aa8d6c162fdc57d747a8ba7dba383410228 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 10 Jul 2023 00:19:43 +0200 Subject: [PATCH 156/205] Update icons/translations --- custom_components/hon/binary_sensor.py | 35 ++++++++++++--- custom_components/hon/number.py | 7 ++- custom_components/hon/select.py | 3 +- custom_components/hon/switch.py | 6 ++- custom_components/hon/translations/cs.json | 50 ++++++++++++++++++++-- custom_components/hon/translations/de.json | 50 ++++++++++++++++++++-- custom_components/hon/translations/el.json | 50 ++++++++++++++++++++-- custom_components/hon/translations/en.json | 50 ++++++++++++++++++++-- custom_components/hon/translations/es.json | 50 ++++++++++++++++++++-- custom_components/hon/translations/fr.json | 50 ++++++++++++++++++++-- custom_components/hon/translations/he.json | 50 ++++++++++++++++++++-- custom_components/hon/translations/hr.json | 50 ++++++++++++++++++++-- custom_components/hon/translations/it.json | 50 ++++++++++++++++++++-- custom_components/hon/translations/nl.json | 50 ++++++++++++++++++++-- custom_components/hon/translations/pl.json | 50 ++++++++++++++++++++-- custom_components/hon/translations/pt.json | 50 ++++++++++++++++++++-- custom_components/hon/translations/ro.json | 50 ++++++++++++++++++++-- custom_components/hon/translations/ru.json | 50 ++++++++++++++++++++-- custom_components/hon/translations/sk.json | 50 ++++++++++++++++++++-- custom_components/hon/translations/sl.json | 50 ++++++++++++++++++++-- custom_components/hon/translations/sr.json | 50 ++++++++++++++++++++-- custom_components/hon/translations/tr.json | 50 ++++++++++++++++++++-- custom_components/hon/translations/zh.json | 50 ++++++++++++++++++++-- scripts/translation_keys.py | 25 ++++++++++- 24 files changed, 956 insertions(+), 70 deletions(-) diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index af9bcac..df61f0c 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -52,22 +52,40 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { translation_key="door_open", ), HonBinarySensorEntityDescription( - key="startProgram.prewash", name="Pre Wash", translation_key="prewash" + key="prewash", + icon="mdi:tshirt-crew", + name="Pre Wash", + translation_key="prewash", ), HonBinarySensorEntityDescription( - key="extraRinse1", name="Extra Rinse 1", translation_key="extra_rinse_1" + key="extraRinse1", + icon="mdi:numeric-1-box-multiple-outline", + name="Extra Rinse 1", + translation_key="extra_rinse_1", ), HonBinarySensorEntityDescription( - key="extraRinse2", name="Extra Rinse 2", translation_key="extra_rinse_2" + key="extraRinse2", + icon="mdi:numeric-2-box-multiple-outline", + name="Extra Rinse 2", + translation_key="extra_rinse_2", ), HonBinarySensorEntityDescription( - key="extraRinse3", name="Extra Rinse 3", translation_key="extra_rinse_3" + key="extraRinse3", + icon="mdi:numeric-3-box-multiple-outline", + name="Extra Rinse 3", + translation_key="extra_rinse_3", ), HonBinarySensorEntityDescription( - key="goodNight", name="Good Night Mode", translation_key="good_night" + key="goodNight", + icon="mdi:weather-night", + name="Good Night Mode", + translation_key="good_night", ), HonBinarySensorEntityDescription( - key="acquaplus", name="Acqua Plus", translation_key="acqua_plus" + key="acquaplus", + icon="mdi:water-plus", + name="Acqua Plus", + translation_key="acqua_plus", ), ), "TD": ( @@ -86,7 +104,10 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { translation_key="door_open", ), HonBinarySensorEntityDescription( - key="anticrease", name="Anti-Crease", translation_key="anti_crease" + key="anticrease", + name="Anti-Crease", + icon="mdi:iron", + translation_key="anti_crease", ), ), "OV": ( diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index 1008190..fc8d61b 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -166,18 +166,21 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { HonNumberEntityDescription( key="settings.aromaTimeOn", name="Aroma Time On", - icon="mdi:thermometer", + icon="mdi:scent", native_unit_of_measurement=UnitOfTime.SECONDS, + translation_key="aroma_time_on", ), HonNumberEntityDescription( key="settings.aromaTimeOff", name="Aroma Time Off", - icon="mdi:thermometer", + icon="mdi:scent-off", native_unit_of_measurement=UnitOfTime.SECONDS, + translation_key="aroma_time_off", ), HonNumberEntityDescription( key="settings.pollenLevel", name="Pollen Level", + icon="mdi:flower-pollen", translation_key="pollen_level", ), ), diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index a2d9f8e..7aba016 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -139,11 +139,12 @@ SELECTS = { name="Diffuser Level", option_list=const.AP_DIFFUSER_LEVEL, translation_key="diffuser", + icon="mdi:air-filter", ), HonSelectEntityDescription( key="settings.machMode", name="Mode", - icon="mdi:run", + icon="mdi:play", option_list=const.AP_MACH_MODE, translation_key="mode", ), diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 8e919fe..4f4c675 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -142,13 +142,13 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { HonConfigSwitchEntityDescription( key="startProgram.antiCreaseTime", name="Anti-Crease", - icon="mdi:timer", + icon="mdi:iron", translation_key="anti_crease", ), HonConfigSwitchEntityDescription( key="startProgram.anticrease", name="Anti-Crease", - icon="mdi:timer", + icon="mdi:iron", translation_key="anti_crease", ), ), @@ -253,6 +253,7 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { HonSwitchEntityDescription( key="ecoMode", name="Eco Mode", + icon="mdi:sprout", translation_key="eco_mode", ), HonSwitchEntityDescription( @@ -334,6 +335,7 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { HonSwitchEntityDescription( key="touchToneStatus", name="Touch Tone", + icon="mdi:account-voice", translation_key="touch_tone", ), ), diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index 62da552..6f31cfc 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -808,7 +808,13 @@ "name": "Úroveň páry" }, "dirt_level": { - "name": "Míra znečištění" + "name": "Míra znečištění", + "state": { + "little": "Málo", + "normal": "Normální", + "very": "Velmi", + "unknown": "unknown" + } }, "delay_time": { "name": "Odložené spuštění" @@ -860,6 +866,15 @@ }, "voc": { "name": "Plyn (VOC)" + }, + "steam_level": { + "state": { + "no_steam": "Bez páry", + "cotton": "Bavlna", + "delicate": "Jemné", + "synthetic": "Synthetic" + }, + "name": "Úroveň páry" } }, "select": { @@ -1608,10 +1623,33 @@ "name": "Zbývající čas" }, "diffuser": { - "name": "Difuzér" + "name": "Difuzér", + "state": { + "soft": "Mírná", + "mid": "Střední", + "h_biotics": "H-BIOTICS", + "custom": "Přizpůsobit", + "off": "Vypnout" + } }, "mode": { - "name": "Režim" + "name": "Režim", + "state": { + "standby": "Pohotovostní režim", + "sleep": "Spánek", + "auto": "Auto", + "allergens": "Alergeny", + "max": "Max." + } + }, + "steam_level": { + "state": { + "no_steam": "Bez páry", + "cotton": "Bavlna", + "delicate": "Jemné", + "synthetic": "Synthetic" + }, + "name": "Úroveň páry" } }, "switch": { @@ -1857,6 +1895,12 @@ }, "pollen_level": { "name": "Hladina pylu" + }, + "aroma_time_on": { + "name": "Difuzér (ZAPNOUT)" + }, + "aroma_time_off": { + "name": "Difuzér (VYPNOUT)" } }, "climate": { diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index 6b29423..ab590b0 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -808,7 +808,13 @@ "name": "Dampfstufe" }, "dirt_level": { - "name": "Verschmutzungsgrad" + "name": "Verschmutzungsgrad", + "state": { + "little": "Wenig", + "normal": "Normal", + "very": "Sehr", + "unknown": "unknown" + } }, "delay_time": { "name": "Einschaltverzögerung" @@ -860,6 +866,15 @@ }, "voc": { "name": "Gas (VOC)" + }, + "steam_level": { + "state": { + "no_steam": "Kein Dampf", + "cotton": "Baumwolle", + "delicate": "Feinwäsche", + "synthetic": "Synthetik" + }, + "name": "Dampfstufe" } }, "select": { @@ -1608,10 +1623,33 @@ "name": "Verbleibende Zeit" }, "diffuser": { - "name": "Luftverteiler" + "name": "Luftverteiler", + "state": { + "soft": "Weich", + "mid": "Mittel", + "h_biotics": "H-BIOTICS", + "custom": "Individuelle Anpassung", + "off": "Aus" + } }, "mode": { - "name": "Modus" + "name": "Modus", + "state": { + "standby": "Standby-Modus", + "sleep": "Sleep", + "auto": "Auto", + "allergens": "Allergene", + "max": "Max" + } + }, + "steam_level": { + "state": { + "no_steam": "Kein Dampf", + "cotton": "Baumwolle", + "delicate": "Feinwäsche", + "synthetic": "Synthetik" + }, + "name": "Dampfstufe" } }, "switch": { @@ -1857,6 +1895,12 @@ }, "pollen_level": { "name": "Pollenkonzentration" + }, + "aroma_time_on": { + "name": "Luftverteiler (AN)" + }, + "aroma_time_off": { + "name": "Luftverteiler (AUS)" } }, "climate": { diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index feefbb9..f65cde0 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -808,7 +808,13 @@ "name": "Επίπεδο ατμού" }, "dirt_level": { - "name": "Επίπεδο βρωμιάς" + "name": "Επίπεδο βρωμιάς", + "state": { + "little": "Λίγη", + "normal": "Κανονική", + "very": "Πολύ", + "unknown": "unknown" + } }, "delay_time": { "name": "Καθυστερημένη έναρξη" @@ -860,6 +866,15 @@ }, "voc": { "name": "Αέριο (VOC)" + }, + "steam_level": { + "state": { + "no_steam": "Χωρίς ατμό", + "cotton": "Βαμβακερό", + "delicate": "Ευαίσθητα", + "synthetic": "Συνθετικά" + }, + "name": "Επίπεδο ατμού" } }, "select": { @@ -1608,10 +1623,33 @@ "name": "Χρόνος που απομένει" }, "diffuser": { - "name": "Διαχύτης" + "name": "Διαχύτης", + "state": { + "soft": "Μαλακό", + "mid": "Μεσαίο", + "h_biotics": "H-BIOTICS", + "custom": "Προσαρμογή", + "off": "Ανενεργό" + } }, "mode": { - "name": "Mode" + "name": "Mode", + "state": { + "standby": "Αναμονή", + "sleep": "Λειτουργία ύπνου", + "auto": "Αυτόματο", + "allergens": "Αλλεργιογόνα", + "max": "Μέγιστο" + } + }, + "steam_level": { + "state": { + "no_steam": "Χωρίς ατμό", + "cotton": "Βαμβακερό", + "delicate": "Ευαίσθητα", + "synthetic": "Συνθετικά" + }, + "name": "Επίπεδο ατμού" } }, "switch": { @@ -1857,6 +1895,12 @@ }, "pollen_level": { "name": "Επίπεδο γύρης" + }, + "aroma_time_on": { + "name": "Μεταδότης διάχυσης (ΕΝΕΡΓΟΠΟΙΗΣΗ)" + }, + "aroma_time_off": { + "name": "Μεταδότης διάχυσης (ΑΠΕΝΕΡΓΟΠΟΙΗΣΗ)" } }, "climate": { diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 434ec0b..052c8a9 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -823,7 +823,13 @@ "name": "Steam Level" }, "dirt_level": { - "name": "Dirt level" + "name": "Dirt level", + "state": { + "little": "Little", + "normal": "Normal", + "very": "Very", + "unknown": "unknown" + } }, "delay_time": { "name": "Delay Start" @@ -880,6 +886,15 @@ }, "voc": { "name": "Gas (VOC)" + }, + "steam_level": { + "state": { + "no_steam": "No steam", + "cotton": "Cotton", + "delicate": "Delicate", + "synthetic": "Synthetic" + }, + "name": "Steam Level" } }, "select": { @@ -1635,10 +1650,33 @@ "name": "Time remaining" }, "diffuser": { - "name": "Diffuser" + "name": "Diffuser", + "state": { + "soft": "Soft", + "mid": "Mid", + "h_biotics": "H-BIOTICS", + "custom": "Customise", + "off": "Off" + } }, "mode": { - "name": "Mode" + "name": "Mode", + "state": { + "standby": "Standby", + "sleep": "Sleep", + "auto": "Auto", + "allergens": "Allergens", + "max": "Max" + } + }, + "steam_level": { + "state": { + "no_steam": "No steam", + "cotton": "Cotton", + "delicate": "Delicate", + "synthetic": "Synthetic" + }, + "name": "Steam Level" } }, "switch": { @@ -1884,6 +1922,12 @@ }, "pollen_level": { "name": "Pollen level" + }, + "aroma_time_on": { + "name": "Diffuser (ON)" + }, + "aroma_time_off": { + "name": "Diffuser (OFF)" } }, "climate": { diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index cd10c97..57548a6 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -808,7 +808,13 @@ "name": "Nivel de vapor" }, "dirt_level": { - "name": "Nivel de suciedad" + "name": "Nivel de suciedad", + "state": { + "little": "Poco", + "normal": "Normal", + "very": "Mucho", + "unknown": "unknown" + } }, "delay_time": { "name": "Inicio Diferido" @@ -860,6 +866,15 @@ }, "voc": { "name": "Gas (COV)" + }, + "steam_level": { + "state": { + "no_steam": "Sin vapor", + "cotton": "Algodón", + "delicate": "Ropa delicada", + "synthetic": "Synthetic" + }, + "name": "Nivel de vapor" } }, "select": { @@ -1608,10 +1623,33 @@ "name": "Tiempo restante" }, "diffuser": { - "name": "Difusor" + "name": "Difusor", + "state": { + "soft": "Suave", + "mid": "Medio", + "h_biotics": "H-BIOTICS", + "custom": "Personalizar", + "off": "Desactivado" + } }, "mode": { - "name": "Modo" + "name": "Modo", + "state": { + "standby": "En espera", + "sleep": "Reposo", + "auto": "Automático", + "allergens": "Alérgenos", + "max": "Máx." + } + }, + "steam_level": { + "state": { + "no_steam": "Sin vapor", + "cotton": "Algodón", + "delicate": "Ropa delicada", + "synthetic": "Synthetic" + }, + "name": "Nivel de vapor" } }, "switch": { @@ -1857,6 +1895,12 @@ }, "pollen_level": { "name": "Nivel de polen" + }, + "aroma_time_on": { + "name": "Difusor (ENCENDIDO)" + }, + "aroma_time_off": { + "name": "Difusor (APAGADO)" } }, "climate": { diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index bce9694..e937f35 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -808,7 +808,13 @@ "name": "Niveau de vapeur" }, "dirt_level": { - "name": "Niveau de saleté" + "name": "Niveau de saleté", + "state": { + "little": "Faible", + "normal": "Normal", + "very": "Élevé", + "unknown": "unknown" + } }, "delay_time": { "name": "Démarrage Différé" @@ -860,6 +866,15 @@ }, "voc": { "name": "COV gazeux" + }, + "steam_level": { + "state": { + "no_steam": "Pas de vapeur", + "cotton": "Coton", + "delicate": "Délicats", + "synthetic": "Synthetic" + }, + "name": "Niveau de vapeur" } }, "select": { @@ -1608,10 +1623,33 @@ "name": "Temps restant" }, "diffuser": { - "name": "Diffuseur" + "name": "Diffuseur", + "state": { + "soft": "Doux", + "mid": "Intermédiaire", + "h_biotics": "H-BIOTICS", + "custom": "Personnaliser", + "off": "Arrêt" + } }, "mode": { - "name": "Mode" + "name": "Mode", + "state": { + "standby": "Pause", + "sleep": "Sleep", + "auto": "Automatique", + "allergens": "Allergènes", + "max": "Max" + } + }, + "steam_level": { + "state": { + "no_steam": "Pas de vapeur", + "cotton": "Coton", + "delicate": "Délicats", + "synthetic": "Synthetic" + }, + "name": "Niveau de vapeur" } }, "switch": { @@ -1857,6 +1895,12 @@ }, "pollen_level": { "name": "Niveau de pollen" + }, + "aroma_time_on": { + "name": "Diffuseur (ON)" + }, + "aroma_time_off": { + "name": "Diffuseur (OFF)" } }, "climate": { diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index 9477caa..115574a 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -364,7 +364,13 @@ "name": "מפלס קיטור" }, "dirt_level": { - "name": "רמת עפר" + "name": "רמת עפר", + "state": { + "little": "קטן", + "normal": "נוֹרמָלִי", + "very": "מאוד", + "unknown": "unknown" + } }, "delay_time": { "name": "Delay Start" @@ -416,6 +422,15 @@ }, "voc": { "name": "Gas (VOC)" + }, + "steam_level": { + "state": { + "no_steam": "אין קיטור", + "cotton": "כותנה", + "delicate": "עָדִין", + "synthetic": "מְלָאכוּתִי" + }, + "name": "מפלס קיטור" } }, "select": { @@ -729,10 +744,33 @@ "name": "זמן שנותר" }, "diffuser": { - "name": "Diffuser" + "name": "Diffuser", + "state": { + "soft": "Soft", + "mid": "Mid", + "h_biotics": "H-BIOTICS", + "custom": "Customise", + "off": "כבוי" + } }, "mode": { - "name": "Mode" + "name": "Mode", + "state": { + "standby": "Standby", + "sleep": "Sleep", + "auto": "Auto", + "allergens": "Allergens", + "max": "Max" + } + }, + "steam_level": { + "state": { + "no_steam": "אין קיטור", + "cotton": "כותנה", + "delicate": "עָדִין", + "synthetic": "מְלָאכוּתִי" + }, + "name": "מפלס קיטור" } }, "switch": { @@ -978,6 +1016,12 @@ }, "pollen_level": { "name": "Pollen level" + }, + "aroma_time_on": { + "name": "Diffuser (ON)" + }, + "aroma_time_off": { + "name": "Diffuser (OFF)" } }, "climate": { diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index 229b28a..01cd213 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -808,7 +808,13 @@ "name": "Razina pare" }, "dirt_level": { - "name": "Stupanj zaprljanosti" + "name": "Stupanj zaprljanosti", + "state": { + "little": "Neznatno", + "normal": "Uobičajeno", + "very": "Izuzetno", + "unknown": "unknown" + } }, "delay_time": { "name": "Odgoda početka" @@ -860,6 +866,15 @@ }, "voc": { "name": "Plinovi (HOS-ovi)" + }, + "steam_level": { + "state": { + "no_steam": "Bez pare", + "cotton": "Pamuk", + "delicate": "Osjetljivo rublje", + "synthetic": "Sintetika" + }, + "name": "Razina pare" } }, "select": { @@ -1608,10 +1623,33 @@ "name": "Preostalo vrijeme" }, "diffuser": { - "name": "Raspršivač" + "name": "Raspršivač", + "state": { + "soft": "Manjeg intenziteta", + "mid": "Srednje", + "h_biotics": "H-BIOTICS", + "custom": "Prilagođavanje", + "off": "Isključeno" + } }, "mode": { - "name": "Mode" + "name": "Mode", + "state": { + "standby": "Stanje pripravnosti", + "sleep": "Način mirovanja", + "auto": "Automatski", + "allergens": "Alergeni", + "max": "Najviše" + } + }, + "steam_level": { + "state": { + "no_steam": "Bez pare", + "cotton": "Pamuk", + "delicate": "Osjetljivo rublje", + "synthetic": "Sintetika" + }, + "name": "Razina pare" } }, "switch": { @@ -1857,6 +1895,12 @@ }, "pollen_level": { "name": "Razina peludi" + }, + "aroma_time_on": { + "name": "Raspršivač (ISKLJUČEN)" + }, + "aroma_time_off": { + "name": "Raspršivač (UKLJUČEN)" } }, "climate": { diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index dafa2e9..cb9c462 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -808,7 +808,13 @@ "name": "Livello vapore" }, "dirt_level": { - "name": "Livello di sporco" + "name": "Livello di sporco", + "state": { + "little": "Poco", + "normal": "Normale", + "very": "Molto", + "unknown": "unknown" + } }, "delay_time": { "name": "Utilizzo nelle ore notturne" @@ -865,6 +871,15 @@ }, "voc": { "name": "Gas (VOC)" + }, + "steam_level": { + "state": { + "no_steam": "No vapore", + "cotton": "Cotone", + "delicate": "Delicati", + "synthetic": "Sintetici" + }, + "name": "Livello vapore" } }, "select": { @@ -1613,10 +1628,33 @@ "name": "Tempo rimanente" }, "diffuser": { - "name": "Diffusore" + "name": "Diffusore", + "state": { + "soft": "Soft", + "mid": "Medio", + "h_biotics": "H-BIOTICS", + "custom": "Personalizza", + "off": "Off" + } }, "mode": { - "name": "Modalità" + "name": "Modalità", + "state": { + "standby": "Standby", + "sleep": "Sleep", + "auto": "Auto", + "allergens": "Allergeni", + "max": "Max" + } + }, + "steam_level": { + "state": { + "no_steam": "No vapore", + "cotton": "Cotone", + "delicate": "Delicati", + "synthetic": "Sintetici" + }, + "name": "Livello vapore" } }, "switch": { @@ -1862,6 +1900,12 @@ }, "pollen_level": { "name": "Livello di polline" + }, + "aroma_time_on": { + "name": "Diffusore (ON)" + }, + "aroma_time_off": { + "name": "Diffusore (OFF)" } }, "climate": { diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index 34f53dc..a3ab35b 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -808,7 +808,13 @@ "name": "Stoomniveau" }, "dirt_level": { - "name": "Vuilheid" + "name": "Vuilheid", + "state": { + "little": "Weinig", + "normal": "Normaal", + "very": "Heel", + "unknown": "unknown" + } }, "delay_time": { "name": "Vertraag Start" @@ -860,6 +866,15 @@ }, "voc": { "name": "Gas (VOC)" + }, + "steam_level": { + "state": { + "no_steam": "Geen stoom", + "cotton": "Katoen", + "delicate": "Fijne was", + "synthetic": "Synthetic" + }, + "name": "Stoomniveau" } }, "select": { @@ -1608,10 +1623,33 @@ "name": "Resterende tijd" }, "diffuser": { - "name": "Diffuser" + "name": "Diffuser", + "state": { + "soft": "Zacht", + "mid": "Medium", + "h_biotics": "H-BIOTICS", + "custom": "Personaliseren", + "off": "Uit" + } }, "mode": { - "name": "Modus" + "name": "Modus", + "state": { + "standby": "Stand-by", + "sleep": "Slaap", + "auto": "Automatisch", + "allergens": "Allergenen", + "max": "Max" + } + }, + "steam_level": { + "state": { + "no_steam": "Geen stoom", + "cotton": "Katoen", + "delicate": "Fijne was", + "synthetic": "Synthetic" + }, + "name": "Stoomniveau" } }, "switch": { @@ -1857,6 +1895,12 @@ }, "pollen_level": { "name": "Pollenniveau" + }, + "aroma_time_on": { + "name": "Diffuser (AAN)" + }, + "aroma_time_off": { + "name": "Diffuser (UIT)" } }, "climate": { diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index 72a6665..8c8bd49 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -808,7 +808,13 @@ "name": "Poziom pary" }, "dirt_level": { - "name": "Stopień zabrudzenia" + "name": "Stopień zabrudzenia", + "state": { + "little": "Niskie", + "normal": "Standardowe", + "very": "Wysokie", + "unknown": "unknown" + } }, "delay_time": { "name": "Opóźniony Start" @@ -860,6 +866,15 @@ }, "voc": { "name": "Gaz (VOC)" + }, + "steam_level": { + "state": { + "no_steam": "Bez pary", + "cotton": "Bawełna", + "delicate": "Delikatne", + "synthetic": "Syntetyczne" + }, + "name": "Poziom pary" } }, "select": { @@ -1608,10 +1623,33 @@ "name": "Pozostały czas" }, "diffuser": { - "name": "Dyfuzor" + "name": "Dyfuzor", + "state": { + "soft": "Program", + "mid": "Średnie", + "h_biotics": "H-BIOTICS", + "custom": "Dostosuj", + "off": "Wył." + } }, "mode": { - "name": "Tryb" + "name": "Tryb", + "state": { + "standby": "Czuwanie", + "sleep": "Uśpiony", + "auto": "Auto", + "allergens": "Alergeny", + "max": "Maks." + } + }, + "steam_level": { + "state": { + "no_steam": "Bez pary", + "cotton": "Bawełna", + "delicate": "Delikatne", + "synthetic": "Syntetyczne" + }, + "name": "Poziom pary" } }, "switch": { @@ -1857,6 +1895,12 @@ }, "pollen_level": { "name": "Poziom pyłków" + }, + "aroma_time_on": { + "name": "Dyfuzor (WŁ.)" + }, + "aroma_time_off": { + "name": "Dyfuzor (WYŁ.)" } }, "climate": { diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index 0fb37a9..9da78b9 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -808,7 +808,13 @@ "name": "Nível de vapor" }, "dirt_level": { - "name": "Nível de sujidade" + "name": "Nível de sujidade", + "state": { + "little": "Pouco", + "normal": "Normal", + "very": "Muito", + "unknown": "unknown" + } }, "delay_time": { "name": "Início adiado" @@ -860,6 +866,15 @@ }, "voc": { "name": "Gás (VOC)" + }, + "steam_level": { + "state": { + "no_steam": "Sem vapor", + "cotton": "Algodão", + "delicate": "Roupa delicada", + "synthetic": "Sintéticos" + }, + "name": "Nível de vapor" } }, "select": { @@ -1608,10 +1623,33 @@ "name": "Tempo restante" }, "diffuser": { - "name": "Difusor" + "name": "Difusor", + "state": { + "soft": "Suave", + "mid": "Médio", + "h_biotics": "H-BIOTICS", + "custom": "Personalizar", + "off": "Off" + } }, "mode": { - "name": "Modo" + "name": "Modo", + "state": { + "standby": "Em espera", + "sleep": "Sono", + "auto": "Auto", + "allergens": "Alergénios", + "max": "Máx." + } + }, + "steam_level": { + "state": { + "no_steam": "Sem vapor", + "cotton": "Algodão", + "delicate": "Roupa delicada", + "synthetic": "Sintéticos" + }, + "name": "Nível de vapor" } }, "switch": { @@ -1857,6 +1895,12 @@ }, "pollen_level": { "name": "Nível de pólenes" + }, + "aroma_time_on": { + "name": "Difusor (ON)" + }, + "aroma_time_off": { + "name": "Difusor (OFF)" } }, "climate": { diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index f864985..7aefe02 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -808,7 +808,13 @@ "name": "Nivel abur" }, "dirt_level": { - "name": "Nivel de murdărie" + "name": "Nivel de murdărie", + "state": { + "little": "Puțin", + "normal": "Normal", + "very": "Foarte", + "unknown": "unknown" + } }, "delay_time": { "name": "Pornire întârziată" @@ -860,6 +866,15 @@ }, "voc": { "name": "Gaze (COV)" + }, + "steam_level": { + "state": { + "no_steam": "Fără abur", + "cotton": "Bumbac", + "delicate": "Delicate", + "synthetic": "Synthetic" + }, + "name": "Nivel abur" } }, "select": { @@ -1608,10 +1623,33 @@ "name": "Timp rămas" }, "diffuser": { - "name": "Difuzor" + "name": "Difuzor", + "state": { + "soft": "încet", + "mid": "Mediu", + "h_biotics": "H-BIOTICS", + "custom": "Personalizați", + "off": "Oprit" + } }, "mode": { - "name": "Mode" + "name": "Mode", + "state": { + "standby": "Mod de așteptare", + "sleep": "Somn", + "auto": "Automat", + "allergens": "Alergeni", + "max": "Max" + } + }, + "steam_level": { + "state": { + "no_steam": "Fără abur", + "cotton": "Bumbac", + "delicate": "Delicate", + "synthetic": "Synthetic" + }, + "name": "Nivel abur" } }, "switch": { @@ -1857,6 +1895,12 @@ }, "pollen_level": { "name": "Nivel polen" + }, + "aroma_time_on": { + "name": "Difuzor (PORNIT)" + }, + "aroma_time_off": { + "name": "Difuzor (OPRIT)" } }, "climate": { diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index 81ac0c3..d78cfb6 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -808,7 +808,13 @@ "name": "Уровень пара" }, "dirt_level": { - "name": "Уровень загрязнения" + "name": "Уровень загрязнения", + "state": { + "little": "Мало", + "normal": "Нормально", + "very": "Очень", + "unknown": "unknown" + } }, "delay_time": { "name": "Отложенный пуск" @@ -860,6 +866,15 @@ }, "voc": { "name": "Газ (ЛОС)" + }, + "steam_level": { + "state": { + "no_steam": "Без пара", + "cotton": "Хлопок", + "delicate": "Деликатные ткани", + "synthetic": "Синтетика" + }, + "name": "Уровень пара" } }, "select": { @@ -1608,10 +1623,33 @@ "name": "Оставшееся время" }, "diffuser": { - "name": "Распылитель" + "name": "Распылитель", + "state": { + "soft": "Мягкая", + "mid": "Средний", + "h_biotics": "H-BIOTICS", + "custom": "Настроить", + "off": "Выкл." + } }, "mode": { - "name": "Режим" + "name": "Режим", + "state": { + "standby": "Режим ожидания", + "sleep": "Сон", + "auto": "Авто", + "allergens": "Аллергены", + "max": "Макс." + } + }, + "steam_level": { + "state": { + "no_steam": "Без пара", + "cotton": "Хлопок", + "delicate": "Деликатные ткани", + "synthetic": "Синтетика" + }, + "name": "Уровень пара" } }, "switch": { @@ -1857,6 +1895,12 @@ }, "pollen_level": { "name": "Уровень пыльцы в воздухе" + }, + "aroma_time_on": { + "name": "Распылитель (Вкл.)" + }, + "aroma_time_off": { + "name": "Распылитель (Выкл.)" } }, "climate": { diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index a4acbb0..374d661 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -808,7 +808,13 @@ "name": "Úroveň nastavenia pary" }, "dirt_level": { - "name": "Úroveň znečistenia" + "name": "Úroveň znečistenia", + "state": { + "little": "Málo", + "normal": "Normálne", + "very": "Veľa", + "unknown": "unknown" + } }, "delay_time": { "name": "Odložený štart" @@ -860,6 +866,15 @@ }, "voc": { "name": "Plyn (VOC)" + }, + "steam_level": { + "state": { + "no_steam": "Bez pary", + "cotton": "Bavlna", + "delicate": "Jemné materiály", + "synthetic": "Synthetic" + }, + "name": "Úroveň nastavenia pary" } }, "select": { @@ -1608,10 +1623,33 @@ "name": "Zostávajúci čas" }, "diffuser": { - "name": "Difuzér" + "name": "Difuzér", + "state": { + "soft": "Mierny", + "mid": "Stredný", + "h_biotics": "H-BIOTICS", + "custom": "Prispôsobiť", + "off": "Vyp." + } }, "mode": { - "name": "Mode" + "name": "Mode", + "state": { + "standby": "Pohotovostný režim", + "sleep": "Spánok", + "auto": "Automatika", + "allergens": "Alergény", + "max": "Max" + } + }, + "steam_level": { + "state": { + "no_steam": "Bez pary", + "cotton": "Bavlna", + "delicate": "Jemné materiály", + "synthetic": "Synthetic" + }, + "name": "Úroveň nastavenia pary" } }, "switch": { @@ -1857,6 +1895,12 @@ }, "pollen_level": { "name": "Úroveň peľu" + }, + "aroma_time_on": { + "name": "Difuzér (ZAP)" + }, + "aroma_time_off": { + "name": "Difuzér (VYP)" } }, "climate": { diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index 91de5a9..e7068ad 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -808,7 +808,13 @@ "name": "Količina pare" }, "dirt_level": { - "name": "Stopnja umazanije" + "name": "Stopnja umazanije", + "state": { + "little": "Malo", + "normal": "Normalno", + "very": "Zelo", + "unknown": "unknown" + } }, "delay_time": { "name": "S funkcijo Zamik vklopa je možno odložiti začetek sušilnega cikla od 1 do 24 ur. Na zaslonu se prikaže izbrana zakasnitev. Da bi videli kako se zmanjšuje iz ure v uro, pritisnite ZAČETEK. Na ta način bo perilo suho takrat, ko boste to želeli, in zagnali cikel, ko vam to najbolj ustreza, celo ponoči." @@ -860,6 +866,15 @@ }, "voc": { "name": "Lahkohlapne organske spojine (HOS)" + }, + "steam_level": { + "state": { + "no_steam": "Brez pare", + "cotton": "Bombaž", + "delicate": "Občutljivo", + "synthetic": "Sintetika" + }, + "name": "Količina pare" } }, "select": { @@ -1608,10 +1623,33 @@ "name": "Time remaining" }, "diffuser": { - "name": "Razpršilnik" + "name": "Razpršilnik", + "state": { + "soft": "Nežno", + "mid": "Srednje", + "h_biotics": "H-BIOTICS", + "custom": "Prilagodi", + "off": "Off" + } }, "mode": { - "name": "Mode" + "name": "Mode", + "state": { + "standby": "Stanje pripravljenosti", + "sleep": "Spanje", + "auto": "Samodejno", + "allergens": "Alergeni", + "max": "Maksimalno" + } + }, + "steam_level": { + "state": { + "no_steam": "Brez pare", + "cotton": "Bombaž", + "delicate": "Občutljivo", + "synthetic": "Sintetika" + }, + "name": "Količina pare" } }, "switch": { @@ -1857,6 +1895,12 @@ }, "pollen_level": { "name": "Raven cvetnega prahu" + }, + "aroma_time_on": { + "name": "Razpršilnik (VKLOP)" + }, + "aroma_time_off": { + "name": "Razpršilnik (IZKLOP)" } }, "climate": { diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index d09c6cb..d3ef545 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -808,7 +808,13 @@ "name": "Nivo pare" }, "dirt_level": { - "name": "Nivo zaprljanosti" + "name": "Nivo zaprljanosti", + "state": { + "little": "Malo", + "normal": "Normalno", + "very": "Veoma", + "unknown": "unknown" + } }, "delay_time": { "name": "Odloženi start" @@ -860,6 +866,15 @@ }, "voc": { "name": "Gas (VOC)" + }, + "steam_level": { + "state": { + "no_steam": "Bez vodene pare", + "cotton": "Pamuk", + "delicate": "Osetljivi materijali", + "synthetic": "Sintetika" + }, + "name": "Nivo pare" } }, "select": { @@ -1608,10 +1623,33 @@ "name": "Preostalo vreme" }, "diffuser": { - "name": "Difuzor" + "name": "Difuzor", + "state": { + "soft": "Meki", + "mid": "Srednje", + "h_biotics": "„H-BIOTICS“", + "custom": "Prilagodi", + "off": "Isključeno" + } }, "mode": { - "name": "Mode" + "name": "Mode", + "state": { + "standby": "U pripravnosti", + "sleep": "Spavanje", + "auto": "Automatski", + "allergens": "Alergeni", + "max": "Maks." + } + }, + "steam_level": { + "state": { + "no_steam": "Bez vodene pare", + "cotton": "Pamuk", + "delicate": "Osetljivi materijali", + "synthetic": "Sintetika" + }, + "name": "Nivo pare" } }, "switch": { @@ -1857,6 +1895,12 @@ }, "pollen_level": { "name": "Nivo polena u vazduhu" + }, + "aroma_time_on": { + "name": "Difuzor (UKLJUČENO)" + }, + "aroma_time_off": { + "name": "Difuzor (ISKLJUČENO)" } }, "climate": { diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index 51708f3..c6f8088 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -808,7 +808,13 @@ "name": "Buhar Seviyesi" }, "dirt_level": { - "name": "Kir seviyesi" + "name": "Kir seviyesi", + "state": { + "little": "Az", + "normal": "Normal", + "very": "Çok", + "unknown": "unknown" + } }, "delay_time": { "name": "Gecikmeli Başlatma" @@ -860,6 +866,15 @@ }, "voc": { "name": "Gaz (VOC)" + }, + "steam_level": { + "state": { + "no_steam": "Buhar yok", + "cotton": "Pamuk", + "delicate": "Hassas", + "synthetic": "Synthetic" + }, + "name": "Buhar Seviyesi" } }, "select": { @@ -1608,10 +1623,33 @@ "name": "Kalan süre" }, "diffuser": { - "name": "Difüzör" + "name": "Difüzör", + "state": { + "soft": "Yumuşak", + "mid": "Orta", + "h_biotics": "H-BIOTICS", + "custom": "Özelleştir", + "off": "Kapalı" + } }, "mode": { - "name": "Mode" + "name": "Mode", + "state": { + "standby": "Beklemede", + "sleep": "Uyku", + "auto": "Otomatik", + "allergens": "Alerjenler", + "max": "Maks" + } + }, + "steam_level": { + "state": { + "no_steam": "Buhar yok", + "cotton": "Pamuk", + "delicate": "Hassas", + "synthetic": "Synthetic" + }, + "name": "Buhar Seviyesi" } }, "switch": { @@ -1857,6 +1895,12 @@ }, "pollen_level": { "name": "Polen seviyesi" + }, + "aroma_time_on": { + "name": "Difüzör (AÇIK)" + }, + "aroma_time_off": { + "name": "Difüzör (KAPALI)" } }, "climate": { diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index 22ab938..f9a0a26 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -808,7 +808,13 @@ "name": "蒸汽档位" }, "dirt_level": { - "name": "脏污程度" + "name": "脏污程度", + "state": { + "little": "少量", + "normal": "正常", + "very": "非常", + "unknown": "unknown" + } }, "delay_time": { "name": "延时启动" @@ -860,6 +866,15 @@ }, "voc": { "name": "气体(VOC)" + }, + "steam_level": { + "state": { + "no_steam": "无蒸汽", + "cotton": "棉布", + "delicate": "精致衣物", + "synthetic": "Synthetic" + }, + "name": "蒸汽档位" } }, "select": { @@ -1608,10 +1623,33 @@ "name": "剩余时间" }, "diffuser": { - "name": "扩散器" + "name": "扩散器", + "state": { + "soft": "“软”程序", + "mid": "中", + "h_biotics": "H-BIOTICS", + "custom": "定制", + "off": "关闭" + } }, "mode": { - "name": "Mode" + "name": "Mode", + "state": { + "standby": "待机", + "sleep": "睡眠", + "auto": "自动", + "allergens": "过敏原", + "max": "最大" + } + }, + "steam_level": { + "state": { + "no_steam": "无蒸汽", + "cotton": "棉布", + "delicate": "精致衣物", + "synthetic": "Synthetic" + }, + "name": "蒸汽档位" } }, "switch": { @@ -1857,6 +1895,12 @@ }, "pollen_level": { "name": "花粉水平" + }, + "aroma_time_on": { + "name": "扩散器(开)" + }, + "aroma_time_off": { + "name": "扩散器(关)" } }, "climate": { diff --git a/scripts/translation_keys.py b/scripts/translation_keys.py index b81f615..013e69c 100644 --- a/scripts/translation_keys.py +++ b/scripts/translation_keys.py @@ -85,6 +85,23 @@ AC_HUMAN_SENSE = { "unknown": "unknown", } +AP_MACH_MODE = { + "standby": "AP.RUNNING_MODE.STANDBY", + "sleep": "AP.RUNNING_MODE.SLEEP", + "auto": "AP.RUNNING_MODE.AUTO", + "allergens": "AP.RUNNING_MODE.ALLERGENS", + "max": "AP.RUNNING_MODE.MAX", +} + +AP_DIFFUSER_LEVEL = { + "off": "GLOBALS.GENERAL.OFF", + "soft": "AP.MODE_DIFFUSER.LEVEL_SOFT", + "mid": "AP.MODE_DIFFUSER.LEVEL_MID", + "h_biotics": "AP.MODE_DIFFUSER.LEVEL_H_BIOTICS", + "custom": "AP.MODE_DIFFUSER.LEVEL_CUSTOM", +} + + REF_ZONES = { "fridge": "REF.ZONES.FRIDGE", "freezer": "REF.ZONES.FREEZER", @@ -100,6 +117,8 @@ SENSOR = { "program_phases_td": TUMBLE_DRYER_PR_PHASE, "program_phases_dw": DISHWASHER_PR_PHASE, "dry_levels": TUMBLE_DRYER_DRY_LEVEL, + "dirt_level": DIRTY_LEVEL, + "steam_level": STEAM_LEVEL, } SELECT = { @@ -107,6 +126,9 @@ SELECT = { "eco_pilot": AC_HUMAN_SENSE, "fan_mode": AC_FAN_MODE, "ref_zones": REF_ZONES, + "steam_level": STEAM_LEVEL, + "mode": AP_MACH_MODE, + "diffuser": AP_DIFFUSER_LEVEL, } PROGRAMS = { @@ -335,10 +357,11 @@ NAMES = { "rinse_iterations": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL.DRAWER_HEADER_RINSE", "wash_time": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL.WASHING_TIME", "dry_time": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_TIME", - "steam_level": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.STEAM_LEVEL", "freezer_temp_sel": ["OV.COMMON.GOAL_TEMPERATURE", "REF.ZONES.FREEZER"], "fridge_temp_sel": ["OV.COMMON.GOAL_TEMPERATURE", "REF.ZONES.FRIDGE"], "pollen_level": "AP.AIR_QUALITY.POLLEN_LEVEL", + "aroma_time_on": "AP.TITLES.AROMA_ON", + "aroma_time_off": "AP.TITLES.AROMA_OFF", }, "climate": { "air_conditioner": "GLOBALS.APPLIANCES_NAME.AC", -- 2.39.5 From bb700dd2f75a617025f93c15139a416e32160ef5 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 10 Jul 2023 00:20:35 +0200 Subject: [PATCH 157/205] Fix steam level --- custom_components/hon/number.py | 6 ------ custom_components/hon/select.py | 7 +++++++ custom_components/hon/sensor.py | 24 ++++++++---------------- scripts/translation_keys.py | 3 ++- 4 files changed, 17 insertions(+), 23 deletions(-) diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index fc8d61b..a04178b 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -48,12 +48,6 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { native_unit_of_measurement=UnitOfTime.MINUTES, translation_key="wash_time", ), - HonConfigNumberEntityDescription( - key="startProgram.steamLevel", - name="Steam Level", - icon="mdi:weather-dust", - translation_key="steam_level", - ), HonConfigNumberEntityDescription( key="startProgram.waterHard", name="Water hard", diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index 7aba016..d86c9e7 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -49,6 +49,13 @@ SELECTS = { name="Program", translation_key="programs_wm", ), + HonConfigSelectEntityDescription( + key="startProgram.steamLevel", + name="Steam level", + icon="mdi:weather-dust", + translation_key="steam_level", + option_list=const.STEAM_LEVEL, + ), ), "TD": ( HonConfigSelectEntityDescription( diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 668fb0b..89e9e47 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -186,6 +186,14 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { device_class=SensorDeviceClass.ENUM, translation_key="programs_wm", ), + HonSensorEntityDescription( + key="steamLevel", + name="Steam level", + icon="mdi:weather-dust", + device_class=SensorDeviceClass.ENUM, + translation_key="steam_level", + option_list=const.STEAM_LEVEL, + ), ), "TD": ( HonSensorEntityDescription( @@ -259,22 +267,6 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { state_class=SensorStateClass.MEASUREMENT, translation_key="energy_label", ), - HonConfigSensorEntityDescription( - key="startProgram.steamLevel", - name="Steam level", - device_class=SensorDeviceClass.ENUM, - icon="mdi:smoke", - translation_key="steam_level", - option_list=const.STEAM_LEVEL, - ), - HonSensorEntityDescription( - key="steamLevel", - name="Steam level", - icon="mdi:smoke", - device_class=SensorDeviceClass.ENUM, - translation_key="steam_level", - option_list=const.STEAM_LEVEL, - ), HonConfigSensorEntityDescription( key="steamType", name="Steam Type", diff --git a/scripts/translation_keys.py b/scripts/translation_keys.py index 013e69c..8f29d34 100644 --- a/scripts/translation_keys.py +++ b/scripts/translation_keys.py @@ -290,6 +290,7 @@ NAMES = { "ref_zones": "IH.COMMON.COIL", "diffuser": "AP.TITLES.DIFFUSER", "mode": "CUBE90_GLOBAL.GENERAL.MODE", + "steam_level": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.STEAM_LEVEL", }, "sensor": { "dry_levels": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_LEVEL", @@ -302,7 +303,7 @@ NAMES = { "duration": "WASHING_CMD&CTRL.DRAWER_PROGRAM_FILTERS.DURATION", "target_temperature": "IH.COOKING_DETAIL.TEMPERATURE_TARGETING", "spin_speed": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.SPINSPEED", - "steam_leve": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.STEAM_LEVEL", + "steam_level": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.STEAM_LEVEL", "dirt_level": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.DIRTY_LEVEL", "program_phases_wm": "WASHING_CMD&CTRL.STATISTICS_GRAPHIC_INSTANT_CONSUMPTION.PHASE", "program_phases_td": "WASHING_CMD&CTRL.STATISTICS_GRAPHIC_INSTANT_CONSUMPTION.PHASE", -- 2.39.5 From c0d25a4efe0962722527e818973969a4250043bd Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 10 Jul 2023 00:21:45 +0200 Subject: [PATCH 158/205] Fix some small bugs --- custom_components/hon/binary_sensor.py | 9 +-------- custom_components/hon/const.py | 1 + custom_components/hon/select.py | 8 +++++--- custom_components/hon/switch.py | 10 ++++------ 4 files changed, 11 insertions(+), 17 deletions(-) diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index df61f0c..7185231 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -16,17 +16,10 @@ _LOGGER = logging.getLogger(__name__) @dataclass -class HonBinarySensorEntityDescriptionMixin: +class HonBinarySensorEntityDescription(BinarySensorEntityDescription): on_value: str | float = "" -@dataclass -class HonBinarySensorEntityDescription( - HonBinarySensorEntityDescriptionMixin, BinarySensorEntityDescription -): - pass - - BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { "WM": ( HonBinarySensorEntityDescription( diff --git a/custom_components/hon/const.py b/custom_components/hon/const.py index fdcc1f2..ad57d8f 100644 --- a/custom_components/hon/const.py +++ b/custom_components/hon/const.py @@ -218,6 +218,7 @@ AP_MACH_MODE = { } AP_DIFFUSER_LEVEL = { + 0: "off", 1: "soft", 2: "mid", 3: "h_biotics", diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index d86c9e7..d0deabf 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -199,9 +199,11 @@ class HonConfigSelectEntity(HonEntity, SelectEntity): def _option_to_number(self, option: str, values: List[str]): if (options := self.entity_description.option_list) is not None: - return next( - (k for k, v in options.items() if str(k) in values and v == option), - option, + return str( + next( + (k for k, v in options.items() if str(k) in values and v == option), + option, + ) ) return option diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 4f4c675..c37e299 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -388,7 +388,7 @@ class HonSwitchEntity(HonEntity, SwitchEntity): setting = self._device.settings[f"settings.{self.entity_description.key}"] if type(setting) == HonParameter: return - setting.value = setting.max if isinstance(setting, HonParameterRange) else "1" + setting.value = setting.max if isinstance(setting, HonParameterRange) else 1 self.async_write_ha_state() await self._device.commands["settings"].send() await self.coordinator.async_refresh() @@ -397,7 +397,7 @@ class HonSwitchEntity(HonEntity, SwitchEntity): setting = self._device.settings[f"settings.{self.entity_description.key}"] if type(setting) == HonParameter: return - setting.value = setting.min if isinstance(setting, HonParameterRange) else "0" + setting.value = setting.min if isinstance(setting, HonParameterRange) else 0 self.async_write_ha_state() await self._device.commands["settings"].send() await self.coordinator.async_refresh() @@ -413,8 +413,7 @@ class HonSwitchEntity(HonEntity, SwitchEntity): @callback def _handle_coordinator_update(self, update=True) -> None: - value = self._device.get(self.entity_description.key, 0) - self._attr_state = value == 1 + self._attr_is_on = self.is_on if update: self.async_write_ha_state() @@ -490,7 +489,6 @@ class HonConfigSwitchEntity(HonEntity, SwitchEntity): @callback def _handle_coordinator_update(self, update=True) -> None: - value = self._device.settings.get(self.entity_description.key, "0") - self._attr_state = value == "1" + self._attr_is_on = self.is_on if update: self.async_write_ha_state() -- 2.39.5 From a687c7715d24ce5052f9b27d85826973b210b2a0 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 10 Jul 2023 00:22:40 +0200 Subject: [PATCH 159/205] Set switches unavailable if not changable --- custom_components/hon/switch.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index c37e299..bb93475 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -405,11 +405,16 @@ class HonSwitchEntity(HonEntity, SwitchEntity): @property def available(self) -> bool: """Return True if entity is available.""" - return ( - super().available - and int(self._device.get("remoteCtrValid", 1)) == 1 - and self._device.get("attributes.lastConnEvent.category") != "DISCONNECTED" - ) + if not super().available: + return False + if not self._device.get("remoteCtrValid", 1) == 1: + return False + if self._device.get("attributes.lastConnEvent.category") == "DISCONNECTED": + return False + setting = self._device.settings[f"settings.{self.entity_description.key}"] + if isinstance(setting, HonParameterRange) and len(setting.values) < 2: + return False + return True @callback def _handle_coordinator_update(self, update=True) -> None: -- 2.39.5 From 35a07932e6866f325dc8ab5550aa7f8b66e60d60 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 10 Jul 2023 00:27:37 +0200 Subject: [PATCH 160/205] Bump version --- README.md | 60 ++++++++++++++--------------- custom_components/hon/manifest.json | 4 +- 2 files changed, 31 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index d8e2c47..91ffe35 100644 --- a/README.md +++ b/README.md @@ -148,7 +148,7 @@ For every device exists a button under diagnostics which can be used to log all | 10° Heating | `heat-wave` | `switch` | `10degreeHeatingStatus` | | Air Conditioner | `air-conditioner` | `climate` | `settings` | | Echo | `account-voice` | `switch` | `echoStatus` | -| Eco Mode | | `switch` | `ecoMode` | +| Eco Mode | `sprout` | `switch` | `ecoMode` | | Eco Pilot | `run` | `select` | `settings.humanSensingStatus` | | Health Mode | `medication-outline` | `switch` | `healthMode` | | Night Mode | `bed` | `switch` | `silentSleepStatus` | @@ -179,14 +179,14 @@ For every device exists a button under diagnostics which can be used to log all #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | -| Aroma Time Off | `thermometer` | `number` | `settings.aromaTimeOff` | -| Aroma Time On | `thermometer` | `number` | `settings.aromaTimeOn` | -| Diffuser Level | | `select` | `settings.aromaStatus` | +| Aroma Time Off | `scent-off` | `number` | `settings.aromaTimeOff` | +| Aroma Time On | `scent` | `number` | `settings.aromaTimeOn` | +| Diffuser Level | `air-filter` | `select` | `settings.aromaStatus` | | Light status | | `light` | `settings.lightStatus` | | Lock Status | | `lock` | `lockStatus` | -| Mode | `run` | `select` | `settings.machMode` | -| Pollen Level | | `number` | `settings.pollenLevel` | -| Touch Tone | | `switch` | `touchToneStatus` | +| Mode | `play` | `select` | `settings.machMode` | +| Pollen Level | `flower-pollen` | `number` | `settings.pollenLevel` | +| Touch Tone | `account-voice` | `switch` | `touchToneStatus` | #### Sensors | Name | Icon | Entity | Key | | --- | --- | --- | --- | @@ -360,8 +360,8 @@ For every device exists a button under diagnostics which can be used to log all #### Configs | Name | Icon | Entity | Key | | --- | --- | --- | --- | -| Anti-Crease | `timer` | `switch` | `startProgram.antiCreaseTime` | -| Anti-Crease | `timer` | `switch` | `startProgram.anticrease` | +| Anti-Crease | `iron` | `switch` | `startProgram.antiCreaseTime` | +| Anti-Crease | `iron` | `switch` | `startProgram.anticrease` | | Delay time | `timer-plus` | `number` | `startProgram.delayTime` | | Dry Time | | `number` | `startProgram.dryTime` | | Dry Time | `timer` | `select` | `startProgram.dryTimeMM` | @@ -369,14 +369,13 @@ For every device exists a button under diagnostics which can be used to log all | Energy Label | `lightning-bolt-circle` | `sensor` | `startProgram.energyLabel` | | Program | | `select` | `startProgram.program` | | Steam Type | `weather-dust` | `sensor` | `steamType` | -| Steam level | `smoke` | `sensor` | `startProgram.steamLevel` | | Sterilization | `clock-start` | `switch` | `startProgram.sterilizationStatus` | | Suggested Load | `weight-kilogram` | `sensor` | `startProgram.suggestedLoadD` | | Temperature level | `thermometer` | `number` | `startProgram.tempLevel` | #### Sensors | Name | Icon | Entity | Key | | --- | --- | --- | --- | -| Anti-Crease | | `binary_sensor` | `anticrease` | +| Anti-Crease | `iron` | `binary_sensor` | `anticrease` | | Connection | | `binary_sensor` | `attributes.lastConnEvent.category` | | Door | | `binary_sensor` | `doorStatus` | | Dry level | `hair-dryer` | `sensor` | `dryLevel` | @@ -386,7 +385,6 @@ For every device exists a button under diagnostics which can be used to log all | Program Phase | `washing-machine` | `sensor` | `prPhase` | | Remaining Time | `timer` | `sensor` | `remainingTimeMM` | | Start Time | `clock-start` | `sensor` | `delayTime` | -| Steam level | `smoke` | `sensor` | `steamLevel` | | Temperature level | `thermometer` | `sensor` | `tempLevel` | ### Wine Cellar @@ -420,8 +418,8 @@ For every device exists a button under diagnostics which can be used to log all | Name | Icon | Entity | Key | | --- | --- | --- | --- | | Acqua Plus | `water-plus` | `switch` | `startProgram.acquaplus` | -| Anti-Crease | `timer` | `switch` | `startProgram.antiCreaseTime` | -| Anti-Crease | `timer` | `switch` | `startProgram.anticrease` | +| Anti-Crease | `iron` | `switch` | `startProgram.antiCreaseTime` | +| Anti-Crease | `iron` | `switch` | `startProgram.anticrease` | | Auto Dose Detergent | `cup` | `switch` | `startProgram.autoDetergentStatus` | | Auto Dose Softener | `teddy-bear` | `switch` | `startProgram.autoSoftenerStatus` | | Delay Status | `timer-check` | `switch` | `startProgram.delayStatus` | @@ -443,9 +441,8 @@ For every device exists a button under diagnostics which can be used to log all | Rinse Iterations | `rotate-right` | `number` | `startProgram.rinseIterations` | | Soak Prewash Selection | `tshirt-crew` | `switch` | `startProgram.haier_SoakPrewashSelection` | | Spin speed | `numeric` | `select` | `startProgram.spinSpeed` | -| Steam Level | `weather-dust` | `number` | `startProgram.steamLevel` | | Steam Type | `weather-dust` | `sensor` | `steamType` | -| Steam level | `smoke` | `sensor` | `startProgram.steamLevel` | +| Steam level | `weather-dust` | `select` | `startProgram.steamLevel` | | Sterilization | `clock-start` | `switch` | `startProgram.sterilizationStatus` | | Suggested Load | `weight-kilogram` | `sensor` | `startProgram.suggestedLoadW` | | Suggested Load | `weight-kilogram` | `sensor` | `startProgram.suggestedLoadD` | @@ -457,8 +454,8 @@ For every device exists a button under diagnostics which can be used to log all #### Sensors | Name | Icon | Entity | Key | | --- | --- | --- | --- | -| Acqua Plus | | `binary_sensor` | `acquaplus` | -| Anti-Crease | | `binary_sensor` | `anticrease` | +| Acqua Plus | `water-plus` | `binary_sensor` | `acquaplus` | +| Anti-Crease | `iron` | `binary_sensor` | `anticrease` | | Current Electricity Used | `lightning-bolt` | `sensor` | `currentElectricityUsed` | | Current Temperature | `thermometer` | `sensor` | `temp` | | Current Water Used | `water` | `sensor` | `currentWaterUsed` | @@ -467,19 +464,19 @@ For every device exists a button under diagnostics which can be used to log all | Door Lock | | `binary_sensor` | `doorLockStatus` | | Dry level | `hair-dryer` | `sensor` | `dryLevel` | | Error | `math-log` | `sensor` | `errors` | -| Extra Rinse 1 | | `binary_sensor` | `extraRinse1` | -| Extra Rinse 2 | | `binary_sensor` | `extraRinse2` | -| Extra Rinse 3 | | `binary_sensor` | `extraRinse3` | -| Good Night Mode | | `binary_sensor` | `goodNight` | +| Extra Rinse 1 | `numeric-1-box-multiple-outline` | `binary_sensor` | `extraRinse1` | +| Extra Rinse 2 | `numeric-2-box-multiple-outline` | `binary_sensor` | `extraRinse2` | +| Extra Rinse 3 | `numeric-3-box-multiple-outline` | `binary_sensor` | `extraRinse3` | +| Good Night Mode | `weather-night` | `binary_sensor` | `goodNight` | | Machine Status | `information` | `sensor` | `machMode` | -| Pre Wash | | `binary_sensor` | `startProgram.prewash` | +| Pre Wash | `tshirt-crew` | `binary_sensor` | `prewash` | | Program | `play` | `sensor` | `programName` | | Program Phase | `washing-machine` | `sensor` | `prPhase` | | Remaining Time | `timer` | `sensor` | `remainingTimeMM` | | Remote Control | `remote` | `binary_sensor` | `attributes.lastConnEvent.category` | | Spin Speed | `speedometer` | `sensor` | `spinSpeed` | | Start Time | `clock-start` | `sensor` | `delayTime` | -| Steam level | `smoke` | `sensor` | `steamLevel` | +| Steam level | `weather-dust` | `sensor` | `steamLevel` | | Temperature level | `thermometer` | `sensor` | `tempLevel` | | Total Power | | `sensor` | `totalElectricityUsed` | | Total Wash Cycle | `counter` | `sensor` | `totalWashCycle` | @@ -513,7 +510,7 @@ For every device exists a button under diagnostics which can be used to log all | Rinse Iterations | `rotate-right` | `number` | `startProgram.rinseIterations` | | Soak Prewash Selection | `tshirt-crew` | `switch` | `startProgram.haier_SoakPrewashSelection` | | Spin speed | `numeric` | `select` | `startProgram.spinSpeed` | -| Steam Level | `weather-dust` | `number` | `startProgram.steamLevel` | +| Steam level | `weather-dust` | `select` | `startProgram.steamLevel` | | Suggested Load | `weight-kilogram` | `sensor` | `startProgram.suggestedLoadW` | | Suggested weight | `weight-kilogram` | `sensor` | `startProgram.weight` | | Temperature | `thermometer` | `select` | `startProgram.temp` | @@ -522,7 +519,7 @@ For every device exists a button under diagnostics which can be used to log all #### Sensors | Name | Icon | Entity | Key | | --- | --- | --- | --- | -| Acqua Plus | | `binary_sensor` | `acquaplus` | +| Acqua Plus | `water-plus` | `binary_sensor` | `acquaplus` | | Current Electricity Used | `lightning-bolt` | `sensor` | `currentElectricityUsed` | | Current Temperature | `thermometer` | `sensor` | `temp` | | Current Water Used | `water` | `sensor` | `currentWaterUsed` | @@ -530,17 +527,18 @@ For every device exists a button under diagnostics which can be used to log all | Door | | `binary_sensor` | `doorStatus` | | Door Lock | | `binary_sensor` | `doorLockStatus` | | Error | `math-log` | `sensor` | `errors` | -| Extra Rinse 1 | | `binary_sensor` | `extraRinse1` | -| Extra Rinse 2 | | `binary_sensor` | `extraRinse2` | -| Extra Rinse 3 | | `binary_sensor` | `extraRinse3` | -| Good Night Mode | | `binary_sensor` | `goodNight` | +| Extra Rinse 1 | `numeric-1-box-multiple-outline` | `binary_sensor` | `extraRinse1` | +| Extra Rinse 2 | `numeric-2-box-multiple-outline` | `binary_sensor` | `extraRinse2` | +| Extra Rinse 3 | `numeric-3-box-multiple-outline` | `binary_sensor` | `extraRinse3` | +| Good Night Mode | `weather-night` | `binary_sensor` | `goodNight` | | Machine Status | `information` | `sensor` | `machMode` | -| Pre Wash | | `binary_sensor` | `startProgram.prewash` | +| Pre Wash | `tshirt-crew` | `binary_sensor` | `prewash` | | Program | `play` | `sensor` | `programName` | | Program Phase | `washing-machine` | `sensor` | `prPhase` | | Remaining Time | `timer` | `sensor` | `remainingTimeMM` | | Remote Control | `remote` | `binary_sensor` | `attributes.lastConnEvent.category` | | Spin Speed | `speedometer` | `sensor` | `spinSpeed` | +| Steam level | `weather-dust` | `sensor` | `steamLevel` | | Total Power | | `sensor` | `totalElectricityUsed` | | Total Wash Cycle | `counter` | `sensor` | `totalWashCycle` | | Total Water | | `sensor` | `totalWaterUsed` | diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index b68f53e..8f5656e 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -9,7 +9,7 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": [ - "pyhOn==0.14.7" + "pyhOn==0.14.8" ], - "version": "0.9.0-beta.8" + "version": "0.9.0-beta.9" } -- 2.39.5 From 9dc98953a274fc0210d8b3db015cdec62b6c6f6d Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 10 Jul 2023 00:48:57 +0200 Subject: [PATCH 161/205] Add dirt level select entity --- README.md | 6 ++++-- custom_components/hon/select.py | 7 +++++++ custom_components/hon/sensor.py | 2 +- custom_components/hon/translations/cs.json | 9 +++++++++ custom_components/hon/translations/de.json | 9 +++++++++ custom_components/hon/translations/el.json | 9 +++++++++ custom_components/hon/translations/en.json | 9 +++++++++ custom_components/hon/translations/es.json | 9 +++++++++ custom_components/hon/translations/fr.json | 9 +++++++++ custom_components/hon/translations/he.json | 9 +++++++++ custom_components/hon/translations/hr.json | 9 +++++++++ custom_components/hon/translations/it.json | 9 +++++++++ custom_components/hon/translations/nl.json | 9 +++++++++ custom_components/hon/translations/pl.json | 9 +++++++++ custom_components/hon/translations/pt.json | 9 +++++++++ custom_components/hon/translations/ro.json | 9 +++++++++ custom_components/hon/translations/ru.json | 9 +++++++++ custom_components/hon/translations/sk.json | 9 +++++++++ custom_components/hon/translations/sl.json | 9 +++++++++ custom_components/hon/translations/sr.json | 9 +++++++++ custom_components/hon/translations/tr.json | 9 +++++++++ custom_components/hon/translations/zh.json | 9 +++++++++ scripts/translation_keys.py | 2 ++ 23 files changed, 185 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 91ffe35..2507253 100644 --- a/README.md +++ b/README.md @@ -424,6 +424,7 @@ For every device exists a button under diagnostics which can be used to log all | Auto Dose Softener | `teddy-bear` | `switch` | `startProgram.autoSoftenerStatus` | | Delay Status | `timer-check` | `switch` | `startProgram.delayStatus` | | Delay Time | `timer-plus` | `number` | `startProgram.delayTime` | +| Dirty level | `liquid-spot` | `select` | `startProgram.dirtyLevel` | | Dry Time | | `number` | `startProgram.dryTime` | | Dry Time | `timer` | `select` | `startProgram.dryTimeMM` | | Dry level | `hair-dryer` | `select` | `startProgram.dryLevel` | @@ -459,7 +460,7 @@ For every device exists a button under diagnostics which can be used to log all | Current Electricity Used | `lightning-bolt` | `sensor` | `currentElectricityUsed` | | Current Temperature | `thermometer` | `sensor` | `temp` | | Current Water Used | `water` | `sensor` | `currentWaterUsed` | -| Dirt level | `liquid-spot` | `sensor` | `dirtyLevel` | +| Dirty level | `liquid-spot` | `sensor` | `dirtyLevel` | | Door | | `binary_sensor` | `doorStatus` | | Door Lock | | `binary_sensor` | `doorLockStatus` | | Dry level | `hair-dryer` | `sensor` | `dryLevel` | @@ -496,6 +497,7 @@ For every device exists a button under diagnostics which can be used to log all | Auto Dose Softener | `teddy-bear` | `switch` | `startProgram.autoSoftenerStatus` | | Delay Status | `timer-check` | `switch` | `startProgram.delayStatus` | | Delay Time | `timer-plus` | `number` | `startProgram.delayTime` | +| Dirty level | `liquid-spot` | `select` | `startProgram.dirtyLevel` | | Energy Label | `lightning-bolt-circle` | `sensor` | `startProgram.energyLabel` | | Extra Rinse 1 | `numeric-1-box-multiple-outline` | `switch` | `startProgram.extraRinse1` | | Extra Rinse 2 | `numeric-2-box-multiple-outline` | `switch` | `startProgram.extraRinse2` | @@ -523,7 +525,7 @@ For every device exists a button under diagnostics which can be used to log all | Current Electricity Used | `lightning-bolt` | `sensor` | `currentElectricityUsed` | | Current Temperature | `thermometer` | `sensor` | `temp` | | Current Water Used | `water` | `sensor` | `currentWaterUsed` | -| Dirt level | `liquid-spot` | `sensor` | `dirtyLevel` | +| Dirty level | `liquid-spot` | `sensor` | `dirtyLevel` | | Door | | `binary_sensor` | `doorStatus` | | Door Lock | | `binary_sensor` | `doorLockStatus` | | Error | `math-log` | `sensor` | `errors` | diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index d0deabf..906b690 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -56,6 +56,13 @@ SELECTS = { translation_key="steam_level", option_list=const.STEAM_LEVEL, ), + HonConfigSelectEntityDescription( + key="startProgram.dirtyLevel", + name="Dirty level", + icon="mdi:liquid-spot", + translation_key="dirt_level", + option_list=const.DIRTY_LEVEL, + ), ), "TD": ( HonConfigSelectEntityDescription( diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 89e9e47..791f99d 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -157,7 +157,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { ), HonSensorEntityDescription( key="dirtyLevel", - name="Dirt level", + name="Dirty level", icon="mdi:liquid-spot", device_class=SensorDeviceClass.ENUM, translation_key="dirt_level", diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index 6f31cfc..6b20f1c 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -1650,6 +1650,15 @@ "synthetic": "Synthetic" }, "name": "Úroveň páry" + }, + "dirt_level": { + "state": { + "little": "Málo", + "normal": "Normální", + "very": "Velmi", + "unknown": "unknown" + }, + "name": "Míra znečištění" } }, "switch": { diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index ab590b0..addc747 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -1650,6 +1650,15 @@ "synthetic": "Synthetik" }, "name": "Dampfstufe" + }, + "dirt_level": { + "state": { + "little": "Wenig", + "normal": "Normal", + "very": "Sehr", + "unknown": "unknown" + }, + "name": "Verschmutzungsgrad" } }, "switch": { diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index f65cde0..2976aa6 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -1650,6 +1650,15 @@ "synthetic": "Συνθετικά" }, "name": "Επίπεδο ατμού" + }, + "dirt_level": { + "state": { + "little": "Λίγη", + "normal": "Κανονική", + "very": "Πολύ", + "unknown": "unknown" + }, + "name": "Επίπεδο βρωμιάς" } }, "switch": { diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 052c8a9..eb2bb92 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -1677,6 +1677,15 @@ "synthetic": "Synthetic" }, "name": "Steam Level" + }, + "dirt_level": { + "state": { + "little": "Little", + "normal": "Normal", + "very": "Very", + "unknown": "unknown" + }, + "name": "Dirt level" } }, "switch": { diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index 57548a6..8d4cad9 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -1650,6 +1650,15 @@ "synthetic": "Synthetic" }, "name": "Nivel de vapor" + }, + "dirt_level": { + "state": { + "little": "Poco", + "normal": "Normal", + "very": "Mucho", + "unknown": "unknown" + }, + "name": "Nivel de suciedad" } }, "switch": { diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index e937f35..f97a77a 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -1650,6 +1650,15 @@ "synthetic": "Synthetic" }, "name": "Niveau de vapeur" + }, + "dirt_level": { + "state": { + "little": "Faible", + "normal": "Normal", + "very": "Élevé", + "unknown": "unknown" + }, + "name": "Niveau de saleté" } }, "switch": { diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index 115574a..fb71888 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -771,6 +771,15 @@ "synthetic": "מְלָאכוּתִי" }, "name": "מפלס קיטור" + }, + "dirt_level": { + "state": { + "little": "קטן", + "normal": "נוֹרמָלִי", + "very": "מאוד", + "unknown": "unknown" + }, + "name": "רמת עפר" } }, "switch": { diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index 01cd213..96e38c8 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -1650,6 +1650,15 @@ "synthetic": "Sintetika" }, "name": "Razina pare" + }, + "dirt_level": { + "state": { + "little": "Neznatno", + "normal": "Uobičajeno", + "very": "Izuzetno", + "unknown": "unknown" + }, + "name": "Stupanj zaprljanosti" } }, "switch": { diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index cb9c462..02b9ce0 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -1655,6 +1655,15 @@ "synthetic": "Sintetici" }, "name": "Livello vapore" + }, + "dirt_level": { + "state": { + "little": "Poco", + "normal": "Normale", + "very": "Molto", + "unknown": "unknown" + }, + "name": "Livello di sporco" } }, "switch": { diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index a3ab35b..e82b6ef 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -1650,6 +1650,15 @@ "synthetic": "Synthetic" }, "name": "Stoomniveau" + }, + "dirt_level": { + "state": { + "little": "Weinig", + "normal": "Normaal", + "very": "Heel", + "unknown": "unknown" + }, + "name": "Vuilheid" } }, "switch": { diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index 8c8bd49..2259488 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -1650,6 +1650,15 @@ "synthetic": "Syntetyczne" }, "name": "Poziom pary" + }, + "dirt_level": { + "state": { + "little": "Niskie", + "normal": "Standardowe", + "very": "Wysokie", + "unknown": "unknown" + }, + "name": "Stopień zabrudzenia" } }, "switch": { diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index 9da78b9..68b3506 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -1650,6 +1650,15 @@ "synthetic": "Sintéticos" }, "name": "Nível de vapor" + }, + "dirt_level": { + "state": { + "little": "Pouco", + "normal": "Normal", + "very": "Muito", + "unknown": "unknown" + }, + "name": "Nível de sujidade" } }, "switch": { diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index 7aefe02..ac8bfa1 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -1650,6 +1650,15 @@ "synthetic": "Synthetic" }, "name": "Nivel abur" + }, + "dirt_level": { + "state": { + "little": "Puțin", + "normal": "Normal", + "very": "Foarte", + "unknown": "unknown" + }, + "name": "Nivel de murdărie" } }, "switch": { diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index d78cfb6..f6af1fe 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -1650,6 +1650,15 @@ "synthetic": "Синтетика" }, "name": "Уровень пара" + }, + "dirt_level": { + "state": { + "little": "Мало", + "normal": "Нормально", + "very": "Очень", + "unknown": "unknown" + }, + "name": "Уровень загрязнения" } }, "switch": { diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index 374d661..f34d855 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -1650,6 +1650,15 @@ "synthetic": "Synthetic" }, "name": "Úroveň nastavenia pary" + }, + "dirt_level": { + "state": { + "little": "Málo", + "normal": "Normálne", + "very": "Veľa", + "unknown": "unknown" + }, + "name": "Úroveň znečistenia" } }, "switch": { diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index e7068ad..2d1ea9c 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -1650,6 +1650,15 @@ "synthetic": "Sintetika" }, "name": "Količina pare" + }, + "dirt_level": { + "state": { + "little": "Malo", + "normal": "Normalno", + "very": "Zelo", + "unknown": "unknown" + }, + "name": "Stopnja umazanije" } }, "switch": { diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index d3ef545..357f0f4 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -1650,6 +1650,15 @@ "synthetic": "Sintetika" }, "name": "Nivo pare" + }, + "dirt_level": { + "state": { + "little": "Malo", + "normal": "Normalno", + "very": "Veoma", + "unknown": "unknown" + }, + "name": "Nivo zaprljanosti" } }, "switch": { diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index c6f8088..30d30b2 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -1650,6 +1650,15 @@ "synthetic": "Synthetic" }, "name": "Buhar Seviyesi" + }, + "dirt_level": { + "state": { + "little": "Az", + "normal": "Normal", + "very": "Çok", + "unknown": "unknown" + }, + "name": "Kir seviyesi" } }, "switch": { diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index f9a0a26..1d62115 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -1650,6 +1650,15 @@ "synthetic": "Synthetic" }, "name": "蒸汽档位" + }, + "dirt_level": { + "state": { + "little": "少量", + "normal": "正常", + "very": "非常", + "unknown": "unknown" + }, + "name": "脏污程度" } }, "switch": { diff --git a/scripts/translation_keys.py b/scripts/translation_keys.py index 8f29d34..2855a0a 100644 --- a/scripts/translation_keys.py +++ b/scripts/translation_keys.py @@ -129,6 +129,7 @@ SELECT = { "steam_level": STEAM_LEVEL, "mode": AP_MACH_MODE, "diffuser": AP_DIFFUSER_LEVEL, + "dirt_level": DIRTY_LEVEL, } PROGRAMS = { @@ -291,6 +292,7 @@ NAMES = { "diffuser": "AP.TITLES.DIFFUSER", "mode": "CUBE90_GLOBAL.GENERAL.MODE", "steam_level": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.STEAM_LEVEL", + "dirt_level": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.DIRTY_LEVEL", }, "sensor": { "dry_levels": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_LEVEL", -- 2.39.5 From fb8fba259a177e404ce8712f3cab7fce8fa4e702 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 10 Jul 2023 01:00:30 +0200 Subject: [PATCH 162/205] Add hygiene switch #91 --- README.md | 2 ++ custom_components/hon/switch.py | 6 ++++++ custom_components/hon/translations/cs.json | 3 +++ custom_components/hon/translations/de.json | 3 +++ custom_components/hon/translations/el.json | 3 +++ custom_components/hon/translations/en.json | 3 +++ custom_components/hon/translations/es.json | 3 +++ custom_components/hon/translations/fr.json | 3 +++ custom_components/hon/translations/he.json | 3 +++ custom_components/hon/translations/hr.json | 3 +++ custom_components/hon/translations/it.json | 3 +++ custom_components/hon/translations/nl.json | 3 +++ custom_components/hon/translations/pl.json | 3 +++ custom_components/hon/translations/pt.json | 3 +++ custom_components/hon/translations/ro.json | 3 +++ custom_components/hon/translations/ru.json | 3 +++ custom_components/hon/translations/sk.json | 3 +++ custom_components/hon/translations/sl.json | 3 +++ custom_components/hon/translations/sr.json | 3 +++ custom_components/hon/translations/tr.json | 3 +++ custom_components/hon/translations/zh.json | 3 +++ scripts/translation_keys.py | 1 + 22 files changed, 66 insertions(+) diff --git a/README.md b/README.md index 2507253..fa3993e 100644 --- a/README.md +++ b/README.md @@ -433,6 +433,7 @@ For every device exists a button under diagnostics which can be used to log all | Extra Rinse 2 | `numeric-2-box-multiple-outline` | `switch` | `startProgram.extraRinse2` | | Extra Rinse 3 | `numeric-3-box-multiple-outline` | `switch` | `startProgram.extraRinse3` | | Good Night | `weather-night` | `switch` | `startProgram.goodNight` | +| Hygiene | `lotion-plus` | `switch` | `startProgram.hygiene` | | Keep Fresh | `refresh-circle` | `switch` | `startProgram.permanentPressStatus` | | Liquid Detergent Dose | `cup-water` | `sensor` | `startProgram.liquidDetergentDose` | | Main Wash Time | `clock-start` | `number` | `startProgram.mainWashTime` | @@ -503,6 +504,7 @@ For every device exists a button under diagnostics which can be used to log all | Extra Rinse 2 | `numeric-2-box-multiple-outline` | `switch` | `startProgram.extraRinse2` | | Extra Rinse 3 | `numeric-3-box-multiple-outline` | `switch` | `startProgram.extraRinse3` | | Good Night | `weather-night` | `switch` | `startProgram.goodNight` | +| Hygiene | `lotion-plus` | `switch` | `startProgram.hygiene` | | Keep Fresh | `refresh-circle` | `switch` | `startProgram.permanentPressStatus` | | Liquid Detergent Dose | `cup-water` | `sensor` | `startProgram.liquidDetergentDose` | | Main Wash Time | `clock-start` | `number` | `startProgram.mainWashTime` | diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index bb93475..e96a681 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -116,6 +116,12 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { icon="mdi:weather-night", translation_key="good_night", ), + HonConfigSwitchEntityDescription( + key="startProgram.hygiene", + name="Hygiene", + icon="mdi:lotion-plus", + translation_key="hygiene", + ), ), "TD": ( HonControlSwitchEntityDescription( diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index 6b20f1c..7540f0c 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -1772,6 +1772,9 @@ }, "touch_tone": { "name": "Hlasitost tónu klepnutí" + }, + "hygiene": { + "name": "Hygienický plus" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index addc747..1d90d63 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -1772,6 +1772,9 @@ }, "touch_tone": { "name": "Tastentonlautstärke" + }, + "hygiene": { + "name": "Hygiene plus" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index 2976aa6..93fe842 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -1772,6 +1772,9 @@ }, "touch_tone": { "name": "Ένταση τόνου αφής" + }, + "hygiene": { + "name": "Hygiene plus" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index eb2bb92..88f2fe9 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -1799,6 +1799,9 @@ }, "touch_tone": { "name": "Touch tone volume" + }, + "hygiene": { + "name": "Hygiene plus" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index 8d4cad9..5bef66e 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -1772,6 +1772,9 @@ }, "touch_tone": { "name": "Volumen del tono táctil" + }, + "hygiene": { + "name": "Higiene extra" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index f97a77a..ecafc19 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -1772,6 +1772,9 @@ }, "touch_tone": { "name": "Volume des tonalités" + }, + "hygiene": { + "name": "Hygiène plus" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index fb71888..e9bbdde 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -893,6 +893,9 @@ }, "touch_tone": { "name": "Touch tone volume" + }, + "hygiene": { + "name": "היגיינה פלוס" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index 96e38c8..277a235 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -1772,6 +1772,9 @@ }, "touch_tone": { "name": "Glasnoća tona pri dodiru" + }, + "hygiene": { + "name": "Hygiene Plus" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index 02b9ce0..75e3098 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -1777,6 +1777,9 @@ }, "touch_tone": { "name": "Volume Tasti" + }, + "hygiene": { + "name": "Hygiene plus" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index e82b6ef..9dd4271 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -1772,6 +1772,9 @@ }, "touch_tone": { "name": "Volume van geluid bij aanraking" + }, + "hygiene": { + "name": "Hygiëne plus" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index 2259488..b742691 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -1772,6 +1772,9 @@ }, "touch_tone": { "name": "Dźwięk przycisku dotykowego" + }, + "hygiene": { + "name": "Higiena plus" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index 68b3506..4cf49c1 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -1772,6 +1772,9 @@ }, "touch_tone": { "name": "Volume do tom de toque" + }, + "hygiene": { + "name": "Higiene mais" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index ac8bfa1..c0a1c0e 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -1772,6 +1772,9 @@ }, "touch_tone": { "name": "Volum la atingerea tastelor" + }, + "hygiene": { + "name": "Igienizare plus" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index f6af1fe..7268daa 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -1772,6 +1772,9 @@ }, "touch_tone": { "name": "Громкость сенсорных кнопок" + }, + "hygiene": { + "name": "Гигиена плюс" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index f34d855..f6bb734 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -1772,6 +1772,9 @@ }, "touch_tone": { "name": "Hlasitosť tónu dotyku" + }, + "hygiene": { + "name": "Hygiena plus" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index 2d1ea9c..9b50292 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -1772,6 +1772,9 @@ }, "touch_tone": { "name": "Glasnost tona dotika" + }, + "hygiene": { + "name": "Higiena plus" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index 357f0f4..61e12aa 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -1772,6 +1772,9 @@ }, "touch_tone": { "name": "Jačina tona dodira" + }, + "hygiene": { + "name": "Higijenski plus" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index 30d30b2..4880fb9 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -1772,6 +1772,9 @@ }, "touch_tone": { "name": "Dokunma tonu seviyesi" + }, + "hygiene": { + "name": "Hygiene plus" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index 1d62115..684d7a5 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -1772,6 +1772,9 @@ }, "touch_tone": { "name": "按键音量" + }, + "hygiene": { + "name": "卫生增强" } }, "binary_sensor": { diff --git a/scripts/translation_keys.py b/scripts/translation_keys.py index 2855a0a..a427cb6 100644 --- a/scripts/translation_keys.py +++ b/scripts/translation_keys.py @@ -240,6 +240,7 @@ NAMES = { "super_freeze": "REF_CMD&CTRL.MODALITIES.SUPER_FREEZE", "refrigerator": "REF.NAME", "touch_tone": "AP.FOOTER_MENU_MORE.TOUCH_TONE_VOLUME", + "hygiene": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.HYGIENE", }, "binary_sensor": { "door_lock": "WASHING_CMD&CTRL.CHECK_UP_RESULTS.DOOR_LOCK", -- 2.39.5 From a9e21608d842bc79b4e1bb548094469d11d2c59d Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Tue, 11 Jul 2023 00:17:19 +0200 Subject: [PATCH 163/205] Fix for setting some climate modes #84 --- custom_components/hon/climate.py | 30 +++++++++++++++++++---------- custom_components/hon/manifest.json | 4 ++-- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/custom_components/hon/climate.py b/custom_components/hon/climate.py index e772072..8541335 100644 --- a/custom_components/hon/climate.py +++ b/custom_components/hon/climate.py @@ -6,7 +6,6 @@ from homeassistant.components.climate import ( ClimateEntityDescription, ) from homeassistant.components.climate.const import ( - FAN_OFF, SWING_OFF, SWING_BOTH, SWING_VERTICAL, @@ -22,7 +21,7 @@ from homeassistant.const import ( from homeassistant.core import callback from pyhon.appliance import HonAppliance -from .const import HON_HVAC_MODE, HON_FAN, DOMAIN +from .const import HON_HVAC_MODE, HON_FAN, DOMAIN, HON_HVAC_PROGRAM from .hon import HonEntity _LOGGER = logging.getLogger(__name__) @@ -123,9 +122,6 @@ class HonACClimateEntity(HonEntity, ClimateEntity): self._attr_preset_modes = [] for mode in device.settings["startProgram.program"].values: self._attr_preset_modes.append(mode) - self._attr_fan_modes = [FAN_OFF] - for mode in device.settings["settings.windSpeed"].values: - self._attr_fan_modes.append(HON_FAN[int(mode)]) self._attr_swing_modes = [ SWING_OFF, SWING_VERTICAL, @@ -181,7 +177,11 @@ class HonACClimateEntity(HonEntity, ClimateEntity): self._device.settings["settings.onOffStatus"].value = "1" setting = self._device.settings["settings.machMode"] modes = {HON_HVAC_MODE[int(number)]: number for number in setting.values} - setting.value = modes[hvac_mode] + if hvac_mode in modes: + setting.value = modes[hvac_mode] + else: + await self.async_set_preset_mode(HON_HVAC_PROGRAM[hvac_mode]) + return await self._device.commands["settings"].send() self.async_write_ha_state() @@ -192,7 +192,7 @@ class HonACClimateEntity(HonEntity, ClimateEntity): async def async_set_preset_mode(self, preset_mode: str) -> None: """Set the new preset mode.""" - if program := self._device.settings.get(f"startProgram.program"): + if program := self._device.settings.get("startProgram.program"): program.value = preset_mode self._device.sync_command("startProgram", "settings") self._set_temperature_bound() @@ -202,15 +202,24 @@ class HonACClimateEntity(HonEntity, ClimateEntity): await self._device.commands["startProgram"].send() self.async_write_ha_state() + @property + def fan_modes(self) -> list[str]: + """Return the list of available fan modes.""" + fan_modes = [] + for mode in reversed(self._device.settings["settings.windSpeed"].values): + fan_modes.append(HON_FAN[int(mode)]) + return fan_modes + @property def fan_mode(self) -> str | None: """Return the fan setting.""" return HON_FAN[self._device.get("windSpeed")] async def async_set_fan_mode(self, fan_mode): - mode_number = list(HON_FAN.values()).index(fan_mode) - mode = list(HON_FAN.keys())[mode_number] - self._device.settings["settings.windSpeed"].value = str(mode) + fan_modes = {} + for mode in reversed(self._device.settings["settings.windSpeed"].values): + fan_modes[HON_FAN[int(mode)]] = mode + self._device.settings["settings.windSpeed"].value = str(fan_modes[fan_mode]) self._attr_fan_mode = fan_mode await self._device.commands["settings"].send() self.async_write_ha_state() @@ -249,6 +258,7 @@ class HonACClimateEntity(HonEntity, ClimateEntity): self._attr_target_temperature = self.target_temperature self._attr_current_temperature = self.current_temperature self._attr_hvac_mode = self.hvac_mode + self._attr_fan_modes = self.fan_modes self._attr_fan_mode = self.fan_mode self._attr_swing_mode = self.swing_mode if update: diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 8f5656e..98a7391 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -9,7 +9,7 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": [ - "pyhOn==0.14.8" + "pyhOn==0.14.9" ], - "version": "0.9.0-beta.9" + "version": "0.9.0-beta.10" } -- 2.39.5 From f3325f0ff559ccbce24b321c277314b2d14c1411 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Wed, 12 Jul 2023 00:18:44 +0200 Subject: [PATCH 164/205] Improve icons/translations of air purifier #72 --- README.md | 10 +++++----- custom_components/hon/select.py | 2 +- custom_components/hon/sensor.py | 13 ++++++++++++- custom_components/hon/translations/cs.json | 12 ++++++++++++ custom_components/hon/translations/de.json | 12 ++++++++++++ custom_components/hon/translations/el.json | 12 ++++++++++++ custom_components/hon/translations/en.json | 12 ++++++++++++ custom_components/hon/translations/es.json | 12 ++++++++++++ custom_components/hon/translations/fr.json | 12 ++++++++++++ custom_components/hon/translations/he.json | 12 ++++++++++++ custom_components/hon/translations/hr.json | 12 ++++++++++++ custom_components/hon/translations/it.json | 12 ++++++++++++ custom_components/hon/translations/nl.json | 12 ++++++++++++ custom_components/hon/translations/pl.json | 12 ++++++++++++ custom_components/hon/translations/pt.json | 12 ++++++++++++ custom_components/hon/translations/ro.json | 12 ++++++++++++ custom_components/hon/translations/ru.json | 12 ++++++++++++ custom_components/hon/translations/sk.json | 12 ++++++++++++ custom_components/hon/translations/sl.json | 12 ++++++++++++ custom_components/hon/translations/sr.json | 12 ++++++++++++ custom_components/hon/translations/tr.json | 12 ++++++++++++ custom_components/hon/translations/zh.json | 12 ++++++++++++ scripts/translation_keys.py | 4 ++++ 23 files changed, 250 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index fa3993e..6021225 100644 --- a/README.md +++ b/README.md @@ -181,7 +181,7 @@ For every device exists a button under diagnostics which can be used to log all | --- | --- | --- | --- | | Aroma Time Off | `scent-off` | `number` | `settings.aromaTimeOff` | | Aroma Time On | `scent` | `number` | `settings.aromaTimeOn` | -| Diffuser Level | `air-filter` | `select` | `settings.aromaStatus` | +| Diffuser Level | `air-purifier` | `select` | `settings.aromaStatus` | | Light status | | `light` | `settings.lightStatus` | | Lock Status | | `lock` | `lockStatus` | | Mode | `play` | `select` | `settings.machMode` | @@ -190,19 +190,19 @@ For every device exists a button under diagnostics which can be used to log all #### Sensors | Name | Icon | Entity | Key | | --- | --- | --- | --- | -| Air Quality | | `sensor` | `airQuality` | +| Air Quality | `weather-dust` | `sensor` | `airQuality` | | CO Level | | `sensor` | `coLevel` | | Error | `math-log` | `sensor` | `errors` | | Humidity | | `sensor` | `humidityIndoor` | -| Main Filter Status | | `sensor` | `mainFilterStatus` | +| Main Filter Status | `air-filter` | `sensor` | `mainFilterStatus` | | On | `power-cycle` | `binary_sensor` | `attributes.parameters.onOffStatus` | | PM 10 | | `sensor` | `pm10ValueIndoor` | | PM 2.5 | | `sensor` | `pm2p5ValueIndoor` | -| Pre Filter Status | | `sensor` | `preFilterStatus` | +| Pre Filter Status | `air-filter` | `sensor` | `preFilterStatus` | | Temperature | | `sensor` | `temp` | | Total Work Time | | `sensor` | `totalWorkTime` | | VOC | | `sensor` | `vocValueIndoor` | -| Wind Speed | | `sensor` | `windSpeed` | +| Wind Speed | `fan` | `sensor` | `windSpeed` | ### Dish Washer #### Controls diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index 906b690..130480f 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -153,7 +153,7 @@ SELECTS = { name="Diffuser Level", option_list=const.AP_DIFFUSER_LEVEL, translation_key="diffuser", - icon="mdi:air-filter", + icon="mdi:air-purifier", ), HonSelectEntityDescription( key="settings.machMode", diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 791f99d..5994d95 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -688,11 +688,15 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { HonSensorEntityDescription( key="mainFilterStatus", name="Main Filter Status", + icon="mdi:air-filter", + translation_key="filter_life", native_unit_of_measurement=PERCENTAGE, ), HonSensorEntityDescription( key="preFilterStatus", name="Pre Filter Status", + icon="mdi:air-filter", + translation_key="filter_cleaning", native_unit_of_measurement=PERCENTAGE, ), HonSensorEntityDescription( @@ -746,10 +750,17 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { native_unit_of_measurement=UnitOfTemperature.CELSIUS, translation_key="temperature", ), - HonSensorEntityDescription(key="windSpeed", name="Wind Speed"), + HonSensorEntityDescription( + key="windSpeed", + name="Wind Speed", + icon="mdi:fan", + translation_key="fan_speed", + ), HonSensorEntityDescription( key="airQuality", name="Air Quality", + icon="mdi:weather-dust", + translation_key="air_quality", ), ), } diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index 7540f0c..84a2f6f 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -875,6 +875,18 @@ "synthetic": "Synthetic" }, "name": "Úroveň páry" + }, + "filter_cleaning": { + "name": "Čištění filtru" + }, + "filter_life": { + "name": "Životnost filtru" + }, + "air_quality": { + "name": "Kvalita vzduchu" + }, + "fan_speed": { + "name": "Rychlost ventilátoru" } }, "select": { diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index 1d90d63..3cdbb5e 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -875,6 +875,18 @@ "synthetic": "Synthetik" }, "name": "Dampfstufe" + }, + "filter_cleaning": { + "name": "Reinigung der Filter" + }, + "filter_life": { + "name": "Filterlebensdauer" + }, + "air_quality": { + "name": "Luftqualität" + }, + "fan_speed": { + "name": "Gebläsegeschwindigkeit" } }, "select": { diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index 93fe842..637dfc1 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -875,6 +875,18 @@ "synthetic": "Συνθετικά" }, "name": "Επίπεδο ατμού" + }, + "filter_cleaning": { + "name": "Καθαρισμός φίλτρου" + }, + "filter_life": { + "name": "Φιλτράρετε τη ζωή" + }, + "air_quality": { + "name": "Ποιότητα αέρα" + }, + "fan_speed": { + "name": "Ταχύτητα ανεμιστήρα" } }, "select": { diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 88f2fe9..79e3137 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -895,6 +895,18 @@ "synthetic": "Synthetic" }, "name": "Steam Level" + }, + "filter_cleaning": { + "name": "Filter cleaning" + }, + "filter_life": { + "name": "Filter life" + }, + "air_quality": { + "name": "Air Quality" + }, + "fan_speed": { + "name": "Fan speed" } }, "select": { diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index 5bef66e..7c6efe7 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -875,6 +875,18 @@ "synthetic": "Synthetic" }, "name": "Nivel de vapor" + }, + "filter_cleaning": { + "name": "Limpieza del filtro" + }, + "filter_life": { + "name": "Vida del filtro" + }, + "air_quality": { + "name": "Calidad del aire" + }, + "fan_speed": { + "name": "Velocidad del ventilador" } }, "select": { diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index ecafc19..cab5c7b 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -875,6 +875,18 @@ "synthetic": "Synthetic" }, "name": "Niveau de vapeur" + }, + "filter_cleaning": { + "name": "Nettoyage du filtre" + }, + "filter_life": { + "name": "Durée de vie du filtre" + }, + "air_quality": { + "name": "Qualité d’air" + }, + "fan_speed": { + "name": "Vitesse du ventilateur" } }, "select": { diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index e9bbdde..5c1c6b6 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -431,6 +431,18 @@ "synthetic": "מְלָאכוּתִי" }, "name": "מפלס קיטור" + }, + "filter_cleaning": { + "name": "Filter cleaning" + }, + "filter_life": { + "name": "Filter life" + }, + "air_quality": { + "name": "Air Quality" + }, + "fan_speed": { + "name": "Fan speed" } }, "select": { diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index 277a235..daab723 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -875,6 +875,18 @@ "synthetic": "Sintetika" }, "name": "Razina pare" + }, + "filter_cleaning": { + "name": "Čišćenje filtra" + }, + "filter_life": { + "name": "Radni vijek filtra" + }, + "air_quality": { + "name": "Kvaliteta zraka" + }, + "fan_speed": { + "name": "Brzina ventilatora" } }, "select": { diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index 75e3098..dd88f3b 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -880,6 +880,18 @@ "synthetic": "Sintetici" }, "name": "Livello vapore" + }, + "filter_cleaning": { + "name": "Pulizia del filtro" + }, + "filter_life": { + "name": "Durata filtro" + }, + "air_quality": { + "name": "Qualità dell'Aria" + }, + "fan_speed": { + "name": "Velocità ventole" } }, "select": { diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index 9dd4271..de3333e 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -875,6 +875,18 @@ "synthetic": "Synthetic" }, "name": "Stoomniveau" + }, + "filter_cleaning": { + "name": "Filterreiniging" + }, + "filter_life": { + "name": "Levensduur filter" + }, + "air_quality": { + "name": "Luchtkwaliteit" + }, + "fan_speed": { + "name": "Ventilatorsnelheid" } }, "select": { diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index b742691..fcf3b07 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -875,6 +875,18 @@ "synthetic": "Syntetyczne" }, "name": "Poziom pary" + }, + "filter_cleaning": { + "name": "Czyszczenie filtra" + }, + "filter_life": { + "name": "Żywotność filtra" + }, + "air_quality": { + "name": "Jakość powietrza" + }, + "fan_speed": { + "name": "Prędkość wentylatora" } }, "select": { diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index 4cf49c1..5a82001 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -875,6 +875,18 @@ "synthetic": "Sintéticos" }, "name": "Nível de vapor" + }, + "filter_cleaning": { + "name": "Limpeza do filtro" + }, + "filter_life": { + "name": "Vida do filtro" + }, + "air_quality": { + "name": "Qualidade do ar" + }, + "fan_speed": { + "name": "Velocidade da bomba" } }, "select": { diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index c0a1c0e..7bd066c 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -875,6 +875,18 @@ "synthetic": "Synthetic" }, "name": "Nivel abur" + }, + "filter_cleaning": { + "name": "Curățarea filtrului" + }, + "filter_life": { + "name": "Viața filtrului" + }, + "air_quality": { + "name": "Calitatea aerului" + }, + "fan_speed": { + "name": "Viteza ventilatorului" } }, "select": { diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index 7268daa..177a326 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -875,6 +875,18 @@ "synthetic": "Синтетика" }, "name": "Уровень пара" + }, + "filter_cleaning": { + "name": "Чистка фильтра" + }, + "filter_life": { + "name": "Срок службы фильтра" + }, + "air_quality": { + "name": "Качество воздуха" + }, + "fan_speed": { + "name": "Скорость вентилятора" } }, "select": { diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index f6bb734..ba178c1 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -875,6 +875,18 @@ "synthetic": "Synthetic" }, "name": "Úroveň nastavenia pary" + }, + "filter_cleaning": { + "name": "Čistenie filtra" + }, + "filter_life": { + "name": "Životnosť filtra" + }, + "air_quality": { + "name": "Kvalita vzduchu" + }, + "fan_speed": { + "name": "Rýchlosť ventilátora" } }, "select": { diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index 9b50292..419fd0d 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -875,6 +875,18 @@ "synthetic": "Sintetika" }, "name": "Količina pare" + }, + "filter_cleaning": { + "name": "Čiščenje filtra" + }, + "filter_life": { + "name": "Življenjska doba filtra" + }, + "air_quality": { + "name": "Kakovost zraka" + }, + "fan_speed": { + "name": "Hitrost ventilatorja" } }, "select": { diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index 61e12aa..152af7c 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -875,6 +875,18 @@ "synthetic": "Sintetika" }, "name": "Nivo pare" + }, + "filter_cleaning": { + "name": "Čišćenje filtera" + }, + "filter_life": { + "name": "Trajanje filtera" + }, + "air_quality": { + "name": "Kvalitet vazduha" + }, + "fan_speed": { + "name": "Brzina ventilatora" } }, "select": { diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index 4880fb9..b469240 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -875,6 +875,18 @@ "synthetic": "Synthetic" }, "name": "Buhar Seviyesi" + }, + "filter_cleaning": { + "name": "Filtre temizliği" + }, + "filter_life": { + "name": "Filtre ömrü" + }, + "air_quality": { + "name": "Hava kalitesi" + }, + "fan_speed": { + "name": "Fan hızı" } }, "select": { diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index 684d7a5..eefa1fe 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -875,6 +875,18 @@ "synthetic": "Synthetic" }, "name": "蒸汽档位" + }, + "filter_cleaning": { + "name": "滤网清洁" + }, + "filter_life": { + "name": "过滤器寿命" + }, + "air_quality": { + "name": "空气质量" + }, + "fan_speed": { + "name": "风扇速度" } }, "select": { diff --git a/scripts/translation_keys.py b/scripts/translation_keys.py index a427cb6..dff1c4d 100644 --- a/scripts/translation_keys.py +++ b/scripts/translation_keys.py @@ -350,6 +350,10 @@ NAMES = { "programs_ac": "WC.SET_PROGRAM.PROGRAM", "programs_ref": "WC.SET_PROGRAM.PROGRAM", "voc": "HINTS.WHAT_POLLUTES_THE_AIR_IN_OUR_HOMES.GAS_VOC_TITLE", + "filter_cleaning": "AP.MAINTENANCE.FILTER_CLEANING", + "filter_life": "AP.MAINTENANCE.FILTER_LIFE", + "air_quality": "AP.DISCOVER.AIR_QUALITY", + "fan_speed": "AP.TITLES.FAN_SPEED", }, "number": { "power_management": "HINTS.COOKING_WITH_INDUCTION.POWER_MANAGEMENT", -- 2.39.5 From fb09c2e5598ecf4f946f331e92764f1b7148a5f3 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Wed, 12 Jul 2023 00:20:35 +0200 Subject: [PATCH 165/205] Improve hood controls --- README.md | 5 ++--- custom_components/hon/button.py | 14 -------------- custom_components/hon/fan.py | 15 ++++++++++----- custom_components/hon/light.py | 12 +++++++++--- custom_components/hon/switch.py | 14 ++++++++++++++ custom_components/hon/translations/cs.json | 3 +++ custom_components/hon/translations/de.json | 3 +++ custom_components/hon/translations/el.json | 3 +++ custom_components/hon/translations/en.json | 3 +++ custom_components/hon/translations/es.json | 3 +++ custom_components/hon/translations/fr.json | 3 +++ custom_components/hon/translations/he.json | 3 +++ custom_components/hon/translations/hr.json | 3 +++ custom_components/hon/translations/it.json | 3 +++ custom_components/hon/translations/nl.json | 3 +++ custom_components/hon/translations/pl.json | 3 +++ custom_components/hon/translations/pt.json | 3 +++ custom_components/hon/translations/ro.json | 3 +++ custom_components/hon/translations/ru.json | 3 +++ custom_components/hon/translations/sk.json | 3 +++ custom_components/hon/translations/sl.json | 3 +++ custom_components/hon/translations/sr.json | 3 +++ custom_components/hon/translations/tr.json | 3 +++ custom_components/hon/translations/zh.json | 3 +++ scripts/translation_keys.py | 1 + 25 files changed, 93 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 6021225..1c55734 100644 --- a/README.md +++ b/README.md @@ -247,9 +247,8 @@ For every device exists a button under diagnostics which can be used to log all #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | -| Light status | | `light` | `startProgram.lightStatus` | -| Start Program | `hvac` | `button` | `startProgram` | -| Stop Program | `hvac-off` | `button` | `stopProgram` | +| Hood | `hvac` | `switch` | `startProgram` / `stopProgram` | +| Light status | | `light` | `settings.lightStatus` | | Wind Speed | | `fan` | `settings.windSpeed` | #### Sensors | Name | Icon | Entity | Key | diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index 9adb0b8..94c748f 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -35,20 +35,6 @@ BUTTONS: dict[str, tuple[ButtonEntityDescription, ...]] = { translation_key="stop_program", ), ), - "HO": ( - ButtonEntityDescription( - key="startProgram", - name="Start Program", - icon="mdi:hvac", - translation_key="start_program", - ), - ButtonEntityDescription( - key="stopProgram", - name="Stop Program", - icon="mdi:hvac-off", - translation_key="stop_program", - ), - ), } diff --git a/custom_components/hon/fan.py b/custom_components/hon/fan.py index 35f3536..f0eb550 100644 --- a/custom_components/hon/fan.py +++ b/custom_components/hon/fan.py @@ -63,10 +63,6 @@ class HonFanEntity(HonEntity, FanEntity): def __init__(self, hass, entry, device: HonAppliance, description) -> None: self._attr_supported_features = FanEntityFeature.SET_SPEED self._wind_speed: HonParameterRange = device.settings.get(description.key) - self._speed_range = ( - int(self._wind_speed.values[1]), - int(self._wind_speed.values[-1]), - ) self._command, self._parameter = description.key.split(".") super().__init__(hass, entry, device, description) @@ -118,6 +114,15 @@ class HonFanEntity(HonEntity, FanEntity): @callback def _handle_coordinator_update(self, update=True) -> None: self._wind_speed = self._device.settings.get(self.entity_description.key) - self._attr_percentage = self.percentage + if len(self._wind_speed.values) > 1: + self._speed_range = ( + int(self._wind_speed.values[1]), + int(self._wind_speed.values[-1]), + ) + self._attr_percentage = self.percentage if update: self.async_write_ha_state() + + @property + def available(self) -> bool: + return super().available and len(self._wind_speed.values) > 1 diff --git a/custom_components/hon/light.py b/custom_components/hon/light.py index 7e8633f..3e36017 100644 --- a/custom_components/hon/light.py +++ b/custom_components/hon/light.py @@ -28,7 +28,7 @@ LIGHTS = { ), "HO": ( LightEntityDescription( - key="startProgram.lightStatus", + key="settings.lightStatus", name="Light status", translation_key="light", ), @@ -76,8 +76,7 @@ class HonLightEntity(HonEntity, LightEntity): @property def is_on(self) -> bool: """Return true if light is on.""" - light = self._device.settings.get(self.entity_description.key) - return light.value != light.min + return self._device.get(self.entity_description.key.split(".")[-1]) > 0 async def async_turn_on(self, **kwargs: Any) -> None: """Turn on or control the light.""" @@ -120,3 +119,10 @@ class HonLightEntity(HonEntity, LightEntity): self._attr_brightness = self.brightness if update: self.async_write_ha_state() + + @property + def available(self) -> bool: + return ( + super().available + and len(self._device.settings.get(self.entity_description.key).values) > 1 + ) diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index e96a681..9ed81fb 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -337,6 +337,16 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { translation_key="holiday_mode", ), ), + "HO": ( + HonControlSwitchEntityDescription( + key="onOffStatus", + name="Hood", + icon="mdi:hvac", + turn_on_key="startProgram", + turn_off_key="stopProgram", + translation_key="hood", + ), + ), "AP": ( HonSwitchEntityDescription( key="touchToneStatus", @@ -438,11 +448,15 @@ class HonControlSwitchEntity(HonEntity, SwitchEntity): return self._device.get(self.entity_description.key, False) async def async_turn_on(self, **kwargs: Any) -> None: + self._device.sync_command(self.entity_description.turn_on_key, "settings") + await self.coordinator.async_refresh() await self._device.commands[self.entity_description.turn_on_key].send() self._device.attributes[self.entity_description.key] = True self.async_write_ha_state() async def async_turn_off(self, **kwargs: Any) -> None: + self._device.sync_command(self.entity_description.turn_off_key, "settings") + await self.coordinator.async_refresh() await self._device.commands[self.entity_description.turn_off_key].send() self._device.attributes[self.entity_description.key] = False self.async_write_ha_state() diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index 84a2f6f..9e89083 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -1787,6 +1787,9 @@ }, "hygiene": { "name": "Hygienický plus" + }, + "hood": { + "name": "Odsavač par" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index 3cdbb5e..6f7bdc8 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -1787,6 +1787,9 @@ }, "hygiene": { "name": "Hygiene plus" + }, + "hood": { + "name": "Abzugshaube" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index 637dfc1..4ddb68e 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -1787,6 +1787,9 @@ }, "hygiene": { "name": "Hygiene plus" + }, + "hood": { + "name": "Απορροφητήρας" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 79e3137..84880a5 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -1814,6 +1814,9 @@ }, "hygiene": { "name": "Hygiene plus" + }, + "hood": { + "name": "Hood" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index 7c6efe7..832d79b 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -1787,6 +1787,9 @@ }, "hygiene": { "name": "Higiene extra" + }, + "hood": { + "name": "Campana extractora" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index cab5c7b..eaca2a5 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -1787,6 +1787,9 @@ }, "hygiene": { "name": "Hygiène plus" + }, + "hood": { + "name": "Hotte" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index 5c1c6b6..e69135e 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -908,6 +908,9 @@ }, "hygiene": { "name": "היגיינה פלוס" + }, + "hood": { + "name": "Hood" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index daab723..cd5cdb2 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -1787,6 +1787,9 @@ }, "hygiene": { "name": "Hygiene Plus" + }, + "hood": { + "name": "Napa" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index dd88f3b..9eaac1c 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -1792,6 +1792,9 @@ }, "hygiene": { "name": "Hygiene plus" + }, + "hood": { + "name": "Cappa" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index de3333e..86f8fa3 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -1787,6 +1787,9 @@ }, "hygiene": { "name": "Hygiëne plus" + }, + "hood": { + "name": "Afzuigkap" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index fcf3b07..d5b61ff 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -1787,6 +1787,9 @@ }, "hygiene": { "name": "Higiena plus" + }, + "hood": { + "name": "Okap" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index 5a82001..c94e44a 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -1787,6 +1787,9 @@ }, "hygiene": { "name": "Higiene mais" + }, + "hood": { + "name": "Exaustor" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index 7bd066c..e830f5b 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -1787,6 +1787,9 @@ }, "hygiene": { "name": "Igienizare plus" + }, + "hood": { + "name": "Hotă" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index 177a326..8def776 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -1787,6 +1787,9 @@ }, "hygiene": { "name": "Гигиена плюс" + }, + "hood": { + "name": "Вытяжка" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index ba178c1..5219836 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -1787,6 +1787,9 @@ }, "hygiene": { "name": "Hygiena plus" + }, + "hood": { + "name": "Digestor" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index 419fd0d..abc6124 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -1787,6 +1787,9 @@ }, "hygiene": { "name": "Higiena plus" + }, + "hood": { + "name": "Kuhinjska napa" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index 152af7c..02687e8 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -1787,6 +1787,9 @@ }, "hygiene": { "name": "Higijenski plus" + }, + "hood": { + "name": "Aspirator" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index b469240..2acfc66 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -1787,6 +1787,9 @@ }, "hygiene": { "name": "Hygiene plus" + }, + "hood": { + "name": "Davlumbaz" } }, "binary_sensor": { diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index eefa1fe..fd3c75e 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -1787,6 +1787,9 @@ }, "hygiene": { "name": "卫生增强" + }, + "hood": { + "name": "机盖" } }, "binary_sensor": { diff --git a/scripts/translation_keys.py b/scripts/translation_keys.py index dff1c4d..46a4ae6 100644 --- a/scripts/translation_keys.py +++ b/scripts/translation_keys.py @@ -241,6 +241,7 @@ NAMES = { "refrigerator": "REF.NAME", "touch_tone": "AP.FOOTER_MENU_MORE.TOUCH_TONE_VOLUME", "hygiene": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.HYGIENE", + "hood": "GLOBALS.APPLIANCES_NAME.HO", }, "binary_sensor": { "door_lock": "WASHING_CMD&CTRL.CHECK_UP_RESULTS.DOOR_LOCK", -- 2.39.5 From 79e901d34cefa5ec8bee35c1edc0a42b2770a435 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Wed, 12 Jul 2023 00:23:28 +0200 Subject: [PATCH 166/205] Bump version --- README.md | 2 +- custom_components/hon/manifest.json | 2 +- info.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 1c55734..b580567 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ Support has been confirmed for these models, but many more will work. Please add | **Washer Dryer** | HWD100-B14979 | HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | | **Oven** | HWO60SM2F3XH | HSOT3161WG | | | **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | -| **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C | | | +| **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C | | CY-12TAIN | | **Fridge** | HFW7720ENMB | | CCE4T620EWU | | **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | | **Hood** | HADG6DS46BWIFI | | | diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 98a7391..b9fade6 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -11,5 +11,5 @@ "requirements": [ "pyhOn==0.14.9" ], - "version": "0.9.0-beta.10" + "version": "0.9.0" } diff --git a/info.md b/info.md index ee0b457..13ea9d4 100644 --- a/info.md +++ b/info.md @@ -34,7 +34,7 @@ Support has been confirmed for these models, but many more will work. Please add | **Washer Dryer** | HWD100-B14979 | HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | | **Oven** | HWO60SM2F3XH | HSOT3161WG | | | **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | -| **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C | | | +| **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C | | CY-12TAIN | | **Fridge** | HFW7720ENMB | | CCE4T620EWU | | **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | | **Hood** | HADG6DS46BWIFI | | | -- 2.39.5 From 49ab7f605b8e502db992f506924cdb5845718bd0 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Fri, 14 Jul 2023 00:21:08 +0200 Subject: [PATCH 167/205] Add compatibility documentation --- README.md | 15 ++++++++++++++- info.md | 15 ++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b580567..3505b4f 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ Support has been confirmed for these models, but many more will work. Please add | **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | | **Hood** | HADG6DS46BWIFI | | | | **Wine Cellar** | HWS247FDU1 | | | -| **Air Purifier** | | HHP50CA001 | | +| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011 | | | Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data).
This helps us to develop new features and not to break compatibility in newer versions. | @@ -78,6 +78,19 @@ Translation of internal names like programs are available for all languages whic * 🇪🇸 Spanish * 🇹🇷 Turkish +## Compatiblity +Haier offers different apps for different markets. Some appliances are compatible with more than one app. This integration only supports appliances that can be controlled via hOn. Please download the hOn app and check compatibilty before you open an issue. +The apps on this (incomplete) list have been requested so far: + +| App | Main Market | Supported | Alternative | +|-----------------|---------------|-----------------------------------------|---------------------------------------------------------------------------------| +| Haier hOn | Europe | :heavy_check_mark: | | +| Candy simply-Fi | Europe | :grey_question: (only newer appliances) | [ofalvai/home-assistant-candy](https://github.com/ofalvai/home-assistant-candy) | +| Hoover Wizard | Europe | :grey_question: (only newer appliances) | | +| Haier Uhome | China | :x: | [banto6/haier](https://github.com/banto6/haier) | +| Haier U+ | China | :x: | | +| GE SmartHQ | North America | :x: | [simbaja/ha_gehome](https://github.com/simbaja/ha_gehome) | + ## Examples ### Washing Machine ![washing_machine.png](assets/washing_machine.png) diff --git a/info.md b/info.md index 13ea9d4..f135ef0 100644 --- a/info.md +++ b/info.md @@ -39,7 +39,7 @@ Support has been confirmed for these models, but many more will work. Please add | **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | | **Hood** | HADG6DS46BWIFI | | | | **Wine Cellar** | HWS247FDU1 | | | -| **Air Purifier** | | HHP50CA001 | | +| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011 | | | Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data).
This helps us to develop new features and not to break compatibility in newer versions. | |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| @@ -66,6 +66,19 @@ Translation of internal names like programs are available for all languages whic * 🇪🇸 Spanish * 🇹🇷 Turkish +## Compatiblity +Haier offers different apps for different markets. Some appliances are compatible with more than one app. This integration only supports appliances that can be controlled via hOn. Please download the hOn app and check compatibilty before you open an issue. +The apps on this (incomplete) list have been requested so far: + +| App | Main Market | Supported | Alternative | +|-----------------|---------------|-----------------------------------------|---------------------------------------------------------------------------------| +| Haier hOn | Europe | :heavy_check_mark: | | +| Candy simply-Fi | Europe | :grey_question: (only newer appliances) | [ofalvai/home-assistant-candy](https://github.com/ofalvai/home-assistant-candy) | +| Hoover Wizard | Europe | :grey_question: (only newer appliances) | | +| Haier Uhome | China | :x: | [banto6/haier](https://github.com/banto6/haier) | +| Haier U+ | China | :x: | | +| GE SmartHQ | North America | :x: | [simbaja/ha_gehome](https://github.com/simbaja/ha_gehome) | + ## Examples ### Washing Machine ![washing_machine.png](assets/washing_machine.png) -- 2.39.5 From 8d6a6a509bdd5d1e44f5f2ff5bb657c3a1402bad Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Wed, 19 Jul 2023 19:59:40 +0200 Subject: [PATCH 168/205] Bump version --- custom_components/hon/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index b9fade6..a53ca1e 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -9,7 +9,7 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": [ - "pyhOn==0.14.9" + "pyhOn==0.14.10" ], - "version": "0.9.0" + "version": "0.9.1-beta.1" } -- 2.39.5 From f0fb5742a47a67dc094104d7fa774858d7dde977 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Wed, 19 Jul 2023 23:57:33 +0200 Subject: [PATCH 169/205] Add compatibility for more fridge models #93 --- README.md | 42 +++++++++++----------- custom_components/hon/binary_sensor.py | 28 +++++++++++---- custom_components/hon/const.py | 2 ++ custom_components/hon/sensor.py | 8 +++++ custom_components/hon/switch.py | 10 ++---- custom_components/hon/translations/cs.json | 8 +++++ custom_components/hon/translations/de.json | 8 +++++ custom_components/hon/translations/el.json | 8 +++++ custom_components/hon/translations/en.json | 8 +++++ custom_components/hon/translations/es.json | 8 +++++ custom_components/hon/translations/fr.json | 8 +++++ custom_components/hon/translations/he.json | 8 +++++ custom_components/hon/translations/hr.json | 8 +++++ custom_components/hon/translations/it.json | 8 +++++ custom_components/hon/translations/nl.json | 8 +++++ custom_components/hon/translations/pl.json | 8 +++++ custom_components/hon/translations/pt.json | 8 +++++ custom_components/hon/translations/ro.json | 8 +++++ custom_components/hon/translations/ru.json | 8 +++++ custom_components/hon/translations/sk.json | 8 +++++ custom_components/hon/translations/sl.json | 8 +++++ custom_components/hon/translations/sr.json | 8 +++++ custom_components/hon/translations/tr.json | 8 +++++ custom_components/hon/translations/zh.json | 8 +++++ info.md | 26 +++++++------- scripts/translation_keys.py | 8 +++++ 26 files changed, 229 insertions(+), 47 deletions(-) diff --git a/README.md b/README.md index 3505b4f..38821ba 100644 --- a/README.md +++ b/README.md @@ -38,19 +38,19 @@ _If the integration is not in the list, you need to clear the browser cache._ ## Supported Models Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). -| | **Haier** | **Hoover** | **Candy** | -|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------| -| **Washing Machine** | HW80-B14959TU1DE
HW90-B14TEAM5
HW100-B14959U1 | H-WASH 500
H7W4 48MBC-S
HW 410AMBCB/1-80 | CO4 107T1/2-07
CBWO49TWME-S
RO44 1286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | -| **Tumble Dryer** | HD80-A3959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S | -| **Washer Dryer** | HWD100-B14979 | HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | -| **Oven** | HWO60SM2F3XH | HSOT3161WG | | -| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | -| **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C | | CY-12TAIN | -| **Fridge** | HFW7720ENMB | | CCE4T620EWU | -| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | -| **Hood** | HADG6DS46BWIFI | | | -| **Wine Cellar** | HWS247FDU1 | | | -| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011 | | +| | **Haier** | **Hoover** | **Candy** | +|---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------| +| **Washing Machine** | HW80-B14959TU1DE
HW90-B14TEAM5
HW100-B14959U1 | H-WASH 500
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80 | CO4 107T1/2-07
CBWO49TWME-S
RO44 1286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | +| **Tumble Dryer** | HD80-A3959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S | +| **Washer Dryer** | HWD100-B14979 | HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | +| **Oven** | HWO60SM2F3XH | HSOT3161WG | | +| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | +| **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1) | | CY-12TAIN | +| **Fridge** | HFW7720ENMB
HFW7819EWMP | | CCE4T620EWU | +| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | +| **Hood** | HADG6DS46BWIFI | | | +| **Wine Cellar** | HWS247FDU1 | | | +| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011 | | | Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data).
This helps us to develop new features and not to break compatibility in newer versions. | @@ -338,11 +338,10 @@ For every device exists a button under diagnostics which can be used to log all | Freezer Temperature | `thermometer` | `number` | `settings.tempSelZ2` | | Fridge | `thermometer` | `climate` | `settings.tempSelZ1` | | Fridge Temperature | `thermometer` | `number` | `settings.tempSelZ1` | -| Holiday Mode | `palm-tree` | `switch` | `holidayMode` | | Program Start | `play` | `button` | `startProgram` | | Program Stop | `stop` | `button` | `stopProgram` | -| Super Cool | `snowflake` | `switch` | `quickModeZ2` | -| Super Freeze | `snowflake-variant` | `switch` | `quickModeZ1` | +| Super Cool | `snowflake` | `switch` | `quickModeZ1` | +| Super Freeze | `snowflake-variant` | `switch` | `quickModeZ2` | #### Configs | Name | Icon | Entity | Key | | --- | --- | --- | --- | @@ -352,14 +351,17 @@ For every device exists a button under diagnostics which can be used to log all | Name | Icon | Entity | Key | | --- | --- | --- | --- | | Auto-Set Mode | `thermometer-auto` | `binary_sensor` | `intelligenceMode` | -| Door Status Freezer | `fridge-top` | `binary_sensor` | `doorStatusZ1` | -| Door Status Fridge | `fridge-bottom` | `binary_sensor` | `door2StatusZ1` | +| Door1 Status Freezer | `fridge-bottom` | `binary_sensor` | `doorStatusZ2` | +| Door1 Status Fridge | `fridge-top` | `binary_sensor` | `doorStatusZ1` | +| Door2 Status Freezer | `fridge-bottom` | `binary_sensor` | `door2StatusZ2` | +| Door2 Status Fridge | `fridge-top` | `binary_sensor` | `door2StatusZ1` | | Error | `math-log` | `sensor` | `errors` | | Holiday Mode | `palm-tree` | `binary_sensor` | `holidayMode` | +| Humidity Level | `water-outline` | `sensor` | `humidityLevel` | | Room Humidity | `water-percent` | `sensor` | `humidityEnv` | | Room Temperature | `home-thermometer-outline` | `sensor` | `tempEnv` | -| Super Cool | `snowflake` | `binary_sensor` | `quickModeZ2` | -| Super Freeze | `snowflake-variant` | `binary_sensor` | `quickModeZ1` | +| Super Cool | `snowflake` | `binary_sensor` | `quickModeZ1` | +| Super Freeze | `snowflake-variant` | `binary_sensor` | `quickModeZ2` | | Temperature Freezer | `snowflake-thermometer` | `sensor` | `tempZ2` | | Temperature Fridge | `thermometer` | `sensor` | `tempZ1` | diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index 7185231..51ec56c 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -208,7 +208,7 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { ), "REF": ( HonBinarySensorEntityDescription( - key="quickModeZ2", + key="quickModeZ1", name="Super Cool", icon="mdi:snowflake", device_class=BinarySensorDeviceClass.RUNNING, @@ -216,7 +216,7 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { translation_key="super_cool", ), HonBinarySensorEntityDescription( - key="quickModeZ1", + key="quickModeZ2", name="Super Freeze", icon="mdi:snowflake-variant", device_class=BinarySensorDeviceClass.RUNNING, @@ -225,19 +225,35 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { ), HonBinarySensorEntityDescription( key="doorStatusZ1", - name="Door Status Freezer", + name="Door1 Status Fridge", device_class=BinarySensorDeviceClass.DOOR, icon="mdi:fridge-top", on_value=1, + translation_key="fridge_door", + ), + HonBinarySensorEntityDescription( + key="door2StatusZ1", + name="Door2 Status Fridge", + icon="mdi:fridge-top", + device_class=BinarySensorDeviceClass.DOOR, + on_value=1, + translation_key="fridge_door", + ), + HonBinarySensorEntityDescription( + key="doorStatusZ2", + name="Door1 Status Freezer", + icon="mdi:fridge-bottom", + device_class=BinarySensorDeviceClass.DOOR, + on_value=1, translation_key="freezer_door", ), HonBinarySensorEntityDescription( - key="door2StatusZ1", - name="Door Status Fridge", + key="door2StatusZ2", + name="Door2 Status Freezer", icon="mdi:fridge-bottom", device_class=BinarySensorDeviceClass.DOOR, on_value=1, - translation_key="fridge_door", + translation_key="freezer_door", ), HonBinarySensorEntityDescription( key="intelligenceMode", diff --git a/custom_components/hon/const.py b/custom_components/hon/const.py index ad57d8f..57bb3e7 100644 --- a/custom_components/hon/const.py +++ b/custom_components/hon/const.py @@ -224,3 +224,5 @@ AP_DIFFUSER_LEVEL = { 3: "h_biotics", 4: "custom", } + +REF_HUMIDITY_LEVELS = {1: "low", 2: "mid", 3: "high"} diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 5994d95..a1e8cce 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -545,6 +545,14 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { HonSensorEntityDescription( key="errors", name="Error", icon="mdi:math-log", translation_key="errors" ), + HonSensorEntityDescription( + key="humidityLevel", + name="Humidity Level", + icon="mdi:water-outline", + device_class=SensorDeviceClass.ENUM, + translation_key="humidity_level", + option_list=const.REF_HUMIDITY_LEVELS, + ), ), "HO": ( HonSensorEntityDescription( diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 9ed81fb..8cc5b0f 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -311,23 +311,17 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { translation_key="auto_set", ), HonSwitchEntityDescription( - key="quickModeZ1", + key="quickModeZ2", name="Super Freeze", icon="mdi:snowflake-variant", translation_key="super_freeze", ), HonSwitchEntityDescription( - key="quickModeZ2", + key="quickModeZ1", name="Super Cool", icon="mdi:snowflake", translation_key="super_cool", ), - HonSwitchEntityDescription( - key="holidayMode", - name="Holiday Mode", - icon="mdi:palm-tree", - translation_key="holiday_mode", - ), ), "WC": ( HonSwitchEntityDescription( diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index 9e89083..11201d0 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -887,6 +887,14 @@ }, "fan_speed": { "name": "Rychlost ventilátoru" + }, + "humidity_level": { + "state": { + "low": "Nízká", + "mid": "Střední", + "high": "Vysoká" + }, + "name": "Úroveň vlhkosti" } }, "select": { diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index 6f7bdc8..cb60c15 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -887,6 +887,14 @@ }, "fan_speed": { "name": "Gebläsegeschwindigkeit" + }, + "humidity_level": { + "state": { + "low": "Niedrig", + "mid": "Mittel", + "high": "Hoch" + }, + "name": "Grad der Luftfeuchtigkeit" } }, "select": { diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index 4ddb68e..aeefbec 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -887,6 +887,14 @@ }, "fan_speed": { "name": "Ταχύτητα ανεμιστήρα" + }, + "humidity_level": { + "state": { + "low": "Χαμηλό", + "mid": "Μέτριο", + "high": "Υψηλός" + }, + "name": "Επίπεδο υγρασίας" } }, "select": { diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 84880a5..1899b02 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -907,6 +907,14 @@ }, "fan_speed": { "name": "Fan speed" + }, + "humidity_level": { + "state": { + "low": "Low", + "mid": "Medium", + "high": "High" + }, + "name": "Humidity level" } }, "select": { diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index 832d79b..b43a635 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -887,6 +887,14 @@ }, "fan_speed": { "name": "Velocidad del ventilador" + }, + "humidity_level": { + "state": { + "low": "Bajo", + "mid": "Medio", + "high": "Alto" + }, + "name": "Nivel de humedad" } }, "select": { diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index eaca2a5..4a493d6 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -887,6 +887,14 @@ }, "fan_speed": { "name": "Vitesse du ventilateur" + }, + "humidity_level": { + "state": { + "low": "Faible", + "mid": "Moyen", + "high": "Élevé" + }, + "name": "Niveau d’humidité" } }, "select": { diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index e69135e..982c3c4 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -443,6 +443,14 @@ }, "fan_speed": { "name": "Fan speed" + }, + "humidity_level": { + "state": { + "low": "נָמוּך", + "mid": "בינוני", + "high": "גָבוֹהַ" + }, + "name": "Humidity level" } }, "select": { diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index cd5cdb2..1e6df12 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -887,6 +887,14 @@ }, "fan_speed": { "name": "Brzina ventilatora" + }, + "humidity_level": { + "state": { + "low": "Nisko", + "mid": "Srednje", + "high": "Visoko" + }, + "name": "Razina vlažnosti" } }, "select": { diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index 9eaac1c..8f91bae 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -892,6 +892,14 @@ }, "fan_speed": { "name": "Velocità ventole" + }, + "humidity_level": { + "state": { + "low": "Basso", + "mid": "Medio", + "high": "Alto" + }, + "name": "Livello di umidità" } }, "select": { diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index 86f8fa3..718aad4 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -887,6 +887,14 @@ }, "fan_speed": { "name": "Ventilatorsnelheid" + }, + "humidity_level": { + "state": { + "low": "Laag", + "mid": "Gemiddeld", + "high": "Hoog" + }, + "name": "Vochtigheidsniveau" } }, "select": { diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index d5b61ff..db75cb0 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -887,6 +887,14 @@ }, "fan_speed": { "name": "Prędkość wentylatora" + }, + "humidity_level": { + "state": { + "low": "Niskie", + "mid": "Średnie", + "high": "Wysokie" + }, + "name": "Poziom wilgotności" } }, "select": { diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index c94e44a..0eb047c 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -887,6 +887,14 @@ }, "fan_speed": { "name": "Velocidade da bomba" + }, + "humidity_level": { + "state": { + "low": "Baixa", + "mid": "Média", + "high": "Alta" + }, + "name": "Nível de humidade" } }, "select": { diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index e830f5b..4f0b0fb 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -887,6 +887,14 @@ }, "fan_speed": { "name": "Viteza ventilatorului" + }, + "humidity_level": { + "state": { + "low": "Scăzută", + "mid": "Medie", + "high": "Crescută" + }, + "name": "Nivelul de umiditate" } }, "select": { diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index 8def776..49a16b3 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -887,6 +887,14 @@ }, "fan_speed": { "name": "Скорость вентилятора" + }, + "humidity_level": { + "state": { + "low": "Низк.", + "mid": "Средне", + "high": "Высок." + }, + "name": "Уровень влажности" } }, "select": { diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index 5219836..2753ed7 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -887,6 +887,14 @@ }, "fan_speed": { "name": "Rýchlosť ventilátora" + }, + "humidity_level": { + "state": { + "low": "Nízke", + "mid": "Stredné", + "high": "Vysoké" + }, + "name": "Úroveň vlhkosti" } }, "select": { diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index abc6124..60f941c 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -887,6 +887,14 @@ }, "fan_speed": { "name": "Hitrost ventilatorja" + }, + "humidity_level": { + "state": { + "low": "Low", + "mid": "Medium", + "high": "High" + }, + "name": "Nivo vlažnosti" } }, "select": { diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index 02687e8..e666256 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -887,6 +887,14 @@ }, "fan_speed": { "name": "Brzina ventilatora" + }, + "humidity_level": { + "state": { + "low": "Niska", + "mid": "Srednja", + "high": "Visoka" + }, + "name": "Nivo vlage" } }, "select": { diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index 2acfc66..acb7d82 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -887,6 +887,14 @@ }, "fan_speed": { "name": "Fan hızı" + }, + "humidity_level": { + "state": { + "low": "Düşük", + "mid": "Orta", + "high": "Yüksek" + }, + "name": "Nem seviyesi" } }, "select": { diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index fd3c75e..b9a02e5 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -887,6 +887,14 @@ }, "fan_speed": { "name": "风扇速度" + }, + "humidity_level": { + "state": { + "low": "低", + "mid": "中", + "high": "高" + }, + "name": "湿度水平" } }, "select": { diff --git a/info.md b/info.md index f135ef0..76ac925 100644 --- a/info.md +++ b/info.md @@ -27,19 +27,19 @@ _If the integration is not in the list, you need to clear the browser cache._ ## Supported Models Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). -| | **Haier** | **Hoover** | **Candy** | -|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------| -| **Washing Machine** | HW80-B14959TU1DE
HW90-B14TEAM5
HW100-B14959U1 | H-WASH 500
H7W4 48MBC-S
HW 410AMBCB/1-80 | CO4 107T1/2-07
CBWO49TWME-S
RO44 1286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | -| **Tumble Dryer** | HD80-A3959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S | -| **Washer Dryer** | HWD100-B14979 | HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | -| **Oven** | HWO60SM2F3XH | HSOT3161WG | | -| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | -| **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C | | CY-12TAIN | -| **Fridge** | HFW7720ENMB | | CCE4T620EWU | -| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | -| **Hood** | HADG6DS46BWIFI | | | -| **Wine Cellar** | HWS247FDU1 | | | -| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011 | | +| | **Haier** | **Hoover** | **Candy** | +|---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------| +| **Washing Machine** | HW80-B14959TU1DE
HW90-B14TEAM5
HW100-B14959U1 | H-WASH 500
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80 | CO4 107T1/2-07
CBWO49TWME-S
RO44 1286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | +| **Tumble Dryer** | HD80-A3959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S | +| **Washer Dryer** | HWD100-B14979 | HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | +| **Oven** | HWO60SM2F3XH | HSOT3161WG | | +| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | +| **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1) | | CY-12TAIN | +| **Fridge** | HFW7720ENMB
HFW7819EWMP | | CCE4T620EWU | +| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | +| **Hood** | HADG6DS46BWIFI | | | +| **Wine Cellar** | HWS247FDU1 | | | +| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011 | | | Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data).
This helps us to develop new features and not to break compatibility in newer versions. | |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| diff --git a/scripts/translation_keys.py b/scripts/translation_keys.py index 46a4ae6..81b30da 100644 --- a/scripts/translation_keys.py +++ b/scripts/translation_keys.py @@ -109,6 +109,12 @@ REF_ZONES = { "fridge_freezer": ["REF.ZONES.FRIDGE", " & ", "REF.ZONES.FREEZER"], } +REF_HUMIDITY_LEVELS = { + "low": "GLOBALS.GENERAL.LOW", + "mid": "GLOBALS.GENERAL.MEDIUM", + "high": "GLOBALS.GENERAL.HIGH", +} + SENSOR = { "washing_modes": MACH_MODE, @@ -119,6 +125,7 @@ SENSOR = { "dry_levels": TUMBLE_DRYER_DRY_LEVEL, "dirt_level": DIRTY_LEVEL, "steam_level": STEAM_LEVEL, + "humidity_level": REF_HUMIDITY_LEVELS, } SELECT = { @@ -355,6 +362,7 @@ NAMES = { "filter_life": "AP.MAINTENANCE.FILTER_LIFE", "air_quality": "AP.DISCOVER.AIR_QUALITY", "fan_speed": "AP.TITLES.FAN_SPEED", + "humidity_level": "WC.MAINTENANCE_HUMIDITY.TITLE", }, "number": { "power_management": "HINTS.COOKING_WITH_INDUCTION.POWER_MANAGEMENT", -- 2.39.5 From 9d6b8297b25577e380ef3fd0f39753ad4802bbcd Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sun, 23 Jul 2023 21:52:42 +0200 Subject: [PATCH 170/205] Add mypy check, add missing types and fix type issues --- .github/workflows/python_check.yml | 7 +- custom_components/hon/__init__.py | 12 ++- custom_components/hon/binary_sensor.py | 10 +- custom_components/hon/button.py | 21 ++++- custom_components/hon/climate.py | 117 +++++++++++++---------- custom_components/hon/config_flow.py | 24 +++-- custom_components/hon/const.py | 42 ++++----- custom_components/hon/fan.py | 54 ++++++----- custom_components/hon/hon.py | 123 ++++++++++++++----------- custom_components/hon/light.py | 51 ++++++---- custom_components/hon/lock.py | 16 ++-- custom_components/hon/number.py | 56 +++++++++-- custom_components/hon/select.py | 62 +++++++++++-- custom_components/hon/sensor.py | 37 +++++--- custom_components/hon/switch.py | 22 ++--- custom_components/hon/typedefs.py | 95 +++++++++++++++++++ mypy.ini | 25 +++++ requirements.txt | 2 + requirements_dev.txt | 5 +- 19 files changed, 542 insertions(+), 239 deletions(-) create mode 100644 custom_components/hon/typedefs.py create mode 100644 mypy.ini create mode 100644 requirements.txt diff --git a/.github/workflows/python_check.yml b/.github/workflows/python_check.yml index c4b9fe5..17510a5 100644 --- a/.github/workflows/python_check.yml +++ b/.github/workflows/python_check.yml @@ -24,12 +24,17 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - python -m pip install flake8 pylint black + python -m pip install -r requirements.txt + python -m pip install -r requirements_dev.txt - name: Lint with flake8 run: | # stop the build if there are Python syntax errors or undefined names flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics flake8 . --count --exit-zero --max-complexity=10 --max-line-length=88 --statistics + - name: Type check with mypy + run: | + touch "$(python -c 'import inspect, homeassistant, os; print(os.path.dirname(inspect.getfile(homeassistant)))')"/py.typed + mypy -p custom_components.hon # - name: Analysing the code with pylint # run: | # pylint --max-line-length 88 $(git ls-files '*.py') diff --git a/custom_components/hon/__init__.py b/custom_components/hon/__init__.py index 901a824..a684d3c 100644 --- a/custom_components/hon/__init__.py +++ b/custom_components/hon/__init__.py @@ -1,7 +1,7 @@ import logging from pathlib import Path -import voluptuous as vol +import voluptuous as vol # type: ignore[import] from homeassistant.config_entries import ConfigEntry from homeassistant.const import CONF_EMAIL, CONF_PASSWORD from homeassistant.helpers import config_validation as cv, aiohttp_client @@ -25,13 +25,15 @@ CONFIG_SCHEMA = vol.Schema( ) -async def async_setup_entry(hass: HomeAssistantType, entry: ConfigEntry): +async def async_setup_entry(hass: HomeAssistantType, entry: ConfigEntry) -> None: session = aiohttp_client.async_get_clientsession(hass) + if (config_dir := hass.config.config_dir) is None: + raise ValueError("Missing Config Dir") hon = await Hon( entry.data["email"], entry.data["password"], session=session, - test_data_path=Path(hass.config.config_dir), + test_data_path=Path(config_dir), ).create() hass.data.setdefault(DOMAIN, {}) hass.data[DOMAIN][entry.unique_id] = hon @@ -41,10 +43,10 @@ async def async_setup_entry(hass: HomeAssistantType, entry: ConfigEntry): hass.async_create_task( hass.config_entries.async_forward_entry_setup(entry, platform) ) - return True + return -async def async_unload_entry(hass, entry: ConfigEntry) -> bool: +async def async_unload_entry(hass: HomeAssistantType, entry: ConfigEntry) -> bool: unload = await hass.config_entries.async_unload_platforms(entry, PLATFORMS) if unload: if not hass.data[DOMAIN]: diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index 51ec56c..d33d689 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -8,6 +8,8 @@ from homeassistant.components.binary_sensor import ( ) from homeassistant.config_entries import ConfigEntry from homeassistant.core import callback +from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.helpers.typing import HomeAssistantType from .const import DOMAIN from .hon import HonEntity, unique_entities @@ -287,7 +289,9 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { BINARY_SENSORS["WD"] = unique_entities(BINARY_SENSORS["WM"], BINARY_SENSORS["TD"]) -async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: +async def async_setup_entry( + hass: HomeAssistantType, entry: ConfigEntry, async_add_entities: AddEntitiesCallback +) -> None: entities = [] for device in hass.data[DOMAIN][entry.unique_id].appliances: for description in BINARY_SENSORS.get(device.appliance_type, []): @@ -304,13 +308,13 @@ class HonBinarySensorEntity(HonEntity, BinarySensorEntity): @property def is_on(self) -> bool: - return ( + return bool( self._device.get(self.entity_description.key, "") == self.entity_description.on_value ) @callback - def _handle_coordinator_update(self, update=True) -> None: + def _handle_coordinator_update(self, update: bool = True) -> None: self._attr_native_value = ( self._device.get(self.entity_description.key, "") == self.entity_description.on_value diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index 94c748f..4eb7d10 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -5,10 +5,13 @@ from homeassistant.components import persistent_notification from homeassistant.components.button import ButtonEntityDescription, ButtonEntity from homeassistant.config_entries import ConfigEntry from homeassistant.helpers.entity import EntityCategory +from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.helpers.typing import HomeAssistantType from pyhon.appliance import HonAppliance from .const import DOMAIN from .hon import HonEntity +from .typedefs import HonButtonType _LOGGER = logging.getLogger(__name__) @@ -38,8 +41,10 @@ BUTTONS: dict[str, tuple[ButtonEntityDescription, ...]] = { } -async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: - entities = [] +async def async_setup_entry( + hass: HomeAssistantType, entry: ConfigEntry, async_add_entities: AddEntitiesCallback +) -> None: + entities: list[HonButtonType] = [] for device in hass.data[DOMAIN][entry.unique_id].appliances: for description in BUTTONS.get(device.appliance_type, []): if not device.commands.get(description.key): @@ -70,7 +75,9 @@ class HonButtonEntity(HonEntity, ButtonEntity): class HonDeviceInfo(HonEntity, ButtonEntity): - def __init__(self, hass, entry, device: HonAppliance) -> None: + def __init__( + self, hass: HomeAssistantType, entry: ConfigEntry, device: HonAppliance + ) -> None: super().__init__(hass, entry, device) self._attr_unique_id = f"{super().unique_id}_show_device_info" @@ -93,7 +100,9 @@ class HonDeviceInfo(HonEntity, ButtonEntity): class HonDataArchive(HonEntity, ButtonEntity): - def __init__(self, hass, entry, device: HonAppliance) -> None: + def __init__( + self, hass: HomeAssistantType, entry: ConfigEntry, device: HonAppliance + ) -> None: super().__init__(hass, entry, device) self._attr_unique_id = f"{super().unique_id}_create_data_archive" @@ -104,7 +113,9 @@ class HonDataArchive(HonEntity, ButtonEntity): self._attr_entity_registry_enabled_default = False async def async_press(self) -> None: - path = Path(self._hass.config.config_dir) / "www" + if (config_dir := self._hass.config.config_dir) is None: + raise ValueError("Missing Config Dir") + path = Path(config_dir) / "www" data = await self._device.data_archive(path) title = f"{self._device.nick_name} Data Archive" text = ( diff --git a/custom_components/hon/climate.py b/custom_components/hon/climate.py index 8541335..095d27d 100644 --- a/custom_components/hon/climate.py +++ b/custom_components/hon/climate.py @@ -1,5 +1,6 @@ import logging from dataclasses import dataclass +from typing import Any from homeassistant.components.climate import ( ClimateEntity, @@ -19,7 +20,10 @@ from homeassistant.const import ( TEMP_CELSIUS, ) from homeassistant.core import callback +from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.helpers.typing import HomeAssistantType from pyhon.appliance import HonAppliance +from pyhon.parameter.range import HonParameterRange from .const import HON_HVAC_MODE, HON_FAN, DOMAIN, HON_HVAC_PROGRAM from .hon import HonEntity @@ -34,10 +38,12 @@ class HonACClimateEntityDescription(ClimateEntityDescription): @dataclass class HonClimateEntityDescription(ClimateEntityDescription): - mode: HVACMode = "auto" + mode: HVACMode = HVACMode.AUTO -CLIMATES = { +CLIMATES: dict[ + str, tuple[HonACClimateEntityDescription | HonClimateEntityDescription, ...] +] = { "AC": ( HonACClimateEntityDescription( key="settings", @@ -90,8 +96,11 @@ CLIMATES = { } -async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: +async def async_setup_entry( + hass: HomeAssistantType, entry: ConfigEntry, async_add_entities: AddEntitiesCallback +) -> None: entities = [] + entity: HonClimateEntity | HonACClimateEntity for device in hass.data[DOMAIN][entry.unique_id].appliances: for description in CLIMATES.get(device.appliance_type, []): if isinstance(description, HonACClimateEntityDescription): @@ -103,14 +112,22 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non continue entity = HonClimateEntity(hass, entry, device, description) else: - continue + continue # type: ignore[unreachable] await entity.coordinator.async_config_entry_first_refresh() entities.append(entity) async_add_entities(entities) class HonACClimateEntity(HonEntity, ClimateEntity): - def __init__(self, hass, entry, device: HonAppliance, description) -> None: + entity_description: HonACClimateEntityDescription + + def __init__( + self, + hass: HomeAssistantType, + entry: ConfigEntry, + device: HonAppliance, + description: HonACClimateEntityDescription, + ) -> None: super().__init__(hass, entry, device, description) self._attr_temperature_unit = TEMP_CELSIUS @@ -138,37 +155,38 @@ class HonACClimateEntity(HonEntity, ClimateEntity): self._handle_coordinator_update(update=False) def _set_temperature_bound(self) -> None: - self._attr_target_temperature_step = self._device.settings[ - "settings.tempSel" - ].step - self._attr_max_temp = self._device.settings["settings.tempSel"].max - self._attr_min_temp = self._device.settings["settings.tempSel"].min + temperature = self._device.settings[self.entity_description.key] + if not isinstance(temperature, HonParameterRange): + raise ValueError + self._attr_max_temp = temperature.max + self._attr_target_temperature_step = temperature.step + self._attr_min_temp = temperature.min @property - def target_temperature(self) -> int | None: + def target_temperature(self) -> float | None: """Return the temperature we try to reach.""" - return self._device.get("tempSel") + return self._device.get("tempSel", 0.0) @property def current_temperature(self) -> float | None: """Return the current temperature.""" - return self._device.get("tempIndoor") + return self._device.get("tempIndoor", 0.0) - async def async_set_temperature(self, **kwargs): + async def async_set_temperature(self, **kwargs: Any) -> None: if (temperature := kwargs.get(ATTR_TEMPERATURE)) is None: - return False + return self._device.settings["settings.tempSel"].value = str(int(temperature)) await self._device.commands["settings"].send() self.async_write_ha_state() @property - def hvac_mode(self) -> HVACMode | str | None: + def hvac_mode(self) -> HVACMode: if self._device.get("onOffStatus") == 0: return HVACMode.OFF else: return HON_HVAC_MODE[self._device.get("machMode")] - async def async_set_hvac_mode(self, hvac_mode): + async def async_set_hvac_mode(self, hvac_mode: HVACMode) -> None: self._attr_hvac_mode = hvac_mode if hvac_mode == HVACMode.OFF: await self._device.commands["stopProgram"].send() @@ -215,7 +233,7 @@ class HonACClimateEntity(HonEntity, ClimateEntity): """Return the fan setting.""" return HON_FAN[self._device.get("windSpeed")] - async def async_set_fan_mode(self, fan_mode): + async def async_set_fan_mode(self, fan_mode: str) -> None: fan_modes = {} for mode in reversed(self._device.settings["settings.windSpeed"].values): fan_modes[HON_FAN[int(mode)]] = mode @@ -231,14 +249,13 @@ class HonACClimateEntity(HonEntity, ClimateEntity): vertical = self._device.get("windDirectionVertical") if horizontal == 7 and vertical == 8: return SWING_BOTH - elif horizontal == 7: + if horizontal == 7: return SWING_HORIZONTAL - elif vertical == 8: + if vertical == 8: return SWING_VERTICAL - else: - return SWING_OFF + return SWING_OFF - async def async_set_swing_mode(self, swing_mode): + async def async_set_swing_mode(self, swing_mode: str) -> None: horizontal = self._device.settings["settings.windDirectionHorizontal"] vertical = self._device.settings["settings.windDirectionVertical"] if swing_mode in [SWING_BOTH, SWING_HORIZONTAL]: @@ -254,13 +271,7 @@ class HonACClimateEntity(HonEntity, ClimateEntity): self.async_write_ha_state() @callback - def _handle_coordinator_update(self, update=True) -> None: - self._attr_target_temperature = self.target_temperature - self._attr_current_temperature = self.current_temperature - self._attr_hvac_mode = self.hvac_mode - self._attr_fan_modes = self.fan_modes - self._attr_fan_mode = self.fan_mode - self._attr_swing_mode = self.swing_mode + def _handle_coordinator_update(self, update: bool = True) -> None: if update: self.async_write_ha_state() @@ -268,7 +279,13 @@ class HonACClimateEntity(HonEntity, ClimateEntity): class HonClimateEntity(HonEntity, ClimateEntity): entity_description: HonClimateEntityDescription - def __init__(self, hass, entry, device: HonAppliance, description) -> None: + def __init__( + self, + hass: HomeAssistantType, + entry: ConfigEntry, + device: HonAppliance, + description: HonClimateEntityDescription, + ) -> None: super().__init__(hass, entry, device, description) self._attr_temperature_unit = TEMP_CELSIUS @@ -288,7 +305,9 @@ class HonClimateEntity(HonEntity, ClimateEntity): for mode, data in device.commands["startProgram"].categories.items(): if mode not in data.parameters["program"].values: continue - if zone := data.parameters.get("zone"): + if (zone := data.parameters.get("zone")) and isinstance( + self.entity_description.name, str + ): if self.entity_description.name.lower() in zone.values: modes.append(mode) else: @@ -300,29 +319,29 @@ class HonClimateEntity(HonEntity, ClimateEntity): @property def target_temperature(self) -> float | None: """Return the temperature we try to reach.""" - return self._device.get(self.entity_description.key) + return self._device.get(self.entity_description.key, 0.0) @property def current_temperature(self) -> float | None: """Return the current temperature.""" temp_key = self.entity_description.key.split(".")[-1].replace("Sel", "") - return self._device.get(temp_key) + return self._device.get(temp_key, 0.0) - async def async_set_temperature(self, **kwargs): + async def async_set_temperature(self, **kwargs: Any) -> None: if (temperature := kwargs.get(ATTR_TEMPERATURE)) is None: - return False + return self._device.settings[self.entity_description.key].value = str(int(temperature)) await self._device.commands["settings"].send() self.async_write_ha_state() @property - def hvac_mode(self) -> HVACMode | str | None: + def hvac_mode(self) -> HVACMode: if self._device.get("onOffStatus") == 0: return HVACMode.OFF else: return self.entity_description.mode - async def async_set_hvac_mode(self, hvac_mode): + async def async_set_hvac_mode(self, hvac_mode: HVACMode) -> None: if len(self.hvac_modes) <= 1: return if hvac_mode == HVACMode.OFF: @@ -347,7 +366,8 @@ class HonClimateEntity(HonEntity, ClimateEntity): command = "stopProgram" if preset_mode == "no_mode" else "startProgram" if program := self._device.settings.get(f"{command}.program"): program.value = preset_mode - if zone := self._device.settings.get(f"{command}.zone"): + zone = self._device.settings.get(f"{command}.zone") + if zone and isinstance(self.entity_description.name, str): zone.value = self.entity_description.name.lower() self._device.sync_command(command, "settings") self._set_temperature_bound() @@ -356,18 +376,15 @@ class HonClimateEntity(HonEntity, ClimateEntity): self._attr_preset_mode = preset_mode self.async_write_ha_state() - def _set_temperature_bound(self): - self._attr_target_temperature_step = self._device.settings[ - self.entity_description.key - ].step - self._attr_max_temp = self._device.settings[self.entity_description.key].max - self._attr_min_temp = self._device.settings[self.entity_description.key].min + def _set_temperature_bound(self) -> None: + temperature = self._device.settings[self.entity_description.key] + if not isinstance(temperature, HonParameterRange): + raise ValueError + self._attr_max_temp = temperature.max + self._attr_target_temperature_step = temperature.step + self._attr_min_temp = temperature.min @callback - def _handle_coordinator_update(self, update=True) -> None: - self._attr_target_temperature = self.target_temperature - self._attr_current_temperature = self.current_temperature - self._attr_hvac_mode = self.hvac_mode - self._attr_preset_mode = self.preset_mode + def _handle_coordinator_update(self, update: bool = True) -> None: if update: self.async_write_ha_state() diff --git a/custom_components/hon/config_flow.py b/custom_components/hon/config_flow.py index e084ce9..c1ac7c8 100644 --- a/custom_components/hon/config_flow.py +++ b/custom_components/hon/config_flow.py @@ -1,8 +1,10 @@ import logging +from typing import Any -import voluptuous as vol +import voluptuous as vol # type: ignore[import] from homeassistant import config_entries from homeassistant.const import CONF_EMAIL, CONF_PASSWORD +from homeassistant.data_entry_flow import FlowResult from .const import DOMAIN @@ -13,11 +15,13 @@ class HonFlowHandler(config_entries.ConfigFlow, domain=DOMAIN): VERSION = 1 CONNECTION_CLASS = config_entries.CONN_CLASS_LOCAL_POLL - def __init__(self): - self._email = None - self._password = None + def __init__(self) -> None: + self._email: str | None = None + self._password: str | None = None - async def async_step_user(self, user_input=None): + async def async_step_user( + self, user_input: dict[str, Any] | None = None + ) -> FlowResult: if user_input is None: return self.async_show_form( step_id="user", @@ -29,6 +33,14 @@ class HonFlowHandler(config_entries.ConfigFlow, domain=DOMAIN): self._email = user_input[CONF_EMAIL] self._password = user_input[CONF_PASSWORD] + if self._email is None or self._password is None: + return self.async_show_form( + step_id="user", + data_schema=vol.Schema( + {vol.Required(CONF_EMAIL): str, vol.Required(CONF_PASSWORD): str} + ), + ) + # Check if already configured await self.async_set_unique_id(self._email) self._abort_if_unique_id_configured() @@ -41,5 +53,5 @@ class HonFlowHandler(config_entries.ConfigFlow, domain=DOMAIN): }, ) - async def async_step_import(self, user_input=None): + async def async_step_import(self, user_input: dict[str, str]) -> FlowResult: return await self.async_step_user(user_input) diff --git a/custom_components/hon/const.py b/custom_components/hon/const.py index 57bb3e7..5bbee26 100644 --- a/custom_components/hon/const.py +++ b/custom_components/hon/const.py @@ -6,10 +6,10 @@ from homeassistant.components.climate import ( FAN_AUTO, ) -DOMAIN = "hon" -UPDATE_INTERVAL = 10 +DOMAIN: str = "hon" +UPDATE_INTERVAL: int = 10 -PLATFORMS = [ +PLATFORMS: list[str] = [ "sensor", "select", "number", @@ -22,7 +22,7 @@ PLATFORMS = [ "lock", ] -APPLIANCES = { +APPLIANCES: dict[str, str] = { "AC": "Air Conditioner", "AP": "Air Purifier", "AS": "Air Scanner", @@ -40,7 +40,7 @@ APPLIANCES = { "WM": "Washing Machine", } -HON_HVAC_MODE = { +HON_HVAC_MODE: dict[int, HVACMode] = { 0: HVACMode.AUTO, 1: HVACMode.COOL, 2: HVACMode.DRY, @@ -50,7 +50,7 @@ HON_HVAC_MODE = { 6: HVACMode.FAN_ONLY, } -HON_HVAC_PROGRAM = { +HON_HVAC_PROGRAM: dict[str, str] = { HVACMode.AUTO: "iot_auto", HVACMode.COOL: "iot_cool", HVACMode.DRY: "iot_dry", @@ -58,7 +58,7 @@ HON_HVAC_PROGRAM = { HVACMode.FAN_ONLY: "iot_fan", } -HON_FAN = { +HON_FAN: dict[int, str] = { 1: FAN_HIGH, 2: FAN_MEDIUM, 3: FAN_LOW, @@ -67,7 +67,7 @@ HON_FAN = { } # These languages are official supported by hOn -LANGUAGES = [ +LANGUAGES: list[str] = [ "cs", # Czech "de", # German "el", # Greek @@ -89,7 +89,7 @@ LANGUAGES = [ "zh", # Chinese ] -WASHING_PR_PHASE = { +WASHING_PR_PHASE: dict[int, str] = { 0: "ready", 1: "washing", 2: "washing", @@ -116,7 +116,7 @@ WASHING_PR_PHASE = { 27: "washing", } -MACH_MODE = { +MACH_MODE: dict[int, str] = { 0: "ready", # NO_STATE 1: "ready", # SELECTION_MODE 2: "running", # EXECUTION_MODE @@ -129,7 +129,7 @@ MACH_MODE = { 9: "ending", # STOP_MODE } -TUMBLE_DRYER_PR_PHASE = { +TUMBLE_DRYER_PR_PHASE: dict[int, str] = { 0: "ready", 1: "heat_stroke", 2: "drying", @@ -147,21 +147,21 @@ TUMBLE_DRYER_PR_PHASE = { 20: "drying", } -DIRTY_LEVEL = { +DIRTY_LEVEL: dict[int, str] = { 0: "unknown", 1: "little", 2: "normal", 3: "very", } -STEAM_LEVEL = { +STEAM_LEVEL: dict[int, str] = { 0: "no_steam", 1: "cotton", 2: "delicate", 3: "synthetic", } -DISHWASHER_PR_PHASE = { +DISHWASHER_PR_PHASE: dict[int, str] = { 0: "ready", 1: "prewash", 2: "washing", @@ -171,7 +171,7 @@ DISHWASHER_PR_PHASE = { 6: "hot_rinse", } -TUMBLE_DRYER_DRY_LEVEL = { +TUMBLE_DRYER_DRY_LEVEL: dict[int, str] = { 0: "no_dry", 1: "iron_dry", 2: "no_dry_iron", @@ -184,7 +184,7 @@ TUMBLE_DRYER_DRY_LEVEL = { 15: "extra_dry", } -AC_MACH_MODE = { +AC_MACH_MODE: dict[int, str] = { 0: "auto", 1: "cool", 2: "cool", @@ -194,7 +194,7 @@ AC_MACH_MODE = { 6: "fan", } -AC_FAN_MODE = { +AC_FAN_MODE: dict[int, str] = { 1: "high", 2: "mid", 3: "low", @@ -202,14 +202,14 @@ AC_FAN_MODE = { 5: "auto", } -AC_HUMAN_SENSE = { +AC_HUMAN_SENSE: dict[int, str] = { 0: "touch_off", 1: "avoid_touch", 2: "follow_touch", 3: "unknown", } -AP_MACH_MODE = { +AP_MACH_MODE: dict[int, str] = { 0: "standby", 1: "sleep", 2: "auto", @@ -217,7 +217,7 @@ AP_MACH_MODE = { 4: "max", } -AP_DIFFUSER_LEVEL = { +AP_DIFFUSER_LEVEL: dict[int, str] = { 0: "off", 1: "soft", 2: "mid", @@ -225,4 +225,4 @@ AP_DIFFUSER_LEVEL = { 4: "custom", } -REF_HUMIDITY_LEVELS = {1: "low", 2: "mid", 3: "high"} +REF_HUMIDITY_LEVELS: dict[int, str] = {1: "low", 2: "mid", 3: "high"} diff --git a/custom_components/hon/fan.py b/custom_components/hon/fan.py index f0eb550..a9f3913 100644 --- a/custom_components/hon/fan.py +++ b/custom_components/hon/fan.py @@ -1,6 +1,5 @@ import logging import math -from dataclasses import dataclass from typing import Any from homeassistant.components.fan import ( @@ -10,6 +9,8 @@ from homeassistant.components.fan import ( ) from homeassistant.config_entries import ConfigEntry from homeassistant.core import callback +from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.helpers.typing import HomeAssistantType from homeassistant.util.percentage import ( percentage_to_ranged_value, ranged_value_to_percentage, @@ -19,18 +20,14 @@ from pyhon.parameter.range import HonParameterRange from .const import DOMAIN from .hon import HonEntity +from .typedefs import HonEntityDescription _LOGGER = logging.getLogger(__name__) -@dataclass -class HonFanEntityDescription(FanEntityDescription): - pass - - -FANS = { +FANS: dict[str, tuple[FanEntityDescription, ...]] = { "HO": ( - HonFanEntityDescription( + FanEntityDescription( key="settings.windSpeed", name="Wind Speed", translation_key="air_extraction", @@ -39,30 +36,36 @@ FANS = { } -async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: +async def async_setup_entry( + hass: HomeAssistantType, entry: ConfigEntry, async_add_entities: AddEntitiesCallback +) -> None: entities = [] for device in hass.data[DOMAIN][entry.unique_id].appliances: for description in FANS.get(device.appliance_type, []): - if isinstance(description, HonFanEntityDescription): - if ( - description.key not in device.available_settings - or device.get(description.key.split(".")[-1]) is None - ): - continue - entity = HonFanEntity(hass, entry, device, description) - else: + if ( + description.key not in device.available_settings + or device.get(description.key.split(".")[-1]) is None + ): continue + entity = HonFanEntity(hass, entry, device, description) await entity.coordinator.async_config_entry_first_refresh() entities.append(entity) async_add_entities(entities) class HonFanEntity(HonEntity, FanEntity): - entity_description: HonFanEntityDescription + entity_description: FanEntityDescription - def __init__(self, hass, entry, device: HonAppliance, description) -> None: + def __init__( + self, + hass: HomeAssistantType, + entry: ConfigEntry, + device: HonAppliance, + description: FanEntityDescription, + ) -> None: self._attr_supported_features = FanEntityFeature.SET_SPEED - self._wind_speed: HonParameterRange = device.settings.get(description.key) + self._wind_speed: HonParameterRange + self._speed_range: tuple[int, int] self._command, self._parameter = description.key.split(".") super().__init__(hass, entry, device, description) @@ -89,8 +92,10 @@ class HonFanEntity(HonEntity, FanEntity): @property def is_on(self) -> bool | None: """Return true if device is on.""" + if self.percentage is None: + return False mode = math.ceil(percentage_to_ranged_value(self._speed_range, self.percentage)) - return mode > self._wind_speed.min + return bool(mode > self._wind_speed.min) async def async_turn_on( self, @@ -112,9 +117,10 @@ class HonFanEntity(HonEntity, FanEntity): self.async_write_ha_state() @callback - def _handle_coordinator_update(self, update=True) -> None: - self._wind_speed = self._device.settings.get(self.entity_description.key) - if len(self._wind_speed.values) > 1: + def _handle_coordinator_update(self, update: bool = True) -> None: + wind_speed = self._device.settings.get(self.entity_description.key) + if isinstance(wind_speed, HonParameterRange) and len(wind_speed.values) > 1: + self._wind_speed = wind_speed self._speed_range = ( int(self._wind_speed.values[1]), int(self._wind_speed.values[-1]), diff --git a/custom_components/hon/hon.py b/custom_components/hon/hon.py index 3a43678..1ddfe41 100644 --- a/custom_components/hon/hon.py +++ b/custom_components/hon/hon.py @@ -3,23 +3,79 @@ import logging from contextlib import suppress from datetime import timedelta from pathlib import Path +from typing import Optional, Any, TypeVar import pkg_resources +from homeassistant.config_entries import ConfigEntry from homeassistant.core import callback from homeassistant.helpers.entity import DeviceInfo +from homeassistant.helpers.typing import HomeAssistantType from homeassistant.helpers.update_coordinator import CoordinatorEntity from homeassistant.helpers.update_coordinator import DataUpdateCoordinator from pyhon.appliance import HonAppliance from .const import DOMAIN, UPDATE_INTERVAL +from .typedefs import HonEntityDescription, HonOptionEntityDescription, T _LOGGER = logging.getLogger(__name__) -class HonEntity(CoordinatorEntity): +class HonInfo: + def __init__(self) -> None: + self._manifest: dict[str, Any] = self._get_manifest() + self._hon_version: str = self._manifest.get("version", "") + self._pyhon_version: str = pkg_resources.get_distribution("pyhon").version + + @staticmethod + def _get_manifest() -> dict[str, Any]: + manifest = Path(__file__).parent / "manifest.json" + with open(manifest, "r", encoding="utf-8") as file: + result: dict[str, Any] = json.loads(file.read()) + return result + + @property + def manifest(self) -> dict[str, Any]: + return self._manifest + + @property + def hon_version(self) -> str: + return self._hon_version + + @property + def pyhon_version(self) -> str: + return self._pyhon_version + + +class HonCoordinator(DataUpdateCoordinator[None]): + def __init__(self, hass: HomeAssistantType, device: HonAppliance): + """Initialize my coordinator.""" + super().__init__( + hass, + _LOGGER, + name=device.unique_id, + update_interval=timedelta(seconds=UPDATE_INTERVAL), + ) + self._device = device + self._info = HonInfo() + + async def _async_update_data(self) -> None: + return await self._device.update() + + @property + def info(self) -> HonInfo: + return self._info + + +class HonEntity(CoordinatorEntity[HonCoordinator]): _attr_has_entity_name = True - def __init__(self, hass, entry, device: HonAppliance, description=None) -> None: + def __init__( + self, + hass: HomeAssistantType, + entry: ConfigEntry, + device: HonAppliance, + description: Optional[HonEntityDescription] = None, + ) -> None: coordinator = get_coordinator(hass, device) super().__init__(coordinator) @@ -36,7 +92,7 @@ class HonEntity(CoordinatorEntity): self._handle_coordinator_update(update=False) @property - def device_info(self): + def device_info(self) -> DeviceInfo: return DeviceInfo( identifiers={(DOMAIN, self._device.unique_id)}, manufacturer=self._device.get("brand", ""), @@ -51,71 +107,34 @@ class HonEntity(CoordinatorEntity): self.async_write_ha_state() -class HonInfo: - def __init__(self): - self._manifest = self._get_manifest() - self._hon_version = self._manifest.get("version", "") - self._pyhon_version = pkg_resources.get_distribution("pyhon").version - - @staticmethod - def _get_manifest(): - manifest = Path(__file__).parent / "manifest.json" - with open(manifest, "r", encoding="utf-8") as file: - return json.loads(file.read()) - - @property - def manifest(self): - return self._manifest - - @property - def hon_version(self): - return self._hon_version - - @property - def pyhon_version(self): - return self._pyhon_version - - -class HonCoordinator(DataUpdateCoordinator): - def __init__(self, hass, device: HonAppliance): - """Initialize my coordinator.""" - super().__init__( - hass, - _LOGGER, - name=device.unique_id, - update_interval=timedelta(seconds=UPDATE_INTERVAL), - ) - self._device = device - self._info = HonInfo() - - async def _async_update_data(self): - await self._device.update() - - @property - def info(self) -> HonInfo: - return self._info - - -def unique_entities(base_entities, new_entities): +def unique_entities( + base_entities: tuple[T, ...], + new_entities: tuple[T, ...], +) -> tuple[T, ...]: result = list(base_entities) existing_entities = [entity.key for entity in base_entities] + entity: HonEntityDescription for entity in new_entities: if entity.key not in existing_entities: result.append(entity) return tuple(result) -def get_coordinator(hass, appliance): +def get_coordinator(hass: HomeAssistantType, appliance: HonAppliance) -> HonCoordinator: coordinators = hass.data[DOMAIN]["coordinators"] if appliance.unique_id in coordinators: - coordinator = hass.data[DOMAIN]["coordinators"][appliance.unique_id] + coordinator: HonCoordinator = hass.data[DOMAIN]["coordinators"][ + appliance.unique_id + ] else: coordinator = HonCoordinator(hass, appliance) hass.data[DOMAIN]["coordinators"][appliance.unique_id] = coordinator return coordinator -def get_readable(description, value): +def get_readable( + description: HonOptionEntityDescription, value: float | str +) -> float | str: if description.option_list is not None: with suppress(ValueError): return description.option_list.get(int(value), value) diff --git a/custom_components/hon/light.py b/custom_components/hon/light.py index 3e36017..ca0815a 100644 --- a/custom_components/hon/light.py +++ b/custom_components/hon/light.py @@ -9,6 +9,8 @@ from homeassistant.components.light import ( ) from homeassistant.config_entries import ConfigEntry from homeassistant.core import callback +from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.helpers.typing import HomeAssistantType from pyhon.appliance import HonAppliance from pyhon.parameter.range import HonParameterRange @@ -18,7 +20,7 @@ from .hon import HonEntity _LOGGER = logging.getLogger(__name__) -LIGHTS = { +LIGHTS: dict[str, tuple[LightEntityDescription, ...]] = { "WC": ( LightEntityDescription( key="settings.lightStatus", @@ -43,7 +45,9 @@ LIGHTS = { } -async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: +async def async_setup_entry( + hass: HomeAssistantType, entry: ConfigEntry, async_add_entities: AddEntitiesCallback +) -> None: entities = [] for device in hass.data[DOMAIN][entry.unique_id].appliances: for description in LIGHTS.get(device.appliance_type, []): @@ -61,8 +65,16 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non class HonLightEntity(HonEntity, LightEntity): entity_description: LightEntityDescription - def __init__(self, hass, entry, device: HonAppliance, description) -> None: - light: HonParameterRange = device.settings.get(description.key) + def __init__( + self, + hass: HomeAssistantType, + entry: ConfigEntry, + device: HonAppliance, + description: LightEntityDescription, + ) -> None: + light = self._device.settings.get(self.entity_description.key) + if not isinstance(light, HonParameterRange): + raise ValueError() self._light_range = (light.min, light.max) self._attr_supported_color_modes: set[ColorMode] = set() if len(light.values) == 2: @@ -76,13 +88,13 @@ class HonLightEntity(HonEntity, LightEntity): @property def is_on(self) -> bool: """Return true if light is on.""" - return self._device.get(self.entity_description.key.split(".")[-1]) > 0 + return bool(self._device.get(self.entity_description.key.split(".")[-1]) > 0) async def async_turn_on(self, **kwargs: Any) -> None: """Turn on or control the light.""" - light: HonParameterRange = self._device.settings.get( - self.entity_description.key - ) + light = self._device.settings.get(self.entity_description.key) + if not isinstance(light, HonParameterRange): + raise ValueError() if ColorMode.BRIGHTNESS in self._attr_supported_color_modes: percent = int(100 / 255 * kwargs.get(ATTR_BRIGHTNESS, 128)) light.value = round(light.max / 100 * percent) @@ -96,9 +108,9 @@ class HonLightEntity(HonEntity, LightEntity): async def async_turn_off(self, **kwargs: Any) -> None: """Instruct the light to turn off.""" - light: HonParameterRange = self._device.settings.get( - self.entity_description.key - ) + light = self._device.settings.get(self.entity_description.key) + if not isinstance(light, HonParameterRange): + raise ValueError() light.value = light.min await self._device.commands[self._command].send() self.async_write_ha_state() @@ -106,15 +118,15 @@ class HonLightEntity(HonEntity, LightEntity): @property def brightness(self) -> int | None: """Return the brightness of the light.""" - light: HonParameterRange = self._device.settings.get( - self.entity_description.key - ) + light = self._device.settings.get(self.entity_description.key) + if not isinstance(light, HonParameterRange): + raise ValueError() if light.value == light.min: return None - return int(255 / light.max * light.value) + return int(255 / light.max * float(light.value)) @callback - def _handle_coordinator_update(self, update=True) -> None: + def _handle_coordinator_update(self, update: bool = True) -> None: self._attr_is_on = self.is_on self._attr_brightness = self.brightness if update: @@ -122,7 +134,6 @@ class HonLightEntity(HonEntity, LightEntity): @property def available(self) -> bool: - return ( - super().available - and len(self._device.settings.get(self.entity_description.key).values) > 1 - ) + if (entity := self._device.settings.get(self.entity_description.key)) is None: + return False + return super().available and len(entity.values) > 1 diff --git a/custom_components/hon/lock.py b/custom_components/hon/lock.py index b130136..4e7d526 100644 --- a/custom_components/hon/lock.py +++ b/custom_components/hon/lock.py @@ -4,6 +4,8 @@ from typing import Any from homeassistant.components.lock import LockEntity, LockEntityDescription from homeassistant.config_entries import ConfigEntry from homeassistant.core import callback +from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.helpers.typing import HomeAssistantType from pyhon.parameter.base import HonParameter from pyhon.parameter.range import HonParameterRange @@ -23,7 +25,9 @@ LOCKS: dict[str, tuple[LockEntityDescription, ...]] = { } -async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: +async def async_setup_entry( + hass: HomeAssistantType, entry: ConfigEntry, async_add_entities: AddEntitiesCallback +) -> None: entities = [] for device in hass.data[DOMAIN][entry.unique_id].appliances: for description in LOCKS.get(device.appliance_type, []): @@ -45,13 +49,12 @@ class HonLockEntity(HonEntity, LockEntity): @property def is_locked(self) -> bool | None: """Return a boolean for the state of the lock.""" - """Return True if entity is on.""" - return self._device.get(self.entity_description.key, 0) == 1 + return bool(self._device.get(self.entity_description.key, 0) == 1) async def async_lock(self, **kwargs: Any) -> None: """Lock method.""" - setting = self._device.settings[f"settings.{self.entity_description.key}"] - if type(setting) == HonParameter: + setting = self._device.settings.get(f"settings.{self.entity_description.key}") + if type(setting) == HonParameter or setting is None: return setting.value = setting.max if isinstance(setting, HonParameterRange) else 1 self.async_write_ha_state() @@ -78,8 +81,7 @@ class HonLockEntity(HonEntity, LockEntity): ) @callback - def _handle_coordinator_update(self, update=True) -> None: - value = self._device.get(self.entity_description.key, 0) + def _handle_coordinator_update(self, update: bool = True) -> None: self._attr_is_locked = self.is_locked if update: self.async_write_ha_state() diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index a04178b..e2d96b7 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -10,6 +10,9 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.const import UnitOfTime, UnitOfTemperature from homeassistant.core import callback from homeassistant.helpers.entity import EntityCategory +from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.helpers.typing import HomeAssistantType +from pyhon.appliance import HonAppliance from pyhon.parameter.range import HonParameterRange from .const import DOMAIN @@ -183,8 +186,11 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { NUMBERS["WD"] = unique_entities(NUMBERS["WM"], NUMBERS["TD"]) -async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: +async def async_setup_entry( + hass: HomeAssistantType, entry: ConfigEntry, async_add_entities: AddEntitiesCallback +) -> None: entities = [] + entity: HonNumberEntity | HonConfigNumberEntity for device in hass.data[DOMAIN][entry.unique_id].appliances: for description in NUMBERS.get(device.appliance_type, []): if description.key not in device.available_settings: @@ -203,7 +209,13 @@ async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> Non class HonNumberEntity(HonEntity, NumberEntity): entity_description: HonNumberEntityDescription - def __init__(self, hass, entry, device, description) -> None: + def __init__( + self, + hass: HomeAssistantType, + entry: ConfigEntry, + device: HonAppliance, + description: HonNumberEntityDescription, + ) -> None: super().__init__(hass, entry, device, description) self._data = device.settings[description.key] @@ -214,7 +226,9 @@ class HonNumberEntity(HonEntity, NumberEntity): @property def native_value(self) -> float | None: - return self._device.get(self.entity_description.key.split(".")[-1]) + if value := self._device.get(self.entity_description.key.split(".")[-1]): + return float(value) + return None async def async_set_native_value(self, value: float) -> None: setting = self._device.settings[self.entity_description.key] @@ -227,7 +241,7 @@ class HonNumberEntity(HonEntity, NumberEntity): await self.coordinator.async_refresh() @callback - def _handle_coordinator_update(self, update=True) -> None: + def _handle_coordinator_update(self, update: bool = True) -> None: setting = self._device.settings[self.entity_description.key] if isinstance(setting, HonParameterRange): self._attr_native_max_value = setting.max @@ -247,14 +261,31 @@ class HonNumberEntity(HonEntity, NumberEntity): ) -class HonConfigNumberEntity(HonNumberEntity): +class HonConfigNumberEntity(HonEntity, NumberEntity): entity_description: HonConfigNumberEntityDescription + def __init__( + self, + hass: HomeAssistantType, + entry: ConfigEntry, + device: HonAppliance, + description: HonConfigNumberEntityDescription, + ) -> None: + super().__init__(hass, entry, device, description) + + self._data = device.settings[description.key] + if isinstance(self._data, HonParameterRange): + self._attr_native_max_value = self._data.max + self._attr_native_min_value = self._data.min + self._attr_native_step = self._data.step + @property def native_value(self) -> float | None: - return self._device.settings[self.entity_description.key].value + if value := self._device.settings[self.entity_description.key].value: + return float(value) + return None - async def async_set_native_value(self, value: str) -> None: + async def async_set_native_value(self, value: float) -> None: setting = self._device.settings[self.entity_description.key] if isinstance(setting, HonParameterRange): setting.value = value @@ -264,3 +295,14 @@ class HonConfigNumberEntity(HonNumberEntity): def available(self) -> bool: """Return True if entity is available.""" return super(NumberEntity, self).available + + @callback + def _handle_coordinator_update(self, update: bool = True) -> None: + setting = self._device.settings[self.entity_description.key] + if isinstance(setting, HonParameterRange): + self._attr_native_max_value = setting.max + self._attr_native_min_value = setting.min + self._attr_native_step = setting.step + self._attr_native_value = self.native_value + if update: + self.async_write_ha_state() diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index 130480f..f855479 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -2,13 +2,14 @@ from __future__ import annotations import logging from dataclasses import dataclass -from typing import Dict, List from homeassistant.components.select import SelectEntity, SelectEntityDescription from homeassistant.config_entries import ConfigEntry from homeassistant.const import UnitOfTemperature, UnitOfTime, REVOLUTIONS_PER_MINUTE from homeassistant.core import callback from homeassistant.helpers.entity import EntityCategory +from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.helpers.typing import HomeAssistantType from . import const from .const import DOMAIN @@ -19,16 +20,16 @@ _LOGGER = logging.getLogger(__name__) @dataclass class HonSelectEntityDescription(SelectEntityDescription): - option_list: Dict[int, str] = None + option_list: dict[int, str] | None = None @dataclass class HonConfigSelectEntityDescription(SelectEntityDescription): entity_category: EntityCategory = EntityCategory.CONFIG - option_list: Dict[int, str] = None + option_list: dict[int, str] | None = None -SELECTS = { +SELECTS: dict[str, tuple[SelectEntityDescription, ...]] = { "WM": ( HonConfigSelectEntityDescription( key="startProgram.spinSpeed", @@ -168,8 +169,11 @@ SELECTS = { SELECTS["WD"] = unique_entities(SELECTS["WM"], SELECTS["TD"]) -async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: +async def async_setup_entry( + hass: HomeAssistantType, entry: ConfigEntry, async_add_entities: AddEntitiesCallback +) -> None: entities = [] + entity: HonSelectEntity | HonConfigSelectEntity for device in hass.data[DOMAIN][entry.unique_id].appliances: for description in SELECTS.get(device.appliance_type, []): if description.key not in device.available_settings: @@ -195,16 +199,18 @@ class HonConfigSelectEntity(HonEntity, SelectEntity): value = get_readable(self.entity_description, setting.value) if value not in self._attr_options: return None - return value + return str(value) @property def options(self) -> list[str]: setting = self._device.settings.get(self.entity_description.key) if setting is None: return [] - return [get_readable(self.entity_description, key) for key in setting.values] + return [ + str(get_readable(self.entity_description, key)) for key in setting.values + ] - def _option_to_number(self, option: str, values: List[str]): + def _option_to_number(self, option: str, values: list[str]) -> str: if (options := self.entity_description.option_list) is not None: return str( next( @@ -220,7 +226,7 @@ class HonConfigSelectEntity(HonEntity, SelectEntity): await self.coordinator.async_refresh() @callback - def _handle_coordinator_update(self, update=True) -> None: + def _handle_coordinator_update(self, update: bool = True) -> None: self._attr_available = self.available self._attr_options = self.options self._attr_current_option = self.current_option @@ -233,9 +239,37 @@ class HonConfigSelectEntity(HonEntity, SelectEntity): return self._device.settings.get(self.entity_description.key) is not None -class HonSelectEntity(HonConfigSelectEntity): +class HonSelectEntity(HonEntity, SelectEntity): entity_description: HonSelectEntityDescription + @property + def current_option(self) -> str | None: + if not (setting := self._device.settings.get(self.entity_description.key)): + return None + value = get_readable(self.entity_description, setting.value) + if value not in self._attr_options: + return None + return str(value) + + @property + def options(self) -> list[str]: + setting = self._device.settings.get(self.entity_description.key) + if setting is None: + return [] + return [ + str(get_readable(self.entity_description, key)) for key in setting.values + ] + + def _option_to_number(self, option: str, values: list[str]) -> str: + if (options := self.entity_description.option_list) is not None: + return str( + next( + (k for k, v in options.items() if str(k) in values and v == option), + option, + ) + ) + return option + async def async_select_option(self, option: str) -> None: setting = self._device.settings[self.entity_description.key] setting.value = self._option_to_number(option, setting.values) @@ -253,3 +287,11 @@ class HonSelectEntity(HonConfigSelectEntity): and int(self._device.get("remoteCtrValid", 1)) == 1 and self._device.get("attributes.lastConnEvent.category") != "DISCONNECTED" ) + + @callback + def _handle_coordinator_update(self, update: bool = True) -> None: + self._attr_available = self.available + self._attr_options = self.options + self._attr_current_option = self.current_option + if update: + self.async_write_ha_state() diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index a1e8cce..a2d57d9 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -1,6 +1,5 @@ import logging from dataclasses import dataclass -from typing import Dict from homeassistant.components.sensor import ( SensorEntity, @@ -25,6 +24,8 @@ from homeassistant.const import ( ) from homeassistant.core import callback from homeassistant.helpers.entity import EntityCategory +from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.helpers.typing import HomeAssistantType from . import const from .const import DOMAIN @@ -36,12 +37,12 @@ _LOGGER = logging.getLogger(__name__) @dataclass class HonConfigSensorEntityDescription(SensorEntityDescription): entity_category: EntityCategory = EntityCategory.CONFIG - option_list: Dict[int, str] = None + option_list: dict[int, str] | None = None @dataclass class HonSensorEntityDescription(SensorEntityDescription): - option_list: Dict[int, str] = None + option_list: dict[int, str] | None = None SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { @@ -775,8 +776,11 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { SENSORS["WD"] = unique_entities(SENSORS["WM"], SENSORS["TD"]) -async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: +async def async_setup_entry( + hass: HomeAssistantType, entry: ConfigEntry, async_add_entities: AddEntitiesCallback +) -> None: entities = [] + entity: HonSensorEntity | HonConfigSensorEntity for device in hass.data[DOMAIN][entry.unique_id].appliances: for description in SENSORS.get(device.appliance_type, []): if isinstance(description, HonSensorEntityDescription): @@ -799,15 +803,15 @@ class HonSensorEntity(HonEntity, SensorEntity): entity_description: HonSensorEntityDescription @callback - def _handle_coordinator_update(self, update=True) -> None: + def _handle_coordinator_update(self, update: bool = True) -> None: value = self._device.get(self.entity_description.key, "") if self.entity_description.key == "programName": - self._attr_options = self._device.settings.get( - "startProgram.program" - ).values + ["No Program"] + if not (options := self._device.settings.get("startProgram.program")): + raise ValueError + self._attr_options = options.values + ["No Program"] elif self.entity_description.option_list is not None: self._attr_options = list(self.entity_description.option_list.values()) - value = get_readable(self.entity_description, value) + value = str(get_readable(self.entity_description, value)) if not value and self.entity_description.state_class is not None: self._attr_native_value = 0 self._attr_native_value = value @@ -819,17 +823,22 @@ class HonConfigSensorEntity(HonEntity, SensorEntity): entity_description: HonConfigSensorEntityDescription @callback - def _handle_coordinator_update(self, update=True) -> None: - value = self._device.settings.get(self.entity_description.key, None) + def _handle_coordinator_update(self, update: bool = True) -> None: + sensor = self._device.settings.get(self.entity_description.key, None) + value: float | str if self.entity_description.state_class is not None: - if value and value.value: + if sensor and sensor.value: value = ( - float(value.value) if "." in str(value.value) else int(value.value) + float(sensor.value) + if "." in str(sensor.value) + else int(sensor.value) ) else: value = 0 + elif sensor is not None: + value = sensor.value else: - value = value.value + value = 0 if self.entity_description.option_list is not None and not value == 0: self._attr_options = list(self.entity_description.option_list.values()) value = get_readable(self.entity_description, value) diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 8cc5b0f..37f3693 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -7,6 +7,8 @@ from homeassistant.components.switch import SwitchEntityDescription, SwitchEntit from homeassistant.config_entries import ConfigEntry from homeassistant.core import callback from homeassistant.helpers.entity import EntityCategory +from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.helpers.typing import HomeAssistantType from pyhon.parameter.base import HonParameter from pyhon.parameter.range import HonParameterRange @@ -17,18 +19,11 @@ _LOGGER = logging.getLogger(__name__) @dataclass -class HonSwitchEntityDescriptionMixin: +class HonControlSwitchEntityDescription(SwitchEntityDescription): turn_on_key: str = "" turn_off_key: str = "" -@dataclass -class HonControlSwitchEntityDescription( - HonSwitchEntityDescriptionMixin, SwitchEntityDescription -): - pass - - class HonSwitchEntityDescription(SwitchEntityDescription): pass @@ -38,7 +33,7 @@ class HonConfigSwitchEntityDescription(SwitchEntityDescription): entity_category: EntityCategory = EntityCategory.CONFIG -SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { +SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = { "WM": ( HonControlSwitchEntityDescription( key="active", @@ -355,8 +350,11 @@ SWITCHES["WD"] = unique_entities(SWITCHES["WD"], SWITCHES["WM"]) SWITCHES["WD"] = unique_entities(SWITCHES["WD"], SWITCHES["TD"]) -async def async_setup_entry(hass, entry: ConfigEntry, async_add_entities) -> None: +async def async_setup_entry( + hass: HomeAssistantType, entry: ConfigEntry, async_add_entities: AddEntitiesCallback +) -> None: entities = [] + entity: HonConfigSwitchEntity | HonControlSwitchEntity | HonSwitchEntity for device in hass.data[DOMAIN][entry.unique_id].appliances: for description in SWITCHES.get(device.appliance_type, []): if isinstance(description, HonConfigSwitchEntityDescription): @@ -427,7 +425,7 @@ class HonSwitchEntity(HonEntity, SwitchEntity): return True @callback - def _handle_coordinator_update(self, update=True) -> None: + def _handle_coordinator_update(self, update: bool = True) -> None: self._attr_is_on = self.is_on if update: self.async_write_ha_state() @@ -507,7 +505,7 @@ class HonConfigSwitchEntity(HonEntity, SwitchEntity): await self.coordinator.async_refresh() @callback - def _handle_coordinator_update(self, update=True) -> None: + def _handle_coordinator_update(self, update: bool = True) -> None: self._attr_is_on = self.is_on if update: self.async_write_ha_state() diff --git a/custom_components/hon/typedefs.py b/custom_components/hon/typedefs.py new file mode 100644 index 0000000..b47361b --- /dev/null +++ b/custom_components/hon/typedefs.py @@ -0,0 +1,95 @@ +from typing import Union, TypeVar + +from homeassistant.components.button import ButtonEntityDescription +from homeassistant.components.fan import FanEntityDescription +from homeassistant.components.light import LightEntityDescription +from homeassistant.components.lock import LockEntityDescription +from homeassistant.components.number import NumberEntityDescription +from homeassistant.components.select import SelectEntityDescription +from homeassistant.components.sensor import SensorEntityDescription +from homeassistant.components.switch import SwitchEntityDescription + +from .binary_sensor import HonBinarySensorEntityDescription +from .button import HonButtonEntity, HonDataArchive, HonDeviceInfo +from .climate import ( + HonACClimateEntityDescription, + HonClimateEntityDescription, +) +from .number import ( + HonConfigNumberEntityDescription, + HonNumberEntityDescription, +) +from .select import ( + HonConfigSelectEntityDescription, + HonSelectEntityDescription, +) +from .sensor import ( + HonSensorEntityDescription, + HonConfigSensorEntityDescription, +) +from .switch import ( + HonControlSwitchEntityDescription, + HonSwitchEntityDescription, + HonConfigSwitchEntityDescription, +) + +HonButtonType = Union[ + HonButtonEntity, + HonDataArchive, + HonDeviceInfo, +] + +HonEntityDescription = Union[ + HonBinarySensorEntityDescription, + HonControlSwitchEntityDescription, + HonSwitchEntityDescription, + HonConfigSwitchEntityDescription, + HonSensorEntityDescription, + HonConfigSelectEntityDescription, + HonConfigNumberEntityDescription, + HonACClimateEntityDescription, + HonClimateEntityDescription, + HonNumberEntityDescription, + HonSelectEntityDescription, + HonConfigSensorEntityDescription, + FanEntityDescription, + LightEntityDescription, + LockEntityDescription, + ButtonEntityDescription, + SwitchEntityDescription, + SensorEntityDescription, + SelectEntityDescription, + NumberEntityDescription, +] + +HonOptionEntityDescription = Union[ + HonConfigSelectEntityDescription, + HonSelectEntityDescription, + HonConfigSensorEntityDescription, + HonSensorEntityDescription, +] + +T = TypeVar( + "T", + HonBinarySensorEntityDescription, + HonControlSwitchEntityDescription, + HonSwitchEntityDescription, + HonConfigSwitchEntityDescription, + HonSensorEntityDescription, + HonConfigSelectEntityDescription, + HonConfigNumberEntityDescription, + HonACClimateEntityDescription, + HonClimateEntityDescription, + HonNumberEntityDescription, + HonSelectEntityDescription, + HonConfigSensorEntityDescription, + FanEntityDescription, + LightEntityDescription, + LockEntityDescription, + ButtonEntityDescription, + SwitchEntityDescription, + SensorEntityDescription, + SelectEntityDescription, + NumberEntityDescription, +) + diff --git a/mypy.ini b/mypy.ini new file mode 100644 index 0000000..b9741da --- /dev/null +++ b/mypy.ini @@ -0,0 +1,25 @@ +[mypy] +check_untyped_defs = true +disallow_any_generics = true +disallow_incomplete_defs = true +disallow_untyped_calls = true +disallow_untyped_decorators = true +disallow_untyped_defs = true +disable_error_code = annotation-unchecked +enable_error_code = ignore-without-code, redundant-self, truthy-iterable +follow_imports = silent +local_partial_types = true +no_implicit_optional = true +no_implicit_reexport = true +show_error_codes = true +strict_concatenate = false +strict_equality = true +warn_incomplete_stub = true +warn_redundant_casts = true +warn_return_any = true +warn_unreachable = true +warn_unused_configs = true +warn_unused_ignores = true + +[mypy-homeassistant.*] +implicit_reexport = True \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..826c706 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +pyhOn +homeassistant diff --git a/requirements_dev.txt b/requirements_dev.txt index ba9cd59..6b7cfce 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -1,3 +1,4 @@ -pyhOn black -homeassistant +flake8 +mypy +pylint -- 2.39.5 From 2acc6225c4127a15da2154517b84d657536d4ae1 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 24 Jul 2023 01:56:15 +0200 Subject: [PATCH 171/205] Fix failed build --- custom_components/hon/fan.py | 1 - custom_components/hon/hon.py | 4 ++-- custom_components/hon/typedefs.py | 1 - scripts/generate_translation.py | 1 - 4 files changed, 2 insertions(+), 5 deletions(-) diff --git a/custom_components/hon/fan.py b/custom_components/hon/fan.py index a9f3913..f51edc8 100644 --- a/custom_components/hon/fan.py +++ b/custom_components/hon/fan.py @@ -20,7 +20,6 @@ from pyhon.parameter.range import HonParameterRange from .const import DOMAIN from .hon import HonEntity -from .typedefs import HonEntityDescription _LOGGER = logging.getLogger(__name__) diff --git a/custom_components/hon/hon.py b/custom_components/hon/hon.py index 1ddfe41..4b88aa6 100644 --- a/custom_components/hon/hon.py +++ b/custom_components/hon/hon.py @@ -3,9 +3,9 @@ import logging from contextlib import suppress from datetime import timedelta from pathlib import Path -from typing import Optional, Any, TypeVar +from typing import Optional, Any -import pkg_resources +import pkg_resources # type: ignore[import, unused-ignore] from homeassistant.config_entries import ConfigEntry from homeassistant.core import callback from homeassistant.helpers.entity import DeviceInfo diff --git a/custom_components/hon/typedefs.py b/custom_components/hon/typedefs.py index b47361b..4410488 100644 --- a/custom_components/hon/typedefs.py +++ b/custom_components/hon/typedefs.py @@ -92,4 +92,3 @@ T = TypeVar( SelectEntityDescription, NumberEntityDescription, ) - diff --git a/scripts/generate_translation.py b/scripts/generate_translation.py index e562780..9106dae 100755 --- a/scripts/generate_translation.py +++ b/scripts/generate_translation.py @@ -8,7 +8,6 @@ from pathlib import Path from pyhon import HonAPI - if __name__ == "__main__": sys.path.insert(0, str(Path(__file__).parent.parent)) -- 2.39.5 From 3924c6ed773d985db9df717f6859b94dc0503e8c Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 24 Jul 2023 21:37:48 +0200 Subject: [PATCH 172/205] Fix issues from refactoring --- README.md | 4 +- custom_components/hon/__init__.py | 4 +- custom_components/hon/climate.py | 2 +- custom_components/hon/light.py | 2 +- custom_components/hon/manifest.json | 4 +- custom_components/hon/typedefs.py | 159 ++++++++++++++-------------- info.md | 4 +- 7 files changed, 90 insertions(+), 89 deletions(-) diff --git a/README.md b/README.md index 38821ba..b3f1a11 100644 --- a/README.md +++ b/README.md @@ -40,8 +40,8 @@ Support has been confirmed for these models, but many more will work. Please add | | **Haier** | **Hoover** | **Candy** | |---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------| -| **Washing Machine** | HW80-B14959TU1DE
HW90-B14TEAM5
HW100-B14959U1 | H-WASH 500
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80 | CO4 107T1/2-07
CBWO49TWME-S
RO44 1286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | -| **Tumble Dryer** | HD80-A3959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S | +| **Washing Machine** | HW80-B14959TU1DE
HW90-B14TEAM5
HW100-B14959U1 | H-WASH 500
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80 | CO4 107T1/2-07
CBWO49TWME-S
RO44 1286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | +| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S | | **Washer Dryer** | HWD100-B14979 | HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | | **Oven** | HWO60SM2F3XH | HSOT3161WG | | | **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | diff --git a/custom_components/hon/__init__.py b/custom_components/hon/__init__.py index a684d3c..e95e3b8 100644 --- a/custom_components/hon/__init__.py +++ b/custom_components/hon/__init__.py @@ -25,7 +25,7 @@ CONFIG_SCHEMA = vol.Schema( ) -async def async_setup_entry(hass: HomeAssistantType, entry: ConfigEntry) -> None: +async def async_setup_entry(hass: HomeAssistantType, entry: ConfigEntry) -> bool: session = aiohttp_client.async_get_clientsession(hass) if (config_dir := hass.config.config_dir) is None: raise ValueError("Missing Config Dir") @@ -43,7 +43,7 @@ async def async_setup_entry(hass: HomeAssistantType, entry: ConfigEntry) -> None hass.async_create_task( hass.config_entries.async_forward_entry_setup(entry, platform) ) - return + return True async def async_unload_entry(hass: HomeAssistantType, entry: ConfigEntry) -> bool: diff --git a/custom_components/hon/climate.py b/custom_components/hon/climate.py index 095d27d..5731462 100644 --- a/custom_components/hon/climate.py +++ b/custom_components/hon/climate.py @@ -155,7 +155,7 @@ class HonACClimateEntity(HonEntity, ClimateEntity): self._handle_coordinator_update(update=False) def _set_temperature_bound(self) -> None: - temperature = self._device.settings[self.entity_description.key] + temperature = self._device.settings["settings.tempSel"] if not isinstance(temperature, HonParameterRange): raise ValueError self._attr_max_temp = temperature.max diff --git a/custom_components/hon/light.py b/custom_components/hon/light.py index ca0815a..f7aa870 100644 --- a/custom_components/hon/light.py +++ b/custom_components/hon/light.py @@ -72,7 +72,7 @@ class HonLightEntity(HonEntity, LightEntity): device: HonAppliance, description: LightEntityDescription, ) -> None: - light = self._device.settings.get(self.entity_description.key) + light = device.settings.get(description.key) if not isinstance(light, HonParameterRange): raise ValueError() self._light_range = (light.min, light.max) diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index a53ca1e..331c7de 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -9,7 +9,7 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": [ - "pyhOn==0.14.10" + "pyhOn==0.15.5" ], - "version": "0.9.1-beta.1" + "version": "0.9.1" } diff --git a/custom_components/hon/typedefs.py b/custom_components/hon/typedefs.py index 4410488..5456396 100644 --- a/custom_components/hon/typedefs.py +++ b/custom_components/hon/typedefs.py @@ -1,94 +1,95 @@ -from typing import Union, TypeVar +from typing import Union, TypeVar, TYPE_CHECKING -from homeassistant.components.button import ButtonEntityDescription -from homeassistant.components.fan import FanEntityDescription -from homeassistant.components.light import LightEntityDescription -from homeassistant.components.lock import LockEntityDescription -from homeassistant.components.number import NumberEntityDescription -from homeassistant.components.select import SelectEntityDescription -from homeassistant.components.sensor import SensorEntityDescription -from homeassistant.components.switch import SwitchEntityDescription +if TYPE_CHECKING: + from homeassistant.components.button import ButtonEntityDescription + from homeassistant.components.fan import FanEntityDescription + from homeassistant.components.light import LightEntityDescription + from homeassistant.components.lock import LockEntityDescription + from homeassistant.components.number import NumberEntityDescription + from homeassistant.components.select import SelectEntityDescription + from homeassistant.components.sensor import SensorEntityDescription + from homeassistant.components.switch import SwitchEntityDescription -from .binary_sensor import HonBinarySensorEntityDescription -from .button import HonButtonEntity, HonDataArchive, HonDeviceInfo -from .climate import ( - HonACClimateEntityDescription, - HonClimateEntityDescription, -) -from .number import ( - HonConfigNumberEntityDescription, - HonNumberEntityDescription, -) -from .select import ( - HonConfigSelectEntityDescription, - HonSelectEntityDescription, -) -from .sensor import ( - HonSensorEntityDescription, - HonConfigSensorEntityDescription, -) -from .switch import ( - HonControlSwitchEntityDescription, - HonSwitchEntityDescription, - HonConfigSwitchEntityDescription, -) + from .binary_sensor import HonBinarySensorEntityDescription + from .button import HonButtonEntity, HonDataArchive, HonDeviceInfo + from .climate import ( + HonACClimateEntityDescription, + HonClimateEntityDescription, + ) + from .number import ( + HonConfigNumberEntityDescription, + HonNumberEntityDescription, + ) + from .select import ( + HonConfigSelectEntityDescription, + HonSelectEntityDescription, + ) + from .sensor import ( + HonSensorEntityDescription, + HonConfigSensorEntityDescription, + ) + from .switch import ( + HonControlSwitchEntityDescription, + HonSwitchEntityDescription, + HonConfigSwitchEntityDescription, + ) HonButtonType = Union[ - HonButtonEntity, - HonDataArchive, - HonDeviceInfo, + "HonButtonEntity", + "HonDataArchive", + "HonDeviceInfo", ] HonEntityDescription = Union[ - HonBinarySensorEntityDescription, - HonControlSwitchEntityDescription, - HonSwitchEntityDescription, - HonConfigSwitchEntityDescription, - HonSensorEntityDescription, - HonConfigSelectEntityDescription, - HonConfigNumberEntityDescription, - HonACClimateEntityDescription, - HonClimateEntityDescription, - HonNumberEntityDescription, - HonSelectEntityDescription, - HonConfigSensorEntityDescription, - FanEntityDescription, - LightEntityDescription, - LockEntityDescription, - ButtonEntityDescription, - SwitchEntityDescription, - SensorEntityDescription, - SelectEntityDescription, - NumberEntityDescription, + "HonBinarySensorEntityDescription", + "HonControlSwitchEntityDescription", + "HonSwitchEntityDescription", + "HonConfigSwitchEntityDescription", + "HonSensorEntityDescription", + "HonConfigSelectEntityDescription", + "HonConfigNumberEntityDescription", + "HonACClimateEntityDescription", + "HonClimateEntityDescription", + "HonNumberEntityDescription", + "HonSelectEntityDescription", + "HonConfigSensorEntityDescription", + "FanEntityDescription", + "LightEntityDescription", + "LockEntityDescription", + "ButtonEntityDescription", + "SwitchEntityDescription", + "SensorEntityDescription", + "SelectEntityDescription", + "NumberEntityDescription", ] HonOptionEntityDescription = Union[ - HonConfigSelectEntityDescription, - HonSelectEntityDescription, - HonConfigSensorEntityDescription, - HonSensorEntityDescription, + "HonConfigSelectEntityDescription", + "HonSelectEntityDescription", + "HonConfigSensorEntityDescription", + "HonSensorEntityDescription", ] T = TypeVar( "T", - HonBinarySensorEntityDescription, - HonControlSwitchEntityDescription, - HonSwitchEntityDescription, - HonConfigSwitchEntityDescription, - HonSensorEntityDescription, - HonConfigSelectEntityDescription, - HonConfigNumberEntityDescription, - HonACClimateEntityDescription, - HonClimateEntityDescription, - HonNumberEntityDescription, - HonSelectEntityDescription, - HonConfigSensorEntityDescription, - FanEntityDescription, - LightEntityDescription, - LockEntityDescription, - ButtonEntityDescription, - SwitchEntityDescription, - SensorEntityDescription, - SelectEntityDescription, - NumberEntityDescription, + "HonBinarySensorEntityDescription", + "HonControlSwitchEntityDescription", + "HonSwitchEntityDescription", + "HonConfigSwitchEntityDescription", + "HonSensorEntityDescription", + "HonConfigSelectEntityDescription", + "HonConfigNumberEntityDescription", + "HonACClimateEntityDescription", + "HonClimateEntityDescription", + "HonNumberEntityDescription", + "HonSelectEntityDescription", + "HonConfigSensorEntityDescription", + "FanEntityDescription", + "LightEntityDescription", + "LockEntityDescription", + "ButtonEntityDescription", + "SwitchEntityDescription", + "SensorEntityDescription", + "SelectEntityDescription", + "NumberEntityDescription", ) diff --git a/info.md b/info.md index 76ac925..8882b4c 100644 --- a/info.md +++ b/info.md @@ -29,8 +29,8 @@ Support has been confirmed for these models, but many more will work. Please add | | **Haier** | **Hoover** | **Candy** | |---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------| -| **Washing Machine** | HW80-B14959TU1DE
HW90-B14TEAM5
HW100-B14959U1 | H-WASH 500
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80 | CO4 107T1/2-07
CBWO49TWME-S
RO44 1286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | -| **Tumble Dryer** | HD80-A3959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S | +| **Washing Machine** | HW80-B14959TU1DE
HW90-B14TEAM5
HW100-B14959U1 | H-WASH 500
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80 | CO4 107T1/2-07
CBWO49TWME-S
RO44 1286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | +| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S | | **Washer Dryer** | HWD100-B14979 | HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | | **Oven** | HWO60SM2F3XH | HSOT3161WG | | | **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | -- 2.39.5 From d560e9a664c2c320631430de5d587571075d0bba Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Fri, 29 Sep 2023 15:37:49 +0200 Subject: [PATCH 173/205] Update supported devices --- README.md | 26 +++++++++++++------------- info.md | 27 ++++++++++++++------------- 2 files changed, 27 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index b3f1a11..c122def 100644 --- a/README.md +++ b/README.md @@ -38,19 +38,19 @@ _If the integration is not in the list, you need to clear the browser cache._ ## Supported Models Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). -| | **Haier** | **Hoover** | **Candy** | -|---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------| -| **Washing Machine** | HW80-B14959TU1DE
HW90-B14TEAM5
HW100-B14959U1 | H-WASH 500
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80 | CO4 107T1/2-07
CBWO49TWME-S
RO44 1286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | -| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S | -| **Washer Dryer** | HWD100-B14979 | HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | -| **Oven** | HWO60SM2F3XH | HSOT3161WG | | -| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | -| **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1) | | CY-12TAIN | -| **Fridge** | HFW7720ENMB
HFW7819EWMP | | CCE4T620EWU | -| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | -| **Hood** | HADG6DS46BWIFI | | | -| **Wine Cellar** | HWS247FDU1 | | | -| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011 | | +| | **Haier** | **Hoover** | **Candy** | +|---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| +| **Washing Machine** | HW80-B14959TU1DE
HW80-B14959TU1IT
HW80-B14979TU1
HW90-B14TEAM5
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H-WASH 500
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80
HWE 49AMBS/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | +| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5
HD90-A2959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S
ROE H10A2TCE-07 | +| **Washer Dryer** | HWD100-B14979
HWD100-B14978 | HD 485AMBB/1-S
HD 495AMC/1-S
HD 4106AMC/1-80
HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | +| **Oven** | HWO60SM2F3XH | HSOT3161WG | | +| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | +| **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1) | | CY-12TAIN | +| **Fridge** | HFW7720ENMB
HFW7819EWMP | | CCE4T620EWU | +| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | +| **Hood** | HADG6DS46BWIFI | | | +| **Wine Cellar** | HWS247FDU1 | | | +| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011 | | | Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data).
This helps us to develop new features and not to break compatibility in newer versions. | diff --git a/info.md b/info.md index 8882b4c..469ba83 100644 --- a/info.md +++ b/info.md @@ -27,19 +27,20 @@ _If the integration is not in the list, you need to clear the browser cache._ ## Supported Models Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). -| | **Haier** | **Hoover** | **Candy** | -|---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------| -| **Washing Machine** | HW80-B14959TU1DE
HW90-B14TEAM5
HW100-B14959U1 | H-WASH 500
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80 | CO4 107T1/2-07
CBWO49TWME-S
RO44 1286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | -| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S | -| **Washer Dryer** | HWD100-B14979 | HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | -| **Oven** | HWO60SM2F3XH | HSOT3161WG | | -| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | -| **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1) | | CY-12TAIN | -| **Fridge** | HFW7720ENMB
HFW7819EWMP | | CCE4T620EWU | -| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | -| **Hood** | HADG6DS46BWIFI | | | -| **Wine Cellar** | HWS247FDU1 | | | -| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011 | | + +| | **Haier** | **Hoover** | **Candy** | +|---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| +| **Washing Machine** | HW80-B14959TU1DE
HW80-B14959TU1IT
HW80-B14979TU1
HW90-B14TEAM5
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H-WASH 500
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80
HWE 49AMBS/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | +| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5
HD90-A2959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S
ROE H10A2TCE-07 | +| **Washer Dryer** | HWD100-B14979
HWD100-B14978 | HD 485AMBB/1-S
HD 495AMC/1-S
HD 4106AMC/1-80
HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | +| **Oven** | HWO60SM2F3XH | HSOT3161WG | | +| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | +| **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1) | | CY-12TAIN | +| **Fridge** | HFW7720ENMB
HFW7819EWMP | | CCE4T620EWU | +| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | +| **Hood** | HADG6DS46BWIFI | | | +| **Wine Cellar** | HWS247FDU1 | | | +| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011 | | | Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data).
This helps us to develop new features and not to break compatibility in newer versions. | |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -- 2.39.5 From f02ec780a2b55f880b6096619425345905b9dff6 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Fri, 29 Sep 2023 17:21:07 +0200 Subject: [PATCH 174/205] Update translations --- custom_components/hon/translations/cs.json | 158 ++++++++++------ custom_components/hon/translations/de.json | 150 ++++++++++------ custom_components/hon/translations/el.json | 174 +++++++++++------- custom_components/hon/translations/en.json | 192 ++++++++++++-------- custom_components/hon/translations/es.json | 170 +++++++++++------- custom_components/hon/translations/fr.json | 170 +++++++++++------- custom_components/hon/translations/he.json | 54 +++--- custom_components/hon/translations/hr.json | 166 ++++++++++------- custom_components/hon/translations/it.json | 198 +++++++++++++-------- custom_components/hon/translations/nl.json | 170 +++++++++++------- custom_components/hon/translations/pl.json | 170 +++++++++++------- custom_components/hon/translations/pt.json | 170 +++++++++++------- custom_components/hon/translations/ro.json | 166 ++++++++++------- custom_components/hon/translations/ru.json | 170 +++++++++++------- custom_components/hon/translations/sk.json | 158 ++++++++++------ custom_components/hon/translations/sl.json | 150 ++++++++++------ custom_components/hon/translations/sr.json | 166 ++++++++++------- custom_components/hon/translations/tr.json | 150 ++++++++++------ custom_components/hon/translations/zh.json | 136 ++++++++------ 19 files changed, 1886 insertions(+), 1152 deletions(-) diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index 11201d0..e6777a0 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -99,22 +99,25 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Aut. Hygienický", "auto_plus": "AutoPlus", + "auto_plus_soil": "Znečištění Auto Plus", "auto_rapid": "Aut. Rychlý", + "auto_rapid_soil": "Znečištění Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Auto univerzální 50 -60°C", - "auto_universal_plus": "Auto univerzální plus 65 - 75°C", - "auto_universal_plus_soil": "Auto univerzální plus 65 - 75°C", + "auto_universal_plus": "Auto univerzální plus 65-75°C", + "auto_universal_plus_soil": "Auto univerzální plus 65-75°C", "auto_universal_soil": "Auto univerzální 50 -60°C", "auto_wash": "Automatické praní", "auto_wash_soil": "Automatické praní", "classe_a_59": "A třída 1 h 65°C", "delicate": "Jemný 45°C", "dishwasher_care": "Cyklus odstraňování vodního kamene", - "eco": "Eco", + "eco": "Eko 45 °C", "eco_asynch": "Eko 45 °C", "eco_bldc": "Eko 45 °C", "eco_synch": "Eko 45 °C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "Sklo", "glassware": "Sklo 45 °C", @@ -123,6 +126,7 @@ "hygiene_plus": "Hygienický+ 75 °C", "intensive": "Intenzivní", "intensive_rapid": "intenzivní rychlý", + "intensive_voice": "Intenzivní", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "Auto univerzální 50 -60°C", "iot_auto_wash_soil": "Automatické praní", @@ -164,6 +168,13 @@ "iot_super_wash": "Super mytí", "iot_turbopower": "TurboPower", "iot_universal": "Univerzální 60 °C", + "iot_voice_automatic": "Automatic", + "iot_voice_delicate": "Jemný 45°C", + "iot_voice_eco": "Eko 45 °C", + "iot_voice_intensive": "Intenzivní 75°C", + "iot_voice_prewash": "Předpírka", + "iot_voice_rapid_59": "Rychlý 59'", + "iot_voice_universal": "Univerzální 60 °C", "iot_wok_grids_maxi_pans": "Speciální pánve (Woky – mřížky a veliké pánve)", "iot_wok_grids_maxi_pans_soil": "Speciální pánve (Woky – mřížky a veliké pánve)", "iot_yes_quick_cycle": "Yes Quick", @@ -195,6 +206,7 @@ "ultra_silent": "Ultra tichý 55°C", "universal": "Univerzální 60 °C", "universal_plus": "Univerzální Plus 70 °C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "Program" @@ -328,14 +340,14 @@ "hqd_bulky": "Objemné kusy", "hqd_casual": "Casual", "hqd_cold_wind_30": "Chladný vánek 30 minut", - "hqd_cold_wind_timing": "Chladný vánek", + "hqd_cold_wind_timing": "Chladný vzduch", "hqd_cotton": "Bavlna", "hqd_curtain": "Záclony", "hqd_delicate": "Jemné", "hqd_diaper": "Pleny", - "hqd_duvet": "Přikrývky", - "hqd_feather": "Prošívané bundy", - "hqd_hot_wind_timing": "Horký vzduch", + "hqd_duvet": "Prošívaná bunda ze syntetických vláken", + "hqd_feather": "Prošívaná bunda z přírodních vláken", + "hqd_hot_wind_timing": "Dětská zavinovačka", "hqd_hygienic": "Dezinfekce", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -345,10 +357,10 @@ "hqd_mix": "Směsné", "hqd_night_dry": "Sušení přes noc", "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", + "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Rychlý 20", "hqd_quick_30": "Rychlý 30", - "hqd_quick_dry": "Rychlé sušení 30'", + "hqd_quick_dry": "30' automatické rychlé sušení", "hqd_quilt": "Deky", "hqd_refresh": "Osvěžení", "hqd_school_uniform": "Školní uniformy", @@ -385,6 +397,8 @@ "iot_dry_gym_fit": "Sportovní oblečení", "iot_dry_lingerie": "Spodní prádlo", "iot_dry_mixed": "Smíšené", + "iot_dry_pet_accessories": "Příslušenství pro domácí zvířata", + "iot_dry_pet_hair_removal": "Odstranění zvířecích chlupů (předeprání)", "iot_dry_playsuits": "Tepláky", "iot_dry_rapid_30": "Rapid 30", "iot_dry_rapid_59": "Rychlý 59'.", @@ -436,9 +450,9 @@ "state": { "20_degrees_coloured_cottons": "20° barevné a bavlněné látky", "20_degrees_new_energy_label": "20 °C", - "active_steam": "Pára", - "active_wash": "Aktivní praní", - "active_wash_steam": "Aktivní praní", + "active_steam": "Pára 29'", + "active_wash": "Aktivní praní 20'", + "active_wash_steam": "Aktivní praní 20' + pára", "allergy_care": "Antialergická péče", "allergy_care_pro": "Antialergická péče Pro", "all_in_one_49": "Vše v jednom 49'.", @@ -458,19 +472,19 @@ "cottons_steam": "Bavlna + Pára", "cotton_care_59": "Cotton Care 59'", "delicate_59": "Jemné 59'", - "delicate_silk": "Jemné hedvábí", + "delicate_silk": "Jemné hedvábí 59'", "delicate_silk_steam": "Jemné hedvábí + pára", "delicati_59": "Jemné 59'", "delicati_59_steam": "Jemné 59'", "drain_spin": "Odčerpání + odstředění", - "easy_iron": "Snadné žehlení", + "easy_iron": "Snadné žehlení 39'", "eco_40_60_new_energy_label": "Eco 40-60", "extra_care": "Extra Péče", "fitness": "Cvičení Péče", "fitness_care": "Cvičení Péče", - "fresh_care": "Svěží péče", + "fresh_care": "Svěží péče 59'", "fresh_care_steam": "Svěží péče + pára", - "handwash_wool": "Ruční praní a vlna", + "handwash_wool": "Ruční praní a vlna 48'", "high_dry": "Bavlna - suché", "hqd_20_degrees": "Bavlna 20 ℃", "hqd_allergy": "Antialergická péče", @@ -478,13 +492,13 @@ "hqd_babycare": "Péče o děti", "hqd_checkup": "Kontrola", "hqd_cottons": "Bavlna", - "hqd_delicate": "Jemné", + "hqd_delicate": "Jemné 50'", "hqd_delicate_cradle": "Jemné", "hqd_dry": "Bavlna - suché", "hqd_dry_synthetics": "Směsné - suché", "hqd_duvet": "Přikrývky", "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_handwash_wool": "Vlna", + "hqd_handwash_wool": "Vlna 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Smíšené", "hqd_quick_15": "Rychlý 15'", @@ -495,7 +509,7 @@ "hqd_shirts": "Košile", "hqd_smart": "Smart A.I.", "hqd_spin": "Odstřeďování", - "hqd_sport": "Sportovní", + "hqd_sport": "Sportovní 25'", "hqd_super_fast": "Rychlý 39’", "hqd_synthetic_and_coloured": "Syntetika", "hygiene_59": "Hygienicky Plus 59'", @@ -506,8 +520,8 @@ "hygiene_pro_steam": "Hygiene Pro + pára", "intensive_40": "Intenzivní 40°C", "intensive_40_steam": "Intenzivní 40°C + pára", - "iot_active_steam": "Pára", - "iot_active_wash_steam": "Aktivní praní", + "iot_active_steam": "Pára 29'", + "iot_active_wash_steam": "Aktivní praní 20' + pára", "iot_allergy_care_pro": "Antialergická péče Pro", "iot_all_in_one_59_steam": "Vše v jednom 59' + pára", "iot_checkup": "Kontrola", @@ -542,17 +556,18 @@ "iot_dry_technical_fabrics": "Technické tkaniny", "iot_dry_warm_embrace": "Hřejivé prádlo", "iot_dry_wool_dry": "Vlna - suché", - "iot_easy_iron": "Snadné žehlení", + "iot_easy_iron": "Snadné žehlení 39'", "iot_fresh_care_steam": "Svěží péče + pára", "iot_hygiene_pro_steam": "Hygiene Pro + pára", "iot_intensive_40_steam": "Intenzivní 40°C + pára", + "iot_jeans_60_steam": "Džíny + pára", "iot_mixed_steam": "Smíšené + Pára", "iot_mix_and_colour_59_steam": "Smíšené a barevné 59' + pára", "iot_perfect_cotton_59_steam": "Perfektni Bavlna 59'", "iot_rapid_a_class_60_steam": "Rychlá třída A 60 + pára", "iot_resistant_cotton_steam": "Bavlna + Pára", "iot_shirts_steam": "Košile + pára", - "iot_single_item_steam": "Jedna položka + pára", + "iot_single_item_steam": "Jedna položka 20' + pára", "iot_smart_wash": "Chytré praní", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Speciální 39' + pára", @@ -586,7 +601,7 @@ "iot_wash_coloured_bed_linen": "Barevné ložní prádlo", "iot_wash_coloured_bed_linen_steam": "Barevné ložní prádlo + pára", "iot_wash_coloured_curtains": "Barevné záclony", - "iot_wash_coloured_shirts": "Barevné košile", + "iot_wash_coloured_shirts": "Barevné košile 59'", "iot_wash_coloured_shirts_steam": "Barevné košile + pára", "iot_wash_coloured_steam": "Barevné + Pára", "iot_wash_coloured_tableclothes": "Barevné ubrusy", @@ -623,7 +638,7 @@ "iot_wash_down_jackets_zelig": "Prošívané bundy", "iot_wash_duvet": "Přikrývky", "iot_wash_fruit_stains": "Skvrny od ovoce", - "iot_wash_gym_fit": "Oděvy na cvičení", + "iot_wash_gym_fit": "Oděvy na cvičení 59'", "iot_wash_handwash": "Ruční praní", "iot_wash_handwash_colored": "Ruční praní - barevné", "iot_wash_handwash_dark": "Ruční praní - tmavé", @@ -686,6 +701,7 @@ "iot_wash_wool": "Vlna", "jeans": "Džíny", "jeans_60": "Džíny", + "jeans_60_steam": "Džíny + pára", "low_dry": "Směsné - suché", "mixed": "Smíšené", "mixed_and_colored_59": "Směsné a barevné 59'", @@ -709,7 +725,7 @@ "rinse": "Máchání", "shirts_steam": "Košile + pára", "silent_night": "Noční cyklus", - "single_item": "Jedna položka", + "single_item": "Jedna položka 20'", "single_item_steam": "Jedna položka + pára", "smart_wash": "Chytré praní", "soft_care": "Měkká péče", @@ -725,8 +741,8 @@ "steam_39": "Pára 39'", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro – bavlna", - "steam_care_pro_delicates": "Steam Care Pro – jemné", - "steam_care_pro_synthetic": "Steam Care Pro – syntetika", + "steam_care_pro_delicates": "Steam Care Pro – jemné 16'", + "steam_care_pro_synthetic": "Steam Care Pro – syntetika 20'", "steam_hygiene_plus": "Hygiena plus pára", "synthetics": "Syntetika", "synthetic_and_coloured": "Syntetika a barevné", @@ -738,7 +754,7 @@ "wool": "Vlna", "wool_and_delicates_49": "Vlna/Jemné 49'", "wool_dry": "Vlna - suché", - "wool_soft_care": "Vlna & Mĕkká Péče" + "wool_soft_care": "Vlna & Mĕkká Péče 48'" }, "name": "Program" }, @@ -748,19 +764,24 @@ "cheese": "Sýr", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Režim Eco", + "fruits": "Fruits", "fruits_and_veg": "Fruit&Veg", "fruit_and_veg": "Fruit & Veg", "holiday": "DOVOLENÁ", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Není vybrán žádný režim", "quick_cool": "QUICK COOL", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER CHLAZENÍ", "super_freeze": "SUPER MRAZENÍ", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Program" @@ -964,22 +985,25 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Aut. Hygienický", "auto_plus": "AutoPlus", + "auto_plus_soil": "Znečištění Auto Plus", "auto_rapid": "Aut. Rychlý", + "auto_rapid_soil": "Znečištění Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Auto univerzální 50 -60°C", - "auto_universal_plus": "Auto univerzální plus 65 - 75°C", - "auto_universal_plus_soil": "Auto univerzální plus 65 - 75°C", + "auto_universal_plus": "Auto univerzální plus 65-75°C", + "auto_universal_plus_soil": "Auto univerzální plus 65-75°C", "auto_universal_soil": "Auto univerzální 50 -60°C", "auto_wash": "Automatické praní", "auto_wash_soil": "Automatické praní", "classe_a_59": "A třída 1 h 65°C", "delicate": "Jemný 45°C", "dishwasher_care": "Cyklus odstraňování vodního kamene", - "eco": "Eco", + "eco": "Eko 45 °C", "eco_asynch": "Eko 45 °C", "eco_bldc": "Eko 45 °C", "eco_synch": "Eko 45 °C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "Sklo", "glassware": "Sklo 45 °C", @@ -988,6 +1012,7 @@ "hygiene_plus": "Hygienický+ 75 °C", "intensive": "Intenzivní", "intensive_rapid": "intenzivní rychlý", + "intensive_voice": "Intenzivní", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "Auto univerzální 50 -60°C", "iot_auto_wash_soil": "Automatické praní", @@ -1029,6 +1054,13 @@ "iot_super_wash": "Super mytí", "iot_turbopower": "TurboPower", "iot_universal": "Univerzální 60 °C", + "iot_voice_automatic": "Automatic", + "iot_voice_delicate": "Jemný 45°C", + "iot_voice_eco": "Eko 45 °C", + "iot_voice_intensive": "Intenzivní 75°C", + "iot_voice_prewash": "Předpírka", + "iot_voice_rapid_59": "Rychlý 59'", + "iot_voice_universal": "Univerzální 60 °C", "iot_wok_grids_maxi_pans": "Speciální pánve (Woky – mřížky a veliké pánve)", "iot_wok_grids_maxi_pans_soil": "Speciální pánve (Woky – mřížky a veliké pánve)", "iot_yes_quick_cycle": "Yes Quick", @@ -1060,6 +1092,7 @@ "ultra_silent": "Ultra tichý 55°C", "universal": "Univerzální 60 °C", "universal_plus": "Univerzální Plus 70 °C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "Program" @@ -1193,14 +1226,14 @@ "hqd_bulky": "Objemné kusy", "hqd_casual": "Casual", "hqd_cold_wind_30": "Chladný vánek 30 minut", - "hqd_cold_wind_timing": "Chladný vánek", + "hqd_cold_wind_timing": "Chladný vzduch", "hqd_cotton": "Bavlna", "hqd_curtain": "Záclony", "hqd_delicate": "Jemné", "hqd_diaper": "Pleny", - "hqd_duvet": "Přikrývky", - "hqd_feather": "Prošívané bundy", - "hqd_hot_wind_timing": "Horký vzduch", + "hqd_duvet": "Prošívaná bunda ze syntetických vláken", + "hqd_feather": "Prošívaná bunda z přírodních vláken", + "hqd_hot_wind_timing": "Dětská zavinovačka", "hqd_hygienic": "Dezinfekce", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -1210,10 +1243,10 @@ "hqd_mix": "Směsné", "hqd_night_dry": "Sušení přes noc", "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", + "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Rychlý 20", "hqd_quick_30": "Rychlý 30", - "hqd_quick_dry": "Rychlé sušení 30'", + "hqd_quick_dry": "30' automatické rychlé sušení", "hqd_quilt": "Deky", "hqd_refresh": "Osvěžení", "hqd_school_uniform": "Školní uniformy", @@ -1250,6 +1283,8 @@ "iot_dry_gym_fit": "Sportovní oblečení", "iot_dry_lingerie": "Spodní prádlo", "iot_dry_mixed": "Smíšené", + "iot_dry_pet_accessories": "Příslušenství pro domácí zvířata", + "iot_dry_pet_hair_removal": "Odstranění zvířecích chlupů (předeprání)", "iot_dry_playsuits": "Tepláky", "iot_dry_rapid_30": "Rapid 30", "iot_dry_rapid_59": "Rychlý 59'.", @@ -1301,9 +1336,9 @@ "state": { "20_degrees_coloured_cottons": "20° barevné a bavlněné látky", "20_degrees_new_energy_label": "20 °C", - "active_steam": "Pára", - "active_wash": "Aktivní praní", - "active_wash_steam": "Aktivní praní", + "active_steam": "Pára 29'", + "active_wash": "Aktivní praní 20'", + "active_wash_steam": "Aktivní praní 20' + pára", "allergy_care": "Antialergická péče", "allergy_care_pro": "Antialergická péče Pro", "all_in_one_49": "Vše v jednom 49'.", @@ -1323,19 +1358,19 @@ "cottons_steam": "Bavlna + Pára", "cotton_care_59": "Cotton Care 59'", "delicate_59": "Jemné 59'", - "delicate_silk": "Jemné hedvábí", + "delicate_silk": "Jemné hedvábí 59'", "delicate_silk_steam": "Jemné hedvábí + pára", "delicati_59": "Jemné 59'", "delicati_59_steam": "Jemné 59'", "drain_spin": "Odčerpání + odstředění", - "easy_iron": "Snadné žehlení", + "easy_iron": "Snadné žehlení 39'", "eco_40_60_new_energy_label": "Eco 40-60", "extra_care": "Extra Péče", "fitness": "Cvičení Péče", "fitness_care": "Cvičení Péče", - "fresh_care": "Svěží péče", + "fresh_care": "Svěží péče 59'", "fresh_care_steam": "Svěží péče + pára", - "handwash_wool": "Ruční praní a vlna", + "handwash_wool": "Ruční praní a vlna 48'", "high_dry": "Bavlna - suché", "hqd_20_degrees": "Bavlna 20 ℃", "hqd_allergy": "Antialergická péče", @@ -1343,13 +1378,13 @@ "hqd_babycare": "Péče o děti", "hqd_checkup": "Kontrola", "hqd_cottons": "Bavlna", - "hqd_delicate": "Jemné", + "hqd_delicate": "Jemné 50'", "hqd_delicate_cradle": "Jemné", "hqd_dry": "Bavlna - suché", "hqd_dry_synthetics": "Směsné - suché", "hqd_duvet": "Přikrývky", "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_handwash_wool": "Vlna", + "hqd_handwash_wool": "Vlna 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Smíšené", "hqd_quick_15": "Rychlý 15'", @@ -1360,7 +1395,7 @@ "hqd_shirts": "Košile", "hqd_smart": "Smart A.I.", "hqd_spin": "Odstřeďování", - "hqd_sport": "Sportovní", + "hqd_sport": "Sportovní 25'", "hqd_super_fast": "Rychlý 39’", "hqd_synthetic_and_coloured": "Syntetika", "hygiene_59": "Hygienicky Plus 59'", @@ -1371,8 +1406,8 @@ "hygiene_pro_steam": "Hygiene Pro + pára", "intensive_40": "Intenzivní 40°C", "intensive_40_steam": "Intenzivní 40°C + pára", - "iot_active_steam": "Pára", - "iot_active_wash_steam": "Aktivní praní", + "iot_active_steam": "Pára 29'", + "iot_active_wash_steam": "Aktivní praní 20' + pára", "iot_allergy_care_pro": "Antialergická péče Pro", "iot_all_in_one_59_steam": "Vše v jednom 59' + pára", "iot_checkup": "Kontrola", @@ -1407,17 +1442,18 @@ "iot_dry_technical_fabrics": "Technické tkaniny", "iot_dry_warm_embrace": "Hřejivé prádlo", "iot_dry_wool_dry": "Vlna - suché", - "iot_easy_iron": "Snadné žehlení", + "iot_easy_iron": "Snadné žehlení 39'", "iot_fresh_care_steam": "Svěží péče + pára", "iot_hygiene_pro_steam": "Hygiene Pro + pára", "iot_intensive_40_steam": "Intenzivní 40°C + pára", + "iot_jeans_60_steam": "Džíny + pára", "iot_mixed_steam": "Smíšené + Pára", "iot_mix_and_colour_59_steam": "Smíšené a barevné 59' + pára", "iot_perfect_cotton_59_steam": "Perfektni Bavlna 59'", "iot_rapid_a_class_60_steam": "Rychlá třída A 60 + pára", "iot_resistant_cotton_steam": "Bavlna + Pára", "iot_shirts_steam": "Košile + pára", - "iot_single_item_steam": "Jedna položka + pára", + "iot_single_item_steam": "Jedna položka 20' + pára", "iot_smart_wash": "Chytré praní", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Speciální 39' + pára", @@ -1451,7 +1487,7 @@ "iot_wash_coloured_bed_linen": "Barevné ložní prádlo", "iot_wash_coloured_bed_linen_steam": "Barevné ložní prádlo + pára", "iot_wash_coloured_curtains": "Barevné záclony", - "iot_wash_coloured_shirts": "Barevné košile", + "iot_wash_coloured_shirts": "Barevné košile 59'", "iot_wash_coloured_shirts_steam": "Barevné košile + pára", "iot_wash_coloured_steam": "Barevné + Pára", "iot_wash_coloured_tableclothes": "Barevné ubrusy", @@ -1488,7 +1524,7 @@ "iot_wash_down_jackets_zelig": "Prošívané bundy", "iot_wash_duvet": "Přikrývky", "iot_wash_fruit_stains": "Skvrny od ovoce", - "iot_wash_gym_fit": "Oděvy na cvičení", + "iot_wash_gym_fit": "Oděvy na cvičení 59'", "iot_wash_handwash": "Ruční praní", "iot_wash_handwash_colored": "Ruční praní - barevné", "iot_wash_handwash_dark": "Ruční praní - tmavé", @@ -1551,6 +1587,7 @@ "iot_wash_wool": "Vlna", "jeans": "Džíny", "jeans_60": "Džíny", + "jeans_60_steam": "Džíny + pára", "low_dry": "Směsné - suché", "mixed": "Smíšené", "mixed_and_colored_59": "Směsné a barevné 59'", @@ -1574,7 +1611,7 @@ "rinse": "Máchání", "shirts_steam": "Košile + pára", "silent_night": "Noční cyklus", - "single_item": "Jedna položka", + "single_item": "Jedna položka 20'", "single_item_steam": "Jedna položka + pára", "smart_wash": "Chytré praní", "soft_care": "Měkká péče", @@ -1590,8 +1627,8 @@ "steam_39": "Pára 39'", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro – bavlna", - "steam_care_pro_delicates": "Steam Care Pro – jemné", - "steam_care_pro_synthetic": "Steam Care Pro – syntetika", + "steam_care_pro_delicates": "Steam Care Pro – jemné 16'", + "steam_care_pro_synthetic": "Steam Care Pro – syntetika 20'", "steam_hygiene_plus": "Hygiena plus pára", "synthetics": "Syntetika", "synthetic_and_coloured": "Syntetika a barevné", @@ -1603,7 +1640,7 @@ "wool": "Vlna", "wool_and_delicates_49": "Vlna/Jemné 49'", "wool_dry": "Vlna - suché", - "wool_soft_care": "Vlna & Mĕkká Péče" + "wool_soft_care": "Vlna & Mĕkká Péče 48'" }, "name": "Program" }, @@ -1613,19 +1650,24 @@ "cheese": "Sýr", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Režim Eco", + "fruits": "Fruits", "fruits_and_veg": "Fruit&Veg", "fruit_and_veg": "Fruit & Veg", "holiday": "DOVOLENÁ", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Není vybrán žádný režim", "quick_cool": "QUICK COOL", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER CHLAZENÍ", "super_freeze": "SUPER MRAZENÍ", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Program" diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index cb60c15..9c610f5 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -33,7 +33,7 @@ "tumbling": "Auffrischen", "refresh": "Auffrischen", "heating": "Heizung", - "washing": "Waschen" + "washing": "Spülen" }, "name": "Phase" }, @@ -52,7 +52,7 @@ "state": { "ready": "Bereit", "prewash": "Vorwaschen", - "washing": "Waschen", + "washing": "Spülen", "rinse": "Spülen", "drying": "Trocknen", "hot_rinse": "Hot rinse" @@ -99,7 +99,9 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Auto Hygiene", "auto_plus": "AutoPlus", + "auto_plus_soil": "Auto Plus Verschmutzung", "auto_rapid": "Auto Rapid", + "auto_rapid_soil": "Auto Rapid Verschmutzung", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "AutoUniversal 50-60°C", @@ -111,10 +113,11 @@ "classe_a_59": "A Class 59' 65°C", "delicate": "Delicate 45°C", "dishwasher_care": "Entkalkungsprogramm", - "eco": "Eco", + "eco": "Eco 45°C", "eco_asynch": "Eco 45°C", "eco_bldc": "Eco 45°C", "eco_synch": "Eco 45°C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "Glas", "glassware": "Gläser 45 °C", @@ -123,6 +126,7 @@ "hygiene_plus": "Hygiene 75 °C", "intensive": "Intensiv", "intensive_rapid": "Intensiv-Schnellspülgang", + "intensive_voice": "Intensiv", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "AutoUniversal 50-60°C", "iot_auto_wash_soil": "Auto Wash", @@ -164,6 +168,13 @@ "iot_super_wash": "Super Wash", "iot_turbopower": "TurboPower", "iot_universal": "Universal 60°C", + "iot_voice_automatic": "Automatic", + "iot_voice_delicate": "Delicate 45°C", + "iot_voice_eco": "Eco 45°C", + "iot_voice_intensive": "Intensiv 75°C", + "iot_voice_prewash": "Vorspülen", + "iot_voice_rapid_59": "Rapid 59'", + "iot_voice_universal": "Universal 60°C", "iot_wok_grids_maxi_pans": "Pfannen Spezial (Wok - Grillpfannen & Maxi-Pfannen)", "iot_wok_grids_maxi_pans_soil": "Pfannen Spezial (Wok - Grillpfannen & Maxi-Pfannen)", "iot_yes_quick_cycle": "Yes Quick", @@ -195,6 +206,7 @@ "ultra_silent": "Nacht 55°C", "universal": "Universal 60°C", "universal_plus": "Universal Plus 70 °C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "Programm" @@ -328,14 +340,14 @@ "hqd_bulky": "Schwere Textilien", "hqd_casual": "Casual", "hqd_cold_wind_30": "Kühle Brise 30 Minuten", - "hqd_cold_wind_timing": "Kühle Brise", + "hqd_cold_wind_timing": "Kalte Luft", "hqd_cotton": "Baumwolle", "hqd_curtain": "Vorhänge", "hqd_delicate": "Feinwäsche", "hqd_diaper": "Windeln", - "hqd_duvet": "Bettdecke", - "hqd_feather": "Daunenjacken", - "hqd_hot_wind_timing": "Heiße Luft", + "hqd_duvet": "Steppjacke aus synthetischer Faser", + "hqd_feather": "Steppjacke aus Naturfaser", + "hqd_hot_wind_timing": "Superschon", "hqd_hygienic": "Desinfektion", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -348,7 +360,7 @@ "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Schnell 20", "hqd_quick_30": "Schnell 30", - "hqd_quick_dry": "Schnell trocken 30'", + "hqd_quick_dry": "30 Min. automatische schnelle Trocknung", "hqd_quilt": "Steppdecken", "hqd_refresh": "Auffrischen", "hqd_school_uniform": "Schuluniform", @@ -385,6 +397,8 @@ "iot_dry_gym_fit": "Gymnastik & Fitness – Sportkleidung", "iot_dry_lingerie": "Unterwäsche", "iot_dry_mixed": "Gemischt", + "iot_dry_pet_accessories": "Zubehör für Haustiere", + "iot_dry_pet_hair_removal": "Entfernung von Tierhaaren (Vorwaschen)", "iot_dry_playsuits": "Jumpsuits", "iot_dry_rapid_30": "Rapid 30", "iot_dry_rapid_59": "Rapid 59'.", @@ -436,9 +450,9 @@ "state": { "20_degrees_coloured_cottons": "20° Buntes und Baumwolle", "20_degrees_new_energy_label": "20°C", - "active_steam": "Dampf", - "active_wash": "Active Wash", - "active_wash_steam": "Active Wash", + "active_steam": "Dampf 29'", + "active_wash": "Active Wash 20'", + "active_wash_steam": "Active Wash 20' + Dampf", "allergy_care": "Allergy Care", "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "All in One 49'", @@ -458,19 +472,19 @@ "cottons_steam": "Baumwolle + Dampf", "cotton_care_59": "Cotton Care 59 Min", "delicate_59": "Feines 59'", - "delicate_silk": "Empfindliche Seide", + "delicate_silk": "Empfindliche Seide 59'", "delicate_silk_steam": "Empfindliche Seide + Dampf", "delicati_59": "Feines 59'", "delicati_59_steam": "Feines 59'", "drain_spin": "Abpumpen und Schleudern", - "easy_iron": "Bügeltrocken", + "easy_iron": "Bügeltrocken 39'", "eco_40_60_new_energy_label": "ECO 40-60", "extra_care": "Extra Care", "fitness": "Fitness Care", "fitness_care": "Fitness Care", - "fresh_care": "Fresh Care", + "fresh_care": "Fresh Care 59'", "fresh_care_steam": "Fresh Care + Dampf", - "handwash_wool": "Handwäsche und Wolle", + "handwash_wool": "Handwäsche und Wolle 48'", "high_dry": "Baumwolle trocken", "hqd_20_degrees": "Baumwolle 20℃", "hqd_allergy": "Allergy Care", @@ -478,13 +492,13 @@ "hqd_babycare": "Baby Care", "hqd_checkup": "Check-up", "hqd_cottons": "Baumwolle", - "hqd_delicate": "Feinwäsche", + "hqd_delicate": "Feinwäsche 50'", "hqd_delicate_cradle": "Feinwäsche", "hqd_dry": "Baumwolle trocken", "hqd_dry_synthetics": "Trocknen gemischt", "hqd_duvet": "Oberbetten", "hqd_eco_40_60_degrees": "ECO 40-60", - "hqd_handwash_wool": "Wolle", + "hqd_handwash_wool": "Wolle 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Gemischt", "hqd_quick_15": "Rapid 15'", @@ -495,7 +509,7 @@ "hqd_shirts": "Hemden", "hqd_smart": "Smart A.I.", "hqd_spin": "Schleudern", - "hqd_sport": "Sport", + "hqd_sport": "Sport 25'", "hqd_super_fast": "Rapid 39’", "hqd_synthetic_and_coloured": "Synthetik", "hygiene_59": "Hygiene Plus 59'", @@ -506,8 +520,8 @@ "hygiene_pro_steam": "Hygiene Pro + Dampf", "intensive_40": "Intensiv 40°C", "intensive_40_steam": "Intensiv 40°C + Dampf", - "iot_active_steam": "Dampf", - "iot_active_wash_steam": "Active Wash", + "iot_active_steam": "Dampf 29'", + "iot_active_wash_steam": "Active Wash 20' + Dampf", "iot_allergy_care_pro": "Allergy Care Pro", "iot_all_in_one_59_steam": "All in One 59' + Dampf", "iot_checkup": "Check-up", @@ -542,17 +556,18 @@ "iot_dry_technical_fabrics": "Technische Textilien", "iot_dry_warm_embrace": "Warm trocknen", "iot_dry_wool_dry": "Wolle trocknen", - "iot_easy_iron": "Bügeltrocken", + "iot_easy_iron": "Bügeltrocken 39'", "iot_fresh_care_steam": "Fresh Care + Dampf", "iot_hygiene_pro_steam": "Hygiene Pro + Dampf", "iot_intensive_40_steam": "Intensiv 40°C + Dampf", + "iot_jeans_60_steam": "Jeans + Dampf", "iot_mixed_steam": "Gemischt + Dampf", "iot_mix_and_colour_59_steam": "Misch- und Buntwäsche 59' + Dampf", "iot_perfect_cotton_59_steam": "Baumwolle Perfekt 59'", "iot_rapid_a_class_60_steam": "Rapid Klasse A 60 + Dampf", "iot_resistant_cotton_steam": "Baumwolle + Dampf", "iot_shirts_steam": "Hemden + Dampf", - "iot_single_item_steam": "Einzelner Gegenstand + Dampf", + "iot_single_item_steam": "Einzelner Gegenstand 20' + Dampf", "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Special 39' + Dampf", @@ -586,7 +601,7 @@ "iot_wash_coloured_bed_linen": "Bunte Bettwäsche", "iot_wash_coloured_bed_linen_steam": "Bunte Bettwäsche + Dampf", "iot_wash_coloured_curtains": "Bunte Vorhänge", - "iot_wash_coloured_shirts": "Farbige Hemden", + "iot_wash_coloured_shirts": "Farbige Hemden 59'", "iot_wash_coloured_shirts_steam": "Farbige Hemden + Dampf", "iot_wash_coloured_steam": "Buntes + Dampf", "iot_wash_coloured_tableclothes": "Farbige Tischtücher", @@ -623,7 +638,7 @@ "iot_wash_down_jackets_zelig": "Daunenjacken", "iot_wash_duvet": "Oberbetten", "iot_wash_fruit_stains": "Obstflecken", - "iot_wash_gym_fit": "Fitness-Studio - Fitness-Kleidung", + "iot_wash_gym_fit": "Fitness-Studio - Fitness-Kleidung 59'", "iot_wash_handwash": "Handwäsche", "iot_wash_handwash_colored": "Bunte Handwäsche", "iot_wash_handwash_dark": "Dunkle Handwäsche", @@ -686,6 +701,7 @@ "iot_wash_wool": "Wolle", "jeans": "Jeans", "jeans_60": "Jeans", + "jeans_60_steam": "Jeans + Dampf", "low_dry": "Trocknen gemischt", "mixed": "Gemischt", "mixed_and_colored_59": "Gemischt und Farben 59'", @@ -709,7 +725,7 @@ "rinse": "Spülen", "shirts_steam": "Hemden + Dampf", "silent_night": "Zyklus über Nacht", - "single_item": "Einzelner Gegenstand", + "single_item": "Einzelner Gegenstand 20'", "single_item_steam": "Einzelner Gegenstand + Dampf", "smart_wash": "Smart Wash", "soft_care": "Sanfte Pflege", @@ -725,8 +741,8 @@ "steam_39": "Dampf 39'", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - Baumwolle", - "steam_care_pro_delicates": "Steam Care Pro - Feinwäsche", - "steam_care_pro_synthetic": "Steam Care Pro - Synthetik", + "steam_care_pro_delicates": "Steam Care Pro - Feinwäsche 16'", + "steam_care_pro_synthetic": "Steam Care Pro - Synthetik 20'", "steam_hygiene_plus": "Hygiene Plus Dampf", "synthetics": "Synthetik", "synthetic_and_coloured": "Synthetik und Farben", @@ -738,7 +754,7 @@ "wool": "Wolle", "wool_and_delicates_49": "Wolle/Feinwäsche 49'", "wool_dry": "Wolle trocknen", - "wool_soft_care": "Wolle & Soft Care" + "wool_soft_care": "Wolle & Soft Care 48'" }, "name": "Programm" }, @@ -748,19 +764,24 @@ "cheese": "Käse", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Eco-Modus", + "fruits": "Fruits", "fruits_and_veg": "Obst und Genüse", "fruit_and_veg": "Fruit & Veg", "holiday": "URLAUBSFUNKTION", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Kein Modus ausgewählt", "quick_cool": "SCHNELLKÜHLUNG", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Programm" @@ -964,7 +985,9 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Auto Hygiene", "auto_plus": "AutoPlus", + "auto_plus_soil": "Auto Plus Verschmutzung", "auto_rapid": "Auto Rapid", + "auto_rapid_soil": "Auto Rapid Verschmutzung", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "AutoUniversal 50-60°C", @@ -976,10 +999,11 @@ "classe_a_59": "A Class 59' 65°C", "delicate": "Delicate 45°C", "dishwasher_care": "Entkalkungsprogramm", - "eco": "Eco", + "eco": "Eco 45°C", "eco_asynch": "Eco 45°C", "eco_bldc": "Eco 45°C", "eco_synch": "Eco 45°C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "Glas", "glassware": "Gläser 45 °C", @@ -988,6 +1012,7 @@ "hygiene_plus": "Hygiene 75 °C", "intensive": "Intensiv", "intensive_rapid": "Intensiv-Schnellspülgang", + "intensive_voice": "Intensiv", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "AutoUniversal 50-60°C", "iot_auto_wash_soil": "Auto Wash", @@ -1029,6 +1054,13 @@ "iot_super_wash": "Super Wash", "iot_turbopower": "TurboPower", "iot_universal": "Universal 60°C", + "iot_voice_automatic": "Automatic", + "iot_voice_delicate": "Delicate 45°C", + "iot_voice_eco": "Eco 45°C", + "iot_voice_intensive": "Intensiv 75°C", + "iot_voice_prewash": "Vorspülen", + "iot_voice_rapid_59": "Rapid 59'", + "iot_voice_universal": "Universal 60°C", "iot_wok_grids_maxi_pans": "Pfannen Spezial (Wok - Grillpfannen & Maxi-Pfannen)", "iot_wok_grids_maxi_pans_soil": "Pfannen Spezial (Wok - Grillpfannen & Maxi-Pfannen)", "iot_yes_quick_cycle": "Yes Quick", @@ -1060,6 +1092,7 @@ "ultra_silent": "Nacht 55°C", "universal": "Universal 60°C", "universal_plus": "Universal Plus 70 °C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "Programm" @@ -1193,14 +1226,14 @@ "hqd_bulky": "Schwere Textilien", "hqd_casual": "Casual", "hqd_cold_wind_30": "Kühle Brise 30 Minuten", - "hqd_cold_wind_timing": "Kühle Brise", + "hqd_cold_wind_timing": "Kalte Luft", "hqd_cotton": "Baumwolle", "hqd_curtain": "Vorhänge", "hqd_delicate": "Feinwäsche", "hqd_diaper": "Windeln", - "hqd_duvet": "Bettdecke", - "hqd_feather": "Daunenjacken", - "hqd_hot_wind_timing": "Heiße Luft", + "hqd_duvet": "Steppjacke aus synthetischer Faser", + "hqd_feather": "Steppjacke aus Naturfaser", + "hqd_hot_wind_timing": "Superschon", "hqd_hygienic": "Desinfektion", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -1213,7 +1246,7 @@ "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Schnell 20", "hqd_quick_30": "Schnell 30", - "hqd_quick_dry": "Schnell trocken 30'", + "hqd_quick_dry": "30 Min. automatische schnelle Trocknung", "hqd_quilt": "Steppdecken", "hqd_refresh": "Auffrischen", "hqd_school_uniform": "Schuluniform", @@ -1250,6 +1283,8 @@ "iot_dry_gym_fit": "Gymnastik & Fitness – Sportkleidung", "iot_dry_lingerie": "Unterwäsche", "iot_dry_mixed": "Gemischt", + "iot_dry_pet_accessories": "Zubehör für Haustiere", + "iot_dry_pet_hair_removal": "Entfernung von Tierhaaren (Vorwaschen)", "iot_dry_playsuits": "Jumpsuits", "iot_dry_rapid_30": "Rapid 30", "iot_dry_rapid_59": "Rapid 59'.", @@ -1301,9 +1336,9 @@ "state": { "20_degrees_coloured_cottons": "20° Buntes und Baumwolle", "20_degrees_new_energy_label": "20°C", - "active_steam": "Dampf", - "active_wash": "Active Wash", - "active_wash_steam": "Active Wash", + "active_steam": "Dampf 29'", + "active_wash": "Active Wash 20'", + "active_wash_steam": "Active Wash 20' + Dampf", "allergy_care": "Allergy Care", "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "All in One 49'", @@ -1323,19 +1358,19 @@ "cottons_steam": "Baumwolle + Dampf", "cotton_care_59": "Cotton Care 59 Min", "delicate_59": "Feines 59'", - "delicate_silk": "Empfindliche Seide", + "delicate_silk": "Empfindliche Seide 59'", "delicate_silk_steam": "Empfindliche Seide + Dampf", "delicati_59": "Feines 59'", "delicati_59_steam": "Feines 59'", "drain_spin": "Abpumpen und Schleudern", - "easy_iron": "Bügeltrocken", + "easy_iron": "Bügeltrocken 39'", "eco_40_60_new_energy_label": "ECO 40-60", "extra_care": "Extra Care", "fitness": "Fitness Care", "fitness_care": "Fitness Care", - "fresh_care": "Fresh Care", + "fresh_care": "Fresh Care 59'", "fresh_care_steam": "Fresh Care + Dampf", - "handwash_wool": "Handwäsche und Wolle", + "handwash_wool": "Handwäsche und Wolle 48'", "high_dry": "Baumwolle trocken", "hqd_20_degrees": "Baumwolle 20℃", "hqd_allergy": "Allergy Care", @@ -1343,13 +1378,13 @@ "hqd_babycare": "Baby Care", "hqd_checkup": "Check-up", "hqd_cottons": "Baumwolle", - "hqd_delicate": "Feinwäsche", + "hqd_delicate": "Feinwäsche 50'", "hqd_delicate_cradle": "Feinwäsche", "hqd_dry": "Baumwolle trocken", "hqd_dry_synthetics": "Trocknen gemischt", "hqd_duvet": "Oberbetten", "hqd_eco_40_60_degrees": "ECO 40-60", - "hqd_handwash_wool": "Wolle", + "hqd_handwash_wool": "Wolle 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Gemischt", "hqd_quick_15": "Rapid 15'", @@ -1360,7 +1395,7 @@ "hqd_shirts": "Hemden", "hqd_smart": "Smart A.I.", "hqd_spin": "Schleudern", - "hqd_sport": "Sport", + "hqd_sport": "Sport 25'", "hqd_super_fast": "Rapid 39’", "hqd_synthetic_and_coloured": "Synthetik", "hygiene_59": "Hygiene Plus 59'", @@ -1371,8 +1406,8 @@ "hygiene_pro_steam": "Hygiene Pro + Dampf", "intensive_40": "Intensiv 40°C", "intensive_40_steam": "Intensiv 40°C + Dampf", - "iot_active_steam": "Dampf", - "iot_active_wash_steam": "Active Wash", + "iot_active_steam": "Dampf 29'", + "iot_active_wash_steam": "Active Wash 20' + Dampf", "iot_allergy_care_pro": "Allergy Care Pro", "iot_all_in_one_59_steam": "All in One 59' + Dampf", "iot_checkup": "Check-up", @@ -1407,17 +1442,18 @@ "iot_dry_technical_fabrics": "Technische Textilien", "iot_dry_warm_embrace": "Warm trocknen", "iot_dry_wool_dry": "Wolle trocknen", - "iot_easy_iron": "Bügeltrocken", + "iot_easy_iron": "Bügeltrocken 39'", "iot_fresh_care_steam": "Fresh Care + Dampf", "iot_hygiene_pro_steam": "Hygiene Pro + Dampf", "iot_intensive_40_steam": "Intensiv 40°C + Dampf", + "iot_jeans_60_steam": "Jeans + Dampf", "iot_mixed_steam": "Gemischt + Dampf", "iot_mix_and_colour_59_steam": "Misch- und Buntwäsche 59' + Dampf", "iot_perfect_cotton_59_steam": "Baumwolle Perfekt 59'", "iot_rapid_a_class_60_steam": "Rapid Klasse A 60 + Dampf", "iot_resistant_cotton_steam": "Baumwolle + Dampf", "iot_shirts_steam": "Hemden + Dampf", - "iot_single_item_steam": "Einzelner Gegenstand + Dampf", + "iot_single_item_steam": "Einzelner Gegenstand 20' + Dampf", "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Special 39' + Dampf", @@ -1451,7 +1487,7 @@ "iot_wash_coloured_bed_linen": "Bunte Bettwäsche", "iot_wash_coloured_bed_linen_steam": "Bunte Bettwäsche + Dampf", "iot_wash_coloured_curtains": "Bunte Vorhänge", - "iot_wash_coloured_shirts": "Farbige Hemden", + "iot_wash_coloured_shirts": "Farbige Hemden 59'", "iot_wash_coloured_shirts_steam": "Farbige Hemden + Dampf", "iot_wash_coloured_steam": "Buntes + Dampf", "iot_wash_coloured_tableclothes": "Farbige Tischtücher", @@ -1488,7 +1524,7 @@ "iot_wash_down_jackets_zelig": "Daunenjacken", "iot_wash_duvet": "Oberbetten", "iot_wash_fruit_stains": "Obstflecken", - "iot_wash_gym_fit": "Fitness-Studio - Fitness-Kleidung", + "iot_wash_gym_fit": "Fitness-Studio - Fitness-Kleidung 59'", "iot_wash_handwash": "Handwäsche", "iot_wash_handwash_colored": "Bunte Handwäsche", "iot_wash_handwash_dark": "Dunkle Handwäsche", @@ -1551,6 +1587,7 @@ "iot_wash_wool": "Wolle", "jeans": "Jeans", "jeans_60": "Jeans", + "jeans_60_steam": "Jeans + Dampf", "low_dry": "Trocknen gemischt", "mixed": "Gemischt", "mixed_and_colored_59": "Gemischt und Farben 59'", @@ -1574,7 +1611,7 @@ "rinse": "Spülen", "shirts_steam": "Hemden + Dampf", "silent_night": "Zyklus über Nacht", - "single_item": "Einzelner Gegenstand", + "single_item": "Einzelner Gegenstand 20'", "single_item_steam": "Einzelner Gegenstand + Dampf", "smart_wash": "Smart Wash", "soft_care": "Sanfte Pflege", @@ -1590,8 +1627,8 @@ "steam_39": "Dampf 39'", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - Baumwolle", - "steam_care_pro_delicates": "Steam Care Pro - Feinwäsche", - "steam_care_pro_synthetic": "Steam Care Pro - Synthetik", + "steam_care_pro_delicates": "Steam Care Pro - Feinwäsche 16'", + "steam_care_pro_synthetic": "Steam Care Pro - Synthetik 20'", "steam_hygiene_plus": "Hygiene Plus Dampf", "synthetics": "Synthetik", "synthetic_and_coloured": "Synthetik und Farben", @@ -1603,7 +1640,7 @@ "wool": "Wolle", "wool_and_delicates_49": "Wolle/Feinwäsche 49'", "wool_dry": "Wolle trocknen", - "wool_soft_care": "Wolle & Soft Care" + "wool_soft_care": "Wolle & Soft Care 48'" }, "name": "Programm" }, @@ -1613,19 +1650,24 @@ "cheese": "Käse", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Eco-Modus", + "fruits": "Fruits", "fruits_and_veg": "Obst und Genüse", "fruit_and_veg": "Fruit & Veg", "holiday": "URLAUBSFUNKTION", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Kein Modus ausgewählt", "quick_cool": "SCHNELLKÜHLUNG", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Programm" diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index aeefbec..4061281 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -99,22 +99,25 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Αυτοματη Υγιεινη", "auto_plus": "AutoPlus", + "auto_plus_soil": "Λερωμένα Auto Plus", "auto_rapid": "Αυτοματο Γρηγορο", + "auto_rapid_soil": "Λερωμένα Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "αυτοματο Universal 50 - 60°C", - "auto_universal_plus": "αυτόματο Universal Plus 65 - 75°C", - "auto_universal_plus_soil": "αυτόματο Universal Plus 65 - 75°C", - "auto_universal_soil": "αυτοματο Universal 50 - 60°C", + "auto_universal": "αυτοματο Universal 50-60°C", + "auto_universal_plus": "αυτόματο Universal Plus 65-75°C", + "auto_universal_plus_soil": "αυτόματο Universal Plus 65-75°C", + "auto_universal_soil": "αυτοματο Universal 50-60°C", "auto_wash": "Αυτόματη πλύση", "auto_wash_soil": "Αυτόματη πλύση", "classe_a_59": "Α Class 59' 65°C", "delicate": "ευαισθητα 45°C", "dishwasher_care": "Κύκλος καθαρισμού κλίμακας στρώματος αλάτων", - "eco": "Οικολογικό", + "eco": "ECO 45°C", "eco_asynch": "ECO 45°C", "eco_bldc": "ECO 45°C", "eco_synch": "ECO 45°C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "Ποτήρι", "glassware": "γυαλικα 45°C", @@ -123,8 +126,9 @@ "hygiene_plus": "Hygiene+ 75°C", "intensive": "Εντατικό", "intensive_rapid": "δυνατο γρηγορο", + "intensive_voice": "Εντατικό", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "αυτοματο Universal 50 - 60°C", + "iot_auto_universal_soil": "αυτοματο Universal 50-60°C", "iot_auto_wash_soil": "Αυτόματη πλύση", "iot_baby_care": "Φροντίδα Μωρού", "iot_breakfast": "Πρωινό", @@ -164,6 +168,13 @@ "iot_super_wash": "Εξαιρετική Πλύση", "iot_turbopower": "Μεγάλη Ισχύς", "iot_universal": "γενικο 60°C", + "iot_voice_automatic": "Automatic", + "iot_voice_delicate": "ευαισθητα 45°C", + "iot_voice_eco": "ECO 45°C", + "iot_voice_intensive": "Εντατικό 75°C", + "iot_voice_prewash": "προπλυση", + "iot_voice_rapid_59": "Γρηγορο 59'", + "iot_voice_universal": "γενικο 60°C", "iot_wok_grids_maxi_pans": "Ειδικά Τηγάνια (Γουόκ - Σχάρες και Μεγάλα Τηγάνια)", "iot_wok_grids_maxi_pans_soil": "Ειδικά Τηγάνια (Γουόκ - Σχάρες και Μεγάλα Τηγάνια)", "iot_yes_quick_cycle": "Yes Quick", @@ -189,12 +200,13 @@ "special": "σπεσιαλ", "special_pw_prz": "σπεσιαλ", "steam": "ατμος 75°C", - "steam_plus": "Επιπλέον ατμός 75° C", + "steam_plus": "Επιπλέον ατμός 75°C", "total_care": "Total Care 50°C", "ultra_silence": "Ultra Silent 55°C", "ultra_silent": "Ultra Silent 55°C", "universal": "γενικο 60°C", "universal_plus": "γενικο Plus 70°C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "Πρόγραμμα" @@ -328,14 +340,14 @@ "hqd_bulky": "Ογκώδη αντικείμενα", "hqd_casual": "Καθημερινά ρούχα", "hqd_cold_wind_30": "Δροσερό αεράκι 30 λεπτά", - "hqd_cold_wind_timing": "Δροσερό αεράκι", + "hqd_cold_wind_timing": "Ψυχρός Αέρας", "hqd_cotton": "Βαμβακερό", "hqd_curtain": "Κουρτίνες", "hqd_delicate": "Ευαίσθητα", "hqd_diaper": "Πάνες", - "hqd_duvet": "Πάπλωμα", - "hqd_feather": "Φουσκωτά μπουφάν", - "hqd_hot_wind_timing": "Ζεστός αέρας", + "hqd_duvet": "Καπιτονέ τζάκετ (μπουφάν) από συνθετικές ίνες", + "hqd_feather": "Καπιτονέ τζάκετ (μπουφάν) από φυσικές ίνες", + "hqd_hot_wind_timing": "Ζεστή Αγκαλιά", "hqd_hygienic": "Υγιεινή", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -345,10 +357,10 @@ "hqd_mix": "Μικτά", "hqd_night_dry": "Ολονύκτιο στέγνωμα", "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", + "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Γρήγορα 20", "hqd_quick_30": "Γρήγορα 30", - "hqd_quick_dry": "Γρήγορο στέγνωμα 30'", + "hqd_quick_dry": "30' αυτόματο γρήγορο στέγνωμα", "hqd_quilt": "Παπλώματα", "hqd_refresh": "Φρεσκάρισμα", "hqd_school_uniform": "Σχολική στολή", @@ -385,6 +397,8 @@ "iot_dry_gym_fit": "Γυμναστήριο", "iot_dry_lingerie": "Εσώρουχα", "iot_dry_mixed": "Μικτά", + "iot_dry_pet_accessories": "Αξεσουάρ κατοικίδιων", + "iot_dry_pet_hair_removal": "Αφαίρεση τριχών κατοικίδιων ζώων (πριν από το πλύσιμο)", "iot_dry_playsuits": "Στολές", "iot_dry_rapid_30": "Rapid 30", "iot_dry_rapid_59": "Γρήγορο 59'.", @@ -436,9 +450,9 @@ "state": { "20_degrees_coloured_cottons": "20° Χρωματιστά και Βαμβακερά", "20_degrees_new_energy_label": "20°C", - "active_steam": "Ατμός", - "active_wash": "Ενεργό πλύσιμο", - "active_wash_steam": "Ενεργό πλύσιμο", + "active_steam": "Ατμός 29'", + "active_wash": "Ενεργό πλύσιμο 20'", + "active_wash_steam": "Ενεργό πλύσιμο 20' + Ατμός", "allergy_care": "Φροντίδα αλλεργίας", "allergy_care_pro": "Allergy Care Επαγγελματικό", "all_in_one_49": "Όλα σε Ένα 49'.", @@ -458,19 +472,19 @@ "cottons_steam": "Βαμβακερό + Ατμός", "cotton_care_59": "βαμβακερα 59 λεπτα", "delicate_59": "Ευαίσθητα 59'", - "delicate_silk": "Ευαίσθητα μεταξωτά", + "delicate_silk": "Ευαίσθητα μεταξωτά 59'", "delicate_silk_steam": "Ευαίσθητα μεταξωτά + ατμός", "delicati_59": "Ευαίσθητα 59'", "delicati_59_steam": "Ευαίσθητα 59'", "drain_spin": "Στραγγίστε + και περιστρέψτε", - "easy_iron": "ευκολο σιδερωμα", + "easy_iron": "ευκολο σιδερωμα 39'", "eco_40_60_new_energy_label": "Eco (οικολογικό) 40-60", "extra_care": "EXTRA CARE", "fitness": "FITNESS CARE", "fitness_care": "FITNESS CARE", - "fresh_care": "Φρέσκια φροντίδα", + "fresh_care": "Φρέσκια φροντίδα 59'", "fresh_care_steam": "Φροντίδα φρεσκάδας + Ατμός", - "handwash_wool": "Πλύσιμο στο χέρι και μαλλί", + "handwash_wool": "Πλύσιμο στο χέρι και μαλλί 48'", "high_dry": "Στέγνωμα βαμβακερών", "hqd_20_degrees": "Βαμβακερό 20℃", "hqd_allergy": "Φροντίδα αλλεργίας", @@ -478,13 +492,13 @@ "hqd_babycare": "Φροντίδα Μωρού", "hqd_checkup": "Έλεγχος", "hqd_cottons": "Βαμβακερό", - "hqd_delicate": "Ευαίσθητα", + "hqd_delicate": "Ευαίσθητα 50'", "hqd_delicate_cradle": "Ευαίσθητα", "hqd_dry": "Στέγνωμα βαμβακερών", "hqd_dry_synthetics": "Μικτά στέγνωμα", "hqd_duvet": "Παπλώματα", "hqd_eco_40_60_degrees": "Eco (οικολογικό) 40-60", - "hqd_handwash_wool": "Μάλλινα", + "hqd_handwash_wool": "Μάλλινα 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Μείγμα", "hqd_quick_15": "Γρήγορο 15'", @@ -495,7 +509,7 @@ "hqd_shirts": "Πουκάμισα", "hqd_smart": "Smart A.I.", "hqd_spin": "Στύψιμο", - "hqd_sport": "Αθλητικά", + "hqd_sport": "Αθλητικά 25'", "hqd_super_fast": "Γρήγορο 39’", "hqd_synthetic_and_coloured": "Συνθετικά", "hygiene_59": "HYGIENE PLUS 59'", @@ -506,8 +520,8 @@ "hygiene_pro_steam": "Hygiene Pro + Ατμός", "intensive_40": "Εντατικό 40°C", "intensive_40_steam": "Εντατικό 40°C + ατμός", - "iot_active_steam": "Ατμός", - "iot_active_wash_steam": "Ενεργό πλύσιμο", + "iot_active_steam": "Ατμός 29'", + "iot_active_wash_steam": "Ενεργό πλύσιμο 20' + Ατμός", "iot_allergy_care_pro": "Allergy Care Επαγγελματικό", "iot_all_in_one_59_steam": "Όλα σε Ένα 59' + Ατμός", "iot_checkup": "Έλεγχος", @@ -542,17 +556,18 @@ "iot_dry_technical_fabrics": "Τεχνικά υφάσματα", "iot_dry_warm_embrace": "Ευαίσθητα στέγνωμα", "iot_dry_wool_dry": "Μάλλινα στέγνωμα", - "iot_easy_iron": "ευκολο σιδερωμα", + "iot_easy_iron": "ευκολο σιδερωμα 39'", "iot_fresh_care_steam": "Φροντίδα φρεσκάδας + Ατμός", "iot_hygiene_pro_steam": "Hygiene Pro + Ατμός", "iot_intensive_40_steam": "Εντατικό 40°C + ατμός", + "iot_jeans_60_steam": "Τζιν παντελόνια + ατμός", "iot_mixed_steam": "Μικτά + Ατμός", "iot_mix_and_colour_59_steam": "Μικτά και χρωματιστά 59' + Ατμός", "iot_perfect_cotton_59_steam": "ΤΕΛΕΙΑ ΒΑΜΒΑΚΕΡΑ 59'", "iot_rapid_a_class_60_steam": "Γρήγορο κατηγορίας A 60 + ατμός", "iot_resistant_cotton_steam": "Βαμβακερό + Ατμός", "iot_shirts_steam": "Πουκάμισα + Ατμός", - "iot_single_item_steam": "Ένα τεμάχιο + Ατμός", + "iot_single_item_steam": "Ένα τεμάχιο 20' + Ατμός", "iot_smart_wash": "Έξυπνη πλύση", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Ειδικό 39' + Ατμός", @@ -586,7 +601,7 @@ "iot_wash_coloured_bed_linen": "Χρωματιστά κλινοσκεπάσματα", "iot_wash_coloured_bed_linen_steam": "Χρωματιστά κλινοσκεπάσματα + ατμός", "iot_wash_coloured_curtains": "Χρωματιστές κουρτίνες", - "iot_wash_coloured_shirts": "Χρωματιστά πουκάμισα", + "iot_wash_coloured_shirts": "Χρωματιστά πουκάμισα 59'", "iot_wash_coloured_shirts_steam": "Χρωματιστά πουκάμισα + ατμός", "iot_wash_coloured_steam": "Χρωματιστά + Ατμός", "iot_wash_coloured_tableclothes": "Χρωματιστά τραπεζομάντηλα", @@ -623,7 +638,7 @@ "iot_wash_down_jackets_zelig": "Φουσκωτά μπουφάν", "iot_wash_duvet": "Παπλώματα", "iot_wash_fruit_stains": "Λεκέδες φρούτων", - "iot_wash_gym_fit": "Φόρμες - ρούχα γυμναστικής", + "iot_wash_gym_fit": "Φόρμες - ρούχα γυμναστικής 59'", "iot_wash_handwash": "Πλύσιμο στο χέρι", "iot_wash_handwash_colored": "Πλύσιμο στο χέρι χρωματιστά", "iot_wash_handwash_dark": "Πλύσιμο στο χέρι σκούρα", @@ -686,6 +701,7 @@ "iot_wash_wool": "Μάλλινα", "jeans": "Τζιν παντελονια", "jeans_60": "τζιν", + "jeans_60_steam": "Τζιν παντελόνια + ατμός", "low_dry": "Μικτά στέγνωμα", "mixed": "Μικτά", "mixed_and_colored_59": "Μικτά και χρωματιστά 59'", @@ -709,7 +725,7 @@ "rinse": "Ξέπλυμα", "shirts_steam": "Πουκάμισα + Ατμός", "silent_night": "Ολονύκτιος κύκλος", - "single_item": "Ενιαίο στοιχείο", + "single_item": "Ενιαίο στοιχείο 20'", "single_item_steam": "Ένα τεμάχιο + Ατμός", "smart_wash": "Έξυπνη πλύση", "soft_care": "Απαλή φροντίδα", @@ -725,8 +741,8 @@ "steam_39": "Ατμός 39'", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - Βαμβακερά", - "steam_care_pro_delicates": "Steam Care Pro - Ευαίσθητα", - "steam_care_pro_synthetic": "Steam Care Pro - Συνθετικά", + "steam_care_pro_delicates": "Steam Care Pro - Ευαίσθητα 16'", + "steam_care_pro_synthetic": "Steam Care Pro - Συνθετικά 20'", "steam_hygiene_plus": "Ατμός για περισσότερο υγιεινό φαγητό", "synthetics": "Συνθετικά", "synthetic_and_coloured": "Συνθετικά και χρωματιστά", @@ -738,7 +754,7 @@ "wool": "Μάλλινα", "wool_and_delicates_49": "μαλλινα/ευαισθητα 49'", "wool_dry": "Μάλλινα στέγνωμα", - "wool_soft_care": "μαλλινα & Soft Care" + "wool_soft_care": "μαλλινα & Soft Care 48'" }, "name": "Πρόγραμμα" }, @@ -748,19 +764,24 @@ "cheese": "Τυρί", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Λειτουργία Eco", + "fruits": "Fruits", "fruits_and_veg": "ΦΡΟΥΤΑ & ΛΑΧΑΝΙΚΑ", "fruit_and_veg": "Fruit & Veg", "holiday": "Ρυθμίστε το ψυγείο στους 17°C και διατηρήστε την κατάψυξη σε λειτουργία για μεγάλο χρονικό διάστημα.", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Δεν επιλέχθηκε λειτουργία", "quick_cool": "ΓΡΗΓΟΡΗ ΨΥΞΗ", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Πρόγραμμα" @@ -964,22 +985,25 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Αυτοματη Υγιεινη", "auto_plus": "AutoPlus", + "auto_plus_soil": "Λερωμένα Auto Plus", "auto_rapid": "Αυτοματο Γρηγορο", + "auto_rapid_soil": "Λερωμένα Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "αυτοματο Universal 50 - 60°C", - "auto_universal_plus": "αυτόματο Universal Plus 65 - 75°C", - "auto_universal_plus_soil": "αυτόματο Universal Plus 65 - 75°C", - "auto_universal_soil": "αυτοματο Universal 50 - 60°C", + "auto_universal": "αυτοματο Universal 50-60°C", + "auto_universal_plus": "αυτόματο Universal Plus 65-75°C", + "auto_universal_plus_soil": "αυτόματο Universal Plus 65-75°C", + "auto_universal_soil": "αυτοματο Universal 50-60°C", "auto_wash": "Αυτόματη πλύση", "auto_wash_soil": "Αυτόματη πλύση", "classe_a_59": "Α Class 59' 65°C", "delicate": "ευαισθητα 45°C", "dishwasher_care": "Κύκλος καθαρισμού κλίμακας στρώματος αλάτων", - "eco": "Οικολογικό", + "eco": "ECO 45°C", "eco_asynch": "ECO 45°C", "eco_bldc": "ECO 45°C", "eco_synch": "ECO 45°C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "Ποτήρι", "glassware": "γυαλικα 45°C", @@ -988,8 +1012,9 @@ "hygiene_plus": "Hygiene+ 75°C", "intensive": "Εντατικό", "intensive_rapid": "δυνατο γρηγορο", + "intensive_voice": "Εντατικό", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "αυτοματο Universal 50 - 60°C", + "iot_auto_universal_soil": "αυτοματο Universal 50-60°C", "iot_auto_wash_soil": "Αυτόματη πλύση", "iot_baby_care": "Φροντίδα Μωρού", "iot_breakfast": "Πρωινό", @@ -1029,6 +1054,13 @@ "iot_super_wash": "Εξαιρετική Πλύση", "iot_turbopower": "Μεγάλη Ισχύς", "iot_universal": "γενικο 60°C", + "iot_voice_automatic": "Automatic", + "iot_voice_delicate": "ευαισθητα 45°C", + "iot_voice_eco": "ECO 45°C", + "iot_voice_intensive": "Εντατικό 75°C", + "iot_voice_prewash": "προπλυση", + "iot_voice_rapid_59": "Γρηγορο 59'", + "iot_voice_universal": "γενικο 60°C", "iot_wok_grids_maxi_pans": "Ειδικά Τηγάνια (Γουόκ - Σχάρες και Μεγάλα Τηγάνια)", "iot_wok_grids_maxi_pans_soil": "Ειδικά Τηγάνια (Γουόκ - Σχάρες και Μεγάλα Τηγάνια)", "iot_yes_quick_cycle": "Yes Quick", @@ -1054,12 +1086,13 @@ "special": "σπεσιαλ", "special_pw_prz": "σπεσιαλ", "steam": "ατμος 75°C", - "steam_plus": "Επιπλέον ατμός 75° C", + "steam_plus": "Επιπλέον ατμός 75°C", "total_care": "Total Care 50°C", "ultra_silence": "Ultra Silent 55°C", "ultra_silent": "Ultra Silent 55°C", "universal": "γενικο 60°C", "universal_plus": "γενικο Plus 70°C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "Πρόγραμμα" @@ -1193,14 +1226,14 @@ "hqd_bulky": "Ογκώδη αντικείμενα", "hqd_casual": "Καθημερινά ρούχα", "hqd_cold_wind_30": "Δροσερό αεράκι 30 λεπτά", - "hqd_cold_wind_timing": "Δροσερό αεράκι", + "hqd_cold_wind_timing": "Ψυχρός Αέρας", "hqd_cotton": "Βαμβακερό", "hqd_curtain": "Κουρτίνες", "hqd_delicate": "Ευαίσθητα", "hqd_diaper": "Πάνες", - "hqd_duvet": "Πάπλωμα", - "hqd_feather": "Φουσκωτά μπουφάν", - "hqd_hot_wind_timing": "Ζεστός αέρας", + "hqd_duvet": "Καπιτονέ τζάκετ (μπουφάν) από συνθετικές ίνες", + "hqd_feather": "Καπιτονέ τζάκετ (μπουφάν) από φυσικές ίνες", + "hqd_hot_wind_timing": "Ζεστή Αγκαλιά", "hqd_hygienic": "Υγιεινή", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -1210,10 +1243,10 @@ "hqd_mix": "Μικτά", "hqd_night_dry": "Ολονύκτιο στέγνωμα", "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", + "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Γρήγορα 20", "hqd_quick_30": "Γρήγορα 30", - "hqd_quick_dry": "Γρήγορο στέγνωμα 30'", + "hqd_quick_dry": "30' αυτόματο γρήγορο στέγνωμα", "hqd_quilt": "Παπλώματα", "hqd_refresh": "Φρεσκάρισμα", "hqd_school_uniform": "Σχολική στολή", @@ -1250,6 +1283,8 @@ "iot_dry_gym_fit": "Γυμναστήριο", "iot_dry_lingerie": "Εσώρουχα", "iot_dry_mixed": "Μικτά", + "iot_dry_pet_accessories": "Αξεσουάρ κατοικίδιων", + "iot_dry_pet_hair_removal": "Αφαίρεση τριχών κατοικίδιων ζώων (πριν από το πλύσιμο)", "iot_dry_playsuits": "Στολές", "iot_dry_rapid_30": "Rapid 30", "iot_dry_rapid_59": "Γρήγορο 59'.", @@ -1301,9 +1336,9 @@ "state": { "20_degrees_coloured_cottons": "20° Χρωματιστά και Βαμβακερά", "20_degrees_new_energy_label": "20°C", - "active_steam": "Ατμός", - "active_wash": "Ενεργό πλύσιμο", - "active_wash_steam": "Ενεργό πλύσιμο", + "active_steam": "Ατμός 29'", + "active_wash": "Ενεργό πλύσιμο 20'", + "active_wash_steam": "Ενεργό πλύσιμο 20' + Ατμός", "allergy_care": "Φροντίδα αλλεργίας", "allergy_care_pro": "Allergy Care Επαγγελματικό", "all_in_one_49": "Όλα σε Ένα 49'.", @@ -1323,19 +1358,19 @@ "cottons_steam": "Βαμβακερό + Ατμός", "cotton_care_59": "βαμβακερα 59 λεπτα", "delicate_59": "Ευαίσθητα 59'", - "delicate_silk": "Ευαίσθητα μεταξωτά", + "delicate_silk": "Ευαίσθητα μεταξωτά 59'", "delicate_silk_steam": "Ευαίσθητα μεταξωτά + ατμός", "delicati_59": "Ευαίσθητα 59'", "delicati_59_steam": "Ευαίσθητα 59'", "drain_spin": "Στραγγίστε + και περιστρέψτε", - "easy_iron": "ευκολο σιδερωμα", + "easy_iron": "ευκολο σιδερωμα 39'", "eco_40_60_new_energy_label": "Eco (οικολογικό) 40-60", "extra_care": "EXTRA CARE", "fitness": "FITNESS CARE", "fitness_care": "FITNESS CARE", - "fresh_care": "Φρέσκια φροντίδα", + "fresh_care": "Φρέσκια φροντίδα 59'", "fresh_care_steam": "Φροντίδα φρεσκάδας + Ατμός", - "handwash_wool": "Πλύσιμο στο χέρι και μαλλί", + "handwash_wool": "Πλύσιμο στο χέρι και μαλλί 48'", "high_dry": "Στέγνωμα βαμβακερών", "hqd_20_degrees": "Βαμβακερό 20℃", "hqd_allergy": "Φροντίδα αλλεργίας", @@ -1343,13 +1378,13 @@ "hqd_babycare": "Φροντίδα Μωρού", "hqd_checkup": "Έλεγχος", "hqd_cottons": "Βαμβακερό", - "hqd_delicate": "Ευαίσθητα", + "hqd_delicate": "Ευαίσθητα 50'", "hqd_delicate_cradle": "Ευαίσθητα", "hqd_dry": "Στέγνωμα βαμβακερών", "hqd_dry_synthetics": "Μικτά στέγνωμα", "hqd_duvet": "Παπλώματα", "hqd_eco_40_60_degrees": "Eco (οικολογικό) 40-60", - "hqd_handwash_wool": "Μάλλινα", + "hqd_handwash_wool": "Μάλλινα 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Μείγμα", "hqd_quick_15": "Γρήγορο 15'", @@ -1360,7 +1395,7 @@ "hqd_shirts": "Πουκάμισα", "hqd_smart": "Smart A.I.", "hqd_spin": "Στύψιμο", - "hqd_sport": "Αθλητικά", + "hqd_sport": "Αθλητικά 25'", "hqd_super_fast": "Γρήγορο 39’", "hqd_synthetic_and_coloured": "Συνθετικά", "hygiene_59": "HYGIENE PLUS 59'", @@ -1371,8 +1406,8 @@ "hygiene_pro_steam": "Hygiene Pro + Ατμός", "intensive_40": "Εντατικό 40°C", "intensive_40_steam": "Εντατικό 40°C + ατμός", - "iot_active_steam": "Ατμός", - "iot_active_wash_steam": "Ενεργό πλύσιμο", + "iot_active_steam": "Ατμός 29'", + "iot_active_wash_steam": "Ενεργό πλύσιμο 20' + Ατμός", "iot_allergy_care_pro": "Allergy Care Επαγγελματικό", "iot_all_in_one_59_steam": "Όλα σε Ένα 59' + Ατμός", "iot_checkup": "Έλεγχος", @@ -1407,17 +1442,18 @@ "iot_dry_technical_fabrics": "Τεχνικά υφάσματα", "iot_dry_warm_embrace": "Ευαίσθητα στέγνωμα", "iot_dry_wool_dry": "Μάλλινα στέγνωμα", - "iot_easy_iron": "ευκολο σιδερωμα", + "iot_easy_iron": "ευκολο σιδερωμα 39'", "iot_fresh_care_steam": "Φροντίδα φρεσκάδας + Ατμός", "iot_hygiene_pro_steam": "Hygiene Pro + Ατμός", "iot_intensive_40_steam": "Εντατικό 40°C + ατμός", + "iot_jeans_60_steam": "Τζιν παντελόνια + ατμός", "iot_mixed_steam": "Μικτά + Ατμός", "iot_mix_and_colour_59_steam": "Μικτά και χρωματιστά 59' + Ατμός", "iot_perfect_cotton_59_steam": "ΤΕΛΕΙΑ ΒΑΜΒΑΚΕΡΑ 59'", "iot_rapid_a_class_60_steam": "Γρήγορο κατηγορίας A 60 + ατμός", "iot_resistant_cotton_steam": "Βαμβακερό + Ατμός", "iot_shirts_steam": "Πουκάμισα + Ατμός", - "iot_single_item_steam": "Ένα τεμάχιο + Ατμός", + "iot_single_item_steam": "Ένα τεμάχιο 20' + Ατμός", "iot_smart_wash": "Έξυπνη πλύση", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Ειδικό 39' + Ατμός", @@ -1451,7 +1487,7 @@ "iot_wash_coloured_bed_linen": "Χρωματιστά κλινοσκεπάσματα", "iot_wash_coloured_bed_linen_steam": "Χρωματιστά κλινοσκεπάσματα + ατμός", "iot_wash_coloured_curtains": "Χρωματιστές κουρτίνες", - "iot_wash_coloured_shirts": "Χρωματιστά πουκάμισα", + "iot_wash_coloured_shirts": "Χρωματιστά πουκάμισα 59'", "iot_wash_coloured_shirts_steam": "Χρωματιστά πουκάμισα + ατμός", "iot_wash_coloured_steam": "Χρωματιστά + Ατμός", "iot_wash_coloured_tableclothes": "Χρωματιστά τραπεζομάντηλα", @@ -1488,7 +1524,7 @@ "iot_wash_down_jackets_zelig": "Φουσκωτά μπουφάν", "iot_wash_duvet": "Παπλώματα", "iot_wash_fruit_stains": "Λεκέδες φρούτων", - "iot_wash_gym_fit": "Φόρμες - ρούχα γυμναστικής", + "iot_wash_gym_fit": "Φόρμες - ρούχα γυμναστικής 59'", "iot_wash_handwash": "Πλύσιμο στο χέρι", "iot_wash_handwash_colored": "Πλύσιμο στο χέρι χρωματιστά", "iot_wash_handwash_dark": "Πλύσιμο στο χέρι σκούρα", @@ -1551,6 +1587,7 @@ "iot_wash_wool": "Μάλλινα", "jeans": "Τζιν παντελονια", "jeans_60": "τζιν", + "jeans_60_steam": "Τζιν παντελόνια + ατμός", "low_dry": "Μικτά στέγνωμα", "mixed": "Μικτά", "mixed_and_colored_59": "Μικτά και χρωματιστά 59'", @@ -1574,7 +1611,7 @@ "rinse": "Ξέπλυμα", "shirts_steam": "Πουκάμισα + Ατμός", "silent_night": "Ολονύκτιος κύκλος", - "single_item": "Ενιαίο στοιχείο", + "single_item": "Ενιαίο στοιχείο 20'", "single_item_steam": "Ένα τεμάχιο + Ατμός", "smart_wash": "Έξυπνη πλύση", "soft_care": "Απαλή φροντίδα", @@ -1590,8 +1627,8 @@ "steam_39": "Ατμός 39'", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - Βαμβακερά", - "steam_care_pro_delicates": "Steam Care Pro - Ευαίσθητα", - "steam_care_pro_synthetic": "Steam Care Pro - Συνθετικά", + "steam_care_pro_delicates": "Steam Care Pro - Ευαίσθητα 16'", + "steam_care_pro_synthetic": "Steam Care Pro - Συνθετικά 20'", "steam_hygiene_plus": "Ατμός για περισσότερο υγιεινό φαγητό", "synthetics": "Συνθετικά", "synthetic_and_coloured": "Συνθετικά και χρωματιστά", @@ -1603,7 +1640,7 @@ "wool": "Μάλλινα", "wool_and_delicates_49": "μαλλινα/ευαισθητα 49'", "wool_dry": "Μάλλινα στέγνωμα", - "wool_soft_care": "μαλλινα & Soft Care" + "wool_soft_care": "μαλλινα & Soft Care 48'" }, "name": "Πρόγραμμα" }, @@ -1613,19 +1650,24 @@ "cheese": "Τυρί", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Λειτουργία Eco", + "fruits": "Fruits", "fruits_and_veg": "ΦΡΟΥΤΑ & ΛΑΧΑΝΙΚΑ", "fruit_and_veg": "Fruit & Veg", "holiday": "Ρυθμίστε το ψυγείο στους 17°C και διατηρήστε την κατάψυξη σε λειτουργία για μεγάλο χρονικό διάστημα.", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Δεν επιλέχθηκε λειτουργία", "quick_cool": "ΓΡΗΓΟΡΗ ΨΥΞΗ", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Πρόγραμμα" diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 1899b02..d6868a8 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -107,39 +107,41 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Auto Hygiene", "auto_plus": "AutoPlus", - "auto_plus_soil": "Auto Plus Soil", + "auto_plus_soil": "Auto Plus", "auto_rapid": "Auto Rapid", - "auto_rapid_soil": "Auto rapid Soil", + "auto_rapid_soil": "Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Auto Universal 50 - 60°C", - "auto_universal_plus": "Auto Universal+ 65 - 75°C", - "auto_universal_plus_soil": "Auto Universal+ 65 - 75°C", - "auto_universal_soil": "Auto Universal 50 - 60°C", + "auto_universal": "Auto Universal 50-60°C", + "auto_universal_plus": "Auto Universal Plus 65-75°C", + "auto_universal_plus_soil": "Auto Universal Plus 65-75°C", + "auto_universal_soil": "Auto Universal 50-60°C", "auto_wash": "Auto Wash", "auto_wash_soil": "Auto Wash", "classe_a_59": "A Wash 59' 65°C", "delicate": "Delicate 45°C", "dishwasher_care": "Limescale cleaning", - "eco": "Eco", + "eco": "Eco 45°C", "eco_asynch": "Eco 45°C", "eco_bldc": "Eco 45°C", "eco_synch": "Eco 45°C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "Glass", "glassware": "Glassware 45°C", "glass_care": "Glass Care", "hygiene": "Hygiene", - "hygiene_plus": "Hygiene+ 75°C", + "hygiene_plus": "Hygiene Plus 75°C", "intensive": "Intensive", "intensive_rapid": "Intensive Rapid", + "intensive_voice": "Intensive", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Auto Universal 50 - 60°C", + "iot_auto_universal_soil": "Auto Universal 50-60°C", "iot_auto_wash_soil": "Auto Wash", "iot_baby_care": "Baby Care", "iot_breakfast": "Breakfast", "iot_checkup": "Check-Up", - "iot_china_crystals": "China Crystals", + "iot_china_crystals": "Crystals", "iot_classe_a_59": "Rapid 59'", "iot_cocktail_glasses": "Coktail Glasses", "iot_cocktail_glasses_soil": "Coktail Glasses", @@ -158,6 +160,7 @@ "iot_jar_quick_cycle": "Jar Quick", "iot_party": "Party", "iot_party_soil": "Party", + "iot_pet_bowls_toys": "Pet Bowls and Toys", "iot_pizza_menu": "Pizza Menu", "iot_pizza_menu_soil": "Pizza Menu", "iot_plastic_tupperware": "Plastic & Tupperware", @@ -174,6 +177,14 @@ "iot_super_wash": "Super Wash", "iot_turbopower": "TurboPower", "iot_universal": "Universal 60°C", + "iot_voice_automatic": "Automatic", + "iot_voice_delicate": "Delicate 45°C", + "iot_voice_eco": "Eco 45°C", + "iot_voice_eco_bldc": "Eco 45°C", + "iot_voice_intensive": "Intensive 75°C", + "iot_voice_prewash": "Pre-wash", + "iot_voice_rapid_59": "Rapid 59'", + "iot_voice_universal": "Universal 60°C", "iot_wok_grids_maxi_pans": "Special Pans (Wok, Grids & Maxi Pans)", "iot_wok_grids_maxi_pans_soil": "Special Pans (Wok, Grids & Maxi Pans)", "iot_yes_quick_cycle": "Yes Quick", @@ -341,14 +352,14 @@ "hqd_bulky": "Bulky Items", "hqd_casual": "Casual", "hqd_cold_wind_30": "Cool Breeze 30m", - "hqd_cold_wind_timing": "Cool Breeze", + "hqd_cold_wind_timing": "Cold Air", "hqd_cotton": "Cotton", "hqd_curtain": "Curtains", "hqd_delicate": "Delicates", "hqd_diaper": "Diapers", - "hqd_duvet": "Duvet", - "hqd_feather": "Down Jackets", - "hqd_hot_wind_timing": "Hot Air", + "hqd_duvet": "Synthetic fibre quilted jacket", + "hqd_feather": "Natural fibre quilted jacket", + "hqd_hot_wind_timing": "Warm Embrace", "hqd_hygienic": "Hygienising", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -361,7 +372,7 @@ "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Quick 20m", "hqd_quick_30": "Quick 30'", - "hqd_quick_dry": "Quick dry 30'", + "hqd_quick_dry": "30' automatic quick drying", "hqd_quilt": "Quilts", "hqd_refresh": "Refresh", "hqd_school_uniform": "School Uniform", @@ -398,6 +409,8 @@ "iot_dry_gym_fit": "Gym fit - Fitness", "iot_dry_lingerie": "Lingerie", "iot_dry_mixed": "Mixed", + "iot_dry_pet_accessories": "Pet Accessories", + "iot_dry_pet_hair_removal": "Pet hair removal (pre-washing)", "iot_dry_playsuits": "Playsuits", "iot_dry_rapid_30": "Rapid 30'", "iot_dry_rapid_59": "Rapid 59'", @@ -449,14 +462,14 @@ "state": { "20_degrees_coloured_cottons": "20° Colored and Cottons", "20_degrees_new_energy_label": "20°C", - "active_steam": "Steam", - "active_wash": "Active Wash", - "active_wash_steam": "Active Wash + Steam", + "active_steam": "Steam 29'", + "active_wash": "Active Wash 20'", + "active_wash_steam": "Active Wash 20' + Steam", "allergy_care": "Allergy Care", "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "All in One 49'", "all_in_one_59": "All in One 59'", - "all_in_one_59_steam": "All in One 59' + Vapore", + "all_in_one_59_steam": "All in One 59' + Steam", "autocare": "Autocare", "autoclean": "Drum cleaning and descaling", "baby_60": "All Baby 60°C", @@ -470,20 +483,21 @@ "cottons_prewash": "Cottons + Prewash", "cottons_steam": "Cotton + Steam", "cotton_care_59": "Cotton Care 59'", + "crystals": "Crystals 45°C", "delicate_59": "Delicate 59'", - "delicate_silk": "Delicate and Silk", + "delicate_silk": "Delicate and Silk 59'", "delicate_silk_steam": "Delicate and Silk + Steam", "delicati_59": "Delicate 59'", "delicati_59_steam": "Delicate 59' + Steam", "drain_spin": "Drain + Spin", - "easy_iron": "Easy Iron", + "easy_iron": "Easy Iron 39'", "eco_40_60_new_energy_label": "Eco 40-60", "extra_care": "Extra Care", "fitness": "Fitness Care", "fitness_care": "Fitness Care", - "fresh_care": "Fresh Care", + "fresh_care": "Fresh Care 59'", "fresh_care_steam": "Fresh Care + Steam", - "handwash_wool": "Hand Wash + Wool", + "handwash_wool": "Hand Wash + Wool 48'", "high_dry": "High Heat Dry", "hqd_20_degrees": "Cotton 20℃", "hqd_allergy": "Allergy Care", @@ -491,13 +505,13 @@ "hqd_babycare": "Baby Care", "hqd_checkup": "Check-Up", "hqd_cottons": "Cotton", - "hqd_delicate": "Delicate", + "hqd_delicate": "Delicate 50'", "hqd_delicate_cradle": "Delicate", "hqd_dry": "Cotton Dry", "hqd_dry_synthetics": "Low Heat Dry", "hqd_duvet": "Duvet", "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_handwash_wool": "Wool", + "hqd_handwash_wool": "Wool 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Mix", "hqd_quick_15": "Quick 15'", @@ -508,7 +522,7 @@ "hqd_shirts": "Shirts", "hqd_smart": "Smart A.I.", "hqd_spin": "Spin", - "hqd_sport": "Sport", + "hqd_sport": "Sport 25'", "hqd_super_fast": "Super Fast 39'", "hqd_synthetic_and_coloured": "Synthetics", "hygiene_59": "Hygiene Plus 59'", @@ -519,10 +533,10 @@ "hygiene_pro_steam": "Hygiene Pro + Steam", "intensive_40": "Intensive 40°C", "intensive_40_steam": "Intensive 40°C + Steam", - "iot_active_steam": "Steam", - "iot_active_wash_steam": "Active Wash + Steam", + "iot_active_steam": "Steam 29'", + "iot_active_wash_steam": "Active Wash 20' + Steam", "iot_allergy_care_pro": "Allergy Care Pro", - "iot_all_in_one_59_steam": "All in One 59' + Vapore", + "iot_all_in_one_59_steam": "All in One 59' + Steam", "iot_checkup": "Check-Up", "iot_colour_59_steam": "Colored 59' + Steam", "iot_cottons_steam": "Cotton + Steam", @@ -555,17 +569,18 @@ "iot_dry_technical_fabrics": "Technical Fabrics", "iot_dry_warm_embrace": "Warm Embrace", "iot_dry_wool_dry": "Wool Dry", - "iot_easy_iron": "Easy Iron", + "iot_easy_iron": "Easy Iron 39'", "iot_fresh_care_steam": "Fresh Care + Steam", "iot_hygiene_pro_steam": "Hygiene Pro + Steam", "iot_intensive_40_steam": "Intensive 40°C + Steam", + "iot_jeans_60_steam": "Jeans + Steam", "iot_mixed_steam": "Mixed + Steam", "iot_mix_and_colour_59_steam": "Mixed and Coloured 59' + Steam", "iot_perfect_cotton_59_steam": "Perfect Cotton 59' + Steam", "iot_rapid_a_class_60_steam": "Rapid 59' A Class + Steam", "iot_resistant_cotton_steam": "Resistant Cotton + Steam", "iot_shirts_steam": "Shirts + Steam", - "iot_single_item_steam": "Single Item + Steam", + "iot_single_item_steam": "Single Item 20' + Steam", "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Special 39' + Steam", @@ -599,7 +614,7 @@ "iot_wash_coloured_bed_linen": "Colored Bed Linen", "iot_wash_coloured_bed_linen_steam": "Coloured Bed Linen + Steam", "iot_wash_coloured_curtains": "Colored Curtains", - "iot_wash_coloured_shirts": "Colored Shirts", + "iot_wash_coloured_shirts": "Colored Shirts 59'", "iot_wash_coloured_shirts_steam": "Colored Shirts + Steam", "iot_wash_coloured_steam": "Colored + Steam", "iot_wash_coloured_tableclothes": "Colored Tableclothes", @@ -636,7 +651,7 @@ "iot_wash_down_jackets_zelig": "Down Jackets", "iot_wash_duvet": "Duvet", "iot_wash_fruit_stains": "Fruit stains", - "iot_wash_gym_fit": "Gym Fit - Fitness", + "iot_wash_gym_fit": "Gym Fit - Fitness 59'", "iot_wash_handwash": "Handwash", "iot_wash_handwash_colored": "Handwash Colored", "iot_wash_handwash_dark": "Handwash Darks", @@ -681,6 +696,7 @@ "iot_wash_sport_anti_odor": "Anti-odour Sportswear", "iot_wash_sport_anti_odor_zelig": "Anti-odour Sportswear", "iot_wash_stains_remover": "Stain Remover", + "iot_wash_super_saving": "Super Saving 49'", "iot_wash_swimsuits_and_bikinis": "Swimsuits and Bikinis", "iot_wash_synthetic": "Synthetics", "iot_wash_synthetic_steam": "Synthetics + Steam", @@ -723,7 +739,7 @@ "rinse": "Rinse", "shirts_steam": "Shirts + Steam", "silent_night": "Silent Night", - "single_item": "Single Item", + "single_item": "Single Item 20'", "single_item_steam": "Single Item + Steam", "smart_wash": "Smart Wash", "soft_care": "Soft Care", @@ -739,8 +755,8 @@ "steam_39": "Steam 39'", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - Cottons", - "steam_care_pro_delicates": "Steam Care Pro - Delicates", - "steam_care_pro_synthetic": "Steam Care Pro - Synthetics", + "steam_care_pro_delicates": "Steam Care Pro - Delicates 16'", + "steam_care_pro_synthetic": "Steam Care Pro - Synthetics 20'", "steam_hygiene_plus": "Hygiene Plus + Steam", "synthetics": "Synthetics", "synthetic_and_coloured": "Synthetic and Colored", @@ -752,7 +768,7 @@ "wool": "Wool", "wool_and_delicates_49": "Wool and Delicates 49'", "wool_dry": "Wool Dry", - "wool_soft_care": "Wool and Soft Care" + "wool_soft_care": "Wool and Soft Care 48'" }, "name": "Program" }, @@ -762,20 +778,26 @@ "cheese": "Cheese", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Eco mode", + "fruits": "Fruits", "fruits_and_veg": "Fruit&Veg", "fruit_and_veg": "Fruit&Veg", "holiday": "HOLIDAY", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "No mode selected", "quick_cool": "QUICK COOL", "sea_food": "Ready to cook meal", + "smart_mode": "SMART MODE", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "soft_frozen\n": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Program" @@ -984,39 +1006,41 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Auto Hygiene", "auto_plus": "AutoPlus", - "auto_plus_soil": "Auto Plus Soil", + "auto_plus_soil": "Auto Plus", "auto_rapid": "Auto Rapid", - "auto_rapid_soil": "Auto rapid Soil", + "auto_rapid_soil": "Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Auto Universal 50 - 60°C", - "auto_universal_plus": "Auto Universal+ 65 - 75°C", - "auto_universal_plus_soil": "Auto Universal+ 65 - 75°C", - "auto_universal_soil": "Auto Universal 50 - 60°C", + "auto_universal": "Auto Universal 50-60°C", + "auto_universal_plus": "Auto Universal Plus 65-75°C", + "auto_universal_plus_soil": "Auto Universal Plus 65-75°C", + "auto_universal_soil": "Auto Universal 50-60°C", "auto_wash": "Auto Wash", "auto_wash_soil": "Auto Wash", "classe_a_59": "A Wash 59' 65°C", "delicate": "Delicate 45°C", "dishwasher_care": "Limescale cleaning", - "eco": "Eco", + "eco": "Eco 45°C", "eco_asynch": "Eco 45°C", "eco_bldc": "Eco 45°C", "eco_synch": "Eco 45°C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "Glass", "glassware": "Glassware 45°C", "glass_care": "Glass Care", "hygiene": "Hygiene", - "hygiene_plus": "Hygiene+ 75°C", + "hygiene_plus": "Hygiene Plus 75°C", "intensive": "Intensive", "intensive_rapid": "Intensive Rapid", + "intensive_voice": "Intensive", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Auto Universal 50 - 60°C", + "iot_auto_universal_soil": "Auto Universal 50-60°C", "iot_auto_wash_soil": "Auto Wash", "iot_baby_care": "Baby Care", "iot_breakfast": "Breakfast", "iot_checkup": "Check-Up", - "iot_china_crystals": "China Crystals", + "iot_china_crystals": "Crystals", "iot_classe_a_59": "Rapid 59'", "iot_cocktail_glasses": "Coktail Glasses", "iot_cocktail_glasses_soil": "Coktail Glasses", @@ -1035,6 +1059,7 @@ "iot_jar_quick_cycle": "Jar Quick", "iot_party": "Party", "iot_party_soil": "Party", + "iot_pet_bowls_toys": "Pet Bowls and Toys", "iot_pizza_menu": "Pizza Menu", "iot_pizza_menu_soil": "Pizza Menu", "iot_plastic_tupperware": "Plastic & Tupperware", @@ -1051,6 +1076,14 @@ "iot_super_wash": "Super Wash", "iot_turbopower": "TurboPower", "iot_universal": "Universal 60°C", + "iot_voice_automatic": "Automatic", + "iot_voice_delicate": "Delicate 45°C", + "iot_voice_eco": "Eco 45°C", + "iot_voice_eco_bldc": "Eco 45°C", + "iot_voice_intensive": "Intensive 75°C", + "iot_voice_prewash": "Pre-wash", + "iot_voice_rapid_59": "Rapid 59'", + "iot_voice_universal": "Universal 60°C", "iot_wok_grids_maxi_pans": "Special Pans (Wok, Grids & Maxi Pans)", "iot_wok_grids_maxi_pans_soil": "Special Pans (Wok, Grids & Maxi Pans)", "iot_yes_quick_cycle": "Yes Quick", @@ -1218,14 +1251,14 @@ "hqd_bulky": "Bulky Items", "hqd_casual": "Casual", "hqd_cold_wind_30": "Cool Breeze 30m", - "hqd_cold_wind_timing": "Cool Breeze", + "hqd_cold_wind_timing": "Cold Air", "hqd_cotton": "Cotton", "hqd_curtain": "Curtains", "hqd_delicate": "Delicates", "hqd_diaper": "Diapers", - "hqd_duvet": "Duvet", - "hqd_feather": "Down Jackets", - "hqd_hot_wind_timing": "Hot Air", + "hqd_duvet": "Synthetic fibre quilted jacket", + "hqd_feather": "Natural fibre quilted jacket", + "hqd_hot_wind_timing": "Warm Embrace", "hqd_hygienic": "Hygienising", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -1238,7 +1271,7 @@ "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Quick 20m", "hqd_quick_30": "Quick 30'", - "hqd_quick_dry": "Quick dry 30'", + "hqd_quick_dry": "30' automatic quick drying", "hqd_quilt": "Quilts", "hqd_refresh": "Refresh", "hqd_school_uniform": "School Uniform", @@ -1275,6 +1308,8 @@ "iot_dry_gym_fit": "Gym fit - Fitness", "iot_dry_lingerie": "Lingerie", "iot_dry_mixed": "Mixed", + "iot_dry_pet_accessories": "Pet Accessories", + "iot_dry_pet_hair_removal": "Pet hair removal (pre-washing)", "iot_dry_playsuits": "Playsuits", "iot_dry_rapid_30": "Rapid 30'", "iot_dry_rapid_59": "Rapid 59'", @@ -1326,14 +1361,14 @@ "state": { "20_degrees_coloured_cottons": "20° Colored and Cottons", "20_degrees_new_energy_label": "20°C", - "active_steam": "Steam", - "active_wash": "Active Wash", - "active_wash_steam": "Active Wash + Steam", + "active_steam": "Steam 29'", + "active_wash": "Active Wash 20'", + "active_wash_steam": "Active Wash 20' + Steam", "allergy_care": "Allergy Care", "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "All in One 49'", "all_in_one_59": "All in One 59'", - "all_in_one_59_steam": "All in One 59' + Vapore", + "all_in_one_59_steam": "All in One 59' + Steam", "autocare": "Autocare", "autoclean": "Drum cleaning and descaling", "baby_60": "All Baby 60°C", @@ -1347,20 +1382,21 @@ "cottons_prewash": "Cottons + Prewash", "cottons_steam": "Cotton + Steam", "cotton_care_59": "Cotton Care 59'", + "crystals": "Crystals 45°C", "delicate_59": "Delicate 59'", - "delicate_silk": "Delicate and Silk", + "delicate_silk": "Delicate and Silk 59'", "delicate_silk_steam": "Delicate and Silk + Steam", "delicati_59": "Delicate 59'", "delicati_59_steam": "Delicate 59' + Steam", "drain_spin": "Drain + Spin", - "easy_iron": "Easy Iron", + "easy_iron": "Easy Iron 39'", "eco_40_60_new_energy_label": "Eco 40-60", "extra_care": "Extra Care", "fitness": "Fitness Care", "fitness_care": "Fitness Care", - "fresh_care": "Fresh Care", + "fresh_care": "Fresh Care 59'", "fresh_care_steam": "Fresh Care + Steam", - "handwash_wool": "Hand Wash + Wool", + "handwash_wool": "Hand Wash + Wool 48'", "high_dry": "High Heat Dry", "hqd_20_degrees": "Cotton 20℃", "hqd_allergy": "Allergy Care", @@ -1368,13 +1404,13 @@ "hqd_babycare": "Baby Care", "hqd_checkup": "Check-Up", "hqd_cottons": "Cotton", - "hqd_delicate": "Delicate", + "hqd_delicate": "Delicate 50'", "hqd_delicate_cradle": "Delicate", "hqd_dry": "Cotton Dry", "hqd_dry_synthetics": "Low Heat Dry", "hqd_duvet": "Duvet", "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_handwash_wool": "Wool", + "hqd_handwash_wool": "Wool 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Mix", "hqd_quick_15": "Quick 15'", @@ -1385,7 +1421,7 @@ "hqd_shirts": "Shirts", "hqd_smart": "Smart A.I.", "hqd_spin": "Spin", - "hqd_sport": "Sport", + "hqd_sport": "Sport 25'", "hqd_super_fast": "Super Fast 39'", "hqd_synthetic_and_coloured": "Synthetics", "hygiene_59": "Hygiene Plus 59'", @@ -1396,10 +1432,10 @@ "hygiene_pro_steam": "Hygiene Pro + Steam", "intensive_40": "Intensive 40°C", "intensive_40_steam": "Intensive 40°C + Steam", - "iot_active_steam": "Steam", - "iot_active_wash_steam": "Active Wash + Steam", + "iot_active_steam": "Steam 29'", + "iot_active_wash_steam": "Active Wash 20' + Steam", "iot_allergy_care_pro": "Allergy Care Pro", - "iot_all_in_one_59_steam": "All in One 59' + Vapore", + "iot_all_in_one_59_steam": "All in One 59' + Steam", "iot_checkup": "Check-Up", "iot_colour_59_steam": "Colored 59' + Steam", "iot_cottons_steam": "Cotton + Steam", @@ -1432,17 +1468,18 @@ "iot_dry_technical_fabrics": "Technical Fabrics", "iot_dry_warm_embrace": "Warm Embrace", "iot_dry_wool_dry": "Wool Dry", - "iot_easy_iron": "Easy Iron", + "iot_easy_iron": "Easy Iron 39'", "iot_fresh_care_steam": "Fresh Care + Steam", "iot_hygiene_pro_steam": "Hygiene Pro + Steam", "iot_intensive_40_steam": "Intensive 40°C + Steam", + "iot_jeans_60_steam": "Jeans + Steam", "iot_mixed_steam": "Mixed + Steam", "iot_mix_and_colour_59_steam": "Mixed and Coloured 59' + Steam", "iot_perfect_cotton_59_steam": "Perfect Cotton 59' + Steam", "iot_rapid_a_class_60_steam": "Rapid 59' A Class + Steam", "iot_resistant_cotton_steam": "Resistant Cotton + Steam", "iot_shirts_steam": "Shirts + Steam", - "iot_single_item_steam": "Single Item + Steam", + "iot_single_item_steam": "Single Item 20' + Steam", "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Special 39' + Steam", @@ -1476,7 +1513,7 @@ "iot_wash_coloured_bed_linen": "Colored Bed Linen", "iot_wash_coloured_bed_linen_steam": "Coloured Bed Linen + Steam", "iot_wash_coloured_curtains": "Colored Curtains", - "iot_wash_coloured_shirts": "Colored Shirts", + "iot_wash_coloured_shirts": "Colored Shirts 59'", "iot_wash_coloured_shirts_steam": "Colored Shirts + Steam", "iot_wash_coloured_steam": "Colored + Steam", "iot_wash_coloured_tableclothes": "Colored Tableclothes", @@ -1513,7 +1550,7 @@ "iot_wash_down_jackets_zelig": "Down Jackets", "iot_wash_duvet": "Duvet", "iot_wash_fruit_stains": "Fruit stains", - "iot_wash_gym_fit": "Gym Fit - Fitness", + "iot_wash_gym_fit": "Gym Fit - Fitness 59'", "iot_wash_handwash": "Handwash", "iot_wash_handwash_colored": "Handwash Colored", "iot_wash_handwash_dark": "Handwash Darks", @@ -1558,6 +1595,7 @@ "iot_wash_sport_anti_odor": "Anti-odour Sportswear", "iot_wash_sport_anti_odor_zelig": "Anti-odour Sportswear", "iot_wash_stains_remover": "Stain Remover", + "iot_wash_super_saving": "Super Saving 49'", "iot_wash_swimsuits_and_bikinis": "Swimsuits and Bikinis", "iot_wash_synthetic": "Synthetics", "iot_wash_synthetic_steam": "Synthetics + Steam", @@ -1600,7 +1638,7 @@ "rinse": "Rinse", "shirts_steam": "Shirts + Steam", "silent_night": "Silent Night", - "single_item": "Single Item", + "single_item": "Single Item 20'", "single_item_steam": "Single Item + Steam", "smart_wash": "Smart Wash", "soft_care": "Soft Care", @@ -1616,8 +1654,8 @@ "steam_39": "Steam 39'", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - Cottons", - "steam_care_pro_delicates": "Steam Care Pro - Delicates", - "steam_care_pro_synthetic": "Steam Care Pro - Synthetics", + "steam_care_pro_delicates": "Steam Care Pro - Delicates 16'", + "steam_care_pro_synthetic": "Steam Care Pro - Synthetics 20'", "steam_hygiene_plus": "Hygiene Plus + Steam", "synthetics": "Synthetics", "synthetic_and_coloured": "Synthetic and Colored", @@ -1629,7 +1667,7 @@ "wool": "Wool", "wool_and_delicates_49": "Wool and Delicates 49'", "wool_dry": "Wool Dry", - "wool_soft_care": "Wool and Soft Care" + "wool_soft_care": "Wool and Soft Care 48'" }, "name": "Program" }, @@ -1639,20 +1677,26 @@ "cheese": "Cheese", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Eco mode", + "fruits": "Fruits", "fruits_and_veg": "Fruit&Veg", "fruit_and_veg": "Fruit&Veg", "holiday": "HOLIDAY", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "No mode selected", "quick_cool": "QUICK COOL", "sea_food": "Ready to cook meal", + "smart_mode": "SMART MODE", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "soft_frozen\n": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Program" diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index b43a635..9e8f13e 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -99,22 +99,25 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Auto Hygiene", "auto_plus": "AutoPlus", + "auto_plus_soil": "Auto Plus", "auto_rapid": "Auto Rapid", + "auto_rapid_soil": "Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Auto Universal 50 - 60°C", - "auto_universal_plus": "Auto Universal Plus 65 - 75°C", - "auto_universal_plus_soil": "Auto Universal Plus 65 - 75°C", - "auto_universal_soil": "Auto Universal 50 - 60°C", + "auto_universal": "Auto Universal 50-60°C", + "auto_universal_plus": "Auto Universal Plus 65-75°C", + "auto_universal_plus_soil": "Auto Universal Plus 65-75°C", + "auto_universal_soil": "Auto Universal 50-60°C", "auto_wash": "Lavado automático", "auto_wash_soil": "Lavado automático", "classe_a_59": "Clase A 59' 65°C", "delicate": "Delicado 45°C", "dishwasher_care": "Ciclo de limpieza antical", - "eco": "Eco", + "eco": "Eco 45°C", "eco_asynch": "Eco 45°C", "eco_bldc": "Eco 45°C", "eco_synch": "Eco 45°C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "Cristal", "glassware": "Cristal 45 °C", @@ -123,8 +126,9 @@ "hygiene_plus": "Higiene+ 75 °C", "intensive": "Intensivo", "intensive_rapid": "Fuerte rápido", + "intensive_voice": "Intensivo", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Auto Universal 50 - 60°C", + "iot_auto_universal_soil": "Auto Universal 50-60°C", "iot_auto_wash_soil": "Lavado automático", "iot_baby_care": "Baby Care", "iot_breakfast": "Desayuno", @@ -164,6 +168,13 @@ "iot_super_wash": "Lavado Super", "iot_turbopower": "TurboPower", "iot_universal": "Universal 60 °C", + "iot_voice_automatic": "Automatic", + "iot_voice_delicate": "Delicado 45°C", + "iot_voice_eco": "Eco 45°C", + "iot_voice_intensive": "Intensivo 75°C", + "iot_voice_prewash": "Pre-lavado", + "iot_voice_rapid_59": "Rápido 59'", + "iot_voice_universal": "Universal 60 °C", "iot_wok_grids_maxi_pans": "Especial Ollas (Wok - Parrilas y Ollas)", "iot_wok_grids_maxi_pans_soil": "Especial Ollas (Wok - Parrilas y Ollas)", "iot_yes_quick_cycle": "Yes Quick", @@ -195,6 +206,7 @@ "ultra_silent": "Ultra Silencioso 55°C", "universal": "Universal 60 °C", "universal_plus": "Universal Plus 70 °C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "Programa" @@ -328,14 +340,14 @@ "hqd_bulky": "Objetos voluminosos", "hqd_casual": "Casual", "hqd_cold_wind_30": "Brisa fresca 30 minutos", - "hqd_cold_wind_timing": "Brisa fresca", + "hqd_cold_wind_timing": "Aire frío", "hqd_cotton": "Algodón", "hqd_curtain": "Cortinas", "hqd_delicate": "Ropa delicada", "hqd_diaper": "Pañales", - "hqd_duvet": "Edredones", - "hqd_feather": "Plumíferos", - "hqd_hot_wind_timing": "Aire caliente", + "hqd_duvet": "Chaqueta acolchada de fibras sintéticas", + "hqd_feather": "Chaqueta acolchada de fibras naturales", + "hqd_hot_wind_timing": "Abrazo cálido", "hqd_hygienic": "Higienizar", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -345,10 +357,10 @@ "hqd_mix": "Ropa mixta", "hqd_night_dry": "Secado nocturno", "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", + "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Rápido 20", "hqd_quick_30": "Rápido 30", - "hqd_quick_dry": "Secado rápido 30'", + "hqd_quick_dry": "Secado rápido automático de 30'", "hqd_quilt": "Colchas", "hqd_refresh": "Refrescar", "hqd_school_uniform": "Uniformes escolares", @@ -385,6 +397,8 @@ "iot_dry_gym_fit": "Ropa de Deporte - Fitness", "iot_dry_lingerie": "Lencería", "iot_dry_mixed": "Ropa mixta", + "iot_dry_pet_accessories": "Accesorios para mascotas", + "iot_dry_pet_hair_removal": "Eliminación del pelo de mascotas (prelavado)", "iot_dry_playsuits": "Prendas de una pieza - Mono", "iot_dry_rapid_30": "Rápido 30’", "iot_dry_rapid_59": "Rápido 59’", @@ -436,9 +450,9 @@ "state": { "20_degrees_coloured_cottons": "Color y algodón 20 °C", "20_degrees_new_energy_label": "20°C", - "active_steam": "Vapor", - "active_wash": "Lavado activo", - "active_wash_steam": "Lavado activo", + "active_steam": "Vapor 29'", + "active_wash": "Lavado activo 20'", + "active_wash_steam": "Lavado activo 20' + Vapor", "allergy_care": "Antialergias", "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "Todo en uno 49’", @@ -458,19 +472,19 @@ "cottons_steam": "Algodón + Vapor", "cotton_care_59": "Cotton Care 59 Min", "delicate_59": "Delicado 59'", - "delicate_silk": "Seda delicada", + "delicate_silk": "Seda delicada 59'", "delicate_silk_steam": "Seda delicada + vapor", "delicati_59": "Delicado 59'", "delicati_59_steam": "Delicado 59'", "drain_spin": "Desagüe + centrifugado", - "easy_iron": "Planchado fácil", + "easy_iron": "Planchado fácil 39'", "eco_40_60_new_energy_label": "Eco 40-60", "extra_care": "Cuidado extra", "fitness": "Deporte", "fitness_care": "Deporte", - "fresh_care": "Cuidado y frescor", + "fresh_care": "Cuidado y frescor 59'", "fresh_care_steam": "Cuidado y frescor + Vapor", - "handwash_wool": "Lana y lavado a mano", + "handwash_wool": "Lana y lavado a mano 48'", "high_dry": "Secado algodón", "hqd_20_degrees": "Algodón 20℃", "hqd_allergy": "Antialergias", @@ -478,13 +492,13 @@ "hqd_babycare": "Baby Care", "hqd_checkup": "Revisión", "hqd_cottons": "Algodón", - "hqd_delicate": "Ropa delicada", + "hqd_delicate": "Ropa delicada 50'", "hqd_delicate_cradle": "Ropa delicada", "hqd_dry": "Secado algodón", "hqd_dry_synthetics": "Secado de ropa mixta", "hqd_duvet": "Edredón", "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_handwash_wool": "Lana", + "hqd_handwash_wool": "Lana 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Mixta", "hqd_quick_15": "Rápido 15'", @@ -495,7 +509,7 @@ "hqd_shirts": "Camisas", "hqd_smart": "Smart A.I.", "hqd_spin": "Centrifugado", - "hqd_sport": "Deporte", + "hqd_sport": "Deporte 25'", "hqd_super_fast": "Rápido 39’", "hqd_synthetic_and_coloured": "Ropa sintética", "hygiene_59": "Higiene Plus 59'", @@ -506,8 +520,8 @@ "hygiene_pro_steam": "Higiene Pro + Vapor", "intensive_40": "Intensivo 40°C", "intensive_40_steam": "Intensivo 40°C + vapor", - "iot_active_steam": "Vapor", - "iot_active_wash_steam": "Lavado activo", + "iot_active_steam": "Vapor 29'", + "iot_active_wash_steam": "Lavado activo 20' + Vapor", "iot_allergy_care_pro": "Allergy Care Pro", "iot_all_in_one_59_steam": "Todo en uno 59’ + Vapor", "iot_checkup": "Revisión", @@ -542,17 +556,18 @@ "iot_dry_technical_fabrics": "Tejidos técnicos", "iot_dry_warm_embrace": "Cálido abrazo", "iot_dry_wool_dry": "Secado lana", - "iot_easy_iron": "Planchado fácil", + "iot_easy_iron": "Planchado fácil 39'", "iot_fresh_care_steam": "Cuidado y frescor + Vapor", "iot_hygiene_pro_steam": "Higiene Pro + Vapor", "iot_intensive_40_steam": "Intensivo 40°C + vapor", + "iot_jeans_60_steam": "Vaqueros + Vapor", "iot_mixed_steam": "Ropa mixta + Vapor", "iot_mix_and_colour_59_steam": "Mixta y de color 59' + Vapor", "iot_perfect_cotton_59_steam": "Algodon Perfecto 59'", "iot_rapid_a_class_60_steam": "Clase rápida A 60 + vapor", "iot_resistant_cotton_steam": "Algodón + Vapor", "iot_shirts_steam": "Camisas + Vapor", - "iot_single_item_steam": "Elemento único + Vapor", + "iot_single_item_steam": "Elemento único 20' + Vapor", "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Especial 39' + Vapor", @@ -586,7 +601,7 @@ "iot_wash_coloured_bed_linen": "Ropa de cama de color", "iot_wash_coloured_bed_linen_steam": "Ropa de cama de color + vapor", "iot_wash_coloured_curtains": "Cortinas de color", - "iot_wash_coloured_shirts": "Camisas de color", + "iot_wash_coloured_shirts": "Camisas de color 59'", "iot_wash_coloured_shirts_steam": "Camisas de color + vapor", "iot_wash_coloured_steam": "Ropa de color + Vapor", "iot_wash_coloured_tableclothes": "Manteles de color", @@ -623,7 +638,7 @@ "iot_wash_down_jackets_zelig": "Plumíferos", "iot_wash_duvet": "Edredón", "iot_wash_fruit_stains": "Manchas de fruta", - "iot_wash_gym_fit": "Gimnasio - Ropa de deporte", + "iot_wash_gym_fit": "Gimnasio - Ropa de deporte 59'", "iot_wash_handwash": "Lavado a mano", "iot_wash_handwash_colored": "Lavado a mano de ropa de color", "iot_wash_handwash_dark": "Lavado a mano de ropa oscura", @@ -686,6 +701,7 @@ "iot_wash_wool": "Lana", "jeans": "Vaqueros", "jeans_60": "Jeans", + "jeans_60_steam": "Vaqueros + Vapor", "low_dry": "Secado de ropa mixta", "mixed": "Ropa mixta", "mixed_and_colored_59": "Mixta y de color 59'", @@ -709,7 +725,7 @@ "rinse": "Aclarado", "shirts_steam": "Camisas + Vapor", "silent_night": "Ciclo nocturno", - "single_item": "Elemento único", + "single_item": "Elemento único 20'", "single_item_steam": "Elemento único + Vapor", "smart_wash": "Smart Wash", "soft_care": "Cuidado suave", @@ -725,8 +741,8 @@ "steam_39": "Vapor 39'", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - Algodón", - "steam_care_pro_delicates": "Steam Care Pro - Delicados", - "steam_care_pro_synthetic": "Steam Care Pro - Sintéticos", + "steam_care_pro_delicates": "Steam Care Pro - Delicados 16'", + "steam_care_pro_synthetic": "Steam Care Pro - Sintéticos 20'", "steam_hygiene_plus": "Vapor higiene extra", "synthetics": "Ropa sintética", "synthetic_and_coloured": "Ropa sintética y de color", @@ -738,7 +754,7 @@ "wool": "Lana", "wool_and_delicates_49": "Lana/Delicados 49'", "wool_dry": "Secado lana", - "wool_soft_care": "Lana & Soft Care" + "wool_soft_care": "Lana & Soft Care 48'" }, "name": "Programa" }, @@ -748,19 +764,24 @@ "cheese": "Queso", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Modo Eco", + "fruits": "Fruits", "fruits_and_veg": "Frutas Y Verduras", "fruit_and_veg": "Frutas Y Verduras", "holiday": "VACACIONES", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "No se ha seleccionado ningún modo", "quick_cool": "QUICK COOL", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Programa" @@ -964,22 +985,25 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Auto Hygiene", "auto_plus": "AutoPlus", + "auto_plus_soil": "Auto Plus", "auto_rapid": "Auto Rapid", + "auto_rapid_soil": "Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Auto Universal 50 - 60°C", - "auto_universal_plus": "Auto Universal Plus 65 - 75°C", - "auto_universal_plus_soil": "Auto Universal Plus 65 - 75°C", - "auto_universal_soil": "Auto Universal 50 - 60°C", + "auto_universal": "Auto Universal 50-60°C", + "auto_universal_plus": "Auto Universal Plus 65-75°C", + "auto_universal_plus_soil": "Auto Universal Plus 65-75°C", + "auto_universal_soil": "Auto Universal 50-60°C", "auto_wash": "Lavado automático", "auto_wash_soil": "Lavado automático", "classe_a_59": "Clase A 59' 65°C", "delicate": "Delicado 45°C", "dishwasher_care": "Ciclo de limpieza antical", - "eco": "Eco", + "eco": "Eco 45°C", "eco_asynch": "Eco 45°C", "eco_bldc": "Eco 45°C", "eco_synch": "Eco 45°C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "Cristal", "glassware": "Cristal 45 °C", @@ -988,8 +1012,9 @@ "hygiene_plus": "Higiene+ 75 °C", "intensive": "Intensivo", "intensive_rapid": "Fuerte rápido", + "intensive_voice": "Intensivo", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Auto Universal 50 - 60°C", + "iot_auto_universal_soil": "Auto Universal 50-60°C", "iot_auto_wash_soil": "Lavado automático", "iot_baby_care": "Baby Care", "iot_breakfast": "Desayuno", @@ -1029,6 +1054,13 @@ "iot_super_wash": "Lavado Super", "iot_turbopower": "TurboPower", "iot_universal": "Universal 60 °C", + "iot_voice_automatic": "Automatic", + "iot_voice_delicate": "Delicado 45°C", + "iot_voice_eco": "Eco 45°C", + "iot_voice_intensive": "Intensivo 75°C", + "iot_voice_prewash": "Pre-lavado", + "iot_voice_rapid_59": "Rápido 59'", + "iot_voice_universal": "Universal 60 °C", "iot_wok_grids_maxi_pans": "Especial Ollas (Wok - Parrilas y Ollas)", "iot_wok_grids_maxi_pans_soil": "Especial Ollas (Wok - Parrilas y Ollas)", "iot_yes_quick_cycle": "Yes Quick", @@ -1060,6 +1092,7 @@ "ultra_silent": "Ultra Silencioso 55°C", "universal": "Universal 60 °C", "universal_plus": "Universal Plus 70 °C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "Programa" @@ -1193,14 +1226,14 @@ "hqd_bulky": "Objetos voluminosos", "hqd_casual": "Casual", "hqd_cold_wind_30": "Brisa fresca 30 minutos", - "hqd_cold_wind_timing": "Brisa fresca", + "hqd_cold_wind_timing": "Aire frío", "hqd_cotton": "Algodón", "hqd_curtain": "Cortinas", "hqd_delicate": "Ropa delicada", "hqd_diaper": "Pañales", - "hqd_duvet": "Edredones", - "hqd_feather": "Plumíferos", - "hqd_hot_wind_timing": "Aire caliente", + "hqd_duvet": "Chaqueta acolchada de fibras sintéticas", + "hqd_feather": "Chaqueta acolchada de fibras naturales", + "hqd_hot_wind_timing": "Abrazo cálido", "hqd_hygienic": "Higienizar", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -1210,10 +1243,10 @@ "hqd_mix": "Ropa mixta", "hqd_night_dry": "Secado nocturno", "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", + "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Rápido 20", "hqd_quick_30": "Rápido 30", - "hqd_quick_dry": "Secado rápido 30'", + "hqd_quick_dry": "Secado rápido automático de 30'", "hqd_quilt": "Colchas", "hqd_refresh": "Refrescar", "hqd_school_uniform": "Uniformes escolares", @@ -1250,6 +1283,8 @@ "iot_dry_gym_fit": "Ropa de Deporte - Fitness", "iot_dry_lingerie": "Lencería", "iot_dry_mixed": "Ropa mixta", + "iot_dry_pet_accessories": "Accesorios para mascotas", + "iot_dry_pet_hair_removal": "Eliminación del pelo de mascotas (prelavado)", "iot_dry_playsuits": "Prendas de una pieza - Mono", "iot_dry_rapid_30": "Rápido 30’", "iot_dry_rapid_59": "Rápido 59’", @@ -1301,9 +1336,9 @@ "state": { "20_degrees_coloured_cottons": "Color y algodón 20 °C", "20_degrees_new_energy_label": "20°C", - "active_steam": "Vapor", - "active_wash": "Lavado activo", - "active_wash_steam": "Lavado activo", + "active_steam": "Vapor 29'", + "active_wash": "Lavado activo 20'", + "active_wash_steam": "Lavado activo 20' + Vapor", "allergy_care": "Antialergias", "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "Todo en uno 49’", @@ -1323,19 +1358,19 @@ "cottons_steam": "Algodón + Vapor", "cotton_care_59": "Cotton Care 59 Min", "delicate_59": "Delicado 59'", - "delicate_silk": "Seda delicada", + "delicate_silk": "Seda delicada 59'", "delicate_silk_steam": "Seda delicada + vapor", "delicati_59": "Delicado 59'", "delicati_59_steam": "Delicado 59'", "drain_spin": "Desagüe + centrifugado", - "easy_iron": "Planchado fácil", + "easy_iron": "Planchado fácil 39'", "eco_40_60_new_energy_label": "Eco 40-60", "extra_care": "Cuidado extra", "fitness": "Deporte", "fitness_care": "Deporte", - "fresh_care": "Cuidado y frescor", + "fresh_care": "Cuidado y frescor 59'", "fresh_care_steam": "Cuidado y frescor + Vapor", - "handwash_wool": "Lana y lavado a mano", + "handwash_wool": "Lana y lavado a mano 48'", "high_dry": "Secado algodón", "hqd_20_degrees": "Algodón 20℃", "hqd_allergy": "Antialergias", @@ -1343,13 +1378,13 @@ "hqd_babycare": "Baby Care", "hqd_checkup": "Revisión", "hqd_cottons": "Algodón", - "hqd_delicate": "Ropa delicada", + "hqd_delicate": "Ropa delicada 50'", "hqd_delicate_cradle": "Ropa delicada", "hqd_dry": "Secado algodón", "hqd_dry_synthetics": "Secado de ropa mixta", "hqd_duvet": "Edredón", "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_handwash_wool": "Lana", + "hqd_handwash_wool": "Lana 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Mixta", "hqd_quick_15": "Rápido 15'", @@ -1360,7 +1395,7 @@ "hqd_shirts": "Camisas", "hqd_smart": "Smart A.I.", "hqd_spin": "Centrifugado", - "hqd_sport": "Deporte", + "hqd_sport": "Deporte 25'", "hqd_super_fast": "Rápido 39’", "hqd_synthetic_and_coloured": "Ropa sintética", "hygiene_59": "Higiene Plus 59'", @@ -1371,8 +1406,8 @@ "hygiene_pro_steam": "Higiene Pro + Vapor", "intensive_40": "Intensivo 40°C", "intensive_40_steam": "Intensivo 40°C + vapor", - "iot_active_steam": "Vapor", - "iot_active_wash_steam": "Lavado activo", + "iot_active_steam": "Vapor 29'", + "iot_active_wash_steam": "Lavado activo 20' + Vapor", "iot_allergy_care_pro": "Allergy Care Pro", "iot_all_in_one_59_steam": "Todo en uno 59’ + Vapor", "iot_checkup": "Revisión", @@ -1407,17 +1442,18 @@ "iot_dry_technical_fabrics": "Tejidos técnicos", "iot_dry_warm_embrace": "Cálido abrazo", "iot_dry_wool_dry": "Secado lana", - "iot_easy_iron": "Planchado fácil", + "iot_easy_iron": "Planchado fácil 39'", "iot_fresh_care_steam": "Cuidado y frescor + Vapor", "iot_hygiene_pro_steam": "Higiene Pro + Vapor", "iot_intensive_40_steam": "Intensivo 40°C + vapor", + "iot_jeans_60_steam": "Vaqueros + Vapor", "iot_mixed_steam": "Ropa mixta + Vapor", "iot_mix_and_colour_59_steam": "Mixta y de color 59' + Vapor", "iot_perfect_cotton_59_steam": "Algodon Perfecto 59'", "iot_rapid_a_class_60_steam": "Clase rápida A 60 + vapor", "iot_resistant_cotton_steam": "Algodón + Vapor", "iot_shirts_steam": "Camisas + Vapor", - "iot_single_item_steam": "Elemento único + Vapor", + "iot_single_item_steam": "Elemento único 20' + Vapor", "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Especial 39' + Vapor", @@ -1451,7 +1487,7 @@ "iot_wash_coloured_bed_linen": "Ropa de cama de color", "iot_wash_coloured_bed_linen_steam": "Ropa de cama de color + vapor", "iot_wash_coloured_curtains": "Cortinas de color", - "iot_wash_coloured_shirts": "Camisas de color", + "iot_wash_coloured_shirts": "Camisas de color 59'", "iot_wash_coloured_shirts_steam": "Camisas de color + vapor", "iot_wash_coloured_steam": "Ropa de color + Vapor", "iot_wash_coloured_tableclothes": "Manteles de color", @@ -1488,7 +1524,7 @@ "iot_wash_down_jackets_zelig": "Plumíferos", "iot_wash_duvet": "Edredón", "iot_wash_fruit_stains": "Manchas de fruta", - "iot_wash_gym_fit": "Gimnasio - Ropa de deporte", + "iot_wash_gym_fit": "Gimnasio - Ropa de deporte 59'", "iot_wash_handwash": "Lavado a mano", "iot_wash_handwash_colored": "Lavado a mano de ropa de color", "iot_wash_handwash_dark": "Lavado a mano de ropa oscura", @@ -1551,6 +1587,7 @@ "iot_wash_wool": "Lana", "jeans": "Vaqueros", "jeans_60": "Jeans", + "jeans_60_steam": "Vaqueros + Vapor", "low_dry": "Secado de ropa mixta", "mixed": "Ropa mixta", "mixed_and_colored_59": "Mixta y de color 59'", @@ -1574,7 +1611,7 @@ "rinse": "Aclarado", "shirts_steam": "Camisas + Vapor", "silent_night": "Ciclo nocturno", - "single_item": "Elemento único", + "single_item": "Elemento único 20'", "single_item_steam": "Elemento único + Vapor", "smart_wash": "Smart Wash", "soft_care": "Cuidado suave", @@ -1590,8 +1627,8 @@ "steam_39": "Vapor 39'", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - Algodón", - "steam_care_pro_delicates": "Steam Care Pro - Delicados", - "steam_care_pro_synthetic": "Steam Care Pro - Sintéticos", + "steam_care_pro_delicates": "Steam Care Pro - Delicados 16'", + "steam_care_pro_synthetic": "Steam Care Pro - Sintéticos 20'", "steam_hygiene_plus": "Vapor higiene extra", "synthetics": "Ropa sintética", "synthetic_and_coloured": "Ropa sintética y de color", @@ -1603,7 +1640,7 @@ "wool": "Lana", "wool_and_delicates_49": "Lana/Delicados 49'", "wool_dry": "Secado lana", - "wool_soft_care": "Lana & Soft Care" + "wool_soft_care": "Lana & Soft Care 48'" }, "name": "Programa" }, @@ -1613,19 +1650,24 @@ "cheese": "Queso", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Modo Eco", + "fruits": "Fruits", "fruits_and_veg": "Frutas Y Verduras", "fruit_and_veg": "Frutas Y Verduras", "holiday": "VACACIONES", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "No se ha seleccionado ningún modo", "quick_cool": "QUICK COOL", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Programa" diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index 4a493d6..7ec59be 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -99,22 +99,25 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Auto Hygiène", "auto_plus": "AutoPlus", + "auto_plus_soil": "Auto Plus Salissures", "auto_rapid": "Auto Rapide", + "auto_rapid_soil": "Auto Rapide Salissures", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Auto universel 50 - 60°C", - "auto_universal_plus": "Auto universel Plus 65 - 75°C", - "auto_universal_plus_soil": "Auto universel Plus 65 - 75°C", - "auto_universal_soil": "Auto universel 50 - 60°C", + "auto_universal": "Auto universel 50-60°C", + "auto_universal_plus": "Auto universel Plus 65-75°C", + "auto_universal_plus_soil": "Auto universel Plus 65-75°C", + "auto_universal_soil": "Auto universel 50-60°C", "auto_wash": "Lavage automatique", "auto_wash_soil": "Lavage automatique", "classe_a_59": "Classe A 59' 65°C", "delicate": "Délicat 45°C", "dishwasher_care": "Cycle de nettoyage du calcaire", - "eco": "Éco", + "eco": "Eco 45°C", "eco_asynch": "Eco 45°C", "eco_bldc": "Eco 45°C", "eco_synch": "Eco 45°C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "En verre", "glassware": "Verres 45 °C", @@ -123,8 +126,9 @@ "hygiene_plus": "Hygiène 75 °C", "intensive": "Intensif", "intensive_rapid": "Intensif rapide", + "intensive_voice": "Intensif", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Auto universel 50 - 60°C", + "iot_auto_universal_soil": "Auto universel 50-60°C", "iot_auto_wash_soil": "Lavage automatique", "iot_baby_care": "Soin Bébé", "iot_breakfast": "Déjeuner", @@ -164,6 +168,13 @@ "iot_super_wash": "Lavage Super Intensif", "iot_turbopower": "TurboPower", "iot_universal": "Universel 60 °C", + "iot_voice_automatic": "Automatic", + "iot_voice_delicate": "Délicat 45°C", + "iot_voice_eco": "Eco 45°C", + "iot_voice_intensive": "Intensif 75°C", + "iot_voice_prewash": "Prélavage", + "iot_voice_rapid_59": "Rapide 59'", + "iot_voice_universal": "Universel 60 °C", "iot_wok_grids_maxi_pans": "Spécial casserole (Wok - Grill & Casserole)", "iot_wok_grids_maxi_pans_soil": "Spécial casserole (Wok - Grill & Casserole)", "iot_yes_quick_cycle": "Yes Quick", @@ -195,6 +206,7 @@ "ultra_silent": "Ultra silence 55°C", "universal": "Universel 60 °C", "universal_plus": "Universel Plus 70 °C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "Programme" @@ -328,14 +340,14 @@ "hqd_bulky": "Articles volumineux", "hqd_casual": "Journalier", "hqd_cold_wind_30": "Brise rafraîchissante 30 minutes", - "hqd_cold_wind_timing": "Brise rafraîchissante", + "hqd_cold_wind_timing": "Air froid", "hqd_cotton": "Coton", "hqd_curtain": "Rideaux", "hqd_delicate": "Délicats", "hqd_diaper": "Couches", - "hqd_duvet": "Couette", - "hqd_feather": "Vestes en duvet", - "hqd_hot_wind_timing": "Air chaud", + "hqd_duvet": "Veste matelassée en fibre synthétique", + "hqd_feather": "Veste matelassée en fibre naturelle", + "hqd_hot_wind_timing": "Chauffage délicat", "hqd_hygienic": "Hygiénisation", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -345,10 +357,10 @@ "hqd_mix": "Tissus mélangés", "hqd_night_dry": "Séchage toute la nuit", "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", + "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Rapide 20’", "hqd_quick_30": "Rapide 30’", - "hqd_quick_dry": "Séchage rapide 30'", + "hqd_quick_dry": "Séchage rapide automatique 30'", "hqd_quilt": "Couvertures", "hqd_refresh": "Rafraîchissement", "hqd_school_uniform": "Uniforme scolaire", @@ -385,6 +397,8 @@ "iot_dry_gym_fit": "Sport", "iot_dry_lingerie": "Lingerie", "iot_dry_mixed": "Tissus mélangés", + "iot_dry_pet_accessories": "Accessoires pour animaux", + "iot_dry_pet_hair_removal": "Élimination des poils d’animaux (prélavage)", "iot_dry_playsuits": "Combinaisons", "iot_dry_rapid_30": "Rapid 30", "iot_dry_rapid_59": "Rapide 59'.", @@ -436,9 +450,9 @@ "state": { "20_degrees_coloured_cottons": "Couleurs 20 °C et cotons", "20_degrees_new_energy_label": "20°C", - "active_steam": "Vapeur d'eau", - "active_wash": "Lavage actif", - "active_wash_steam": "Lavage actif", + "active_steam": "Vapeur d'eau 29'", + "active_wash": "Lavage actif 20'", + "active_wash_steam": "Lavage actif 20' + vapeur", "allergy_care": "Soin Allergie", "allergy_care_pro": "Soin Allergie Pro", "all_in_one_49": "Tout-en-un 49'.", @@ -458,19 +472,19 @@ "cottons_steam": "Coton + Vapeur d'eau", "cotton_care_59": "Cotton Care 59 Min", "delicate_59": "Délicat 59'", - "delicate_silk": "Délicat", + "delicate_silk": "Délicat 59'", "delicate_silk_steam": "Délicat + vapeur", "delicati_59": "Délicat 59'", "delicati_59_steam": "Délicat 59'", "drain_spin": "Vidange et essorage", - "easy_iron": "Repassage facile", + "easy_iron": "Repassage facile 39'", "eco_40_60_new_energy_label": "Éco 40-60", "extra_care": "Soin Extra", "fitness": "Fitness Care", "fitness_care": "Fitness Care", - "fresh_care": "Soin frais", + "fresh_care": "Soin frais 59'", "fresh_care_steam": "Fresh Care + vapeur", - "handwash_wool": "Lavage à la main et laine", + "handwash_wool": "Lavage à la main et laine 48'", "high_dry": "Séchage du coton", "hqd_20_degrees": "Coton 20 ℃", "hqd_allergy": "Soin Allergie", @@ -478,13 +492,13 @@ "hqd_babycare": "Soin Bébé", "hqd_checkup": "Vérification", "hqd_cottons": "Coton", - "hqd_delicate": "Délicats", + "hqd_delicate": "Délicats 50'", "hqd_delicate_cradle": "Délicats", "hqd_dry": "Séchage du coton", "hqd_dry_synthetics": "Séchage des tissus mélangés", "hqd_duvet": "Couette", "hqd_eco_40_60_degrees": "Éco 40-60", - "hqd_handwash_wool": "Laine", + "hqd_handwash_wool": "Laine 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Tissus mélangés", "hqd_quick_15": "Rapide 15'", @@ -495,7 +509,7 @@ "hqd_shirts": "Chemises", "hqd_smart": "Smart A.I.", "hqd_spin": "Essorage", - "hqd_sport": "Sport", + "hqd_sport": "Sport 25'", "hqd_super_fast": "Rapide 39’", "hqd_synthetic_and_coloured": "Synthétiques", "hygiene_59": "Hygiene Plus 59'", @@ -506,8 +520,8 @@ "hygiene_pro_steam": "Hygiene Pro + Vapeur", "intensive_40": "Intensif 40°C", "intensive_40_steam": "Intensif 40°C + Vapeur", - "iot_active_steam": "Vapeur d'eau", - "iot_active_wash_steam": "Lavage actif", + "iot_active_steam": "Vapeur d'eau 29'", + "iot_active_wash_steam": "Lavage actif 20' + vapeur", "iot_allergy_care_pro": "Soin Allergie Pro", "iot_all_in_one_59_steam": "Tout-en-un 59' + vapeur", "iot_checkup": "Vérification", @@ -542,17 +556,18 @@ "iot_dry_technical_fabrics": "Tissus techniques", "iot_dry_warm_embrace": "Étreinte chaude", "iot_dry_wool_dry": "Séchage de la laine", - "iot_easy_iron": "Repassage facile", + "iot_easy_iron": "Repassage facile 39'", "iot_fresh_care_steam": "Fresh Care + vapeur", "iot_hygiene_pro_steam": "Hygiene Pro + Vapeur", "iot_intensive_40_steam": "Intensif 40°C + Vapeur", + "iot_jeans_60_steam": "Jeans + vapeur", "iot_mixed_steam": "Tissus mélangés + Vapeur d'eau", "iot_mix_and_colour_59_steam": "Mixtes et couleurs 59’ + vapeur", "iot_perfect_cotton_59_steam": "Coton Parfait 59'", "iot_rapid_a_class_60_steam": "Classe A rapide 60 + Vapeur", "iot_resistant_cotton_steam": "Coton + Vapeur d'eau", "iot_shirts_steam": "Chemises + Vapeur", - "iot_single_item_steam": "Article unique + vapeur", + "iot_single_item_steam": "Article unique 20' + vapeur", "iot_smart_wash": "Lavage intelligent", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Spécial 39’ + vapeur", @@ -586,7 +601,7 @@ "iot_wash_coloured_bed_linen": "Draps de couleur", "iot_wash_coloured_bed_linen_steam": "Draps de couleur + Vapeur", "iot_wash_coloured_curtains": "Rideaux de couleur", - "iot_wash_coloured_shirts": "T-shirts de couleur", + "iot_wash_coloured_shirts": "T-shirts de couleur 59'", "iot_wash_coloured_shirts_steam": "Chemises colorées + Vapeur", "iot_wash_coloured_steam": "Couleurs + Vapeur d'eau", "iot_wash_coloured_tableclothes": "Nappes de couleur", @@ -623,7 +638,7 @@ "iot_wash_down_jackets_zelig": "Vestes en duvet", "iot_wash_duvet": "Couette", "iot_wash_fruit_stains": "Taches de fruits", - "iot_wash_gym_fit": "Gym - vêtements de fitness", + "iot_wash_gym_fit": "Gym - vêtements de fitness 59'", "iot_wash_handwash": "Lavage à la main", "iot_wash_handwash_colored": "Lavage à la main des colorés", "iot_wash_handwash_dark": "Lavage à la main des foncés", @@ -686,6 +701,7 @@ "iot_wash_wool": "Laine", "jeans": "Jeans", "jeans_60": "Jeans", + "jeans_60_steam": "Jeans + vapeur", "low_dry": "Séchage des tissus mélangés", "mixed": "Tissus mélangés", "mixed_and_colored_59": "Tissus mélangés et couleurs 59'", @@ -709,7 +725,7 @@ "rinse": "Rinçage", "shirts_steam": "Chemises + Vapeur", "silent_night": "Cycle de nuit", - "single_item": "Élément unique", + "single_item": "Élément unique 20'", "single_item_steam": "Article unique + vapeur", "smart_wash": "Lavage intelligent", "soft_care": "Soin Doux", @@ -725,8 +741,8 @@ "steam_39": "Vapeur 39'", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - Coton", - "steam_care_pro_delicates": "Steam Care Pro - Délicats", - "steam_care_pro_synthetic": "Steam Care Pro - Synthétiques", + "steam_care_pro_delicates": "Steam Care Pro - Délicats 16'", + "steam_care_pro_synthetic": "Steam Care Pro - Synthétiques 20'", "steam_hygiene_plus": "Vapeur Hygiène Plus", "synthetics": "Synthétiques", "synthetic_and_coloured": "Synthétiques et couleurs", @@ -738,7 +754,7 @@ "wool": "Laine", "wool_and_delicates_49": "Laine/Délicat 49'", "wool_dry": "Séchage de la laine", - "wool_soft_care": "Laine & Soin Doux" + "wool_soft_care": "Laine & Soin Doux 48'" }, "name": "Programme" }, @@ -748,19 +764,24 @@ "cheese": "Fromage", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Mode Eco", + "fruits": "Fruits", "fruits_and_veg": "Fruit&Veg", "fruit_and_veg": "Fruit & Veg", "holiday": "HOLIDAY", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Aucun mode sélectionné", "quick_cool": "QUICK COOL", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Programme" @@ -964,22 +985,25 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Auto Hygiène", "auto_plus": "AutoPlus", + "auto_plus_soil": "Auto Plus Salissures", "auto_rapid": "Auto Rapide", + "auto_rapid_soil": "Auto Rapide Salissures", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Auto universel 50 - 60°C", - "auto_universal_plus": "Auto universel Plus 65 - 75°C", - "auto_universal_plus_soil": "Auto universel Plus 65 - 75°C", - "auto_universal_soil": "Auto universel 50 - 60°C", + "auto_universal": "Auto universel 50-60°C", + "auto_universal_plus": "Auto universel Plus 65-75°C", + "auto_universal_plus_soil": "Auto universel Plus 65-75°C", + "auto_universal_soil": "Auto universel 50-60°C", "auto_wash": "Lavage automatique", "auto_wash_soil": "Lavage automatique", "classe_a_59": "Classe A 59' 65°C", "delicate": "Délicat 45°C", "dishwasher_care": "Cycle de nettoyage du calcaire", - "eco": "Éco", + "eco": "Eco 45°C", "eco_asynch": "Eco 45°C", "eco_bldc": "Eco 45°C", "eco_synch": "Eco 45°C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "En verre", "glassware": "Verres 45 °C", @@ -988,8 +1012,9 @@ "hygiene_plus": "Hygiène 75 °C", "intensive": "Intensif", "intensive_rapid": "Intensif rapide", + "intensive_voice": "Intensif", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Auto universel 50 - 60°C", + "iot_auto_universal_soil": "Auto universel 50-60°C", "iot_auto_wash_soil": "Lavage automatique", "iot_baby_care": "Soin Bébé", "iot_breakfast": "Déjeuner", @@ -1029,6 +1054,13 @@ "iot_super_wash": "Lavage Super Intensif", "iot_turbopower": "TurboPower", "iot_universal": "Universel 60 °C", + "iot_voice_automatic": "Automatic", + "iot_voice_delicate": "Délicat 45°C", + "iot_voice_eco": "Eco 45°C", + "iot_voice_intensive": "Intensif 75°C", + "iot_voice_prewash": "Prélavage", + "iot_voice_rapid_59": "Rapide 59'", + "iot_voice_universal": "Universel 60 °C", "iot_wok_grids_maxi_pans": "Spécial casserole (Wok - Grill & Casserole)", "iot_wok_grids_maxi_pans_soil": "Spécial casserole (Wok - Grill & Casserole)", "iot_yes_quick_cycle": "Yes Quick", @@ -1060,6 +1092,7 @@ "ultra_silent": "Ultra silence 55°C", "universal": "Universel 60 °C", "universal_plus": "Universel Plus 70 °C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "Programme" @@ -1193,14 +1226,14 @@ "hqd_bulky": "Articles volumineux", "hqd_casual": "Journalier", "hqd_cold_wind_30": "Brise rafraîchissante 30 minutes", - "hqd_cold_wind_timing": "Brise rafraîchissante", + "hqd_cold_wind_timing": "Air froid", "hqd_cotton": "Coton", "hqd_curtain": "Rideaux", "hqd_delicate": "Délicats", "hqd_diaper": "Couches", - "hqd_duvet": "Couette", - "hqd_feather": "Vestes en duvet", - "hqd_hot_wind_timing": "Air chaud", + "hqd_duvet": "Veste matelassée en fibre synthétique", + "hqd_feather": "Veste matelassée en fibre naturelle", + "hqd_hot_wind_timing": "Chauffage délicat", "hqd_hygienic": "Hygiénisation", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -1210,10 +1243,10 @@ "hqd_mix": "Tissus mélangés", "hqd_night_dry": "Séchage toute la nuit", "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", + "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Rapide 20’", "hqd_quick_30": "Rapide 30’", - "hqd_quick_dry": "Séchage rapide 30'", + "hqd_quick_dry": "Séchage rapide automatique 30'", "hqd_quilt": "Couvertures", "hqd_refresh": "Rafraîchissement", "hqd_school_uniform": "Uniforme scolaire", @@ -1250,6 +1283,8 @@ "iot_dry_gym_fit": "Sport", "iot_dry_lingerie": "Lingerie", "iot_dry_mixed": "Tissus mélangés", + "iot_dry_pet_accessories": "Accessoires pour animaux", + "iot_dry_pet_hair_removal": "Élimination des poils d’animaux (prélavage)", "iot_dry_playsuits": "Combinaisons", "iot_dry_rapid_30": "Rapid 30", "iot_dry_rapid_59": "Rapide 59'.", @@ -1301,9 +1336,9 @@ "state": { "20_degrees_coloured_cottons": "Couleurs 20 °C et cotons", "20_degrees_new_energy_label": "20°C", - "active_steam": "Vapeur d'eau", - "active_wash": "Lavage actif", - "active_wash_steam": "Lavage actif", + "active_steam": "Vapeur d'eau 29'", + "active_wash": "Lavage actif 20'", + "active_wash_steam": "Lavage actif 20' + vapeur", "allergy_care": "Soin Allergie", "allergy_care_pro": "Soin Allergie Pro", "all_in_one_49": "Tout-en-un 49'.", @@ -1323,19 +1358,19 @@ "cottons_steam": "Coton + Vapeur d'eau", "cotton_care_59": "Cotton Care 59 Min", "delicate_59": "Délicat 59'", - "delicate_silk": "Délicat", + "delicate_silk": "Délicat 59'", "delicate_silk_steam": "Délicat + vapeur", "delicati_59": "Délicat 59'", "delicati_59_steam": "Délicat 59'", "drain_spin": "Vidange et essorage", - "easy_iron": "Repassage facile", + "easy_iron": "Repassage facile 39'", "eco_40_60_new_energy_label": "Éco 40-60", "extra_care": "Soin Extra", "fitness": "Fitness Care", "fitness_care": "Fitness Care", - "fresh_care": "Soin frais", + "fresh_care": "Soin frais 59'", "fresh_care_steam": "Fresh Care + vapeur", - "handwash_wool": "Lavage à la main et laine", + "handwash_wool": "Lavage à la main et laine 48'", "high_dry": "Séchage du coton", "hqd_20_degrees": "Coton 20 ℃", "hqd_allergy": "Soin Allergie", @@ -1343,13 +1378,13 @@ "hqd_babycare": "Soin Bébé", "hqd_checkup": "Vérification", "hqd_cottons": "Coton", - "hqd_delicate": "Délicats", + "hqd_delicate": "Délicats 50'", "hqd_delicate_cradle": "Délicats", "hqd_dry": "Séchage du coton", "hqd_dry_synthetics": "Séchage des tissus mélangés", "hqd_duvet": "Couette", "hqd_eco_40_60_degrees": "Éco 40-60", - "hqd_handwash_wool": "Laine", + "hqd_handwash_wool": "Laine 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Tissus mélangés", "hqd_quick_15": "Rapide 15'", @@ -1360,7 +1395,7 @@ "hqd_shirts": "Chemises", "hqd_smart": "Smart A.I.", "hqd_spin": "Essorage", - "hqd_sport": "Sport", + "hqd_sport": "Sport 25'", "hqd_super_fast": "Rapide 39’", "hqd_synthetic_and_coloured": "Synthétiques", "hygiene_59": "Hygiene Plus 59'", @@ -1371,8 +1406,8 @@ "hygiene_pro_steam": "Hygiene Pro + Vapeur", "intensive_40": "Intensif 40°C", "intensive_40_steam": "Intensif 40°C + Vapeur", - "iot_active_steam": "Vapeur d'eau", - "iot_active_wash_steam": "Lavage actif", + "iot_active_steam": "Vapeur d'eau 29'", + "iot_active_wash_steam": "Lavage actif 20' + vapeur", "iot_allergy_care_pro": "Soin Allergie Pro", "iot_all_in_one_59_steam": "Tout-en-un 59' + vapeur", "iot_checkup": "Vérification", @@ -1407,17 +1442,18 @@ "iot_dry_technical_fabrics": "Tissus techniques", "iot_dry_warm_embrace": "Étreinte chaude", "iot_dry_wool_dry": "Séchage de la laine", - "iot_easy_iron": "Repassage facile", + "iot_easy_iron": "Repassage facile 39'", "iot_fresh_care_steam": "Fresh Care + vapeur", "iot_hygiene_pro_steam": "Hygiene Pro + Vapeur", "iot_intensive_40_steam": "Intensif 40°C + Vapeur", + "iot_jeans_60_steam": "Jeans + vapeur", "iot_mixed_steam": "Tissus mélangés + Vapeur d'eau", "iot_mix_and_colour_59_steam": "Mixtes et couleurs 59’ + vapeur", "iot_perfect_cotton_59_steam": "Coton Parfait 59'", "iot_rapid_a_class_60_steam": "Classe A rapide 60 + Vapeur", "iot_resistant_cotton_steam": "Coton + Vapeur d'eau", "iot_shirts_steam": "Chemises + Vapeur", - "iot_single_item_steam": "Article unique + vapeur", + "iot_single_item_steam": "Article unique 20' + vapeur", "iot_smart_wash": "Lavage intelligent", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Spécial 39’ + vapeur", @@ -1451,7 +1487,7 @@ "iot_wash_coloured_bed_linen": "Draps de couleur", "iot_wash_coloured_bed_linen_steam": "Draps de couleur + Vapeur", "iot_wash_coloured_curtains": "Rideaux de couleur", - "iot_wash_coloured_shirts": "T-shirts de couleur", + "iot_wash_coloured_shirts": "T-shirts de couleur 59'", "iot_wash_coloured_shirts_steam": "Chemises colorées + Vapeur", "iot_wash_coloured_steam": "Couleurs + Vapeur d'eau", "iot_wash_coloured_tableclothes": "Nappes de couleur", @@ -1488,7 +1524,7 @@ "iot_wash_down_jackets_zelig": "Vestes en duvet", "iot_wash_duvet": "Couette", "iot_wash_fruit_stains": "Taches de fruits", - "iot_wash_gym_fit": "Gym - vêtements de fitness", + "iot_wash_gym_fit": "Gym - vêtements de fitness 59'", "iot_wash_handwash": "Lavage à la main", "iot_wash_handwash_colored": "Lavage à la main des colorés", "iot_wash_handwash_dark": "Lavage à la main des foncés", @@ -1551,6 +1587,7 @@ "iot_wash_wool": "Laine", "jeans": "Jeans", "jeans_60": "Jeans", + "jeans_60_steam": "Jeans + vapeur", "low_dry": "Séchage des tissus mélangés", "mixed": "Tissus mélangés", "mixed_and_colored_59": "Tissus mélangés et couleurs 59'", @@ -1574,7 +1611,7 @@ "rinse": "Rinçage", "shirts_steam": "Chemises + Vapeur", "silent_night": "Cycle de nuit", - "single_item": "Élément unique", + "single_item": "Élément unique 20'", "single_item_steam": "Article unique + vapeur", "smart_wash": "Lavage intelligent", "soft_care": "Soin Doux", @@ -1590,8 +1627,8 @@ "steam_39": "Vapeur 39'", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - Coton", - "steam_care_pro_delicates": "Steam Care Pro - Délicats", - "steam_care_pro_synthetic": "Steam Care Pro - Synthétiques", + "steam_care_pro_delicates": "Steam Care Pro - Délicats 16'", + "steam_care_pro_synthetic": "Steam Care Pro - Synthétiques 20'", "steam_hygiene_plus": "Vapeur Hygiène Plus", "synthetics": "Synthétiques", "synthetic_and_coloured": "Synthétiques et couleurs", @@ -1603,7 +1640,7 @@ "wool": "Laine", "wool_and_delicates_49": "Laine/Délicat 49'", "wool_dry": "Séchage de la laine", - "wool_soft_care": "Laine & Soin Doux" + "wool_soft_care": "Laine & Soin Doux 48'" }, "name": "Programme" }, @@ -1613,19 +1650,24 @@ "cheese": "Fromage", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Mode Eco", + "fruits": "Fruits", "fruits_and_veg": "Fruit&Veg", "fruit_and_veg": "Fruit & Veg", "holiday": "HOLIDAY", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Aucun mode sélectionné", "quick_cool": "QUICK COOL", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Programme" diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index 982c3c4..daa53fb 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -78,6 +78,7 @@ }, "programs_dw": { "state": { + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "iot_checkup": "בְּדִיקָה", "iot_dreft_quick_cycle": "Dreft Quick", @@ -85,7 +86,8 @@ "iot_jar_quick_cycle": "Jar Quick", "iot_yes_quick_cycle": "Yes Quick", "smart_ai": "Smart AI", - "smart_ai_soil": "Smart AI" + "smart_ai_soil": "Smart AI", + "zone_wash": "Flex Zone Wash" }, "name": "Program" }, @@ -110,7 +112,6 @@ "hqd_bulky": "Bulky", "hqd_cold_wind_30": "Cold wind 30 minutes", "hqd_cold_wind_timing": "Cold wind", - "hqd_hot_wind_timing": "Hot wind", "hqd_luxury": "Luxury", "hqd_night_dry": "Night dry", "hqd_refresh": "Refresh", @@ -124,9 +125,6 @@ "programs_wm": { "state": { "20_degrees_new_energy_label": "20 מעלות צלזיוס", - "active_steam": "קִיטוֹר", - "active_wash": "שטיפה פעילה", - "active_wash_steam": "שטיפה פעילה", "allergy_care": "טיפול באלרגיה", "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "All in One 49 '", @@ -146,20 +144,15 @@ "delicati_59": "DELICATI_59", "delicati_59_steam": "DELICATI_59", "drain_spin": "ניקוז + סיבוב", - "easy_iron": "גיהוץ קל", "eco_40_60_new_energy_label": "אקו 40-60", "extra_care": "אכפתיות מוגברת", "fitness": "טיפול בכושר", "fitness_care": "טיפול בכושר", - "fresh_care": "טיפול טרי", "fresh_care_steam": "טיפול טרי", - "handwash_wool": "שטיפת ידיים + צמר", "high_dry": "יבש בחום גבוה", "hqd_dry_synthetics": "יבש בחום נמוך", "hygiene_60": "היגיינה 60 מעלות צלזיוס", "intensive_40": "40°C אינטנסיביים", - "iot_active_steam": "קִיטוֹר", - "iot_active_wash_steam": "שטיפה פעילה", "iot_allergy_care_pro": "Allergy Care Pro", "iot_all_in_one_59_steam": "All in One 59 '", "iot_checkup": "בְּדִיקָה", @@ -191,7 +184,6 @@ "iot_dry_technical_fabrics": "בדים טכניים", "iot_dry_warm_embrace": "חיבוק חם", "iot_dry_wool_dry": "צמר יבש", - "iot_easy_iron": "גיהוץ קל", "iot_fresh_care_steam": "טיפול טרי", "iot_synthetic_and_coloured_steam": "סינטטי וצבעוני", "iot_wash_anti_mites": "נגד קרדית", @@ -237,7 +229,6 @@ "iot_wash_down_jackets": "מעילי פוך", "iot_wash_down_jackets_zelig": "מעילי פוך", "iot_wash_fruit_stains": "כתמי פרי", - "iot_wash_gym_fit": "כושר כושר - כושר", "iot_wash_handwash": "שטיפת ידיים", "iot_wash_handwash_colored": "שטיפת ידיים בצבע", "iot_wash_handwash_dark": "שטיפת ידיים כהה", @@ -303,8 +294,6 @@ "steam_39": "קיטור 39 '", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro", - "steam_care_pro_delicates": "Steam Care Pro", - "steam_care_pro_synthetic": "Steam Care Pro", "synthetics": "סינתטיים", "synthetic_and_coloured": "סינטטי וצבעוני", "synthetic_and_coloured_steam": "סינטטי וצבעוני", @@ -313,8 +302,7 @@ "total_care": "טיפול טוטאלי", "tumbling": "נופלים", "wool_and_delicates_49": "Wool/Delicates 49'", - "wool_dry": "צמר יבש", - "wool_soft_care": "Wool & Soft Care" + "wool_dry": "צמר יבש" }, "name": "Program" }, @@ -322,11 +310,16 @@ "state": { "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", + "fruits": "Fruits", "fruit_and_veg": "Fruit & Veg", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", - "tea": "Cold drinks or Beverages" + "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables" }, "name": "Program" }, @@ -499,6 +492,7 @@ }, "programs_dw": { "state": { + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "iot_checkup": "בְּדִיקָה", "iot_dreft_quick_cycle": "Dreft Quick", @@ -506,7 +500,8 @@ "iot_jar_quick_cycle": "Jar Quick", "iot_yes_quick_cycle": "Yes Quick", "smart_ai": "Smart AI", - "smart_ai_soil": "Smart AI" + "smart_ai_soil": "Smart AI", + "zone_wash": "Flex Zone Wash" }, "name": "Program" }, @@ -531,7 +526,6 @@ "hqd_bulky": "Bulky", "hqd_cold_wind_30": "Cold wind 30 minutes", "hqd_cold_wind_timing": "Cold wind", - "hqd_hot_wind_timing": "Hot wind", "hqd_luxury": "Luxury", "hqd_night_dry": "Night dry", "hqd_refresh": "Refresh", @@ -545,9 +539,6 @@ "programs_wm": { "state": { "20_degrees_new_energy_label": "20 מעלות צלזיוס", - "active_steam": "קִיטוֹר", - "active_wash": "שטיפה פעילה", - "active_wash_steam": "שטיפה פעילה", "allergy_care": "טיפול באלרגיה", "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "All in One 49 '", @@ -567,20 +558,15 @@ "delicati_59": "DELICATI_59", "delicati_59_steam": "DELICATI_59", "drain_spin": "ניקוז + סיבוב", - "easy_iron": "גיהוץ קל", "eco_40_60_new_energy_label": "אקו 40-60", "extra_care": "אכפתיות מוגברת", "fitness": "טיפול בכושר", "fitness_care": "טיפול בכושר", - "fresh_care": "טיפול טרי", "fresh_care_steam": "טיפול טרי", - "handwash_wool": "שטיפת ידיים + צמר", "high_dry": "יבש בחום גבוה", "hqd_dry_synthetics": "יבש בחום נמוך", "hygiene_60": "היגיינה 60 מעלות צלזיוס", "intensive_40": "40°C אינטנסיביים", - "iot_active_steam": "קִיטוֹר", - "iot_active_wash_steam": "שטיפה פעילה", "iot_allergy_care_pro": "Allergy Care Pro", "iot_all_in_one_59_steam": "All in One 59 '", "iot_checkup": "בְּדִיקָה", @@ -612,7 +598,6 @@ "iot_dry_technical_fabrics": "בדים טכניים", "iot_dry_warm_embrace": "חיבוק חם", "iot_dry_wool_dry": "צמר יבש", - "iot_easy_iron": "גיהוץ קל", "iot_fresh_care_steam": "טיפול טרי", "iot_synthetic_and_coloured_steam": "סינטטי וצבעוני", "iot_wash_anti_mites": "נגד קרדית", @@ -658,7 +643,6 @@ "iot_wash_down_jackets": "מעילי פוך", "iot_wash_down_jackets_zelig": "מעילי פוך", "iot_wash_fruit_stains": "כתמי פרי", - "iot_wash_gym_fit": "כושר כושר - כושר", "iot_wash_handwash": "שטיפת ידיים", "iot_wash_handwash_colored": "שטיפת ידיים בצבע", "iot_wash_handwash_dark": "שטיפת ידיים כהה", @@ -724,8 +708,6 @@ "steam_39": "קיטור 39 '", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro", - "steam_care_pro_delicates": "Steam Care Pro", - "steam_care_pro_synthetic": "Steam Care Pro", "synthetics": "סינתטיים", "synthetic_and_coloured": "סינטטי וצבעוני", "synthetic_and_coloured_steam": "סינטטי וצבעוני", @@ -734,8 +716,7 @@ "total_care": "טיפול טוטאלי", "tumbling": "נופלים", "wool_and_delicates_49": "Wool/Delicates 49'", - "wool_dry": "צמר יבש", - "wool_soft_care": "Wool & Soft Care" + "wool_dry": "צמר יבש" }, "name": "Program" }, @@ -743,11 +724,16 @@ "state": { "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", + "fruits": "Fruits", "fruit_and_veg": "Fruit & Veg", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", - "tea": "Cold drinks or Beverages" + "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables" }, "name": "Program" }, diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index 1e6df12..63daa8e 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -99,22 +99,25 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Automatska Higijena", "auto_plus": "AutoPlus", + "auto_plus_soil": "Automatski plus prljavo", "auto_rapid": "Automatski Brzi", + "auto_rapid_soil": "Brzo automatski i prljavo", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Automatski univerzalni 50 - 60°C", - "auto_universal_plus": "Automatski univerzalni+ 65 - 75°C", - "auto_universal_plus_soil": "Automatski univerzalni+ 65 - 75°C", - "auto_universal_soil": "Automatski univerzalni 50 - 60°C", + "auto_universal": "Automatski univerzalni 50-60°C", + "auto_universal_plus": "Automatski univerzalni+ 65-75°C", + "auto_universal_plus_soil": "Automatski univerzalni+ 65-75°C", + "auto_universal_soil": "Automatski univerzalni 50-60°C", "auto_wash": "Automatsko pranje", "auto_wash_soil": "Automatsko pranje", "classe_a_59": "A klasa 59' 65°C", "delicate": "Osjetljivo 45°C", "dishwasher_care": "Ciklus čišćenja kamenca", - "eco": "Ekološki", + "eco": "Eco 45°C", "eco_asynch": "Eco 45°C", "eco_bldc": "Eco 45°C", "eco_synch": "Eco 45°C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "Staklo", "glassware": "Glassware (Stakleno posuđe) 45 °C", @@ -123,8 +126,9 @@ "hygiene_plus": "Hygiene+ (Higijena+) 75 °C", "intensive": "Intenzivno", "intensive_rapid": "Snažan i brz", + "intensive_voice": "Intenzivno", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Automatski univerzalni 50 - 60°C", + "iot_auto_universal_soil": "Automatski univerzalni 50-60°C", "iot_auto_wash_soil": "Automatsko pranje", "iot_baby_care": "Baby Care", "iot_breakfast": "Doručak", @@ -164,6 +168,13 @@ "iot_super_wash": "Super Wash", "iot_turbopower": "TurboPower", "iot_universal": "Universal (Univerzalni) 60 °C", + "iot_voice_automatic": "Automatic", + "iot_voice_delicate": "Osjetljivo 45°C", + "iot_voice_eco": "Eco 45°C", + "iot_voice_intensive": "Intenzivno 75°C", + "iot_voice_prewash": "Pretpranje", + "iot_voice_rapid_59": "Brzi 59'", + "iot_voice_universal": "Universal (Univerzalni) 60 °C", "iot_wok_grids_maxi_pans": "Posebne tave (Wok - rešetke & Maxi tave)", "iot_wok_grids_maxi_pans_soil": "Posebne tave (Wok - rešetke & Maxi tave)", "iot_yes_quick_cycle": "Yes Quick", @@ -195,6 +206,7 @@ "ultra_silent": "Ultra tihi 55°C", "universal": "Universal (Univerzalni) 60 °C", "universal_plus": "Universal Plus (Univerzalni plus) 70 °C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "Program" @@ -328,14 +340,14 @@ "hqd_bulky": "Glomazni komadi", "hqd_casual": "Opušteno", "hqd_cold_wind_30": "Hladni zrak, 30 minuta", - "hqd_cold_wind_timing": "Hladni zrak", + "hqd_cold_wind_timing": "Hladan zrak", "hqd_cotton": "Pamuk", "hqd_curtain": "Zavjese", "hqd_delicate": "Osjetljivo rublje", "hqd_diaper": "Pelene", - "hqd_duvet": "Poplun", - "hqd_feather": "Jakne punjene paperjem", - "hqd_hot_wind_timing": "Vrući zrak", + "hqd_duvet": "Prošivena jakna od sintetičkih vlakana", + "hqd_feather": "Prošivena jakna od prirodnih vlakana", + "hqd_hot_wind_timing": "Zagrijavanje", "hqd_hygienic": "Higijenizacija", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -348,7 +360,7 @@ "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Brzo 20", "hqd_quick_30": "Brzo 30", - "hqd_quick_dry": "Brzo sušenje 30'", + "hqd_quick_dry": "Brzo automatsko sušenje 30'", "hqd_quilt": "Popluni", "hqd_refresh": "Protiv neugodnih mirisa", "hqd_school_uniform": "Školska uniforma", @@ -385,6 +397,8 @@ "iot_dry_gym_fit": "Fitness odjeća", "iot_dry_lingerie": "Donje rublje", "iot_dry_mixed": "Miješane tkanine", + "iot_dry_pet_accessories": "Pribor za ljubimce", + "iot_dry_pet_hair_removal": "Uklanjanje dlaka kućnih ljubimaca (pretpranje)", "iot_dry_playsuits": "Kombinezoni", "iot_dry_rapid_30": "Rapid 30", "iot_dry_rapid_59": "Brzi program 59’.", @@ -436,9 +450,9 @@ "state": { "20_degrees_coloured_cottons": "20° šareno i pamučno rublje", "20_degrees_new_energy_label": "20°C", - "active_steam": "Para", - "active_wash": "Aktivno pranje", - "active_wash_steam": "Aktivno pranje", + "active_steam": "Para 29'", + "active_wash": "Aktivno pranje 20'", + "active_wash_steam": "Aktivno pranje 20' + para", "allergy_care": "Alergijska njega", "allergy_care_pro": "Alergijska njega Pro", "all_in_one_49": "Sve u jednom 49’.", @@ -458,19 +472,19 @@ "cottons_steam": "Pamuk + Para", "cotton_care_59": "Pamuk 59 Min", "delicate_59": "Osjetljivo rublje 59’", - "delicate_silk": "Osjetljiva svila", + "delicate_silk": "Osjetljiva svila 59'", "delicate_silk_steam": "Osjetljiva svila + para", "delicati_59": "Osjetljivo rublje 59’", "delicati_59_steam": "Osjetljivo rublje 59’", "drain_spin": "Ispiranje i centrifuga", - "easy_iron": "Easy Iron - lakše glačanje", + "easy_iron": "Easy Iron - lakše glačanje 39'", "eco_40_60_new_energy_label": "Eco 40-60", "extra_care": "Dodatna Njega", "fitness": "Fitness Care", "fitness_care": "Fitness Care", - "fresh_care": "Fresh Care", + "fresh_care": "Fresh Care 59'", "fresh_care_steam": "Svježa njega + para", - "handwash_wool": "Ručno pranje i vuna", + "handwash_wool": "Ručno pranje i vuna 48'", "high_dry": "Suhi pamuk", "hqd_20_degrees": "Pamuk 20 ℃", "hqd_allergy": "Alergijska njega", @@ -478,13 +492,13 @@ "hqd_babycare": "Baby Care", "hqd_checkup": "Kontrolni pregled", "hqd_cottons": "Pamuk", - "hqd_delicate": "Osjetljivo rublje", + "hqd_delicate": "Osjetljivo rublje 50'", "hqd_delicate_cradle": "Osjetljivo rublje", "hqd_dry": "Suhi pamuk", "hqd_dry_synthetics": "Suha miješana odjeća", "hqd_duvet": "Popluni", "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_handwash_wool": "Vuna", + "hqd_handwash_wool": "Vuna 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Miješano rublje", "hqd_quick_15": "Brzi program 15'", @@ -495,7 +509,7 @@ "hqd_shirts": "Košulje", "hqd_smart": "Smart A.I.", "hqd_spin": "Okretaj", - "hqd_sport": "Sportska odjeća", + "hqd_sport": "Sportska odjeća 25'", "hqd_super_fast": "Brzi program 39’", "hqd_synthetic_and_coloured": "Sintetika", "hygiene_59": "Hygijenski Plus 59'", @@ -506,8 +520,8 @@ "hygiene_pro_steam": "Hygiene Pro + para", "intensive_40": "Intenzivno 40°C", "intensive_40_steam": "Intenzivno 40°C + para", - "iot_active_steam": "Para", - "iot_active_wash_steam": "Aktivno pranje", + "iot_active_steam": "Para 29'", + "iot_active_wash_steam": "Aktivno pranje 20' + para", "iot_allergy_care_pro": "Alergijska njega Pro", "iot_all_in_one_59_steam": "Sve u jednom 59’ + para", "iot_checkup": "Kontrolni pregled", @@ -542,17 +556,18 @@ "iot_dry_technical_fabrics": "Tehničke tkanine", "iot_dry_warm_embrace": "Toplo sušenje", "iot_dry_wool_dry": "Vuna, suho", - "iot_easy_iron": "Easy Iron - lakše glačanje", + "iot_easy_iron": "Easy Iron - lakše glačanje 39'", "iot_fresh_care_steam": "Svježa njega + para", "iot_hygiene_pro_steam": "Hygiene Pro + para", "iot_intensive_40_steam": "Intenzivno 40°C + para", + "iot_jeans_60_steam": "Jeans + para", "iot_mixed_steam": "Miješane tkanine + Para", "iot_mix_and_colour_59_steam": "Mješovite i obojene tkanine 59' + para", "iot_perfect_cotton_59_steam": "Pamuk Brzi 59'", "iot_rapid_a_class_60_steam": "Brza klasa A 60 + para", "iot_resistant_cotton_steam": "Pamuk + Para", "iot_shirts_steam": "Košulje + para", - "iot_single_item_steam": "Pojedinačna stavka + para", + "iot_single_item_steam": "Pojedinačna stavka 20' + para", "iot_smart_wash": "Pametno pranje", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Posebna 39' + para", @@ -586,7 +601,7 @@ "iot_wash_coloured_bed_linen": "Posteljina u boji", "iot_wash_coloured_bed_linen_steam": "Posteljina u boji + para", "iot_wash_coloured_curtains": "Šarene zavjese", - "iot_wash_coloured_shirts": "Šarene košulje", + "iot_wash_coloured_shirts": "Šarene košulje 59'", "iot_wash_coloured_shirts_steam": "Košulje u boji + para", "iot_wash_coloured_steam": "Boje + Para", "iot_wash_coloured_tableclothes": "Šareni stolnjaci", @@ -623,7 +638,7 @@ "iot_wash_down_jackets_zelig": "Jakne punjene paperjem", "iot_wash_duvet": "Popluni", "iot_wash_fruit_stains": "Mrlje od voća", - "iot_wash_gym_fit": "Odjeća za teretanu – fitness", + "iot_wash_gym_fit": "Odjeća za teretanu – fitness 59'", "iot_wash_handwash": "Ručno pranje", "iot_wash_handwash_colored": "Ručno pranje obojenog rublja", "iot_wash_handwash_dark": "Ručno pranje tamnog rublja", @@ -686,6 +701,7 @@ "iot_wash_wool": "Vuna", "jeans": "Traperice", "jeans_60": "Traper", + "jeans_60_steam": "Jeans + para", "low_dry": "Suha miješana odjeća", "mixed": "Miješane tkanine", "mixed_and_colored_59": "Miješana i šarena odjeća 59’", @@ -709,7 +725,7 @@ "rinse": "Ispiranje", "shirts_steam": "Košulje + para", "silent_night": "Ciklus preko noći", - "single_item": "Pojedinačna stavka", + "single_item": "Pojedinačna stavka 20'", "single_item_steam": "Pojedinačna stavka + para", "smart_wash": "Pametno pranje", "soft_care": "Mekana njega", @@ -725,8 +741,8 @@ "steam_39": "Para 39’", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - pamuk", - "steam_care_pro_delicates": "Steam Care Pro - osjetljivo", - "steam_care_pro_synthetic": "Steam Care Pro - sintetika", + "steam_care_pro_delicates": "Steam Care Pro - osjetljivo 16'", + "steam_care_pro_synthetic": "Steam Care Pro - sintetika 20'", "steam_hygiene_plus": "Hygiene Plus Steam", "synthetics": "Sintetika", "synthetic_and_coloured": "Sintetika i šareno rublje", @@ -738,7 +754,7 @@ "wool": "Vuna", "wool_and_delicates_49": "Vuna/Osjetljivo 49'", "wool_dry": "Suha vuna", - "wool_soft_care": "Vuna & Mekana Njega" + "wool_soft_care": "Vuna & Mekana Njega 48'" }, "name": "Program" }, @@ -748,19 +764,24 @@ "cheese": "Sir", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Način rada Eco", + "fruits": "Fruits", "fruits_and_veg": "Voće i Povrće", "fruit_and_veg": "Fruit & Veg", "holiday": "ODMOR", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Nije odabran način rada", "quick_cool": "BRZO HLAĐENJE", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER HLAĐENJE", "super_freeze": "SUPER ZAMRZAVANJE", "tea": "Hladna pića i napitci", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Program" @@ -964,22 +985,25 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Automatska Higijena", "auto_plus": "AutoPlus", + "auto_plus_soil": "Automatski plus prljavo", "auto_rapid": "Automatski Brzi", + "auto_rapid_soil": "Brzo automatski i prljavo", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Automatski univerzalni 50 - 60°C", - "auto_universal_plus": "Automatski univerzalni+ 65 - 75°C", - "auto_universal_plus_soil": "Automatski univerzalni+ 65 - 75°C", - "auto_universal_soil": "Automatski univerzalni 50 - 60°C", + "auto_universal": "Automatski univerzalni 50-60°C", + "auto_universal_plus": "Automatski univerzalni+ 65-75°C", + "auto_universal_plus_soil": "Automatski univerzalni+ 65-75°C", + "auto_universal_soil": "Automatski univerzalni 50-60°C", "auto_wash": "Automatsko pranje", "auto_wash_soil": "Automatsko pranje", "classe_a_59": "A klasa 59' 65°C", "delicate": "Osjetljivo 45°C", "dishwasher_care": "Ciklus čišćenja kamenca", - "eco": "Ekološki", + "eco": "Eco 45°C", "eco_asynch": "Eco 45°C", "eco_bldc": "Eco 45°C", "eco_synch": "Eco 45°C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "Staklo", "glassware": "Glassware (Stakleno posuđe) 45 °C", @@ -988,8 +1012,9 @@ "hygiene_plus": "Hygiene+ (Higijena+) 75 °C", "intensive": "Intenzivno", "intensive_rapid": "Snažan i brz", + "intensive_voice": "Intenzivno", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Automatski univerzalni 50 - 60°C", + "iot_auto_universal_soil": "Automatski univerzalni 50-60°C", "iot_auto_wash_soil": "Automatsko pranje", "iot_baby_care": "Baby Care", "iot_breakfast": "Doručak", @@ -1029,6 +1054,13 @@ "iot_super_wash": "Super Wash", "iot_turbopower": "TurboPower", "iot_universal": "Universal (Univerzalni) 60 °C", + "iot_voice_automatic": "Automatic", + "iot_voice_delicate": "Osjetljivo 45°C", + "iot_voice_eco": "Eco 45°C", + "iot_voice_intensive": "Intenzivno 75°C", + "iot_voice_prewash": "Pretpranje", + "iot_voice_rapid_59": "Brzi 59'", + "iot_voice_universal": "Universal (Univerzalni) 60 °C", "iot_wok_grids_maxi_pans": "Posebne tave (Wok - rešetke & Maxi tave)", "iot_wok_grids_maxi_pans_soil": "Posebne tave (Wok - rešetke & Maxi tave)", "iot_yes_quick_cycle": "Yes Quick", @@ -1060,6 +1092,7 @@ "ultra_silent": "Ultra tihi 55°C", "universal": "Universal (Univerzalni) 60 °C", "universal_plus": "Universal Plus (Univerzalni plus) 70 °C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "Program" @@ -1193,14 +1226,14 @@ "hqd_bulky": "Glomazni komadi", "hqd_casual": "Opušteno", "hqd_cold_wind_30": "Hladni zrak, 30 minuta", - "hqd_cold_wind_timing": "Hladni zrak", + "hqd_cold_wind_timing": "Hladan zrak", "hqd_cotton": "Pamuk", "hqd_curtain": "Zavjese", "hqd_delicate": "Osjetljivo rublje", "hqd_diaper": "Pelene", - "hqd_duvet": "Poplun", - "hqd_feather": "Jakne punjene paperjem", - "hqd_hot_wind_timing": "Vrući zrak", + "hqd_duvet": "Prošivena jakna od sintetičkih vlakana", + "hqd_feather": "Prošivena jakna od prirodnih vlakana", + "hqd_hot_wind_timing": "Zagrijavanje", "hqd_hygienic": "Higijenizacija", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -1213,7 +1246,7 @@ "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Brzo 20", "hqd_quick_30": "Brzo 30", - "hqd_quick_dry": "Brzo sušenje 30'", + "hqd_quick_dry": "Brzo automatsko sušenje 30'", "hqd_quilt": "Popluni", "hqd_refresh": "Protiv neugodnih mirisa", "hqd_school_uniform": "Školska uniforma", @@ -1250,6 +1283,8 @@ "iot_dry_gym_fit": "Fitness odjeća", "iot_dry_lingerie": "Donje rublje", "iot_dry_mixed": "Miješane tkanine", + "iot_dry_pet_accessories": "Pribor za ljubimce", + "iot_dry_pet_hair_removal": "Uklanjanje dlaka kućnih ljubimaca (pretpranje)", "iot_dry_playsuits": "Kombinezoni", "iot_dry_rapid_30": "Rapid 30", "iot_dry_rapid_59": "Brzi program 59’.", @@ -1301,9 +1336,9 @@ "state": { "20_degrees_coloured_cottons": "20° šareno i pamučno rublje", "20_degrees_new_energy_label": "20°C", - "active_steam": "Para", - "active_wash": "Aktivno pranje", - "active_wash_steam": "Aktivno pranje", + "active_steam": "Para 29'", + "active_wash": "Aktivno pranje 20'", + "active_wash_steam": "Aktivno pranje 20' + para", "allergy_care": "Alergijska njega", "allergy_care_pro": "Alergijska njega Pro", "all_in_one_49": "Sve u jednom 49’.", @@ -1323,19 +1358,19 @@ "cottons_steam": "Pamuk + Para", "cotton_care_59": "Pamuk 59 Min", "delicate_59": "Osjetljivo rublje 59’", - "delicate_silk": "Osjetljiva svila", + "delicate_silk": "Osjetljiva svila 59'", "delicate_silk_steam": "Osjetljiva svila + para", "delicati_59": "Osjetljivo rublje 59’", "delicati_59_steam": "Osjetljivo rublje 59’", "drain_spin": "Ispiranje i centrifuga", - "easy_iron": "Easy Iron - lakše glačanje", + "easy_iron": "Easy Iron - lakše glačanje 39'", "eco_40_60_new_energy_label": "Eco 40-60", "extra_care": "Dodatna Njega", "fitness": "Fitness Care", "fitness_care": "Fitness Care", - "fresh_care": "Fresh Care", + "fresh_care": "Fresh Care 59'", "fresh_care_steam": "Svježa njega + para", - "handwash_wool": "Ručno pranje i vuna", + "handwash_wool": "Ručno pranje i vuna 48'", "high_dry": "Suhi pamuk", "hqd_20_degrees": "Pamuk 20 ℃", "hqd_allergy": "Alergijska njega", @@ -1343,13 +1378,13 @@ "hqd_babycare": "Baby Care", "hqd_checkup": "Kontrolni pregled", "hqd_cottons": "Pamuk", - "hqd_delicate": "Osjetljivo rublje", + "hqd_delicate": "Osjetljivo rublje 50'", "hqd_delicate_cradle": "Osjetljivo rublje", "hqd_dry": "Suhi pamuk", "hqd_dry_synthetics": "Suha miješana odjeća", "hqd_duvet": "Popluni", "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_handwash_wool": "Vuna", + "hqd_handwash_wool": "Vuna 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Miješano rublje", "hqd_quick_15": "Brzi program 15'", @@ -1360,7 +1395,7 @@ "hqd_shirts": "Košulje", "hqd_smart": "Smart A.I.", "hqd_spin": "Okretaj", - "hqd_sport": "Sportska odjeća", + "hqd_sport": "Sportska odjeća 25'", "hqd_super_fast": "Brzi program 39’", "hqd_synthetic_and_coloured": "Sintetika", "hygiene_59": "Hygijenski Plus 59'", @@ -1371,8 +1406,8 @@ "hygiene_pro_steam": "Hygiene Pro + para", "intensive_40": "Intenzivno 40°C", "intensive_40_steam": "Intenzivno 40°C + para", - "iot_active_steam": "Para", - "iot_active_wash_steam": "Aktivno pranje", + "iot_active_steam": "Para 29'", + "iot_active_wash_steam": "Aktivno pranje 20' + para", "iot_allergy_care_pro": "Alergijska njega Pro", "iot_all_in_one_59_steam": "Sve u jednom 59’ + para", "iot_checkup": "Kontrolni pregled", @@ -1407,17 +1442,18 @@ "iot_dry_technical_fabrics": "Tehničke tkanine", "iot_dry_warm_embrace": "Toplo sušenje", "iot_dry_wool_dry": "Vuna, suho", - "iot_easy_iron": "Easy Iron - lakše glačanje", + "iot_easy_iron": "Easy Iron - lakše glačanje 39'", "iot_fresh_care_steam": "Svježa njega + para", "iot_hygiene_pro_steam": "Hygiene Pro + para", "iot_intensive_40_steam": "Intenzivno 40°C + para", + "iot_jeans_60_steam": "Jeans + para", "iot_mixed_steam": "Miješane tkanine + Para", "iot_mix_and_colour_59_steam": "Mješovite i obojene tkanine 59' + para", "iot_perfect_cotton_59_steam": "Pamuk Brzi 59'", "iot_rapid_a_class_60_steam": "Brza klasa A 60 + para", "iot_resistant_cotton_steam": "Pamuk + Para", "iot_shirts_steam": "Košulje + para", - "iot_single_item_steam": "Pojedinačna stavka + para", + "iot_single_item_steam": "Pojedinačna stavka 20' + para", "iot_smart_wash": "Pametno pranje", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Posebna 39' + para", @@ -1451,7 +1487,7 @@ "iot_wash_coloured_bed_linen": "Posteljina u boji", "iot_wash_coloured_bed_linen_steam": "Posteljina u boji + para", "iot_wash_coloured_curtains": "Šarene zavjese", - "iot_wash_coloured_shirts": "Šarene košulje", + "iot_wash_coloured_shirts": "Šarene košulje 59'", "iot_wash_coloured_shirts_steam": "Košulje u boji + para", "iot_wash_coloured_steam": "Boje + Para", "iot_wash_coloured_tableclothes": "Šareni stolnjaci", @@ -1488,7 +1524,7 @@ "iot_wash_down_jackets_zelig": "Jakne punjene paperjem", "iot_wash_duvet": "Popluni", "iot_wash_fruit_stains": "Mrlje od voća", - "iot_wash_gym_fit": "Odjeća za teretanu – fitness", + "iot_wash_gym_fit": "Odjeća za teretanu – fitness 59'", "iot_wash_handwash": "Ručno pranje", "iot_wash_handwash_colored": "Ručno pranje obojenog rublja", "iot_wash_handwash_dark": "Ručno pranje tamnog rublja", @@ -1551,6 +1587,7 @@ "iot_wash_wool": "Vuna", "jeans": "Traperice", "jeans_60": "Traper", + "jeans_60_steam": "Jeans + para", "low_dry": "Suha miješana odjeća", "mixed": "Miješane tkanine", "mixed_and_colored_59": "Miješana i šarena odjeća 59’", @@ -1574,7 +1611,7 @@ "rinse": "Ispiranje", "shirts_steam": "Košulje + para", "silent_night": "Ciklus preko noći", - "single_item": "Pojedinačna stavka", + "single_item": "Pojedinačna stavka 20'", "single_item_steam": "Pojedinačna stavka + para", "smart_wash": "Pametno pranje", "soft_care": "Mekana njega", @@ -1590,8 +1627,8 @@ "steam_39": "Para 39’", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - pamuk", - "steam_care_pro_delicates": "Steam Care Pro - osjetljivo", - "steam_care_pro_synthetic": "Steam Care Pro - sintetika", + "steam_care_pro_delicates": "Steam Care Pro - osjetljivo 16'", + "steam_care_pro_synthetic": "Steam Care Pro - sintetika 20'", "steam_hygiene_plus": "Hygiene Plus Steam", "synthetics": "Sintetika", "synthetic_and_coloured": "Sintetika i šareno rublje", @@ -1603,7 +1640,7 @@ "wool": "Vuna", "wool_and_delicates_49": "Vuna/Osjetljivo 49'", "wool_dry": "Suha vuna", - "wool_soft_care": "Vuna & Mekana Njega" + "wool_soft_care": "Vuna & Mekana Njega 48'" }, "name": "Program" }, @@ -1613,19 +1650,24 @@ "cheese": "Sir", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Način rada Eco", + "fruits": "Fruits", "fruits_and_veg": "Voće i Povrće", "fruit_and_veg": "Fruit & Veg", "holiday": "ODMOR", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Nije odabran način rada", "quick_cool": "BRZO HLAĐENJE", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER HLAĐENJE", "super_freeze": "SUPER ZAMRZAVANJE", "tea": "Hladna pića i napitci", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Program" diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index 8f91bae..ccee9f3 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -99,32 +99,36 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Auto Igiene", "auto_plus": "AutoPlus", + "auto_plus_soil": "Auto Plus Sporco", "auto_rapid": "Auto Rapido", + "auto_rapid_soil": "Auto Rapido Sporco", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Auto Universale 50 - 60°C", - "auto_universal_plus": "Auto Universale Plus 65 - 75°C", - "auto_universal_plus_soil": "Auto Universale Plus 65 - 75°C", - "auto_universal_soil": "Auto Universale 50 - 60°C", + "auto_universal": "Auto Universale 50-60°C", + "auto_universal_plus": "Auto Universale Plus 65-75°C", + "auto_universal_plus_soil": "Auto Universale Plus 65-75°C", + "auto_universal_soil": "Auto Universale 50-60°C", "auto_wash": "Auto Wash", "auto_wash_soil": "Auto Wash", "classe_a_59": "Classe A 59' 65°C", "delicate": "Delicato 45°C", "dishwasher_care": "Ciclo anticalcare", - "eco": "Eco", + "eco": "Eco 45°C", "eco_asynch": "Eco 45°C", "eco_bldc": "Eco 45°C", "eco_synch": "Eco 45°C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "Calici", "glassware": "Cristalli 45°C", "glass_care": "Glass Care", "hygiene": "Igiene", - "hygiene_plus": "Igiene 75°C", + "hygiene_plus": "Igiene Plus 75°C", "intensive": "Intensivo", "intensive_rapid": "Forte Veloce", + "intensive_voice": "Intensivo", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Auto Universale 50 - 60°C", + "iot_auto_universal_soil": "Auto Universale 50-60°C", "iot_auto_wash_soil": "Auto Wash", "iot_baby_care": "Baby Care", "iot_breakfast": "Colazione", @@ -133,8 +137,8 @@ "iot_classe_a_59": "Rapido 59'", "iot_cocktail_glasses": "Cocktail Glasses", "iot_cocktail_glasses_soil": "Cocktail Glasses", - "iot_daily_care": "Quotidiano", - "iot_daily_care_soil": "Quotidiano", + "iot_daily_care": "Daily Care", + "iot_daily_care_soil": "Daily Care", "iot_delicate": "Delicato 45°C", "iot_dinner_for_two": "Cena di coppia", "iot_dinner_for_two_soil": "Cena di coppia", @@ -142,12 +146,13 @@ "iot_eco_asynch": "Eco 45°C", "iot_eco_bldc": "Eco 45°C", "iot_eco_synch": "Eco 45°C", - "iot_extra_hygiene": "Ciclo Vapore", + "iot_extra_hygiene": "Extra Hygiene", "iot_fairy_quick_cycle": "Fairy Rapido", "iot_happy_hour": "Happy Hour", "iot_jar_quick_cycle": "Jar Rapido", "iot_party": "Party", "iot_party_soil": "Party", + "iot_pet_bowls_toys": "Ciotole e Giochi Animali", "iot_pizza_menu": "Pizza Menu", "iot_pizza_menu_soil": "Pizza Menu", "iot_plastic_tupperware": "Plastiche & Tupperware", @@ -164,6 +169,13 @@ "iot_super_wash": "Super Wash", "iot_turbopower": "Turbo Power", "iot_universal": "Universale 60°C", + "iot_voice_automatic": "Automatico", + "iot_voice_delicate": "Delicato 45°C", + "iot_voice_eco": "Eco 45°C", + "iot_voice_intensive": "Intensivo 75°C", + "iot_voice_prewash": "Prelavaggio", + "iot_voice_rapid_59": "Rapido 59'", + "iot_voice_universal": "Universale 60°C", "iot_wok_grids_maxi_pans": "Maxi Stoviglie e Griglie", "iot_wok_grids_maxi_pans_soil": "Maxi Stoviglie e Griglie", "iot_yes_quick_cycle": "Yes Rapido", @@ -195,6 +207,7 @@ "ultra_silent": "Ultra Silenzioso 55°C", "universal": "Universale 60°C", "universal_plus": "Universale Plus 70°C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "Programma" @@ -328,14 +341,14 @@ "hqd_bulky": "Vestiti voluminosi", "hqd_casual": "Casual", "hqd_cold_wind_30": "Brezza rinfrescante 30m", - "hqd_cold_wind_timing": "Brezza rinfrescante", + "hqd_cold_wind_timing": "Aria Fredda", "hqd_cotton": "Cotone", "hqd_curtain": "Tende", "hqd_delicate": "Delicati", "hqd_diaper": "Pannolini", - "hqd_duvet": "Piumone", - "hqd_feather": "Piumini", - "hqd_hot_wind_timing": "Aria calda", + "hqd_duvet": "Piumini sintetici", + "hqd_feather": "Piumini fibra naturale", + "hqd_hot_wind_timing": "Caldo abbraccio", "hqd_hygienic": "Igienizzante", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -345,10 +358,10 @@ "hqd_mix": "Misti", "hqd_night_dry": "Asciugatura notturna", "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", + "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Rapido 20m", "hqd_quick_30": "Rapido 30'", - "hqd_quick_dry": "Asciugatura veloce 30'", + "hqd_quick_dry": "Asciugatura automatica rapida 30'", "hqd_quilt": "Trapunte", "hqd_refresh": "Refresh", "hqd_school_uniform": "Uniforme scolastica", @@ -378,13 +391,15 @@ "iot_dry_delicates": "Delicati", "iot_dry_delicate_tablecloths": "Tovaglie delicate", "iot_dry_denim_jeans": "Denim - jeans", - "iot_dry_down_jacket": "Giacche", + "iot_dry_down_jacket": "Asciugatura Giacche", "iot_dry_duvet": "Piumone", "iot_dry_easy_iron_cotton": "Stira facile", "iot_dry_easy_iron_synthetics": "Stira facile Sintetici", "iot_dry_gym_fit": "Gym fit - Fitness", "iot_dry_lingerie": "Lingerie", "iot_dry_mixed": "Misti", + "iot_dry_pet_accessories": "Accessori Animali", + "iot_dry_pet_hair_removal": "Rimozione Peli Animali (Pre-lavaggio)", "iot_dry_playsuits": "Tutine", "iot_dry_rapid_30": "Rapido 30'", "iot_dry_rapid_59": "Rapido 59'.", @@ -436,16 +451,16 @@ "state": { "20_degrees_coloured_cottons": "Cotone e Colorati 20°", "20_degrees_new_energy_label": "20°C", - "active_steam": "Vapore", - "active_wash": "Active Wash", - "active_wash_steam": "Active Wash + Vapore", + "active_steam": "Vapore 29'", + "active_wash": "Active Wash 20'", + "active_wash_steam": "Active Wash 20' + Vapore", "allergy_care": "Allergy Care", "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "All in One 49'", "all_in_one_59": "All in One 59'", "all_in_one_59_steam": "All in One 59' + Vapore", "autocare": "Autocare", - "autoclean": "Pulizia cesto e decalcifiazione", + "autoclean": "Pulizia cesto e decalcificazione", "baby_60": "Tutto Bebè 60°C", "care_14": "Rapid Care 14'", "care_30": "Rapid Care 30'", @@ -458,19 +473,19 @@ "cottons_steam": "Cotone + Vapore", "cotton_care_59": "Cotton Care 59'", "delicate_59": "Delicati 59'", - "delicate_silk": "Delicati e Seta", + "delicate_silk": "Delicati e Seta 59'", "delicate_silk_steam": "Delicati e Seta + Vapore", "delicati_59": "Delicati 59'", "delicati_59_steam": "Delicati 59' + Vapore", "drain_spin": "Scarico e Centrifuga", - "easy_iron": "Stiro Facile", + "easy_iron": "Stiro Facile 39'", "eco_40_60_new_energy_label": "Eco 40-60", "extra_care": "Extra Care", "fitness": "Fitness Care", "fitness_care": "Fitness Care", - "fresh_care": "Fresh Care", + "fresh_care": "Fresh Care 59'", "fresh_care_steam": "Fresh Care + Vapore", - "handwash_wool": "Mano e Lana", + "handwash_wool": "Mano e Lana 48'", "high_dry": "Asciugatura Cotone", "hqd_20_degrees": "Cotone 20°C", "hqd_allergy": "Allergy Care", @@ -478,13 +493,13 @@ "hqd_babycare": "Baby Care", "hqd_checkup": "Check-Up", "hqd_cottons": "Cotone", - "hqd_delicate": "Delicati", + "hqd_delicate": "Delicati 50'", "hqd_delicate_cradle": "Delicati", "hqd_dry": "Asciugatura Cotone", "hqd_dry_synthetics": "Asciugatura Misti", "hqd_duvet": "Piumone", "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_handwash_wool": "Lana", + "hqd_handwash_wool": "Lana 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Misti", "hqd_quick_15": "Express 15'", @@ -495,7 +510,7 @@ "hqd_shirts": "Camicie", "hqd_smart": "Smart A.I.", "hqd_spin": "Centrifuga", - "hqd_sport": "Sport", + "hqd_sport": "Sport 25'", "hqd_super_fast": "Rapido 39'", "hqd_synthetic_and_coloured": "Sintetici", "hygiene_59": "Igiene Plus 59'", @@ -506,8 +521,8 @@ "hygiene_pro_steam": "Hygiene Pro + Vapore", "intensive_40": "Intensivo 40°C", "intensive_40_steam": "Intensivo 40°C + Vapore", - "iot_active_steam": "Vapore", - "iot_active_wash_steam": "Active Wash + Vapore", + "iot_active_steam": "Vapore 29'", + "iot_active_wash_steam": "Active Wash 20' + Vapore", "iot_allergy_care_pro": "Allergy Care Pro", "iot_all_in_one_59_steam": "All in One 59' + Vapore", "iot_checkup": "Check-Up", @@ -542,17 +557,18 @@ "iot_dry_technical_fabrics": "Tessuti tecnici", "iot_dry_warm_embrace": "Caldo abbraccio", "iot_dry_wool_dry": "Asciugatura lana", - "iot_easy_iron": "Stiro Facile", + "iot_easy_iron": "Stiro Facile 39'", "iot_fresh_care_steam": "Fresh Care + Vapore", "iot_hygiene_pro_steam": "Hygiene Pro + Vapore", "iot_intensive_40_steam": "Intensivo 40°C + Vapore", + "iot_jeans_60_steam": "Jeans + Vapore", "iot_mixed_steam": "Misti + Vapore", "iot_mix_and_colour_59_steam": "Misti e Colorati 59' + Vapore ", "iot_perfect_cotton_59_steam": "Cotone Perfetto 59' + Vapore", "iot_rapid_a_class_60_steam": "Rapido 59' Classe A + Vapore", "iot_resistant_cotton_steam": "Cotone Resistente + Vapore", "iot_shirts_steam": "Camicie + Vapore", - "iot_single_item_steam": "Capo Singolo + Vapore", + "iot_single_item_steam": "Capo Singolo 20' + Vapore", "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Special 39' + Vapore", @@ -586,7 +602,7 @@ "iot_wash_coloured_bed_linen": "Lenzuola Colorate", "iot_wash_coloured_bed_linen_steam": "Lenzuola Colorate + Vapore", "iot_wash_coloured_curtains": "Tende Colorate", - "iot_wash_coloured_shirts": "Camicie Colorate", + "iot_wash_coloured_shirts": "Camicie Colorate 59'", "iot_wash_coloured_shirts_steam": "Camicie Colorate + Vapore", "iot_wash_coloured_steam": "Colorati + Vapore", "iot_wash_coloured_tableclothes": "Tovaglie Colorate", @@ -623,7 +639,7 @@ "iot_wash_down_jackets_zelig": "Piumini", "iot_wash_duvet": "Piumone", "iot_wash_fruit_stains": "Macchie di frutta", - "iot_wash_gym_fit": "Gym fit - Fitness", + "iot_wash_gym_fit": "Gym fit - Fitness 59'", "iot_wash_handwash": "Lavaggio a mano", "iot_wash_handwash_colored": "Lavaggio a mano Colorati", "iot_wash_handwash_dark": "Lavaggio a mano Scuri", @@ -686,6 +702,7 @@ "iot_wash_wool": "Lana", "jeans": "Jeans", "jeans_60": "Jeans", + "jeans_60_steam": "Jeans + Vapore", "low_dry": "Asciugatura Misti", "mixed": "Misti", "mixed_and_colored_59": "Misti e Colorati 59'", @@ -709,7 +726,7 @@ "rinse": "Risciacqui", "shirts_steam": "Camicie + Vapore", "silent_night": "Ciclo Notturno", - "single_item": "Capo Singolo", + "single_item": "Capo Singolo 20'", "single_item_steam": "Capo Singolo + Vapore", "smart_wash": "Smart Wash", "soft_care": "Soft Care", @@ -725,8 +742,8 @@ "steam_39": "Vapore 39'", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - Cotone", - "steam_care_pro_delicates": "Steam Care Pro - Delicati", - "steam_care_pro_synthetic": "Steam Care Pro - Sintetici", + "steam_care_pro_delicates": "Steam Care Pro - Delicati 16'", + "steam_care_pro_synthetic": "Steam Care Pro - Sintetici 20'", "steam_hygiene_plus": "Hygiene Plus + Vapore", "synthetics": "Sintetici", "synthetic_and_coloured": "Sintetici e Colorati", @@ -738,7 +755,7 @@ "wool": "Lana", "wool_and_delicates_49": "Lana e Delicati 49'", "wool_dry": "Asciugatura Lana", - "wool_soft_care": "Lana e Soft Care" + "wool_soft_care": "Lana e Soft Care 48'" }, "name": "Programma" }, @@ -748,19 +765,25 @@ "cheese": "Formaggio", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Modalità Eco", + "fruits": "Fruits", "fruits_and_veg": "Fruit&Veg", "fruit_and_veg": "Fruit & Veg", "holiday": "HOLIDAY", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Nessuna modalità selezionata", "quick_cool": "QUICK COOL", "sea_food": "Ready to cook meal", + "smart_mode": "SMART MODE", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Programma" @@ -969,32 +992,36 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Auto Igiene", "auto_plus": "AutoPlus", + "auto_plus_soil": "Auto Plus Sporco", "auto_rapid": "Auto Rapido", + "auto_rapid_soil": "Auto Rapido Sporco", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Auto Universale 50 - 60°C", - "auto_universal_plus": "Auto Universale Plus 65 - 75°C", - "auto_universal_plus_soil": "Auto Universale Plus 65 - 75°C", - "auto_universal_soil": "Auto Universale 50 - 60°C", + "auto_universal": "Auto Universale 50-60°C", + "auto_universal_plus": "Auto Universale Plus 65-75°C", + "auto_universal_plus_soil": "Auto Universale Plus 65-75°C", + "auto_universal_soil": "Auto Universale 50-60°C", "auto_wash": "Auto Wash", "auto_wash_soil": "Auto Wash", "classe_a_59": "Classe A 59' 65°C", "delicate": "Delicato 45°C", "dishwasher_care": "Ciclo anticalcare", - "eco": "Eco", + "eco": "Eco 45°C", "eco_asynch": "Eco 45°C", "eco_bldc": "Eco 45°C", "eco_synch": "Eco 45°C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "Calici", "glassware": "Cristalli 45°C", "glass_care": "Glass Care", "hygiene": "Igiene", - "hygiene_plus": "Igiene 75°C", + "hygiene_plus": "Igiene Plus 75°C", "intensive": "Intensivo", "intensive_rapid": "Forte Veloce", + "intensive_voice": "Intensivo", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Auto Universale 50 - 60°C", + "iot_auto_universal_soil": "Auto Universale 50-60°C", "iot_auto_wash_soil": "Auto Wash", "iot_baby_care": "Baby Care", "iot_breakfast": "Colazione", @@ -1003,8 +1030,8 @@ "iot_classe_a_59": "Rapido 59'", "iot_cocktail_glasses": "Cocktail Glasses", "iot_cocktail_glasses_soil": "Cocktail Glasses", - "iot_daily_care": "Quotidiano", - "iot_daily_care_soil": "Quotidiano", + "iot_daily_care": "Daily Care", + "iot_daily_care_soil": "Daily Care", "iot_delicate": "Delicato 45°C", "iot_dinner_for_two": "Cena di coppia", "iot_dinner_for_two_soil": "Cena di coppia", @@ -1012,12 +1039,13 @@ "iot_eco_asynch": "Eco 45°C", "iot_eco_bldc": "Eco 45°C", "iot_eco_synch": "Eco 45°C", - "iot_extra_hygiene": "Ciclo Vapore", + "iot_extra_hygiene": "Extra Hygiene", "iot_fairy_quick_cycle": "Fairy Rapido", "iot_happy_hour": "Happy Hour", "iot_jar_quick_cycle": "Jar Rapido", "iot_party": "Party", "iot_party_soil": "Party", + "iot_pet_bowls_toys": "Ciotole e Giochi Animali", "iot_pizza_menu": "Pizza Menu", "iot_pizza_menu_soil": "Pizza Menu", "iot_plastic_tupperware": "Plastiche & Tupperware", @@ -1034,6 +1062,13 @@ "iot_super_wash": "Super Wash", "iot_turbopower": "Turbo Power", "iot_universal": "Universale 60°C", + "iot_voice_automatic": "Automatico", + "iot_voice_delicate": "Delicato 45°C", + "iot_voice_eco": "Eco 45°C", + "iot_voice_intensive": "Intensivo 75°C", + "iot_voice_prewash": "Prelavaggio", + "iot_voice_rapid_59": "Rapido 59'", + "iot_voice_universal": "Universale 60°C", "iot_wok_grids_maxi_pans": "Maxi Stoviglie e Griglie", "iot_wok_grids_maxi_pans_soil": "Maxi Stoviglie e Griglie", "iot_yes_quick_cycle": "Yes Rapido", @@ -1065,6 +1100,7 @@ "ultra_silent": "Ultra Silenzioso 55°C", "universal": "Universale 60°C", "universal_plus": "Universale Plus 70°C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "Programma" @@ -1198,14 +1234,14 @@ "hqd_bulky": "Vestiti voluminosi", "hqd_casual": "Casual", "hqd_cold_wind_30": "Brezza rinfrescante 30m", - "hqd_cold_wind_timing": "Brezza rinfrescante", + "hqd_cold_wind_timing": "Aria Fredda", "hqd_cotton": "Cotone", "hqd_curtain": "Tende", "hqd_delicate": "Delicati", "hqd_diaper": "Pannolini", - "hqd_duvet": "Piumone", - "hqd_feather": "Piumini", - "hqd_hot_wind_timing": "Aria calda", + "hqd_duvet": "Piumini sintetici", + "hqd_feather": "Piumini fibra naturale", + "hqd_hot_wind_timing": "Caldo abbraccio", "hqd_hygienic": "Igienizzante", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -1215,10 +1251,10 @@ "hqd_mix": "Misti", "hqd_night_dry": "Asciugatura notturna", "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", + "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Rapido 20m", "hqd_quick_30": "Rapido 30'", - "hqd_quick_dry": "Asciugatura veloce 30'", + "hqd_quick_dry": "Asciugatura automatica rapida 30'", "hqd_quilt": "Trapunte", "hqd_refresh": "Refresh", "hqd_school_uniform": "Uniforme scolastica", @@ -1248,13 +1284,15 @@ "iot_dry_delicates": "Delicati", "iot_dry_delicate_tablecloths": "Tovaglie delicate", "iot_dry_denim_jeans": "Denim - jeans", - "iot_dry_down_jacket": "Giacche", + "iot_dry_down_jacket": "Asciugatura Giacche", "iot_dry_duvet": "Piumone", "iot_dry_easy_iron_cotton": "Stira facile", "iot_dry_easy_iron_synthetics": "Stira facile Sintetici", "iot_dry_gym_fit": "Gym fit - Fitness", "iot_dry_lingerie": "Lingerie", "iot_dry_mixed": "Misti", + "iot_dry_pet_accessories": "Accessori Animali", + "iot_dry_pet_hair_removal": "Rimozione Peli Animali (Pre-lavaggio)", "iot_dry_playsuits": "Tutine", "iot_dry_rapid_30": "Rapido 30'", "iot_dry_rapid_59": "Rapido 59'.", @@ -1306,16 +1344,16 @@ "state": { "20_degrees_coloured_cottons": "Cotone e Colorati 20°", "20_degrees_new_energy_label": "20°C", - "active_steam": "Vapore", - "active_wash": "Active Wash", - "active_wash_steam": "Active Wash + Vapore", + "active_steam": "Vapore 29'", + "active_wash": "Active Wash 20'", + "active_wash_steam": "Active Wash 20' + Vapore", "allergy_care": "Allergy Care", "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "All in One 49'", "all_in_one_59": "All in One 59'", "all_in_one_59_steam": "All in One 59' + Vapore", "autocare": "Autocare", - "autoclean": "Pulizia cesto e decalcifiazione", + "autoclean": "Pulizia cesto e decalcificazione", "baby_60": "Tutto Bebè 60°C", "care_14": "Rapid Care 14'", "care_30": "Rapid Care 30'", @@ -1328,19 +1366,19 @@ "cottons_steam": "Cotone + Vapore", "cotton_care_59": "Cotton Care 59'", "delicate_59": "Delicati 59'", - "delicate_silk": "Delicati e Seta", + "delicate_silk": "Delicati e Seta 59'", "delicate_silk_steam": "Delicati e Seta + Vapore", "delicati_59": "Delicati 59'", "delicati_59_steam": "Delicati 59' + Vapore", "drain_spin": "Scarico e Centrifuga", - "easy_iron": "Stiro Facile", + "easy_iron": "Stiro Facile 39'", "eco_40_60_new_energy_label": "Eco 40-60", "extra_care": "Extra Care", "fitness": "Fitness Care", "fitness_care": "Fitness Care", - "fresh_care": "Fresh Care", + "fresh_care": "Fresh Care 59'", "fresh_care_steam": "Fresh Care + Vapore", - "handwash_wool": "Mano e Lana", + "handwash_wool": "Mano e Lana 48'", "high_dry": "Asciugatura Cotone", "hqd_20_degrees": "Cotone 20°C", "hqd_allergy": "Allergy Care", @@ -1348,13 +1386,13 @@ "hqd_babycare": "Baby Care", "hqd_checkup": "Check-Up", "hqd_cottons": "Cotone", - "hqd_delicate": "Delicati", + "hqd_delicate": "Delicati 50'", "hqd_delicate_cradle": "Delicati", "hqd_dry": "Asciugatura Cotone", "hqd_dry_synthetics": "Asciugatura Misti", "hqd_duvet": "Piumone", "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_handwash_wool": "Lana", + "hqd_handwash_wool": "Lana 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Misti", "hqd_quick_15": "Express 15'", @@ -1365,7 +1403,7 @@ "hqd_shirts": "Camicie", "hqd_smart": "Smart A.I.", "hqd_spin": "Centrifuga", - "hqd_sport": "Sport", + "hqd_sport": "Sport 25'", "hqd_super_fast": "Rapido 39'", "hqd_synthetic_and_coloured": "Sintetici", "hygiene_59": "Igiene Plus 59'", @@ -1376,8 +1414,8 @@ "hygiene_pro_steam": "Hygiene Pro + Vapore", "intensive_40": "Intensivo 40°C", "intensive_40_steam": "Intensivo 40°C + Vapore", - "iot_active_steam": "Vapore", - "iot_active_wash_steam": "Active Wash + Vapore", + "iot_active_steam": "Vapore 29'", + "iot_active_wash_steam": "Active Wash 20' + Vapore", "iot_allergy_care_pro": "Allergy Care Pro", "iot_all_in_one_59_steam": "All in One 59' + Vapore", "iot_checkup": "Check-Up", @@ -1412,17 +1450,18 @@ "iot_dry_technical_fabrics": "Tessuti tecnici", "iot_dry_warm_embrace": "Caldo abbraccio", "iot_dry_wool_dry": "Asciugatura lana", - "iot_easy_iron": "Stiro Facile", + "iot_easy_iron": "Stiro Facile 39'", "iot_fresh_care_steam": "Fresh Care + Vapore", "iot_hygiene_pro_steam": "Hygiene Pro + Vapore", "iot_intensive_40_steam": "Intensivo 40°C + Vapore", + "iot_jeans_60_steam": "Jeans + Vapore", "iot_mixed_steam": "Misti + Vapore", "iot_mix_and_colour_59_steam": "Misti e Colorati 59' + Vapore ", "iot_perfect_cotton_59_steam": "Cotone Perfetto 59' + Vapore", "iot_rapid_a_class_60_steam": "Rapido 59' Classe A + Vapore", "iot_resistant_cotton_steam": "Cotone Resistente + Vapore", "iot_shirts_steam": "Camicie + Vapore", - "iot_single_item_steam": "Capo Singolo + Vapore", + "iot_single_item_steam": "Capo Singolo 20' + Vapore", "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Special 39' + Vapore", @@ -1456,7 +1495,7 @@ "iot_wash_coloured_bed_linen": "Lenzuola Colorate", "iot_wash_coloured_bed_linen_steam": "Lenzuola Colorate + Vapore", "iot_wash_coloured_curtains": "Tende Colorate", - "iot_wash_coloured_shirts": "Camicie Colorate", + "iot_wash_coloured_shirts": "Camicie Colorate 59'", "iot_wash_coloured_shirts_steam": "Camicie Colorate + Vapore", "iot_wash_coloured_steam": "Colorati + Vapore", "iot_wash_coloured_tableclothes": "Tovaglie Colorate", @@ -1493,7 +1532,7 @@ "iot_wash_down_jackets_zelig": "Piumini", "iot_wash_duvet": "Piumone", "iot_wash_fruit_stains": "Macchie di frutta", - "iot_wash_gym_fit": "Gym fit - Fitness", + "iot_wash_gym_fit": "Gym fit - Fitness 59'", "iot_wash_handwash": "Lavaggio a mano", "iot_wash_handwash_colored": "Lavaggio a mano Colorati", "iot_wash_handwash_dark": "Lavaggio a mano Scuri", @@ -1556,6 +1595,7 @@ "iot_wash_wool": "Lana", "jeans": "Jeans", "jeans_60": "Jeans", + "jeans_60_steam": "Jeans + Vapore", "low_dry": "Asciugatura Misti", "mixed": "Misti", "mixed_and_colored_59": "Misti e Colorati 59'", @@ -1579,7 +1619,7 @@ "rinse": "Risciacqui", "shirts_steam": "Camicie + Vapore", "silent_night": "Ciclo Notturno", - "single_item": "Capo Singolo", + "single_item": "Capo Singolo 20'", "single_item_steam": "Capo Singolo + Vapore", "smart_wash": "Smart Wash", "soft_care": "Soft Care", @@ -1595,8 +1635,8 @@ "steam_39": "Vapore 39'", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - Cotone", - "steam_care_pro_delicates": "Steam Care Pro - Delicati", - "steam_care_pro_synthetic": "Steam Care Pro - Sintetici", + "steam_care_pro_delicates": "Steam Care Pro - Delicati 16'", + "steam_care_pro_synthetic": "Steam Care Pro - Sintetici 20'", "steam_hygiene_plus": "Hygiene Plus + Vapore", "synthetics": "Sintetici", "synthetic_and_coloured": "Sintetici e Colorati", @@ -1608,7 +1648,7 @@ "wool": "Lana", "wool_and_delicates_49": "Lana e Delicati 49'", "wool_dry": "Asciugatura Lana", - "wool_soft_care": "Lana e Soft Care" + "wool_soft_care": "Lana e Soft Care 48'" }, "name": "Programma" }, @@ -1618,19 +1658,25 @@ "cheese": "Formaggio", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Modalità Eco", + "fruits": "Fruits", "fruits_and_veg": "Fruit&Veg", "fruit_and_veg": "Fruit & Veg", "holiday": "HOLIDAY", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Nessuna modalità selezionata", "quick_cool": "QUICK COOL", "sea_food": "Ready to cook meal", + "smart_mode": "SMART MODE", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Programma" diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index 718aad4..9dcc9e7 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -99,22 +99,25 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Auto Hygiene", "auto_plus": "AutoPlus", + "auto_plus_soil": "Auto Plus bevuiling", "auto_rapid": "Auto Rapid", + "auto_rapid_soil": "Auto Rapid bevuiling", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Auto universeel 50 - 60°C", - "auto_universal_plus": "Auto universeel plus 65 - 75°C", - "auto_universal_plus_soil": "Auto universeel plus 65 - 75°C", - "auto_universal_soil": "Auto universeel 50 - 60°C", + "auto_universal": "Auto universeel 50-60°C", + "auto_universal_plus": "Auto universeel plus 65-75°C", + "auto_universal_plus_soil": "Auto universeel plus 65-75°C", + "auto_universal_soil": "Auto universeel 50-60°C", "auto_wash": "Automatisch wassen", "auto_wash_soil": "Automatisch wassen", "classe_a_59": "A klasse 59' 65°C", "delicate": "Delicaat 45°C", "dishwasher_care": "Ontkalkingsprogramma", - "eco": "Eco", + "eco": "Eco 45°C", "eco_asynch": "Eco 45°C", "eco_bldc": "Eco 45°C", "eco_synch": "Eco 45°C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "Glas", "glassware": "Glaswerk 45°C", @@ -123,8 +126,9 @@ "hygiene_plus": "Hygiëne+ 75°C", "intensive": "Intensief", "intensive_rapid": "Intensief snel", + "intensive_voice": "Intensief", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Auto universeel 50 - 60°C", + "iot_auto_universal_soil": "Auto universeel 50-60°C", "iot_auto_wash_soil": "Automatisch wassen", "iot_baby_care": "Baby Care", "iot_breakfast": "Onbtijt", @@ -164,6 +168,13 @@ "iot_super_wash": "Super Was", "iot_turbopower": "TurboPower", "iot_universal": "Universeel 60°C", + "iot_voice_automatic": "Automatic", + "iot_voice_delicate": "Delicaat 45°C", + "iot_voice_eco": "Eco 45°C", + "iot_voice_intensive": "Intensief 75°C", + "iot_voice_prewash": "Voorwas", + "iot_voice_rapid_59": "Snel 59'", + "iot_voice_universal": "Universeel 60°C", "iot_wok_grids_maxi_pans": "Speciale Pannen (Wokpannen - Roosters & Maxi Pannen)", "iot_wok_grids_maxi_pans_soil": "Speciale Pannen (Wokpannen - Roosters & Maxi Pannen)", "iot_yes_quick_cycle": "Yes Quick", @@ -195,6 +206,7 @@ "ultra_silent": "Zeer stil 55°C", "universal": "Universeel 60°C", "universal_plus": "Universeel Plus 70°C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "Programma" @@ -328,14 +340,14 @@ "hqd_bulky": "Grote artikelen", "hqd_casual": "Casual", "hqd_cold_wind_30": "30 minuten koel briesje", - "hqd_cold_wind_timing": "Koel briesje", + "hqd_cold_wind_timing": "Koude lucht", "hqd_cotton": "Katoen", "hqd_curtain": "Gordijnen", "hqd_delicate": "Fijne was", "hqd_diaper": "Luiers", - "hqd_duvet": "Dekbed", - "hqd_feather": "Donsjassen", - "hqd_hot_wind_timing": "Hete lucht", + "hqd_duvet": "Gewatteerde jas met synthetische vezels", + "hqd_feather": "Gewatteerde jas met natuurlijke vezels", + "hqd_hot_wind_timing": "Warme Knuffel", "hqd_hygienic": "Ontsmetten", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -345,10 +357,10 @@ "hqd_mix": "Gemengde vezels", "hqd_night_dry": "Nachtelijk droogprogramma", "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", + "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Quick 20", "hqd_quick_30": "Quick 30", - "hqd_quick_dry": "Quick dry 30'", + "hqd_quick_dry": "30' automatisch snel drogen", "hqd_quilt": "Quilts", "hqd_refresh": "Opfrissen", "hqd_school_uniform": "Schooluniform", @@ -385,6 +397,8 @@ "iot_dry_gym_fit": "Gym fit - Fitness", "iot_dry_lingerie": "Lingerie", "iot_dry_mixed": "Gemengde vezels", + "iot_dry_pet_accessories": "Accessoires voor dieren", + "iot_dry_pet_hair_removal": "Verwijdering huisdierharen (voorwas)", "iot_dry_playsuits": "Jumpsuits", "iot_dry_rapid_30": "Rapid 30", "iot_dry_rapid_59": "Snel 59'", @@ -436,9 +450,9 @@ "state": { "20_degrees_coloured_cottons": "20° gekleurd en katoen", "20_degrees_new_energy_label": "20 °C", - "active_steam": "Stoom", - "active_wash": "Actieve was", - "active_wash_steam": "Actieve was", + "active_steam": "Stoom 29'", + "active_wash": "Actieve was 20'", + "active_wash_steam": "Actieve was 20' + Stoom", "allergy_care": "Allergiezorg", "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "Alles-in-één 49'.", @@ -458,19 +472,19 @@ "cottons_steam": "Katoen + Stoom", "cotton_care_59": "Cotton Care 59 Min", "delicate_59": "Fijne was 59'", - "delicate_silk": "Fijne was Zijde", + "delicate_silk": "Fijne was Zijde 59'", "delicate_silk_steam": "Fijne was Zijde + Stoom", "delicati_59": "Fijne was 59'", "delicati_59_steam": "Fijne was 59'", "drain_spin": "Afpompen en centrifugeren", - "easy_iron": "Makkelijk Strijkbaar", + "easy_iron": "Makkelijk Strijkbaar 39'", "eco_40_60_new_energy_label": "Eco 40-60", "extra_care": "Extra Care", "fitness": "Fitness care", "fitness_care": "Fitness care", - "fresh_care": "Opfrisverzorging", + "fresh_care": "Opfrisverzorging 59'", "fresh_care_steam": "Fresh Care + Stoom", - "handwash_wool": "Handwas en wol", + "handwash_wool": "Handwas en wol 48'", "high_dry": "Katoen drogen", "hqd_20_degrees": "Katoen 20℃", "hqd_allergy": "Allergiezorg", @@ -478,13 +492,13 @@ "hqd_babycare": "Baby Care", "hqd_checkup": "Controle", "hqd_cottons": "Katoen", - "hqd_delicate": "Fijne was", + "hqd_delicate": "Fijne was 50'", "hqd_delicate_cradle": "Fijne was", "hqd_dry": "Katoen drogen", "hqd_dry_synthetics": "Gemengde vezels drogen", "hqd_duvet": "Dekbed", "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_handwash_wool": "Wol", + "hqd_handwash_wool": "Wol 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Gemengde was", "hqd_quick_15": "Snel 15'", @@ -495,7 +509,7 @@ "hqd_shirts": "Overhemden", "hqd_smart": "Smart A.I.", "hqd_spin": "Centrifugeren", - "hqd_sport": "Sport", + "hqd_sport": "Sport 25'", "hqd_super_fast": "Snel 39'", "hqd_synthetic_and_coloured": "Synthetische stoffen", "hygiene_59": "Hygiene Plus 59'", @@ -506,8 +520,8 @@ "hygiene_pro_steam": "Hygiene Pro + stoom", "intensive_40": "Intensief 40°C", "intensive_40_steam": "Intensief 40°C + Stoom", - "iot_active_steam": "Stoom", - "iot_active_wash_steam": "Actieve was", + "iot_active_steam": "Stoom 29'", + "iot_active_wash_steam": "Actieve was 20' + Stoom", "iot_allergy_care_pro": "Allergy Care Pro", "iot_all_in_one_59_steam": "Alles-in-één 59' + Stoom", "iot_checkup": "Controle", @@ -542,17 +556,18 @@ "iot_dry_technical_fabrics": "Technische stoffen", "iot_dry_warm_embrace": "Warm drogen", "iot_dry_wool_dry": "Wol drogen", - "iot_easy_iron": "Makkelijk Strijkbaar", + "iot_easy_iron": "Makkelijk Strijkbaar 39'", "iot_fresh_care_steam": "Fresh Care + Stoom", "iot_hygiene_pro_steam": "Hygiene Pro + stoom", "iot_intensive_40_steam": "Intensief 40°C + Stoom", + "iot_jeans_60_steam": "Jeans + Steam", "iot_mixed_steam": "Gemengde vezels + Stoom", "iot_mix_and_colour_59_steam": "Gemengd en Gekleurd 59' + Stoom", "iot_perfect_cotton_59_steam": "Perfecte Katoen 59'", "iot_rapid_a_class_60_steam": "Snel klasse A 60 + Stoom", "iot_resistant_cotton_steam": "Katoen + Stoom", "iot_shirts_steam": "Shirts + stoom", - "iot_single_item_steam": "Eén artikel + Stoom", + "iot_single_item_steam": "Eén artikel 20' + Stoom", "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Speciaal 39' + Stoom", @@ -586,7 +601,7 @@ "iot_wash_coloured_bed_linen": "Gekleurd beddengoed", "iot_wash_coloured_bed_linen_steam": "Gekleurd beddengoed + Stoom", "iot_wash_coloured_curtains": "Gekleurde gordijnen", - "iot_wash_coloured_shirts": "Gekleurde overhemden", + "iot_wash_coloured_shirts": "Gekleurde overhemden 59'", "iot_wash_coloured_shirts_steam": "Gekleurde Shirts + Stoom", "iot_wash_coloured_steam": "Bonte was + Stoom", "iot_wash_coloured_tableclothes": "Gekleurde tafelkleden", @@ -623,7 +638,7 @@ "iot_wash_down_jackets_zelig": "Donsjassen", "iot_wash_duvet": "Dekbed", "iot_wash_fruit_stains": "Fruitvlekken", - "iot_wash_gym_fit": "Sportkleding", + "iot_wash_gym_fit": "Sportkleding 59'", "iot_wash_handwash": "Handwas", "iot_wash_handwash_colored": "Fijne handwas", "iot_wash_handwash_dark": "Donkere handwas", @@ -686,6 +701,7 @@ "iot_wash_wool": "Wol", "jeans": "Jeans", "jeans_60": "Jeans", + "jeans_60_steam": "Jeans + Steam", "low_dry": "Gemengde vezels drogen", "mixed": "Gemengde vezels", "mixed_and_colored_59": "Gemengde vezels en bonte was 59'", @@ -709,7 +725,7 @@ "rinse": "Spoelen", "shirts_steam": "Shirts + stoom", "silent_night": "Nachtprogramma", - "single_item": "Eén artikel", + "single_item": "Eén artikel 20'", "single_item_steam": "Eén artikel + Stoom", "smart_wash": "Smart Wash", "soft_care": "Zachte verzorging", @@ -725,8 +741,8 @@ "steam_39": "Stoom 39'", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - Katoen", - "steam_care_pro_delicates": "Steam Care Pro - Fijne was", - "steam_care_pro_synthetic": "Steam Care Pro - Synthetisch", + "steam_care_pro_delicates": "Steam Care Pro - Fijne was 16'", + "steam_care_pro_synthetic": "Steam Care Pro - Synthetisch 20'", "steam_hygiene_plus": "Hygiëne Plus Stoom", "synthetics": "Synthetische stoffen", "synthetic_and_coloured": "Synthetische vezels en kleuren", @@ -738,7 +754,7 @@ "wool": "Wol", "wool_and_delicates_49": "Wol/Fijne was 49'", "wool_dry": "Wol drogen", - "wool_soft_care": "Wol & Soft Care" + "wool_soft_care": "Wol & Soft Care 48'" }, "name": "Programma" }, @@ -748,19 +764,24 @@ "cheese": "Kaas", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Eco-modus", + "fruits": "Fruits", "fruits_and_veg": "Fruit&Veg", "fruit_and_veg": "Fruit & Veg", "holiday": "HOLIDAY", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Geen modus geselecteerd", "quick_cool": "QUICK KOEL", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Programma" @@ -964,22 +985,25 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Auto Hygiene", "auto_plus": "AutoPlus", + "auto_plus_soil": "Auto Plus bevuiling", "auto_rapid": "Auto Rapid", + "auto_rapid_soil": "Auto Rapid bevuiling", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Auto universeel 50 - 60°C", - "auto_universal_plus": "Auto universeel plus 65 - 75°C", - "auto_universal_plus_soil": "Auto universeel plus 65 - 75°C", - "auto_universal_soil": "Auto universeel 50 - 60°C", + "auto_universal": "Auto universeel 50-60°C", + "auto_universal_plus": "Auto universeel plus 65-75°C", + "auto_universal_plus_soil": "Auto universeel plus 65-75°C", + "auto_universal_soil": "Auto universeel 50-60°C", "auto_wash": "Automatisch wassen", "auto_wash_soil": "Automatisch wassen", "classe_a_59": "A klasse 59' 65°C", "delicate": "Delicaat 45°C", "dishwasher_care": "Ontkalkingsprogramma", - "eco": "Eco", + "eco": "Eco 45°C", "eco_asynch": "Eco 45°C", "eco_bldc": "Eco 45°C", "eco_synch": "Eco 45°C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "Glas", "glassware": "Glaswerk 45°C", @@ -988,8 +1012,9 @@ "hygiene_plus": "Hygiëne+ 75°C", "intensive": "Intensief", "intensive_rapid": "Intensief snel", + "intensive_voice": "Intensief", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Auto universeel 50 - 60°C", + "iot_auto_universal_soil": "Auto universeel 50-60°C", "iot_auto_wash_soil": "Automatisch wassen", "iot_baby_care": "Baby Care", "iot_breakfast": "Onbtijt", @@ -1029,6 +1054,13 @@ "iot_super_wash": "Super Was", "iot_turbopower": "TurboPower", "iot_universal": "Universeel 60°C", + "iot_voice_automatic": "Automatic", + "iot_voice_delicate": "Delicaat 45°C", + "iot_voice_eco": "Eco 45°C", + "iot_voice_intensive": "Intensief 75°C", + "iot_voice_prewash": "Voorwas", + "iot_voice_rapid_59": "Snel 59'", + "iot_voice_universal": "Universeel 60°C", "iot_wok_grids_maxi_pans": "Speciale Pannen (Wokpannen - Roosters & Maxi Pannen)", "iot_wok_grids_maxi_pans_soil": "Speciale Pannen (Wokpannen - Roosters & Maxi Pannen)", "iot_yes_quick_cycle": "Yes Quick", @@ -1060,6 +1092,7 @@ "ultra_silent": "Zeer stil 55°C", "universal": "Universeel 60°C", "universal_plus": "Universeel Plus 70°C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "Programma" @@ -1193,14 +1226,14 @@ "hqd_bulky": "Grote artikelen", "hqd_casual": "Casual", "hqd_cold_wind_30": "30 minuten koel briesje", - "hqd_cold_wind_timing": "Koel briesje", + "hqd_cold_wind_timing": "Koude lucht", "hqd_cotton": "Katoen", "hqd_curtain": "Gordijnen", "hqd_delicate": "Fijne was", "hqd_diaper": "Luiers", - "hqd_duvet": "Dekbed", - "hqd_feather": "Donsjassen", - "hqd_hot_wind_timing": "Hete lucht", + "hqd_duvet": "Gewatteerde jas met synthetische vezels", + "hqd_feather": "Gewatteerde jas met natuurlijke vezels", + "hqd_hot_wind_timing": "Warme Knuffel", "hqd_hygienic": "Ontsmetten", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -1210,10 +1243,10 @@ "hqd_mix": "Gemengde vezels", "hqd_night_dry": "Nachtelijk droogprogramma", "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", + "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Quick 20", "hqd_quick_30": "Quick 30", - "hqd_quick_dry": "Quick dry 30'", + "hqd_quick_dry": "30' automatisch snel drogen", "hqd_quilt": "Quilts", "hqd_refresh": "Opfrissen", "hqd_school_uniform": "Schooluniform", @@ -1250,6 +1283,8 @@ "iot_dry_gym_fit": "Gym fit - Fitness", "iot_dry_lingerie": "Lingerie", "iot_dry_mixed": "Gemengde vezels", + "iot_dry_pet_accessories": "Accessoires voor dieren", + "iot_dry_pet_hair_removal": "Verwijdering huisdierharen (voorwas)", "iot_dry_playsuits": "Jumpsuits", "iot_dry_rapid_30": "Rapid 30", "iot_dry_rapid_59": "Snel 59'", @@ -1301,9 +1336,9 @@ "state": { "20_degrees_coloured_cottons": "20° gekleurd en katoen", "20_degrees_new_energy_label": "20 °C", - "active_steam": "Stoom", - "active_wash": "Actieve was", - "active_wash_steam": "Actieve was", + "active_steam": "Stoom 29'", + "active_wash": "Actieve was 20'", + "active_wash_steam": "Actieve was 20' + Stoom", "allergy_care": "Allergiezorg", "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "Alles-in-één 49'.", @@ -1323,19 +1358,19 @@ "cottons_steam": "Katoen + Stoom", "cotton_care_59": "Cotton Care 59 Min", "delicate_59": "Fijne was 59'", - "delicate_silk": "Fijne was Zijde", + "delicate_silk": "Fijne was Zijde 59'", "delicate_silk_steam": "Fijne was Zijde + Stoom", "delicati_59": "Fijne was 59'", "delicati_59_steam": "Fijne was 59'", "drain_spin": "Afpompen en centrifugeren", - "easy_iron": "Makkelijk Strijkbaar", + "easy_iron": "Makkelijk Strijkbaar 39'", "eco_40_60_new_energy_label": "Eco 40-60", "extra_care": "Extra Care", "fitness": "Fitness care", "fitness_care": "Fitness care", - "fresh_care": "Opfrisverzorging", + "fresh_care": "Opfrisverzorging 59'", "fresh_care_steam": "Fresh Care + Stoom", - "handwash_wool": "Handwas en wol", + "handwash_wool": "Handwas en wol 48'", "high_dry": "Katoen drogen", "hqd_20_degrees": "Katoen 20℃", "hqd_allergy": "Allergiezorg", @@ -1343,13 +1378,13 @@ "hqd_babycare": "Baby Care", "hqd_checkup": "Controle", "hqd_cottons": "Katoen", - "hqd_delicate": "Fijne was", + "hqd_delicate": "Fijne was 50'", "hqd_delicate_cradle": "Fijne was", "hqd_dry": "Katoen drogen", "hqd_dry_synthetics": "Gemengde vezels drogen", "hqd_duvet": "Dekbed", "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_handwash_wool": "Wol", + "hqd_handwash_wool": "Wol 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Gemengde was", "hqd_quick_15": "Snel 15'", @@ -1360,7 +1395,7 @@ "hqd_shirts": "Overhemden", "hqd_smart": "Smart A.I.", "hqd_spin": "Centrifugeren", - "hqd_sport": "Sport", + "hqd_sport": "Sport 25'", "hqd_super_fast": "Snel 39'", "hqd_synthetic_and_coloured": "Synthetische stoffen", "hygiene_59": "Hygiene Plus 59'", @@ -1371,8 +1406,8 @@ "hygiene_pro_steam": "Hygiene Pro + stoom", "intensive_40": "Intensief 40°C", "intensive_40_steam": "Intensief 40°C + Stoom", - "iot_active_steam": "Stoom", - "iot_active_wash_steam": "Actieve was", + "iot_active_steam": "Stoom 29'", + "iot_active_wash_steam": "Actieve was 20' + Stoom", "iot_allergy_care_pro": "Allergy Care Pro", "iot_all_in_one_59_steam": "Alles-in-één 59' + Stoom", "iot_checkup": "Controle", @@ -1407,17 +1442,18 @@ "iot_dry_technical_fabrics": "Technische stoffen", "iot_dry_warm_embrace": "Warm drogen", "iot_dry_wool_dry": "Wol drogen", - "iot_easy_iron": "Makkelijk Strijkbaar", + "iot_easy_iron": "Makkelijk Strijkbaar 39'", "iot_fresh_care_steam": "Fresh Care + Stoom", "iot_hygiene_pro_steam": "Hygiene Pro + stoom", "iot_intensive_40_steam": "Intensief 40°C + Stoom", + "iot_jeans_60_steam": "Jeans + Steam", "iot_mixed_steam": "Gemengde vezels + Stoom", "iot_mix_and_colour_59_steam": "Gemengd en Gekleurd 59' + Stoom", "iot_perfect_cotton_59_steam": "Perfecte Katoen 59'", "iot_rapid_a_class_60_steam": "Snel klasse A 60 + Stoom", "iot_resistant_cotton_steam": "Katoen + Stoom", "iot_shirts_steam": "Shirts + stoom", - "iot_single_item_steam": "Eén artikel + Stoom", + "iot_single_item_steam": "Eén artikel 20' + Stoom", "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Speciaal 39' + Stoom", @@ -1451,7 +1487,7 @@ "iot_wash_coloured_bed_linen": "Gekleurd beddengoed", "iot_wash_coloured_bed_linen_steam": "Gekleurd beddengoed + Stoom", "iot_wash_coloured_curtains": "Gekleurde gordijnen", - "iot_wash_coloured_shirts": "Gekleurde overhemden", + "iot_wash_coloured_shirts": "Gekleurde overhemden 59'", "iot_wash_coloured_shirts_steam": "Gekleurde Shirts + Stoom", "iot_wash_coloured_steam": "Bonte was + Stoom", "iot_wash_coloured_tableclothes": "Gekleurde tafelkleden", @@ -1488,7 +1524,7 @@ "iot_wash_down_jackets_zelig": "Donsjassen", "iot_wash_duvet": "Dekbed", "iot_wash_fruit_stains": "Fruitvlekken", - "iot_wash_gym_fit": "Sportkleding", + "iot_wash_gym_fit": "Sportkleding 59'", "iot_wash_handwash": "Handwas", "iot_wash_handwash_colored": "Fijne handwas", "iot_wash_handwash_dark": "Donkere handwas", @@ -1551,6 +1587,7 @@ "iot_wash_wool": "Wol", "jeans": "Jeans", "jeans_60": "Jeans", + "jeans_60_steam": "Jeans + Steam", "low_dry": "Gemengde vezels drogen", "mixed": "Gemengde vezels", "mixed_and_colored_59": "Gemengde vezels en bonte was 59'", @@ -1574,7 +1611,7 @@ "rinse": "Spoelen", "shirts_steam": "Shirts + stoom", "silent_night": "Nachtprogramma", - "single_item": "Eén artikel", + "single_item": "Eén artikel 20'", "single_item_steam": "Eén artikel + Stoom", "smart_wash": "Smart Wash", "soft_care": "Zachte verzorging", @@ -1590,8 +1627,8 @@ "steam_39": "Stoom 39'", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - Katoen", - "steam_care_pro_delicates": "Steam Care Pro - Fijne was", - "steam_care_pro_synthetic": "Steam Care Pro - Synthetisch", + "steam_care_pro_delicates": "Steam Care Pro - Fijne was 16'", + "steam_care_pro_synthetic": "Steam Care Pro - Synthetisch 20'", "steam_hygiene_plus": "Hygiëne Plus Stoom", "synthetics": "Synthetische stoffen", "synthetic_and_coloured": "Synthetische vezels en kleuren", @@ -1603,7 +1640,7 @@ "wool": "Wol", "wool_and_delicates_49": "Wol/Fijne was 49'", "wool_dry": "Wol drogen", - "wool_soft_care": "Wol & Soft Care" + "wool_soft_care": "Wol & Soft Care 48'" }, "name": "Programma" }, @@ -1613,19 +1650,24 @@ "cheese": "Kaas", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Eco-modus", + "fruits": "Fruits", "fruits_and_veg": "Fruit&Veg", "fruit_and_veg": "Fruit & Veg", "holiday": "HOLIDAY", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Geen modus geselecteerd", "quick_cool": "QUICK KOEL", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Programma" diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index db75cb0..3795703 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -99,22 +99,25 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Auto Hygiene", "auto_plus": "AutoPlus", + "auto_plus_soil": "Zabrudzenie Auto Plus", "auto_rapid": "Auto Rapid", + "auto_rapid_soil": "Zabrudzenie Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Auto Universalny 50 - 60°C", - "auto_universal_plus": "Auto Universalny Plus 65 - 75°C", - "auto_universal_plus_soil": "Auto Universalny Plus 65 - 75°C", - "auto_universal_soil": "Auto Universalny 50 - 60°C", + "auto_universal": "Auto Universalny 50-60°C", + "auto_universal_plus": "Auto Universalny Plus 65-75°C", + "auto_universal_plus_soil": "Auto Universalny Plus 65-75°C", + "auto_universal_soil": "Auto Universalny 50-60°C", "auto_wash": "Auto Wash", "auto_wash_soil": "Auto Wash", "classe_a_59": "Zmywanie w klasie A 1 godz. 65°C", "delicate": "Delikatny 45°C", "dishwasher_care": "Cykl usuwania kamienia", - "eco": "Eco", + "eco": "Eco 45°C", "eco_asynch": "Eco 45°C", "eco_bldc": "Eco 45°C", "eco_synch": "Eco 45°C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "Szkło", "glassware": "Szklane 45°C", @@ -123,8 +126,9 @@ "hygiene_plus": "Higiena+ 75°C", "intensive": "Intensywne", "intensive_rapid": "intensywny szybki", + "intensive_voice": "Intensywne", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Auto Universalny 50 - 60°C", + "iot_auto_universal_soil": "Auto Universalny 50-60°C", "iot_auto_wash_soil": "Auto Wash", "iot_baby_care": "Baby Care", "iot_breakfast": "Śniadanie", @@ -164,6 +168,13 @@ "iot_super_wash": "Super Mycie", "iot_turbopower": "TurboPower", "iot_universal": "Uniwersalne 60°C", + "iot_voice_automatic": "Automatic", + "iot_voice_delicate": "Delikatny 45°C", + "iot_voice_eco": "Eco 45°C", + "iot_voice_intensive": "Intensywne 75°C", + "iot_voice_prewash": "Mycie wstępne", + "iot_voice_rapid_59": "Szybki 59'", + "iot_voice_universal": "Uniwersalne 60°C", "iot_wok_grids_maxi_pans": "Specjalny do patelni (Woki, Patelnie karbowane, Patelnie maxi)", "iot_wok_grids_maxi_pans_soil": "Specjalny do patelni (Woki, Patelnie karbowane, Patelnie maxi)", "iot_yes_quick_cycle": "Yes Quick", @@ -195,6 +206,7 @@ "ultra_silent": "Ultra Ciche 55°C", "universal": "Uniwersalne 60°C", "universal_plus": "Uniwersalne Plus 70°C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "Program" @@ -328,14 +340,14 @@ "hqd_bulky": "Elementy wielkogabarytowe", "hqd_casual": "Nieformalny", "hqd_cold_wind_30": "Chłodna bryza 30 minut", - "hqd_cold_wind_timing": "Chłodny wietrzyk", + "hqd_cold_wind_timing": "Zimne powietrze", "hqd_cotton": "Bawełna", "hqd_curtain": "Zasłony", "hqd_delicate": "Delikatne", "hqd_diaper": "Pieluchy", - "hqd_duvet": "Kołdry", - "hqd_feather": "Kurtki puchowe", - "hqd_hot_wind_timing": "Gorące powietrze", + "hqd_duvet": "Pikowana kurtka z włókna syntetycznego", + "hqd_feather": "Pikowana kurtka z naturalnego włókna", + "hqd_hot_wind_timing": "Ciepłe objęcie", "hqd_hygienic": "Higienizacja", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -345,10 +357,10 @@ "hqd_mix": "Mieszane", "hqd_night_dry": "Suszenie nocne", "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", + "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Szybkie 20", "hqd_quick_30": "Szybkie 30", - "hqd_quick_dry": "Szybkoschnące 30'", + "hqd_quick_dry": "Automatyczne szybkie suszenie 30'", "hqd_quilt": "Kołdry", "hqd_refresh": "Odświeżanie", "hqd_school_uniform": "Mundurek szkolny", @@ -385,6 +397,8 @@ "iot_dry_gym_fit": "Gimnastyczne - Fitness", "iot_dry_lingerie": "Bielizna", "iot_dry_mixed": "Mieszane", + "iot_dry_pet_accessories": "Akcesoria dla zwierząt", + "iot_dry_pet_hair_removal": "Usuwanie sierści zwierząt domowych (pranie wstępne)", "iot_dry_playsuits": "Pajacyki", "iot_dry_rapid_30": "Rapid 30", "iot_dry_rapid_59": "Szybki 59’.", @@ -436,9 +450,9 @@ "state": { "20_degrees_coloured_cottons": "20° Kolorowe i Bawełna", "20_degrees_new_energy_label": "20°C", - "active_steam": "Para", - "active_wash": "Aktywne pranie", - "active_wash_steam": "Aktywne pranie", + "active_steam": "Para 29'", + "active_wash": "Aktywne pranie 20'", + "active_wash_steam": "Aktywne pranie 20' + Para", "allergy_care": "Pielęgnacja antyalergiczna", "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "Wszystko w jednym cyklu 49’", @@ -458,19 +472,19 @@ "cottons_steam": "Bawełna + Para", "cotton_care_59": "Cotton Care 59 Min", "delicate_59": "Delikatne 59’", - "delicate_silk": "Delikatny jedwab", + "delicate_silk": "Delikatny jedwab 59'", "delicate_silk_steam": "Delikatny jedwab + Para", "delicati_59": "Delikatne 59’", "delicati_59_steam": "Delikatne 59’", "drain_spin": "Spuść wodę +i odwiruj", - "easy_iron": "Łatwe prasowanie", + "easy_iron": "Łatwe prasowanie 39'", "eco_40_60_new_energy_label": "Eco 40-60", "extra_care": "Extra Care", "fitness": "Fitness Care", "fitness_care": "Fitness Care", - "fresh_care": "Fresh Care", + "fresh_care": "Fresh Care 59'", "fresh_care_steam": "Fresh Care + Para", - "handwash_wool": "Pranie ręczne i wełna", + "handwash_wool": "Pranie ręczne i wełna 48'", "high_dry": "Suszenie bawełny", "hqd_20_degrees": "Bawełna 20℃", "hqd_allergy": "Pielęgnacja antyalergiczna", @@ -478,13 +492,13 @@ "hqd_babycare": "Baby Care", "hqd_checkup": "Kontrola", "hqd_cottons": "Bawełna", - "hqd_delicate": "Delikatne", + "hqd_delicate": "Delikatne 50'", "hqd_delicate_cradle": "Delikatne", "hqd_dry": "Suszenie bawełny", "hqd_dry_synthetics": "Suszenie materiałów mieszanych", "hqd_duvet": "Kołdry", "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_handwash_wool": "Wełna", + "hqd_handwash_wool": "Wełna 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Mieszane", "hqd_quick_15": "Szybki 15'", @@ -495,7 +509,7 @@ "hqd_shirts": "Koszule", "hqd_smart": "Smart A.I.", "hqd_spin": "Wirowanie", - "hqd_sport": "Odzież sportowa", + "hqd_sport": "Odzież sportowa 25'", "hqd_super_fast": "Szybki 39’", "hqd_synthetic_and_coloured": "Syntetyki", "hygiene_59": "Higiena Plus 59'", @@ -506,8 +520,8 @@ "hygiene_pro_steam": "Hygiene Pro + Para", "intensive_40": "Intensywne 40°C", "intensive_40_steam": "Intensywny 40°C + Para", - "iot_active_steam": "Para", - "iot_active_wash_steam": "Aktywne pranie", + "iot_active_steam": "Para 29'", + "iot_active_wash_steam": "Aktywne pranie 20' + Para", "iot_allergy_care_pro": "Allergy Care Pro", "iot_all_in_one_59_steam": "Wszystko w jednym cyklu 59’ + Para", "iot_checkup": "Kontrola", @@ -542,17 +556,18 @@ "iot_dry_technical_fabrics": "Tkaniny techniczne", "iot_dry_warm_embrace": "Delikatne suszenie", "iot_dry_wool_dry": "Suszenie wełny", - "iot_easy_iron": "Łatwe prasowanie", + "iot_easy_iron": "Łatwe prasowanie 39'", "iot_fresh_care_steam": "Fresh Care + Para", "iot_hygiene_pro_steam": "Hygiene Pro + Para", "iot_intensive_40_steam": "Intensywny 40°C + Para", + "iot_jeans_60_steam": "Dżinsy + Para", "iot_mixed_steam": "Mieszane + Para", "iot_mix_and_colour_59_steam": "Mieszane i kolorowe 59' + Para", "iot_perfect_cotton_59_steam": "Idealna Bawelna 59'", "iot_rapid_a_class_60_steam": "Szybki Klasa A 60 + Para", "iot_resistant_cotton_steam": "Bawełna + Para", "iot_shirts_steam": "Koszule + Para", - "iot_single_item_steam": "Pojedynczy przedmiot + Para", + "iot_single_item_steam": "Pojedynczy przedmiot 20' + Para", "iot_smart_wash": "Inteligentne pranie", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Specjalny 39' + Para", @@ -586,7 +601,7 @@ "iot_wash_coloured_bed_linen": "Kolorowa pościel", "iot_wash_coloured_bed_linen_steam": "Kolorowa pościel + Para", "iot_wash_coloured_curtains": "Kolorowe zasłony", - "iot_wash_coloured_shirts": "Kolorowe koszule", + "iot_wash_coloured_shirts": "Kolorowe koszule 59'", "iot_wash_coloured_shirts_steam": "Kolorowe koszule + Para", "iot_wash_coloured_steam": "Tkaniny kolorowe + Para", "iot_wash_coloured_tableclothes": "Kolorowe obrusy", @@ -623,7 +638,7 @@ "iot_wash_down_jackets_zelig": "Kurtki puchowe", "iot_wash_duvet": "Kołdry", "iot_wash_fruit_stains": "Plamy z owoców", - "iot_wash_gym_fit": "Ubrania na siłownię", + "iot_wash_gym_fit": "Ubrania na siłownię 59'", "iot_wash_handwash": "Pranie ręczne", "iot_wash_handwash_colored": "Pranie ręczne, kolorowe", "iot_wash_handwash_dark": "Pranie ręczne, ciemne", @@ -686,6 +701,7 @@ "iot_wash_wool": "Wełna", "jeans": "Dżins", "jeans_60": "Dżinsy", + "jeans_60_steam": "Dżinsy + Para", "low_dry": "Suszenie materiałów mieszanych", "mixed": "Mieszane", "mixed_and_colored_59": "Mieszane i kolorowe 59 '", @@ -709,7 +725,7 @@ "rinse": "Płukanie", "shirts_steam": "Koszule + Para", "silent_night": "Cykl nocny", - "single_item": "Pojedynczy przedmiot", + "single_item": "Pojedynczy przedmiot 20'", "single_item_steam": "Pojedynczy przedmiot + Para", "smart_wash": "Inteligentne pranie", "soft_care": "Soft Care", @@ -725,8 +741,8 @@ "steam_39": "Para 39’", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - Bawełna", - "steam_care_pro_delicates": "Steam Care Pro - Delikatne", - "steam_care_pro_synthetic": "Steam Care Pro - Syntetyki", + "steam_care_pro_delicates": "Steam Care Pro - Delikatne 16'", + "steam_care_pro_synthetic": "Steam Care Pro - Syntetyki 20'", "steam_hygiene_plus": "Higiena Plus Para", "synthetics": "Syntetyki", "synthetic_and_coloured": "Syntetyki i Kolorowe", @@ -738,7 +754,7 @@ "wool": "Wełna", "wool_and_delicates_49": "Wełna/Delikatne 49'", "wool_dry": "Suszenie wełny", - "wool_soft_care": "Wełna & Soft Care" + "wool_soft_care": "Wełna & Soft Care 48'" }, "name": "Program" }, @@ -748,19 +764,24 @@ "cheese": "Ser", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Tryb Eco", + "fruits": "Fruits", "fruits_and_veg": "Fruit&Veg", "fruit_and_veg": "Fruit & Veg", "holiday": "HOLIDAY", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Nie wybrano żadnego trybu", "quick_cool": "QUICK COOL", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Program" @@ -964,22 +985,25 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Auto Hygiene", "auto_plus": "AutoPlus", + "auto_plus_soil": "Zabrudzenie Auto Plus", "auto_rapid": "Auto Rapid", + "auto_rapid_soil": "Zabrudzenie Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Auto Universalny 50 - 60°C", - "auto_universal_plus": "Auto Universalny Plus 65 - 75°C", - "auto_universal_plus_soil": "Auto Universalny Plus 65 - 75°C", - "auto_universal_soil": "Auto Universalny 50 - 60°C", + "auto_universal": "Auto Universalny 50-60°C", + "auto_universal_plus": "Auto Universalny Plus 65-75°C", + "auto_universal_plus_soil": "Auto Universalny Plus 65-75°C", + "auto_universal_soil": "Auto Universalny 50-60°C", "auto_wash": "Auto Wash", "auto_wash_soil": "Auto Wash", "classe_a_59": "Zmywanie w klasie A 1 godz. 65°C", "delicate": "Delikatny 45°C", "dishwasher_care": "Cykl usuwania kamienia", - "eco": "Eco", + "eco": "Eco 45°C", "eco_asynch": "Eco 45°C", "eco_bldc": "Eco 45°C", "eco_synch": "Eco 45°C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "Szkło", "glassware": "Szklane 45°C", @@ -988,8 +1012,9 @@ "hygiene_plus": "Higiena+ 75°C", "intensive": "Intensywne", "intensive_rapid": "intensywny szybki", + "intensive_voice": "Intensywne", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Auto Universalny 50 - 60°C", + "iot_auto_universal_soil": "Auto Universalny 50-60°C", "iot_auto_wash_soil": "Auto Wash", "iot_baby_care": "Baby Care", "iot_breakfast": "Śniadanie", @@ -1029,6 +1054,13 @@ "iot_super_wash": "Super Mycie", "iot_turbopower": "TurboPower", "iot_universal": "Uniwersalne 60°C", + "iot_voice_automatic": "Automatic", + "iot_voice_delicate": "Delikatny 45°C", + "iot_voice_eco": "Eco 45°C", + "iot_voice_intensive": "Intensywne 75°C", + "iot_voice_prewash": "Mycie wstępne", + "iot_voice_rapid_59": "Szybki 59'", + "iot_voice_universal": "Uniwersalne 60°C", "iot_wok_grids_maxi_pans": "Specjalny do patelni (Woki, Patelnie karbowane, Patelnie maxi)", "iot_wok_grids_maxi_pans_soil": "Specjalny do patelni (Woki, Patelnie karbowane, Patelnie maxi)", "iot_yes_quick_cycle": "Yes Quick", @@ -1060,6 +1092,7 @@ "ultra_silent": "Ultra Ciche 55°C", "universal": "Uniwersalne 60°C", "universal_plus": "Uniwersalne Plus 70°C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "Program" @@ -1193,14 +1226,14 @@ "hqd_bulky": "Elementy wielkogabarytowe", "hqd_casual": "Nieformalny", "hqd_cold_wind_30": "Chłodna bryza 30 minut", - "hqd_cold_wind_timing": "Chłodny wietrzyk", + "hqd_cold_wind_timing": "Zimne powietrze", "hqd_cotton": "Bawełna", "hqd_curtain": "Zasłony", "hqd_delicate": "Delikatne", "hqd_diaper": "Pieluchy", - "hqd_duvet": "Kołdry", - "hqd_feather": "Kurtki puchowe", - "hqd_hot_wind_timing": "Gorące powietrze", + "hqd_duvet": "Pikowana kurtka z włókna syntetycznego", + "hqd_feather": "Pikowana kurtka z naturalnego włókna", + "hqd_hot_wind_timing": "Ciepłe objęcie", "hqd_hygienic": "Higienizacja", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -1210,10 +1243,10 @@ "hqd_mix": "Mieszane", "hqd_night_dry": "Suszenie nocne", "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", + "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Szybkie 20", "hqd_quick_30": "Szybkie 30", - "hqd_quick_dry": "Szybkoschnące 30'", + "hqd_quick_dry": "Automatyczne szybkie suszenie 30'", "hqd_quilt": "Kołdry", "hqd_refresh": "Odświeżanie", "hqd_school_uniform": "Mundurek szkolny", @@ -1250,6 +1283,8 @@ "iot_dry_gym_fit": "Gimnastyczne - Fitness", "iot_dry_lingerie": "Bielizna", "iot_dry_mixed": "Mieszane", + "iot_dry_pet_accessories": "Akcesoria dla zwierząt", + "iot_dry_pet_hair_removal": "Usuwanie sierści zwierząt domowych (pranie wstępne)", "iot_dry_playsuits": "Pajacyki", "iot_dry_rapid_30": "Rapid 30", "iot_dry_rapid_59": "Szybki 59’.", @@ -1301,9 +1336,9 @@ "state": { "20_degrees_coloured_cottons": "20° Kolorowe i Bawełna", "20_degrees_new_energy_label": "20°C", - "active_steam": "Para", - "active_wash": "Aktywne pranie", - "active_wash_steam": "Aktywne pranie", + "active_steam": "Para 29'", + "active_wash": "Aktywne pranie 20'", + "active_wash_steam": "Aktywne pranie 20' + Para", "allergy_care": "Pielęgnacja antyalergiczna", "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "Wszystko w jednym cyklu 49’", @@ -1323,19 +1358,19 @@ "cottons_steam": "Bawełna + Para", "cotton_care_59": "Cotton Care 59 Min", "delicate_59": "Delikatne 59’", - "delicate_silk": "Delikatny jedwab", + "delicate_silk": "Delikatny jedwab 59'", "delicate_silk_steam": "Delikatny jedwab + Para", "delicati_59": "Delikatne 59’", "delicati_59_steam": "Delikatne 59’", "drain_spin": "Spuść wodę +i odwiruj", - "easy_iron": "Łatwe prasowanie", + "easy_iron": "Łatwe prasowanie 39'", "eco_40_60_new_energy_label": "Eco 40-60", "extra_care": "Extra Care", "fitness": "Fitness Care", "fitness_care": "Fitness Care", - "fresh_care": "Fresh Care", + "fresh_care": "Fresh Care 59'", "fresh_care_steam": "Fresh Care + Para", - "handwash_wool": "Pranie ręczne i wełna", + "handwash_wool": "Pranie ręczne i wełna 48'", "high_dry": "Suszenie bawełny", "hqd_20_degrees": "Bawełna 20℃", "hqd_allergy": "Pielęgnacja antyalergiczna", @@ -1343,13 +1378,13 @@ "hqd_babycare": "Baby Care", "hqd_checkup": "Kontrola", "hqd_cottons": "Bawełna", - "hqd_delicate": "Delikatne", + "hqd_delicate": "Delikatne 50'", "hqd_delicate_cradle": "Delikatne", "hqd_dry": "Suszenie bawełny", "hqd_dry_synthetics": "Suszenie materiałów mieszanych", "hqd_duvet": "Kołdry", "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_handwash_wool": "Wełna", + "hqd_handwash_wool": "Wełna 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Mieszane", "hqd_quick_15": "Szybki 15'", @@ -1360,7 +1395,7 @@ "hqd_shirts": "Koszule", "hqd_smart": "Smart A.I.", "hqd_spin": "Wirowanie", - "hqd_sport": "Odzież sportowa", + "hqd_sport": "Odzież sportowa 25'", "hqd_super_fast": "Szybki 39’", "hqd_synthetic_and_coloured": "Syntetyki", "hygiene_59": "Higiena Plus 59'", @@ -1371,8 +1406,8 @@ "hygiene_pro_steam": "Hygiene Pro + Para", "intensive_40": "Intensywne 40°C", "intensive_40_steam": "Intensywny 40°C + Para", - "iot_active_steam": "Para", - "iot_active_wash_steam": "Aktywne pranie", + "iot_active_steam": "Para 29'", + "iot_active_wash_steam": "Aktywne pranie 20' + Para", "iot_allergy_care_pro": "Allergy Care Pro", "iot_all_in_one_59_steam": "Wszystko w jednym cyklu 59’ + Para", "iot_checkup": "Kontrola", @@ -1407,17 +1442,18 @@ "iot_dry_technical_fabrics": "Tkaniny techniczne", "iot_dry_warm_embrace": "Delikatne suszenie", "iot_dry_wool_dry": "Suszenie wełny", - "iot_easy_iron": "Łatwe prasowanie", + "iot_easy_iron": "Łatwe prasowanie 39'", "iot_fresh_care_steam": "Fresh Care + Para", "iot_hygiene_pro_steam": "Hygiene Pro + Para", "iot_intensive_40_steam": "Intensywny 40°C + Para", + "iot_jeans_60_steam": "Dżinsy + Para", "iot_mixed_steam": "Mieszane + Para", "iot_mix_and_colour_59_steam": "Mieszane i kolorowe 59' + Para", "iot_perfect_cotton_59_steam": "Idealna Bawelna 59'", "iot_rapid_a_class_60_steam": "Szybki Klasa A 60 + Para", "iot_resistant_cotton_steam": "Bawełna + Para", "iot_shirts_steam": "Koszule + Para", - "iot_single_item_steam": "Pojedynczy przedmiot + Para", + "iot_single_item_steam": "Pojedynczy przedmiot 20' + Para", "iot_smart_wash": "Inteligentne pranie", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Specjalny 39' + Para", @@ -1451,7 +1487,7 @@ "iot_wash_coloured_bed_linen": "Kolorowa pościel", "iot_wash_coloured_bed_linen_steam": "Kolorowa pościel + Para", "iot_wash_coloured_curtains": "Kolorowe zasłony", - "iot_wash_coloured_shirts": "Kolorowe koszule", + "iot_wash_coloured_shirts": "Kolorowe koszule 59'", "iot_wash_coloured_shirts_steam": "Kolorowe koszule + Para", "iot_wash_coloured_steam": "Tkaniny kolorowe + Para", "iot_wash_coloured_tableclothes": "Kolorowe obrusy", @@ -1488,7 +1524,7 @@ "iot_wash_down_jackets_zelig": "Kurtki puchowe", "iot_wash_duvet": "Kołdry", "iot_wash_fruit_stains": "Plamy z owoców", - "iot_wash_gym_fit": "Ubrania na siłownię", + "iot_wash_gym_fit": "Ubrania na siłownię 59'", "iot_wash_handwash": "Pranie ręczne", "iot_wash_handwash_colored": "Pranie ręczne, kolorowe", "iot_wash_handwash_dark": "Pranie ręczne, ciemne", @@ -1551,6 +1587,7 @@ "iot_wash_wool": "Wełna", "jeans": "Dżins", "jeans_60": "Dżinsy", + "jeans_60_steam": "Dżinsy + Para", "low_dry": "Suszenie materiałów mieszanych", "mixed": "Mieszane", "mixed_and_colored_59": "Mieszane i kolorowe 59 '", @@ -1574,7 +1611,7 @@ "rinse": "Płukanie", "shirts_steam": "Koszule + Para", "silent_night": "Cykl nocny", - "single_item": "Pojedynczy przedmiot", + "single_item": "Pojedynczy przedmiot 20'", "single_item_steam": "Pojedynczy przedmiot + Para", "smart_wash": "Inteligentne pranie", "soft_care": "Soft Care", @@ -1590,8 +1627,8 @@ "steam_39": "Para 39’", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - Bawełna", - "steam_care_pro_delicates": "Steam Care Pro - Delikatne", - "steam_care_pro_synthetic": "Steam Care Pro - Syntetyki", + "steam_care_pro_delicates": "Steam Care Pro - Delikatne 16'", + "steam_care_pro_synthetic": "Steam Care Pro - Syntetyki 20'", "steam_hygiene_plus": "Higiena Plus Para", "synthetics": "Syntetyki", "synthetic_and_coloured": "Syntetyki i Kolorowe", @@ -1603,7 +1640,7 @@ "wool": "Wełna", "wool_and_delicates_49": "Wełna/Delikatne 49'", "wool_dry": "Suszenie wełny", - "wool_soft_care": "Wełna & Soft Care" + "wool_soft_care": "Wełna & Soft Care 48'" }, "name": "Program" }, @@ -1613,19 +1650,24 @@ "cheese": "Ser", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Tryb Eco", + "fruits": "Fruits", "fruits_and_veg": "Fruit&Veg", "fruit_and_veg": "Fruit & Veg", "holiday": "HOLIDAY", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Nie wybrano żadnego trybu", "quick_cool": "QUICK COOL", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Program" diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index 0eb047c..33cdbdc 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -99,22 +99,25 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Auto Hygiene", "auto_plus": "AutoPlus", + "auto_plus_soil": "Sujidade Auto Plus", "auto_rapid": "Auto Rapid", + "auto_rapid_soil": "Sujidade Auto Rápida", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Auto Universal 50 - 60°C", - "auto_universal_plus": "Auto Universal Plus 65 - 75°C", - "auto_universal_plus_soil": "Auto Universal Plus 65 - 75°C", - "auto_universal_soil": "Auto Universal 50 - 60°C", + "auto_universal": "Auto Universal 50-60°C", + "auto_universal_plus": "Auto Universal Plus 65-75°C", + "auto_universal_plus_soil": "Auto Universal Plus 65-75°C", + "auto_universal_soil": "Auto Universal 50-60°C", "auto_wash": "Auto Wash", "auto_wash_soil": "Auto Wash", "classe_a_59": "Classe A 59' 65°C", "delicate": "Delicados 45°C", "dishwasher_care": "Ciclo de limpeza de calcário", - "eco": "Eco", + "eco": "Eco 45°C", "eco_asynch": "Eco 45°C", "eco_bldc": "Eco 45°C", "eco_synch": "Eco 45°C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "Vidro", "glassware": "Vidros 45 °C", @@ -123,8 +126,9 @@ "hygiene_plus": "Higiene+ 75 °C", "intensive": "Intensivo", "intensive_rapid": "Rápido intensivo", + "intensive_voice": "Intensivo", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Auto Universal 50 - 60°C", + "iot_auto_universal_soil": "Auto Universal 50-60°C", "iot_auto_wash_soil": "Auto Wash", "iot_baby_care": "Roupa de bebé", "iot_breakfast": "Pequeno-almoço", @@ -164,6 +168,13 @@ "iot_super_wash": "Lavagem Super", "iot_turbopower": "TurboPower", "iot_universal": "Universal 60 °C", + "iot_voice_automatic": "Automatic", + "iot_voice_delicate": "Delicados 45°C", + "iot_voice_eco": "Eco 45°C", + "iot_voice_intensive": "Intensivo 75°C", + "iot_voice_prewash": "Pré-lavagem", + "iot_voice_rapid_59": "Rápido 59'", + "iot_voice_universal": "Universal 60 °C", "iot_wok_grids_maxi_pans": "Tachos Especiais (Wok - Grelhas e Tachos Máxi)", "iot_wok_grids_maxi_pans_soil": "Tachos Especiais (Wok - Grelhas e Tachos Máxi)", "iot_yes_quick_cycle": "Yes Quick", @@ -195,6 +206,7 @@ "ultra_silent": "Ultra Silencioso 55°C", "universal": "Universal 60 °C", "universal_plus": "Universal plus 70 °C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "Programa" @@ -328,14 +340,14 @@ "hqd_bulky": "Itens volumosos", "hqd_casual": "Casual", "hqd_cold_wind_30": "Brisa fresca durante 30 minutos", - "hqd_cold_wind_timing": "Brisa fresca", + "hqd_cold_wind_timing": "Ar frio", "hqd_cotton": "Algodão", "hqd_curtain": "Cortinas", "hqd_delicate": "Roupa delicada", "hqd_diaper": "Fraldas", - "hqd_duvet": "Edredões", - "hqd_feather": "Blusões", - "hqd_hot_wind_timing": "Ar quente", + "hqd_duvet": "Casaco acolchoado em fibra sintética", + "hqd_feather": "Casaco acolchoado em fibra natural", + "hqd_hot_wind_timing": "Warm Embrace", "hqd_hygienic": "Higienização", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -345,10 +357,10 @@ "hqd_mix": "Mistos", "hqd_night_dry": "Secagem durante a noite", "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", + "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Rápido 20", "hqd_quick_30": "Rápido 30", - "hqd_quick_dry": "Secagem rápida 30'", + "hqd_quick_dry": "Secagem rápida automática de 30'", "hqd_quilt": "Colchas", "hqd_refresh": "Refrescar", "hqd_school_uniform": "Farda da escola", @@ -385,6 +397,8 @@ "iot_dry_gym_fit": "Roupa de desporto - Fitness", "iot_dry_lingerie": "Roupa interior", "iot_dry_mixed": "Mistos", + "iot_dry_pet_accessories": "Acessórios para animais", + "iot_dry_pet_hair_removal": "Remoção de pelos de animais de estimação (pré-lavagem)", "iot_dry_playsuits": "Macacões", "iot_dry_rapid_30": "Rapid 30", "iot_dry_rapid_59": "Rápido 59’.", @@ -436,9 +450,9 @@ "state": { "20_degrees_coloured_cottons": "20° Cores e Algodões", "20_degrees_new_energy_label": "20°C", - "active_steam": "Vapor", - "active_wash": "Lavagem Ativa", - "active_wash_steam": "Lavagem Ativa", + "active_steam": "Vapor 29'", + "active_wash": "Lavagem Ativa 20'", + "active_wash_steam": "Lavagem Ativa 20' + Vapor", "allergy_care": "Cuidado de Alergias", "allergy_care_pro": "Cuidado Alergias Pro", "all_in_one_49": "Tudo em Um 49'.", @@ -458,19 +472,19 @@ "cottons_steam": "Algodão + Vapor", "cotton_care_59": "Algodões 59 min", "delicate_59": "Delicados 59'", - "delicate_silk": "Seda delicada", + "delicate_silk": "Seda delicada 59'", "delicate_silk_steam": "Seda delicada + vapor", "delicati_59": "Delicados 59'", "delicati_59_steam": "Delicados 59'", "drain_spin": "Drenar +e Centrifugar", - "easy_iron": "Engomar Fácil", + "easy_iron": "Engomar Fácil 39'", "eco_40_60_new_energy_label": "Eco 40-60", "extra_care": "Cuidado extra", "fitness": "Fitness Care", "fitness_care": "Fitness Care", - "fresh_care": "Cuidado Fresco", + "fresh_care": "Cuidado Fresco 59'", "fresh_care_steam": "Fresh Care + Vapor", - "handwash_wool": "Lavagem manual e lã", + "handwash_wool": "Lavagem manual e lãs 48'", "high_dry": "Secagem de algodão", "hqd_20_degrees": "Algodão 20℃", "hqd_allergy": "Cuidado de Alergias", @@ -478,13 +492,13 @@ "hqd_babycare": "Roupa de bebé", "hqd_checkup": "Check-Up", "hqd_cottons": "Algodão", - "hqd_delicate": "Roupa delicada", + "hqd_delicate": "Roupa delicada 50'", "hqd_delicate_cradle": "Roupa delicada", "hqd_dry": "Secagem de algodão", "hqd_dry_synthetics": "Secos mistos", "hqd_duvet": "Edredãos", "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_handwash_wool": "Lãs", + "hqd_handwash_wool": "Lãs 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Misto", "hqd_quick_15": "Rápido 15'", @@ -495,7 +509,7 @@ "hqd_shirts": "Camisas", "hqd_smart": "Smart A.I.", "hqd_spin": "Centrifugar", - "hqd_sport": "Desporto", + "hqd_sport": "Desporto 25'", "hqd_super_fast": "Rápido 39’", "hqd_synthetic_and_coloured": "Sintéticos", "hygiene_59": "Higiene Plus 59'", @@ -506,8 +520,8 @@ "hygiene_pro_steam": "Hygiene Pro + Vapor", "intensive_40": "Intensivo 40°C", "intensive_40_steam": "Intensivo 40°C + vapor", - "iot_active_steam": "Vapor", - "iot_active_wash_steam": "Lavagem Ativa", + "iot_active_steam": "Vapor 29'", + "iot_active_wash_steam": "Lavagem Ativa 20' + Vapor", "iot_allergy_care_pro": "Cuidado Alergias Pro", "iot_all_in_one_59_steam": "Tudo em Um 59' + Vapor", "iot_checkup": "Check-Up", @@ -542,17 +556,18 @@ "iot_dry_technical_fabrics": "Tecidos técnicos", "iot_dry_warm_embrace": "Secagem a quente", "iot_dry_wool_dry": "Secagem de lãs", - "iot_easy_iron": "Engomar Fácil", + "iot_easy_iron": "Engomar Fácil 39'", "iot_fresh_care_steam": "Fresh Care + Vapor", "iot_hygiene_pro_steam": "Hygiene Pro + Vapor", "iot_intensive_40_steam": "Intensivo 40°C + vapor", + "iot_jeans_60_steam": "Gangas + vapor", "iot_mixed_steam": "Mistos + Vapor", "iot_mix_and_colour_59_steam": "Mistos E Cores 59' + Vapor", "iot_perfect_cotton_59_steam": "Algodao Perfeito 59'", "iot_rapid_a_class_60_steam": "Classe A rápida 60 + vapor", "iot_resistant_cotton_steam": "Algodão + Vapor", "iot_shirts_steam": "Camisas + Vapor", - "iot_single_item_steam": "Peça única + Vapor", + "iot_single_item_steam": "Peça única 20' + Vapor", "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Special 39' + Vapor", @@ -586,7 +601,7 @@ "iot_wash_coloured_bed_linen": "Roupa de cama de cores", "iot_wash_coloured_bed_linen_steam": "Roupa de cama de cores + vapor", "iot_wash_coloured_curtains": "Cortinas de cor", - "iot_wash_coloured_shirts": "Camisas de cor", + "iot_wash_coloured_shirts": "Camisas de cor 59'", "iot_wash_coloured_shirts_steam": "Camisas de cor + vapor", "iot_wash_coloured_steam": "Cores + Vapor", "iot_wash_coloured_tableclothes": "Toalhas de mesa de cor", @@ -623,7 +638,7 @@ "iot_wash_down_jackets_zelig": "Blusões", "iot_wash_duvet": "Edredãos", "iot_wash_fruit_stains": "Nódoas de fruta", - "iot_wash_gym_fit": "Vestuário de ginásio - fitness", + "iot_wash_gym_fit": "Vestuário de ginásio - fitness 59'", "iot_wash_handwash": "Lavagem à mão", "iot_wash_handwash_colored": "Lavagem à mão cores", "iot_wash_handwash_dark": "Lavagem à mão de escuros", @@ -686,6 +701,7 @@ "iot_wash_wool": "Lãs", "jeans": "Jeans", "jeans_60": "Jeans", + "jeans_60_steam": "Gangas + vapor", "low_dry": "Secos mistos", "mixed": "Mistos", "mixed_and_colored_59": "Misto e Cores 59'", @@ -709,7 +725,7 @@ "rinse": "Lavagem", "shirts_steam": "Camisas + Vapor", "silent_night": "Ciclo durante a noite", - "single_item": "Peça única", + "single_item": "Peça única 20'", "single_item_steam": "Peça única + Vapor", "smart_wash": "Smart Wash", "soft_care": "Cuidado Suave", @@ -725,8 +741,8 @@ "steam_39": "Vapor 39'", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - Algodões", - "steam_care_pro_delicates": "Steam Care Pro - Delicados", - "steam_care_pro_synthetic": "Steam Care Pro - Sintéticos", + "steam_care_pro_delicates": "Steam Care Pro - Delicados 16'", + "steam_care_pro_synthetic": "Steam Care Pro - Sintéticos 20'", "steam_hygiene_plus": "Hygiene Plus Steam", "synthetics": "Sintéticos", "synthetic_and_coloured": "Sintéticos e Cores", @@ -738,7 +754,7 @@ "wool": "Lãs", "wool_and_delicates_49": "Lãs/Delicados 49'", "wool_dry": "Secagem de lãs", - "wool_soft_care": "Lãs & Cuidado Suavidade" + "wool_soft_care": "Lãs & Cuidado Suavidade 48'" }, "name": "Programa" }, @@ -748,19 +764,24 @@ "cheese": "Queijo", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Modo Eco", + "fruits": "Fruits", "fruits_and_veg": "Fruit&Veg", "fruit_and_veg": "Fruit & Veg", "holiday": "HOLIDAY", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Nenhum modo selecionado", "quick_cool": "QUICK COOL", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Programa" @@ -964,22 +985,25 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Auto Hygiene", "auto_plus": "AutoPlus", + "auto_plus_soil": "Sujidade Auto Plus", "auto_rapid": "Auto Rapid", + "auto_rapid_soil": "Sujidade Auto Rápida", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Auto Universal 50 - 60°C", - "auto_universal_plus": "Auto Universal Plus 65 - 75°C", - "auto_universal_plus_soil": "Auto Universal Plus 65 - 75°C", - "auto_universal_soil": "Auto Universal 50 - 60°C", + "auto_universal": "Auto Universal 50-60°C", + "auto_universal_plus": "Auto Universal Plus 65-75°C", + "auto_universal_plus_soil": "Auto Universal Plus 65-75°C", + "auto_universal_soil": "Auto Universal 50-60°C", "auto_wash": "Auto Wash", "auto_wash_soil": "Auto Wash", "classe_a_59": "Classe A 59' 65°C", "delicate": "Delicados 45°C", "dishwasher_care": "Ciclo de limpeza de calcário", - "eco": "Eco", + "eco": "Eco 45°C", "eco_asynch": "Eco 45°C", "eco_bldc": "Eco 45°C", "eco_synch": "Eco 45°C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "Vidro", "glassware": "Vidros 45 °C", @@ -988,8 +1012,9 @@ "hygiene_plus": "Higiene+ 75 °C", "intensive": "Intensivo", "intensive_rapid": "Rápido intensivo", + "intensive_voice": "Intensivo", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Auto Universal 50 - 60°C", + "iot_auto_universal_soil": "Auto Universal 50-60°C", "iot_auto_wash_soil": "Auto Wash", "iot_baby_care": "Roupa de bebé", "iot_breakfast": "Pequeno-almoço", @@ -1029,6 +1054,13 @@ "iot_super_wash": "Lavagem Super", "iot_turbopower": "TurboPower", "iot_universal": "Universal 60 °C", + "iot_voice_automatic": "Automatic", + "iot_voice_delicate": "Delicados 45°C", + "iot_voice_eco": "Eco 45°C", + "iot_voice_intensive": "Intensivo 75°C", + "iot_voice_prewash": "Pré-lavagem", + "iot_voice_rapid_59": "Rápido 59'", + "iot_voice_universal": "Universal 60 °C", "iot_wok_grids_maxi_pans": "Tachos Especiais (Wok - Grelhas e Tachos Máxi)", "iot_wok_grids_maxi_pans_soil": "Tachos Especiais (Wok - Grelhas e Tachos Máxi)", "iot_yes_quick_cycle": "Yes Quick", @@ -1060,6 +1092,7 @@ "ultra_silent": "Ultra Silencioso 55°C", "universal": "Universal 60 °C", "universal_plus": "Universal plus 70 °C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "Programa" @@ -1193,14 +1226,14 @@ "hqd_bulky": "Itens volumosos", "hqd_casual": "Casual", "hqd_cold_wind_30": "Brisa fresca durante 30 minutos", - "hqd_cold_wind_timing": "Brisa fresca", + "hqd_cold_wind_timing": "Ar frio", "hqd_cotton": "Algodão", "hqd_curtain": "Cortinas", "hqd_delicate": "Roupa delicada", "hqd_diaper": "Fraldas", - "hqd_duvet": "Edredões", - "hqd_feather": "Blusões", - "hqd_hot_wind_timing": "Ar quente", + "hqd_duvet": "Casaco acolchoado em fibra sintética", + "hqd_feather": "Casaco acolchoado em fibra natural", + "hqd_hot_wind_timing": "Warm Embrace", "hqd_hygienic": "Higienização", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -1210,10 +1243,10 @@ "hqd_mix": "Mistos", "hqd_night_dry": "Secagem durante a noite", "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", + "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Rápido 20", "hqd_quick_30": "Rápido 30", - "hqd_quick_dry": "Secagem rápida 30'", + "hqd_quick_dry": "Secagem rápida automática de 30'", "hqd_quilt": "Colchas", "hqd_refresh": "Refrescar", "hqd_school_uniform": "Farda da escola", @@ -1250,6 +1283,8 @@ "iot_dry_gym_fit": "Roupa de desporto - Fitness", "iot_dry_lingerie": "Roupa interior", "iot_dry_mixed": "Mistos", + "iot_dry_pet_accessories": "Acessórios para animais", + "iot_dry_pet_hair_removal": "Remoção de pelos de animais de estimação (pré-lavagem)", "iot_dry_playsuits": "Macacões", "iot_dry_rapid_30": "Rapid 30", "iot_dry_rapid_59": "Rápido 59’.", @@ -1301,9 +1336,9 @@ "state": { "20_degrees_coloured_cottons": "20° Cores e Algodões", "20_degrees_new_energy_label": "20°C", - "active_steam": "Vapor", - "active_wash": "Lavagem Ativa", - "active_wash_steam": "Lavagem Ativa", + "active_steam": "Vapor 29'", + "active_wash": "Lavagem Ativa 20'", + "active_wash_steam": "Lavagem Ativa 20' + Vapor", "allergy_care": "Cuidado de Alergias", "allergy_care_pro": "Cuidado Alergias Pro", "all_in_one_49": "Tudo em Um 49'.", @@ -1323,19 +1358,19 @@ "cottons_steam": "Algodão + Vapor", "cotton_care_59": "Algodões 59 min", "delicate_59": "Delicados 59'", - "delicate_silk": "Seda delicada", + "delicate_silk": "Seda delicada 59'", "delicate_silk_steam": "Seda delicada + vapor", "delicati_59": "Delicados 59'", "delicati_59_steam": "Delicados 59'", "drain_spin": "Drenar +e Centrifugar", - "easy_iron": "Engomar Fácil", + "easy_iron": "Engomar Fácil 39'", "eco_40_60_new_energy_label": "Eco 40-60", "extra_care": "Cuidado extra", "fitness": "Fitness Care", "fitness_care": "Fitness Care", - "fresh_care": "Cuidado Fresco", + "fresh_care": "Cuidado Fresco 59'", "fresh_care_steam": "Fresh Care + Vapor", - "handwash_wool": "Lavagem manual e lã", + "handwash_wool": "Lavagem manual e lãs 48'", "high_dry": "Secagem de algodão", "hqd_20_degrees": "Algodão 20℃", "hqd_allergy": "Cuidado de Alergias", @@ -1343,13 +1378,13 @@ "hqd_babycare": "Roupa de bebé", "hqd_checkup": "Check-Up", "hqd_cottons": "Algodão", - "hqd_delicate": "Roupa delicada", + "hqd_delicate": "Roupa delicada 50'", "hqd_delicate_cradle": "Roupa delicada", "hqd_dry": "Secagem de algodão", "hqd_dry_synthetics": "Secos mistos", "hqd_duvet": "Edredãos", "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_handwash_wool": "Lãs", + "hqd_handwash_wool": "Lãs 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Misto", "hqd_quick_15": "Rápido 15'", @@ -1360,7 +1395,7 @@ "hqd_shirts": "Camisas", "hqd_smart": "Smart A.I.", "hqd_spin": "Centrifugar", - "hqd_sport": "Desporto", + "hqd_sport": "Desporto 25'", "hqd_super_fast": "Rápido 39’", "hqd_synthetic_and_coloured": "Sintéticos", "hygiene_59": "Higiene Plus 59'", @@ -1371,8 +1406,8 @@ "hygiene_pro_steam": "Hygiene Pro + Vapor", "intensive_40": "Intensivo 40°C", "intensive_40_steam": "Intensivo 40°C + vapor", - "iot_active_steam": "Vapor", - "iot_active_wash_steam": "Lavagem Ativa", + "iot_active_steam": "Vapor 29'", + "iot_active_wash_steam": "Lavagem Ativa 20' + Vapor", "iot_allergy_care_pro": "Cuidado Alergias Pro", "iot_all_in_one_59_steam": "Tudo em Um 59' + Vapor", "iot_checkup": "Check-Up", @@ -1407,17 +1442,18 @@ "iot_dry_technical_fabrics": "Tecidos técnicos", "iot_dry_warm_embrace": "Secagem a quente", "iot_dry_wool_dry": "Secagem de lãs", - "iot_easy_iron": "Engomar Fácil", + "iot_easy_iron": "Engomar Fácil 39'", "iot_fresh_care_steam": "Fresh Care + Vapor", "iot_hygiene_pro_steam": "Hygiene Pro + Vapor", "iot_intensive_40_steam": "Intensivo 40°C + vapor", + "iot_jeans_60_steam": "Gangas + vapor", "iot_mixed_steam": "Mistos + Vapor", "iot_mix_and_colour_59_steam": "Mistos E Cores 59' + Vapor", "iot_perfect_cotton_59_steam": "Algodao Perfeito 59'", "iot_rapid_a_class_60_steam": "Classe A rápida 60 + vapor", "iot_resistant_cotton_steam": "Algodão + Vapor", "iot_shirts_steam": "Camisas + Vapor", - "iot_single_item_steam": "Peça única + Vapor", + "iot_single_item_steam": "Peça única 20' + Vapor", "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Special 39' + Vapor", @@ -1451,7 +1487,7 @@ "iot_wash_coloured_bed_linen": "Roupa de cama de cores", "iot_wash_coloured_bed_linen_steam": "Roupa de cama de cores + vapor", "iot_wash_coloured_curtains": "Cortinas de cor", - "iot_wash_coloured_shirts": "Camisas de cor", + "iot_wash_coloured_shirts": "Camisas de cor 59'", "iot_wash_coloured_shirts_steam": "Camisas de cor + vapor", "iot_wash_coloured_steam": "Cores + Vapor", "iot_wash_coloured_tableclothes": "Toalhas de mesa de cor", @@ -1488,7 +1524,7 @@ "iot_wash_down_jackets_zelig": "Blusões", "iot_wash_duvet": "Edredãos", "iot_wash_fruit_stains": "Nódoas de fruta", - "iot_wash_gym_fit": "Vestuário de ginásio - fitness", + "iot_wash_gym_fit": "Vestuário de ginásio - fitness 59'", "iot_wash_handwash": "Lavagem à mão", "iot_wash_handwash_colored": "Lavagem à mão cores", "iot_wash_handwash_dark": "Lavagem à mão de escuros", @@ -1551,6 +1587,7 @@ "iot_wash_wool": "Lãs", "jeans": "Jeans", "jeans_60": "Jeans", + "jeans_60_steam": "Gangas + vapor", "low_dry": "Secos mistos", "mixed": "Mistos", "mixed_and_colored_59": "Misto e Cores 59'", @@ -1574,7 +1611,7 @@ "rinse": "Lavagem", "shirts_steam": "Camisas + Vapor", "silent_night": "Ciclo durante a noite", - "single_item": "Peça única", + "single_item": "Peça única 20'", "single_item_steam": "Peça única + Vapor", "smart_wash": "Smart Wash", "soft_care": "Cuidado Suave", @@ -1590,8 +1627,8 @@ "steam_39": "Vapor 39'", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - Algodões", - "steam_care_pro_delicates": "Steam Care Pro - Delicados", - "steam_care_pro_synthetic": "Steam Care Pro - Sintéticos", + "steam_care_pro_delicates": "Steam Care Pro - Delicados 16'", + "steam_care_pro_synthetic": "Steam Care Pro - Sintéticos 20'", "steam_hygiene_plus": "Hygiene Plus Steam", "synthetics": "Sintéticos", "synthetic_and_coloured": "Sintéticos e Cores", @@ -1603,7 +1640,7 @@ "wool": "Lãs", "wool_and_delicates_49": "Lãs/Delicados 49'", "wool_dry": "Secagem de lãs", - "wool_soft_care": "Lãs & Cuidado Suavidade" + "wool_soft_care": "Lãs & Cuidado Suavidade 48'" }, "name": "Programa" }, @@ -1613,19 +1650,24 @@ "cheese": "Queijo", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Modo Eco", + "fruits": "Fruits", "fruits_and_veg": "Fruit&Veg", "fruit_and_veg": "Fruit & Veg", "holiday": "HOLIDAY", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Nenhum modo selecionado", "quick_cool": "QUICK COOL", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Programa" diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index 4f0b0fb..7146920 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -99,22 +99,25 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Autoigienă", "auto_plus": "AutoPlus", + "auto_plus_soil": "Auto Plus", "auto_rapid": "Auto Rapid", + "auto_rapid_soil": "Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Auto Universal 50 - 60°C", - "auto_universal_plus": "Auto Universal+ 65 - 75°C", - "auto_universal_plus_soil": "Auto Universal+ 65 - 75°C", - "auto_universal_soil": "Auto Universal 50 - 60°C", + "auto_universal": "Auto Universal 50-60°C", + "auto_universal_plus": "Auto Universal+ 65-75°C", + "auto_universal_plus_soil": "Auto Universal+ 65-75°C", + "auto_universal_soil": "Auto Universal 50-60°C", "auto_wash": "Spălare automată", "auto_wash_soil": "Spălare automată", "classe_a_59": "Clasa A 59' 65°C", "delicate": "Delicate 45°C", "dishwasher_care": "Ciclu de curățare a calcarului", - "eco": "Eco", + "eco": "Eco 45°C", "eco_asynch": "Eco 45°C", "eco_bldc": "Eco 45°C", "eco_synch": "Eco 45°C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "Sticlă", "glassware": "Sticlărie 45 °C", @@ -123,8 +126,9 @@ "hygiene_plus": "Igienă+ 75 °C", "intensive": "Intensiv", "intensive_rapid": "rapid intensiv", + "intensive_voice": "Intensiv", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Auto Universal 50 - 60°C", + "iot_auto_universal_soil": "Auto Universal 50-60°C", "iot_auto_wash_soil": "Spălare automată", "iot_baby_care": "Îngrijirea bebelușilor", "iot_breakfast": "Mic dejun", @@ -164,6 +168,13 @@ "iot_super_wash": "Super spălare", "iot_turbopower": "Putere Turbo", "iot_universal": "Universal 60 °C", + "iot_voice_automatic": "Automatic", + "iot_voice_delicate": "Delicate 45°C", + "iot_voice_eco": "Eco 45°C", + "iot_voice_intensive": "Intensiv 75°C", + "iot_voice_prewash": "Prespălare", + "iot_voice_rapid_59": "Rapid 59'", + "iot_voice_universal": "Universal 60 °C", "iot_wok_grids_maxi_pans": "Recipiente speciale (Wok - Grătare & Oale mari)", "iot_wok_grids_maxi_pans_soil": "Recipiente speciale (Wok - Grătare & Oale mari)", "iot_yes_quick_cycle": "Yes Quick", @@ -195,6 +206,7 @@ "ultra_silent": "Ultra Silențios 55°C", "universal": "Universal 60 °C", "universal_plus": "Universal Plus 70 °C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "Program" @@ -328,14 +340,14 @@ "hqd_bulky": "Articole voluminoase", "hqd_casual": "Articole obișnuite", "hqd_cold_wind_30": "Vânt rece 30 minute", - "hqd_cold_wind_timing": "Vânt rece", + "hqd_cold_wind_timing": "Aer rece", "hqd_cotton": "Bumbac", "hqd_curtain": "Perdele", "hqd_delicate": "Delicate", "hqd_diaper": "Scutece", - "hqd_duvet": "Cuvertură", - "hqd_feather": "Geci", - "hqd_hot_wind_timing": "Aer cald", + "hqd_duvet": "Jachetă matlasată din fibre sintetice", + "hqd_feather": "Jachetă matlasată din fibre naturale", + "hqd_hot_wind_timing": "Îmbrățișare caldă", "hqd_hygienic": "Igienizare", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -345,10 +357,10 @@ "hqd_mix": "Mixte", "hqd_night_dry": "Uscare peste noapte", "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", + "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Rapid 20", "hqd_quick_30": "Rapid 30", - "hqd_quick_dry": "Uscare rapidă 30'", + "hqd_quick_dry": "Uscare rapidă automată de 30'", "hqd_quilt": "Pilote", "hqd_refresh": "Reîmprospătare", "hqd_school_uniform": "Uniformă școlară", @@ -385,6 +397,8 @@ "iot_dry_gym_fit": "Articole sportive - Fitness", "iot_dry_lingerie": "Lenjerie", "iot_dry_mixed": "Mixte", + "iot_dry_pet_accessories": "Accesorii pentru animale de casă", + "iot_dry_pet_hair_removal": "Îndepărtarea părului de animale de casă (pre-spălare)", "iot_dry_playsuits": "Haine de joacă", "iot_dry_rapid_30": "Rapid 30", "iot_dry_rapid_59": "Rapid 59'.", @@ -436,9 +450,9 @@ "state": { "20_degrees_coloured_cottons": "20° Colorate și bumbac", "20_degrees_new_energy_label": "20 °C", - "active_steam": "Abur", - "active_wash": "Spălare activă", - "active_wash_steam": "Spălare activă", + "active_steam": "Abur 29'", + "active_wash": "Spălare activă 20'", + "active_wash_steam": "Spălare activă 20' + abur", "allergy_care": "Îngrijire antialergică", "allergy_care_pro": "Îngrijire alergie pro", "all_in_one_49": "Toate în One 49'.", @@ -458,17 +472,17 @@ "cottons_steam": "Bumbac + Abur", "cotton_care_59": "Bumbac 59 Min", "delicate_59": "Delicate 59'", - "delicate_silk": "Mătase delicată", + "delicate_silk": "Mătase delicată 59'", "delicate_silk_steam": "Mătase delicată + abur", "delicati_59": "Delicate 59'", "delicati_59_steam": "Delicate 59'", "drain_spin": "Drenare +și stoarcere", - "easy_iron": "Călcare ușoară", + "easy_iron": "Călcare ușoară 39'", "eco_40_60_new_energy_label": "Eco 40-60", "extra_care": "Îngrijire Suplimentară", "fitness": "Fitness Care", "fitness_care": "Fitness Care", - "fresh_care": "Îngrijire proaspătă", + "fresh_care": "Îngrijire proaspătă 59'", "fresh_care_steam": "Îngrijire proaspătă + abur", "handwash_wool": "Spălare manuală și lână", "high_dry": "Uscarea bumbacului", @@ -478,13 +492,13 @@ "hqd_babycare": "Îngrijirea bebelușilor", "hqd_checkup": "Verificare", "hqd_cottons": "Bumbac", - "hqd_delicate": "Delicate", + "hqd_delicate": "Delicate 50'", "hqd_delicate_cradle": "Delicate", "hqd_dry": "Uscarea bumbacului", "hqd_dry_synthetics": "Uscarea fibrelor mixte", "hqd_duvet": "Pătură", "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_handwash_wool": "Lână", + "hqd_handwash_wool": "Lână 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Mixte", "hqd_quick_15": "Rapid 15'", @@ -495,7 +509,7 @@ "hqd_shirts": "Cămăși", "hqd_smart": "Smart A.I.", "hqd_spin": "Stoarcere", - "hqd_sport": "Sport", + "hqd_sport": "Sport 25'", "hqd_super_fast": "Rapid 39’", "hqd_synthetic_and_coloured": "Sintetice", "hygiene_59": "Igiena Plus 59'", @@ -506,8 +520,8 @@ "hygiene_pro_steam": "Hygiene Pro + Abur", "intensive_40": "Intensiv 40°C", "intensive_40_steam": "Intensiv 40°C + Abur", - "iot_active_steam": "Abur", - "iot_active_wash_steam": "Spălare activă", + "iot_active_steam": "Abur 29'", + "iot_active_wash_steam": "Spălare activă 20' + abur", "iot_allergy_care_pro": "Îngrijire alergie pro", "iot_all_in_one_59_steam": "Toate în One 59' + abur", "iot_checkup": "Verificare", @@ -542,17 +556,18 @@ "iot_dry_technical_fabrics": "Materiale tehnice", "iot_dry_warm_embrace": "Uscarea în tambur", "iot_dry_wool_dry": "Uscarea lânii", - "iot_easy_iron": "Călcare ușoară", + "iot_easy_iron": "Călcare ușoară 39'", "iot_fresh_care_steam": "Îngrijire proaspătă + abur", "iot_hygiene_pro_steam": "Hygiene Pro + Abur", "iot_intensive_40_steam": "Intensiv 40°C + Abur", + "iot_jeans_60_steam": "Blugi + abur", "iot_mixed_steam": "Mixte + Abur", "iot_mix_and_colour_59_steam": "Mixte și colorate 59' + abur", "iot_perfect_cotton_59_steam": "Bumbac Perfect 59'", "iot_rapid_a_class_60_steam": "Rapid Clasa A 60 + Abur", "iot_resistant_cotton_steam": "Bumbac + Abur", "iot_shirts_steam": "Cămăși + Abur", - "iot_single_item_steam": "Un singur articol + abur", + "iot_single_item_steam": "Un singur articol 20' + abur", "iot_smart_wash": "Spălare inteligentă", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Special 39' + abur", @@ -586,7 +601,7 @@ "iot_wash_coloured_bed_linen": "Lenjerie de pat colorată", "iot_wash_coloured_bed_linen_steam": "Lenjerie de pat colorată + Abur", "iot_wash_coloured_curtains": "Perdele colorate", - "iot_wash_coloured_shirts": "Cămăși colorate", + "iot_wash_coloured_shirts": "Cămăși colorate 59'", "iot_wash_coloured_shirts_steam": "Cămăși colorate + Abur", "iot_wash_coloured_steam": "Culori + Abur", "iot_wash_coloured_tableclothes": "Fețe de masa colorate", @@ -623,7 +638,7 @@ "iot_wash_down_jackets_zelig": "Geci", "iot_wash_duvet": "Pătură", "iot_wash_fruit_stains": "Pete de fructe", - "iot_wash_gym_fit": "Fitness - haine de fitness", + "iot_wash_gym_fit": "Fitness - haine de fitness 59'", "iot_wash_handwash": "Spălare manuală", "iot_wash_handwash_colored": "Spălare manuală colorate", "iot_wash_handwash_dark": "Spălare manuală închise la culoare", @@ -686,6 +701,7 @@ "iot_wash_wool": "Lână", "jeans": "Blugi", "jeans_60": "Jeans", + "jeans_60_steam": "Blugi + abur", "low_dry": "Uscarea fibrelor mixte", "mixed": "Mixte", "mixed_and_colored_59": "Mixte și colorate 59’", @@ -709,7 +725,7 @@ "rinse": "Clătire", "shirts_steam": "Cămăși + Abur", "silent_night": "Ciclu peste noapte", - "single_item": "Un singur articol", + "single_item": "Un singur articol 20'", "single_item_steam": "Un singur articol + abur", "smart_wash": "Spălare inteligentă", "soft_care": "Îngrijire blândă", @@ -725,8 +741,8 @@ "steam_39": "Abur 39'", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - bumbac", - "steam_care_pro_delicates": "Steam Care Pro - delicate", - "steam_care_pro_synthetic": "Steam Care Pro - sintetice", + "steam_care_pro_delicates": "Steam Care Pro - delicate 16'", + "steam_care_pro_synthetic": "Steam Care Pro - sintetice 20'", "steam_hygiene_plus": "Hygiene Plus Steam", "synthetics": "Sintetice", "synthetic_and_coloured": "Sintetice și colorate", @@ -738,7 +754,7 @@ "wool": "Lână", "wool_and_delicates_49": "Lână/Delicate 49'", "wool_dry": "Uscarea lânii", - "wool_soft_care": "Lână & Îngrijire Blândă" + "wool_soft_care": "Lână & Îngrijire Blândă 48'" }, "name": "Program" }, @@ -748,19 +764,24 @@ "cheese": "Brânză", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Modul Eco", + "fruits": "Fruits", "fruits_and_veg": "Fruit&Veg (Fructe și legume)", "fruit_and_veg": "Fruit & Veg", "holiday": "HOLIDAY (Perioadă de neutilizare)", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Niciun mod selectat", "quick_cool": "QUICK COOL", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL (Răcire rapidă)", "super_freeze": "SUPER FREEZE (Congelare rapidă)", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Program" @@ -964,22 +985,25 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Autoigienă", "auto_plus": "AutoPlus", + "auto_plus_soil": "Auto Plus", "auto_rapid": "Auto Rapid", + "auto_rapid_soil": "Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Auto Universal 50 - 60°C", - "auto_universal_plus": "Auto Universal+ 65 - 75°C", - "auto_universal_plus_soil": "Auto Universal+ 65 - 75°C", - "auto_universal_soil": "Auto Universal 50 - 60°C", + "auto_universal": "Auto Universal 50-60°C", + "auto_universal_plus": "Auto Universal+ 65-75°C", + "auto_universal_plus_soil": "Auto Universal+ 65-75°C", + "auto_universal_soil": "Auto Universal 50-60°C", "auto_wash": "Spălare automată", "auto_wash_soil": "Spălare automată", "classe_a_59": "Clasa A 59' 65°C", "delicate": "Delicate 45°C", "dishwasher_care": "Ciclu de curățare a calcarului", - "eco": "Eco", + "eco": "Eco 45°C", "eco_asynch": "Eco 45°C", "eco_bldc": "Eco 45°C", "eco_synch": "Eco 45°C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "Sticlă", "glassware": "Sticlărie 45 °C", @@ -988,8 +1012,9 @@ "hygiene_plus": "Igienă+ 75 °C", "intensive": "Intensiv", "intensive_rapid": "rapid intensiv", + "intensive_voice": "Intensiv", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Auto Universal 50 - 60°C", + "iot_auto_universal_soil": "Auto Universal 50-60°C", "iot_auto_wash_soil": "Spălare automată", "iot_baby_care": "Îngrijirea bebelușilor", "iot_breakfast": "Mic dejun", @@ -1029,6 +1054,13 @@ "iot_super_wash": "Super spălare", "iot_turbopower": "Putere Turbo", "iot_universal": "Universal 60 °C", + "iot_voice_automatic": "Automatic", + "iot_voice_delicate": "Delicate 45°C", + "iot_voice_eco": "Eco 45°C", + "iot_voice_intensive": "Intensiv 75°C", + "iot_voice_prewash": "Prespălare", + "iot_voice_rapid_59": "Rapid 59'", + "iot_voice_universal": "Universal 60 °C", "iot_wok_grids_maxi_pans": "Recipiente speciale (Wok - Grătare & Oale mari)", "iot_wok_grids_maxi_pans_soil": "Recipiente speciale (Wok - Grătare & Oale mari)", "iot_yes_quick_cycle": "Yes Quick", @@ -1060,6 +1092,7 @@ "ultra_silent": "Ultra Silențios 55°C", "universal": "Universal 60 °C", "universal_plus": "Universal Plus 70 °C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "Program" @@ -1193,14 +1226,14 @@ "hqd_bulky": "Articole voluminoase", "hqd_casual": "Articole obișnuite", "hqd_cold_wind_30": "Vânt rece 30 minute", - "hqd_cold_wind_timing": "Vânt rece", + "hqd_cold_wind_timing": "Aer rece", "hqd_cotton": "Bumbac", "hqd_curtain": "Perdele", "hqd_delicate": "Delicate", "hqd_diaper": "Scutece", - "hqd_duvet": "Cuvertură", - "hqd_feather": "Geci", - "hqd_hot_wind_timing": "Aer cald", + "hqd_duvet": "Jachetă matlasată din fibre sintetice", + "hqd_feather": "Jachetă matlasată din fibre naturale", + "hqd_hot_wind_timing": "Îmbrățișare caldă", "hqd_hygienic": "Igienizare", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -1210,10 +1243,10 @@ "hqd_mix": "Mixte", "hqd_night_dry": "Uscare peste noapte", "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", + "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Rapid 20", "hqd_quick_30": "Rapid 30", - "hqd_quick_dry": "Uscare rapidă 30'", + "hqd_quick_dry": "Uscare rapidă automată de 30'", "hqd_quilt": "Pilote", "hqd_refresh": "Reîmprospătare", "hqd_school_uniform": "Uniformă școlară", @@ -1250,6 +1283,8 @@ "iot_dry_gym_fit": "Articole sportive - Fitness", "iot_dry_lingerie": "Lenjerie", "iot_dry_mixed": "Mixte", + "iot_dry_pet_accessories": "Accesorii pentru animale de casă", + "iot_dry_pet_hair_removal": "Îndepărtarea părului de animale de casă (pre-spălare)", "iot_dry_playsuits": "Haine de joacă", "iot_dry_rapid_30": "Rapid 30", "iot_dry_rapid_59": "Rapid 59'.", @@ -1301,9 +1336,9 @@ "state": { "20_degrees_coloured_cottons": "20° Colorate și bumbac", "20_degrees_new_energy_label": "20 °C", - "active_steam": "Abur", - "active_wash": "Spălare activă", - "active_wash_steam": "Spălare activă", + "active_steam": "Abur 29'", + "active_wash": "Spălare activă 20'", + "active_wash_steam": "Spălare activă 20' + abur", "allergy_care": "Îngrijire antialergică", "allergy_care_pro": "Îngrijire alergie pro", "all_in_one_49": "Toate în One 49'.", @@ -1323,17 +1358,17 @@ "cottons_steam": "Bumbac + Abur", "cotton_care_59": "Bumbac 59 Min", "delicate_59": "Delicate 59'", - "delicate_silk": "Mătase delicată", + "delicate_silk": "Mătase delicată 59'", "delicate_silk_steam": "Mătase delicată + abur", "delicati_59": "Delicate 59'", "delicati_59_steam": "Delicate 59'", "drain_spin": "Drenare +și stoarcere", - "easy_iron": "Călcare ușoară", + "easy_iron": "Călcare ușoară 39'", "eco_40_60_new_energy_label": "Eco 40-60", "extra_care": "Îngrijire Suplimentară", "fitness": "Fitness Care", "fitness_care": "Fitness Care", - "fresh_care": "Îngrijire proaspătă", + "fresh_care": "Îngrijire proaspătă 59'", "fresh_care_steam": "Îngrijire proaspătă + abur", "handwash_wool": "Spălare manuală și lână", "high_dry": "Uscarea bumbacului", @@ -1343,13 +1378,13 @@ "hqd_babycare": "Îngrijirea bebelușilor", "hqd_checkup": "Verificare", "hqd_cottons": "Bumbac", - "hqd_delicate": "Delicate", + "hqd_delicate": "Delicate 50'", "hqd_delicate_cradle": "Delicate", "hqd_dry": "Uscarea bumbacului", "hqd_dry_synthetics": "Uscarea fibrelor mixte", "hqd_duvet": "Pătură", "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_handwash_wool": "Lână", + "hqd_handwash_wool": "Lână 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Mixte", "hqd_quick_15": "Rapid 15'", @@ -1360,7 +1395,7 @@ "hqd_shirts": "Cămăși", "hqd_smart": "Smart A.I.", "hqd_spin": "Stoarcere", - "hqd_sport": "Sport", + "hqd_sport": "Sport 25'", "hqd_super_fast": "Rapid 39’", "hqd_synthetic_and_coloured": "Sintetice", "hygiene_59": "Igiena Plus 59'", @@ -1371,8 +1406,8 @@ "hygiene_pro_steam": "Hygiene Pro + Abur", "intensive_40": "Intensiv 40°C", "intensive_40_steam": "Intensiv 40°C + Abur", - "iot_active_steam": "Abur", - "iot_active_wash_steam": "Spălare activă", + "iot_active_steam": "Abur 29'", + "iot_active_wash_steam": "Spălare activă 20' + abur", "iot_allergy_care_pro": "Îngrijire alergie pro", "iot_all_in_one_59_steam": "Toate în One 59' + abur", "iot_checkup": "Verificare", @@ -1407,17 +1442,18 @@ "iot_dry_technical_fabrics": "Materiale tehnice", "iot_dry_warm_embrace": "Uscarea în tambur", "iot_dry_wool_dry": "Uscarea lânii", - "iot_easy_iron": "Călcare ușoară", + "iot_easy_iron": "Călcare ușoară 39'", "iot_fresh_care_steam": "Îngrijire proaspătă + abur", "iot_hygiene_pro_steam": "Hygiene Pro + Abur", "iot_intensive_40_steam": "Intensiv 40°C + Abur", + "iot_jeans_60_steam": "Blugi + abur", "iot_mixed_steam": "Mixte + Abur", "iot_mix_and_colour_59_steam": "Mixte și colorate 59' + abur", "iot_perfect_cotton_59_steam": "Bumbac Perfect 59'", "iot_rapid_a_class_60_steam": "Rapid Clasa A 60 + Abur", "iot_resistant_cotton_steam": "Bumbac + Abur", "iot_shirts_steam": "Cămăși + Abur", - "iot_single_item_steam": "Un singur articol + abur", + "iot_single_item_steam": "Un singur articol 20' + abur", "iot_smart_wash": "Spălare inteligentă", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Special 39' + abur", @@ -1451,7 +1487,7 @@ "iot_wash_coloured_bed_linen": "Lenjerie de pat colorată", "iot_wash_coloured_bed_linen_steam": "Lenjerie de pat colorată + Abur", "iot_wash_coloured_curtains": "Perdele colorate", - "iot_wash_coloured_shirts": "Cămăși colorate", + "iot_wash_coloured_shirts": "Cămăși colorate 59'", "iot_wash_coloured_shirts_steam": "Cămăși colorate + Abur", "iot_wash_coloured_steam": "Culori + Abur", "iot_wash_coloured_tableclothes": "Fețe de masa colorate", @@ -1488,7 +1524,7 @@ "iot_wash_down_jackets_zelig": "Geci", "iot_wash_duvet": "Pătură", "iot_wash_fruit_stains": "Pete de fructe", - "iot_wash_gym_fit": "Fitness - haine de fitness", + "iot_wash_gym_fit": "Fitness - haine de fitness 59'", "iot_wash_handwash": "Spălare manuală", "iot_wash_handwash_colored": "Spălare manuală colorate", "iot_wash_handwash_dark": "Spălare manuală închise la culoare", @@ -1551,6 +1587,7 @@ "iot_wash_wool": "Lână", "jeans": "Blugi", "jeans_60": "Jeans", + "jeans_60_steam": "Blugi + abur", "low_dry": "Uscarea fibrelor mixte", "mixed": "Mixte", "mixed_and_colored_59": "Mixte și colorate 59’", @@ -1574,7 +1611,7 @@ "rinse": "Clătire", "shirts_steam": "Cămăși + Abur", "silent_night": "Ciclu peste noapte", - "single_item": "Un singur articol", + "single_item": "Un singur articol 20'", "single_item_steam": "Un singur articol + abur", "smart_wash": "Spălare inteligentă", "soft_care": "Îngrijire blândă", @@ -1590,8 +1627,8 @@ "steam_39": "Abur 39'", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - bumbac", - "steam_care_pro_delicates": "Steam Care Pro - delicate", - "steam_care_pro_synthetic": "Steam Care Pro - sintetice", + "steam_care_pro_delicates": "Steam Care Pro - delicate 16'", + "steam_care_pro_synthetic": "Steam Care Pro - sintetice 20'", "steam_hygiene_plus": "Hygiene Plus Steam", "synthetics": "Sintetice", "synthetic_and_coloured": "Sintetice și colorate", @@ -1603,7 +1640,7 @@ "wool": "Lână", "wool_and_delicates_49": "Lână/Delicate 49'", "wool_dry": "Uscarea lânii", - "wool_soft_care": "Lână & Îngrijire Blândă" + "wool_soft_care": "Lână & Îngrijire Blândă 48'" }, "name": "Program" }, @@ -1613,19 +1650,24 @@ "cheese": "Brânză", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Modul Eco", + "fruits": "Fruits", "fruits_and_veg": "Fruit&Veg (Fructe și legume)", "fruit_and_veg": "Fruit & Veg", "holiday": "HOLIDAY (Perioadă de neutilizare)", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Niciun mod selectat", "quick_cool": "QUICK COOL", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL (Răcire rapidă)", "super_freeze": "SUPER FREEZE (Congelare rapidă)", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Program" diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index 49a16b3..49d0259 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -99,22 +99,25 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Автоочистка", "auto_plus": "AutoPlus", + "auto_plus_soil": "Авто плюс загрязнение", "auto_rapid": "Быстрая Автомойка", + "auto_rapid_soil": "Авто быстрое загрязнение", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "авто универсальная 50 - 60°C", - "auto_universal_plus": "авто универсальная плюс 65 - 75°C", - "auto_universal_plus_soil": "авто универсальная плюс 65 - 75°C", - "auto_universal_soil": "авто универсальная 50 - 60°C", + "auto_universal": "авто универсальная 50-60°C", + "auto_universal_plus": "авто универсальная плюс 65-75°C", + "auto_universal_plus_soil": "авто универсальная плюс 65-75°C", + "auto_universal_soil": "авто универсальная 50-60°C", "auto_wash": "Auto Wash", "auto_wash_soil": "Auto Wash", "classe_a_59": "а класс за 1 час 65°C", "delicate": "деликатная 45°C", "dishwasher_care": "Цикл очистки от накипи", - "eco": "Эко", + "eco": "эко 45°C", "eco_asynch": "эко 45°C", "eco_bldc": "эко 45°C", "eco_synch": "эко 45°C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "Стекло", "glassware": "стекло 45°C", @@ -123,8 +126,9 @@ "hygiene_plus": "гигиена+ 75°C", "intensive": "Интенсивная 40", "intensive_rapid": "интенcивная быcтрая", + "intensive_voice": "Интенсивная 40", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "авто универсальная 50 - 60°C", + "iot_auto_universal_soil": "авто универсальная 50-60°C", "iot_auto_wash_soil": "Auto Wash", "iot_baby_care": "Детская одежда", "iot_breakfast": "Завтрак", @@ -164,6 +168,13 @@ "iot_super_wash": "Супермойка", "iot_turbopower": "TurboPower", "iot_universal": "универсальная 60°C", + "iot_voice_automatic": "Automatic", + "iot_voice_delicate": "деликатная 45°C", + "iot_voice_eco": "эко 45°C", + "iot_voice_intensive": "Интенсивная 75°C", + "iot_voice_prewash": "предварительная мойка", + "iot_voice_rapid_59": "Быcтрая Мойkа 59'", + "iot_voice_universal": "универсальная 60°C", "iot_wok_grids_maxi_pans": "Большие сковородки и решетки", "iot_wok_grids_maxi_pans_soil": "Большие сковородки и решетки", "iot_yes_quick_cycle": "Yes Quick", @@ -195,6 +206,7 @@ "ultra_silent": "ультра тихая 55°с", "universal": "универсальная 60°C", "universal_plus": "универсальная плюс 70°C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "Программа" @@ -328,14 +340,14 @@ "hqd_bulky": "Объемные изделия", "hqd_casual": "Повседневная одежда", "hqd_cold_wind_30": "Прохладный обдув 30 минут", - "hqd_cold_wind_timing": "Прохладный обдув", + "hqd_cold_wind_timing": "Холодный воздух", "hqd_cotton": "Хлопок", "hqd_curtain": "Шторы", "hqd_delicate": "Деликатные вещи", "hqd_diaper": "Пеленки", - "hqd_duvet": "Пуховое одеяло", - "hqd_feather": "Пуховики", - "hqd_hot_wind_timing": "Горячий воздух", + "hqd_duvet": "Стеганая куртка из синтетического волокна", + "hqd_feather": "Стеганая куртка из натурального волокна", + "hqd_hot_wind_timing": "Обработка теплом", "hqd_hygienic": "Санитарная обработка", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -345,10 +357,10 @@ "hqd_mix": "Смешанные ткани", "hqd_night_dry": "Ночная сушка", "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", + "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Быстрая 20", "hqd_quick_30": "Быстрая 30", - "hqd_quick_dry": "Быстрая сушка 30'", + "hqd_quick_dry": "30-минутная автоматическая быстрая сушка", "hqd_quilt": "Стеганые одеяла", "hqd_refresh": "Освежение", "hqd_school_uniform": "Школьная форма", @@ -385,6 +397,8 @@ "iot_dry_gym_fit": "Одежда для спортзала – Фитнес", "iot_dry_lingerie": "Белье", "iot_dry_mixed": "Смешанные ткани", + "iot_dry_pet_accessories": "Аксессуары для домашних животных", + "iot_dry_pet_hair_removal": "Удаление шерсти домашних животных (предварительная стирка)", "iot_dry_playsuits": "Пляжные костюмы", "iot_dry_rapid_30": "Быстрая 30'", "iot_dry_rapid_59": "Быстрая 59 мин.", @@ -436,9 +450,9 @@ "state": { "20_degrees_coloured_cottons": "20° Цветные ткани и Хлопок", "20_degrees_new_energy_label": "20°C", - "active_steam": "Пар", - "active_wash": "Активная стирка", - "active_wash_steam": "Активная стирка", + "active_steam": "Пар 29'", + "active_wash": "Активная стирка 20'", + "active_wash_steam": "Активная стирка 20' + пар", "allergy_care": "Уход для аллергиков", "allergy_care_pro": "Уход для аллергиков про", "all_in_one_49": "Все в одном 49 мин.", @@ -458,19 +472,19 @@ "cottons_steam": "Хлопок + Пар", "cotton_care_59": "хлопок 59 минут", "delicate_59": "Деликатная 59 мин.", - "delicate_silk": "Деликатная ткань (шелк)", + "delicate_silk": "Деликатная ткань (шелк) 59'", "delicate_silk_steam": "Деликатная ткань (шелк) + пар", "delicati_59": "Деликатная 59 мин.", "delicati_59_steam": "Деликатная 59 мин.", "drain_spin": "Слив + отжим", - "easy_iron": "легкая глажка", + "easy_iron": "легкая глажка 39'", "eco_40_60_new_energy_label": "Eco 40-60", "extra_care": "ЭКСТРА УХОД", "fitness": "Фитнес", "fitness_care": "Фитнес", - "fresh_care": "Свежесть", + "fresh_care": "Свежесть 59'", "fresh_care_steam": "Свежесть + пар", - "handwash_wool": "Ручная стирка и шерсть", + "handwash_wool": "Ручная стирка и шерсть 48'", "high_dry": "Сушка хлопка", "hqd_20_degrees": "Хлопок 20℃", "hqd_allergy": "Уход для аллергиков", @@ -478,13 +492,13 @@ "hqd_babycare": "Детская одежда", "hqd_checkup": "Проверка", "hqd_cottons": "Хлопок", - "hqd_delicate": "Деликатные вещи", + "hqd_delicate": "Деликатные вещи 50'", "hqd_delicate_cradle": "Деликатные вещи", "hqd_dry": "Сушка хлопка", "hqd_dry_synthetics": "Сушка смешанных тканей", "hqd_duvet": "Пуховое одеяло", "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_handwash_wool": "Шерсть", + "hqd_handwash_wool": "Шерсть 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Смешанные ткани", "hqd_quick_15": "Быстрая 15 мин.", @@ -495,7 +509,7 @@ "hqd_shirts": "Рубашки", "hqd_smart": "Smart A.I.", "hqd_spin": "Отжим", - "hqd_sport": "Спорт", + "hqd_sport": "Спорт 25'", "hqd_super_fast": "Быстрая 39 мин.", "hqd_synthetic_and_coloured": "Синтетика", "hygiene_59": "ГИГИЕНИЧНАЯ ПЛЮС 59'", @@ -506,8 +520,8 @@ "hygiene_pro_steam": "Hygiene Pro + Пар", "intensive_40": "Интенсивная 40°С", "intensive_40_steam": "Интенсивный пар 40°C +", - "iot_active_steam": "Пар", - "iot_active_wash_steam": "Активная стирка", + "iot_active_steam": "Пар 29'", + "iot_active_wash_steam": "Активная стирка 20' + пар", "iot_allergy_care_pro": "Уход для аллергиков про", "iot_all_in_one_59_steam": "Все в одном 59' + пар", "iot_checkup": "Проверка", @@ -542,17 +556,18 @@ "iot_dry_technical_fabrics": "Современные ткани", "iot_dry_warm_embrace": "Теплая машинная сушка", "iot_dry_wool_dry": "Сушка шерсти", - "iot_easy_iron": "легкая глажка", + "iot_easy_iron": "легкая глажка 39'", "iot_fresh_care_steam": "Свежесть + пар", "iot_hygiene_pro_steam": "Hygiene Pro + Пар", "iot_intensive_40_steam": "Интенсивный пар 40°C +", + "iot_jeans_60_steam": "Джинсы + пар", "iot_mixed_steam": "Смешанные ткани + Пар", "iot_mix_and_colour_59_steam": "Смешанные и цветные 59 мин + пар", "iot_perfect_cotton_59_steam": "ХЛОПОК: ИДЕАЛЬНАЯ СТИРКА 59'", "iot_rapid_a_class_60_steam": "Быстрая Класс A 60 + пар", "iot_resistant_cotton_steam": "Хлопок + Пар", "iot_shirts_steam": "Рубашки + Пар", - "iot_single_item_steam": "Одна вещь + пар", + "iot_single_item_steam": "Одна вещь 20' + пар", "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Специальная 39 мин + пар", @@ -586,7 +601,7 @@ "iot_wash_coloured_bed_linen": "Цветное постельное белье", "iot_wash_coloured_bed_linen_steam": "Цветное постельное белье + пар", "iot_wash_coloured_curtains": "Цветные шторы", - "iot_wash_coloured_shirts": "Цветные рубашки", + "iot_wash_coloured_shirts": "Цветные рубашки 59'", "iot_wash_coloured_shirts_steam": "Цветные рубашки + пар", "iot_wash_coloured_steam": "Цветные ткани + Пар", "iot_wash_coloured_tableclothes": "Цветные скатерти", @@ -623,7 +638,7 @@ "iot_wash_down_jackets_zelig": "Пуховики", "iot_wash_duvet": "Пуховое одеяло", "iot_wash_fruit_stains": "Пятна от фруктов", - "iot_wash_gym_fit": "Одежда для спортзала", + "iot_wash_gym_fit": "Одежда для спортзала 59'", "iot_wash_handwash": "Ручная стирка", "iot_wash_handwash_colored": "Ручная стирка цветных тканей", "iot_wash_handwash_dark": "Ручная стирка темных тканей", @@ -686,6 +701,7 @@ "iot_wash_wool": "Шерсть", "jeans": "Джинсы", "jeans_60": "джинсы", + "jeans_60_steam": "Джинсы + пар", "low_dry": "Сушка смешанных тканей", "mixed": "Смешанные ткани", "mixed_and_colored_59": "Смешанные и цветные 59 мин.", @@ -709,7 +725,7 @@ "rinse": "Полоскание", "shirts_steam": "Рубашки + Пар", "silent_night": "Ночной цикл", - "single_item": "Отдельный элемент", + "single_item": "Отдельный элемент 20'", "single_item_steam": "Одна вещь + пар", "smart_wash": "Smart Wash", "soft_care": "Деликатный уход", @@ -725,8 +741,8 @@ "steam_39": "Пар 39 мин.", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro — хлопок", - "steam_care_pro_delicates": "Steam Care Pro — деликатные вещи", - "steam_care_pro_synthetic": "Steam Care Pro — синтетика", + "steam_care_pro_delicates": "Steam Care Pro — деликатные вещи 16'", + "steam_care_pro_synthetic": "Steam Care Pro — синтетика 20'", "steam_hygiene_plus": "Гигиена плюс парообработка", "synthetics": "Синтетика", "synthetic_and_coloured": "Синтетика и цветные ткани", @@ -738,7 +754,7 @@ "wool": "Шерсть", "wool_and_delicates_49": "шерсть/деликатные 49'", "wool_dry": "Сушка шерсти", - "wool_soft_care": "шерсть & деликатный уход" + "wool_soft_care": "шерсть & деликатный уход 48'" }, "name": "Программа" }, @@ -748,19 +764,24 @@ "cheese": "Сыр", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Режим Eco", + "fruits": "Fruits", "fruits_and_veg": "Фрукты и овощи", "fruit_and_veg": "Fruit & Veg", "holiday": "HOLIDAY", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Режим не выбран", "quick_cool": "БЫСТРОЕ ОХЛАЖДЕНИЕ", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Программа" @@ -964,22 +985,25 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Автоочистка", "auto_plus": "AutoPlus", + "auto_plus_soil": "Авто плюс загрязнение", "auto_rapid": "Быстрая Автомойка", + "auto_rapid_soil": "Авто быстрое загрязнение", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "авто универсальная 50 - 60°C", - "auto_universal_plus": "авто универсальная плюс 65 - 75°C", - "auto_universal_plus_soil": "авто универсальная плюс 65 - 75°C", - "auto_universal_soil": "авто универсальная 50 - 60°C", + "auto_universal": "авто универсальная 50-60°C", + "auto_universal_plus": "авто универсальная плюс 65-75°C", + "auto_universal_plus_soil": "авто универсальная плюс 65-75°C", + "auto_universal_soil": "авто универсальная 50-60°C", "auto_wash": "Auto Wash", "auto_wash_soil": "Auto Wash", "classe_a_59": "а класс за 1 час 65°C", "delicate": "деликатная 45°C", "dishwasher_care": "Цикл очистки от накипи", - "eco": "Эко", + "eco": "эко 45°C", "eco_asynch": "эко 45°C", "eco_bldc": "эко 45°C", "eco_synch": "эко 45°C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "Стекло", "glassware": "стекло 45°C", @@ -988,8 +1012,9 @@ "hygiene_plus": "гигиена+ 75°C", "intensive": "Интенсивная 40", "intensive_rapid": "интенcивная быcтрая", + "intensive_voice": "Интенсивная 40", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "авто универсальная 50 - 60°C", + "iot_auto_universal_soil": "авто универсальная 50-60°C", "iot_auto_wash_soil": "Auto Wash", "iot_baby_care": "Детская одежда", "iot_breakfast": "Завтрак", @@ -1029,6 +1054,13 @@ "iot_super_wash": "Супермойка", "iot_turbopower": "TurboPower", "iot_universal": "универсальная 60°C", + "iot_voice_automatic": "Automatic", + "iot_voice_delicate": "деликатная 45°C", + "iot_voice_eco": "эко 45°C", + "iot_voice_intensive": "Интенсивная 75°C", + "iot_voice_prewash": "предварительная мойка", + "iot_voice_rapid_59": "Быcтрая Мойkа 59'", + "iot_voice_universal": "универсальная 60°C", "iot_wok_grids_maxi_pans": "Большие сковородки и решетки", "iot_wok_grids_maxi_pans_soil": "Большие сковородки и решетки", "iot_yes_quick_cycle": "Yes Quick", @@ -1060,6 +1092,7 @@ "ultra_silent": "ультра тихая 55°с", "universal": "универсальная 60°C", "universal_plus": "универсальная плюс 70°C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "Программа" @@ -1193,14 +1226,14 @@ "hqd_bulky": "Объемные изделия", "hqd_casual": "Повседневная одежда", "hqd_cold_wind_30": "Прохладный обдув 30 минут", - "hqd_cold_wind_timing": "Прохладный обдув", + "hqd_cold_wind_timing": "Холодный воздух", "hqd_cotton": "Хлопок", "hqd_curtain": "Шторы", "hqd_delicate": "Деликатные вещи", "hqd_diaper": "Пеленки", - "hqd_duvet": "Пуховое одеяло", - "hqd_feather": "Пуховики", - "hqd_hot_wind_timing": "Горячий воздух", + "hqd_duvet": "Стеганая куртка из синтетического волокна", + "hqd_feather": "Стеганая куртка из натурального волокна", + "hqd_hot_wind_timing": "Обработка теплом", "hqd_hygienic": "Санитарная обработка", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -1210,10 +1243,10 @@ "hqd_mix": "Смешанные ткани", "hqd_night_dry": "Ночная сушка", "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", + "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Быстрая 20", "hqd_quick_30": "Быстрая 30", - "hqd_quick_dry": "Быстрая сушка 30'", + "hqd_quick_dry": "30-минутная автоматическая быстрая сушка", "hqd_quilt": "Стеганые одеяла", "hqd_refresh": "Освежение", "hqd_school_uniform": "Школьная форма", @@ -1250,6 +1283,8 @@ "iot_dry_gym_fit": "Одежда для спортзала – Фитнес", "iot_dry_lingerie": "Белье", "iot_dry_mixed": "Смешанные ткани", + "iot_dry_pet_accessories": "Аксессуары для домашних животных", + "iot_dry_pet_hair_removal": "Удаление шерсти домашних животных (предварительная стирка)", "iot_dry_playsuits": "Пляжные костюмы", "iot_dry_rapid_30": "Быстрая 30'", "iot_dry_rapid_59": "Быстрая 59 мин.", @@ -1301,9 +1336,9 @@ "state": { "20_degrees_coloured_cottons": "20° Цветные ткани и Хлопок", "20_degrees_new_energy_label": "20°C", - "active_steam": "Пар", - "active_wash": "Активная стирка", - "active_wash_steam": "Активная стирка", + "active_steam": "Пар 29'", + "active_wash": "Активная стирка 20'", + "active_wash_steam": "Активная стирка 20' + пар", "allergy_care": "Уход для аллергиков", "allergy_care_pro": "Уход для аллергиков про", "all_in_one_49": "Все в одном 49 мин.", @@ -1323,19 +1358,19 @@ "cottons_steam": "Хлопок + Пар", "cotton_care_59": "хлопок 59 минут", "delicate_59": "Деликатная 59 мин.", - "delicate_silk": "Деликатная ткань (шелк)", + "delicate_silk": "Деликатная ткань (шелк) 59'", "delicate_silk_steam": "Деликатная ткань (шелк) + пар", "delicati_59": "Деликатная 59 мин.", "delicati_59_steam": "Деликатная 59 мин.", "drain_spin": "Слив + отжим", - "easy_iron": "легкая глажка", + "easy_iron": "легкая глажка 39'", "eco_40_60_new_energy_label": "Eco 40-60", "extra_care": "ЭКСТРА УХОД", "fitness": "Фитнес", "fitness_care": "Фитнес", - "fresh_care": "Свежесть", + "fresh_care": "Свежесть 59'", "fresh_care_steam": "Свежесть + пар", - "handwash_wool": "Ручная стирка и шерсть", + "handwash_wool": "Ручная стирка и шерсть 48'", "high_dry": "Сушка хлопка", "hqd_20_degrees": "Хлопок 20℃", "hqd_allergy": "Уход для аллергиков", @@ -1343,13 +1378,13 @@ "hqd_babycare": "Детская одежда", "hqd_checkup": "Проверка", "hqd_cottons": "Хлопок", - "hqd_delicate": "Деликатные вещи", + "hqd_delicate": "Деликатные вещи 50'", "hqd_delicate_cradle": "Деликатные вещи", "hqd_dry": "Сушка хлопка", "hqd_dry_synthetics": "Сушка смешанных тканей", "hqd_duvet": "Пуховое одеяло", "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_handwash_wool": "Шерсть", + "hqd_handwash_wool": "Шерсть 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Смешанные ткани", "hqd_quick_15": "Быстрая 15 мин.", @@ -1360,7 +1395,7 @@ "hqd_shirts": "Рубашки", "hqd_smart": "Smart A.I.", "hqd_spin": "Отжим", - "hqd_sport": "Спорт", + "hqd_sport": "Спорт 25'", "hqd_super_fast": "Быстрая 39 мин.", "hqd_synthetic_and_coloured": "Синтетика", "hygiene_59": "ГИГИЕНИЧНАЯ ПЛЮС 59'", @@ -1371,8 +1406,8 @@ "hygiene_pro_steam": "Hygiene Pro + Пар", "intensive_40": "Интенсивная 40°С", "intensive_40_steam": "Интенсивный пар 40°C +", - "iot_active_steam": "Пар", - "iot_active_wash_steam": "Активная стирка", + "iot_active_steam": "Пар 29'", + "iot_active_wash_steam": "Активная стирка 20' + пар", "iot_allergy_care_pro": "Уход для аллергиков про", "iot_all_in_one_59_steam": "Все в одном 59' + пар", "iot_checkup": "Проверка", @@ -1407,17 +1442,18 @@ "iot_dry_technical_fabrics": "Современные ткани", "iot_dry_warm_embrace": "Теплая машинная сушка", "iot_dry_wool_dry": "Сушка шерсти", - "iot_easy_iron": "легкая глажка", + "iot_easy_iron": "легкая глажка 39'", "iot_fresh_care_steam": "Свежесть + пар", "iot_hygiene_pro_steam": "Hygiene Pro + Пар", "iot_intensive_40_steam": "Интенсивный пар 40°C +", + "iot_jeans_60_steam": "Джинсы + пар", "iot_mixed_steam": "Смешанные ткани + Пар", "iot_mix_and_colour_59_steam": "Смешанные и цветные 59 мин + пар", "iot_perfect_cotton_59_steam": "ХЛОПОК: ИДЕАЛЬНАЯ СТИРКА 59'", "iot_rapid_a_class_60_steam": "Быстрая Класс A 60 + пар", "iot_resistant_cotton_steam": "Хлопок + Пар", "iot_shirts_steam": "Рубашки + Пар", - "iot_single_item_steam": "Одна вещь + пар", + "iot_single_item_steam": "Одна вещь 20' + пар", "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Специальная 39 мин + пар", @@ -1451,7 +1487,7 @@ "iot_wash_coloured_bed_linen": "Цветное постельное белье", "iot_wash_coloured_bed_linen_steam": "Цветное постельное белье + пар", "iot_wash_coloured_curtains": "Цветные шторы", - "iot_wash_coloured_shirts": "Цветные рубашки", + "iot_wash_coloured_shirts": "Цветные рубашки 59'", "iot_wash_coloured_shirts_steam": "Цветные рубашки + пар", "iot_wash_coloured_steam": "Цветные ткани + Пар", "iot_wash_coloured_tableclothes": "Цветные скатерти", @@ -1488,7 +1524,7 @@ "iot_wash_down_jackets_zelig": "Пуховики", "iot_wash_duvet": "Пуховое одеяло", "iot_wash_fruit_stains": "Пятна от фруктов", - "iot_wash_gym_fit": "Одежда для спортзала", + "iot_wash_gym_fit": "Одежда для спортзала 59'", "iot_wash_handwash": "Ручная стирка", "iot_wash_handwash_colored": "Ручная стирка цветных тканей", "iot_wash_handwash_dark": "Ручная стирка темных тканей", @@ -1551,6 +1587,7 @@ "iot_wash_wool": "Шерсть", "jeans": "Джинсы", "jeans_60": "джинсы", + "jeans_60_steam": "Джинсы + пар", "low_dry": "Сушка смешанных тканей", "mixed": "Смешанные ткани", "mixed_and_colored_59": "Смешанные и цветные 59 мин.", @@ -1574,7 +1611,7 @@ "rinse": "Полоскание", "shirts_steam": "Рубашки + Пар", "silent_night": "Ночной цикл", - "single_item": "Отдельный элемент", + "single_item": "Отдельный элемент 20'", "single_item_steam": "Одна вещь + пар", "smart_wash": "Smart Wash", "soft_care": "Деликатный уход", @@ -1590,8 +1627,8 @@ "steam_39": "Пар 39 мин.", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro — хлопок", - "steam_care_pro_delicates": "Steam Care Pro — деликатные вещи", - "steam_care_pro_synthetic": "Steam Care Pro — синтетика", + "steam_care_pro_delicates": "Steam Care Pro — деликатные вещи 16'", + "steam_care_pro_synthetic": "Steam Care Pro — синтетика 20'", "steam_hygiene_plus": "Гигиена плюс парообработка", "synthetics": "Синтетика", "synthetic_and_coloured": "Синтетика и цветные ткани", @@ -1603,7 +1640,7 @@ "wool": "Шерсть", "wool_and_delicates_49": "шерсть/деликатные 49'", "wool_dry": "Сушка шерсти", - "wool_soft_care": "шерсть & деликатный уход" + "wool_soft_care": "шерсть & деликатный уход 48'" }, "name": "Программа" }, @@ -1613,19 +1650,24 @@ "cheese": "Сыр", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Режим Eco", + "fruits": "Fruits", "fruits_and_veg": "Фрукты и овощи", "fruit_and_veg": "Fruit & Veg", "holiday": "HOLIDAY", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Режим не выбран", "quick_cool": "БЫСТРОЕ ОХЛАЖДЕНИЕ", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Программа" diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index 2753ed7..55b7bda 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -99,22 +99,25 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Automatická Hygiena", "auto_plus": "AutoPlus", + "auto_plus_soil": "Auto Plus Znečistenie", "auto_rapid": "Auto Rapid", + "auto_rapid_soil": "Auto Rýchly Znečistenie", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Auto univerzálny 50 -60°C", - "auto_universal_plus": "Auto univerzálny plus 65 - 75°C", - "auto_universal_plus_soil": "Auto univerzálny plus 65 - 75°C", + "auto_universal_plus": "Auto univerzálny plus 65-75°C", + "auto_universal_plus_soil": "Auto univerzálny plus 65-75°C", "auto_universal_soil": "Auto univerzálny 50 -60°C", "auto_wash": "Automatické pranie", "auto_wash_soil": "Automatické pranie", "classe_a_59": "A trieda 1 h 65°C", "delicate": "Jemný 45°C", "dishwasher_care": "Cyklus čistenia vodného kameňa", - "eco": "Eko", + "eco": "Eco 45°C", "eco_asynch": "Eco 45°C", "eco_bldc": "Eco 45°C", "eco_synch": "Eco 45°C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "Sklo", "glassware": "Sklo 45 °C", @@ -123,6 +126,7 @@ "hygiene_plus": "Hygienické umývanie + 75 °C", "intensive": "Intenzívne pranie", "intensive_rapid": "intenzívny rýchly", + "intensive_voice": "Intenzívne pranie", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "Auto univerzálny 50 -60°C", "iot_auto_wash_soil": "Automatické pranie", @@ -164,6 +168,13 @@ "iot_super_wash": "Super Wash", "iot_turbopower": "Turbo Power", "iot_universal": "Univerzálne 60 °C", + "iot_voice_automatic": "Automatic", + "iot_voice_delicate": "Jemný 45°C", + "iot_voice_eco": "Eco 45°C", + "iot_voice_intensive": "Intenzívne pranie 75°C", + "iot_voice_prewash": "Predumývanie", + "iot_voice_rapid_59": "Rýchly 59'", + "iot_voice_universal": "Univerzálne 60 °C", "iot_wok_grids_maxi_pans": "Špeciálne panvice (Wok, rošty, maxi panvice)", "iot_wok_grids_maxi_pans_soil": "Špeciálne panvice (Wok, rošty, maxi panvice)", "iot_yes_quick_cycle": "Yes Quick", @@ -195,6 +206,7 @@ "ultra_silent": "Ultra tichý 55°C", "universal": "Univerzálne 60 °C", "universal_plus": "Univerzálne Plus 70 °C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "Program" @@ -328,14 +340,14 @@ "hqd_bulky": "Objemné položky", "hqd_casual": "Neformálne", "hqd_cold_wind_30": "Chladný vánok 30 minút", - "hqd_cold_wind_timing": "Studený vánok", + "hqd_cold_wind_timing": "Studený vzduch", "hqd_cotton": "Bavlna", "hqd_curtain": "Záclony", "hqd_delicate": "Jemné materiály", "hqd_diaper": "Plienky", - "hqd_duvet": "Paplón", - "hqd_feather": "Prešívané bundy", - "hqd_hot_wind_timing": "Horúci vzduch", + "hqd_duvet": "Prešívaná vetrovka so syntetickými vláknami", + "hqd_feather": "Prešívaná vetrovka s prírodnými vláknami", + "hqd_hot_wind_timing": "Detská zavinovačka", "hqd_hygienic": "Hygienizácia", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -345,10 +357,10 @@ "hqd_mix": "Zmiešané", "hqd_night_dry": "Nočné sušenie", "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", + "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Rýchle 20", "hqd_quick_30": "Rýchle 30", - "hqd_quick_dry": "Rýchle sušenie 30'", + "hqd_quick_dry": "Automatické rýchle sušenie 30'", "hqd_quilt": "Prikrývky", "hqd_refresh": "Osvieženie", "hqd_school_uniform": "Školská uniforma", @@ -385,6 +397,8 @@ "iot_dry_gym_fit": "Športovné oblečenie", "iot_dry_lingerie": "Spodná bielizeň", "iot_dry_mixed": "Zmiešané", + "iot_dry_pet_accessories": "Príslušenstvo pre domáce zvieratá", + "iot_dry_pet_hair_removal": "Odstránenie chlpov domácich zvierat (pred praním)", "iot_dry_playsuits": "Tepláky", "iot_dry_rapid_30": "Rapid 30", "iot_dry_rapid_59": "Rýchly 59 min.", @@ -436,9 +450,9 @@ "state": { "20_degrees_coloured_cottons": "20° farebné a bavlnené", "20_degrees_new_energy_label": "20°C", - "active_steam": "Para", - "active_wash": "Aktívne pranie", - "active_wash_steam": "Aktívne pranie", + "active_steam": "Para 29'", + "active_wash": "Aktívne pranie 20'", + "active_wash_steam": "Aktívne pranie 20' + Para", "allergy_care": "Antialergické ošetrenie", "allergy_care_pro": "Antialergické ošetrenie Pro", "all_in_one_49": "Všetko v jednom 49 min.", @@ -458,19 +472,19 @@ "cottons_steam": "Bavlna + Para", "cotton_care_59": "Bavlna 59 Min", "delicate_59": "Jemné materiály 59 min.", - "delicate_silk": "Jemný hodváb", + "delicate_silk": "Jemný hodváb 59'", "delicate_silk_steam": "Jemný hodváb + Para", "delicati_59": "Jemné materiály 59 min.", "delicati_59_steam": "Jemné materiály 59 min.", "drain_spin": "Vypúšťanie a odstreďovanie", - "easy_iron": "Jednoduché žehlenie", + "easy_iron": "Jednoduché žehlenie 39'", "eco_40_60_new_energy_label": "Eco 40 – 60", "extra_care": "Extra Starostlivost", "fitness": "Fitnes", "fitness_care": "Fitnes", - "fresh_care": "Svieža starostlivosť", + "fresh_care": "Svieža starostlivosť 59'", "fresh_care_steam": "Fresh Care + Para", - "handwash_wool": "Pranie v rukách a vlna", + "handwash_wool": "Pranie v rukách a vlna 48'", "high_dry": "Bavlna suchá", "hqd_20_degrees": "Bavlna 20 ℃", "hqd_allergy": "Antialergické ošetrenie", @@ -478,13 +492,13 @@ "hqd_babycare": "Detská starostlivosť", "hqd_checkup": "Kontrola", "hqd_cottons": "Bavlna", - "hqd_delicate": "Jemné materiály", + "hqd_delicate": "Jemné materiály 50'", "hqd_delicate_cradle": "Jemné materiály", "hqd_dry": "Bavlna suchá", "hqd_dry_synthetics": "Zmiešané suché", "hqd_duvet": "Prikrývky", "hqd_eco_40_60_degrees": "Eco 40 – 60", - "hqd_handwash_wool": "Vlna", + "hqd_handwash_wool": "Vlna 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Zmiešané", "hqd_quick_15": "Rýchly 15 min.", @@ -495,7 +509,7 @@ "hqd_shirts": "Košele", "hqd_smart": "Smart A.I.", "hqd_spin": "Odstreďovanie", - "hqd_sport": "Šport", + "hqd_sport": "Šport 25'", "hqd_super_fast": "Rýchly 39 min.", "hqd_synthetic_and_coloured": "Syntetika", "hygiene_59": "Hygiena Plus 59'", @@ -506,8 +520,8 @@ "hygiene_pro_steam": "Hygiene Pro + para", "intensive_40": "Intenzívne pranie 40°C", "intensive_40_steam": "Intensive 40°C + Para", - "iot_active_steam": "Para", - "iot_active_wash_steam": "Aktívne pranie", + "iot_active_steam": "Para 29'", + "iot_active_wash_steam": "Aktívne pranie 20' + Para", "iot_allergy_care_pro": "Antialergické ošetrenie Pro", "iot_all_in_one_59_steam": "Všetko v jednom 59' + para", "iot_checkup": "Kontrola", @@ -542,17 +556,18 @@ "iot_dry_technical_fabrics": "Technické tkaniny", "iot_dry_warm_embrace": "Teplé bubnové sušenie", "iot_dry_wool_dry": "Vlna suchá", - "iot_easy_iron": "Jednoduché žehlenie", + "iot_easy_iron": "Jednoduché žehlenie 39'", "iot_fresh_care_steam": "Fresh Care + Para", "iot_hygiene_pro_steam": "Hygiene Pro + para", "iot_intensive_40_steam": "Intensive 40°C + Para", + "iot_jeans_60_steam": "Jeans + Steam", "iot_mixed_steam": "Zmiešané + Para", "iot_mix_and_colour_59_steam": "Zmiešané a Farebné 59' + Para", "iot_perfect_cotton_59_steam": "Cista Bavlna 59'", "iot_rapid_a_class_60_steam": "Rýchly Trieda A 60 + Para", "iot_resistant_cotton_steam": "Bavlna + Para", "iot_shirts_steam": "Košele + para", - "iot_single_item_steam": "Jedna položka + Para", + "iot_single_item_steam": "Jedna položka 20' + Para", "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Špeciál 39' + Para", @@ -586,7 +601,7 @@ "iot_wash_coloured_bed_linen": "Farebné posteľné obliečky", "iot_wash_coloured_bed_linen_steam": "Farebné posteľné obliečky + Para", "iot_wash_coloured_curtains": "Farebné závesy", - "iot_wash_coloured_shirts": "Farebné košele", + "iot_wash_coloured_shirts": "Farebné košele 59'", "iot_wash_coloured_shirts_steam": "Farebné košele + Para", "iot_wash_coloured_steam": "Farebné + Para", "iot_wash_coloured_tableclothes": "Farebné obrusy", @@ -623,7 +638,7 @@ "iot_wash_down_jackets_zelig": "Prešívané bundy", "iot_wash_duvet": "Prikrývky", "iot_wash_fruit_stains": "Ovocné škvrny", - "iot_wash_gym_fit": "Oblečenie do telocvične a posilňovne", + "iot_wash_gym_fit": "Oblečenie do telocvične a posilňovne 59'", "iot_wash_handwash": "Prepieranie", "iot_wash_handwash_colored": "Prepieranie farebného", "iot_wash_handwash_dark": "Prepieranie tmavého", @@ -686,6 +701,7 @@ "iot_wash_wool": "Vlna", "jeans": "Džínsy", "jeans_60": "Džínsy", + "jeans_60_steam": "Jeans + Steam", "low_dry": "Zmiešané suché", "mixed": "Zmiešané", "mixed_and_colored_59": "Zmiešané a farebné 59 min.", @@ -709,7 +725,7 @@ "rinse": "Oplachovanie", "shirts_steam": "Košele + para", "silent_night": "Nočný cyklus", - "single_item": "Jedna položka", + "single_item": "Jedna položka 20'", "single_item_steam": "Jedna položka + Para", "smart_wash": "Smart Wash", "soft_care": "Jemná starostlivosť", @@ -725,8 +741,8 @@ "steam_39": "Para 39 min.", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - bavlna", - "steam_care_pro_delicates": "Steam Care Pro - jemné", - "steam_care_pro_synthetic": "Steam Care Pro - syntetika", + "steam_care_pro_delicates": "Steam Care Pro - jemné 16'", + "steam_care_pro_synthetic": "Steam Care Pro - syntetika 20'", "steam_hygiene_plus": "Para Hygiene Plus", "synthetics": "Syntetika", "synthetic_and_coloured": "Syntetika a farebné materiály", @@ -738,7 +754,7 @@ "wool": "Vlna", "wool_and_delicates_49": "Vlna/Jemné 49'", "wool_dry": "Vlna suchá", - "wool_soft_care": "Vlna & Mäkká starostlivost" + "wool_soft_care": "Vlna & Mäkká starostlivost 48'" }, "name": "Program" }, @@ -748,19 +764,24 @@ "cheese": "Syr", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Režim Eco", + "fruits": "Fruits", "fruits_and_veg": "Fruit&Veg", "fruit_and_veg": "Fruit & Veg", "holiday": "DOVOLENKA", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Nie je vybraný žiadny režim", "quick_cool": "QUICK COOL", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER CHLADENIE", "super_freeze": "SUPER MRAZENIE", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Program" @@ -964,22 +985,25 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Automatická Hygiena", "auto_plus": "AutoPlus", + "auto_plus_soil": "Auto Plus Znečistenie", "auto_rapid": "Auto Rapid", + "auto_rapid_soil": "Auto Rýchly Znečistenie", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Auto univerzálny 50 -60°C", - "auto_universal_plus": "Auto univerzálny plus 65 - 75°C", - "auto_universal_plus_soil": "Auto univerzálny plus 65 - 75°C", + "auto_universal_plus": "Auto univerzálny plus 65-75°C", + "auto_universal_plus_soil": "Auto univerzálny plus 65-75°C", "auto_universal_soil": "Auto univerzálny 50 -60°C", "auto_wash": "Automatické pranie", "auto_wash_soil": "Automatické pranie", "classe_a_59": "A trieda 1 h 65°C", "delicate": "Jemný 45°C", "dishwasher_care": "Cyklus čistenia vodného kameňa", - "eco": "Eko", + "eco": "Eco 45°C", "eco_asynch": "Eco 45°C", "eco_bldc": "Eco 45°C", "eco_synch": "Eco 45°C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "Sklo", "glassware": "Sklo 45 °C", @@ -988,6 +1012,7 @@ "hygiene_plus": "Hygienické umývanie + 75 °C", "intensive": "Intenzívne pranie", "intensive_rapid": "intenzívny rýchly", + "intensive_voice": "Intenzívne pranie", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "Auto univerzálny 50 -60°C", "iot_auto_wash_soil": "Automatické pranie", @@ -1029,6 +1054,13 @@ "iot_super_wash": "Super Wash", "iot_turbopower": "Turbo Power", "iot_universal": "Univerzálne 60 °C", + "iot_voice_automatic": "Automatic", + "iot_voice_delicate": "Jemný 45°C", + "iot_voice_eco": "Eco 45°C", + "iot_voice_intensive": "Intenzívne pranie 75°C", + "iot_voice_prewash": "Predumývanie", + "iot_voice_rapid_59": "Rýchly 59'", + "iot_voice_universal": "Univerzálne 60 °C", "iot_wok_grids_maxi_pans": "Špeciálne panvice (Wok, rošty, maxi panvice)", "iot_wok_grids_maxi_pans_soil": "Špeciálne panvice (Wok, rošty, maxi panvice)", "iot_yes_quick_cycle": "Yes Quick", @@ -1060,6 +1092,7 @@ "ultra_silent": "Ultra tichý 55°C", "universal": "Univerzálne 60 °C", "universal_plus": "Univerzálne Plus 70 °C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "Program" @@ -1193,14 +1226,14 @@ "hqd_bulky": "Objemné položky", "hqd_casual": "Neformálne", "hqd_cold_wind_30": "Chladný vánok 30 minút", - "hqd_cold_wind_timing": "Studený vánok", + "hqd_cold_wind_timing": "Studený vzduch", "hqd_cotton": "Bavlna", "hqd_curtain": "Záclony", "hqd_delicate": "Jemné materiály", "hqd_diaper": "Plienky", - "hqd_duvet": "Paplón", - "hqd_feather": "Prešívané bundy", - "hqd_hot_wind_timing": "Horúci vzduch", + "hqd_duvet": "Prešívaná vetrovka so syntetickými vláknami", + "hqd_feather": "Prešívaná vetrovka s prírodnými vláknami", + "hqd_hot_wind_timing": "Detská zavinovačka", "hqd_hygienic": "Hygienizácia", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -1210,10 +1243,10 @@ "hqd_mix": "Zmiešané", "hqd_night_dry": "Nočné sušenie", "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", + "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Rýchle 20", "hqd_quick_30": "Rýchle 30", - "hqd_quick_dry": "Rýchle sušenie 30'", + "hqd_quick_dry": "Automatické rýchle sušenie 30'", "hqd_quilt": "Prikrývky", "hqd_refresh": "Osvieženie", "hqd_school_uniform": "Školská uniforma", @@ -1250,6 +1283,8 @@ "iot_dry_gym_fit": "Športovné oblečenie", "iot_dry_lingerie": "Spodná bielizeň", "iot_dry_mixed": "Zmiešané", + "iot_dry_pet_accessories": "Príslušenstvo pre domáce zvieratá", + "iot_dry_pet_hair_removal": "Odstránenie chlpov domácich zvierat (pred praním)", "iot_dry_playsuits": "Tepláky", "iot_dry_rapid_30": "Rapid 30", "iot_dry_rapid_59": "Rýchly 59 min.", @@ -1301,9 +1336,9 @@ "state": { "20_degrees_coloured_cottons": "20° farebné a bavlnené", "20_degrees_new_energy_label": "20°C", - "active_steam": "Para", - "active_wash": "Aktívne pranie", - "active_wash_steam": "Aktívne pranie", + "active_steam": "Para 29'", + "active_wash": "Aktívne pranie 20'", + "active_wash_steam": "Aktívne pranie 20' + Para", "allergy_care": "Antialergické ošetrenie", "allergy_care_pro": "Antialergické ošetrenie Pro", "all_in_one_49": "Všetko v jednom 49 min.", @@ -1323,19 +1358,19 @@ "cottons_steam": "Bavlna + Para", "cotton_care_59": "Bavlna 59 Min", "delicate_59": "Jemné materiály 59 min.", - "delicate_silk": "Jemný hodváb", + "delicate_silk": "Jemný hodváb 59'", "delicate_silk_steam": "Jemný hodváb + Para", "delicati_59": "Jemné materiály 59 min.", "delicati_59_steam": "Jemné materiály 59 min.", "drain_spin": "Vypúšťanie a odstreďovanie", - "easy_iron": "Jednoduché žehlenie", + "easy_iron": "Jednoduché žehlenie 39'", "eco_40_60_new_energy_label": "Eco 40 – 60", "extra_care": "Extra Starostlivost", "fitness": "Fitnes", "fitness_care": "Fitnes", - "fresh_care": "Svieža starostlivosť", + "fresh_care": "Svieža starostlivosť 59'", "fresh_care_steam": "Fresh Care + Para", - "handwash_wool": "Pranie v rukách a vlna", + "handwash_wool": "Pranie v rukách a vlna 48'", "high_dry": "Bavlna suchá", "hqd_20_degrees": "Bavlna 20 ℃", "hqd_allergy": "Antialergické ošetrenie", @@ -1343,13 +1378,13 @@ "hqd_babycare": "Detská starostlivosť", "hqd_checkup": "Kontrola", "hqd_cottons": "Bavlna", - "hqd_delicate": "Jemné materiály", + "hqd_delicate": "Jemné materiály 50'", "hqd_delicate_cradle": "Jemné materiály", "hqd_dry": "Bavlna suchá", "hqd_dry_synthetics": "Zmiešané suché", "hqd_duvet": "Prikrývky", "hqd_eco_40_60_degrees": "Eco 40 – 60", - "hqd_handwash_wool": "Vlna", + "hqd_handwash_wool": "Vlna 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Zmiešané", "hqd_quick_15": "Rýchly 15 min.", @@ -1360,7 +1395,7 @@ "hqd_shirts": "Košele", "hqd_smart": "Smart A.I.", "hqd_spin": "Odstreďovanie", - "hqd_sport": "Šport", + "hqd_sport": "Šport 25'", "hqd_super_fast": "Rýchly 39 min.", "hqd_synthetic_and_coloured": "Syntetika", "hygiene_59": "Hygiena Plus 59'", @@ -1371,8 +1406,8 @@ "hygiene_pro_steam": "Hygiene Pro + para", "intensive_40": "Intenzívne pranie 40°C", "intensive_40_steam": "Intensive 40°C + Para", - "iot_active_steam": "Para", - "iot_active_wash_steam": "Aktívne pranie", + "iot_active_steam": "Para 29'", + "iot_active_wash_steam": "Aktívne pranie 20' + Para", "iot_allergy_care_pro": "Antialergické ošetrenie Pro", "iot_all_in_one_59_steam": "Všetko v jednom 59' + para", "iot_checkup": "Kontrola", @@ -1407,17 +1442,18 @@ "iot_dry_technical_fabrics": "Technické tkaniny", "iot_dry_warm_embrace": "Teplé bubnové sušenie", "iot_dry_wool_dry": "Vlna suchá", - "iot_easy_iron": "Jednoduché žehlenie", + "iot_easy_iron": "Jednoduché žehlenie 39'", "iot_fresh_care_steam": "Fresh Care + Para", "iot_hygiene_pro_steam": "Hygiene Pro + para", "iot_intensive_40_steam": "Intensive 40°C + Para", + "iot_jeans_60_steam": "Jeans + Steam", "iot_mixed_steam": "Zmiešané + Para", "iot_mix_and_colour_59_steam": "Zmiešané a Farebné 59' + Para", "iot_perfect_cotton_59_steam": "Cista Bavlna 59'", "iot_rapid_a_class_60_steam": "Rýchly Trieda A 60 + Para", "iot_resistant_cotton_steam": "Bavlna + Para", "iot_shirts_steam": "Košele + para", - "iot_single_item_steam": "Jedna položka + Para", + "iot_single_item_steam": "Jedna položka 20' + Para", "iot_smart_wash": "Smart Wash", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Špeciál 39' + Para", @@ -1451,7 +1487,7 @@ "iot_wash_coloured_bed_linen": "Farebné posteľné obliečky", "iot_wash_coloured_bed_linen_steam": "Farebné posteľné obliečky + Para", "iot_wash_coloured_curtains": "Farebné závesy", - "iot_wash_coloured_shirts": "Farebné košele", + "iot_wash_coloured_shirts": "Farebné košele 59'", "iot_wash_coloured_shirts_steam": "Farebné košele + Para", "iot_wash_coloured_steam": "Farebné + Para", "iot_wash_coloured_tableclothes": "Farebné obrusy", @@ -1488,7 +1524,7 @@ "iot_wash_down_jackets_zelig": "Prešívané bundy", "iot_wash_duvet": "Prikrývky", "iot_wash_fruit_stains": "Ovocné škvrny", - "iot_wash_gym_fit": "Oblečenie do telocvične a posilňovne", + "iot_wash_gym_fit": "Oblečenie do telocvične a posilňovne 59'", "iot_wash_handwash": "Prepieranie", "iot_wash_handwash_colored": "Prepieranie farebného", "iot_wash_handwash_dark": "Prepieranie tmavého", @@ -1551,6 +1587,7 @@ "iot_wash_wool": "Vlna", "jeans": "Džínsy", "jeans_60": "Džínsy", + "jeans_60_steam": "Jeans + Steam", "low_dry": "Zmiešané suché", "mixed": "Zmiešané", "mixed_and_colored_59": "Zmiešané a farebné 59 min.", @@ -1574,7 +1611,7 @@ "rinse": "Oplachovanie", "shirts_steam": "Košele + para", "silent_night": "Nočný cyklus", - "single_item": "Jedna položka", + "single_item": "Jedna položka 20'", "single_item_steam": "Jedna položka + Para", "smart_wash": "Smart Wash", "soft_care": "Jemná starostlivosť", @@ -1590,8 +1627,8 @@ "steam_39": "Para 39 min.", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - bavlna", - "steam_care_pro_delicates": "Steam Care Pro - jemné", - "steam_care_pro_synthetic": "Steam Care Pro - syntetika", + "steam_care_pro_delicates": "Steam Care Pro - jemné 16'", + "steam_care_pro_synthetic": "Steam Care Pro - syntetika 20'", "steam_hygiene_plus": "Para Hygiene Plus", "synthetics": "Syntetika", "synthetic_and_coloured": "Syntetika a farebné materiály", @@ -1603,7 +1640,7 @@ "wool": "Vlna", "wool_and_delicates_49": "Vlna/Jemné 49'", "wool_dry": "Vlna suchá", - "wool_soft_care": "Vlna & Mäkká starostlivost" + "wool_soft_care": "Vlna & Mäkká starostlivost 48'" }, "name": "Program" }, @@ -1613,19 +1650,24 @@ "cheese": "Syr", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Režim Eco", + "fruits": "Fruits", "fruits_and_veg": "Fruit&Veg", "fruit_and_veg": "Fruit & Veg", "holiday": "DOVOLENKA", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Nie je vybraný žiadny režim", "quick_cool": "QUICK COOL", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER CHLADENIE", "super_freeze": "SUPER MRAZENIE", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Program" diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index 60f941c..691f8db 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -99,7 +99,9 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Auto Higiena", "auto_plus": "AutoPlus", + "auto_plus_soil": "Auto Plus", "auto_rapid": "Avtomatsko Hitro", + "auto_rapid_soil": "Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Samodejno univerzalno 50–60 °C", @@ -111,10 +113,11 @@ "classe_a_59": "Razred A 59 min. 65 °C", "delicate": "Občutljivo 45 °C", "dishwasher_care": "Cikel odstranjevanja vodnega kamna", - "eco": "Varčno", + "eco": "Eko 45 °C", "eco_asynch": "Eko 45 °C", "eco_bldc": "Eko 45 °C", "eco_synch": "Eko 45 °C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "Kozarci", "glassware": "Steklo 45 °C", @@ -123,6 +126,7 @@ "hygiene_plus": "Higiena + 75 °C", "intensive": "Intenzivno", "intensive_rapid": "Hitro in intenzivno", + "intensive_voice": "Intenzivno", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "Samodejno univerzalno 50–60 °C", "iot_auto_wash_soil": "Samodejno pranje", @@ -164,6 +168,13 @@ "iot_super_wash": "Super pomivanje", "iot_turbopower": "Turbo moč", "iot_universal": "Univerzalno 60 °C", + "iot_voice_automatic": "Automatic", + "iot_voice_delicate": "Občutljivo 45 °C", + "iot_voice_eco": "Eko 45 °C", + "iot_voice_intensive": "Intenzivno 75°C", + "iot_voice_prewash": "Predpranje", + "iot_voice_rapid_59": "Hitri progr. 59'", + "iot_voice_universal": "Univerzalno 60 °C", "iot_wok_grids_maxi_pans": "Posebna posoda (voki, rešetke in velike kozice)", "iot_wok_grids_maxi_pans_soil": "Posebna posoda (voki, rešetke in velike kozice)", "iot_yes_quick_cycle": "Yes Quick", @@ -195,6 +206,7 @@ "ultra_silent": "Zelo tiho 55 °C", "universal": "Univerzalno 60 °C", "universal_plus": "Univerzalni Plus 70 °C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "Program" @@ -328,14 +340,14 @@ "hqd_bulky": "Večji kosi", "hqd_casual": "Za prosti čas", "hqd_cold_wind_30": "Hladen vetrič 30 minut", - "hqd_cold_wind_timing": "Hladen vetrič", + "hqd_cold_wind_timing": "Mrzel zrak", "hqd_cotton": "Bombaž", "hqd_curtain": "Zavese", "hqd_delicate": "Občutljive tkanine", "hqd_diaper": "Plenice", - "hqd_duvet": "Prešite odeje", - "hqd_feather": "Puhovke", - "hqd_hot_wind_timing": "Vroč zrak", + "hqd_duvet": "Prešita jakna iz sintetičnih vlaken", + "hqd_feather": "Prešita jakna iz naravnih vlaken", + "hqd_hot_wind_timing": "Mehkoba", "hqd_hygienic": "Higienizacija", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -345,10 +357,10 @@ "hqd_mix": "Mešano", "hqd_night_dry": "Sušenje čez noč", "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", + "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Hitro 20", "hqd_quick_30": "Hitro 30", - "hqd_quick_dry": "Hitro sušenje 30'", + "hqd_quick_dry": "Samodejno hitro sušenje 30'", "hqd_quilt": "Posteljna pregrinjala", "hqd_refresh": "Osvežitev", "hqd_school_uniform": "Šolska uniforma", @@ -385,6 +397,8 @@ "iot_dry_gym_fit": "Oblačila za telovadbo in fitnes", "iot_dry_lingerie": "Spodnje perilo", "iot_dry_mixed": "Mešano", + "iot_dry_pet_accessories": "Pripomočki za hišne ljubljenčke", + "iot_dry_pet_hair_removal": "Odstranjevanje dlak hišnih ljubljenčkov (predpranje)", "iot_dry_playsuits": "Pajaci", "iot_dry_rapid_30": "Rapid 30", "iot_dry_rapid_59": "Hitro 59’", @@ -436,9 +450,9 @@ "state": { "20_degrees_coloured_cottons": "20° pisano in bombaž", "20_degrees_new_energy_label": "20°C", - "active_steam": "Para", - "active_wash": "Aktivno pranje", - "active_wash_steam": "Aktivno pranje", + "active_steam": "Para 29'", + "active_wash": "Aktivno pranje 20'", + "active_wash_steam": "Aktivno pranje 20' + para", "allergy_care": "Nega proti alergijam", "allergy_care_pro": "Nega proti alergijam Pro", "all_in_one_49": "Vse v enem 49'.", @@ -458,19 +472,19 @@ "cottons_steam": "Bombaž + Para", "cotton_care_59": "Bombaž 59 min.", "delicate_59": "Občutljivo 59'", - "delicate_silk": "Občutljiva svila", + "delicate_silk": "Občutljiva svila 59'", "delicate_silk_steam": "Občutljiva svila + para", "delicati_59": "Občutljivo 59'", "delicati_59_steam": "Občutljivo 59'", "drain_spin": "Izpiranje in ožemanje", - "easy_iron": "Lažje likanje", + "easy_iron": "Lažje likanje 39'", "eco_40_60_new_energy_label": "Eco 40-60", "extra_care": "Dodatna Nega", "fitness": "Fitness", "fitness_care": "Fitness", - "fresh_care": "Nega za svežino", + "fresh_care": "Nega za svežino 59'", "fresh_care_steam": "Nega za svežino + para", - "handwash_wool": "Ročno pranje in volna", + "handwash_wool": "Ročno pranje in volna 48'", "high_dry": "Sušenje bombaža", "hqd_20_degrees": "Bombaž 20℃", "hqd_allergy": "Nega proti alergijam", @@ -478,13 +492,13 @@ "hqd_babycare": "Otroška posoda", "hqd_checkup": "Preveri", "hqd_cottons": "Bombaž", - "hqd_delicate": "Občutljive tkanine", + "hqd_delicate": "Občutljive tkanine 50'", "hqd_delicate_cradle": "Občutljive tkanine", "hqd_dry": "Sušenje bombaža", "hqd_dry_synthetics": "Sušenje mešanih tkanin", "hqd_duvet": "Prešite odeje", "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_handwash_wool": "Volna", + "hqd_handwash_wool": "Volna 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Mešano", "hqd_quick_15": "Hitro 15'", @@ -495,7 +509,7 @@ "hqd_shirts": "Srajce", "hqd_smart": "Smart A.I.", "hqd_spin": "Ožemanje", - "hqd_sport": "Šport", + "hqd_sport": "Šport 25'", "hqd_super_fast": "Hitro 39’", "hqd_synthetic_and_coloured": "Sintetika", "hygiene_59": "Higiena Plus 59'", @@ -506,8 +520,8 @@ "hygiene_pro_steam": "Hygiene Pro + Para", "intensive_40": "Intenzivno 40°C", "intensive_40_steam": "Intenzivno 40°C + para", - "iot_active_steam": "Para", - "iot_active_wash_steam": "Aktivno pranje", + "iot_active_steam": "Para 29'", + "iot_active_wash_steam": "Aktivno pranje 20' + para", "iot_allergy_care_pro": "Nega proti alergijam Pro", "iot_all_in_one_59_steam": "Vse v enem 59' + para", "iot_checkup": "Preveri", @@ -542,17 +556,18 @@ "iot_dry_technical_fabrics": "Tehnične tkanine", "iot_dry_warm_embrace": "Topel boben", "iot_dry_wool_dry": "Sušenje volne", - "iot_easy_iron": "Lažje likanje", + "iot_easy_iron": "Lažje likanje 39'", "iot_fresh_care_steam": "Nega za svežino + para", "iot_hygiene_pro_steam": "Hygiene Pro + Para", "iot_intensive_40_steam": "Intenzivno 40°C + para", + "iot_jeans_60_steam": "Kavbojke + para", "iot_mixed_steam": "Mešano + Para", "iot_mix_and_colour_59_steam": "Mešana in pisana oblačila 59' + para", "iot_perfect_cotton_59_steam": "Idealen za Bombaz 59'", "iot_rapid_a_class_60_steam": "Hitri razred A 60 + para", "iot_resistant_cotton_steam": "Bombaž + Para", "iot_shirts_steam": "Srajce + Para", - "iot_single_item_steam": "En artikel + para", + "iot_single_item_steam": "En artikel 20' + para", "iot_smart_wash": "Pametno pranje", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Posebno 39' + para", @@ -586,7 +601,7 @@ "iot_wash_coloured_bed_linen": "Barvna posteljnina", "iot_wash_coloured_bed_linen_steam": "Barvna posteljnina + para", "iot_wash_coloured_curtains": "Pisane zavese", - "iot_wash_coloured_shirts": "Pisane srajce", + "iot_wash_coloured_shirts": "Pisane srajce 59'", "iot_wash_coloured_shirts_steam": "Barvne srajce + para", "iot_wash_coloured_steam": "Pisane tkanine + Para", "iot_wash_coloured_tableclothes": "Pisani namizni prti", @@ -623,7 +638,7 @@ "iot_wash_down_jackets_zelig": "Puhovke", "iot_wash_duvet": "Prešite odeje", "iot_wash_fruit_stains": "Madeži sadja", - "iot_wash_gym_fit": "Športna oblačila", + "iot_wash_gym_fit": "Športna oblačila 59'", "iot_wash_handwash": "Ročno pranje", "iot_wash_handwash_colored": "Ročno pranje barvno", "iot_wash_handwash_dark": "Ročno pranje temno", @@ -686,6 +701,7 @@ "iot_wash_wool": "Volna", "jeans": "Jeans", "jeans_60": "Džins", + "jeans_60_steam": "Kavbojke + para", "low_dry": "Sušenje mešanih tkanin", "mixed": "Mešano", "mixed_and_colored_59": "Mešana in pisana oblačila 59'", @@ -709,7 +725,7 @@ "rinse": "Splakovanje", "shirts_steam": "Srajce + Para", "silent_night": "Overnight Cycle", - "single_item": "En artikel", + "single_item": "En artikel 20'", "single_item_steam": "En artikel + para", "smart_wash": "Pametno pranje", "soft_care": "Nega za mehkobo", @@ -725,8 +741,8 @@ "steam_39": "Para 39'", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro – bombaž", - "steam_care_pro_delicates": "Steam Care Pro – občutljive tkanine", - "steam_care_pro_synthetic": "Steam Care Pro – sintetika", + "steam_care_pro_delicates": "Steam Care Pro – občutljive tkanine 16'", + "steam_care_pro_synthetic": "Steam Care Pro – sintetika 20'", "steam_hygiene_plus": "Higiena plus para", "synthetics": "Sintetika", "synthetic_and_coloured": "Sintetične in pisane tkanine", @@ -738,7 +754,7 @@ "wool": "Volna", "wool_and_delicates_49": "Volna/Občutljive tkanine 49'", "wool_dry": "Sušenje volne", - "wool_soft_care": "Volna & Nega Za Mehkobo" + "wool_soft_care": "Volna & Nega Za Mehkobo 48'" }, "name": "Program" }, @@ -748,19 +764,24 @@ "cheese": "Sir", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Način Eco", + "fruits": "Fruits", "fruits_and_veg": "Sadje In Zelenjava", "fruit_and_veg": "Sadje in zelenjava", "holiday": "POČITNICE", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Izbran ni noben način", "quick_cool": "HITRO HLAJENJE", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER HLAJENJE", "super_freeze": "SUPER ZAMRZOVANJE", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Program" @@ -964,7 +985,9 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Auto Higiena", "auto_plus": "AutoPlus", + "auto_plus_soil": "Auto Plus", "auto_rapid": "Avtomatsko Hitro", + "auto_rapid_soil": "Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Samodejno univerzalno 50–60 °C", @@ -976,10 +999,11 @@ "classe_a_59": "Razred A 59 min. 65 °C", "delicate": "Občutljivo 45 °C", "dishwasher_care": "Cikel odstranjevanja vodnega kamna", - "eco": "Varčno", + "eco": "Eko 45 °C", "eco_asynch": "Eko 45 °C", "eco_bldc": "Eko 45 °C", "eco_synch": "Eko 45 °C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "Kozarci", "glassware": "Steklo 45 °C", @@ -988,6 +1012,7 @@ "hygiene_plus": "Higiena + 75 °C", "intensive": "Intenzivno", "intensive_rapid": "Hitro in intenzivno", + "intensive_voice": "Intenzivno", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "Samodejno univerzalno 50–60 °C", "iot_auto_wash_soil": "Samodejno pranje", @@ -1029,6 +1054,13 @@ "iot_super_wash": "Super pomivanje", "iot_turbopower": "Turbo moč", "iot_universal": "Univerzalno 60 °C", + "iot_voice_automatic": "Automatic", + "iot_voice_delicate": "Občutljivo 45 °C", + "iot_voice_eco": "Eko 45 °C", + "iot_voice_intensive": "Intenzivno 75°C", + "iot_voice_prewash": "Predpranje", + "iot_voice_rapid_59": "Hitri progr. 59'", + "iot_voice_universal": "Univerzalno 60 °C", "iot_wok_grids_maxi_pans": "Posebna posoda (voki, rešetke in velike kozice)", "iot_wok_grids_maxi_pans_soil": "Posebna posoda (voki, rešetke in velike kozice)", "iot_yes_quick_cycle": "Yes Quick", @@ -1060,6 +1092,7 @@ "ultra_silent": "Zelo tiho 55 °C", "universal": "Univerzalno 60 °C", "universal_plus": "Univerzalni Plus 70 °C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "Program" @@ -1193,14 +1226,14 @@ "hqd_bulky": "Večji kosi", "hqd_casual": "Za prosti čas", "hqd_cold_wind_30": "Hladen vetrič 30 minut", - "hqd_cold_wind_timing": "Hladen vetrič", + "hqd_cold_wind_timing": "Mrzel zrak", "hqd_cotton": "Bombaž", "hqd_curtain": "Zavese", "hqd_delicate": "Občutljive tkanine", "hqd_diaper": "Plenice", - "hqd_duvet": "Prešite odeje", - "hqd_feather": "Puhovke", - "hqd_hot_wind_timing": "Vroč zrak", + "hqd_duvet": "Prešita jakna iz sintetičnih vlaken", + "hqd_feather": "Prešita jakna iz naravnih vlaken", + "hqd_hot_wind_timing": "Mehkoba", "hqd_hygienic": "Higienizacija", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -1210,10 +1243,10 @@ "hqd_mix": "Mešano", "hqd_night_dry": "Sušenje čez noč", "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", + "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Hitro 20", "hqd_quick_30": "Hitro 30", - "hqd_quick_dry": "Hitro sušenje 30'", + "hqd_quick_dry": "Samodejno hitro sušenje 30'", "hqd_quilt": "Posteljna pregrinjala", "hqd_refresh": "Osvežitev", "hqd_school_uniform": "Šolska uniforma", @@ -1250,6 +1283,8 @@ "iot_dry_gym_fit": "Oblačila za telovadbo in fitnes", "iot_dry_lingerie": "Spodnje perilo", "iot_dry_mixed": "Mešano", + "iot_dry_pet_accessories": "Pripomočki za hišne ljubljenčke", + "iot_dry_pet_hair_removal": "Odstranjevanje dlak hišnih ljubljenčkov (predpranje)", "iot_dry_playsuits": "Pajaci", "iot_dry_rapid_30": "Rapid 30", "iot_dry_rapid_59": "Hitro 59’", @@ -1301,9 +1336,9 @@ "state": { "20_degrees_coloured_cottons": "20° pisano in bombaž", "20_degrees_new_energy_label": "20°C", - "active_steam": "Para", - "active_wash": "Aktivno pranje", - "active_wash_steam": "Aktivno pranje", + "active_steam": "Para 29'", + "active_wash": "Aktivno pranje 20'", + "active_wash_steam": "Aktivno pranje 20' + para", "allergy_care": "Nega proti alergijam", "allergy_care_pro": "Nega proti alergijam Pro", "all_in_one_49": "Vse v enem 49'.", @@ -1323,19 +1358,19 @@ "cottons_steam": "Bombaž + Para", "cotton_care_59": "Bombaž 59 min.", "delicate_59": "Občutljivo 59'", - "delicate_silk": "Občutljiva svila", + "delicate_silk": "Občutljiva svila 59'", "delicate_silk_steam": "Občutljiva svila + para", "delicati_59": "Občutljivo 59'", "delicati_59_steam": "Občutljivo 59'", "drain_spin": "Izpiranje in ožemanje", - "easy_iron": "Lažje likanje", + "easy_iron": "Lažje likanje 39'", "eco_40_60_new_energy_label": "Eco 40-60", "extra_care": "Dodatna Nega", "fitness": "Fitness", "fitness_care": "Fitness", - "fresh_care": "Nega za svežino", + "fresh_care": "Nega za svežino 59'", "fresh_care_steam": "Nega za svežino + para", - "handwash_wool": "Ročno pranje in volna", + "handwash_wool": "Ročno pranje in volna 48'", "high_dry": "Sušenje bombaža", "hqd_20_degrees": "Bombaž 20℃", "hqd_allergy": "Nega proti alergijam", @@ -1343,13 +1378,13 @@ "hqd_babycare": "Otroška posoda", "hqd_checkup": "Preveri", "hqd_cottons": "Bombaž", - "hqd_delicate": "Občutljive tkanine", + "hqd_delicate": "Občutljive tkanine 50'", "hqd_delicate_cradle": "Občutljive tkanine", "hqd_dry": "Sušenje bombaža", "hqd_dry_synthetics": "Sušenje mešanih tkanin", "hqd_duvet": "Prešite odeje", "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_handwash_wool": "Volna", + "hqd_handwash_wool": "Volna 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Mešano", "hqd_quick_15": "Hitro 15'", @@ -1360,7 +1395,7 @@ "hqd_shirts": "Srajce", "hqd_smart": "Smart A.I.", "hqd_spin": "Ožemanje", - "hqd_sport": "Šport", + "hqd_sport": "Šport 25'", "hqd_super_fast": "Hitro 39’", "hqd_synthetic_and_coloured": "Sintetika", "hygiene_59": "Higiena Plus 59'", @@ -1371,8 +1406,8 @@ "hygiene_pro_steam": "Hygiene Pro + Para", "intensive_40": "Intenzivno 40°C", "intensive_40_steam": "Intenzivno 40°C + para", - "iot_active_steam": "Para", - "iot_active_wash_steam": "Aktivno pranje", + "iot_active_steam": "Para 29'", + "iot_active_wash_steam": "Aktivno pranje 20' + para", "iot_allergy_care_pro": "Nega proti alergijam Pro", "iot_all_in_one_59_steam": "Vse v enem 59' + para", "iot_checkup": "Preveri", @@ -1407,17 +1442,18 @@ "iot_dry_technical_fabrics": "Tehnične tkanine", "iot_dry_warm_embrace": "Topel boben", "iot_dry_wool_dry": "Sušenje volne", - "iot_easy_iron": "Lažje likanje", + "iot_easy_iron": "Lažje likanje 39'", "iot_fresh_care_steam": "Nega za svežino + para", "iot_hygiene_pro_steam": "Hygiene Pro + Para", "iot_intensive_40_steam": "Intenzivno 40°C + para", + "iot_jeans_60_steam": "Kavbojke + para", "iot_mixed_steam": "Mešano + Para", "iot_mix_and_colour_59_steam": "Mešana in pisana oblačila 59' + para", "iot_perfect_cotton_59_steam": "Idealen za Bombaz 59'", "iot_rapid_a_class_60_steam": "Hitri razred A 60 + para", "iot_resistant_cotton_steam": "Bombaž + Para", "iot_shirts_steam": "Srajce + Para", - "iot_single_item_steam": "En artikel + para", + "iot_single_item_steam": "En artikel 20' + para", "iot_smart_wash": "Pametno pranje", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Posebno 39' + para", @@ -1451,7 +1487,7 @@ "iot_wash_coloured_bed_linen": "Barvna posteljnina", "iot_wash_coloured_bed_linen_steam": "Barvna posteljnina + para", "iot_wash_coloured_curtains": "Pisane zavese", - "iot_wash_coloured_shirts": "Pisane srajce", + "iot_wash_coloured_shirts": "Pisane srajce 59'", "iot_wash_coloured_shirts_steam": "Barvne srajce + para", "iot_wash_coloured_steam": "Pisane tkanine + Para", "iot_wash_coloured_tableclothes": "Pisani namizni prti", @@ -1488,7 +1524,7 @@ "iot_wash_down_jackets_zelig": "Puhovke", "iot_wash_duvet": "Prešite odeje", "iot_wash_fruit_stains": "Madeži sadja", - "iot_wash_gym_fit": "Športna oblačila", + "iot_wash_gym_fit": "Športna oblačila 59'", "iot_wash_handwash": "Ročno pranje", "iot_wash_handwash_colored": "Ročno pranje barvno", "iot_wash_handwash_dark": "Ročno pranje temno", @@ -1551,6 +1587,7 @@ "iot_wash_wool": "Volna", "jeans": "Jeans", "jeans_60": "Džins", + "jeans_60_steam": "Kavbojke + para", "low_dry": "Sušenje mešanih tkanin", "mixed": "Mešano", "mixed_and_colored_59": "Mešana in pisana oblačila 59'", @@ -1574,7 +1611,7 @@ "rinse": "Splakovanje", "shirts_steam": "Srajce + Para", "silent_night": "Overnight Cycle", - "single_item": "En artikel", + "single_item": "En artikel 20'", "single_item_steam": "En artikel + para", "smart_wash": "Pametno pranje", "soft_care": "Nega za mehkobo", @@ -1590,8 +1627,8 @@ "steam_39": "Para 39'", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro – bombaž", - "steam_care_pro_delicates": "Steam Care Pro – občutljive tkanine", - "steam_care_pro_synthetic": "Steam Care Pro – sintetika", + "steam_care_pro_delicates": "Steam Care Pro – občutljive tkanine 16'", + "steam_care_pro_synthetic": "Steam Care Pro – sintetika 20'", "steam_hygiene_plus": "Higiena plus para", "synthetics": "Sintetika", "synthetic_and_coloured": "Sintetične in pisane tkanine", @@ -1603,7 +1640,7 @@ "wool": "Volna", "wool_and_delicates_49": "Volna/Občutljive tkanine 49'", "wool_dry": "Sušenje volne", - "wool_soft_care": "Volna & Nega Za Mehkobo" + "wool_soft_care": "Volna & Nega Za Mehkobo 48'" }, "name": "Program" }, @@ -1613,19 +1650,24 @@ "cheese": "Sir", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Način Eco", + "fruits": "Fruits", "fruits_and_veg": "Sadje In Zelenjava", "fruit_and_veg": "Sadje in zelenjava", "holiday": "POČITNICE", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Izbran ni noben način", "quick_cool": "HITRO HLAJENJE", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER HLAJENJE", "super_freeze": "SUPER ZAMRZOVANJE", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Program" diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index e666256..be49d99 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -99,22 +99,25 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Automatska Higijena", "auto_plus": "AutoPlus", + "auto_plus_soil": "Auto Plus", "auto_rapid": "Automatski Brzi", + "auto_rapid_soil": "Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Automatski univerzalni 50 - 60°C", - "auto_universal_plus": "Automatski univerzalni+ 65 - 75°C", - "auto_universal_plus_soil": "Automatski univerzalni+ 65 - 75°C", - "auto_universal_soil": "Automatski univerzalni 50 - 60°C", + "auto_universal": "Automatski univerzalni 50-60°C", + "auto_universal_plus": "Automatski univerzalni+ 65-75°C", + "auto_universal_plus_soil": "Automatski univerzalni+ 65-75°C", + "auto_universal_soil": "Automatski univerzalni 50-60°C", "auto_wash": "Automatsko pranje", "auto_wash_soil": "Automatsko pranje", "classe_a_59": "A klasa 59' 65°C", "delicate": "Osetljivo 45°C", "dishwasher_care": "Ciklus čišćenja kamenca", - "eco": "Eko", + "eco": "Eco 45°C", "eco_asynch": "Eco 45°C", "eco_bldc": "Eco 45°C", "eco_synch": "Eco 45°C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "Staklo", "glassware": "Staklo 45°C", @@ -123,8 +126,9 @@ "hygiene_plus": "Higijenski+ 75°C", "intensive": "Intenzivno", "intensive_rapid": "snažno i brzo", + "intensive_voice": "Intenzivno", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Automatski univerzalni 50 - 60°C", + "iot_auto_universal_soil": "Automatski univerzalni 50-60°C", "iot_auto_wash_soil": "Automatsko pranje", "iot_baby_care": "Baby Nega", "iot_breakfast": "Doručak", @@ -164,6 +168,13 @@ "iot_super_wash": "Super pranje", "iot_turbopower": "TurboPower", "iot_universal": "Univerzalni 60°C", + "iot_voice_automatic": "Automatic", + "iot_voice_delicate": "Osetljivo 45°C", + "iot_voice_eco": "Eco 45°C", + "iot_voice_intensive": "Intenzivno 75°C", + "iot_voice_prewash": "Predpranje", + "iot_voice_rapid_59": "Brzi 59'", + "iot_voice_universal": "Univerzalni 60°C", "iot_wok_grids_maxi_pans": "Specijalni tiganji (Wok, Rešetke, Maxi tiganji)", "iot_wok_grids_maxi_pans_soil": "Specijalni tiganji (Wok, Rešetke, Maxi tiganji)", "iot_yes_quick_cycle": "Yes Quick", @@ -195,6 +206,7 @@ "ultra_silent": "Ultra tihi 55°C", "universal": "Univerzalni 60°C", "universal_plus": "Univerzalni plus 70°C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "Program" @@ -333,9 +345,9 @@ "hqd_curtain": "Zavese", "hqd_delicate": "Osetljive tkanine", "hqd_diaper": "Pelene", - "hqd_duvet": "Jorgan", - "hqd_feather": "Perjane jakne", - "hqd_hot_wind_timing": "Vruć vazduh", + "hqd_duvet": "Prošivena jakna od sintetičkih vlakana", + "hqd_feather": "Prošivena jakna od prirodnih vlakana", + "hqd_hot_wind_timing": "Topao zagrljaj", "hqd_hygienic": "Higijenski", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -345,10 +357,10 @@ "hqd_mix": "Mešovito", "hqd_night_dry": "Noćno sušenje", "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", + "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Brzo 20", "hqd_quick_30": "Brzo 30", - "hqd_quick_dry": "Brzo sušenje 30'", + "hqd_quick_dry": "Brzo automatsko sušenje 30'", "hqd_quilt": "Jorgani", "hqd_refresh": "Osvežavanje", "hqd_school_uniform": "Školska uniforma", @@ -385,6 +397,8 @@ "iot_dry_gym_fit": "Gym fit - Fitness", "iot_dry_lingerie": "Donji veš", "iot_dry_mixed": "Mešani veš", + "iot_dry_pet_accessories": "Oprema za kućne ljubimce", + "iot_dry_pet_hair_removal": "Uklanjanje dlaka kućnih ljubimaca (pretpranje)", "iot_dry_playsuits": "Kostimi", "iot_dry_rapid_30": "Rapid 30", "iot_dry_rapid_59": "Brzi program 59'.", @@ -436,9 +450,9 @@ "state": { "20_degrees_coloured_cottons": "20° u boji i pamuk", "20_degrees_new_energy_label": "20°C", - "active_steam": "Para", - "active_wash": "Aktivno pranje", - "active_wash_steam": "Aktivno pranje", + "active_steam": "Para 29'", + "active_wash": "Aktivno pranje 20'", + "active_wash_steam": "Aktivno pranje 20' + para", "allergy_care": "Tretman protiv alergija", "allergy_care_pro": "Tretman protiv alergija Pro", "all_in_one_49": "Sve u jedan 49'.", @@ -458,19 +472,19 @@ "cottons_steam": "Pamuk + Para", "cotton_care_59": "Pamuk 59 Min", "delicate_59": "Delikatni 59'", - "delicate_silk": "Osetljiva svila", + "delicate_silk": "Osetljiva svila 59'", "delicate_silk_steam": "Osetljiva svila + para", "delicati_59": "Delikatni 59'", "delicati_59_steam": "Delikatni 59'", "drain_spin": "Sušenje i centrifuga", - "easy_iron": "Lako peglanje", + "easy_iron": "Lako peglanje 39'", "eco_40_60_new_energy_label": "Eko 40-60", "extra_care": "Dodatni Tretman", "fitness": "Fitnes", "fitness_care": "Fitnes", - "fresh_care": "Tretman za osvežavanje", + "fresh_care": "Tretman za osvežavanje 59'", "fresh_care_steam": "Tretman za osvežavanje + para", - "handwash_wool": "Ručno pranje i vuna", + "handwash_wool": "Ručno pranje i vuna 48'", "high_dry": "Sušenje pamuka", "hqd_20_degrees": "Pamuk 20℃", "hqd_allergy": "Tretman protiv alergija", @@ -478,13 +492,13 @@ "hqd_babycare": "Baby Nega", "hqd_checkup": "Provera", "hqd_cottons": "Pamuk", - "hqd_delicate": "Osetljive tkanine", + "hqd_delicate": "Osetljive tkanine 50'", "hqd_delicate_cradle": "Osetljive tkanine", "hqd_dry": "Sušenje pamuka", "hqd_dry_synthetics": "Sušenje mešanog veša", "hqd_duvet": "Jorgani", "hqd_eco_40_60_degrees": "Eko 40-60", - "hqd_handwash_wool": "Vuna", + "hqd_handwash_wool": "Vuna 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Mešani veš", "hqd_quick_15": "Brzi program 15'", @@ -495,7 +509,7 @@ "hqd_shirts": "Košulje", "hqd_smart": "Smart A.I.", "hqd_spin": "Centrifuga", - "hqd_sport": "Sportska odeća", + "hqd_sport": "Sportska odeća 25'", "hqd_super_fast": "Brzi program 39’", "hqd_synthetic_and_coloured": "Sintetika", "hygiene_59": "Hygijenski Plus 59'", @@ -506,8 +520,8 @@ "hygiene_pro_steam": "Hygiene Pro + para", "intensive_40": "Intenzivno 40°C", "intensive_40_steam": "Intenzivno 40°C + para", - "iot_active_steam": "Para", - "iot_active_wash_steam": "Aktivno pranje", + "iot_active_steam": "Para 29'", + "iot_active_wash_steam": "Aktivno pranje 20' + para", "iot_allergy_care_pro": "Tretman protiv alergija Pro", "iot_all_in_one_59_steam": "Sve u jedan 59' + para", "iot_checkup": "Provera", @@ -542,17 +556,18 @@ "iot_dry_technical_fabrics": "Teničke tkanine", "iot_dry_warm_embrace": "Toplo sušenje", "iot_dry_wool_dry": "Sušenje vune", - "iot_easy_iron": "Lako peglanje", + "iot_easy_iron": "Lako peglanje 39'", "iot_fresh_care_steam": "Tretman za osvežavanje + para", "iot_hygiene_pro_steam": "Hygiene Pro + para", "iot_intensive_40_steam": "Intenzivno 40°C + para", + "iot_jeans_60_steam": "„Jeans + Steam“", "iot_mixed_steam": "Mešani veš + Para", "iot_mix_and_colour_59_steam": "Mešano i u boji 59' + para", "iot_perfect_cotton_59_steam": "Perfect Pamuk 59'", "iot_rapid_a_class_60_steam": "Brza klasa A 60 + para", "iot_resistant_cotton_steam": "Pamuk + Para", "iot_shirts_steam": "Košulje + para", - "iot_single_item_steam": "Pojedinačni predmet + para", + "iot_single_item_steam": "Pojedinačni predmet 20' + para", "iot_smart_wash": "Pametno pranje", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Posebno 39' + para", @@ -586,7 +601,7 @@ "iot_wash_coloured_bed_linen": "Posteljina u boji", "iot_wash_coloured_bed_linen_steam": "Posteljina u boji + para", "iot_wash_coloured_curtains": "Zavese u boji", - "iot_wash_coloured_shirts": "Košulje u boji", + "iot_wash_coloured_shirts": "Košulje u boji 59'", "iot_wash_coloured_shirts_steam": "Košulje u boji + para", "iot_wash_coloured_steam": "Boja + Para", "iot_wash_coloured_tableclothes": "Stolnjaci u boji", @@ -623,7 +638,7 @@ "iot_wash_down_jackets_zelig": "Podjakne", "iot_wash_duvet": "Jorgani", "iot_wash_fruit_stains": "Fleke od voća", - "iot_wash_gym_fit": "Odeća za teretanu - fitnes", + "iot_wash_gym_fit": "Odeća za teretanu - fitnes 59'", "iot_wash_handwash": "Ručno pranje", "iot_wash_handwash_colored": "Ručno pranje materijala u boji", "iot_wash_handwash_dark": "Ručno pranje tamnog materijala", @@ -686,6 +701,7 @@ "iot_wash_wool": "Vuna", "jeans": "Džins", "jeans_60": "Jeans", + "jeans_60_steam": "„Jeans + Steam“", "low_dry": "Sušenje mešanog veša", "mixed": "Mešani veš", "mixed_and_colored_59": "Mešani veš i veš u boji 59'", @@ -709,7 +725,7 @@ "rinse": "Ispiranje", "shirts_steam": "Košulje + para", "silent_night": "Noćni ciklus", - "single_item": "Pojedinačni predmet", + "single_item": "Pojedinačni predmet 20'", "single_item_steam": "Pojedinačni predmet + para", "smart_wash": "Pametno pranje", "soft_care": "Blagi tretman", @@ -725,8 +741,8 @@ "steam_39": "Para 39'", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - pamuk", - "steam_care_pro_delicates": "Steam Care Pro - osetljive tkanine", - "steam_care_pro_synthetic": "Steam Care Pro - sintetika", + "steam_care_pro_delicates": "Steam Care Pro - osetljive tkanine 16'", + "steam_care_pro_synthetic": "Steam Care Pro - sintetika 20'", "steam_hygiene_plus": "Higijena plus sa parom", "synthetics": "Sintetika", "synthetic_and_coloured": "Sintetika i materijal u boji", @@ -738,7 +754,7 @@ "wool": "Vuna", "wool_and_delicates_49": "Vuna/Delikatni 49'", "wool_dry": "Sušenje vune", - "wool_soft_care": "Vuna & Blagi Tretman" + "wool_soft_care": "Vuna & Blagi Tretman 48'" }, "name": "Program" }, @@ -748,19 +764,24 @@ "cheese": "Sir", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Eco režim", + "fruits": "Fruits", "fruits_and_veg": "Voće i Povrće", "fruit_and_veg": "Fruit & Veg", "holiday": "ODMOR", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Nije izabran nijedan režim", "quick_cool": "BRZO HLAĐENJE", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER HLAĐENJE", "super_freeze": "SUPER ZAMRZAVANJE", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Program" @@ -964,22 +985,25 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Automatska Higijena", "auto_plus": "AutoPlus", + "auto_plus_soil": "Auto Plus", "auto_rapid": "Automatski Brzi", + "auto_rapid_soil": "Auto Rapid", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", - "auto_universal": "Automatski univerzalni 50 - 60°C", - "auto_universal_plus": "Automatski univerzalni+ 65 - 75°C", - "auto_universal_plus_soil": "Automatski univerzalni+ 65 - 75°C", - "auto_universal_soil": "Automatski univerzalni 50 - 60°C", + "auto_universal": "Automatski univerzalni 50-60°C", + "auto_universal_plus": "Automatski univerzalni+ 65-75°C", + "auto_universal_plus_soil": "Automatski univerzalni+ 65-75°C", + "auto_universal_soil": "Automatski univerzalni 50-60°C", "auto_wash": "Automatsko pranje", "auto_wash_soil": "Automatsko pranje", "classe_a_59": "A klasa 59' 65°C", "delicate": "Osetljivo 45°C", "dishwasher_care": "Ciklus čišćenja kamenca", - "eco": "Eko", + "eco": "Eco 45°C", "eco_asynch": "Eco 45°C", "eco_bldc": "Eco 45°C", "eco_synch": "Eco 45°C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "Staklo", "glassware": "Staklo 45°C", @@ -988,8 +1012,9 @@ "hygiene_plus": "Higijenski+ 75°C", "intensive": "Intenzivno", "intensive_rapid": "snažno i brzo", + "intensive_voice": "Intenzivno", "iot_auto_sensor": "Auto Sensor", - "iot_auto_universal_soil": "Automatski univerzalni 50 - 60°C", + "iot_auto_universal_soil": "Automatski univerzalni 50-60°C", "iot_auto_wash_soil": "Automatsko pranje", "iot_baby_care": "Baby Nega", "iot_breakfast": "Doručak", @@ -1029,6 +1054,13 @@ "iot_super_wash": "Super pranje", "iot_turbopower": "TurboPower", "iot_universal": "Univerzalni 60°C", + "iot_voice_automatic": "Automatic", + "iot_voice_delicate": "Osetljivo 45°C", + "iot_voice_eco": "Eco 45°C", + "iot_voice_intensive": "Intenzivno 75°C", + "iot_voice_prewash": "Predpranje", + "iot_voice_rapid_59": "Brzi 59'", + "iot_voice_universal": "Univerzalni 60°C", "iot_wok_grids_maxi_pans": "Specijalni tiganji (Wok, Rešetke, Maxi tiganji)", "iot_wok_grids_maxi_pans_soil": "Specijalni tiganji (Wok, Rešetke, Maxi tiganji)", "iot_yes_quick_cycle": "Yes Quick", @@ -1060,6 +1092,7 @@ "ultra_silent": "Ultra tihi 55°C", "universal": "Univerzalni 60°C", "universal_plus": "Univerzalni plus 70°C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "Program" @@ -1198,9 +1231,9 @@ "hqd_curtain": "Zavese", "hqd_delicate": "Osetljive tkanine", "hqd_diaper": "Pelene", - "hqd_duvet": "Jorgan", - "hqd_feather": "Perjane jakne", - "hqd_hot_wind_timing": "Vruć vazduh", + "hqd_duvet": "Prošivena jakna od sintetičkih vlakana", + "hqd_feather": "Prošivena jakna od prirodnih vlakana", + "hqd_hot_wind_timing": "Topao zagrljaj", "hqd_hygienic": "Higijenski", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -1210,10 +1243,10 @@ "hqd_mix": "Mešovito", "hqd_night_dry": "Noćno sušenje", "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", + "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Brzo 20", "hqd_quick_30": "Brzo 30", - "hqd_quick_dry": "Brzo sušenje 30'", + "hqd_quick_dry": "Brzo automatsko sušenje 30'", "hqd_quilt": "Jorgani", "hqd_refresh": "Osvežavanje", "hqd_school_uniform": "Školska uniforma", @@ -1250,6 +1283,8 @@ "iot_dry_gym_fit": "Gym fit - Fitness", "iot_dry_lingerie": "Donji veš", "iot_dry_mixed": "Mešani veš", + "iot_dry_pet_accessories": "Oprema za kućne ljubimce", + "iot_dry_pet_hair_removal": "Uklanjanje dlaka kućnih ljubimaca (pretpranje)", "iot_dry_playsuits": "Kostimi", "iot_dry_rapid_30": "Rapid 30", "iot_dry_rapid_59": "Brzi program 59'.", @@ -1301,9 +1336,9 @@ "state": { "20_degrees_coloured_cottons": "20° u boji i pamuk", "20_degrees_new_energy_label": "20°C", - "active_steam": "Para", - "active_wash": "Aktivno pranje", - "active_wash_steam": "Aktivno pranje", + "active_steam": "Para 29'", + "active_wash": "Aktivno pranje 20'", + "active_wash_steam": "Aktivno pranje 20' + para", "allergy_care": "Tretman protiv alergija", "allergy_care_pro": "Tretman protiv alergija Pro", "all_in_one_49": "Sve u jedan 49'.", @@ -1323,19 +1358,19 @@ "cottons_steam": "Pamuk + Para", "cotton_care_59": "Pamuk 59 Min", "delicate_59": "Delikatni 59'", - "delicate_silk": "Osetljiva svila", + "delicate_silk": "Osetljiva svila 59'", "delicate_silk_steam": "Osetljiva svila + para", "delicati_59": "Delikatni 59'", "delicati_59_steam": "Delikatni 59'", "drain_spin": "Sušenje i centrifuga", - "easy_iron": "Lako peglanje", + "easy_iron": "Lako peglanje 39'", "eco_40_60_new_energy_label": "Eko 40-60", "extra_care": "Dodatni Tretman", "fitness": "Fitnes", "fitness_care": "Fitnes", - "fresh_care": "Tretman za osvežavanje", + "fresh_care": "Tretman za osvežavanje 59'", "fresh_care_steam": "Tretman za osvežavanje + para", - "handwash_wool": "Ručno pranje i vuna", + "handwash_wool": "Ručno pranje i vuna 48'", "high_dry": "Sušenje pamuka", "hqd_20_degrees": "Pamuk 20℃", "hqd_allergy": "Tretman protiv alergija", @@ -1343,13 +1378,13 @@ "hqd_babycare": "Baby Nega", "hqd_checkup": "Provera", "hqd_cottons": "Pamuk", - "hqd_delicate": "Osetljive tkanine", + "hqd_delicate": "Osetljive tkanine 50'", "hqd_delicate_cradle": "Osetljive tkanine", "hqd_dry": "Sušenje pamuka", "hqd_dry_synthetics": "Sušenje mešanog veša", "hqd_duvet": "Jorgani", "hqd_eco_40_60_degrees": "Eko 40-60", - "hqd_handwash_wool": "Vuna", + "hqd_handwash_wool": "Vuna 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Mešani veš", "hqd_quick_15": "Brzi program 15'", @@ -1360,7 +1395,7 @@ "hqd_shirts": "Košulje", "hqd_smart": "Smart A.I.", "hqd_spin": "Centrifuga", - "hqd_sport": "Sportska odeća", + "hqd_sport": "Sportska odeća 25'", "hqd_super_fast": "Brzi program 39’", "hqd_synthetic_and_coloured": "Sintetika", "hygiene_59": "Hygijenski Plus 59'", @@ -1371,8 +1406,8 @@ "hygiene_pro_steam": "Hygiene Pro + para", "intensive_40": "Intenzivno 40°C", "intensive_40_steam": "Intenzivno 40°C + para", - "iot_active_steam": "Para", - "iot_active_wash_steam": "Aktivno pranje", + "iot_active_steam": "Para 29'", + "iot_active_wash_steam": "Aktivno pranje 20' + para", "iot_allergy_care_pro": "Tretman protiv alergija Pro", "iot_all_in_one_59_steam": "Sve u jedan 59' + para", "iot_checkup": "Provera", @@ -1407,17 +1442,18 @@ "iot_dry_technical_fabrics": "Teničke tkanine", "iot_dry_warm_embrace": "Toplo sušenje", "iot_dry_wool_dry": "Sušenje vune", - "iot_easy_iron": "Lako peglanje", + "iot_easy_iron": "Lako peglanje 39'", "iot_fresh_care_steam": "Tretman za osvežavanje + para", "iot_hygiene_pro_steam": "Hygiene Pro + para", "iot_intensive_40_steam": "Intenzivno 40°C + para", + "iot_jeans_60_steam": "„Jeans + Steam“", "iot_mixed_steam": "Mešani veš + Para", "iot_mix_and_colour_59_steam": "Mešano i u boji 59' + para", "iot_perfect_cotton_59_steam": "Perfect Pamuk 59'", "iot_rapid_a_class_60_steam": "Brza klasa A 60 + para", "iot_resistant_cotton_steam": "Pamuk + Para", "iot_shirts_steam": "Košulje + para", - "iot_single_item_steam": "Pojedinačni predmet + para", + "iot_single_item_steam": "Pojedinačni predmet 20' + para", "iot_smart_wash": "Pametno pranje", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Posebno 39' + para", @@ -1451,7 +1487,7 @@ "iot_wash_coloured_bed_linen": "Posteljina u boji", "iot_wash_coloured_bed_linen_steam": "Posteljina u boji + para", "iot_wash_coloured_curtains": "Zavese u boji", - "iot_wash_coloured_shirts": "Košulje u boji", + "iot_wash_coloured_shirts": "Košulje u boji 59'", "iot_wash_coloured_shirts_steam": "Košulje u boji + para", "iot_wash_coloured_steam": "Boja + Para", "iot_wash_coloured_tableclothes": "Stolnjaci u boji", @@ -1488,7 +1524,7 @@ "iot_wash_down_jackets_zelig": "Podjakne", "iot_wash_duvet": "Jorgani", "iot_wash_fruit_stains": "Fleke od voća", - "iot_wash_gym_fit": "Odeća za teretanu - fitnes", + "iot_wash_gym_fit": "Odeća za teretanu - fitnes 59'", "iot_wash_handwash": "Ručno pranje", "iot_wash_handwash_colored": "Ručno pranje materijala u boji", "iot_wash_handwash_dark": "Ručno pranje tamnog materijala", @@ -1551,6 +1587,7 @@ "iot_wash_wool": "Vuna", "jeans": "Džins", "jeans_60": "Jeans", + "jeans_60_steam": "„Jeans + Steam“", "low_dry": "Sušenje mešanog veša", "mixed": "Mešani veš", "mixed_and_colored_59": "Mešani veš i veš u boji 59'", @@ -1574,7 +1611,7 @@ "rinse": "Ispiranje", "shirts_steam": "Košulje + para", "silent_night": "Noćni ciklus", - "single_item": "Pojedinačni predmet", + "single_item": "Pojedinačni predmet 20'", "single_item_steam": "Pojedinačni predmet + para", "smart_wash": "Pametno pranje", "soft_care": "Blagi tretman", @@ -1590,8 +1627,8 @@ "steam_39": "Para 39'", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - pamuk", - "steam_care_pro_delicates": "Steam Care Pro - osetljive tkanine", - "steam_care_pro_synthetic": "Steam Care Pro - sintetika", + "steam_care_pro_delicates": "Steam Care Pro - osetljive tkanine 16'", + "steam_care_pro_synthetic": "Steam Care Pro - sintetika 20'", "steam_hygiene_plus": "Higijena plus sa parom", "synthetics": "Sintetika", "synthetic_and_coloured": "Sintetika i materijal u boji", @@ -1603,7 +1640,7 @@ "wool": "Vuna", "wool_and_delicates_49": "Vuna/Delikatni 49'", "wool_dry": "Sušenje vune", - "wool_soft_care": "Vuna & Blagi Tretman" + "wool_soft_care": "Vuna & Blagi Tretman 48'" }, "name": "Program" }, @@ -1613,19 +1650,24 @@ "cheese": "Sir", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Eco režim", + "fruits": "Fruits", "fruits_and_veg": "Voće i Povrće", "fruit_and_veg": "Fruit & Veg", "holiday": "ODMOR", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Nije izabran nijedan režim", "quick_cool": "BRZO HLAĐENJE", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER HLAĐENJE", "super_freeze": "SUPER ZAMRZAVANJE", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Program" diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index acb7d82..d3c4c61 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -99,7 +99,9 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Oto. Hijyen", "auto_plus": "AutoPlus", + "auto_plus_soil": "Otomatik Artı Kirlenme", "auto_rapid": "Oto. Rapid", + "auto_rapid_soil": "Otomatik Hızlı Kirlenme", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Universal 50-60°C", @@ -111,10 +113,11 @@ "classe_a_59": "A Wash 59' 65°C", "delicate": "Cristal 45°C", "dishwasher_care": "Kireç kalıntısı temizleme programı", - "eco": "Eko", + "eco": "Eco 45°C", "eco_asynch": "Eco 45°C", "eco_bldc": "Eco 45°C", "eco_synch": "Eco 45°C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "Cam", "glassware": "Cam Eşya 45°C", @@ -123,6 +126,7 @@ "hygiene_plus": "Hijyen+ 75°C", "intensive": "Yoğun", "intensive_rapid": "yogun hizli", + "intensive_voice": "Yoğun", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "Universal 50-60°C", "iot_auto_wash_soil": "Otomatik Yıkama", @@ -164,6 +168,13 @@ "iot_super_wash": "Süper Yıkama", "iot_turbopower": "TurboPower", "iot_universal": "Çok Amaçlı 60°C", + "iot_voice_automatic": "Automatic", + "iot_voice_delicate": "Cristal 45°C", + "iot_voice_eco": "Eco 45°C", + "iot_voice_intensive": "Yoğun 75°C", + "iot_voice_prewash": "Pre-wash", + "iot_voice_rapid_59": "Hizli 59'", + "iot_voice_universal": "Çok Amaçlı 60°C", "iot_wok_grids_maxi_pans": "Özel Tavalar (Wok - Izgaralar ve Maksi Tavalar)", "iot_wok_grids_maxi_pans_soil": "Özel Tavalar (Wok - Izgaralar ve Maksi Tavalar)", "iot_yes_quick_cycle": "Yes Quick", @@ -195,6 +206,7 @@ "ultra_silent": "Night 55°C", "universal": "Çok Amaçlı 60°C", "universal_plus": "Çok Amaçlı Artı 70°C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "Program" @@ -328,14 +340,14 @@ "hqd_bulky": "Hacimli eşyalar", "hqd_casual": "Gündelik", "hqd_cold_wind_30": "Serin esinti 30 dakika", - "hqd_cold_wind_timing": "Serin esinti", + "hqd_cold_wind_timing": "Soğuk Hava", "hqd_cotton": "Pamuk", "hqd_curtain": "Perdeler", "hqd_delicate": "Narin Çamaşırlar", "hqd_diaper": "Bebek bezi", - "hqd_duvet": "Nevresim", - "hqd_feather": "Şişme montlar", - "hqd_hot_wind_timing": "Sıcak hava", + "hqd_duvet": "Sentetik elyaflı kapitone ceket", + "hqd_feather": "Doğal elyaflı kapitone ceket", + "hqd_hot_wind_timing": "Sıcak Hava", "hqd_hygienic": "Hijyen", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -345,10 +357,10 @@ "hqd_mix": "Karışık", "hqd_night_dry": "Gece kurutma", "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", + "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Hızlı 20", "hqd_quick_30": "Hızlı 30", - "hqd_quick_dry": "Hızlı kurutma 30'", + "hqd_quick_dry": "30 dk otomatik hızlı kurutma", "hqd_quilt": "Yorganlar", "hqd_refresh": "Yenileme", "hqd_school_uniform": "Okul üniforması", @@ -385,6 +397,8 @@ "iot_dry_gym_fit": "Spor kıyafetleri", "iot_dry_lingerie": "İç Çamaşırı", "iot_dry_mixed": "Karışık", + "iot_dry_pet_accessories": "Evcil Hayvan Aksesuarları", + "iot_dry_pet_hair_removal": "Evcil hayvan tüyü temizleme (ön yıkama)", "iot_dry_playsuits": "Oyun elbiseleri", "iot_dry_rapid_30": "Rapid 30", "iot_dry_rapid_59": "Hızlı 59'.", @@ -436,9 +450,9 @@ "state": { "20_degrees_coloured_cottons": "20° Renkli ve Pamuklular", "20_degrees_new_energy_label": "20°C", - "active_steam": "Buhar", - "active_wash": "Aktif Yıkama", - "active_wash_steam": "Aktif Yıkama", + "active_steam": "Buhar 29'", + "active_wash": "Aktif Yıkama 20'", + "active_wash_steam": "Aktif Yıkama 20' + Buhar", "allergy_care": "Alerji Bakımı", "allergy_care_pro": "Anti-Alerji Pro", "all_in_one_49": "Hepsi bir Arada 49'.", @@ -458,19 +472,19 @@ "cottons_steam": "Pamuklular + Buhar", "cotton_care_59": "Pamuklular 59 dk", "delicate_59": "Narin 59'", - "delicate_silk": "Hassas İpek", + "delicate_silk": "Hassas İpek 59'", "delicate_silk_steam": "Hassas İpek + Buhar", "delicati_59": "Narin 59'", "delicati_59_steam": "Narin 59'", "drain_spin": "Boşaltma +ve Sıkma", - "easy_iron": "Kolay Ütüleme", + "easy_iron": "Kolay Ütüleme 39'", "eco_40_60_new_energy_label": "Eco 40-60", "extra_care": "Karisik Kirliler", "fitness": "Az Kirli Spor", "fitness_care": "Az Kirli Spor", - "fresh_care": "Yenileme Bakımı", + "fresh_care": "Yenileme Bakımı 59'", "fresh_care_steam": "Fresh Care + Buhar", - "handwash_wool": "Elde Yıkama ve Yünlüler", + "handwash_wool": "Elde Yıkama ve Yünlüler 48'", "high_dry": "Pamuklular kurutma", "hqd_20_degrees": "Pamuklu 20℃", "hqd_allergy": "Alerji Bakımı", @@ -478,13 +492,13 @@ "hqd_babycare": "Bebek Bakım", "hqd_checkup": "Check-Up", "hqd_cottons": "Pamuklular", - "hqd_delicate": "Narin Çamaşırlar", + "hqd_delicate": "Narin Çamaşırlar 50'", "hqd_delicate_cradle": "Narin Çamaşırlar", "hqd_dry": "Pamuklular kurutma", "hqd_dry_synthetics": "Karışık kurutma", "hqd_duvet": "Yorgan", "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_handwash_wool": "Yünlüler", + "hqd_handwash_wool": "Yünlüler 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Karışık", "hqd_quick_15": "Hızlı 15'", @@ -495,7 +509,7 @@ "hqd_shirts": "Gömlekler", "hqd_smart": "Smart A.I.", "hqd_spin": "Sıkma", - "hqd_sport": "Spor", + "hqd_sport": "Spor 25'", "hqd_super_fast": "Hızlı 39’", "hqd_synthetic_and_coloured": "Sentetikler", "hygiene_59": "Hijyen 59'", @@ -506,8 +520,8 @@ "hygiene_pro_steam": "Hygiene Pro + Buhar", "intensive_40": "Yoğun 40°C", "intensive_40_steam": "Yoğun 40°C + Buhar", - "iot_active_steam": "Buhar", - "iot_active_wash_steam": "Aktif Yıkama", + "iot_active_steam": "Buhar 29'", + "iot_active_wash_steam": "Aktif Yıkama 20' + Buhar", "iot_allergy_care_pro": "Anti-Alerji Pro", "iot_all_in_one_59_steam": "Hepsi bir Arada 59' + Buhar", "iot_checkup": "Check-up", @@ -542,17 +556,18 @@ "iot_dry_technical_fabrics": "Teknik kumaşlar", "iot_dry_warm_embrace": "Ilık döndürme", "iot_dry_wool_dry": "Yünlü kurutma", - "iot_easy_iron": "Kolay Ütüleme", + "iot_easy_iron": "Kolay Ütüleme 39'", "iot_fresh_care_steam": "Fresh Care + Buhar", "iot_hygiene_pro_steam": "Hygiene Pro + Buhar", "iot_intensive_40_steam": "Yoğun 40°C + Buhar", + "iot_jeans_60_steam": "Kot Pantolon + Buhar", "iot_mixed_steam": "Karışık + Buhar", "iot_mix_and_colour_59_steam": "Karışık ve Renkliler 59' + Buhar", "iot_perfect_cotton_59_steam": "Kirli Pamuklular 59'", "iot_rapid_a_class_60_steam": "Hızlı A Sınıfı 60 + Buhar", "iot_resistant_cotton_steam": "Pamuklular + Buhar", "iot_shirts_steam": "Gömlek + Buhar", - "iot_single_item_steam": "Tek Çamaşır + Buhar", + "iot_single_item_steam": "Tek Çamaşır 20' + Buhar", "iot_smart_wash": "Akıllı Yıkama", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Özel program 39' + Buhar", @@ -586,7 +601,7 @@ "iot_wash_coloured_bed_linen": "Renkli Nevresim", "iot_wash_coloured_bed_linen_steam": "Renkli Nevresim + Buhar", "iot_wash_coloured_curtains": "Renkli Perdeler", - "iot_wash_coloured_shirts": "Renkli Gömlekler", + "iot_wash_coloured_shirts": "Renkli Gömlekler 59'", "iot_wash_coloured_shirts_steam": "Renkli Gömlekler + Buhar", "iot_wash_coloured_steam": "Renkliler + Buhar", "iot_wash_coloured_tableclothes": "Renkli Masa Örtüsü", @@ -623,7 +638,7 @@ "iot_wash_down_jackets_zelig": "Şişme montlar", "iot_wash_duvet": "Yorgan", "iot_wash_fruit_stains": "Meyve lekeleri", - "iot_wash_gym_fit": "Fitness - spor kıyafetleri", + "iot_wash_gym_fit": "Fitness - spor kıyafetleri 59'", "iot_wash_handwash": "Elde yıkama", "iot_wash_handwash_colored": "Elde yıkama renkli", "iot_wash_handwash_dark": "Elde yıkama koyu renkli", @@ -686,6 +701,7 @@ "iot_wash_wool": "Yünlüler", "jeans": "Kot pantolon", "jeans_60": "Kot", + "jeans_60_steam": "Kot Pantolon + Buhar", "low_dry": "Karışık kurutma", "mixed": "Karışık", "mixed_and_colored_59": "Karışık ve Renkliler 59'", @@ -709,7 +725,7 @@ "rinse": "Durulama", "shirts_steam": "Gömlek + Buhar", "silent_night": "Gece Programı", - "single_item": "Tek Çamaşır", + "single_item": "Tek Çamaşır 20'", "single_item_steam": "Tek Çamaşır + Buhar", "smart_wash": "Akıllı Yıkama", "soft_care": "Yumuşak Bakım", @@ -725,8 +741,8 @@ "steam_39": "Buhar 39'", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - Pamuklular", - "steam_care_pro_delicates": "Steam Care Pro - Narin çamaşırlar", - "steam_care_pro_synthetic": "Steam Care Pro - Sentetikler", + "steam_care_pro_delicates": "Steam Care Pro - Narin çamaşırlar 16'", + "steam_care_pro_synthetic": "Steam Care Pro - Sentetikler 20'", "steam_hygiene_plus": "Hijyen Artı Buhar", "synthetics": "Sentetikler", "synthetic_and_coloured": "Sentetikler ve Renkliler", @@ -738,7 +754,7 @@ "wool": "Yünlüler", "wool_and_delicates_49": "Yünlü/Hassas 49'", "wool_dry": "Yünlü kurutma", - "wool_soft_care": "Yünlü & Hassas" + "wool_soft_care": "Yünlü & Hassas 48'" }, "name": "Program" }, @@ -748,19 +764,24 @@ "cheese": "Peynir", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Eco modu", + "fruits": "Fruits", "fruits_and_veg": "Meyve Ve Sebze", "fruit_and_veg": "Fruit & Veg", "holiday": "TATİL", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Hiç mod seçilmedi", "quick_cool": "HIZLI SOĞUTMA", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Program" @@ -964,7 +985,9 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Oto. Hijyen", "auto_plus": "AutoPlus", + "auto_plus_soil": "Otomatik Artı Kirlenme", "auto_rapid": "Oto. Rapid", + "auto_rapid_soil": "Otomatik Hızlı Kirlenme", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "Universal 50-60°C", @@ -976,10 +999,11 @@ "classe_a_59": "A Wash 59' 65°C", "delicate": "Cristal 45°C", "dishwasher_care": "Kireç kalıntısı temizleme programı", - "eco": "Eko", + "eco": "Eco 45°C", "eco_asynch": "Eco 45°C", "eco_bldc": "Eco 45°C", "eco_synch": "Eco 45°C", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "Cam", "glassware": "Cam Eşya 45°C", @@ -988,6 +1012,7 @@ "hygiene_plus": "Hijyen+ 75°C", "intensive": "Yoğun", "intensive_rapid": "yogun hizli", + "intensive_voice": "Yoğun", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "Universal 50-60°C", "iot_auto_wash_soil": "Otomatik Yıkama", @@ -1029,6 +1054,13 @@ "iot_super_wash": "Süper Yıkama", "iot_turbopower": "TurboPower", "iot_universal": "Çok Amaçlı 60°C", + "iot_voice_automatic": "Automatic", + "iot_voice_delicate": "Cristal 45°C", + "iot_voice_eco": "Eco 45°C", + "iot_voice_intensive": "Yoğun 75°C", + "iot_voice_prewash": "Pre-wash", + "iot_voice_rapid_59": "Hizli 59'", + "iot_voice_universal": "Çok Amaçlı 60°C", "iot_wok_grids_maxi_pans": "Özel Tavalar (Wok - Izgaralar ve Maksi Tavalar)", "iot_wok_grids_maxi_pans_soil": "Özel Tavalar (Wok - Izgaralar ve Maksi Tavalar)", "iot_yes_quick_cycle": "Yes Quick", @@ -1060,6 +1092,7 @@ "ultra_silent": "Night 55°C", "universal": "Çok Amaçlı 60°C", "universal_plus": "Çok Amaçlı Artı 70°C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "Program" @@ -1193,14 +1226,14 @@ "hqd_bulky": "Hacimli eşyalar", "hqd_casual": "Gündelik", "hqd_cold_wind_30": "Serin esinti 30 dakika", - "hqd_cold_wind_timing": "Serin esinti", + "hqd_cold_wind_timing": "Soğuk Hava", "hqd_cotton": "Pamuk", "hqd_curtain": "Perdeler", "hqd_delicate": "Narin Çamaşırlar", "hqd_diaper": "Bebek bezi", - "hqd_duvet": "Nevresim", - "hqd_feather": "Şişme montlar", - "hqd_hot_wind_timing": "Sıcak hava", + "hqd_duvet": "Sentetik elyaflı kapitone ceket", + "hqd_feather": "Doğal elyaflı kapitone ceket", + "hqd_hot_wind_timing": "Sıcak Hava", "hqd_hygienic": "Hijyen", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -1210,10 +1243,10 @@ "hqd_mix": "Karışık", "hqd_night_dry": "Gece kurutma", "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", + "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "Hızlı 20", "hqd_quick_30": "Hızlı 30", - "hqd_quick_dry": "Hızlı kurutma 30'", + "hqd_quick_dry": "30 dk otomatik hızlı kurutma", "hqd_quilt": "Yorganlar", "hqd_refresh": "Yenileme", "hqd_school_uniform": "Okul üniforması", @@ -1250,6 +1283,8 @@ "iot_dry_gym_fit": "Spor kıyafetleri", "iot_dry_lingerie": "İç Çamaşırı", "iot_dry_mixed": "Karışık", + "iot_dry_pet_accessories": "Evcil Hayvan Aksesuarları", + "iot_dry_pet_hair_removal": "Evcil hayvan tüyü temizleme (ön yıkama)", "iot_dry_playsuits": "Oyun elbiseleri", "iot_dry_rapid_30": "Rapid 30", "iot_dry_rapid_59": "Hızlı 59'.", @@ -1301,9 +1336,9 @@ "state": { "20_degrees_coloured_cottons": "20° Renkli ve Pamuklular", "20_degrees_new_energy_label": "20°C", - "active_steam": "Buhar", - "active_wash": "Aktif Yıkama", - "active_wash_steam": "Aktif Yıkama", + "active_steam": "Buhar 29'", + "active_wash": "Aktif Yıkama 20'", + "active_wash_steam": "Aktif Yıkama 20' + Buhar", "allergy_care": "Alerji Bakımı", "allergy_care_pro": "Anti-Alerji Pro", "all_in_one_49": "Hepsi bir Arada 49'.", @@ -1323,19 +1358,19 @@ "cottons_steam": "Pamuklular + Buhar", "cotton_care_59": "Pamuklular 59 dk", "delicate_59": "Narin 59'", - "delicate_silk": "Hassas İpek", + "delicate_silk": "Hassas İpek 59'", "delicate_silk_steam": "Hassas İpek + Buhar", "delicati_59": "Narin 59'", "delicati_59_steam": "Narin 59'", "drain_spin": "Boşaltma +ve Sıkma", - "easy_iron": "Kolay Ütüleme", + "easy_iron": "Kolay Ütüleme 39'", "eco_40_60_new_energy_label": "Eco 40-60", "extra_care": "Karisik Kirliler", "fitness": "Az Kirli Spor", "fitness_care": "Az Kirli Spor", - "fresh_care": "Yenileme Bakımı", + "fresh_care": "Yenileme Bakımı 59'", "fresh_care_steam": "Fresh Care + Buhar", - "handwash_wool": "Elde Yıkama ve Yünlüler", + "handwash_wool": "Elde Yıkama ve Yünlüler 48'", "high_dry": "Pamuklular kurutma", "hqd_20_degrees": "Pamuklu 20℃", "hqd_allergy": "Alerji Bakımı", @@ -1343,13 +1378,13 @@ "hqd_babycare": "Bebek Bakım", "hqd_checkup": "Check-Up", "hqd_cottons": "Pamuklular", - "hqd_delicate": "Narin Çamaşırlar", + "hqd_delicate": "Narin Çamaşırlar 50'", "hqd_delicate_cradle": "Narin Çamaşırlar", "hqd_dry": "Pamuklular kurutma", "hqd_dry_synthetics": "Karışık kurutma", "hqd_duvet": "Yorgan", "hqd_eco_40_60_degrees": "Eco 40-60", - "hqd_handwash_wool": "Yünlüler", + "hqd_handwash_wool": "Yünlüler 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "Karışık", "hqd_quick_15": "Hızlı 15'", @@ -1360,7 +1395,7 @@ "hqd_shirts": "Gömlekler", "hqd_smart": "Smart A.I.", "hqd_spin": "Sıkma", - "hqd_sport": "Spor", + "hqd_sport": "Spor 25'", "hqd_super_fast": "Hızlı 39’", "hqd_synthetic_and_coloured": "Sentetikler", "hygiene_59": "Hijyen 59'", @@ -1371,8 +1406,8 @@ "hygiene_pro_steam": "Hygiene Pro + Buhar", "intensive_40": "Yoğun 40°C", "intensive_40_steam": "Yoğun 40°C + Buhar", - "iot_active_steam": "Buhar", - "iot_active_wash_steam": "Aktif Yıkama", + "iot_active_steam": "Buhar 29'", + "iot_active_wash_steam": "Aktif Yıkama 20' + Buhar", "iot_allergy_care_pro": "Anti-Alerji Pro", "iot_all_in_one_59_steam": "Hepsi bir Arada 59' + Buhar", "iot_checkup": "Check-up", @@ -1407,17 +1442,18 @@ "iot_dry_technical_fabrics": "Teknik kumaşlar", "iot_dry_warm_embrace": "Ilık döndürme", "iot_dry_wool_dry": "Yünlü kurutma", - "iot_easy_iron": "Kolay Ütüleme", + "iot_easy_iron": "Kolay Ütüleme 39'", "iot_fresh_care_steam": "Fresh Care + Buhar", "iot_hygiene_pro_steam": "Hygiene Pro + Buhar", "iot_intensive_40_steam": "Yoğun 40°C + Buhar", + "iot_jeans_60_steam": "Kot Pantolon + Buhar", "iot_mixed_steam": "Karışık + Buhar", "iot_mix_and_colour_59_steam": "Karışık ve Renkliler 59' + Buhar", "iot_perfect_cotton_59_steam": "Kirli Pamuklular 59'", "iot_rapid_a_class_60_steam": "Hızlı A Sınıfı 60 + Buhar", "iot_resistant_cotton_steam": "Pamuklular + Buhar", "iot_shirts_steam": "Gömlek + Buhar", - "iot_single_item_steam": "Tek Çamaşır + Buhar", + "iot_single_item_steam": "Tek Çamaşır 20' + Buhar", "iot_smart_wash": "Akıllı Yıkama", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "Özel program 39' + Buhar", @@ -1451,7 +1487,7 @@ "iot_wash_coloured_bed_linen": "Renkli Nevresim", "iot_wash_coloured_bed_linen_steam": "Renkli Nevresim + Buhar", "iot_wash_coloured_curtains": "Renkli Perdeler", - "iot_wash_coloured_shirts": "Renkli Gömlekler", + "iot_wash_coloured_shirts": "Renkli Gömlekler 59'", "iot_wash_coloured_shirts_steam": "Renkli Gömlekler + Buhar", "iot_wash_coloured_steam": "Renkliler + Buhar", "iot_wash_coloured_tableclothes": "Renkli Masa Örtüsü", @@ -1488,7 +1524,7 @@ "iot_wash_down_jackets_zelig": "Şişme montlar", "iot_wash_duvet": "Yorgan", "iot_wash_fruit_stains": "Meyve lekeleri", - "iot_wash_gym_fit": "Fitness - spor kıyafetleri", + "iot_wash_gym_fit": "Fitness - spor kıyafetleri 59'", "iot_wash_handwash": "Elde yıkama", "iot_wash_handwash_colored": "Elde yıkama renkli", "iot_wash_handwash_dark": "Elde yıkama koyu renkli", @@ -1551,6 +1587,7 @@ "iot_wash_wool": "Yünlüler", "jeans": "Kot pantolon", "jeans_60": "Kot", + "jeans_60_steam": "Kot Pantolon + Buhar", "low_dry": "Karışık kurutma", "mixed": "Karışık", "mixed_and_colored_59": "Karışık ve Renkliler 59'", @@ -1574,7 +1611,7 @@ "rinse": "Durulama", "shirts_steam": "Gömlek + Buhar", "silent_night": "Gece Programı", - "single_item": "Tek Çamaşır", + "single_item": "Tek Çamaşır 20'", "single_item_steam": "Tek Çamaşır + Buhar", "smart_wash": "Akıllı Yıkama", "soft_care": "Yumuşak Bakım", @@ -1590,8 +1627,8 @@ "steam_39": "Buhar 39'", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - Pamuklular", - "steam_care_pro_delicates": "Steam Care Pro - Narin çamaşırlar", - "steam_care_pro_synthetic": "Steam Care Pro - Sentetikler", + "steam_care_pro_delicates": "Steam Care Pro - Narin çamaşırlar 16'", + "steam_care_pro_synthetic": "Steam Care Pro - Sentetikler 20'", "steam_hygiene_plus": "Hijyen Artı Buhar", "synthetics": "Sentetikler", "synthetic_and_coloured": "Sentetikler ve Renkliler", @@ -1603,7 +1640,7 @@ "wool": "Yünlüler", "wool_and_delicates_49": "Yünlü/Hassas 49'", "wool_dry": "Yünlü kurutma", - "wool_soft_care": "Yünlü & Hassas" + "wool_soft_care": "Yünlü & Hassas 48'" }, "name": "Program" }, @@ -1613,19 +1650,24 @@ "cheese": "Peynir", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Eco modu", + "fruits": "Fruits", "fruits_and_veg": "Meyve Ve Sebze", "fruit_and_veg": "Fruit & Veg", "holiday": "TATİL", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Hiç mod seçilmedi", "quick_cool": "HIZLI SOĞUTMA", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "Program" diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index b9a02e5..9808d67 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -99,7 +99,9 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Auto Hygiene", "auto_plus": "AutoPlus", + "auto_plus_soil": "自动增强污染", "auto_rapid": "Auto Rapid", + "auto_rapid_soil": "自动快速污染", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "自动通用50℃-60℃", @@ -111,10 +113,11 @@ "classe_a_59": "A级1小时65℃", "delicate": "易碎45℃", "dishwasher_care": "水垢清洁循环", - "eco": "节能", + "eco": "经济45℃", "eco_asynch": "经济45℃", "eco_bldc": "经济45℃", "eco_synch": "经济45℃", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "玻璃", "glassware": "玻璃器皿45°C", @@ -123,6 +126,7 @@ "hygiene_plus": "消毒洗+75°C", "intensive": "加强", "intensive_rapid": "强化快速", + "intensive_voice": "加强", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "自动通用50℃-60℃", "iot_auto_wash_soil": "自动洗涤", @@ -195,6 +199,7 @@ "ultra_silent": "超静55℃", "universal": "通用60°C", "universal_plus": "通用+ 70°C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "程序" @@ -328,14 +333,14 @@ "hqd_bulky": "大件物品", "hqd_casual": "休闲", "hqd_cold_wind_30": "凉风 30 分钟", - "hqd_cold_wind_timing": "凉风", + "hqd_cold_wind_timing": "冷气", "hqd_cotton": "棉布", "hqd_curtain": "窗帘", "hqd_delicate": "精致衣物", "hqd_diaper": "纸尿裤", - "hqd_duvet": "羽绒被", - "hqd_feather": "羽绒服", - "hqd_hot_wind_timing": "热空气", + "hqd_duvet": "合成纤维棉服", + "hqd_feather": "天然纤维棉服", + "hqd_hot_wind_timing": "衣物蓬松", "hqd_hygienic": "卫生保护", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -345,10 +350,10 @@ "hqd_mix": "混合材质", "hqd_night_dry": "过夜烘干", "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", + "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "快洗 20", "hqd_quick_30": "快洗 30", - "hqd_quick_dry": "快速干燥", + "hqd_quick_dry": "30 秒自动快速烘干", "hqd_quilt": "棉被", "hqd_refresh": "清新", "hqd_school_uniform": "校服", @@ -385,6 +390,8 @@ "iot_dry_gym_fit": "健身服", "iot_dry_lingerie": "女性内衣", "iot_dry_mixed": "混合材质", + "iot_dry_pet_accessories": "宠物用品", + "iot_dry_pet_hair_removal": "宠物毛发清除(预洗)", "iot_dry_playsuits": "运动装", "iot_dry_rapid_30": "快速 30", "iot_dry_rapid_59": "快速 59’", @@ -436,9 +443,9 @@ "state": { "20_degrees_coloured_cottons": "20° 彩色和棉花", "20_degrees_new_energy_label": "20°C", - "active_steam": "蒸汽", - "active_wash": "活化洗涤", - "active_wash_steam": "活化洗涤", + "active_steam": "蒸汽 29'", + "active_wash": "活化洗涤 20'", + "active_wash_steam": "活化洗涤 20' + 蒸汽", "allergy_care": "过敏保养", "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "一体化 49'", @@ -458,19 +465,19 @@ "cottons_steam": "棉质 + 蒸汽", "cotton_care_59": "棉麻洗59\"", "delicate_59": "精致 59'", - "delicate_silk": "精致丝绸", + "delicate_silk": "精致丝绸 59'", "delicate_silk_steam": "精致丝绸 + 蒸汽", "delicati_59": "精致 59'", "delicati_59_steam": "精致 59'", "drain_spin": "脱水 + 甩干", - "easy_iron": "易熨", + "easy_iron": "易熨 39'", "eco_40_60_new_energy_label": "经济 40-60", "extra_care": "额外保养", "fitness": "健身衣物", "fitness_care": "健身衣物", - "fresh_care": "清新护理", + "fresh_care": "清新护理 59'", "fresh_care_steam": "清新护理 + 蒸汽", - "handwash_wool": "手洗和羊毛衣物", + "handwash_wool": "手洗和羊毛衣物 48'", "high_dry": "棉质衣物烘干", "hqd_20_degrees": "棉质 20℃", "hqd_allergy": "过敏保养", @@ -478,13 +485,13 @@ "hqd_babycare": "婴儿服", "hqd_checkup": "检测", "hqd_cottons": "棉布", - "hqd_delicate": "精致衣物", + "hqd_delicate": "精致衣物 50'", "hqd_delicate_cradle": "精致衣物", "hqd_dry": "棉质衣物烘干", "hqd_dry_synthetics": "混合材质烘干", "hqd_duvet": "羽绒服", "hqd_eco_40_60_degrees": "经济 40-60", - "hqd_handwash_wool": "羊毛衣物", + "hqd_handwash_wool": "羊毛衣物 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "混合", "hqd_quick_15": "快速 15'", @@ -495,7 +502,7 @@ "hqd_shirts": "衬衫", "hqd_smart": "Smart A.I.", "hqd_spin": "甩干", - "hqd_sport": "运动装", + "hqd_sport": "运动装 25'", "hqd_super_fast": "快速 39’", "hqd_synthetic_and_coloured": "合成纤维", "hygiene_59": "卫生增强 59 分", @@ -506,8 +513,8 @@ "hygiene_pro_steam": "Hygiene Pro + 蒸汽", "intensive_40": "加强 40°C", "intensive_40_steam": "Intensive 40°C + 蒸汽", - "iot_active_steam": "蒸汽", - "iot_active_wash_steam": "活化洗涤", + "iot_active_steam": "蒸汽 29'", + "iot_active_wash_steam": "活化洗涤 20' + 蒸汽", "iot_allergy_care_pro": "Allergy Care Pro", "iot_all_in_one_59_steam": "一体化 59' + 蒸汽", "iot_checkup": "检测", @@ -542,17 +549,18 @@ "iot_dry_technical_fabrics": "工艺织物", "iot_dry_warm_embrace": "中温烘干", "iot_dry_wool_dry": "羊毛衣物烘干", - "iot_easy_iron": "易熨", + "iot_easy_iron": "易熨 39'", "iot_fresh_care_steam": "清新护理 + 蒸汽", "iot_hygiene_pro_steam": "Hygiene Pro + 蒸汽", "iot_intensive_40_steam": "Intensive 40°C + 蒸汽", + "iot_jeans_60_steam": "牛仔裤 + 蒸汽", "iot_mixed_steam": "混合 + 蒸汽", "iot_mix_and_colour_59_steam": "混合材质和彩色 59' + 蒸汽", "iot_perfect_cotton_59_steam": "完美棉质 59 分", "iot_rapid_a_class_60_steam": "快速 A 级 60 + 蒸汽", "iot_resistant_cotton_steam": "棉质 + 蒸汽", "iot_shirts_steam": "衬衫 + 蒸汽", - "iot_single_item_steam": "单件物品 + 蒸汽", + "iot_single_item_steam": "单件物品 20' + 蒸汽", "iot_smart_wash": "智能洗涤", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "专用 39' + 蒸汽", @@ -586,7 +594,7 @@ "iot_wash_coloured_bed_linen": "彩色床单", "iot_wash_coloured_bed_linen_steam": "彩色床单 + 蒸汽", "iot_wash_coloured_curtains": "彩色窗帘", - "iot_wash_coloured_shirts": "彩色衬衫", + "iot_wash_coloured_shirts": "彩色衬衫 59'", "iot_wash_coloured_shirts_steam": "彩色衬衫 + 蒸汽", "iot_wash_coloured_steam": "彩色 + 蒸汽", "iot_wash_coloured_tableclothes": "彩色桌布", @@ -623,7 +631,7 @@ "iot_wash_down_jackets_zelig": "羽绒服", "iot_wash_duvet": "羽绒服", "iot_wash_fruit_stains": "水果渍", - "iot_wash_gym_fit": "运动 - 健身衣物", + "iot_wash_gym_fit": "运动 - 健身衣物 59'", "iot_wash_handwash": "手洗", "iot_wash_handwash_colored": "彩色手洗", "iot_wash_handwash_dark": "深色手洗", @@ -686,6 +694,7 @@ "iot_wash_wool": "羊毛衣物", "jeans": "牛仔裤", "jeans_60": "牛仔裤", + "jeans_60_steam": "牛仔裤 + 蒸汽", "low_dry": "混合材质烘干", "mixed": "混合材质", "mixed_and_colored_59": "混合材质和彩色 59'", @@ -709,7 +718,7 @@ "rinse": "漂洗", "shirts_steam": "衬衫 + 蒸汽", "silent_night": "过夜循环", - "single_item": "单件商品", + "single_item": "单件商品 20'", "single_item_steam": "单件物品 + 蒸汽", "smart_wash": "智能洗涤", "soft_care": "柔软保养", @@ -725,8 +734,8 @@ "steam_39": "蒸汽 39'", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - 棉", - "steam_care_pro_delicates": "Steam Care Pro - 精致衣物", - "steam_care_pro_synthetic": "Steam Care Pro - 化纤", + "steam_care_pro_delicates": "Steam Care Pro - 精致衣物 16'", + "steam_care_pro_synthetic": "Steam Care Pro - 化纤 20'", "steam_hygiene_plus": "卫生增强蒸汽", "synthetics": "合成纤维", "synthetic_and_coloured": "合成纤维和彩色衣物", @@ -738,7 +747,7 @@ "wool": "羊毛衣物", "wool_and_delicates_49": "羊毛", "wool_dry": "羊毛衣物烘干", - "wool_soft_care": "羊毛" + "wool_soft_care": "羊毛 48'" }, "name": "程序" }, @@ -748,19 +757,24 @@ "cheese": "奶酪", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Eco 模式", + "fruits": "Fruits", "fruits_and_veg": "Fruit&Veg(水果和蔬菜)", "fruit_and_veg": "Fruit & Veg", "holiday": "HOLIDAY(假日模式)", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "未选择模式", "quick_cool": "QUICK COOL(快速冷却)", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL(超级冷却)", "super_freeze": "SUPER FREEZE(超级冷冻)", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "程序" @@ -964,7 +978,9 @@ "auto_care_soil": "Auto Care", "auto_hygiene": "Auto Hygiene", "auto_plus": "AutoPlus", + "auto_plus_soil": "自动增强污染", "auto_rapid": "Auto Rapid", + "auto_rapid_soil": "自动快速污染", "auto_sensor": "Auto Sensor", "auto_sensor_soil": "Auto Sensor", "auto_universal": "自动通用50℃-60℃", @@ -976,10 +992,11 @@ "classe_a_59": "A级1小时65℃", "delicate": "易碎45℃", "dishwasher_care": "水垢清洁循环", - "eco": "节能", + "eco": "经济45℃", "eco_asynch": "经济45℃", "eco_bldc": "经济45℃", "eco_synch": "经济45℃", + "eco_voice": "Eco", "gentle_wash": "Gentle wash", "glass": "玻璃", "glassware": "玻璃器皿45°C", @@ -988,6 +1005,7 @@ "hygiene_plus": "消毒洗+75°C", "intensive": "加强", "intensive_rapid": "强化快速", + "intensive_voice": "加强", "iot_auto_sensor": "Auto Sensor", "iot_auto_universal_soil": "自动通用50℃-60℃", "iot_auto_wash_soil": "自动洗涤", @@ -1060,6 +1078,7 @@ "ultra_silent": "超静55℃", "universal": "通用60°C", "universal_plus": "通用+ 70°C", + "zone_wash": "Flex Zone Wash", "zoom_39": "Zoom 39 min" }, "name": "程序" @@ -1193,14 +1212,14 @@ "hqd_bulky": "大件物品", "hqd_casual": "休闲", "hqd_cold_wind_30": "凉风 30 分钟", - "hqd_cold_wind_timing": "凉风", + "hqd_cold_wind_timing": "冷气", "hqd_cotton": "棉布", "hqd_curtain": "窗帘", "hqd_delicate": "精致衣物", "hqd_diaper": "纸尿裤", - "hqd_duvet": "羽绒被", - "hqd_feather": "羽绒服", - "hqd_hot_wind_timing": "热空气", + "hqd_duvet": "合成纤维棉服", + "hqd_feather": "天然纤维棉服", + "hqd_hot_wind_timing": "衣物蓬松", "hqd_hygienic": "卫生保护", "hqd_i_refresh": "I-Refresh", "hqd_i_refresh_pro": "I-Refresh Pro", @@ -1210,10 +1229,10 @@ "hqd_mix": "混合材质", "hqd_night_dry": "过夜烘干", "hqd_outdoor": "Outdoor", - "hqd_precious_cure": "Precious cure", + "hqd_precious_cure": "Precious Cure", "hqd_quick_20": "快洗 20", "hqd_quick_30": "快洗 30", - "hqd_quick_dry": "快速干燥", + "hqd_quick_dry": "30 秒自动快速烘干", "hqd_quilt": "棉被", "hqd_refresh": "清新", "hqd_school_uniform": "校服", @@ -1250,6 +1269,8 @@ "iot_dry_gym_fit": "健身服", "iot_dry_lingerie": "女性内衣", "iot_dry_mixed": "混合材质", + "iot_dry_pet_accessories": "宠物用品", + "iot_dry_pet_hair_removal": "宠物毛发清除(预洗)", "iot_dry_playsuits": "运动装", "iot_dry_rapid_30": "快速 30", "iot_dry_rapid_59": "快速 59’", @@ -1301,9 +1322,9 @@ "state": { "20_degrees_coloured_cottons": "20° 彩色和棉花", "20_degrees_new_energy_label": "20°C", - "active_steam": "蒸汽", - "active_wash": "活化洗涤", - "active_wash_steam": "活化洗涤", + "active_steam": "蒸汽 29'", + "active_wash": "活化洗涤 20'", + "active_wash_steam": "活化洗涤 20' + 蒸汽", "allergy_care": "过敏保养", "allergy_care_pro": "Allergy Care Pro", "all_in_one_49": "一体化 49'", @@ -1323,19 +1344,19 @@ "cottons_steam": "棉质 + 蒸汽", "cotton_care_59": "棉麻洗59\"", "delicate_59": "精致 59'", - "delicate_silk": "精致丝绸", + "delicate_silk": "精致丝绸 59'", "delicate_silk_steam": "精致丝绸 + 蒸汽", "delicati_59": "精致 59'", "delicati_59_steam": "精致 59'", "drain_spin": "脱水 + 甩干", - "easy_iron": "易熨", + "easy_iron": "易熨 39'", "eco_40_60_new_energy_label": "经济 40-60", "extra_care": "额外保养", "fitness": "健身衣物", "fitness_care": "健身衣物", - "fresh_care": "清新护理", + "fresh_care": "清新护理 59'", "fresh_care_steam": "清新护理 + 蒸汽", - "handwash_wool": "手洗和羊毛衣物", + "handwash_wool": "手洗和羊毛衣物 48'", "high_dry": "棉质衣物烘干", "hqd_20_degrees": "棉质 20℃", "hqd_allergy": "过敏保养", @@ -1343,13 +1364,13 @@ "hqd_babycare": "婴儿服", "hqd_checkup": "检测", "hqd_cottons": "棉布", - "hqd_delicate": "精致衣物", + "hqd_delicate": "精致衣物 50'", "hqd_delicate_cradle": "精致衣物", "hqd_dry": "棉质衣物烘干", "hqd_dry_synthetics": "混合材质烘干", "hqd_duvet": "羽绒服", "hqd_eco_40_60_degrees": "经济 40-60", - "hqd_handwash_wool": "羊毛衣物", + "hqd_handwash_wool": "羊毛衣物 40'", "hqd_i_refresh": "i-Refresh", "hqd_mix": "混合", "hqd_quick_15": "快速 15'", @@ -1360,7 +1381,7 @@ "hqd_shirts": "衬衫", "hqd_smart": "Smart A.I.", "hqd_spin": "甩干", - "hqd_sport": "运动装", + "hqd_sport": "运动装 25'", "hqd_super_fast": "快速 39’", "hqd_synthetic_and_coloured": "合成纤维", "hygiene_59": "卫生增强 59 分", @@ -1371,8 +1392,8 @@ "hygiene_pro_steam": "Hygiene Pro + 蒸汽", "intensive_40": "加强 40°C", "intensive_40_steam": "Intensive 40°C + 蒸汽", - "iot_active_steam": "蒸汽", - "iot_active_wash_steam": "活化洗涤", + "iot_active_steam": "蒸汽 29'", + "iot_active_wash_steam": "活化洗涤 20' + 蒸汽", "iot_allergy_care_pro": "Allergy Care Pro", "iot_all_in_one_59_steam": "一体化 59' + 蒸汽", "iot_checkup": "检测", @@ -1407,17 +1428,18 @@ "iot_dry_technical_fabrics": "工艺织物", "iot_dry_warm_embrace": "中温烘干", "iot_dry_wool_dry": "羊毛衣物烘干", - "iot_easy_iron": "易熨", + "iot_easy_iron": "易熨 39'", "iot_fresh_care_steam": "清新护理 + 蒸汽", "iot_hygiene_pro_steam": "Hygiene Pro + 蒸汽", "iot_intensive_40_steam": "Intensive 40°C + 蒸汽", + "iot_jeans_60_steam": "牛仔裤 + 蒸汽", "iot_mixed_steam": "混合 + 蒸汽", "iot_mix_and_colour_59_steam": "混合材质和彩色 59' + 蒸汽", "iot_perfect_cotton_59_steam": "完美棉质 59 分", "iot_rapid_a_class_60_steam": "快速 A 级 60 + 蒸汽", "iot_resistant_cotton_steam": "棉质 + 蒸汽", "iot_shirts_steam": "衬衫 + 蒸汽", - "iot_single_item_steam": "单件物品 + 蒸汽", + "iot_single_item_steam": "单件物品 20' + 蒸汽", "iot_smart_wash": "智能洗涤", "iot_soft_care_steam": "Soft Care + Steam", "iot_special_39_full_load_steam": "专用 39' + 蒸汽", @@ -1451,7 +1473,7 @@ "iot_wash_coloured_bed_linen": "彩色床单", "iot_wash_coloured_bed_linen_steam": "彩色床单 + 蒸汽", "iot_wash_coloured_curtains": "彩色窗帘", - "iot_wash_coloured_shirts": "彩色衬衫", + "iot_wash_coloured_shirts": "彩色衬衫 59'", "iot_wash_coloured_shirts_steam": "彩色衬衫 + 蒸汽", "iot_wash_coloured_steam": "彩色 + 蒸汽", "iot_wash_coloured_tableclothes": "彩色桌布", @@ -1488,7 +1510,7 @@ "iot_wash_down_jackets_zelig": "羽绒服", "iot_wash_duvet": "羽绒服", "iot_wash_fruit_stains": "水果渍", - "iot_wash_gym_fit": "运动 - 健身衣物", + "iot_wash_gym_fit": "运动 - 健身衣物 59'", "iot_wash_handwash": "手洗", "iot_wash_handwash_colored": "彩色手洗", "iot_wash_handwash_dark": "深色手洗", @@ -1551,6 +1573,7 @@ "iot_wash_wool": "羊毛衣物", "jeans": "牛仔裤", "jeans_60": "牛仔裤", + "jeans_60_steam": "牛仔裤 + 蒸汽", "low_dry": "混合材质烘干", "mixed": "混合材质", "mixed_and_colored_59": "混合材质和彩色 59'", @@ -1574,7 +1597,7 @@ "rinse": "漂洗", "shirts_steam": "衬衫 + 蒸汽", "silent_night": "过夜循环", - "single_item": "单件商品", + "single_item": "单件商品 20'", "single_item_steam": "单件物品 + 蒸汽", "smart_wash": "智能洗涤", "soft_care": "柔软保养", @@ -1590,8 +1613,8 @@ "steam_39": "蒸汽 39'", "steam_care_pro": "Steam Care Pro", "steam_care_pro_cotton": "Steam Care Pro - 棉", - "steam_care_pro_delicates": "Steam Care Pro - 精致衣物", - "steam_care_pro_synthetic": "Steam Care Pro - 化纤", + "steam_care_pro_delicates": "Steam Care Pro - 精致衣物 16'", + "steam_care_pro_synthetic": "Steam Care Pro - 化纤 20'", "steam_hygiene_plus": "卫生增强蒸汽", "synthetics": "合成纤维", "synthetic_and_coloured": "合成纤维和彩色衣物", @@ -1603,7 +1626,7 @@ "wool": "羊毛衣物", "wool_and_delicates_49": "羊毛", "wool_dry": "羊毛衣物烘干", - "wool_soft_care": "羊毛" + "wool_soft_care": "羊毛 48'" }, "name": "程序" }, @@ -1613,19 +1636,24 @@ "cheese": "奶酪", "chiller": "Quick cool", "cold_drinks": "Soft chill", + "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Eco 模式", + "fruits": "Fruits", "fruits_and_veg": "Fruit&Veg(水果和蔬菜)", "fruit_and_veg": "Fruit & Veg", "holiday": "HOLIDAY(假日模式)", "keep_fresh": "0° Fresh", + "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "未选择模式", "quick_cool": "QUICK COOL(快速冷却)", "sea_food": "Ready to cook meal", + "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL(超级冷却)", "super_freeze": "SUPER FREEZE(超级冷冻)", "tea": "Cold drinks or Beverages", + "vegetables": "Vegetables", "zero_fresh": "0° Fresh" }, "name": "程序" -- 2.39.5 From 6516f87127910055d74d1d198eae2004844038f2 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Fri, 29 Sep 2023 17:24:21 +0200 Subject: [PATCH 175/205] Add some sensors --- README.md | 17 ++++++++++++--- custom_components/hon/climate.py | 10 +++++++-- custom_components/hon/number.py | 6 ++++++ custom_components/hon/switch.py | 37 +++++++++++++++++++++++++++----- info.md | 24 ++++++++++----------- requirements_dev.txt | 9 ++++---- 6 files changed, 77 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index c122def..945c27d 100644 --- a/README.md +++ b/README.md @@ -383,9 +383,10 @@ For every device exists a button under diagnostics which can be used to log all | Energy Label | `lightning-bolt-circle` | `sensor` | `startProgram.energyLabel` | | Program | | `select` | `startProgram.program` | | Steam Type | `weather-dust` | `sensor` | `steamType` | -| Sterilization | `clock-start` | `switch` | `startProgram.sterilizationStatus` | +| Sterilization | `lotion-plus` | `switch` | `startProgram.sterilizationStatus` | | Suggested Load | `weight-kilogram` | `sensor` | `startProgram.suggestedLoadD` | | Temperature level | `thermometer` | `number` | `startProgram.tempLevel` | +| Tumbling | `refresh-circle` | `switch` | `startProgram.tumblingStatus` | #### Sensors | Name | Icon | Entity | Key | | --- | --- | --- | --- | @@ -426,14 +427,17 @@ For every device exists a button under diagnostics which can be used to log all #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | +| Auto Dose Detergent | `cup` | `switch` | `autoDetergentStatus` | +| Auto Dose Softener | `teddy-bear` | `switch` | `autoSoftenerStatus` | | Pause Washer Dryer | `pause` | `switch` | `pauseProgram` / `resumeProgram` | | Washer Dryer | `washing-machine` | `switch` | `startProgram` / `stopProgram` | +| Water hard | `water` | `number` | `settings.waterHard` | #### Configs | Name | Icon | Entity | Key | | --- | --- | --- | --- | | Acqua Plus | `water-plus` | `switch` | `startProgram.acquaplus` | -| Anti-Crease | `iron` | `switch` | `startProgram.antiCreaseTime` | | Anti-Crease | `iron` | `switch` | `startProgram.anticrease` | +| Anti-Crease | `iron` | `switch` | `startProgram.antiCreaseTime` | | Auto Dose Detergent | `cup` | `switch` | `startProgram.autoDetergentStatus` | | Auto Dose Softener | `teddy-bear` | `switch` | `startProgram.autoSoftenerStatus` | | Delay Status | `timer-check` | `switch` | `startProgram.delayStatus` | @@ -452,6 +456,7 @@ For every device exists a button under diagnostics which can be used to log all | Liquid Detergent Dose | `cup-water` | `sensor` | `startProgram.liquidDetergentDose` | | Main Wash Time | `clock-start` | `number` | `startProgram.mainWashTime` | | Powder Detergent Dose | `cup` | `sensor` | `startProgram.powderDetergentDose` | +| Prewash | `tshirt-crew` | `switch` | `startProgram.prewash` | | Program | | `select` | `startProgram.program` | | Remaining Time | `timer` | `sensor` | `startProgram.remainingTime` | | Rinse Iterations | `rotate-right` | `number` | `startProgram.rinseIterations` | @@ -459,12 +464,13 @@ For every device exists a button under diagnostics which can be used to log all | Spin speed | `numeric` | `select` | `startProgram.spinSpeed` | | Steam Type | `weather-dust` | `sensor` | `steamType` | | Steam level | `weather-dust` | `select` | `startProgram.steamLevel` | -| Sterilization | `clock-start` | `switch` | `startProgram.sterilizationStatus` | +| Sterilization | `lotion-plus` | `switch` | `startProgram.sterilizationStatus` | | Suggested Load | `weight-kilogram` | `sensor` | `startProgram.suggestedLoadW` | | Suggested Load | `weight-kilogram` | `sensor` | `startProgram.suggestedLoadD` | | Suggested weight | `weight-kilogram` | `sensor` | `startProgram.weight` | | Temperature | `thermometer` | `select` | `startProgram.temp` | | Temperature level | `thermometer` | `number` | `startProgram.tempLevel` | +| Tumbling | `refresh-circle` | `switch` | `startProgram.tumblingStatus` | | Water hard | `water` | `number` | `startProgram.waterHard` | | lang | | `number` | `startProgram.lang` | #### Sensors @@ -502,12 +508,16 @@ For every device exists a button under diagnostics which can be used to log all #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | +| Auto Dose Detergent | `cup` | `switch` | `autoDetergentStatus` | +| Auto Dose Softener | `teddy-bear` | `switch` | `autoSoftenerStatus` | | Pause Washing Machine | `pause` | `switch` | `pauseProgram` / `resumeProgram` | | Washing Machine | `washing-machine` | `switch` | `startProgram` / `stopProgram` | +| Water hard | `water` | `number` | `settings.waterHard` | #### Configs | Name | Icon | Entity | Key | | --- | --- | --- | --- | | Acqua Plus | `water-plus` | `switch` | `startProgram.acquaplus` | +| Anti-Crease | `iron` | `switch` | `startProgram.anticrease` | | Auto Dose Detergent | `cup` | `switch` | `startProgram.autoDetergentStatus` | | Auto Dose Softener | `teddy-bear` | `switch` | `startProgram.autoSoftenerStatus` | | Delay Status | `timer-check` | `switch` | `startProgram.delayStatus` | @@ -523,6 +533,7 @@ For every device exists a button under diagnostics which can be used to log all | Liquid Detergent Dose | `cup-water` | `sensor` | `startProgram.liquidDetergentDose` | | Main Wash Time | `clock-start` | `number` | `startProgram.mainWashTime` | | Powder Detergent Dose | `cup` | `sensor` | `startProgram.powderDetergentDose` | +| Prewash | `tshirt-crew` | `switch` | `startProgram.prewash` | | Program | | `select` | `startProgram.program` | | Remaining Time | `timer` | `sensor` | `startProgram.remainingTime` | | Rinse Iterations | `rotate-right` | `number` | `startProgram.rinseIterations` | diff --git a/custom_components/hon/climate.py b/custom_components/hon/climate.py index 5731462..9b02997 100644 --- a/custom_components/hon/climate.py +++ b/custom_components/hon/climate.py @@ -363,7 +363,13 @@ class HonClimateEntity(HonEntity, ClimateEntity): async def async_set_preset_mode(self, preset_mode: str) -> None: """Set the new preset mode.""" - command = "stopProgram" if preset_mode == "no_mode" else "startProgram" + if preset_mode == "no_mode" and HVACMode.OFF in self.hvac_modes: + command = "stopProgram" + elif preset_mode == "no_mode": + command = "settings" + self._device.commands["settings"].reset() + else: + command = "startProgram" if program := self._device.settings.get(f"{command}.program"): program.value = preset_mode zone = self._device.settings.get(f"{command}.zone") @@ -371,9 +377,9 @@ class HonClimateEntity(HonEntity, ClimateEntity): zone.value = self.entity_description.name.lower() self._device.sync_command(command, "settings") self._set_temperature_bound() + self._attr_preset_mode = preset_mode await self.coordinator.async_refresh() await self._device.commands[command].send() - self._attr_preset_mode = preset_mode self.async_write_ha_state() def _set_temperature_bound(self) -> None: diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index e2d96b7..f357735 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -57,6 +57,12 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { icon="mdi:water", translation_key="water_hard", ), + HonNumberEntityDescription( + key="settings.waterHard", + name="Water hard", + icon="mdi:water", + translation_key="water_hard", + ), HonConfigNumberEntityDescription( key="startProgram.lang", name="lang", diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 37f3693..8c32ccd 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -63,6 +63,12 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = { icon="mdi:tshirt-crew", translation_key="prewash", ), + HonConfigSwitchEntityDescription( + key="startProgram.prewash", + name="Prewash", + icon="mdi:tshirt-crew", + translation_key="prewash", + ), HonConfigSwitchEntityDescription( key="startProgram.permanentPressStatus", name="Keep Fresh", @@ -81,6 +87,18 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = { icon="mdi:cup", translation_key="auto_dose_detergent", ), + HonSwitchEntityDescription( + key="autoSoftenerStatus", + name="Auto Dose Softener", + icon="mdi:teddy-bear", + translation_key="auto_dose_softener", + ), + HonSwitchEntityDescription( + key="autoDetergentStatus", + name="Auto Dose Detergent", + icon="mdi:cup", + translation_key="auto_dose_detergent", + ), HonConfigSwitchEntityDescription( key="startProgram.acquaplus", name="Acqua Plus", @@ -117,6 +135,12 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = { icon="mdi:lotion-plus", translation_key="hygiene", ), + HonConfigSwitchEntityDescription( + key="startProgram.anticrease", + name="Anti-Crease", + icon="mdi:iron", + translation_key="anti_crease", + ), ), "TD": ( HonControlSwitchEntityDescription( @@ -138,7 +162,13 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = { HonConfigSwitchEntityDescription( key="startProgram.sterilizationStatus", name="Sterilization", - icon="mdi:clock-start", + icon="mdi:lotion-plus", + ), + HonConfigSwitchEntityDescription( + key="startProgram.tumblingStatus", + name="Tumbling", + icon="mdi:refresh-circle", + translation_key="keep_fresh", ), HonConfigSwitchEntityDescription( key="startProgram.antiCreaseTime", @@ -370,10 +400,7 @@ async def async_setup_entry( continue entity = HonControlSwitchEntity(hass, entry, device, description) elif isinstance(description, HonSwitchEntityDescription): - if ( - f"settings.{description.key}" not in device.available_settings - or device.get(description.key) is None - ): + if f"settings.{description.key}" not in device.available_settings: continue entity = HonSwitchEntity(hass, entry, device, description) else: diff --git a/info.md b/info.md index 469ba83..e6411a4 100644 --- a/info.md +++ b/info.md @@ -28,19 +28,19 @@ _If the integration is not in the list, you need to clear the browser cache._ Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). -| | **Haier** | **Hoover** | **Candy** | -|---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| -| **Washing Machine** | HW80-B14959TU1DE
HW80-B14959TU1IT
HW80-B14979TU1
HW90-B14TEAM5
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H-WASH 500
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80
HWE 49AMBS/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | -| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5
HD90-A2959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S
ROE H10A2TCE-07 | -| **Washer Dryer** | HWD100-B14979
HWD100-B14978 | HD 485AMBB/1-S
HD 495AMC/1-S
HD 4106AMC/1-80
HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | -| **Oven** | HWO60SM2F3XH | HSOT3161WG | | -| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | +| | **Haier** | **Hoover** | **Candy** | +|---------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| +| **Washing Machine** | HW80-B14959TU1DE
HW80-B14959TU1IT
HW80-B14979TU1
HW90-B14TEAM5
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H-WASH 500
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80
HWE 49AMBS/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | +| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5
HD90-A2959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S
ROE H10A2TCE-07 | +| **Washer Dryer** | HWD100-B14979
HWD100-B14978 | HD 485AMBB/1-S
HD 495AMC/1-S
HD 4106AMC/1-80
HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | +| **Oven** | HWO60SM2F3XH | HSOT3161WG | | +| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | | **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1) | | CY-12TAIN | -| **Fridge** | HFW7720ENMB
HFW7819EWMP | | CCE4T620EWU | -| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | -| **Hood** | HADG6DS46BWIFI | | | -| **Wine Cellar** | HWS247FDU1 | | | -| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011 | | +| **Fridge** | HFW7720ENMB
HFW7819EWMP | | CCE4T620EWU | +| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | +| **Hood** | HADG6DS46BWIFI | | | +| **Wine Cellar** | HWS247FDU1 | | | +| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011 | | | Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data).
This helps us to develop new features and not to break compatibility in newer versions. | |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| diff --git a/requirements_dev.txt b/requirements_dev.txt index 6b7cfce..ec208f6 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -1,4 +1,5 @@ -black -flake8 -mypy -pylint +homeassistant~=2023.10.0b2 +black~=23.7.0 +flake8~=6.0.0 +mypy~=1.4.1 +pylint~=2.17.4 -- 2.39.5 From 646fa2fcd6789d793dc1eb82bcb34228ed198ec4 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Fri, 29 Sep 2023 18:55:02 +0200 Subject: [PATCH 176/205] List supported number --- README.md | 12 +++++++++++- info.md | 15 ++++++++++++--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 945c27d..d0ff950 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,18 @@ [![PyPI](https://img.shields.io/pypi/v/pyhon?label=pyhOn)](https://github.com/Andre0512/pyhOn) [![GitHub](https://img.shields.io/github/license/Andre0512/hon?color=red)](https://github.com/Andre0512/hon/blob/main/LICENSE) [![GitHub all releases](https://img.shields.io/github/downloads/Andre0512/hon/total?color=blue)](https://tooomm.github.io/github-release-stats/?username=Andre0512&repository=hon) + +--- + Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.com/) based on [pyhOn](https://github.com/Andre0512/pyhon). +--- + +[![Supported Languages](https://img.shields.io/badge/Languages-19-royalblue)](https://github.com/Andre0512/hon#supported-languages) +[![Supported Appliances](https://img.shields.io/badge/Appliances-11-forestgreen)](https://github.com/Andre0512/hon#supported-appliances) +[![Supported Models](https://img.shields.io/badge/Models-69-yellowgreen)](https://github.com/Andre0512/hon#supported-models) +[![Supported Entities](https://img.shields.io/badge/Entities-241-crimson)](https://github.com/Andre0512/hon#appliance-features) + ## Supported Appliances - [Washing Machine](https://github.com/Andre0512/hon#washing-machine) - [Tumble Dryer](https://github.com/Andre0512/hon#tumble-dryer) @@ -36,7 +46,7 @@ _Restart Home Assistant_ _If the integration is not in the list, you need to clear the browser cache._ ## Supported Models -Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +Support has been confirmed for these **69 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). | | **Haier** | **Hoover** | **Candy** | |---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| diff --git a/info.md b/info.md index e6411a4..e164142 100644 --- a/info.md +++ b/info.md @@ -2,7 +2,17 @@ [![GitHub release (latest by date)](https://img.shields.io/github/v/release/Andre0512/hon?color=green)](https://github.com/Andre0512/hon/releases/latest) [![GitHub](https://img.shields.io/github/license/Andre0512/hon?color=red)](https://github.com/Andre0512/hon/blob/main/LICENSE) [![GitHub all releases](https://img.shields.io/github/downloads/Andre0512/hon/total?color=blue)](https://tooomm.github.io/github-release-stats/?username=Andre0512&repository=hon) -Support for home appliances of [Haier's mobile app hOn](https://hon-smarthome.com/) based on [pyhOn](https://github.com/Andre0512/pyhon). + +--- + +Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.com/) based on [pyhOn](https://github.com/Andre0512/pyhon). + +--- + +[![Supported Languages](https://img.shields.io/badge/Languages-19-royalblue)](https://github.com/Andre0512/hon#supported-languages) +[![Supported Appliances](https://img.shields.io/badge/Appliances-11-forestgreen)](https://github.com/Andre0512/hon#supported-appliances) +[![Supported Models](https://img.shields.io/badge/Models-69-yellowgreen)](https://github.com/Andre0512/hon#supported-models) +[![Supported Entities](https://img.shields.io/badge/Entities-241-crimson)](https://github.com/Andre0512/hon#appliance-features) ## Supported Appliances - [Washing Machine](https://github.com/Andre0512/hon#washing-machine) @@ -25,8 +35,7 @@ Support for home appliances of [Haier's mobile app hOn](https://hon-smarthome.co _If the integration is not in the list, you need to clear the browser cache._ ## Supported Models -Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). - +Support has been confirmed for these **69 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). | | **Haier** | **Hoover** | **Candy** | |---------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| -- 2.39.5 From 4e1fd22aa5b35a549a9fa54097e66d08bbb08638 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Fri, 29 Sep 2023 19:38:26 +0200 Subject: [PATCH 177/205] Fix build --- .github/workflows/python_check.yml | 2 +- requirements_dev.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/python_check.yml b/.github/workflows/python_check.yml index 17510a5..102943c 100644 --- a/.github/workflows/python_check.yml +++ b/.github/workflows/python_check.yml @@ -13,7 +13,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.10", "3.11"] + python-version: ["3.11"] steps: - uses: actions/checkout@v3 diff --git a/requirements_dev.txt b/requirements_dev.txt index ec208f6..7404421 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -1,4 +1,4 @@ -homeassistant~=2023.10.0b2 +homeassistant~=2023.9.3 black~=23.7.0 flake8~=6.0.0 mypy~=1.4.1 -- 2.39.5 From 020ab4b4527d8815f9a4ba4441f56fd1cde08b79 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Fri, 29 Sep 2023 22:40:22 +0200 Subject: [PATCH 178/205] Update supported devices --- README.md | 31 +++++++++++++++---------------- info.md | 30 +++++++++++++++--------------- 2 files changed, 30 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index d0ff950..1097c5a 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.co [![Supported Languages](https://img.shields.io/badge/Languages-19-royalblue)](https://github.com/Andre0512/hon#supported-languages) [![Supported Appliances](https://img.shields.io/badge/Appliances-11-forestgreen)](https://github.com/Andre0512/hon#supported-appliances) -[![Supported Models](https://img.shields.io/badge/Models-69-yellowgreen)](https://github.com/Andre0512/hon#supported-models) +[![Supported Models](https://img.shields.io/badge/Models-72-yellowgreen)](https://github.com/Andre0512/hon#supported-models) [![Supported Entities](https://img.shields.io/badge/Entities-241-crimson)](https://github.com/Andre0512/hon#appliance-features) ## Supported Appliances @@ -46,22 +46,21 @@ _Restart Home Assistant_ _If the integration is not in the list, you need to clear the browser cache._ ## Supported Models -Support has been confirmed for these **69 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). - -| | **Haier** | **Hoover** | **Candy** | -|---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| -| **Washing Machine** | HW80-B14959TU1DE
HW80-B14959TU1IT
HW80-B14979TU1
HW90-B14TEAM5
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H-WASH 500
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80
HWE 49AMBS/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | -| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5
HD90-A2959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S
ROE H10A2TCE-07 | -| **Washer Dryer** | HWD100-B14979
HWD100-B14978 | HD 485AMBB/1-S
HD 495AMC/1-S
HD 4106AMC/1-80
HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | -| **Oven** | HWO60SM2F3XH | HSOT3161WG | | -| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | -| **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1) | | CY-12TAIN | -| **Fridge** | HFW7720ENMB
HFW7819EWMP | | CCE4T620EWU | -| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | -| **Hood** | HADG6DS46BWIFI | | | -| **Wine Cellar** | HWS247FDU1 | | | -| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011 | | +Support has been confirmed for these **72 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +| | **Haier** | **Hoover** | **Candy** | +|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| +| **Washing Machine** | HW80-B14959TU1DE
HW80-B14959TU1IT
HW80-B14979TU1
HW90-B14TEAM5
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H-WASH 500
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80
HWE 49AMBS/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | +| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5
HD90-A2959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S
ROE H10A2TCE-07 | +| **Washer Dryer** | HWD80-B14979U1
HWD100-B14979
HWD100-B14978 | HD 485AMBB/1-S
HD 495AMC/1-S
HD 4106AMC/1-80
HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | +| **Oven** | HWO60SM2F3XH | HSOT3161WG | | +| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | +| **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS25TEDHRA(M1)
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1) | | CY-12TAIN | +| **Fridge** | HFW7720ENMB
HFW7819EWMP | | CCE4T620EWU
CCE4T618EW | +| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | +| **Hood** | HADG6DS46BWIFI | | | +| **Wine Cellar** | HWS247FDU1 | | | +| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011 | | | Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data).
This helps us to develop new features and not to break compatibility in newer versions. | |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| diff --git a/info.md b/info.md index e164142..1f62559 100644 --- a/info.md +++ b/info.md @@ -11,7 +11,7 @@ Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.co [![Supported Languages](https://img.shields.io/badge/Languages-19-royalblue)](https://github.com/Andre0512/hon#supported-languages) [![Supported Appliances](https://img.shields.io/badge/Appliances-11-forestgreen)](https://github.com/Andre0512/hon#supported-appliances) -[![Supported Models](https://img.shields.io/badge/Models-69-yellowgreen)](https://github.com/Andre0512/hon#supported-models) +[![Supported Models](https://img.shields.io/badge/Models-72-yellowgreen)](https://github.com/Andre0512/hon#supported-models) [![Supported Entities](https://img.shields.io/badge/Entities-241-crimson)](https://github.com/Andre0512/hon#appliance-features) ## Supported Appliances @@ -35,21 +35,21 @@ Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.co _If the integration is not in the list, you need to clear the browser cache._ ## Supported Models -Support has been confirmed for these **69 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +Support has been confirmed for these **72 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). -| | **Haier** | **Hoover** | **Candy** | -|---------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| -| **Washing Machine** | HW80-B14959TU1DE
HW80-B14959TU1IT
HW80-B14979TU1
HW90-B14TEAM5
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H-WASH 500
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80
HWE 49AMBS/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | -| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5
HD90-A2959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S
ROE H10A2TCE-07 | -| **Washer Dryer** | HWD100-B14979
HWD100-B14978 | HD 485AMBB/1-S
HD 495AMC/1-S
HD 4106AMC/1-80
HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | -| **Oven** | HWO60SM2F3XH | HSOT3161WG | | -| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | -| **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1) | | CY-12TAIN | -| **Fridge** | HFW7720ENMB
HFW7819EWMP | | CCE4T620EWU | -| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | -| **Hood** | HADG6DS46BWIFI | | | -| **Wine Cellar** | HWS247FDU1 | | | -| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011 | | +| | **Haier** | **Hoover** | **Candy** | +|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| +| **Washing Machine** | HW80-B14959TU1DE
HW80-B14959TU1IT
HW80-B14979TU1
HW90-B14TEAM5
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H-WASH 500
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80
HWE 49AMBS/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | +| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5
HD90-A2959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S
ROE H10A2TCE-07 | +| **Washer Dryer** | HWD80-B14979U1
HWD100-B14979
HWD100-B14978 | HD 485AMBB/1-S
HD 495AMC/1-S
HD 4106AMC/1-80
HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | +| **Oven** | HWO60SM2F3XH | HSOT3161WG | | +| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | +| **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS25TEDHRA(M1)
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1) | | CY-12TAIN | +| **Fridge** | HFW7720ENMB
HFW7819EWMP | | CCE4T620EWU
CCE4T618EW | +| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | +| **Hood** | HADG6DS46BWIFI | | | +| **Wine Cellar** | HWS247FDU1 | | | +| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011 | | | Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data).
This helps us to develop new features and not to break compatibility in newer versions. | |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -- 2.39.5 From 5e17081feb8dc60697a3810a68a0d908b9fda30c Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 2 Oct 2023 03:33:45 +0200 Subject: [PATCH 179/205] Add Stain Type #105 --- README.md | 6 ++- custom_components/hon/const.py | 38 +++++++++++++++++++ custom_components/hon/manifest.json | 4 +- custom_components/hon/select.py | 6 +++ custom_components/hon/sensor.py | 8 ++++ custom_components/hon/translations/cs.json | 43 ++++++++++++++++++++++ custom_components/hon/translations/de.json | 43 ++++++++++++++++++++++ custom_components/hon/translations/el.json | 43 ++++++++++++++++++++++ custom_components/hon/translations/en.json | 43 ++++++++++++++++++++++ custom_components/hon/translations/es.json | 43 ++++++++++++++++++++++ custom_components/hon/translations/fr.json | 43 ++++++++++++++++++++++ custom_components/hon/translations/he.json | 43 ++++++++++++++++++++++ custom_components/hon/translations/hr.json | 43 ++++++++++++++++++++++ custom_components/hon/translations/it.json | 43 ++++++++++++++++++++++ custom_components/hon/translations/nl.json | 43 ++++++++++++++++++++++ custom_components/hon/translations/pl.json | 43 ++++++++++++++++++++++ custom_components/hon/translations/pt.json | 43 ++++++++++++++++++++++ custom_components/hon/translations/ro.json | 43 ++++++++++++++++++++++ custom_components/hon/translations/ru.json | 43 ++++++++++++++++++++++ custom_components/hon/translations/sk.json | 43 ++++++++++++++++++++++ custom_components/hon/translations/sl.json | 43 ++++++++++++++++++++++ custom_components/hon/translations/sr.json | 43 ++++++++++++++++++++++ custom_components/hon/translations/tr.json | 43 ++++++++++++++++++++++ custom_components/hon/translations/zh.json | 43 ++++++++++++++++++++++ scripts/sensor_docs.py | 2 + scripts/translation_keys.py | 42 +++++++++++++++++++++ 26 files changed, 920 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 1097c5a..55f0ec1 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.co [![Supported Languages](https://img.shields.io/badge/Languages-19-royalblue)](https://github.com/Andre0512/hon#supported-languages) [![Supported Appliances](https://img.shields.io/badge/Appliances-11-forestgreen)](https://github.com/Andre0512/hon#supported-appliances) [![Supported Models](https://img.shields.io/badge/Models-72-yellowgreen)](https://github.com/Andre0512/hon#supported-models) -[![Supported Entities](https://img.shields.io/badge/Entities-241-crimson)](https://github.com/Andre0512/hon#appliance-features) +[![Supported Entities](https://img.shields.io/badge/Entities-313-crimson)](https://github.com/Andre0512/hon#appliance-features) ## Supported Appliances - [Washing Machine](https://github.com/Andre0512/hon#washing-machine) @@ -471,6 +471,7 @@ For every device exists a button under diagnostics which can be used to log all | Rinse Iterations | `rotate-right` | `number` | `startProgram.rinseIterations` | | Soak Prewash Selection | `tshirt-crew` | `switch` | `startProgram.haier_SoakPrewashSelection` | | Spin speed | `numeric` | `select` | `startProgram.spinSpeed` | +| Stain Type | `liquid-spot` | `select` | `startProgram.extendedStainType` | | Steam Type | `weather-dust` | `sensor` | `steamType` | | Steam level | `weather-dust` | `select` | `startProgram.steamLevel` | | Sterilization | `lotion-plus` | `switch` | `startProgram.sterilizationStatus` | @@ -506,6 +507,7 @@ For every device exists a button under diagnostics which can be used to log all | Remaining Time | `timer` | `sensor` | `remainingTimeMM` | | Remote Control | `remote` | `binary_sensor` | `attributes.lastConnEvent.category` | | Spin Speed | `speedometer` | `sensor` | `spinSpeed` | +| Stain Type | `liquid-spot` | `sensor` | `stainType` | | Start Time | `clock-start` | `sensor` | `delayTime` | | Steam level | `weather-dust` | `sensor` | `steamLevel` | | Temperature level | `thermometer` | `sensor` | `tempLevel` | @@ -548,6 +550,7 @@ For every device exists a button under diagnostics which can be used to log all | Rinse Iterations | `rotate-right` | `number` | `startProgram.rinseIterations` | | Soak Prewash Selection | `tshirt-crew` | `switch` | `startProgram.haier_SoakPrewashSelection` | | Spin speed | `numeric` | `select` | `startProgram.spinSpeed` | +| Stain Type | `liquid-spot` | `select` | `startProgram.extendedStainType` | | Steam level | `weather-dust` | `select` | `startProgram.steamLevel` | | Suggested Load | `weight-kilogram` | `sensor` | `startProgram.suggestedLoadW` | | Suggested weight | `weight-kilogram` | `sensor` | `startProgram.weight` | @@ -576,6 +579,7 @@ For every device exists a button under diagnostics which can be used to log all | Remaining Time | `timer` | `sensor` | `remainingTimeMM` | | Remote Control | `remote` | `binary_sensor` | `attributes.lastConnEvent.category` | | Spin Speed | `speedometer` | `sensor` | `spinSpeed` | +| Stain Type | `liquid-spot` | `sensor` | `stainType` | | Steam level | `weather-dust` | `sensor` | `steamLevel` | | Total Power | | `sensor` | `totalElectricityUsed` | | Total Wash Cycle | `counter` | `sensor` | `totalWashCycle` | diff --git a/custom_components/hon/const.py b/custom_components/hon/const.py index 5bbee26..03c7a13 100644 --- a/custom_components/hon/const.py +++ b/custom_components/hon/const.py @@ -226,3 +226,41 @@ AP_DIFFUSER_LEVEL: dict[int, str] = { } REF_HUMIDITY_LEVELS: dict[int, str] = {1: "low", 2: "mid", 3: "high"} + +STAIN_TYPES: dict[int, str] = { + 0: "unknown", + 1: "wine", + 2: "grass", + 3: "soil", + 4: "blood", + 5: "milk", + # 6: "butter", + 6: "cooking_oil", + 7: "tea", + 8: "coffee", + # 9: "chocolate", + 9: "ice_cream", + 10: "lip_gloss", + 11: "curry", + 12: "milk_tea", + # 13: "chili_oil", + 13: "rust", + 14: "blue_ink", + # 14: "mech_grease", + # 15: "color_pencil", + # 15: "deodorant", + 15: "perfume", + # 16: "glue", + 16: "shoe_cream", + 17: "oil_pastel", + 18: "blueberry", + 19: "sweat", + 20: "egg", + # 20: "mayonnaise", + 21: "ketchup", + 22: "baby_food", + 23: "soy_sauce", + 24: "bean_paste", + 25: "chili_sauce", + 26: "fruit", +} diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 331c7de..3fe7172 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -9,7 +9,7 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": [ - "pyhOn==0.15.5" + "pyhOn==0.15.8" ], - "version": "0.9.1" + "version": "0.10.0-beta.1" } diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index f855479..58a11c1 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -64,6 +64,12 @@ SELECTS: dict[str, tuple[SelectEntityDescription, ...]] = { translation_key="dirt_level", option_list=const.DIRTY_LEVEL, ), + HonConfigSelectEntityDescription( + key="startProgram.extendedStainType", + name="Stain Type", + icon="mdi:liquid-spot", + translation_key="stain_type", + ), ), "TD": ( HonConfigSelectEntityDescription( diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index a2d57d9..d381550 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -195,6 +195,14 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { translation_key="steam_level", option_list=const.STEAM_LEVEL, ), + HonSensorEntityDescription( + key="stainType", + name="Stain Type", + icon="mdi:liquid-spot", + device_class=SensorDeviceClass.ENUM, + translation_key="stain_type", + option_list=const.STAIN_TYPES, + ), ), "TD": ( HonSensorEntityDescription( diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index e6777a0..72a777a 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -1721,6 +1721,49 @@ "unknown": "unknown" }, "name": "Míra znečištění" + }, + "stain_type": { + "state": { + "baby_food": "Dětská výživa", + "bean_paste": "Fazolová polévka", + "blood": "Krev", + "blueberry": "Borůvka", + "blue_ink": "Modrý inkoust", + "butter": "Máslo", + "chili_oil": "Chilli olej", + "chili_sauce": "Chilli omáčka", + "chocolate": "Čokoláda", + "coffe": "Káva", + "coffee": "Káva", + "color_pencil": "Tužka", + "cooking_oil": "Kuchyňský olej", + "curry": "Kari", + "deodorant": "Deodorant", + "egg": "Vejce", + "fruit": "Ovoce", + "glue": "Lepidlo", + "grass": "Tráva", + "ice_cream": "Zmrzlina", + "ketchup": "Kečup", + "lip_gloss": "Lesk na rty", + "mayonnaise": "Majonéza", + "mech_grease": "Strojní mazivo", + "milk": "Mléko", + "milk_tea": "Čaj s mlékem", + "oil": "Olej", + "oil_pastel": "Olejový pastel", + "perfume": "Parfém", + "rust": "Rez", + "shoe_cream": "Krém na obuv", + "soil": "Hlína", + "soy_sauce": "Sójová Omáčka", + "stain_level": "Úroveň znečištění", + "sweat": "Skvrny od potu", + "tea": "Čaj", + "wine": "Víno", + "unknown": "unknown" + }, + "name": "Úroveň znečištění" } }, "switch": { diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index 9c610f5..b21e01a 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -1721,6 +1721,49 @@ "unknown": "unknown" }, "name": "Verschmutzungsgrad" + }, + "stain_type": { + "state": { + "baby_food": "Babynahrung", + "bean_paste": "Bohnensuppe", + "blood": "Blut", + "blueberry": "Blaubeere", + "blue_ink": "Blaue Tinte", + "butter": "Butter", + "chili_oil": "Chili-Öl", + "chili_sauce": "Chili-Sauce", + "chocolate": "Schokolade", + "coffe": "Kaffee", + "coffee": "Kaffee", + "color_pencil": "Bleistift", + "cooking_oil": "Speiseöl", + "curry": "Curry", + "deodorant": "Deodorant", + "egg": "Ei", + "fruit": "Obst", + "glue": "Klebstoff", + "grass": "Gras", + "ice_cream": "Eiscreme", + "ketchup": "Ketchup", + "lip_gloss": "Lipgloss", + "mayonnaise": "Mayonaise", + "mech_grease": "Mechanisches Fett", + "milk": "Milch", + "milk_tea": "Milchtee", + "oil": "Öl", + "oil_pastel": "Ölpastell", + "perfume": "Parfüm", + "rust": "Rostflecken", + "shoe_cream": "Schuhcreme", + "soil": "Boden", + "soy_sauce": "Sojasosse", + "stain_level": "Grad der Verschmutzung", + "sweat": "Schweiß", + "tea": "Tee", + "wine": "Wein", + "unknown": "unknown" + }, + "name": "Grad der Verschmutzung" } }, "switch": { diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index 4061281..2ebaee7 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -1721,6 +1721,49 @@ "unknown": "unknown" }, "name": "Επίπεδο βρωμιάς" + }, + "stain_type": { + "state": { + "baby_food": "Βρεφικές τροφές", + "bean_paste": "Σούπα φασολιών", + "blood": "Αίμα", + "blueberry": "Μπλε μύρτιλο (μπλούμπερι)", + "blue_ink": "Μπλε μελάνι", + "butter": "Βούτυρο", + "chili_oil": "Λάδι τσίλι", + "chili_sauce": "Σάλτσα τσίλι", + "chocolate": "Σοκολάτα", + "coffe": "Καφές", + "coffee": "Καφές", + "color_pencil": "Μολύβι", + "cooking_oil": "Μαγειρικό λάδι", + "curry": "Κάρι", + "deodorant": "Αποσμητικό", + "egg": "Αυγό", + "fruit": "Φρουτα", + "glue": "Κόλλα", + "grass": "Γρασίδι", + "ice_cream": "Παγωτό", + "ketchup": "Κέτσαπ", + "lip_gloss": "Lip gloss", + "mayonnaise": "Μαγιονέζα", + "mech_grease": "Λάδι μηχανής", + "milk": "Γάλα", + "milk_tea": "Τσάι με γάλα", + "oil": "Λάδι", + "oil_pastel": "Χρώμα λαδιού", + "perfume": "Άρωμα", + "rust": "Σκουριά", + "shoe_cream": "Βερνίκι παπουτσιών", + "soil": "Χώμα", + "soy_sauce": "Σαλτσα Σογιας", + "stain_level": "Επίπεδο λεκέδων", + "sweat": "Ιδρώτας", + "tea": "Τσάι", + "wine": "Κρασί", + "unknown": "unknown" + }, + "name": "Επίπεδο λεκέδων" } }, "switch": { diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index d6868a8..8a331e9 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -1750,6 +1750,49 @@ "unknown": "unknown" }, "name": "Dirt level" + }, + "stain_type": { + "state": { + "baby_food": "Baby food", + "bean_paste": "Bean soup", + "blood": "Blood", + "blueberry": "Blueberry", + "blue_ink": "Blue ink", + "butter": "Butter", + "chili_oil": "Chili oil", + "chili_sauce": "Chili sauce", + "chocolate": "Chocolate", + "coffe": "Coffee", + "coffee": "Coffee", + "color_pencil": "Pencil", + "cooking_oil": "Cooking oil", + "curry": "Curry", + "deodorant": "Deodorant", + "egg": "Egg", + "fruit": "Fruit", + "glue": "Glue", + "grass": "Grass", + "ice_cream": "Ice cream", + "ketchup": "Ketchup", + "lip_gloss": "Lip gloss", + "mayonnaise": "Mayonnaise", + "mech_grease": "Mech grease", + "milk": "Milk", + "milk_tea": "Milk tea", + "oil": "Oil", + "oil_pastel": "Oil pastel", + "perfume": "Perfume", + "rust": "Rust", + "shoe_cream": "Shoe cream", + "soil": "Soil", + "soy_sauce": "Soy sauce", + "stain_level": "Stain level", + "sweat": "Sweat", + "tea": "Tea", + "wine": "Wine", + "unknown": "unknown" + }, + "name": "Stain level" } }, "switch": { diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index 9e8f13e..17100cb 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -1721,6 +1721,49 @@ "unknown": "unknown" }, "name": "Nivel de suciedad" + }, + "stain_type": { + "state": { + "baby_food": "Comida de bebé", + "bean_paste": "Sopa de alubias", + "blood": "Sangre", + "blueberry": "Arándano", + "blue_ink": "Tinta azul", + "butter": "Mantequilla", + "chili_oil": "Aceite de chile", + "chili_sauce": "Salsa de chile", + "chocolate": "Chocolate", + "coffe": "Café", + "coffee": "Café", + "color_pencil": "Lápiz", + "cooking_oil": "Aceite de cocina", + "curry": "Curry", + "deodorant": "Desodorante", + "egg": "Huevo", + "fruit": "Fruta", + "glue": "Pegamento", + "grass": "Césped", + "ice_cream": "Helado", + "ketchup": "Kétchup", + "lip_gloss": "Brillo de labios", + "mayonnaise": "Mayonesa", + "mech_grease": "Grasa mecánica", + "milk": "Leche", + "milk_tea": "Té con leche", + "oil": "Aceite", + "oil_pastel": "Pastel al óleo", + "perfume": "Perfume", + "rust": "Óxido", + "shoe_cream": "Betún", + "soil": "Tierra", + "soy_sauce": "Salsa De Soja", + "stain_level": "Nivel de manchas", + "sweat": "Sudor", + "tea": "Té", + "wine": "Vino", + "unknown": "unknown" + }, + "name": "Nivel de manchas" } }, "switch": { diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index 7ec59be..698f09b 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -1721,6 +1721,49 @@ "unknown": "unknown" }, "name": "Niveau de saleté" + }, + "stain_type": { + "state": { + "baby_food": "Aliments pour bébés", + "bean_paste": "Soupe de haricots", + "blood": "Sang", + "blueberry": "Myrtilles", + "blue_ink": "Encre bleue", + "butter": "Beurre", + "chili_oil": "Huile piquante", + "chili_sauce": "Sauce chili", + "chocolate": "Chocolat", + "coffe": "Café", + "coffee": "Café", + "color_pencil": "Crayon", + "cooking_oil": "Huile de cuisson", + "curry": "Curry", + "deodorant": "Déodorant", + "egg": "Œuf", + "fruit": "Fruits", + "glue": "Colle", + "grass": "Herbe", + "ice_cream": "Glace", + "ketchup": "Ketchup", + "lip_gloss": "Brillant à lèvres", + "mayonnaise": "Mayonnaise", + "mech_grease": "Graisse mécanique", + "milk": "Lait", + "milk_tea": "Thé au lait", + "oil": "Huile", + "oil_pastel": "Pastel à l'huile", + "perfume": "Parfum", + "rust": "Rouille", + "shoe_cream": "Cirage pour chaussures", + "soil": "Sol", + "soy_sauce": "Sauce Soja", + "stain_level": "Niveau de salissure", + "sweat": "Sueur", + "tea": "Thé", + "wine": "Vin", + "unknown": "unknown" + }, + "name": "Niveau de salissure" } }, "switch": { diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index daa53fb..d1dc0bf 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -786,6 +786,49 @@ "unknown": "unknown" }, "name": "רמת עפר" + }, + "stain_type": { + "state": { + "baby_food": "Baby food", + "bean_paste": "Bean soup", + "blood": "Blood", + "blueberry": "Blueberry", + "blue_ink": "Blue ink", + "butter": "Butter", + "chili_oil": "Chili oil", + "chili_sauce": "Chili sauce", + "chocolate": "שוקולד", + "coffe": "Coffee", + "coffee": "Coffee", + "color_pencil": "Pencil", + "cooking_oil": "Cooking oil", + "curry": "Curry", + "deodorant": "Deodorant", + "egg": "Egg", + "fruit": "פרי", + "glue": "Glue", + "grass": "Grass", + "ice_cream": "Ice cream", + "ketchup": "Ketchup", + "lip_gloss": "Lip gloss", + "mayonnaise": "Mayonnaise", + "mech_grease": "Mech grease", + "milk": "Milk", + "milk_tea": "Milk tea", + "oil": "Oil", + "oil_pastel": "Oil pastel", + "perfume": "Perfume", + "rust": "Rust", + "shoe_cream": "Shoe cream", + "soil": "Soil", + "soy_sauce": "רוטב סויה", + "stain_level": "Stain level", + "sweat": "Sweat", + "tea": "תה", + "wine": "Wine", + "unknown": "unknown" + }, + "name": "Stain level" } }, "switch": { diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index 63daa8e..a4acff1 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -1721,6 +1721,49 @@ "unknown": "unknown" }, "name": "Stupanj zaprljanosti" + }, + "stain_type": { + "state": { + "baby_food": "Hrana za bebe", + "bean_paste": "Juha od graha", + "blood": "Krv", + "blueberry": "Borovnica", + "blue_ink": "Plava tinta", + "butter": "Maslac", + "chili_oil": "Ulje čilija", + "chili_sauce": "Umak od čilija", + "chocolate": "Čokolada", + "coffe": "Kava", + "coffee": "Kava", + "color_pencil": "Olovka", + "cooking_oil": "Ulje za kuhanje", + "curry": "Curry", + "deodorant": "Dezodorans", + "egg": "Jaje", + "fruit": "Voće", + "glue": "Ljepilo", + "grass": "Trava", + "ice_cream": "Sladoled", + "ketchup": "Kečap", + "lip_gloss": "Sjajilo za usne", + "mayonnaise": "Majoneza", + "mech_grease": "Mech mast", + "milk": "Mlijeko", + "milk_tea": "Čaj s mlijekom", + "oil": "Ulje", + "oil_pastel": "Uljne pastele", + "perfume": "Parfem", + "rust": "Hrđa", + "shoe_cream": "Krema za cipele", + "soil": "Tlo", + "soy_sauce": "Umak Od Soje", + "stain_level": "Razina mrlja", + "sweat": "Znoj", + "tea": "Čaj", + "wine": "Vino", + "unknown": "unknown" + }, + "name": "Razina mrlja" } }, "switch": { diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index ccee9f3..c13896a 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -1730,6 +1730,49 @@ "unknown": "unknown" }, "name": "Livello di sporco" + }, + "stain_type": { + "state": { + "baby_food": "Cibo per bambini", + "bean_paste": "Crema di fagioli", + "blood": "Sangue", + "blueberry": "Mirtillo", + "blue_ink": "Inchiostro blu", + "butter": "Burro", + "chili_oil": "Olio piccante", + "chili_sauce": "Salsa piccante", + "chocolate": "Cioccolato", + "coffe": "Caffè", + "coffee": "Caffè", + "color_pencil": "Matita", + "cooking_oil": "Olio di cottura", + "curry": "Curry", + "deodorant": "Deodorante", + "egg": "Uovo", + "fruit": "Frutta", + "glue": "Colla", + "grass": "Erba", + "ice_cream": "Gelato", + "ketchup": "Ketchup", + "lip_gloss": "Lucidalabbra", + "mayonnaise": "Maionese", + "mech_grease": "Grasso meccanico", + "milk": "Latte", + "milk_tea": "Tè con latte", + "oil": "Olio", + "oil_pastel": "Pastello ad olio", + "perfume": "Profumo", + "rust": "Ruggine", + "shoe_cream": "Crema lucidascarpe", + "soil": "Terra", + "soy_sauce": "Salsa di soia", + "stain_level": "Livello di sporco", + "sweat": "Sudore", + "tea": "Tè", + "wine": "Vino", + "unknown": "unknown" + }, + "name": "Livello di sporco" } }, "switch": { diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index 9dcc9e7..795966d 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -1721,6 +1721,49 @@ "unknown": "unknown" }, "name": "Vuilheid" + }, + "stain_type": { + "state": { + "baby_food": "Babyvoeding", + "bean_paste": "Bonensoep", + "blood": "Bloed", + "blueberry": "Blauwe bessen", + "blue_ink": "Blauwe inkt", + "butter": "Boter", + "chili_oil": "Chili-olie", + "chili_sauce": "Chilisaus", + "chocolate": "Chocolade", + "coffe": "Koffie", + "coffee": "Koffie", + "color_pencil": "Potlood", + "cooking_oil": "Bakolie", + "curry": "Curry", + "deodorant": "Deodorant", + "egg": "Ei", + "fruit": "Fruit", + "glue": "Lijm", + "grass": "Gras", + "ice_cream": "IJs", + "ketchup": "Ketchup", + "lip_gloss": "Lipgloss", + "mayonnaise": "Mayonaise", + "mech_grease": "Smeervet", + "milk": "Melk", + "milk_tea": "Thee met melk", + "oil": "Olie", + "oil_pastel": "Oliepastel", + "perfume": "Parfum", + "rust": "Roest", + "shoe_cream": "Schoensmeer", + "soil": "Aarde", + "soy_sauce": "Sojasaus", + "stain_level": "Vlekniveau", + "sweat": "Zweet", + "tea": "Thee", + "wine": "Wijn", + "unknown": "unknown" + }, + "name": "Vlekniveau" } }, "switch": { diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index 3795703..97f454c 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -1721,6 +1721,49 @@ "unknown": "unknown" }, "name": "Stopień zabrudzenia" + }, + "stain_type": { + "state": { + "baby_food": "Jedzenie dla dzieci", + "bean_paste": "Zupa fasolowa", + "blood": "Krew", + "blueberry": "Borówka amerykańska", + "blue_ink": "Niebieski atrament", + "butter": "Masło", + "chili_oil": "Olej z chili", + "chili_sauce": "Sos chili", + "chocolate": "Czekolada", + "coffe": "Kawa", + "coffee": "Kawa", + "color_pencil": "Ołówek", + "cooking_oil": "Olej do gotowania", + "curry": "Curry", + "deodorant": "Dezodorant", + "egg": "Jajko", + "fruit": "Owoce", + "glue": "Klej", + "grass": "Trawa", + "ice_cream": "Lody", + "ketchup": "Ketchup", + "lip_gloss": "Błyszczyk", + "mayonnaise": "Majonez", + "mech_grease": "Smar mechaniczny", + "milk": "Mleko", + "milk_tea": "Herbata z mlekiem", + "oil": "Olej", + "oil_pastel": "Pastele olejne", + "perfume": "Perfumy", + "rust": "Rdza", + "shoe_cream": "pasta do butów", + "soil": "Ziemia", + "soy_sauce": "Sos Sojowy", + "stain_level": "Stopień zabrudzenia", + "sweat": "Pot", + "tea": "Herbata", + "wine": "Wino", + "unknown": "unknown" + }, + "name": "Stopień zabrudzenia" } }, "switch": { diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index 33cdbdc..1084b88 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -1721,6 +1721,49 @@ "unknown": "unknown" }, "name": "Nível de sujidade" + }, + "stain_type": { + "state": { + "baby_food": "Alimentos para bebés", + "bean_paste": "Sopa de feijão", + "blood": "Sangue", + "blueberry": "Mirtilo", + "blue_ink": "Tinta azul", + "butter": "Manteiga", + "chili_oil": "Óleo de pimentão", + "chili_sauce": "Molho de chili", + "chocolate": "Chocolate", + "coffe": "Café", + "coffee": "Café", + "color_pencil": "Lápis", + "cooking_oil": "Óleo alimentar", + "curry": "Caril", + "deodorant": "Desodorizante", + "egg": "Ovo", + "fruit": "Fruta", + "glue": "Cola", + "grass": "Relva", + "ice_cream": "Gelado", + "ketchup": "Ketchup", + "lip_gloss": "Brilho labial", + "mayonnaise": "Maionese", + "mech_grease": "Massa lubrificante mecânica", + "milk": "Leite", + "milk_tea": "Chá com leite", + "oil": "Petróleo", + "oil_pastel": "Pastel de óleo", + "perfume": "Perfume", + "rust": "Ferrugem", + "shoe_cream": "Graxa para sapatos", + "soil": "Solo", + "soy_sauce": "Molho De Soja", + "stain_level": "Nível da nódoa", + "sweat": "Suor", + "tea": "Chá", + "wine": "Vinho", + "unknown": "unknown" + }, + "name": "Nível da nódoa" } }, "switch": { diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index 7146920..2d592a9 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -1721,6 +1721,49 @@ "unknown": "unknown" }, "name": "Nivel de murdărie" + }, + "stain_type": { + "state": { + "baby_food": "Alimente pentru copii", + "bean_paste": "Supă de fasole", + "blood": "Sânge", + "blueberry": "Afine", + "blue_ink": "Cerneală albastră", + "butter": "Unt", + "chili_oil": "Ulei de chili", + "chili_sauce": "Sos de chili", + "chocolate": "Ciocolată", + "coffe": "Cafea", + "coffee": "Cafea", + "color_pencil": "Creion", + "cooking_oil": "Ulei de gătit", + "curry": "Curry", + "deodorant": "Deodorant", + "egg": "Ou", + "fruit": "Fructe", + "glue": "Lipici", + "grass": "Iarbă", + "ice_cream": "Înghețată", + "ketchup": "Ketchup", + "lip_gloss": "Luciu de buze", + "mayonnaise": "Maioneză", + "mech_grease": "Unsoare mecanică", + "milk": "Lapte", + "milk_tea": "Ceai cu lapte", + "oil": "Ulei", + "oil_pastel": "Culori pe bază de ulei", + "perfume": "Parfum", + "rust": "Rugină", + "shoe_cream": "Cremă pentru pantofi", + "soil": "Pământ", + "soy_sauce": "Sos de soia", + "stain_level": "Nivelul de pătare", + "sweat": "Sudoare", + "tea": "Ceai", + "wine": "Vin", + "unknown": "unknown" + }, + "name": "Nivelul de pătare" } }, "switch": { diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index 49d0259..8a907c8 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -1721,6 +1721,49 @@ "unknown": "unknown" }, "name": "Уровень загрязнения" + }, + "stain_type": { + "state": { + "baby_food": "Детское питание", + "bean_paste": "Фасолевый суп", + "blood": "Кровь", + "blueberry": "Голубика", + "blue_ink": "Синие чернила", + "butter": "Масло", + "chili_oil": "Масло чили", + "chili_sauce": "Соус чили", + "chocolate": "Шоколад", + "coffe": "Кофе", + "coffee": "Кофе", + "color_pencil": "Карандаш", + "cooking_oil": "Растительное масло", + "curry": "Карри", + "deodorant": "Дезодорант", + "egg": "Яйцо", + "fruit": "Фрукты", + "glue": "Клей", + "grass": "Трава", + "ice_cream": "Мороженое", + "ketchup": "Кетчуп", + "lip_gloss": "Блеск для губ", + "mayonnaise": "Майонез", + "mech_grease": "Мех. смазка", + "milk": "Молоко", + "milk_tea": "Молочный чай", + "oil": "Растительное масло", + "oil_pastel": "Масляная пастель", + "perfume": "Парфюмерия", + "rust": "Ржавчина", + "shoe_cream": "Крем для обуви", + "soil": "Почва", + "soy_sauce": "Соевый Соус", + "stain_level": "Уровень загрязнения", + "sweat": "Пот", + "tea": "Чай", + "wine": "Вино", + "unknown": "unknown" + }, + "name": "Уровень загрязнения" } }, "switch": { diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index 55b7bda..27a8d6c 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -1721,6 +1721,49 @@ "unknown": "unknown" }, "name": "Úroveň znečistenia" + }, + "stain_type": { + "state": { + "baby_food": "Detská výživa", + "bean_paste": "Fazuľová polievka", + "blood": "Krv", + "blueberry": "Čučoriedka", + "blue_ink": "Modrý atrament", + "butter": "Maslo", + "chili_oil": "Čili olej", + "chili_sauce": "Čili omáčka", + "chocolate": "Čokoláda", + "coffe": "Káva", + "coffee": "Káva", + "color_pencil": "Ceruzka", + "cooking_oil": "Olej na varenie", + "curry": "Karí", + "deodorant": "Dezodorant", + "egg": "Vajíčko", + "fruit": "Ovocie", + "glue": "Lepidlo", + "grass": "Tráva", + "ice_cream": "Zmrzlina", + "ketchup": "Kečup", + "lip_gloss": "Lesk na pery", + "mayonnaise": "Majonéza", + "mech_grease": "Mechanické mazivo", + "milk": "Mlieko", + "milk_tea": "Mliečny čaj", + "oil": "Olej", + "oil_pastel": "Olejový pastel", + "perfume": "Parfém", + "rust": "Hrdza", + "shoe_cream": "Krém na topánky", + "soil": "Pôda", + "soy_sauce": "Sójovej Omáčky", + "stain_level": "Úroveň škvŕn", + "sweat": "Pot", + "tea": "Čaj", + "wine": "Víno", + "unknown": "unknown" + }, + "name": "Úroveň škvŕn" } }, "switch": { diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index 691f8db..954293d 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -1721,6 +1721,49 @@ "unknown": "unknown" }, "name": "Stopnja umazanije" + }, + "stain_type": { + "state": { + "baby_food": "Otroška hrana", + "bean_paste": "Fižolova juha", + "blood": "Kri", + "blueberry": "Borovnica", + "blue_ink": "Modro črnilo", + "butter": "Maslo", + "chili_oil": "Čilijevo olje", + "chili_sauce": "Čili omaka", + "chocolate": "Čokolada", + "coffe": "Kava", + "coffee": "Kava", + "color_pencil": "Svinčnik", + "cooking_oil": "Olje za kuhanje", + "curry": "Kari", + "deodorant": "Dezodorant", + "egg": "Jajce", + "fruit": "Sadje", + "glue": "Lepilo", + "grass": "Trava", + "ice_cream": "Sladoled", + "ketchup": "Kečap", + "lip_gloss": "Balzam za ustnice", + "mayonnaise": "Majoneza", + "mech_grease": "Strojna mast", + "milk": "Mleko", + "milk_tea": "Mlečni čaj", + "oil": "Olje", + "oil_pastel": "Oljni pastel", + "perfume": "Parfum", + "rust": "Rja", + "shoe_cream": "Krema za čevlje", + "soil": "Tla", + "soy_sauce": "Sojina Omaka", + "stain_level": "Stopnja madežev", + "sweat": "Pot", + "tea": "Čaj", + "wine": "Vino", + "unknown": "unknown" + }, + "name": "Stopnja madežev" } }, "switch": { diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index be49d99..3c94f97 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -1721,6 +1721,49 @@ "unknown": "unknown" }, "name": "Nivo zaprljanosti" + }, + "stain_type": { + "state": { + "baby_food": "Hrana za bebe", + "bean_paste": "Pasulj", + "blood": "Krv", + "blueberry": "Borovnica", + "blue_ink": "Plavo mastilo", + "butter": "Maslac", + "chili_oil": "Ulje sa čilijem", + "chili_sauce": "Čili sos", + "chocolate": "Čokolada", + "coffe": "Kafa", + "coffee": "Kafa", + "color_pencil": "Olovka", + "cooking_oil": "Kuhinjsko ulje", + "curry": "Kari", + "deodorant": "Dezodorans", + "egg": "Jaje", + "fruit": "Voće", + "glue": "Lepak", + "grass": "Trava", + "ice_cream": "Sladoled", + "ketchup": "Kečap", + "lip_gloss": "Sjaj za usne", + "mayonnaise": "Majonez", + "mech_grease": "Mehaničko mazivo", + "milk": "Mleko", + "milk_tea": "Čaj sa mlekom", + "oil": "Ulje", + "oil_pastel": "Voštane boje", + "perfume": "Parfem", + "rust": "Rđa", + "shoe_cream": "Krema za cipele", + "soil": "Zemlja", + "soy_sauce": "Soja Sos", + "stain_level": "Nivo mrlje", + "sweat": "Znoj", + "tea": "Čaj", + "wine": "Vino", + "unknown": "unknown" + }, + "name": "Nivo mrlje" } }, "switch": { diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index d3c4c61..9af7407 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -1721,6 +1721,49 @@ "unknown": "unknown" }, "name": "Kir seviyesi" + }, + "stain_type": { + "state": { + "baby_food": "Bebek maması", + "bean_paste": "Fasulye çorbası", + "blood": "Kan", + "blueberry": "Yabanmersini", + "blue_ink": "Mavi mürekkep", + "butter": "Tereyağı", + "chili_oil": "Biber yağı", + "chili_sauce": "Acı sos", + "chocolate": "Çikolata", + "coffe": "Kahve", + "coffee": "Kahve", + "color_pencil": "Kalem", + "cooking_oil": "Yemek yağı", + "curry": "Köri", + "deodorant": "Deodorant", + "egg": "Yumurta", + "fruit": "Meyve", + "glue": "Tutkal", + "grass": "Çim", + "ice_cream": "Dondurma", + "ketchup": "Ketçap", + "lip_gloss": "Dudak parlatıcısı", + "mayonnaise": "Mayonez", + "mech_grease": "Makine gresi", + "milk": "Süt", + "milk_tea": "Sütlü çay", + "oil": "Sıvı yağ", + "oil_pastel": "Yağlı pastel", + "perfume": "Parfüm", + "rust": "Pas", + "shoe_cream": "Ayakkabı kremi", + "soil": "Toprak", + "soy_sauce": "Soya Sosu", + "stain_level": "Leke seviyesi", + "sweat": "Ter", + "tea": "Çay", + "wine": "Şarap", + "unknown": "unknown" + }, + "name": "Leke seviyesi" } }, "switch": { diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index 9808d67..81076f9 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -1707,6 +1707,49 @@ "unknown": "unknown" }, "name": "脏污程度" + }, + "stain_type": { + "state": { + "baby_food": "婴儿食品", + "bean_paste": "豆汤", + "blood": "血渍", + "blueberry": "蓝莓", + "blue_ink": "蓝色墨水", + "butter": "黄油", + "chili_oil": "辣椒油", + "chili_sauce": "辣椒酱", + "chocolate": "巧克力", + "coffe": "咖啡", + "coffee": "咖啡", + "color_pencil": "铅笔", + "cooking_oil": "食用油", + "curry": "咖喱", + "deodorant": "除臭剂", + "egg": "鸡蛋", + "fruit": "水果", + "glue": "胶水", + "grass": "青草", + "ice_cream": "冰淇淋", + "ketchup": "调味蕃茄酱", + "lip_gloss": "唇彩", + "mayonnaise": "蛋黄酱", + "mech_grease": "机械润滑油", + "milk": "牛奶", + "milk_tea": "奶茶", + "oil": "油", + "oil_pastel": "油画棒", + "perfume": "香水", + "rust": "锈", + "shoe_cream": "鞋油", + "soil": "土壤", + "soy_sauce": "酱油", + "stain_level": "污渍水平", + "sweat": "汗水", + "tea": "茶渍", + "wine": "酒类", + "unknown": "unknown" + }, + "name": "污渍水平" } }, "switch": { diff --git a/scripts/sensor_docs.py b/scripts/sensor_docs.py index 0f79e5d..d968968 100755 --- a/scripts/sensor_docs.py +++ b/scripts/sensor_docs.py @@ -79,5 +79,7 @@ readme = re.sub( readme, re.DOTALL, ) +entities = sum(len(x) for cat in result.values() for x in cat.values()) +readme = re.sub("badge/Entities-\\d+", f"badge/Entities-{entities}", readme) with open(Path(__file__).parent.parent / "README.md", "w") as file: file.write(readme) diff --git a/scripts/translation_keys.py b/scripts/translation_keys.py index 81b30da..f5f7a71 100644 --- a/scripts/translation_keys.py +++ b/scripts/translation_keys.py @@ -115,6 +115,46 @@ REF_HUMIDITY_LEVELS = { "high": "GLOBALS.GENERAL.HIGH", } +STAINS = { + "baby_food": "STAIN_TYPE_LIST.STAINS.BABY_FOOD", + "bean_paste": "STAIN_TYPE_LIST.STAINS.BEAN_PASTE", + "blood": "STAIN_TYPE_LIST.STAINS.BLOOD", + "blueberry": "STAIN_TYPE_LIST.STAINS.BLUEBERRY", + "blue_ink": "STAIN_TYPE_LIST.STAINS.BLUE_INK", + "butter": "STAIN_TYPE_LIST.STAINS.BUTTER", + "chili_oil": "STAIN_TYPE_LIST.STAINS.CHILI_OIL", + "chili_sauce": "STAIN_TYPE_LIST.STAINS.CHILI_SAUCE", + "chocolate": "STAIN_TYPE_LIST.STAINS.CHOCOLATE", + "coffe": "STAIN_TYPE_LIST.STAINS.COFFE", + "coffee": "STAIN_TYPE_LIST.STAINS.COFFEE", + "color_pencil": "STAIN_TYPE_LIST.STAINS.COLOR_PENCIL", + "cooking_oil": "STAIN_TYPE_LIST.STAINS.COOKING_OIL", + "curry": "STAIN_TYPE_LIST.STAINS.CURRY", + "deodorant": "STAIN_TYPE_LIST.STAINS.DEODORANT", + "egg": "STAIN_TYPE_LIST.STAINS.EGG", + "fruit": "STAIN_TYPE_LIST.STAINS.FRUIT", + "glue": "STAIN_TYPE_LIST.STAINS.GLUE", + "grass": "STAIN_TYPE_LIST.STAINS.GRASS", + "ice_cream": "STAIN_TYPE_LIST.STAINS.ICE_CREAM", + "ketchup": "STAIN_TYPE_LIST.STAINS.KETCHUP", + "lip_gloss": "STAIN_TYPE_LIST.STAINS.LIP_GLOSS", + "mayonnaise": "STAIN_TYPE_LIST.STAINS.MAYONNAISE", + "mech_grease": "STAIN_TYPE_LIST.STAINS.MECH_GREASE", + "milk": "STAIN_TYPE_LIST.STAINS.MILK", + "milk_tea": "STAIN_TYPE_LIST.STAINS.MILK_TEA", + "oil": "STAIN_TYPE_LIST.STAINS.OIL", + "oil_pastel": "STAIN_TYPE_LIST.STAINS.OIL_PASTEL", + "perfume": "STAIN_TYPE_LIST.STAINS.PERFUME", + "rust": "STAIN_TYPE_LIST.STAINS.RUST", + "shoe_cream": "STAIN_TYPE_LIST.STAINS.SHOE_CREAM", + "soil": "STAIN_TYPE_LIST.STAINS.SOIL", + "soy_sauce": "STAIN_TYPE_LIST.STAINS.SOY_SAUCE", + "sweat": "STAIN_TYPE_LIST.STAINS.SWEAT", + "tea": "STAIN_TYPE_LIST.STAINS.TEA", + "wine": "STAIN_TYPE_LIST.STAINS.WINE", + "unknown": "unknown", +} + SENSOR = { "washing_modes": MACH_MODE, @@ -137,6 +177,7 @@ SELECT = { "mode": AP_MACH_MODE, "diffuser": AP_DIFFUSER_LEVEL, "dirt_level": DIRTY_LEVEL, + "stain_type": STAINS, } PROGRAMS = { @@ -302,6 +343,7 @@ NAMES = { "mode": "CUBE90_GLOBAL.GENERAL.MODE", "steam_level": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.STEAM_LEVEL", "dirt_level": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.DIRTY_LEVEL", + "stain_type": "STAIN_TYPE_LIST.STAINS.STAIN_LEVEL", }, "sensor": { "dry_levels": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_LEVEL", -- 2.39.5 From 16055acd178a39b2588ac5d66a159d1c0735fe66 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 2 Oct 2023 04:37:24 +0200 Subject: [PATCH 180/205] Remove one supported ac model, fix #110 --- README.md | 27 ++++++++++++++------------- info.md | 28 ++++++++++++++-------------- 2 files changed, 28 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index 55f0ec1..952d23e 100644 --- a/README.md +++ b/README.md @@ -48,19 +48,19 @@ _If the integration is not in the list, you need to clear the browser cache._ ## Supported Models Support has been confirmed for these **72 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). -| | **Haier** | **Hoover** | **Candy** | -|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| -| **Washing Machine** | HW80-B14959TU1DE
HW80-B14959TU1IT
HW80-B14979TU1
HW90-B14TEAM5
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H-WASH 500
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80
HWE 49AMBS/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | -| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5
HD90-A2959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S
ROE H10A2TCE-07 | -| **Washer Dryer** | HWD80-B14979U1
HWD100-B14979
HWD100-B14978 | HD 485AMBB/1-S
HD 495AMC/1-S
HD 4106AMC/1-80
HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | -| **Oven** | HWO60SM2F3XH | HSOT3161WG | | -| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | -| **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS25TEDHRA(M1)
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1) | | CY-12TAIN | -| **Fridge** | HFW7720ENMB
HFW7819EWMP | | CCE4T620EWU
CCE4T618EW | -| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | -| **Hood** | HADG6DS46BWIFI | | | -| **Wine Cellar** | HWS247FDU1 | | | -| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011 | | +| | **Haier** | **Hoover** | **Candy** | +|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| +| **Washing Machine** | HW80-B14959TU1DE
HW80-B14959TU1IT
HW80-B14979TU1
HW90-B14TEAM5
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H-WASH 500
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80
HWE 49AMBS/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | +| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5
HD90-A2959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S
ROE H10A2TCE-07 | +| **Washer Dryer** | HWD80-B14979U1
HWD100-B14979
HWD100-B14978 | HD 485AMBB/1-S
HD 495AMC/1-S
HD 4106AMC/1-80
HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | +| **Oven** | HWO60SM2F3XH | HSOT3161WG | | +| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | +| **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS25TEDHRA(M1)
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1) | | CY-12TAIN | +| **Fridge** | HFW7720ENMB
HFW7819EWMP
HSW59F18EIPT | | CCE4T620EWU
CCE4T618EW | +| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | +| **Hood** | HADG6DS46BWIFI | | | +| **Wine Cellar** | HWS247FDU1 | | | +| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011 | | | Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data).
This helps us to develop new features and not to break compatibility in newer versions. | |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| @@ -99,6 +99,7 @@ The apps on this (incomplete) list have been requested so far: | Haier Uhome | China | :x: | [banto6/haier](https://github.com/banto6/haier) | | Haier U+ | China | :x: | | | GE SmartHQ | North America | :x: | [simbaja/ha_gehome](https://github.com/simbaja/ha_gehome) | +| Haier Evo | Russia | :x: | | ## Examples ### Washing Machine diff --git a/info.md b/info.md index 1f62559..4c67f43 100644 --- a/info.md +++ b/info.md @@ -12,7 +12,7 @@ Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.co [![Supported Languages](https://img.shields.io/badge/Languages-19-royalblue)](https://github.com/Andre0512/hon#supported-languages) [![Supported Appliances](https://img.shields.io/badge/Appliances-11-forestgreen)](https://github.com/Andre0512/hon#supported-appliances) [![Supported Models](https://img.shields.io/badge/Models-72-yellowgreen)](https://github.com/Andre0512/hon#supported-models) -[![Supported Entities](https://img.shields.io/badge/Entities-241-crimson)](https://github.com/Andre0512/hon#appliance-features) +[![Supported Entities](https://img.shields.io/badge/Entities-313-crimson)](https://github.com/Andre0512/hon#appliance-features) ## Supported Appliances - [Washing Machine](https://github.com/Andre0512/hon#washing-machine) @@ -37,19 +37,19 @@ _If the integration is not in the list, you need to clear the browser cache._ ## Supported Models Support has been confirmed for these **72 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). -| | **Haier** | **Hoover** | **Candy** | -|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| -| **Washing Machine** | HW80-B14959TU1DE
HW80-B14959TU1IT
HW80-B14979TU1
HW90-B14TEAM5
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H-WASH 500
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80
HWE 49AMBS/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | -| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5
HD90-A2959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S
ROE H10A2TCE-07 | -| **Washer Dryer** | HWD80-B14979U1
HWD100-B14979
HWD100-B14978 | HD 485AMBB/1-S
HD 495AMC/1-S
HD 4106AMC/1-80
HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | -| **Oven** | HWO60SM2F3XH | HSOT3161WG | | -| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | -| **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS20HPL1HRA
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS25TEDHRA(M1)
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1) | | CY-12TAIN | -| **Fridge** | HFW7720ENMB
HFW7819EWMP | | CCE4T620EWU
CCE4T618EW | -| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | -| **Hood** | HADG6DS46BWIFI | | | -| **Wine Cellar** | HWS247FDU1 | | | -| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011 | | +| | **Haier** | **Hoover** | **Candy** | +|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| +| **Washing Machine** | HW80-B14959TU1DE
HW80-B14959TU1IT
HW80-B14979TU1
HW90-B14TEAM5
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H-WASH 500
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80
HWE 49AMBS/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | +| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5
HD90-A2959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S
ROE H10A2TCE-07 | +| **Washer Dryer** | HWD80-B14979U1
HWD100-B14979
HWD100-B14978 | HD 485AMBB/1-S
HD 495AMC/1-S
HD 4106AMC/1-80
HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | +| **Oven** | HWO60SM2F3XH | HSOT3161WG | | +| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | +| **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS25TEDHRA(M1)
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1) | | CY-12TAIN | +| **Fridge** | HFW7720ENMB
HFW7819EWMP
HSW59F18EIPT | | CCE4T620EWU
CCE4T618EW | +| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | +| **Hood** | HADG6DS46BWIFI | | | +| **Wine Cellar** | HWS247FDU1 | | | +| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011 | | | Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data).
This helps us to develop new features and not to break compatibility in newer versions. | |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -- 2.39.5 From 0e3d917ed119ca53c0e83a476bc706612de7590c Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Tue, 3 Oct 2023 00:23:25 +0200 Subject: [PATCH 181/205] Add more supported devices --- README.md | 30 +++++++++++++++--------------- info.md | 30 +++++++++++++++--------------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index 952d23e..3b7fed6 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.co [![Supported Languages](https://img.shields.io/badge/Languages-19-royalblue)](https://github.com/Andre0512/hon#supported-languages) [![Supported Appliances](https://img.shields.io/badge/Appliances-11-forestgreen)](https://github.com/Andre0512/hon#supported-appliances) -[![Supported Models](https://img.shields.io/badge/Models-72-yellowgreen)](https://github.com/Andre0512/hon#supported-models) +[![Supported Models](https://img.shields.io/badge/Models-73-yellowgreen)](https://github.com/Andre0512/hon#supported-models) [![Supported Entities](https://img.shields.io/badge/Entities-313-crimson)](https://github.com/Andre0512/hon#appliance-features) ## Supported Appliances @@ -46,21 +46,21 @@ _Restart Home Assistant_ _If the integration is not in the list, you need to clear the browser cache._ ## Supported Models -Support has been confirmed for these **72 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +Support has been confirmed for these **73 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). -| | **Haier** | **Hoover** | **Candy** | -|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| -| **Washing Machine** | HW80-B14959TU1DE
HW80-B14959TU1IT
HW80-B14979TU1
HW90-B14TEAM5
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H-WASH 500
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80
HWE 49AMBS/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | -| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5
HD90-A2959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S
ROE H10A2TCE-07 | -| **Washer Dryer** | HWD80-B14979U1
HWD100-B14979
HWD100-B14978 | HD 485AMBB/1-S
HD 495AMC/1-S
HD 4106AMC/1-80
HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | -| **Oven** | HWO60SM2F3XH | HSOT3161WG | | -| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | -| **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS25TEDHRA(M1)
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1) | | CY-12TAIN | -| **Fridge** | HFW7720ENMB
HFW7819EWMP
HSW59F18EIPT | | CCE4T620EWU
CCE4T618EW | -| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | -| **Hood** | HADG6DS46BWIFI | | | -| **Wine Cellar** | HWS247FDU1 | | | -| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011 | | +| | **Haier** | **Hoover** | **Candy** | +|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| +| **Washing Machine** | HW80-B14959TU1DE
HW80-B14959TU1IT
HW80-B14979TU1
HW90-B14TEAM5
HW90-B14959S8U1
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80
HWE 49AMBS/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | +| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5
HD90-A2959
HD90-A2959S | H9A3TCBEXS-S
HLE9A2TCE-80
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S
ROE H10A2TCE-07 | +| **Washer Dryer** | HWD80-B14979U1
HWD100-B14979
HWD100-B14978 | HD 485AMBB/1-S
HD 495AMC/1-S
HD 4106AMC/1-80
HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | +| **Oven** | HWO60SM2F3XH | HSOT3161WG | | +| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | +| **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS25TEDHRA(M1)
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1) | | CY-12TAIN | +| **Fridge** | HFW7720ENMB
HFW7819EWMP
HSW59F18EIPT | | CCE4T620EWU
CCE4T618EW | +| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | +| **Hood** | HADG6DS46BWIFI | | | +| **Wine Cellar** | HWS247FDU1 | | | +| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011 | | | Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data).
This helps us to develop new features and not to break compatibility in newer versions. | |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| diff --git a/info.md b/info.md index 4c67f43..52787eb 100644 --- a/info.md +++ b/info.md @@ -11,7 +11,7 @@ Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.co [![Supported Languages](https://img.shields.io/badge/Languages-19-royalblue)](https://github.com/Andre0512/hon#supported-languages) [![Supported Appliances](https://img.shields.io/badge/Appliances-11-forestgreen)](https://github.com/Andre0512/hon#supported-appliances) -[![Supported Models](https://img.shields.io/badge/Models-72-yellowgreen)](https://github.com/Andre0512/hon#supported-models) +[![Supported Models](https://img.shields.io/badge/Models-73-yellowgreen)](https://github.com/Andre0512/hon#supported-models) [![Supported Entities](https://img.shields.io/badge/Entities-313-crimson)](https://github.com/Andre0512/hon#appliance-features) ## Supported Appliances @@ -35,21 +35,21 @@ Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.co _If the integration is not in the list, you need to clear the browser cache._ ## Supported Models -Support has been confirmed for these **72 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +Support has been confirmed for these **73 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). -| | **Haier** | **Hoover** | **Candy** | -|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| -| **Washing Machine** | HW80-B14959TU1DE
HW80-B14959TU1IT
HW80-B14979TU1
HW90-B14TEAM5
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H-WASH 500
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80
HWE 49AMBS/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | -| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5
HD90-A2959 | H-DRY 500
H9A3TCBEXS-S
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S
ROE H10A2TCE-07 | -| **Washer Dryer** | HWD80-B14979U1
HWD100-B14979
HWD100-B14978 | HD 485AMBB/1-S
HD 495AMC/1-S
HD 4106AMC/1-80
HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | -| **Oven** | HWO60SM2F3XH | HSOT3161WG | | -| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | -| **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS25TEDHRA(M1)
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1) | | CY-12TAIN | -| **Fridge** | HFW7720ENMB
HFW7819EWMP
HSW59F18EIPT | | CCE4T620EWU
CCE4T618EW | -| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | -| **Hood** | HADG6DS46BWIFI | | | -| **Wine Cellar** | HWS247FDU1 | | | -| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011 | | +| | **Haier** | **Hoover** | **Candy** | +|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| +| **Washing Machine** | HW80-B14959TU1DE
HW80-B14959TU1IT
HW80-B14979TU1
HW90-B14TEAM5
HW90-B14959S8U1
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80
HWE 49AMBS/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | +| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5
HD90-A2959
HD90-A2959S | H9A3TCBEXS-S
HLE9A2TCE-80
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S
ROE H10A2TCE-07 | +| **Washer Dryer** | HWD80-B14979U1
HWD100-B14979
HWD100-B14978 | HD 485AMBB/1-S
HD 495AMC/1-S
HD 4106AMC/1-80
HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | +| **Oven** | HWO60SM2F3XH | HSOT3161WG | | +| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | +| **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS25TEDHRA(M1)
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1) | | CY-12TAIN | +| **Fridge** | HFW7720ENMB
HFW7819EWMP
HSW59F18EIPT | | CCE4T620EWU
CCE4T618EW | +| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | +| **Hood** | HADG6DS46BWIFI | | | +| **Wine Cellar** | HWS247FDU1 | | | +| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011 | | | Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data).
This helps us to develop new features and not to break compatibility in newer versions. | |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -- 2.39.5 From 08fb9cb5b92b04a7927bd98b8f586c45676a020f Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Tue, 3 Oct 2023 01:49:24 +0200 Subject: [PATCH 182/205] Add changing fan position for ac #97 #108 --- README.md | 4 +- custom_components/hon/const.py | 18 +++++++++ custom_components/hon/select.py | 14 +++++++ custom_components/hon/translations/cs.json | 22 +++++++++++ custom_components/hon/translations/de.json | 22 +++++++++++ custom_components/hon/translations/el.json | 22 +++++++++++ custom_components/hon/translations/en.json | 22 +++++++++++ custom_components/hon/translations/es.json | 22 +++++++++++ custom_components/hon/translations/fr.json | 22 +++++++++++ custom_components/hon/translations/he.json | 22 +++++++++++ custom_components/hon/translations/hr.json | 22 +++++++++++ custom_components/hon/translations/it.json | 22 +++++++++++ custom_components/hon/translations/nl.json | 22 +++++++++++ custom_components/hon/translations/pl.json | 22 +++++++++++ custom_components/hon/translations/pt.json | 22 +++++++++++ custom_components/hon/translations/ro.json | 22 +++++++++++ custom_components/hon/translations/ru.json | 22 +++++++++++ custom_components/hon/translations/sk.json | 22 +++++++++++ custom_components/hon/translations/sl.json | 22 +++++++++++ custom_components/hon/translations/sr.json | 22 +++++++++++ custom_components/hon/translations/tr.json | 22 +++++++++++ custom_components/hon/translations/zh.json | 22 +++++++++++ info.md | 2 +- scripts/translation_keys.py | 44 ++++++++++++++++++++++ 24 files changed, 498 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3b7fed6..761044a 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.co [![Supported Languages](https://img.shields.io/badge/Languages-19-royalblue)](https://github.com/Andre0512/hon#supported-languages) [![Supported Appliances](https://img.shields.io/badge/Appliances-11-forestgreen)](https://github.com/Andre0512/hon#supported-appliances) [![Supported Models](https://img.shields.io/badge/Models-73-yellowgreen)](https://github.com/Andre0512/hon#supported-models) -[![Supported Entities](https://img.shields.io/badge/Entities-313-crimson)](https://github.com/Andre0512/hon#appliance-features) +[![Supported Entities](https://img.shields.io/badge/Entities-315-crimson)](https://github.com/Andre0512/hon#appliance-features) ## Supported Appliances - [Washing Machine](https://github.com/Andre0512/hon#washing-machine) @@ -173,6 +173,8 @@ For every device exists a button under diagnostics which can be used to log all | Echo | `account-voice` | `switch` | `echoStatus` | | Eco Mode | `sprout` | `switch` | `ecoMode` | | Eco Pilot | `run` | `select` | `settings.humanSensingStatus` | +| Fan Direction Horizontal | `fan` | `select` | `settings.windDirectionHorizontal` | +| Fan Direction Vertical | `fan` | `select` | `settings.windDirectionVertical` | | Health Mode | `medication-outline` | `switch` | `healthMode` | | Night Mode | `bed` | `switch` | `silentSleepStatus` | | Rapid Mode | `run-fast` | `switch` | `rapidMode` | diff --git a/custom_components/hon/const.py b/custom_components/hon/const.py index 03c7a13..69bc540 100644 --- a/custom_components/hon/const.py +++ b/custom_components/hon/const.py @@ -264,3 +264,21 @@ STAIN_TYPES: dict[int, str] = { 25: "chili_sauce", 26: "fruit", } + +AC_POSITION_HORIZONTAL = { + 0: "position_1", + 3: "position_2", + 4: "position_3", + 5: "position_4", + 6: "position_5", + 7: "swing", +} + +AC_POSITION_VERTICAL = { + 2: "position_1", + 4: "position_2", + 5: "position_3", + 6: "position_4", + 7: "position_5", + 8: "swing", +} diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index 58a11c1..60bb071 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -140,6 +140,20 @@ SELECTS: dict[str, tuple[SelectEntityDescription, ...]] = { translation_key="eco_pilot", option_list=const.AC_HUMAN_SENSE, ), + HonSelectEntityDescription( + key="settings.windDirectionHorizontal", + name="Fan Direction Horizontal", + icon="mdi:fan", + translation_key="fan_horizontal", + option_list=const.AC_POSITION_HORIZONTAL, + ), + HonSelectEntityDescription( + key="settings.windDirectionVertical", + name="Fan Direction Vertical", + icon="mdi:fan", + translation_key="fan_vertical", + option_list=const.AC_POSITION_VERTICAL, + ), ), "REF": ( HonConfigSelectEntityDescription( diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index 72a777a..8a27abb 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -1764,6 +1764,28 @@ "unknown": "unknown" }, "name": "Úroveň znečištění" + }, + "fan_horizontal": { + "name": "Směr proudu vzduchu Vodorovný", + "state": { + "position_1": "Pevný - Poloha 1", + "position_2": "Pevný - Poloha 2", + "position_3": "Pevný - Poloha 3", + "position_4": "Pevný - Poloha 4", + "position_5": "Pevný - Poloha 5", + "swing": "Pohyb lamel" + } + }, + "fan_vertical": { + "name": "Směr proudu vzduchu Svislý", + "state": { + "position_1": "Pevný - Poloha 1", + "position_2": "Pevný - Poloha 2", + "position_3": "Pevný - Poloha 3", + "position_4": "Pevný - Poloha 4", + "position_5": "Pevný - Poloha 5", + "swing": "Pohyb lamel" + } } }, "switch": { diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index b21e01a..5a626a2 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -1764,6 +1764,28 @@ "unknown": "unknown" }, "name": "Grad der Verschmutzung" + }, + "fan_horizontal": { + "name": "Richtung des Gebläses Horizontal", + "state": { + "position_1": "Fest - Position 1", + "position_2": "Fest - Position 2", + "position_3": "Fest - Position 3", + "position_4": "Fest - Position 4", + "position_5": "Fest - Position 5", + "swing": "Schwenkbewegung" + } + }, + "fan_vertical": { + "name": "Richtung des Gebläses Vertikal", + "state": { + "position_1": "Fest - Position 1", + "position_2": "Fest - Position 2", + "position_3": "Fest - Position 3", + "position_4": "Fest - Position 4", + "position_5": "Fest - Position 5", + "swing": "Schwenkbewegung" + } } }, "switch": { diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index 2ebaee7..e767bb2 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -1764,6 +1764,28 @@ "unknown": "unknown" }, "name": "Επίπεδο λεκέδων" + }, + "fan_horizontal": { + "name": "Κατεύθυνση ανεμιστήρα Οριζόντιος", + "state": { + "position_1": "Σταθερός - Θέση 1", + "position_2": "Σταθερός - Θέση 2", + "position_3": "Σταθερός - Θέση 3", + "position_4": "Σταθερός - Θέση 4", + "position_5": "Σταθερός - Θέση 5", + "swing": "Ταλάντευση" + } + }, + "fan_vertical": { + "name": "Κατεύθυνση ανεμιστήρα Κατακόρυφος", + "state": { + "position_1": "Σταθερός - Θέση 1", + "position_2": "Σταθερός - Θέση 2", + "position_3": "Σταθερός - Θέση 3", + "position_4": "Σταθερός - Θέση 4", + "position_5": "Σταθερός - Θέση 5", + "swing": "Ταλάντευση" + } } }, "switch": { diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 8a331e9..129c5d0 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -1793,6 +1793,28 @@ "unknown": "unknown" }, "name": "Stain level" + }, + "fan_horizontal": { + "name": "Fan direction Horizontal", + "state": { + "position_1": "Fixed - Position 1", + "position_2": "Fixed - Position 2", + "position_3": "Fixed - Position 3", + "position_4": "Fixed - Position 4", + "position_5": "Fixed - Position 5", + "swing": "Swing" + } + }, + "fan_vertical": { + "name": "Fan direction Vertical", + "state": { + "position_1": "Fixed - Position 1", + "position_2": "Fixed - Position 2", + "position_3": "Fixed - Position 3", + "position_4": "Fixed - Position 4", + "position_5": "Fixed - Position 5", + "swing": "Swing" + } } }, "switch": { diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index 17100cb..167b377 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -1764,6 +1764,28 @@ "unknown": "unknown" }, "name": "Nivel de manchas" + }, + "fan_horizontal": { + "name": "Dirección del ventilador Horizontal", + "state": { + "position_1": "Fijo - Posición 1", + "position_2": "Fijo - Posición 2", + "position_3": "Fijo - Posición 3", + "position_4": "Fijo - Posición 4", + "position_5": "Fijo - Posición 5", + "swing": "Oscilar" + } + }, + "fan_vertical": { + "name": "Dirección del ventilador Vertical", + "state": { + "position_1": "Fijo - Posición 1", + "position_2": "Fijo - Posición 2", + "position_3": "Fijo - Posición 3", + "position_4": "Fijo - Posición 4", + "position_5": "Fijo - Posición 5", + "swing": "Oscilar" + } } }, "switch": { diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index 698f09b..c2267a8 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -1764,6 +1764,28 @@ "unknown": "unknown" }, "name": "Niveau de salissure" + }, + "fan_horizontal": { + "name": "Direction du ventilateur Horizontale", + "state": { + "position_1": "Fixe - Position 1", + "position_2": "Fixe - Position 2", + "position_3": "Fixe - Position 3", + "position_4": "Fixe - Position 4", + "position_5": "Fixe - Position 5", + "swing": "Oscillation" + } + }, + "fan_vertical": { + "name": "Direction du ventilateur Verticale", + "state": { + "position_1": "Fixe - Position 1", + "position_2": "Fixe - Position 2", + "position_3": "Fixe - Position 3", + "position_4": "Fixe - Position 4", + "position_5": "Fixe - Position 5", + "swing": "Oscillation" + } } }, "switch": { diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index d1dc0bf..c73387f 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -829,6 +829,28 @@ "unknown": "unknown" }, "name": "Stain level" + }, + "fan_horizontal": { + "name": "Fan direction Horizontal", + "state": { + "position_1": "Fixed - Position 1", + "position_2": "Fixed - Position 2", + "position_3": "Fixed - Position 3", + "position_4": "Fixed - Position 4", + "position_5": "Fixed - Position 5", + "swing": "Swing" + } + }, + "fan_vertical": { + "name": "Fan direction Vertical", + "state": { + "position_1": "Fixed - Position 1", + "position_2": "Fixed - Position 2", + "position_3": "Fixed - Position 3", + "position_4": "Fixed - Position 4", + "position_5": "Fixed - Position 5", + "swing": "Swing" + } } }, "switch": { diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index a4acff1..8e0d1b2 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -1764,6 +1764,28 @@ "unknown": "unknown" }, "name": "Razina mrlja" + }, + "fan_horizontal": { + "name": "Smjer ventilatora Vodoravno", + "state": { + "position_1": "Fiksno - Položaj 1", + "position_2": "Fiksno - Položaj 2", + "position_3": "Fiksno - Položaj 3", + "position_4": "Fiksno - Položaj 4", + "position_5": "Fiksno - Položaj 5", + "swing": "Njihanje" + } + }, + "fan_vertical": { + "name": "Smjer ventilatora Okomito", + "state": { + "position_1": "Fiksno - Položaj 1", + "position_2": "Fiksno - Položaj 2", + "position_3": "Fiksno - Položaj 3", + "position_4": "Fiksno - Položaj 4", + "position_5": "Fiksno - Položaj 5", + "swing": "Njihanje" + } } }, "switch": { diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index c13896a..a69b19e 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -1773,6 +1773,28 @@ "unknown": "unknown" }, "name": "Livello di sporco" + }, + "fan_horizontal": { + "name": "Direzione ventola Orizzontale", + "state": { + "position_1": "Fissa - Posizione 1", + "position_2": "Fissa - Posizione 2", + "position_3": "Fissa - Posizione 3", + "position_4": "Fissa - Posizione 4", + "position_5": "Fissa - Posizione 5", + "swing": "Swing" + } + }, + "fan_vertical": { + "name": "Direzione ventola Verticale", + "state": { + "position_1": "Fissa - Posizione 1", + "position_2": "Fissa - Posizione 2", + "position_3": "Fissa - Posizione 3", + "position_4": "Fissa - Posizione 4", + "position_5": "Fissa - Posizione 5", + "swing": "Swing" + } } }, "switch": { diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index 795966d..9a6f314 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -1764,6 +1764,28 @@ "unknown": "unknown" }, "name": "Vlekniveau" + }, + "fan_horizontal": { + "name": "Ventilatorrichting Horizontaal", + "state": { + "position_1": "Vast - Positie 1", + "position_2": "Vast - Positie 2", + "position_3": "Vast - Positie 3", + "position_4": "Vast - Positie 4", + "position_5": "Vast - Positie 5", + "swing": "Draaiend" + } + }, + "fan_vertical": { + "name": "Ventilatorrichting Verticaal", + "state": { + "position_1": "Vast - Positie 1", + "position_2": "Vast - Positie 2", + "position_3": "Vast - Positie 3", + "position_4": "Vast - Positie 4", + "position_5": "Vast - Positie 5", + "swing": "Draaiend" + } } }, "switch": { diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index 97f454c..373b852 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -1764,6 +1764,28 @@ "unknown": "unknown" }, "name": "Stopień zabrudzenia" + }, + "fan_horizontal": { + "name": "Kierunek wentylatora Poziomy", + "state": { + "position_1": "Stały - Pozycja 1", + "position_2": "Stały - Pozycja 2", + "position_3": "Stały - Pozycja 3", + "position_4": "Stały - Pozycja 4", + "position_5": "Stały - Pozycja 5", + "swing": "Swing" + } + }, + "fan_vertical": { + "name": "Kierunek wentylatora Pionowy", + "state": { + "position_1": "Stały - Pozycja 1", + "position_2": "Stały - Pozycja 2", + "position_3": "Stały - Pozycja 3", + "position_4": "Stały - Pozycja 4", + "position_5": "Stały - Pozycja 5", + "swing": "Swing" + } } }, "switch": { diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index 1084b88..9282bb5 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -1764,6 +1764,28 @@ "unknown": "unknown" }, "name": "Nível da nódoa" + }, + "fan_horizontal": { + "name": "Direção do ventilador Horizontal", + "state": { + "position_1": "Fixa - Posição 1", + "position_2": "Fixa - Posição 2", + "position_3": "Fixa - Posição 3", + "position_4": "Fixa - Posição 4", + "position_5": "Fixa - Posição 5", + "swing": "Oscilação" + } + }, + "fan_vertical": { + "name": "Direção do ventilador Vertical", + "state": { + "position_1": "Fixa - Posição 1", + "position_2": "Fixa - Posição 2", + "position_3": "Fixa - Posição 3", + "position_4": "Fixa - Posição 4", + "position_5": "Fixa - Posição 5", + "swing": "Oscilação" + } } }, "switch": { diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index 2d592a9..ca6e7f1 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -1764,6 +1764,28 @@ "unknown": "unknown" }, "name": "Nivelul de pătare" + }, + "fan_horizontal": { + "name": "Direcția ventilatorului Orizontal", + "state": { + "position_1": "Fix - Poziție 1", + "position_2": "Fix - Poziție 2", + "position_3": "Fix - Poziție 3", + "position_4": "Fix - Poziție 4", + "position_5": "Fix - Poziție 5", + "swing": "Baleiere" + } + }, + "fan_vertical": { + "name": "Direcția ventilatorului Vertical", + "state": { + "position_1": "Fix - Poziție 1", + "position_2": "Fix - Poziție 2", + "position_3": "Fix - Poziție 3", + "position_4": "Fix - Poziție 4", + "position_5": "Fix - Poziție 5", + "swing": "Baleiere" + } } }, "switch": { diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index 8a907c8..99ae650 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -1764,6 +1764,28 @@ "unknown": "unknown" }, "name": "Уровень загрязнения" + }, + "fan_horizontal": { + "name": "Направление вентилятора Горизонтальное", + "state": { + "position_1": "Фиксированное - Позиция 1", + "position_2": "Фиксированное - Позиция 2", + "position_3": "Фиксированное - Позиция 3", + "position_4": "Фиксированное - Позиция 4", + "position_5": "Фиксированное - Позиция 5", + "swing": "Качание" + } + }, + "fan_vertical": { + "name": "Направление вентилятора Вертикальное", + "state": { + "position_1": "Фиксированное - Позиция 1", + "position_2": "Фиксированное - Позиция 2", + "position_3": "Фиксированное - Позиция 3", + "position_4": "Фиксированное - Позиция 4", + "position_5": "Фиксированное - Позиция 5", + "swing": "Качание" + } } }, "switch": { diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index 27a8d6c..ac60dcf 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -1764,6 +1764,28 @@ "unknown": "unknown" }, "name": "Úroveň škvŕn" + }, + "fan_horizontal": { + "name": "Smer ventilátora Horizontálny", + "state": { + "position_1": "Pevný - Poloha 1", + "position_2": "Pevný - Poloha 2", + "position_3": "Pevný - Poloha 3", + "position_4": "Pevný - Poloha 4", + "position_5": "Pevný - Poloha 5", + "swing": "Otáčanie" + } + }, + "fan_vertical": { + "name": "Smer ventilátora Vertikálny", + "state": { + "position_1": "Pevný - Poloha 1", + "position_2": "Pevný - Poloha 2", + "position_3": "Pevný - Poloha 3", + "position_4": "Pevný - Poloha 4", + "position_5": "Pevný - Poloha 5", + "swing": "Otáčanie" + } } }, "switch": { diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index 954293d..5dd5b31 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -1764,6 +1764,28 @@ "unknown": "unknown" }, "name": "Stopnja madežev" + }, + "fan_horizontal": { + "name": "Smer ventilatorja Vodoravno", + "state": { + "position_1": "Fiksno - Položaj 1", + "position_2": "Fiksno - Položaj 2", + "position_3": "Fiksno - Položaj 3", + "position_4": "Fiksno - Položaj 4", + "position_5": "Fiksno - Položaj 5", + "swing": "Nihanje" + } + }, + "fan_vertical": { + "name": "Smer ventilatorja Navpično", + "state": { + "position_1": "Fiksno - Položaj 1", + "position_2": "Fiksno - Položaj 2", + "position_3": "Fiksno - Položaj 3", + "position_4": "Fiksno - Položaj 4", + "position_5": "Fiksno - Položaj 5", + "swing": "Nihanje" + } } }, "switch": { diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index 3c94f97..2e7cff0 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -1764,6 +1764,28 @@ "unknown": "unknown" }, "name": "Nivo mrlje" + }, + "fan_horizontal": { + "name": "Pravac duvanja ventilatora Horizontalan", + "state": { + "position_1": "Fiksiran - Položaj 1", + "position_2": "Fiksiran - Položaj 2", + "position_3": "Fiksiran - Položaj 3", + "position_4": "Fiksiran - Položaj 4", + "position_5": "Fiksiran - Položaj 5", + "swing": "Njihanje" + } + }, + "fan_vertical": { + "name": "Pravac duvanja ventilatora Vertikalan", + "state": { + "position_1": "Fiksiran - Položaj 1", + "position_2": "Fiksiran - Položaj 2", + "position_3": "Fiksiran - Položaj 3", + "position_4": "Fiksiran - Položaj 4", + "position_5": "Fiksiran - Položaj 5", + "swing": "Njihanje" + } } }, "switch": { diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index 9af7407..7d9847a 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -1764,6 +1764,28 @@ "unknown": "unknown" }, "name": "Leke seviyesi" + }, + "fan_horizontal": { + "name": "Fan yönü Yatay", + "state": { + "position_1": "Sabit - Pozisyon 1", + "position_2": "Sabit - Pozisyon 2", + "position_3": "Sabit - Pozisyon 3", + "position_4": "Sabit - Pozisyon 4", + "position_5": "Sabit - Pozisyon 5", + "swing": "Salınım" + } + }, + "fan_vertical": { + "name": "Fan yönü Dikey", + "state": { + "position_1": "Sabit - Pozisyon 1", + "position_2": "Sabit - Pozisyon 2", + "position_3": "Sabit - Pozisyon 3", + "position_4": "Sabit - Pozisyon 4", + "position_5": "Sabit - Pozisyon 5", + "swing": "Salınım" + } } }, "switch": { diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index 81076f9..dc44e38 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -1750,6 +1750,28 @@ "unknown": "unknown" }, "name": "污渍水平" + }, + "fan_horizontal": { + "name": "风扇方向 水平", + "state": { + "position_1": "固定 - 位置 1", + "position_2": "固定 - 位置 2", + "position_3": "固定 - 位置 3", + "position_4": "固定 - 位置 4", + "position_5": "固定 - 位置 5", + "swing": "摆动" + } + }, + "fan_vertical": { + "name": "风扇方向 垂直", + "state": { + "position_1": "固定 - 位置 1", + "position_2": "固定 - 位置 2", + "position_3": "固定 - 位置 3", + "position_4": "固定 - 位置 4", + "position_5": "固定 - 位置 5", + "swing": "摆动" + } } }, "switch": { diff --git a/info.md b/info.md index 52787eb..4295498 100644 --- a/info.md +++ b/info.md @@ -12,7 +12,7 @@ Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.co [![Supported Languages](https://img.shields.io/badge/Languages-19-royalblue)](https://github.com/Andre0512/hon#supported-languages) [![Supported Appliances](https://img.shields.io/badge/Appliances-11-forestgreen)](https://github.com/Andre0512/hon#supported-appliances) [![Supported Models](https://img.shields.io/badge/Models-73-yellowgreen)](https://github.com/Andre0512/hon#supported-models) -[![Supported Entities](https://img.shields.io/badge/Entities-313-crimson)](https://github.com/Andre0512/hon#appliance-features) +[![Supported Entities](https://img.shields.io/badge/Entities-315-crimson)](https://github.com/Andre0512/hon#appliance-features) ## Supported Appliances - [Washing Machine](https://github.com/Andre0512/hon#washing-machine) diff --git a/scripts/translation_keys.py b/scripts/translation_keys.py index f5f7a71..a1d550b 100644 --- a/scripts/translation_keys.py +++ b/scripts/translation_keys.py @@ -85,6 +85,40 @@ AC_HUMAN_SENSE = { "unknown": "unknown", } +AC_POSITIONS = { + "position_1": [ + "AC.PROGRAM_DETAIL.FAN_MODE_FIXED", + "-", + "AC.PROGRAM_DETAIL.POSITION", + "1", + ], + "position_2": [ + "AC.PROGRAM_DETAIL.FAN_MODE_FIXED", + "-", + "AC.PROGRAM_DETAIL.POSITION", + "2", + ], + "position_3": [ + "AC.PROGRAM_DETAIL.FAN_MODE_FIXED", + "-", + "AC.PROGRAM_DETAIL.POSITION", + "3", + ], + "position_4": [ + "AC.PROGRAM_DETAIL.FAN_MODE_FIXED", + "-", + "AC.PROGRAM_DETAIL.POSITION", + "4", + ], + "position_5": [ + "AC.PROGRAM_DETAIL.FAN_MODE_FIXED", + "-", + "AC.PROGRAM_DETAIL.POSITION", + "5", + ], + "swing": "AC.PROGRAM_DETAIL.FAN_MODE_SWING", +} + AP_MACH_MODE = { "standby": "AP.RUNNING_MODE.STANDBY", "sleep": "AP.RUNNING_MODE.SLEEP", @@ -178,6 +212,8 @@ SELECT = { "diffuser": AP_DIFFUSER_LEVEL, "dirt_level": DIRTY_LEVEL, "stain_type": STAINS, + "fan_horizontal": AC_POSITIONS, + "fan_vertical": AC_POSITIONS, } PROGRAMS = { @@ -344,6 +380,14 @@ NAMES = { "steam_level": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.STEAM_LEVEL", "dirt_level": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.DIRTY_LEVEL", "stain_type": "STAIN_TYPE_LIST.STAINS.STAIN_LEVEL", + "fan_horizontal": [ + "AC.PROGRAM_DETAIL.FAN_DIRECTION", + "AC.PROGRAM_DETAIL.FAN_DIRECTION_HORIZONTAL", + ], + "fan_vertical": [ + "AC.PROGRAM_DETAIL.FAN_DIRECTION", + "AC.PROGRAM_DETAIL.FAN_DIRECTION_VERTICAL", + ], }, "sensor": { "dry_levels": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_LEVEL", -- 2.39.5 From 735a83673c89e796e2412507a47d92cf3e2544cf Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Tue, 3 Oct 2023 01:59:23 +0200 Subject: [PATCH 183/205] Bump version --- custom_components/hon/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 3fe7172..6dd2292 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -11,5 +11,5 @@ "requirements": [ "pyhOn==0.15.8" ], - "version": "0.10.0-beta.1" + "version": "0.10.0" } -- 2.39.5 From b99543922792b9740cf0781f74578f7a43448140 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Tue, 3 Oct 2023 18:35:52 +0200 Subject: [PATCH 184/205] Add more exapmle images --- README.md | 52 ++++++++++++++++++++++++++++++++--- assets/example_ac.png | Bin 0 -> 192423 bytes assets/example_ap.png | Bin 0 -> 107891 bytes assets/example_dw.png | Bin 0 -> 123408 bytes assets/example_ov.png | Bin 0 -> 114820 bytes assets/example_ref.png | Bin 0 -> 167527 bytes assets/example_td.png | Bin 0 -> 127853 bytes assets/example_wc.png | Bin 0 -> 117093 bytes assets/example_wd.png | Bin 0 -> 226099 bytes assets/example_wm.png | Bin 0 -> 198914 bytes assets/washing_machine.png | Bin 206913 -> 0 bytes info.md | 55 +++++++++++++++++++++++++++++++++---- 12 files changed, 97 insertions(+), 10 deletions(-) create mode 100644 assets/example_ac.png create mode 100644 assets/example_ap.png create mode 100644 assets/example_dw.png create mode 100644 assets/example_ov.png create mode 100644 assets/example_ref.png create mode 100644 assets/example_td.png create mode 100644 assets/example_wc.png create mode 100644 assets/example_wd.png create mode 100644 assets/example_wm.png delete mode 100644 assets/washing_machine.png diff --git a/README.md b/README.md index 761044a..7d92804 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,54 @@ _Restart Home Assistant_ **Method 2**: Settings > Devices & Services > Add Integration > **Haier hOn** _If the integration is not in the list, you need to clear the browser cache._ +## Examples +_Click to expand..._ +
+ Washing Machine + +![Washing Machine](assets/example_wm.png) +
+
+ Tumble Dryer + +![Tumble Dryer](assets/example_td.png) +
+
+ Washer Dryer + +![Washer Dryer](assets/example_wd.png) +
+
+ Oven + +![Oven](assets/example_ov.png) +
+
+ Dish Washer + +![Dish Washer](assets/example_dw.png) +
+
+ Air conditioner + +![Air conditioner](assets/example_ac.png) +
+
+ Fridge + +![Fridge](assets/example_ref.png) +
+
+ Wine Cellar + +![Wine Cellar](assets/example_wc.png) +
+
+ Air Purifier + +![Air Purifier](assets/example_ap.png) +
+ ## Supported Models Support has been confirmed for these **73 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). @@ -101,10 +149,6 @@ The apps on this (incomplete) list have been requested so far: | GE SmartHQ | North America | :x: | [simbaja/ha_gehome](https://github.com/simbaja/ha_gehome) | | Haier Evo | Russia | :x: | | -## Examples -### Washing Machine -![washing_machine.png](assets/washing_machine.png) - ## Contribute Any kind of contribution is welcome! ### Read out device data diff --git a/assets/example_ac.png b/assets/example_ac.png new file mode 100644 index 0000000000000000000000000000000000000000..580f914b08b6c9e2f2a7d853c505b19838cab21d GIT binary patch literal 192423 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 z z(yKX?^W1%k#l0h#-Atz>o!%(W!sovOiYDR&b})&YiheC!>LAGEZ>&>C#WQ0p##pN- zXL~I(U!(3Gn8kzbVm(;{Puv)0ME4gmvWiOLF@?{lfl3f?eXD14d- zAWx|S)gzcH3TJ+o>Duxz1~>4^+A7i#ipmbf;9HD8)XcE?_8u3a|K(?rIz~pc=P~SI zAF(cyH@v)H*)95&6!UV$7z^)0O1f5JfRn?=-$GdNedk-7w!b~|eFSM3_=2T_TZXqK zESlf0?rees9kcDaNLlkinV2Wtv5%~fuEZ6PG+y{Kc%db!X8A)V-t zki{nHo}?-DC#@72U8fFrdwm}aHPNEdX4?ytu*Ul#uK7y&e23A><(43OdV4zq!L7s{ z!b+g4Q=GXts-Yhf`CF3bYuc$;4pb#~Bq6`cbZ)=W@RvgyyGfCDSox1D5 zUikFtOVokMfbr&4+)iv|FHzG0t_oIaXMT{?&Cquyc?_Tfd3A z`BejH$mZXn11Mmj{`%i$3hbxOsU0_G#ha8e{!fVk3iqWK{H^Myx;2r1sxwensPN(6 zlO<3%RzmHcQuzO^x)cO(j*(t?K(!y}Q-`eZ{{=Vh3}Dv)DRF!3Ses+ zqqA@FT?<-UVcFTt0NL}=uIszd}%X3~qhJS*g`3$P@`~kkD z$$uL#cXa$5BXb@mA3<5f3^;F{|nzn&L*2>~n2@M9^$3P^bX|1idyOzBw>j zRsi8EM+pcCD?ARCm5s{&!ca=9t*s68jd-TErsc*b1NYX>PCh^k8W%|cL$C67U;Q0x zWEAcD`hYYCL<-PpfX75lN7p>{oD@J<{}(W|#iIj}=+%O>_o>Ief5G_GSZUgheM8Fu z*du$b*D^QJyh=|#0}WVE0u-v%Kw=rwA35@~K1ai^8&5+50s^vaXp(P4uXZv@zUjHR zc-ZK=By{#hSs3C2MjKVD28DtdFHpT-i;GhaAzU|;DHg3$q4x`b1F(*&vi`vWu*|;w zZ6%tEG6LWwrvi`*i-^c+Yft7y@07^>oppw%Bbm~JK-5AB_gy-M7~C>s1QPvrsUsNa zWqmWDC;&_WBO$ HGyV7<0N@*W?b@~Xv!C6e9~7i8P+y|L!NFn3NWW8pgF}=8KkQGD z!4(vE_Dk@B==fGfQ2hGrcSN~4kmDBHn!F#ERIGFCMGtHpKYC> z2rVL@6DzEfxPys-lew)8g^Ibg37m?v2?aYBg`$xY1t&Wv7X>?y06U)m=WB`&@)Y6{ z$|~|1^qz2V6mT-{#8lkU_ZPjr;x>Og9xJAez441jQN|7pF<$u{f=Ji>BPeT}GhUTc zl?1Y&?p&}ERDcz+u7M@hBc?+?|0XJqqsk#SAr!YqGyWqAwTQl*;fGQNX1r1{S?Y-; z>+!n>2JfHdyEv8Kptt91=N74u=0gZ(zxSr69@fW%gapcW|28TWCs*D#|NfC9$Vh_y zpB596Yxh6AW6)D<8B-##$Bqj>&#EU31Y z@8)bb8-)|hi`kDqfBt}5>pc8z@qJW?G(9M{+vtsQsfQy=P61R zzm<#@%+2(ax)DL z4Fe%em*Ljd)(AO`pMvF$PfV20*Clbi~buv$p92uPuNXriv$yy*+ ze6=@8&qt<2x2aT}nUr4}NJI6t&)5(=Het}{?k+db8N#5p?_vS36C}Z#nt0^oilFz^ z$pG8DO7o&{I8a!iFCo#Uq#7gH6%=Z0C2kB`B6)wq9#gn|d#t3kmBPh=hrl=TG;&iMJNw6ile zFes=nF>-YFZZI>RN&Wo!a{>i)i*bRe8h95rf@ZPKYKQ?L++4L9=sHLH>Q&fMlc(z| z60pB(@D1=_-SY?7_D&)aE15|03kzw$uCAC}I8F==36Xvm2KG*FZtmjzjq0aQAC;A} zgSmjV!cc6L4k!=S}7eQ3`8A33POR)kj&C_I1XygB)gBvB!ekq2|;+->^L8qrT;3f#wG}D#Y zs`O79tc7_^Z5d`(T4GaKqTiqFSl{~&resAFH4xKMQN3W4T{M2A2rv;;*zxStDAVv1 zFZJha$@=n9ZAtvlpQv`(J${?~eYdH=0SnkmF$z1^tJ0+*>2;9-*jzknFC7mRs7-!G z-e4ED!AS(xF?$;_x(gzF5gV-_GET3Fnsl9Q$UDf;-(QqHOl_Yd=)jR~(j#R71C4h` z9U{O6x!6rHe&9ozCbW!e4u&3hIV74^v>%|Lds&ig98z|ud$%AAmBZ|khz6QWsS zVt?$O`vQ&2d8gQyDAaItXgp@G&{UiH`%|2;4AC2zD%8tv&#EU>p~#X%prvFyCbtEmko^~)8yVTrAK8EdT#D{0i_tVH?My}9B@ zTXB(0JwCg1W6iKtwsy#3K+8lcyH@F(WGr8I(66F#4gc0q6AV!a!EgqV75e9|jhgJ_ zAkI8mM+dcglA^(a7oCp8K8<8-T__0p#L7@o+4TgJIvlMz2SWK-sCbZUETsww5l zb;a*9;jU^N4`2NFhy5oLrPo3gVFtH8Fzcr`2Jv_r4*j>8M4vb5aq*T#8^r=kmu@}s z*qE9bGsNgC^SdV7y1obZmyIzrQB_9P0~lpYHzWo`SFWDNK6~^ZZ1k(uiFgEJIt@s* zOnFL2!fSqCWGbd77+ky~p`QP!7JSRA<4FpR@C!)WYDjcr3y+XjvU&|?U-CBNOgVJyQJm+YX|NZJhFyrU&GO2bY1A6j-m0>%LzwpT z1S*ycCrNvfQdrVQOe!3o!J)r5JI}2<>Oo0)Y>;fYL6GE9*Ok<|;VTu%lHpOjx)ESL=x}sANzfbSTxZt>k@AQP|B3u(jIM|befC7gE9bOJ4oT_ove>YLD;HQ8sW|>N54L+P(98-<$CC3YFzx3 zJOU0ejNz(7$aEoD?C_BFUIpmdTw9p6TgS9%$33d$eG#s$*G2?w;lOfh&>cphr;Wl4 zHhuRY38zvnm#sS(y7g#Xqas9uchGS5B5o0@;rGZ#?bf?^NZ*zB)f@QMnQgjlQ8T;6 z%cNEFBEbzdn%fIV@^KcwK>#*f_Kf@?bw%xAq699P)vsa!>w{&dO=oZ4VS{hsuT==3S#7e5#6@z~n2%rE?et(PV8g*wnSazyqc5&kT^@hJ{7 z8hzQ7{z^H9e7M$`jGi$6b?XW~>81{MulH+9GbAit_$a5nJ{MObbX-#gE-#qhw0xy& zi?ww|uE59T8O$R~mL4l&l#{8%*3$_ZX$Y;djB;i67eU1zrlL0GW-@a&p3Z_hl=A7k zJ9o~iAWCCOn6RYR7ww7oxVOF-S+`-s+zuD9_GBy1Eaqs>P}?Jinu=<%)%{+jkZogX zi5?-4IW;cwAYU$>C6dCrz`M>k$K<2BD?;^*OlnMjygknvV|H)c$XpVtCBhda-dWL< zVCw^iSgn`*^P?hCMnOsYS%a2t>;~0q>6!f#18kH(MB}|LSkrWef9ac9$F3~L%6A9w z=;~y8HR_E?w+{WRL|2^<-C#FLOMkmpg=salq;e(NUBMAurDZ`bjpR~DK|Q3usfWL2 zb&$E7_#m&Q8yphyF1NqG|AW@!{$c~Kil*jE0n%3|J}>IsIz#@3U{k-P-WNr0a;vq3 zu(@B;|FCyHkFMo&TJK1EOFKCz$cHgO?X7lcIXN?b@N6lL2TT5}##@df5;G;=- zqNF$9ndQ8-eDUhbKF&hOZYiv8`*m*&#J!940+%qxt3NQ{qFQ^Djygv?jU?n?JIk_;(B%W%>JZ4f-|l&_Z{AeOY_@!&bvcplo{v zbS&)NRZTy1ctx)5(FiEOnP1-Ic^QOBDloCtECr&JoxeZC ze}GGw-KvRSb>+yXH=0G-?TvQY@=nCbgX?N)WX^kjdWHaCaI`4G)HQOMObvGMG> zYWqCqeuz_cvCqoh-;}&B3b#eSpTo)hxflC4_p!eC$3jSfc+1J_0>;W+0yW+}UTp#o zcIdLf;WggS;dRoZkm$sI;lcj0(<0a_y|ce7D_>W-LYGu;iG^J>Bkc!26Fv|b(KRy> zpl}Nb-8VehlT_Bs6YlR1);8E~((KMD+sNmqnG#N&iR<`D;5CHCV@Q_O*Z*tRV0yTe zk1Iv6Xf^WZrBJ1PrA^w5S&8u{)mNbgSvE)vSBpwQ&f-eJd1YSL=|`6N=uYfr*A8QQ zQ|277`v}bmKH*-O4XZh1bC5=Lgq8+pkeM`Gw`ly`aXhxMcir8FIkhgTN)>9cvu=Fi z`AG|1MB1X}FUGmb)vN2j{d8IQ{RHW~M*YDR2FGxpe;)oCDle6>+pB0+*&_0x6}?N6 z>!S3$3UAEld7b5DPCZY0$DZK)UgIuqUwiQ^IP$>2rCgJXjc@l#I*+~njt}G-Lc$A% z`KDI9Y^&G7>F1U{SEuFf9%cj6Pw64cPOJY|n!UPJ>2;*Pa$Bq!aK={dQ48KZddZ{< z?!FN5S3^eI*0mg0}CsX=-KAIlP6zk(1t7J#-P&F2T`xb z=;!BLselhuY;4cIUFTfb*b`WEJT!2$&eBVH>o=<{x(m_fvLu@=5MG^z{@JE~3=9h9 ztk&9&ed!W&wVv1fDsrNJmn|smj)g@yb;m2KgZ<@88=e|Y>zRFu&7R#H(iTPfNSiso zqsI8~n&QKleC8`%$ff=KCH^;_y{mA2>^inOE&fZH8(tkZaPq&X^RVJ`c;$||h(S%! zo%?M<7UfqW(KZX?#PXJ_b-T`j((ID@nwFlx6zAVDy8t%cdYg}`aY*l%6PJ0GX1_Mr zOh~84r4@@_Giwc0@vi>ylr?gjxly?7j#59k2pTDJV^M6GXm79iVq*9btsK9c-I5ZG zQ#%!b8JN5Q;|^!2?9x?_1^#jZuIYro-$+JJIf^N}c|Ur&s%J-ZDSGYfMt;MshP{q& zti+alsN8SzYyHyg`$V!nr{)okv8B>Xb^Ue6jeV;+wOBq!c(mx{Jgz)$Owlkq0-lIJ zReD(tCkN5;p*cCP5qTe2w20diOii?)%Wu?lU^c8glQ`;ibAGiEaZ}u>a%F+Rhx~)F zcXLi!B!Ye%&dQ$t5^h>#0uD+Cv(9-;cBD-P1i`|YHJSz+Z1de%3-NQ zS(0;C^-LGar7IrA3K>!tf1U_+Y0~L}@E1-MCI2+3;_%>drqqEWr9ztqlYiC5=dbuM z!gxw%jQD8iVxlm4X~p5{S4Mcp*2wwAo2*!UulrS6lyJd2icMp0%-bS!3@ouHHu%4^ zhtBH4do`eK)9q1gL-Ej!fO_mYb;9+}^G^;h21qcl-i9^p^G|i31{M@B6$3YyN;7(~ zsN1SI!~f$n5&IwWm&r~lrHFdj&uTiXti24M8+Dl?UBDwU@Z-V_7yd~0@s+tB+4}K} zrgE2oshSd>?}52+aCtc4jhxF^5=+nJy8FidQ#j-YYj@`P#2(I8AsXzw@xFM7a`H`4 zXDOr^1VLv{>Cjx%UV(p(WIRXKTJLQXFzX;qJ+6W9dSdt$oa^q+=Glx5w6qh;egV3w z#)F0uf(n+1{ZCu-i9YhvB+$P1HXhUoYQTMZb6l(^Hg$vdg$TlcGTf(p<;$D%?e)@2 z5i5Re|CXDpkz7Qp?W$vrzaNO7(OHN#Scua8a%!}k#QVqZD(Z(6sWRw2@8S8{$Oe~|J9FM6_cJFs@9@}Gl-PQHgZ$KU^8!j%{N}rt1?6LQn6`5e z4onY5?F#?Gh+VmQ2jo*Vk3GR;V9xztq&O%cuGn*CC);^h4D z%`6)6Q^YjrMROJOU}{-OCg^~ehLILJcbz9jF5&5CaKI<>c}4WYTO_!q&>GFMWcb0M z=KY#TvG4Z3$L0+6gjKB5EZKgtZtz`yB1DYh*4Zc&SFf-okzX=?CZClUjSASot?1tU?nEgj3M=+#VoxbrsZS;W?Jv@+Lud{Ykho5N< zAHGJ=o$HF`#P1ZDdnkMJqdPif9%fLi_;S%l@#wK zZOZjs>5N?I;xP5EjthOG@_cLj{k@T&x1Kh5YP_~bK+EW1Yft^cjr>$e(7O(iaB}R~ zOa7JY9Gl9|5eZ-Mt9OO1|5Zzcg0>C)emsoDn4c}h*6w(x>|smCA4K)Xgo2(qYpoe{ zh}5s5HQNRU^9;?*UbCK~4W;eVR8!~eGVT*ZTe%68-|7f$7A1%jd(lG=i#-iY2X~5f zCl~##9bTbjdM410zkJYbWGm^)-sJ{yU21}rrr1<_;hbo6$*7;vMGyurk}yL z+Sn2@8t!idET;1hs*>=UmEUb{V$5Tqco*s%*btr@kcBq+Y>SF69aw8sHGgiX`GLj5 z91~-m5jBooq}{`qSw#aJq!3_1^}C%R6G1T;4UX#d&5;dhh)sn$5bNK4{77cn9rICr z7#+%yu2ZqgYt@a;=nIyo#5OD0c`H^UxLIWFUR}6*~rZ9@Qr)vZ2Z=XQ5-v1nE43e4wg^!&zEzczQal>u8nf zVs(Doz`D6+axLiN=ux{>_n0HScW6kjM*n_&Xuh+eslUX=orT0{k$cCp+CH6WcEfhB z-LFAxx4G|>Y|N8i?Rip$;|VG#nb#%ZVHw9X+~RgKJUjm2btlp!nC0aP*|umbEv(ZU zca|i{&&QZ<5Db=Jt888Yb}6+_;iM?)qNYWGzJ$7Z-3-`=3h8J}saDB3>J+{`N$)E( zH+GhQ^aB>}Y^)U>?r3rrW~-~W(0=3LD*8cMZo!mWWi@a8H9g+w*=XFLMcS^JxPitq z2@K^AlDRSb6$N>Tugz>4wW60jy$%wF%fC567lK9{6)}k%lU5lqlwYrybS;3O#94a~ z^YG5x;THcZ7r%7M(sOFOqIAWnZhTe%v+c%Vh(*lWoAhK+04&x?B|V(~lIINj$)Uuc zwAQ<&!^A8)!mdDLGvjZ{k8nM*{e?MnmvXm-a!L^LLAO4Itf6vimI?RLZy`4+|7dQ!q@DB%$xify zdaL9#kd$(rsn=pmt%Ar4f?~MW_ zQ@Ttoovy$4H=>TGAIdKggaQNIFnK&)vI`|hk;~I+#~WlEGep;$eJkrmA#_t4-l}I| zRZ`03G;kA&PdYlDzuqWvTrVi#92VQM<+M+aa&CA*$~Rb7B`%J^8}9SXkIm%Cvs_NX zYwxj=gO&E*)Z^}JKZ*v`KZKA!wdynNp74sbQ81AG8R^!4fj zTzTzWXwva|V2*XN#4uUwQLN*(b8U${WfwR6Ex+k+=8o;f{yA=U4ES$-3VRuh)*5sG zh|d|AHDxupUeXwR2p~XsYNgfIn9pwa)55%ppeW+*ZsXNM-k&_;$WD8# z;w)s9bHA-UwUilILo$=p(@0!>YUseJOsYryqlIYwJvn(xhT@?B)Xd)9?f_*u#47XU}W(WGT6KW%sv}IWX~#54)>2@bM>u>9%6bnfqk-Hf)4+ z++i+pzK0Lr6ZJe61840gL@7*B(GKiKb*H`d+f`l>j+oJ`eVvnQyjDyy(ZVAyPNUt9 z0_W14^j#_WqX}Yhn%{CJv6v0dj931wbAGj)l?g)=J6mUTTElwK;7ZNp4&3;j%$Ty8 z;hkQMw)@Ym^gw^DVCkZ^mVvatj}UEnI7BO%vSmMXBq6CLL2$1DVP7eQ~MY1q%*A zsl~69+4F231YEq0Z#vH(GCvcgb;su6k7aH)&kYEm}o|)kgj} zT3_$T$;$>!((BLmrsX&1lgyb1?MrWK+JzQm_QVU^4mJa8=PIVuP&9PV)H7OA16?Z@ z=#c4Rou&<^nyO>ZrpRzLbeMa+BR^@Fvn-vm03cAfF?HI3Aic3<3RA}erZ)CJK@v&a znx)bA(FbHaiP-g9^R1ML2@x-FR~NM+S{C5qkRa|IrP0+!2c4ZCJM_M~PLtjJLhjTo zoqHieV%@bcWT}UE;eO<`0mGB4B5CX+Fy5qG;^nF~V;c!13JVeS0xlq9@9nSS@Pz6!8fxDZ1Jb zoYi>5XdHjTaPt|f>lb{)cOu7hBuJpk3#sa(FPp~x@LmmJGwV!rAD(UTF?C4N$MWqv ziA31ghttkq{DJfzs~{Kv`R(D2 ze^>y+a@NnJhLg>KPx7CZ=l{Q#67au}cLIqFSo`0?O!)tv7@Bf`p7HYQTS^NHi>HBa zzrOu(XcGliW)tLCL!zSS1T;rvfm2LV&PehPp#UVQ5d*}K03_+439`=c|KU7L(1P@R zOz*GE4_MDp1KH670Dt1p1|-qmeXD10E-#M-j02E9uCJ4TE$^cE`sW6X#Sm=RFk=~j z7w`-@U~v&0%yNv)54)VS$%%>ITp+8q$cl@)>jNA~D(v^G(!Aqq1)#t3KPk`{>0h8D zBS^N#WWK$mfh~~A{|4&F|D^@OA78|P(H25!K23@}TwL@tHbA&U?rO5e*jfyCRvs1{ zoT+%VIZ_GZGIf9tl5X=K0TtrPv+))#Tdwzo)#o-YZ(FWne_1YV*xDX!jW)!FK&Knh zG{NqCk#hF=EtvX^*Y1Z^m#Ik9kq5KB$x@kYLf#mF)qwqm`X8oDeP>&Tp2KCVvzLYq zoZWnUSo5_H}L*ubG+!B*OtLQ^jQbCW7y52>;vu(u< zhHYGZ`y_CdsYtV9sK?#`Rz_oEI#@rt7GCrKK$!s8CvTM;ILXcC%h#9B+n%=SEiX(K z%JuWInf5IZU#;KsazV7#2`5^x0&Xr1E^6r6Z|89|g)Tn1o`R8mr=GqLp6-y3UjS6M~1m`!NFUA;9O(@6blt4OMEGikq9;>wHp8 z{z2u_r$83S^GrCq-MRifG>p zFAbZ>wd_N*dANxc!{H^q_-E-2ncx(gK6JA_Meh&q^%M%&jcXpBrk7t!Wnx>0B*_`x zELfplWE{SsdK1$Vxt&4vB+_U4*EAE=*f=ghY=*sXl8ysWTyc75&Oq~U4l$Q{b=UGD zi{;yKi(#tUOX&7-4|$0%DJf~>tkqWRd)C#9dD|XiPWTTxIzu>$LT$D7>$L~f^Lqm& z+I6wu$xbt%UcnFdw+KgDX|^YGmL>ML2Q{ZvCEk(n2&t}HKwA)pi5Ife$WkV0oj)O^ zMXfa6=E^L1kLR%FHwe1x_IDApQ+#`0?8zF{x5fTzFqx%^Bdv{Ox)0|Dt?$MFnO_iN zaO#~lFTEj`+R7=eQmqdWkrrx7g%@6m!h3qf2_hD4TYJ`1-$e1z9YKv|1|rLvD#dp> zI8SWK$4uiYMk0h6BL#crTWb;)xRH#P>w?SEotcvf4|VNs7)kgC0MCKlc1fsEl?iY* za0v)1EGAz?kqUNaxGu>!IlboK;JDkM2LP}WVUU=H29deBIUv+bJo=1e3Zs(>#50vN zmJ6~1t*0?8^tE)oAE6FH-|tRLr;?^oXmvRA zui_!wc1*>1D~~sauNO0(r}yLh_s^3;ruS;_1Dw8nw7xoTm1?{CDJy4%Pein75C8Pse2(hsNbR81~Ll9Jl??-nsb}|@VUP+C{u^g zh-&xC2Wp|sw=-3i1oPF_2o`z$;7G0X(H!zaK$&Uw7KD3zxNMoNbEN`r&U4poBHKRoB|vGPUb1 zIgF>0&+K?aXLaal+TW$a%ij6i{gTYSY}a$WH=EG0{1X!LdNupV87rA2=e~882EC?s zOqvWSh(1eR*w`gfGV0wI#}VNqFgqs?w@}CH%_L=I<&Lb!J2N`POgSZ`7v$b&*pF8| zqHr^f?py&VSf*z?qgFGee)qSRIOxcI0|V>j1FRjU6~|zQd<3MfM)%Xbk>e>X+v6oq zXiP$a1fT$>@!D>&`Cg-ek0Y-D(wNt2+OlzX1koF7_LD)bky6WP)_*BefR(r4y6oNA zGhMv#xL+{>NOXLFmIiz$lZ9IQv%N{kYhMpwKj{fxhUl-}FE!(VxPYb%Q*KI+&HqipMbGoIRpv(oh@eu~sm= z7EO$ss9hTq;w%QaeEyWpw4`qnvy3uSR2g^+;-fbD-!eK4=o`(-9s53W?X$KwV0pCv z#SWy#ZZ|AjxeSip&}JpTp_5yIS@5e>EZ^Qh0$pja9H(1D>vh|i>mY@8cegESJAM5C z00#TXPipo9EH!XPmo1MOjg3M|N=iGE1q6V0w?9`E9*9OT2B>X-SQ#z)zz4XHoT7KD zSP%#iVBS@jjnD}Qr0#siaC!lJ1oQi}21VW97|kvZ`aak9jPE2Sn|)UDpNQPJcHDbD z66lqio+^l3ojLlrjzo4Q4}bGCvKO(eAxvgdq%`N7$^EsWzTbU+qUlwk@RULm$Eji; zo2&X*CP&ADdX<>vJonyB^bDSdBudqSTo^tWDeS_lb=aZQmFB}tlmD!F_>n&S^%By; z>m_6q;l^4kMkGaJ_L2Ii1g?3nKz5qY!N)SCwdKz89<(D2Mbox)rZRLnnl=k+69@dm zNE_YR7Zm22;sP&bPIwnK^=0axCHVt>=d-AU4~B5!g$8*aG*L9Zz?ta1_N>riAPIdA zIBR=*d!4zs|$k4;Sj<2H0BCMZ9m| z0A&ym^9r+;lzUd~p5tUc%7H-AEY0JZL3e54IEI?XQmCe$b+tb9;-)ow;kRKD+g(6p zba;#Y&{oF6UVTo-wopdc)aDw`U~R5q5ysm>Xh5yzSWf??zan*M%53f%Djgz|S;m6*DF+n&F{)#S?j=jic2p{1RVuN0oBj;NE zFbkXj)*!!+7@cR`BsQhl`Ml35KG?j$x=MP#EI|DZupv!PcW<#+xw#Ws?l##Ld>`+% zokk_Jy^g!I?Yr>KvqfQtlOVLQ1HA4<=l}lw8Na=fHy$`&yO>0bNpUd_fc;5icGz`U zLOue#qOQxh?$d(-sbi&8l)KeQS74uvpefi<0P^&nMYCtMk^OTUX4{sq-(Ft!r7=m^ zIO>@wcPxsTRZP)C*9y`Dz-=RuTy)!pw>8-+{| zahakM=y`G6UK|*KAFH{_(3&NWa1?T{QW1)}yORMTQ6I0k_1DgTahTI~S=T}A^&3+kwc}@VOetn zZ#=L+3-azNe%aAH*#{a4Omb{&>=^BNS7+zzw4XTWJj~%fM=N4Hwo8MR=HrAMhKSUX z5&G?4pWWR|w{&lxa(G?Y-CROpw9~qspW%DaXn}8mui+#^42V6$k|p)7laE5ol+DCi zW2(r3b=OyLTGtIi_g6jgOK9p}yssO}?cs~f>9wjWN#*bXHOMncF^OnNNlf&i<4pw8 zd#Rce3^(;ek+gkl_`!}B_B2tQ0;Rl70UzYBS*)zapP8ojDVG%w|0w}>}KcPM&!x<-K}aFa#>NgZ%0U?&~$ELde^WFm;hx1Kc>2|yc9k35=y z8^vWc!(MGY-woX0-Q^ZhxBz5~HQ-XMf>Uk5d0GdAX=UEGE{2ANFiJ3d?N+L#+i@3x zjI{L1{PF`&oBp@$EZn6l~Uj)m>A% z)}za|1ZQVJ73wYMLN|hQ8QV0}Y7ezgU0VNKi%cCIac<*9T2TGT)C^TQc=Ow7_p)7* z=Il)ndC;#o&WDYju#j{fZyf0zG{idte?x@FRXBZ0pCfZy4RteXK8LG;lB=vwwnw_7 zelFx%q=l>5zPHyq%RUbmQ#M;mUP#NS>?gRDClgoqP+zP!(50rj6@Rp3VNV{To~VQJ zbHU>Jy;m3evmM#dBC>$s57^n-4t=!y^EFt%bt2A-8xE;>d6PV$O$49-0DL-y+Y%p8 zJdjuVnM!g1uU}2iJ0X&o_XRpKO!K7WErJ6EyHzLRiXs&5AqE^@1YBY%PK-uKH;q(4o}@@ewJiB*Nd$+C0biUn(^ z&0kG@;&*d!JYI^CF|6PgMHgZ#>LNy*uTp-w6wUvT!}Zzjq$Qtf!G=6pJI7~a^!38C zY9~1Yc7Ev$Q;^~cY%DM26%224nN}e&8#^2ZR6efAP7&0Z!!9lK;qL4!e-V)xlP|Lh zhT++_3MCahB-c>0$0%1@nLG%;>c>7KVB{$SZtVL)92>ryp>Mq zuh_lo_R0z*Kt~^Q_RLH?ZoX+sbln$n^-mUsqQ;`D@MRF5fZIkQO{^*7*5Q zJiQwbaEo2ngL5fEi1e|RgpuV6iC@~Rcwa~?NFIy;vi2AueE%05-bEQXh4zOY6I`J* zG&(^?o6qY%t3h!|B*t_N3G>_*MEPHgGC%ua{t-Z!dtk!kv zh7PEqil*y24fs%PUP(dkowpVA94uV2-Wm6Z6D0|eLIWT8UZ&PGN&)?NHMoQ-3BNPyumggX|%qg-| zp6GvhUsWdkz0e2}g&Dm-p^)1({lQZI{Yw9=027Q#+k; z4y-XHzq<^@lwc4K-a&Oc0>v#_7RayG-irV{Wl|mx{jvF(-1Ukx%43t$$2?XzIO|-B zA{N~@Y@lnB=bn%vF*q%M?C+!UO1>j%FULhM=n}V@{&?@?c)7#pk|MeXjY;l;Ziy z&S*9|`I0yt?LZ16VQWjxSI#w=()e$Wy^F?0rv`w(wOupNm%iXdQ}A)GW1E*9tJ0t% zGY7#I@#ui5E#!SG&)}GILpP!qF6q}R1D-&PY#y; z2!Vo(@UFL3R{M+=DNa?@hwmK!#j_rq*B7ld$7)=e2{4ITqivFVXULk7HKR?+^-0b7 zMOeCI_iU#P6w{@;*8>aH??{v%Vnf%zX4boZ$MDpux#HF;jofQL2!W_u&2)SsX4t56 z7O8cD?*qjg8|Z(FeU%&9G>D=qB^Yqm#u0w)FQ_%}^d+x8i{P_;PH(frX|v&O=bfG9 z_u;9Cuw8P-t!(Y6`|++-HE=HtU>+i*q-7Yq&N(m4lo`p$$|~_WAe%!JUIV{_`1a{%4Rg3A^(`nS0DDfw&%rH$6KgI zY$QV$Tv#JU9#*p0I4zCLF9ph^}1 zSoeDfn$*eiL-PIti^1}|FGFkNFW=3Fc{;~?-sY)|ragU(0^LV~$C_h3P}<_20$Ban zpwdj-!GZH1yhhzg7e}H?F0Z-qPYd5!<5?J^B89`bk(&pfa0)Errp`NOmBTxjZNUla`fz^4UI2 z-q4T=cvq;BIYjT%Qwq9udk4}ir|D)duVLY9zW_(VStvalJr&gf&d1f>KhsOuKg(Z! zv80dK@S88D5~z2HiAha;9^F)%5(zzA1<}8#tyfmo(pqOj&DR>ySH&gkmL15at%C)% zcG6h7GQidL$eGHW`TQ#Kb@k;6womohC*;fM^){&P5IEvMhrv`wFe(G|3v@{yRKwxWD{Q1Y4(IzmhO;%Vj4O(6R*Z-k^?sv_AQ#mQ zM+yt6>yvW+)~mQ2u|8`UiAu^~-}7Rv){r5Id9%D!McJBCswFQWfuvPqv)O?q3ac*c z?Cy4GLn2sl5`ej7nnGLG+gaNwW|^ztJ%Fr)_mFu;K#ChMzvwi$lzkqh0{D&a&+Kd> z9xFoMoAIpFuV6hK93t~(;8JBB@ds|VrHYy#r+HliF{IK%364%o*?!<8@`s1{gN2|` z2rq-VX89qgQb8Il`?J1;Ujl-o4FwIP_qKzhryhmQ(jVaDU5eqaYOm1nAFs)UJ!(=B zP%w{ArBvS60w-QAzS6dD$0xI6Ys+pY}> zok*!cSrJqt^0r)KfU-$?e*P4wH`EhWHRy-H-6Z`khk7q}1`btn*pOF%tyqtqCY`vL zko4kmT@rJ(j9k&=damYb;|=5eO{c@^H$NDrudxjD;GF;)(E9KoOc0kn*siy@>2G~{ zC&69FUk-ev$)x+a>wq*8m=`=kyu5uqy$l&`m_&R6Pv(1P4~w3DCF%C>&sGo#x-bLd zyqch<3;Qt`{V4&;_c%=Y<8L4+S1SQn3`|VxV5++|9k}x^Pe(+zVHyJTg_4COax}XG zhBW6K;D)8&b1JdYQ*WMNl6t1x3uX2<=7(#+(lx8^RQMbQJ{iqa-sAiU;BI_4BokTK z?%}Xt;O3^RCg9#z#UVCY+bVbgKU}+L0h26OKJ99Yx25l=L^$E=&(Gn2A8u@F%IUBn zjnAsxi^kUYrDIhel#ZVFknt-CzBHXFH5l4sVPm5wM1Mg{Trdi53TqCkp}*}qeIE1= z6;e8(x-JMuvp?XnNKs!i@osN1ft_dl*>25-JKJje2<${cACL;@IY(q`I(yONac&6U zkn=WaQsC*!%A#IhU%LsB$;!$Svg^Y^n=Z-f>gv4CJ{~mgq^FbcSk1J;CUY=_%Y7@w z?8r?BR=NpH8jv;wVEMy>&<%**qlc?@E-cXrPUIvY7@|HvVY${C{e&LY5^rLtoP#or zR{c`c0y74Pjl#CT<~5nB={}!Xw2*!Oezw}07&ABkRGzX~r6ea4f{=IyAi=iH*L2yE zkyOv0!XQeK$2&(jfD!Y1U9p3(8B{v2onBvU#3=$?nF=_J02d>S>+1x8aYrT~e8Sp> z+zb2Fr>(Tq!<#86EghNndZmt8S-QEOCFh3?I^6?4S0bW3_o+$E?B71cMh%pfmi`XN z8EyY^GWkQ}Xa6f_h?~<8VEgV22G*5m1%fb+S1? z1lIHZhI{$=pL`We0GycBrxP}TW*`*0z`@rQ9!;sFx&r_O`~>Tf8E1+n^K^^vfr3yl zCg~FjFzn3C%uOJ?;zD4qUW<=9GycD+Nf8lU2uM}JTCWDRVMk20hfRlz15YE$o4NC( z<9kStt7EvPYK;lB51fJ6Ap65G;pn;u%oVKh>v(Lf5sgtgqm`asW%hfwtQ>d}Gc%y?B{- zXwz;E3XfsCtHI^qXHHJetZMTI!E@8~?ns!S>%voW5@!OC1gv@BM}myVg3s-Nii*n7 zgt8*{yag{V>M;!H^nEzZiXi4K?mF=Kw>MRvhNuJ0SgkfIEMDcYS&#}K0Q6HtfnTV zu1*Mcm8val7FBIgRzS**9yqBDi$24*$+>;U>peu=7AkDjAU*mH`A@b~H29u@@q@6U zJ$}yCz~EpUvSQJS|7fVRTBRne78};Sz77P5?|<5hG2DMuI7C`n`JaMd*mX+zfA|sq z|LV-r*h2h#50gx&7wU7_@L&@Z67m%8a@p6{msbqTPtFLS5SS6@IAPZ;IK21e{ns4P z7{e}u?^OUhpZixL1gF`Dpq3bEJ$q`y5`bdTSM zLK87aR__<#U|W}{^-t5rB7d~M4!)$y0d)syA>;Bd=s|~;E9^^%U-fT{cA`h_k6&CA z!V!~eziVSf+fK*3J1J91?@k%hwk0DvMV+}?5x?uGoXp7_mMY{_U8?yy_9f%1ug1{a zt?-N@6c_!&&6UuWsB(Mkt!m6s15&M(x0farl{Z~$5Ix#ahSRtDa_4X9U4fRvz||0Qt8IR97KDYV8dG7)G#xdKVK0UqD}~Hplmc;R*_mP?h#bxzo;Mur6fp zTlWus2{oCqpNWiWNTq{E+b?s8aA}KlZ=++aHMQv%5g}*4#>KR)tyv-?Bf&;Ia|}n$l*)Qk-frvVpUM}wcy=w}yA|qt zt!ewZWcpfGmI2EjvgIW7F=LYbXfWLm!lpaujZ$i7sDILL%7%|Q#yMu^R86cf#u?jt znfRf8HasDAESoamanmbNNa@Y)0~Z&WK(6UYM;0rs39i0--|dZ1*q*Y+eI8y;rAW>9 z=sVxkjz0)wiB08EXSu^->Ylu@mw%%fPmuY%Rg7wb3mfr_>79KNsi^k7gBS4$4?}C` zFJm2R?IYo!OP8~jegy?+2It6IiX&~1KGUw8>FZ-nHotL#p9}=~kIm^)TnlE!*=)k^ z*6t!}4>cs`9zJa(U5#khti`EcjpH%bUdWZM-uFcs7Y3Y>n{Heq42T1ihCI-xI@-Z@(iZq5T{BZnL*Kx_{Jxose#nwXx(!N(68$~}H2 zyqn!ZZtb3)BJ@jscG5@^?#MvmQ=T(w%^{-xh+jw3Y^Sbqxob3eDVM?9=@zq>i~}>N zV;16ngGbE#hUDMAosJ3iKH;vlqK!ZB2|m%6?MVw7ncIscvC&fhy1YsWk*eYHt_}2^ zw^hF$c)PXy4DwKls~8_#X^bKPk-c8eVpdYptU7ICiQh+{W{lJrYI}+jrhfM5z`&6~ zGo;tei?ddGVPi0)EK!&$8r@64Q>OoRq*Cu4a`GQp3xE9@L4lxF9zlDT?^JIhpXucE znf(vizB($(w_O*cln@c5LusVD!J?!Dl`G5I@f!Puf4U z)vW*WcM&bIS-g?t8@bs*9IewwBvI?4*9UNn*oM^Z8%f2*F&cXBdG|aSBn@msrq%FG zyX9)bugOVZ{_<967{Jqb>=6#i>C;we;|YG_u1Z04g%M6hdEeH9F**p`dvpFw7-8h{ zp?c|#B-|DWEjxZhdxv@_qxf5){*3%>MCd*Rbv$tqor}WJX%Y+lt3e~!CarprK`>Lh zKRlif8E=gIa&?TcyUthCo7Ua{m)ANeNT^^)7x4dbq?6Bb`#b4dWFCu>^{o>D!&QGs zl7_+o{=?+0oXE>8+4X_G?z2N;Z$$bp6Vx;KH?qlBuP#-%JWvZ*S)RPiklC$r8$>#e(8x;y455uFkOI3|n6ngd3GHCrSi! zU|4cl98#w*%)lT~!gTN@X|Nh=Oy_*CpE2yUiIMe8hU<=joQ1kr;=Bg)2*Q_kcxE|g zg>1wvhR)S!dk1X~casn2YEk}_P1=04IS`&V-r2LJC zpgmSB)nR#cdin8ra7Qo-SMYYE8wKgoubaRohkwG5DE$Wk;$0}#T=_8V3*7eSxGU|Q0vwSJv_ z464i_tFf_$>`&x=X!_XDrJd`Hicc||i~#}12(Z#O4eV+N-$?iso) zxlxo1%1q4=Z%nw~4$gRPDfR^zdOOj=sLAu~NfnFNdS`m;9MalxAOBF5O-WYP-ym*a z>VBiY9I%v>3DK?;eu|04wO(KjCls&$86N!6Z&JwE_KntD#qhfn8`)pB$v=7>9~>ny zv6pd0X!)fjx@hxv(Hq`b>JlDrcC>^cZ;@c*(JoY>_1^hy3911}vuC`WZ}_mCzQW3T z1U^=|>O-!(C2JSa9E>`6Zw@815=rR?6*fyl6!Z)z15nSayoO41s$(iD(8D&_uZJ82 z%hv21VM;$-1==2Q=wfO*G*5MUJ*FN0!cCZD=yw9$d*AR0-8)tTV zwIYIc>abWFJwCyJvrrtmkJ-x48&X7~;IP)R6}xL!-;0=uBcehv*~E?hRL#!o-k>zq zE1<&+*%bDE?l_q0s$al05`(EZ{x|P{<1-~eA`Z>hX$2%=TEEPw$z64a2>oDt>Qh|q zR8G>o_IOQ3Ue4hrORVqZZp_p<&k>8BNJ6o_g7J6)<3kySy=ya^EYUlf?P9AEQHpJ~ zx7yY_hJ(%UlC1JFN5Ktw9yzc%(8#M!9W;I+8c2D0QO%RIR%L?W-Ede>`}%BJu1+NM znA_q5C1v?}m&PG8JGYT8b~$5(WKF;^gZ$KT|F`3V+5w1Y%rS-TWB{r+gA|e75uu}#gkLoJWYRBxT11ae{-dOV%df}baoJoqOy zYowngmi8$@^@CUKTB^C7BogR~n|oBdD$%TbAkOIf{N1AnA{G&sBB)woV&dZOZ({wl zb^(E3CPrm~YBGFh+|IGodFnN`!P9S!GIDDEgW+Co0#m|T^qtVpzN^nA=Zz)PltQfO zxy6}c(9tN%HQtEXvPs?^kPF<>MhuU?c%e{T+1^bCKD`&XloQ$I+fiAW zsaqJPx{UJ8>T*lv@{^OZ_c|RtdM=lEoW-e%bHasdXQ`U}<0N}qZK;P%GGbxF-3ie= z1z1YkV!XLkRi~*FJEH$2$w+QY;}j!7RHW14YHzv5!;P09rxvZB2Bg%G@bE5s$+K?{ zvaOu2&z+>dkdKA3Z&Bf7Om=wPwx`9LF)A;euI9~+qdG=}n{>7npQsaFssEyP{2EQ( z|Jb~Su)Ee5w*ck#CN6Q(DcspN{2iGD73*R*4cC+L5E~DCyai#h7Uf3vv#PkJuGamgjO-9NT+8S-W0-ZyjUnZLiJxh zHRxX-^RBgyZy*rvsj*iH7jyM5#sg^i-|O(=KYhgh&lxjF0qFnR>Gj_aTUqt*-*RCBe#=Wb ztfO;xbMDhJb<|$9lzLoQ@2jV%9`4YugQuG&87TXG;rQnrKesxG`vZI1&b+AuMK9~A z^jLB%Ax|XAn`eNJ54fC{NV%5o@?p?N_*f7Zt^2K>GgW#whdvQNl<&;Nixf7(C1(%M z)9_h!sQ0WY#WR6O+t6aBA3z6>A(up5%5wB8WCkh5P&tVs#0F-zLQ-2SnQ$y_aEfba z*&3OtSdG6RYn{ZCe3561Z&32f&kC!x7}ppe1ByfKqL1fY{tiOaJjwh5-XE*qFENiM z8(F-YA)135PXr`yb``^@C2;+o9?_q)VxlZloeEqb4vM|BsS%Brn*A$qgQ?EJi3p3~ zxb~|>HcxH8HVDYF1oJOy{R!@OaWNJ3QV%z|3R+QPNng#K78omOORNz(PaVG?E{gx) zj9tdlzxD8pOh15onj*O zJ8;Z?<&9}?b>jFpZn+me0^2o3$`(s#IC4}L4$ulWXbg4 zV`hNt0XNPw$A55Fi40Vda1>o4v;B-C2kWH76EIVuKAQ^99@<1KmwKtyK*!9BGWhDu znj>y~V<&uQD#d6hoz{0k$jEy?lQf83wG8?|o{Gb3LR^PiAcaBP+$hB6Qo?2_IQ#Zb zGZ)vh#Nrad^IcyUmzxN-1anVgGKqd>_HO@h4~N*do9k7OXB9Yv~j)f&pw-&(jC3vsd>c?hfDa7 zky_i>0B6%S_>qdPE|Nr-DCnS{<7#7VtyyhPH6)1;8yiz>+ylC_+Ov7D+KucKuCV(~ z)>wFWcnyf#D>j3s)aKih;(sNw-78B?SGy*FfG6(h`*-$djQQcpd}Vpun*mizp{748 zo>sWMPN{J=Wdmz=t@o-4mMhO`KLsaYuw#lQCGc9G7+lHF^gcfOaea{%aemm*f3+>< z8Ot6Xi!~7~x-r1G^^Ap;gwuHJl5)4Kvt*-`Nc&PKtk-l7HgG?v^z)8i_uh$8zQyx9f*G-akJdG1$C7dNM91?}h*UJPXaoqbUESDA0c2$r?j`_98b{}X)stdz$O=#loT zn{U1#hX4tb<4ayg0!XZ=>2gzPD?`ZXgIRxkDdfl;u*F1*8c(&sU_*8)Cp^xVf{;Fw ztgKrFjk2KfI=I{!D(t*^7YG}GXR4ZtN-HSIcYuDnDG- zi$sb{Oaj5k;c)+1I8=4UJZWLPwP$>1?`V4FN;_Q!pKR9r?x0K@KT5;tc#zMp!zPms zrl>}9cCD2bgH#zH4d;sZ8c25c0hh9ajpweQA{$CSs2e@VwdW92yyK6OjWHTvh6xkH z60&-DH!%%nH2k*uqGqT6&RQ%){=m~GR>NHo7o+4(?B3z>NxaJZhHiu1P_M`$K+ABU z?nf?~AS>Ak;NHlrRwg?oDLt(AB~9x}!%ctx}OAM4CI zTH*}Zjjz&uD+06-z~%;ptJ>pX`HMb{reV9AotbJiZS6jwdFcTR{&cThqt*`?V#mK; z;!+5NEiW5OfKr8hgo=hnHx1%kM&j}h-EQ3$hqJSDPhX$$!E&ef)y%>=AfFWgp&661 z8aRwzt@2X*TDt2e-uIYut1BMfEt$7wkTE@gg_S>T>vb(SGrgT~xpu%FfsZ~Af0?6E zOZMjbLro6{Y`1G$W)5+}H{0xwO+0BsjzaHNc&0au;`kv*$mkgvqZ8wmwH~~tR-kvf z6vM_xX;qE)=8x*=ctu?3P$$gkbDmGn=o=UGdPeZ^GZpotrYjvg0Ush?&ZLeG({=L! zIy#g4y%P-4*NrfB6Yc{E-i+0bSJ5LpJw1u?hx}@ZF?z2cTVh$BXh%6r(TPdQt;53f zzOMJls)y*HUV?kdQ^Zx2ci?!uj@2p6?adH0v*(W4^NO!Y=7eXfvsbuV5YB3IP0Pu` zIMsuh?`>E<%e>G5>Y9b?bwRCWU-2QaBV542+by$y`4SD(sg?n0W!AZ$U5N7jzp&jH zMn&2uPrjL1D!D6+AjKxQ)MAM<_Vr(SdSp?6H|;Boc($Y`xYGT0-EzmL9;xpic`CruBtvYojdmq7U$sY zBz_;8l1JPX?(Ayr-|V>deaNG?G9HiQx0~hzHEuU0SN8s8AadXn5O5>^uIqC$W;<6` znFRw@yCUK+FlxEExrW=5rMP4~nTk_@1p%V!?4Lh@d>30fjPzhb*%}4tC0B-^x4g(_ z2c|ptNj#=K4>+2yowJoQV2?C(e=jHk-)RD}5=?KQ!*m1}!_0yMM1s$mi%Ds$3Y{K= z1GYt^++kK4dgBixXOB*-I&keS8n#mtTXi9N}FwR0c-v*Fy`p||K?o0`&1x|7v6 zFWX3(eti=I)n%}ehto(ZfyE%81JBd(@e%Kipn-=PTpI_Kfp`M2O~4+$dVb(fCIlre zZn}I5lwIwBz`9jf{g8~TSI42T6P6|l4%cO!g-hc5-7QJ|a>%X6n`f~->SP9nPBHN% z!s4LNfB~NLa9+|e(=2!p3TqDGrZY)$8#BA!ZYp*eTT?WUu-OV=yBf2x3wK}ZnUt`D zE^r5Pqx83Jwtu71<4u-GGxzhmhb!7R_0nxgoky8m(I4&2X+5p?^MFjzJ$upT1%qJQD6YUfhQ`C34-68E!mN)jiZa;urSm0fut~MadH&k0R>{Q^YfL6 z3-EgMx88XijY<=~?a^!{<`qlOx~$Xuxe=1IAjOJk33@a}iO7uKtKNL>EJBLv;W^@V ziny^%Sz%Bl%biPRw@!9A7Tw_=o}etRxmthck-=#^AI1}Hp2OA7OEq*tt$R?UE=~{5 ztWz|%J6RWOR+4yaz*2Sb49ib_N!DYvwvx_L)#c9JYC^Ixxmr}m(`UWdcLaXKAXc_L zc6-g$gN(#6ozzxDs4aD$)+SB7-?lKWAst!TGdINLM+pV8<{748Z4(odh|!I_3G7Ep zOG`ix4VENQMsW`Z2dK`XQd1QG#VSG9Sq>_w0;Ym#3;F(%Y#ijFU#*}*2ld!{`HPTu z6Xv^-r{c0G;nb3yU6Rc+>zeH*oW|yDi4xWjn*2jTAylE|U`bAiM{d!F0;McQ46HbU zZ!WK&zRobf5D?v+a*w$R!0@0%$>CB)Njw)I86G2w8V?x~Wyr&zx)Uk1%)$LwbA+!U zJLVfV3OZ|^*zkL$9IyI{lFr53cXIDB{>=r@W=w+D#TL7WY>-(P^l7Xf{jsKwQr5}I z(Pt$>Zu>wY*I!`JoX)OOwGRYz+-}>NU0*1=Nt*Tpm4bvo;XPP(NSM<;z$=E%oY_B_ za3IO|U4NB@fE|1_uTJ1Z>FlwvxZGCf?7E(0mdiy zCKg3#Ji}1{NGX^w=Hl{gT6t>W^^~gav!!fr9=C}%*H^j^!+NrxunGuH=?Ij5%_(P1 zNlX0ptg$nX@L9?{9VQ`T&DW0Z-7@FIDc`nn^LG;7SN@tLyAtW{!y>===$W(2^*L$N z0I%px|C>bEr-so9!7q3ez0!Nq1XMJmB)kD#>BA1R+y-cpOV zB6iQeDyHT3++7@aD&Uopuyb?Rp@JL$6vwTBUS0Qh-ZWJW_*xRrbU*FP| z5=Maez%se|2bD%2+pGZd!rPB$rf`{kho@~e{wC`MFb&jAe$=P zekELVcadV@9CJd?oeB$|dKJmk1EPt|y>;X)z|};PpuCt)=u)8(^KeCtDZ>-KIy@URxq%Tthx zzT3o_m+vpwNT;cE5yW?*N%pli{aCD>i&Vl}2&tmksb1K9a|=Y-)p;XvAo}@)PXoK! zYaU|C@E*=C0R0yLkFsJkD*M+4Qc4O0Irjxp@PgV~J3aPNbzY;llq@5d-FRS%Gi%Ci#0V$0TP8ELHz$-)ttCEpq+csL{rz5K0B1TNm3L(S zx&n8P6V6+F>t`_^twvg%W-E>v>3JaGNTQ ziK>WIObV;AUQe0m>!j+c;0vp@%!Op>w!3KM*N+6m3_e7lFWV1xh%c2_&g{swl-8xr znMow3{VEz&>T751nHG)spcpDUe?XxcO-L#_+SZJuDR?Ie$zJq2mtA_+CHt7gVzdC4 zrZS?ko+&WvxUGiikyCNJ*gzT3?Mh1(UAT9q%7dsx-ME0DiBUo5NOBYeL_#28`lnw9 ziedFkk{ERQ7&prG8YO$-xeD=X2`-42fgTfUD;Qj<9=n>-)9I9l zh|!<+Z|_Vs>&pz#K?WJj~+s2>}aQAF}ocq^MH-JM->}tClP(}fK3*@61KqlQ~Uybw~ z$e|fJyhai-XYB<6rPTuT(FmgwjR&jZK8?fxG7JLZpy>vrsVnVpIp)~-c>0mZXRuR% zgy|Dt8P^ETjOG(d>b;n{!a_Ya+m&>&vK{d_W76M0^x8wX=F&VOYgKL*tv7o_v4Q$L zv_(RapR}V>v^2x6AjE80@=XXCUogd5$8S3yoFl)C*MwmNN~!Ih=8xqshSnn+8lnf_ z`X(DEbCkT61VW2B!*}Z21IuqV`Ft2OVLvNO4+j;-8*7M^Gs59f$}6kA9E|xJQb2Ie zCwVnBq*>!=lz`d^m}HR4jU32QAW3dvVOD8r6rf%1HeK1T!_xXApS;xGY}#+bSzTK@ zKn`ri&9()*OB5d;-{R4Q$MJ8ODWLi{GBN_;02m>Bv3(S^9Hn;-!Rl=N#@*pmwlh^< zfaHuD95#STLniLY*W240M#}wNnbGvi=gm2?)U&+>Wss-2UDbA1{Z|N`5LEE|H~#^t z-_O_xueL>H+`#&~CJ^{Jbe}3i9jvBqzt9w{bmZ~oKYc|;kXn(fUJ*jgA^Stlw$XKjUb%@BLOPRv)4{GYo3{d9+5tcR&X*T^oz+}b!nnfX9qY&Rg%3Y$%dK+A zG3@Tdt%}XKy_h;u`uZ`5dMY?BwqF&4?oe0{C~^TQJsq@~aU&0VHlj-kxMF&k)L^8M zG*pFDp{Rb2dWF^=t&c%LM}eH){@}l1fW~-Igv3NQ(4L&(oyZfW>WZ)>KaqabU-j}` z_spo){+CzAJ1SxlP+|?e`S&gmk;f1NRJoqA9I-w%#Af#O0fdd?VxWKFm?J;z+JW)=L@M5XDOJu6hyMDC%N0I;B zcd%{`Q8-`9`_8OP;EB@ya%^r~lq#}DMi8&m%GUN{m%aPn;Q|x*D6uU{eK(Omj#WC< zhq3?3pi87KuRXnFEmKnILBjF#t$%LpRi@y_Gj}u?Q$V{N?)~aCwK)I~u+=kVCH&=; zBX6uxQT$&-;{R!7;=juh1hsP{2KgEzUxK)kxlwMh)mtO> zr1q|hv>{Uzt0{H^Ctk@N5flj_O(|G%;ahitu+)AVJx3)#H1iW54}b1= zNVSIkUDtzAsE*U7a5}PTd%#1+d!gb(C^gUyunfTHiX49qD^rTz2I_`0NCwacn+H+`9_Igm*iFWEsyLifNF(#O9P$>Jm4xtm8e z5YzRxE6jAdwm}w5U=(tyWq;ow{bS0-4+IIhjpHbRZU2^CoNtHc|6Jc^` zm*g>hV{D1&Q~f+)T7|<~$8l7w)7Ga)94^et>`Pm@hSifPT<$oC5D{j$V7oBG-r99c zKhXqJ_az$+AOS^m{Mi<<2}M^Jh#`J|P4fNU%#r!Z=GYHoSya_Cx{<>Yl-&CRihHyr ze+mjxzcjP9m(|w#Jh!e-pSnN1*PQkt;qbtotraS>WyCwz2)^G(@_)vYBvQGa2L@TX z%xXxM4DGp(fq6O!bNjPP(&1({Za+VT(@`f!IwE(%eUHB5#f8^iiRfLJfRQW$p~^!0 za1)lmTKd-vE()h7M~e*ZZA6O69S-YCJp(&aa-H2wy-1V4I5rnM8&2?MMKl;zzIID& zi2^mv=U;u48yEAktySPMVh_g`{+e|WTnv0S=E7~^;}$J6G*0$2GL)2Tf`$fv{PfMK z0}o^18PkMC=(D(clOeU4LptLu|9l1KB_2k{LDH{3!^#@dV)uMwcnC?|@l5!d!J1kq z{nE;RKlgA+^j8tvA9&gs8<%d4%!$m3i0VItZW1mgmJRB#uMzNgk|q4Ar`VS)+WNAP zUynE9wS?-$z`8sZW0FH8qCBSwlsq%8e9GMzXgiB0-Bxg)HU5NTP#8R>h;-k}ja&N< zvK0SfRAWBw*XVeOP#^F8Sn#YSVB^d@=2F;K_`RCXr#%c$Y?_W*A!nQnY_P)i}IqZm!mWk6g%DYWfF#N0a|p!y-o+3}6hc~MHZcCe zKc$aduva9{4)L!4=CHJoQGtUK&cFG{BSl+Jke@5(JDJJD&K zcQDQ$(d?F`d%dS*CHCD>t9EU{`AZc5k((uxTOim1;28PS5t4?_-%`RnyfQeJynr+W z2|gxll^dY*Ho_ugU_H#J85=$5pa+6^Y_JBg8YQW?ECA5#T~dRyk- zy>r#2P8_nC^HUP+UyKoCzT=+UzoRnUMn;hL?D^@_*uT#1|0jZjiv3%AKj7zNWoe1T z2fMnuZtXvR3*=8i`dpP1l>(@`edm!IROI7}!ydT++OZY}s@Q1U+Z#WW=?vvfBggPxli@fj5>IB_VP>%Y3XQ4? z>OHxt!Pz*5&;BowQ`GGP5HMbo7;CCr!|%_?=y`HCv&?mZLfYjw5CHwXh9_PKPzvk1 ze87MD^P)Lo`jncC?=CsTQnSEKVaDG!fXI*eu$Z<-xu3qfvk#@AvM;~+(L4djyFKA& zthpkma!@`+m<@3g{D^t>w=yRUv(cC}Cl%I5uO({V zYNr^m|J7g4Q&#p9T{F8+(DY@t=tPat%b8fa!&`&?m2q(y0fa05p7;4#la*lv&Kn^I z>=mYPhg%11AV7NJ)J4hDlpqr&=r=ZH@1@So#2wXfe5Y@QC{`^pt~DCoc;2q(A$G5Z z@-$wxoG)mGxaj-pj+zjY*S_vr2Y1CyE2o(MU}zHJt#A?6_`x4rubCHsGqEW(kS39S zFhL(JBp!7@m=o#kPEB$4o;Z^ap_r{;v^(UT){H=LSd9`h6H_C$??5L_=$yWOKM5Q! z^6RIRGlNFQ#()f}b*ViFEZOscZegcobQh?g-nC)a3rddR@DPh#0eiIu~kC%I6vgv{1SO`<9b?3^{1hZTW7O z)zD;2)vr3;NYbsyM%b6$_swvfkyzo+s_Pb;wE|AR$Vhvy1aHFZs74~f^vHL`bLFGi zV{2R6%%4B8fde0?zaxF1CiK17K~di^s1CSJ7U)!mBOP%-k5iQYN{GPy(JryW&&Rh9 z)b!=v7tXi9d`R^#VoXXM5p=a%A90UR)kiE{c*NptB;RL z6;i9l85px7W|eO#7{ill3kHYU<_z09~1+iiEY7l05>wYq7TL;zqjoGLQ| zE`&)yo*j+^lE7|_gyDcMj1h2j=T$L^$EM$q2%4Nm#>Y#0dy9b%qz$0x z&!$}wjKrYwi|T$>D6^GV60JYW z*x-LCZpyVH(^)BoDEYpTFaoGuCyD`A!2}tvPLnH5zo0>#s4wQ#(fB_Q1A$kISYzQv z?E+uQCl^g(|7U*BTwQ7b*#Vu4{VO#auj9IKi(JgJmhJcVW3ubabJ|}OJQFsXS8dRz zSsSw;lQqU*URdkgV*k-lH-c>k`w!}a%lH4FK6p)MJ--UoywH)vRbC4M5C;kxeA|qz zxf{=%B|n{gYjqLx)ChAt9H1LI^KuXp>8z+-ZY~4g@b75wrj(CGKuUVhf`-2jRJ2hs zG3`KSJxCWJ);1`(F#B!ybZ3TzogL{i2tX&NA@Q>k!`3_0o`0Tv!lRIOa^j}(-hWl(}-QE%5(7mI4XYj0)O&Hvi*AlFB_W9;;OVa$6Yph?Clod z@P)WTM~)NLXf(JNUon*I&l7E*PrcFgWc)g*^Q`Om)k8Q5zvAuGwHPFi1O>s#0}SNo zx!E(y9>IUllcQz(!k zf!z$ORE>FDc-Nz%xPw-=9?IS7KWVye^eN;l>4Kh#F*-H=xpbFqba7H!>Nahk4xD9- zB2iL2s$;+#J0AAr0Fb3?e5fyGW@w7z%Ghm%feWhnqWwhq|Hh6G{7-g7)v~OY;gfqR z#GqN>o094jw~8ght^su1{4jQ%8+cvJ$6Q0M9+L=hY0!KYhlGP(Ts#eIn1obRieQ?i z)B#o$(tZ%Yc}R1@MMoi|WE}uf3dwvSA3vfak?0F=y#{T<5k4d+2twC&P(h*NDa%Wk zUu+FX;x@qqAXWp|GJy8?cp3r}T&<76&I6iAtAf25l$V5DH%F)3kyZStAqM(SV+G8< zRM4;4YZpG%9*F>MLD^<2USw+atW>;Vruz_el3vAS?s0e>i_VE+yhAZ#$JCR%scBKcMZ1LP9+^ zau^pYAP05}{=!3f-}r~KKo?@T)`SFV*`EJUI73TNp*SS z3lz@fu3O{rA|UMCJmyzU6G4L8-~pNe&kMUg>2OM<0WGl40S|=BxFa}S_&1I&2vw0v zY~&*h!l%gwc<_^#pB#Z5DKAhO7u76(zP1033`_j@L8V{tjB*v~p1N^+Ge{P5UI!0F z@qVK+_!4o$bJAMH$~6m7yTd)`5`|LWWo6O75*j4U^SD!>n3-^&Fc(XtUbwnmHhHVf z6bC$-5Hi8gZ#!vJg>j&80lgA@m%G;VOYi!JlKMMZ3Q!=5PgiktJ ztKw=#%+cbfeU(y$ zT9J&I)w1E{fZ$%>v)(-%M=V^` z-KJ_If6e@Wq-ut!BYW=7nMSUk`ioq&abW_0-@(&>rO+Z>UMx4TSxRn)PAHB0fQvg{ z+tSdL+r3v;AcsBYJYkAxcKF4?IA+@Y!dtTQKJEJz^xJ_io}BKb=|!3Rn+vd@4BCu4 zG#p^sOcXIZdEyUBJIG3g#Q9@@IY=U3pbiJh8%h~PzWQNdwwFw_Kn(8(9zZ2|IP(28 zkuh7EH&l_MRZ*K6IWs$qpz_lj!^8{h8Br+j%gk~282DafwMFT#ny#_v&mKN;@Yyy) zd|Nr@{!Th68Lsk@bDgG$+TX^*cm@fK%LZ+nEcFy6|A2hSmAzf5uSN=Zxk!x;_k%VO&)o49U%5F)EbaVK7T-_1f<} zxz)VBhd&!XaJ=Q345p*31{g6=aov33Ho_Qg>{oa>wnMXU9UF0bdWN~fQ9CIOn{{~b zNGlCDmP%Ca)J2C}VRq&66|dFxnjYUFhg(PJ9=)Nmsb$2uh7lcu1sz39d?_1LT*@Y1 zt-@Sb)2=3aPJX=oNUjR)?Xu*(#qLIyjQH2Dl9_Zw!?VQ|EVC1>mr>B}tc}gsXuoE< zV-`zQ02CmNE&Av|OxKZ%1GkZA7uZdr7T27G0mXv-gD}1s^Y)op@3DQ%8E-(U%{)539I?I}Q+V3s({73KRQcV( zi=}WzJL+c6xbtLBTBatE&hHl3!k*Xpm^-_vJn2o`zxB8_i{Q{ByjfJP=%TJELUlk= zY3COWeYCZ(ymD4m>egwzp53uBl_-BH34ddJr{k@IR%u<2_Zrx48!jTwpi$2DFH5F_ z_i)}Oy-m0E&T38MR%#h4idGL_5?}6W#Q(F`F{VBzM;C$-G1zH!qIN#{qd;oJ8|G`gQsyPjaJ*H?4CSTW zT?s|CaQ5i6Wi4b%fqU|r)WqVm{zSULVw`KcU z^ZkOlfdYqFpj855UH>_oe1%ubGl4LiIQnQ+UEABC^k;0@55KwJFV(MPm5Ip6wKBK8T5`I zKu+0W{^xjvHVHx0`pKoE>GVexJVp}ejiW=rmc=Yra%R-a%_iufd+|z9o|>wSAA5YK z`@-wYN|M`}`^4qm^OW&>Jf&IYJWyvi`*TvyBs8w6lkk+wgWy^V@f3GK>jpUfDjRJ5 zw*d+NJuF^I??cEF-sriA%j`O zJ^1CPUC}E2Hmlh7Q>XTdOzDYf*_&RqfjQowhA%itWh)5TwCIkWCdT=>PFvrxFEpZg z5#qhG1Qt#?rM;#%d;#A@j}EH1jE)l;f|v{=`M7IGz?#@|1ko?AQrD2sx3Fku8bb7QWv= zW{-@qz}f)<1~kL+sT!bK@Ic(0X*GKCyU#|^sy^}aPsW3-%LlX2t`5qD5q_P+IJX&C3Qunsv*)Dx z-VFwce_9${;0C58ea9+?&Zrn$4JLi&A!}CavZ*XEjgXZyoHVB#$bhHxvj`H>{#q+-z9iV>@jU1%*#$C43X@ z0TJtJ4I&A~DDBS=_2iRky$EWdg%bh-Ap;~Dgw6CpaVdvAQ>retW1nn1iM8;DI^U6G zPs;jwu;+93Ke4#*#7<}X_Vtp$xS25^OR|@ChZ1;#6s7f!KF3&fnE8CwEqAh8E&YN= z3xlHeFoZI`klncbCukyqyS-u&dE$U*on0-5o(;*uOgDCZXCFB3<#21Vs{(Zs1JZ4d}$NQ!MIBDLxE{Fpjml4ZxQS36z0c63}AFnHJeHY(Cfwo9_?`OA(Zd|Jx>j=>YP!=Q`8rc}Q{ep!nS~QCL$@7rK zw!!9WP%y}O-_{SQAe&zRW2$3dC(PSDnzyTc`S1$=VuONkFf=0bcg{LhY8=!%;luX` z@`{_^JA&M6$?1t!dW&}$n;P}|xMe9fTgJ!r2}dHTD{!GLkDU_Hyz+Mxue0>~t_^YB z7G?h=+Pz3$P_XEWF*9x0Cl7V7%^LCxDIS$ix+hRiD3hNvk{T3nk*VC*C2odMeDm{Y zvqKi1pKJL|QxOYf6UM+lUF@KP5HvQgE+X9o$3hLzM{TJGjf#Mt5J+tW(o8N#DUFs0 zn}CL9sPSyRA2{x9jKBxnIurCgLx6c4qf%;*12E63)20XMYW2+EN`xd#hQ{Y(r}2{q zcNd*&&woewcAOuqRFZ!O_2;Ql6D&Zuf`d1}h70;DA=!xlVKxFTgoWdf4dzN$OOgI2 zpR3@|&~|eh1aHE^9vtL2NS+R%%sBV_%nbw0-qBKnDauM}KuC!Fxx`y$BI7RTHGW*q z&*a%t&xtJ41y`FrO>R}2D_X``EkEd?>byvb<7zI+S-R?V4&JsB3C#TVJVnOmoV$c+ z5`}PqLol6=Q6LCsqNMz)-||wdMm#HVvJ^TPQhsp#WU(9Cfu2H@g1Y`(&_05O*O$4d zG+dn~0WunDq0Hi&PX#Bn*g7H|39_ihTDXUHH4*Jt#S_6LKUZ^hnUB*HQEEcOVS3zv zH)(G$s3Y8KakMY>O5}_Ch%@#zhq;n`s}=7QmjfjZ4q?*Ous~Ut`veo?(U%UhOxA_3~KJYnHaCqXqh|;c}bE5!~n(x584o|;9 zhm9Dy&mtWShv4n-qo~NpUuK+#oP3{*xSW<>71gejgD>;RDj96BBj8vJlqCta5NK+j zwiDfIir69?dyI%Etlqgl z!fGo6+AdJZe0ONEMBhgUh2wm6Y|>SHjLx6J{CnoOibk!3%G?NYosp&l({fwAdri~b z54Y$~{IkS-4OD+LFZh0jUOkvnp0MRFg3K0aX@NWVRDQd%pAdQWD*&$>q^$!ib|eiX z1RK`jR!6N(bmX?8oc9KIhOkVy0?r%u`Pwh;FRlso(hUy@TclYheM zh1rP{U;1Z?NPPirZQ(Q)4(EhD@lqs{!x!^%b5(eiDF#@pz1+bw;7G~I_h{eg)N#Z0W6qD`ZYR9B4A$4~srmjfHB5MQN5F9|y|Xb! zZ!*8ZRxeF{KHGL(lMs@1U@cc3oazA8+v`Wa z%yV;*DIJB>5#HY9b=rg2gu;vdo`pn3&%joIMUXcvE#2g|WlS6OMXW z*=XH&Uu;8lrKW!+e?rBFxQz5ds_XU!tT>h<>Mz=P`9*?CoXE`@s@;V9C)jBlpQcORKCLvT)W_z5N0xU+*lpty&pNS&_c*)R_cFN$ z=B&}~f|_b}366|vm!9-|#(Zb6$k90Bn+aY*C8A%F@uaS?$@$hcFXHI9IX?QfUs#N9 z`%(JqolpD}^+$<<#V9V*D+P%;af+ZZb|=El&a;lN1&$SdIBZj&=o6a1TUHDziKW~s zZ{MaD)emg3THLBpTns@F!SMd}>)YabkE@tr^N1T)Jmu9^Xq~?i8fU5<%)A!=OlCJb zpQ=!R(&T4#R-zQ=o09Gh2`>yA7i(n?dB%(ESJyEB*j>XXx=>5{ol7`zldp9X!0Vtr zP}67HX9uYX{k(tMGUZ$fSuh_bxiA{_PWLwU)l)2uWl>5@R`OLrO~KEOQsE5c=^C&& zkx#Nv&m2hZ9n%^~D$fpH8zScA6(vL4FY0AH(~}IJ(I^#Q%362IiS!H&fT)qE)`&$c zPld_}_{~8~CAU6tA8FnEFY4YZsE(*z8w?O61eXB89fG^FfuO;HZQL!my9al70tpZ# zxVyW%y9akR&NTVXU+2t!H5W5eGh9$b(JXrR>h87P_pvt9dpRjts^=)$ZOg%(z`H`D zC};-{q6W=JW^=|Oonf*<6P)FU1-8_y{;LlM385j99sw(jyOKqLK2Q1hw-@87hNGY4 zvlbv0r*p{zQto^@X@=`*b!j!xzwMk1xU5X1Y;B(e=+qv<@qRQr0sOepAP*b$@VTd( z=+koR2S$-!2dp*=V^(Hp5!3faLtV>Hx6($Xw`^sn%X5~@iXOVD@-L}|*Wi{L*VElN zK?mL`e4pGMMa4_zNHh8KXVa|9StiAgrK1sqeh#>LNt@Rk2XkrN!%O%jy97=g|CnRy0&Co5x?%749HOi+N-5Nozoh zn!4h0l^~FK2l`ve2h?Xt30anIpFaa`-}|8Eo>Sc=u}(1-&*sx%x<`xB`nSF=peGF9 zoW3^my(bmmPPINsb-s3sXnY@;CJgSKk=1R+mlJ3Iv$gY35ObZrrnk4J^GGc_>?^gu zkYS1TE(p7TRddb6AZxItDoLq1&zC3ui)3mNz!N)^YGuLOTbO3TKj<_Lj`P>KQT8h` z$KeCPl07v;v^XQ@>=TZmpmmxb{3-VClCiezT}=_+7WT;iC!49-e^}p8h#` z;EmA>Iwm=GAKIcC?3KBvj)ex6#b6bHfiUlL9k*7&UDp>(%~8u#59UMGw?;05kB``&I3e+e;YVh9X3Q zcC;J&+UXD6byp2H25DA5<#_SmHO&n$%#R-OjTL`1^E8*0{{9PXoDV<%AvXp<1WbcK z&c;NIqns7?e>Xoyxc>LDtHWOBjN~QK^^F#n zk2uO^!$B4aFwi<*1TBk70NZ(nKyr>=9nP5Qgo?-G^@$UrS3?UeJ(D$iN|=Yfnj$M7 z&Ff5rOGoVV)y0wBI#5?JEegncTkrYd*J(@^M|!BC2C5bY=KZAfhsZa2xGcU|0!{eV zV&^z}N@ohx%Nv=Xm@4jc2_J3IEe=o+lv5G!L9}rnegeB%%|`y&K8`JXJCB?BNGO+_ zqK$+8+vVo+>Nhqy+2uep^}|zM%AzazU2Q6NF_oD7p5i?BCC!S^DEVEz1>E0zlTUI* zQg*AXVTY)^>&9KgVNMBUfZNA-ZJPT@8gJ&OlGoNvY!y4O@P`Gmsol4gosZ`0&i;^5 z8VaejZ#h&1l>TXS1UQ%5i(IZdD?y|}#ppfqC#9vrtOYM(kCvmLa?6$UVxOli6F??U z7vwzZzfUE_X1ea_&2vIMnR=W$kh=kA+!Utv@~4Tn8R3=|)bvBTq*7M1eYx2n$ws69 z%7d*x#gj5Lp~68E>Q0QRcb?ruXXcD^w-gY>?2?jOVT`JQG8yi+ZO%J>;u(z!IA~Q} zmj0%9<@mA85T4?_gm1L$EP&G0{V?i|$eFNCtRLqr&w8V#_XwS|s?wdI0y~_(PkJ1c zN`cII=22VeElX-0C)rF6Gl#2p1YK!@&1z~T=wRY5)pYDmAdbiPey&Qm2x#_=hIhug z1KkW!iP}aMWuOwsRmbW1_~?1U#VoH{VNn)6*2*6s(8|;WcVjsJ(_4+f^uy8f!!g%+ z9gM`er(69=CE_JJ@hRQbfkN`McCFs5sNkAUz`xEg#JEEA>=<9d<=Ow>iy@oajVcu? z<3PTVHWB3;PU=FC&IrhxH9F8@$oBN2;}+#pCULsxZg^3sZd})(tlPF_VZ*X{7l%N2 zaq!-3@mroQL4j}&^0}&`3b9)YaKLRdeqgc*enWcoRCscVn)Qd|F zv2BpL@)Tp_?>66^m&`S(^caBH))w*#MCfR=WWL4#5);bIoTpA*SV&l zk;lu1%mAh?0W=6XHJebs^qfK*HoM;eX!>j@`Jsk!pIlt*CExdspsDhAIfV2Ld&D2L zz~0$$!Ky8T)Vj)LNFmi4DO_8;Cd=bPow2-B09|OX2ni#YuiUBU0h~u{V}|$aE4;}J zf72_b_8y1TeHG4fzsT*-bl~eom!?LPnRGW#L8Q+R6sWbuIH6|RrOR)f=~{6Y-mn}- zLWC}o&eQeF5DNwYx5lZmD8&)bc!>ZI&LAYbNdx?U4+i?aK@n%m90e}aE#MYOMLpi# z*K>AA>=_O$S#gzy)RK5EcwUCtP4@NL!|j5@Qt&0HW_#L;K%L{GCs7O-7dc0bn|BFz z&W`pO>fs+)ZuM`m8QRvmAOWvCs{b%uwYOaZ2mXNC`jX-VMs#%D{veJ$lSecg3Hc9^ zldUh7X-^(m0XN_F<9`@z`_RN*-Z5GH5S&Nsk}O*Lv$J!mf3!PC#{Z1>qqviQB+DBxU@ZLy}X z^K!qGVh4UL5dRvAtQrq&D9Cd{dVtV&{HELK_c+-oK_rp9Xpnhd6Xw* z563I`WvMY90wGu*uZT~{FT&+-?;TM^Hoaje1$Vuk#XkT2d!PU#n-sfWGDzi8Dtfgu zcK>MgkIwlzQ2Bqm7I*#+*J6wRkh_6{DT@D_1NeW-!Lcg>Z_s0HZ-DelM+lneN7u6s z_$Cho;3UbkU(KkXm=9XK9i_P=eZ z)&AR-TK|98Qgi%gdjEfQa83US5kOWAsRnYTYZhKB!}sE^muHgi-&E}TEnol(410MRH2{Tqh&-!)k& zXgJIHJr?;&@h^C2y*ca^mfYg}cR<4HjTmb^$$eEo9K`~)S z1o$|srDS|7eE&s5LoEBB%qREP8L~uF8~o1F#x}gIJ&v*`Vuh}Mt0BqBA({_nHxN>y z5C#~XO=~a%;bm@5wlNv<-?0eIb$xd7^<`;`X_4dX?P7|{)a&(qVZ(bA=kmOnvwd?d z9*z6Ps*_0J#TjOi8Naxhu|Tmw?DlJnR$VKXf{0Q9Ivze zS9kqKQ5vdvngdB$kgeFT_j`)FkcK35eoUrEJ}k#fra>0&17RMp70^FCryzAOV3#G8sV^vBz9EAyR!1+ zFoJfg-eIu8YQ}40hj6>?(K}x76__*(>>G^rB^GSBe7wKi)+Mp6H0+(4f|Yrc7`go0 zJ`_~!XtI|2d1C?vKQTnI&SL~eZ=m$kY$Eu4|D2?6j0*Qxt(7dZqN*u{MB!Y-=YcawF7%*xGUh1A4TfhD+>yI8Q zrgp$>djxf)$6h#|?@-o~5u+}n!Ncy0cKVU;mfay!(!XnLaw7!)m^!EP14odwnJe4Ou8 zQ9UkBo;E^!Jo;`_TM6&8J|D-u4-y_6t35v-YrN6%@{p!k(C>2dYoVhcYgucY{BwyU z{;knG0PU^+Q4zuhN0SNqUTqh8vpaJ;7o5a2EGeQW@92xwQw*@@eS@8tUs%BJ1+H^B zW!NgLu_=e>4LvBd81HO9?Q35=Uomn;5%!{*$mX_{yk8sOM(tI>Gt8FED&Gr5d9#w`9hoO(p z;G5XgTj%7j%`LbtW+Ni>Q_(MUeC-9$scIfhmmhT3k&ir)NFJQwva;m3B^y@Z$GYZJ9Ed*R;7czj5Bwyf9Rgs z&^-@#8vB@Y;F?)JNIbaytqU~e8zw4qX7UJ!uJPEl2%Ca?OsJ_0Ue!Iw%dJm|)7D9| zP^fbuS}#bB+ca4IeXRLxMRfJGvL$5GW##rG6P=AJydXa@wvv|C_xzHVYl)WnwGy+X zP9pEi0@SsM#Vl<)2PW=I2TNu*3&+&`uBse?ExzQ2Um=dLkRmZx7`OpEJf{wXH~y3L z4rzpsJ&z6bk-F1$TuP2umhq>QR^M8NN&wG!MdmYwtIDQb5zH!R%X3pQRB}NgnE1i8 zrgOopkxH)tqvrxsSaP%vbP}t77oM(#0@X27>ITGn59-u1Ja_FKT%b?|Vn%`*1q|VC z@b@l=x5CwL@wsRlPOHqpT|KGKas0bari_6eqszUqX+2Z&Dlgx`YpTaiRQTT9e#p4F zj1MW;EpC2MAzElUAgp!_sE*4)RCD=)LRAY2+yK3pF}fT+qm1L4Yg^G3=gh@p4yT;y z*|f`xu2YK3u2bcg3I5Hp_0YAJ4ozY%hHmwjtJK|j17xZwJKHIhu2kklVW5W<(+0g( z5$`%Q=mwc$TDa+0dvklB%tUvDO+&SpzQ0W@Yuq!6oy%FbWhqazzc$>X{XjJsrIjb& zAIOs0{MdIl&4|JUu_W1>$Wr=xRP?!#4T(%0m!o>x?s(Vc`#$WB(7DecZ4Cr zBygCmJl@Dn>T@d(SuVD`2s?mf4DwHS_;7g(Lp#5;OuLtVTZbC^iNTt+8~W+I~O%(PJQQxU3@F7=#Rs;$I68jTME3g0X`voDT}NjLh{f% ztSZww97WAljjfgA4pa)=9rH@$G0xpD8M7kG9?Q3qoz^w+-{8wkQN91v$=vhnJkCoU zp(cEYc{;?7#z1!_>+6q%B%r@68r>HwMi3MI$gPgOxpje}#(`meD~o`DvH9~|{&#JBaZl`sbtheHF63&x8V&3a z$GGQOHE|v|cKoPnquZZvTN6EDmCEn~(Vcc@oB*y*=+k}Nd>IqKcaQ-}9?+v4>yqI7 zkgQ>_Q!mh55H2(lG|3;XOWbLr@8+|FQ@`tRYD-5cZIn12ibG|SbJNAPmo+2EfA2J?rV9=lua=6& z*^C+N&tdAH>h^n>!1TxqN?KnG(YNO9PW%{J{wmt|mFJn9O0Nio>SG1vJd1B7c}cSI zHQ_lFTzyEiL>Jck1~H7Fh5C&4J8?)hs4?q$s>xR!aKXk7SCua@qyi+UcR9^Wr3ZR+;E@35h@ zEo}zG9nU)YKY@i%ayK|Lp$*-tfi?ZE*f{aUNbNIVPrg`QmQ7xlK7B}s6`&W=mEUN} zH-sL3XqG*0Xm%5#faW0?s zxg!bmbz9z8Jcl^*@R@U0$LcAfh#A%o6mbEdFHP}6lr23dsY9eYxM5K$?`i9&6FH=xRKWSA?SNM3U{4WyfCNqg{ z9Bk9?==s{dd#9Sjufw8^A$56fUT!8H;yFN3k)>@(&1q% zcef)Xu-6$DE#dXp`CpS~n{eWw5#x@Cpm%}CdF**83?yx?bd-M6Y>M z1mKNs=I$-wk7D%qcW?&Qx-@O9q#~xr#z24O-#MfUwv&UiZ zdLSK70gt`kTA&x`^yes<-uMdP^c-yN9}_9Ch-Y*W4L#YUdN$t|Swp!jNHx?Lh75gIzI8Azky#ug$YP9d;KZ*pli4~Or<34Kk}KLLHP~W#V|b6a`l4dqm-IF=vM=PV-2Ir{wFQzm zlAcp+gB$tflA7HH(<9IOESIkBp5|uyoK;#*!HX$GS{{2j|G&6t_+eUaHY={V-uPUb zHwYt_T@#l81jLF4k)rGQhb1VcR&wt&`i9GgKUpyMOQAL=y--|kpn)9v9XoLTqAioQ zoPyEEBE+OPjQ7hMdiT@D#mkkx*i%g)^Wy|ak9!6k_xpTtON?*ea@v zw&+KYx8sAX48ax&88m%T2pshce@1NQsn7iweTJ97kPmmuaa7lcv0MgR3URB;Zv9%6 zLBu)$T8>3N2u&4vEnTWV8xe{9W^mH$b88@kCR+9Ao7-J!sKeRn6CXUrLym_0zBuYz zonYs}YIrkm8)+}p9`2z!g*$b8^M+GA!n`FY(NOt1wmB1ZMfSV?OX&|+=ylu;OXvLT zy*taKV`-{Gkcl4r7u19fW@>VC)leiCmh7_7Q=z*BP_rBw(MAYMH7`jhcb{wt`ovky z9*MhNFv?-)28ppbhIsqujw$?aXM2y|&=2dXUkW;taAV>06wUr%goa!pd6ARj654c3 z#@-2wUi*-dwG*j}If~Aeu7*?uq{RH3GIRe9KzyFZihM51?%47mZvVuW8!MAl=Ee?| zR)z+e+4XeHGLlvs8Jvjf;4pS`ImrS+!OGE}g~KwOdb)xfU-~_2>o>we!!W>%00h5K0#qK1eE$=1BBuQ>#EF+P;^6m@hqK2=!LUtFL_yxZ z;BkFkA8Q)2y|HUlT5e|A(Xl=y5c7@IdZ4UeIi-Vz{nOPSfQdz+$C(gy%En{!*K!fwKmu zON@B3w0`yLW{uGuEn?-37tnmFa7twj%hU;ITlmfeC*^<>&-v$0lh=BTEQjPrv+Vmj z@I8L6tTTr0iT+{ZHCEj%iqu17edoJ`uUChbNv95*87aaCDVdrBYNDN8$T*sJ_02i8 zZK7XWOemm3+A;L?Q)<4C{TX#I-cqkW&;A1RvknAvxBgbAF>>|~e8o>V`b1({*m2#Z zJ=`n+gj7ye;#4iPgkmGTv;Cvj%Fg#3631gD@SbZY&O11n&qlh_+I`_31c(SZYz69nuG+0riK%n3 znMP)9XSEC;T&1WXVj#k=Z}Hp{zFLZ$?~ix$$H@9#hrg<1oMU=9MiCBf{(@ z(6gS{&uS+nWJFkLLk-RTzL**~ug}t!s@SL4T6Ay|KXKi_jCwO)>QB1n?x4EF`o4;^q$y~By8!%5%nW+i&@{D%3^j=K|=~WG3T8YK&hmC_V1rE|RcRbidVX zq}8PKEa0)@%;D!usy&7WB`=sfCFBccbanbqlVdV=YgN&uGzh}u1~rlHpK96 z1Nb|@CUd2OC|B%tH^5Plif~X*2Z)d&z#)KD6r2XPr&X!%w(Rg9{JnVX>qpXXRR_Wi z>HaR&F}HW1^z^rsKdjbTy?`8K{i>R_v$X%op>+24zE-pg&z~`p!J9iWkG+s?m$8F{qK1P>3a0 zwN+kr#S$a&NEsPneFz5{|C1C569=)EIaB71p(B1(HK9(gIHFvdIxZ&x`KT$_<`qZm zQ>X`I&H{Gc)7Y(skR5vJpQcN#$*keYu|E>! z@50&YAtyHRN7ef7(rPcmtcWPzw@P74PAjm{8+^so$?7d!Da!7kE$=+g*w8u+{MOZt zDQhUd3V`@O@#$~Rw3>o?y93YwH5D+aoCSQ@Uvsx+GQm?? z+>>z|{usC53v8fDR`$;ZGRtT3XQn|FyTNNxyEUi~`>pxRrZ{nT5U`KRt$WvIo9pw* z^A4YTCTgds7ws>o=CaQb5CK)W^7c_Y3|w!USaUlB&d5z_)45)37+C@RX`NG(ro?Ti z4_~5!Zns@yCd1IE<$}LC_?Wk76m#IKg_LVlh>9CTMr^@;S%HLcR!?K442EX@lv_A+gPW zcYZ>nuUbgVHanVl z5#&k2j{|Q4cflEgSUJ5e7D3p)hLLko(SQSHKw<>+DS+s6AXs2LU!ItV*gHa4SNY;G zv}4bU*rkVXy+fLAe~LN^aO5lb*wB6~;QCq^1d>m}m;tMBi~m1FjPX_3M}zg}JrzLH z1g0;*T&|+9d}|>*GK0QouiSGWrd`nM9vB{wGav({pXa&P*f86Lu6NrErupb^ zd0?b{wGI3zz{BXQXtoRo_)+LuHG0~+lsIM@5EU(1<@JDVr_S3PF1GiM{;l8KN4-Zl+DrZ(WDU-DioO_N2@19T0N?!!Oje<@MWp2!D4Nagoy zwnpnN8|w~eyen6YA>VKvO_NapGKhOyFH~rc0n|6!Zfh%UfPw!R7!B|#Hxe?YoJ*zh zYY%N)(kuZZkw>MZgdf(9P0!*KJ{6R(0sjM0ys`IHYq52ud8<7k_w2k*<5$H8X^_jE z=`{Aol$6FB`VFIkrVCulssI~q)(fr~VqhzwUEJWC%ZXcvEC5J2fcfrZMgpQ%0FhZX zAa^h2l(Jgt@9#GO0rzlt{v-|V{>QqgwhYZa-PM&YU~*%f5!PPKiE{Bd7{?K(Veum6 zE8o3^4iNd(IClL|u2JHYby$XBMo>T9_Ae!w{hyUlZu&H^YU<8;mm*673i(%+q<;rh z{^B&Mp!pI^Nv3#?-oH6_`v=K3Dp WNfJ?;5=^&ki`$`%$hH9?b;&SJ^=F-oA(dW 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πht14_rM$J^2h#axFV9& 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�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 p(aPI2!1bnu(ITgMjcd_!SE9#AyQt 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 VJG%;zvCRQKX2#cyN-sJ;_&0#vWvKuF literal 0 HcmV?d00001 diff --git a/assets/example_td.png b/assets/example_td.png new file mode 100644 index 0000000000000000000000000000000000000000..8be002dfecdb6a4c76757e5032817b9cc2f95146 GIT binary patch literal 127853 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 P0qL`dv~bZ!P0#-V8L-`J literal 0 HcmV?d00001 diff --git a/assets/example_wc.png b/assets/example_wc.png new file mode 100644 index 0000000000000000000000000000000000000000..622e33ab98223f4bc105f719a1e547431a0c395c GIT binary patch literal 117093 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

09HBIofKA!I6o;yvlb_#~ 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 z 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

EKnapV@tCT_om2N5Js!5_ief$U^7w#o) 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�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 literal 0 HcmV?d00001 diff --git a/assets/example_wd.png b/assets/example_wd.png new file mode 100644 index 0000000000000000000000000000000000000000..8ce20961c2f1f080b4c5c874e37ac20550865a93 GIT binary patch literal 226099 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⪻o5BP+3yOx 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

3+=<;B211qE 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

dstuBe*+Yi+zSh&NZnX`Ib6TmV||{#w@XK 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%0Av|GWCxz8Gfwy0pB^8ur<1W3#{& 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 diff --git a/info.md b/info.md index 4295498..285bcd2 100644 --- a/info.md +++ b/info.md @@ -34,6 +34,54 @@ Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.co **Method 2**: Settings > Devices & Services > Add Integration > **Haier hOn** _If the integration is not in the list, you need to clear the browser cache._ +## Examples +_Click to expand..._ +
+ Washing Machine + +![Washing Machine](assets/example_wm.png) +
+
+ Tumble Dryer + +![Tumble Dryer](assets/example_td.png) +
+
+ Washer Dryer + +![Washer Dryer](assets/example_wd.png) +
+
+ Oven + +![Oven](assets/example_ov.png) +
+
+ Dish Washer + +![Dish Washer](assets/example_dw.png) +
+
+ Air conditioner + +![Air conditioner](assets/example_ac.png) +
+
+ Fridge + +![Fridge](assets/example_ref.png) +
+
+ Wine Cellar + +![Wine Cellar](assets/example_wc.png) +
+
+ Air Purifier + +![Air Purifier](assets/example_ap.png) +
+ ## Supported Models Support has been confirmed for these **73 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). @@ -88,14 +136,9 @@ The apps on this (incomplete) list have been requested so far: | Haier Uhome | China | :x: | [banto6/haier](https://github.com/banto6/haier) | | Haier U+ | China | :x: | | | GE SmartHQ | North America | :x: | [simbaja/ha_gehome](https://github.com/simbaja/ha_gehome) | - -## Examples -### Washing Machine -![washing_machine.png](assets/washing_machine.png) +| Haier Evo | Russia | :x: | | ## Contribute - - Want to help us to support more appliances? Or add more sensors? Or help with translating? Or beautify some icons or captions? Check out the [project on GitHub](https://github.com/Andre0512/hon), every contribution is welcome! -- 2.39.5 From 7c8f7e62db5b7f94f399796c772a392585676fce Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Fri, 6 Oct 2023 01:33:23 +0200 Subject: [PATCH 185/205] Try to fix #117 --- README.md | 6 +++--- custom_components/hon/manifest.json | 4 ++-- info.md | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 7d92804..1221b74 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.co [![Supported Languages](https://img.shields.io/badge/Languages-19-royalblue)](https://github.com/Andre0512/hon#supported-languages) [![Supported Appliances](https://img.shields.io/badge/Appliances-11-forestgreen)](https://github.com/Andre0512/hon#supported-appliances) -[![Supported Models](https://img.shields.io/badge/Models-73-yellowgreen)](https://github.com/Andre0512/hon#supported-models) +[![Supported Models](https://img.shields.io/badge/Models-74-yellowgreen)](https://github.com/Andre0512/hon#supported-models) [![Supported Entities](https://img.shields.io/badge/Entities-315-crimson)](https://github.com/Andre0512/hon#appliance-features) ## Supported Appliances @@ -94,11 +94,11 @@ _Click to expand..._ ## Supported Models -Support has been confirmed for these **73 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +Support has been confirmed for these **74 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). | | **Haier** | **Hoover** | **Candy** | |---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| -| **Washing Machine** | HW80-B14959TU1DE
HW80-B14959TU1IT
HW80-B14979TU1
HW90-B14TEAM5
HW90-B14959S8U1
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80
HWE 49AMBS/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | +| **Washing Machine** | HW80-B14959TU1DE
HW80-B14959TU1IT
HW80-B14979TU1
HW90-B14TEAM5
HW90-B14959S8U1
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80
HW 411AMBCB/1-80
HWE 49AMBS/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | | **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5
HD90-A2959
HD90-A2959S | H9A3TCBEXS-S
HLE9A2TCE-80
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S
ROE H10A2TCE-07 | | **Washer Dryer** | HWD80-B14979U1
HWD100-B14979
HWD100-B14978 | HD 485AMBB/1-S
HD 495AMC/1-S
HD 4106AMC/1-80
HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | | **Oven** | HWO60SM2F3XH | HSOT3161WG | | diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 6dd2292..d2d19b4 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -9,7 +9,7 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": [ - "pyhOn==0.15.8" + "pyhOn==0.15.9" ], - "version": "0.10.0" + "version": "0.10.1-beta.1" } diff --git a/info.md b/info.md index 285bcd2..e9d6fb8 100644 --- a/info.md +++ b/info.md @@ -11,7 +11,7 @@ Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.co [![Supported Languages](https://img.shields.io/badge/Languages-19-royalblue)](https://github.com/Andre0512/hon#supported-languages) [![Supported Appliances](https://img.shields.io/badge/Appliances-11-forestgreen)](https://github.com/Andre0512/hon#supported-appliances) -[![Supported Models](https://img.shields.io/badge/Models-73-yellowgreen)](https://github.com/Andre0512/hon#supported-models) +[![Supported Models](https://img.shields.io/badge/Models-74-yellowgreen)](https://github.com/Andre0512/hon#supported-models) [![Supported Entities](https://img.shields.io/badge/Entities-315-crimson)](https://github.com/Andre0512/hon#appliance-features) ## Supported Appliances @@ -83,11 +83,11 @@ _Click to expand..._ ## Supported Models -Support has been confirmed for these **73 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +Support has been confirmed for these **74 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). | | **Haier** | **Hoover** | **Candy** | |---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| -| **Washing Machine** | HW80-B14959TU1DE
HW80-B14959TU1IT
HW80-B14979TU1
HW90-B14TEAM5
HW90-B14959S8U1
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80
HWE 49AMBS/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | +| **Washing Machine** | HW80-B14959TU1DE
HW80-B14959TU1IT
HW80-B14979TU1
HW90-B14TEAM5
HW90-B14959S8U1
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80
HW 411AMBCB/1-80
HWE 49AMBS/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | | **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5
HD90-A2959
HD90-A2959S | H9A3TCBEXS-S
HLE9A2TCE-80
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S
ROE H10A2TCE-07 | | **Washer Dryer** | HWD80-B14979U1
HWD100-B14979
HWD100-B14978 | HD 485AMBB/1-S
HD 495AMC/1-S
HD 4106AMC/1-80
HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | | **Oven** | HWO60SM2F3XH | HSOT3161WG | | -- 2.39.5 From 358340e81841d33572f288f5bcd8d5fd63b5d023 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Fri, 6 Oct 2023 18:18:45 +0200 Subject: [PATCH 186/205] Add donation options --- README.md | 14 +++++++++++--- info.md | 13 ++++++++++--- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 1221b74..6c2540c 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,10 @@ # Haier hOn [![hacs_badge](https://img.shields.io/badge/HACS-Default-41BDF5.svg)](https://hacs.xyz) +[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-donate-orange.svg)](https://www.buymeacoffee.com/andre0512) +[![GitHub](https://img.shields.io/github/license/Andre0512/hon?color=red)](https://github.com/Andre0512/hon/blob/main/LICENSE) [![GitHub release (latest by date)](https://img.shields.io/github/v/release/Andre0512/hon?color=green)](https://github.com/Andre0512/hon/releases/latest) -[![PyPI](https://img.shields.io/pypi/v/pyhon?label=pyhOn)](https://github.com/Andre0512/pyhOn) -[![GitHub](https://img.shields.io/github/license/Andre0512/hon?color=red)](https://github.com/Andre0512/hon/blob/main/LICENSE) -[![GitHub all releases](https://img.shields.io/github/downloads/Andre0512/hon/total?color=blue)](https://tooomm.github.io/github-release-stats/?username=Andre0512&repository=hon) +[![GitHub all releases](https://img.shields.io/github/downloads/Andre0512/hon/latest/total?color=blue&label=downloads)](https://tooomm.github.io/github-release-stats/?username=Andre0512&repository=hon) +[![GitHub all releases](https://img.shields.io/github/downloads/Andre0512/hon/total?color=blue&label=total%20downloads)](https://tooomm.github.io/github-release-stats/?username=Andre0512&repository=hon) --- @@ -206,6 +207,13 @@ For every device exists a button under diagnostics which can be used to log all - to everyone who contributed, created an issue, gave this repo a star, and used this integration. - to the patience of my girlfriend as I work on this integration. +## Support +If you find this project helpful and would like to support its development, you can buy me a coffee! ☕ + +[!["Buy Me A Coffee"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/andre0512) + +Don't forget to star the repository if you found it useful! ⭐ + ## Appliance Features ### Air Conditioner diff --git a/info.md b/info.md index e9d6fb8..bbf73ca 100644 --- a/info.md +++ b/info.md @@ -1,7 +1,7 @@ # Haier hOn -[![GitHub release (latest by date)](https://img.shields.io/github/v/release/Andre0512/hon?color=green)](https://github.com/Andre0512/hon/releases/latest) +[![GitHub all releases](https://img.shields.io/github/downloads/Andre0512/hon/total?color=blue&label=total%20downloads)](https://tooomm.github.io/github-release-stats/?username=Andre0512&repository=hon) [![GitHub](https://img.shields.io/github/license/Andre0512/hon?color=red)](https://github.com/Andre0512/hon/blob/main/LICENSE) -[![GitHub all releases](https://img.shields.io/github/downloads/Andre0512/hon/total?color=blue)](https://tooomm.github.io/github-release-stats/?username=Andre0512&repository=hon) +[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-donate-orange.svg)](https://www.buymeacoffee.com/andre0512) --- @@ -143,8 +143,15 @@ Want to help us to support more appliances? Or add more sensors? Or help with tr Check out the [project on GitHub](https://github.com/Andre0512/hon), every contribution is welcome! ## Useful Links -* [GitHub repository](https://github.com/Andre0512/hon) (please add a star if you like this integration!) +* [GitHub repository](https://github.com/Andre0512/hon) * [pyhOn library](https://github.com/Andre0512/pyhOn) * [Release notes](https://github.com/Andre0512/hon/releases) * [Discussion and help](https://github.com/Andre0512/hon/discussions) * [Issues](https://github.com/Andre0512/hon/issues) + +## Support +If you find this project helpful and would like to support its development, you can buy me a coffee! ☕ + +[!["Buy Me A Coffee"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/andre0512) + +Don't forget to star the repository if you found it useful! ⭐ -- 2.39.5 From bb780c853d529f3c2cab4ed5f9feea84afbea48b Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Thu, 12 Oct 2023 22:35:55 +0200 Subject: [PATCH 187/205] Update supported appliances --- README.md | 37 +++++++++++++++++++------------------ info.md | 32 ++++++++++++++++---------------- 2 files changed, 35 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index 6c2540c..7457cc8 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ # Haier hOn -[![hacs_badge](https://img.shields.io/badge/HACS-Default-41BDF5.svg)](https://hacs.xyz) -[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-donate-orange.svg)](https://www.buymeacoffee.com/andre0512) -[![GitHub](https://img.shields.io/github/license/Andre0512/hon?color=red)](https://github.com/Andre0512/hon/blob/main/LICENSE) +[![hacs_badge](https://img.shields.io/badge/hacs-Default-41BDF5.svg)](https://hacs.xyz) +[![GitHub](https://img.shields.io/github/license/Andre0512/hon?color=red)](https://github.com/Andre0512/hon/blob/main/LICENSE) +[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/Andre0512/hon/python_check.yml?branch=main&label=checks)](https://github.com/Andre0512/hon/actions/workflows/python_check.yml) +[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-donate-orange.svg)](https://www.buymeacoffee.com/andre0512) [![GitHub release (latest by date)](https://img.shields.io/github/v/release/Andre0512/hon?color=green)](https://github.com/Andre0512/hon/releases/latest) [![GitHub all releases](https://img.shields.io/github/downloads/Andre0512/hon/latest/total?color=blue&label=downloads)](https://tooomm.github.io/github-release-stats/?username=Andre0512&repository=hon) [![GitHub all releases](https://img.shields.io/github/downloads/Andre0512/hon/total?color=blue&label=total%20downloads)](https://tooomm.github.io/github-release-stats/?username=Andre0512&repository=hon) @@ -14,7 +15,7 @@ Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.co [![Supported Languages](https://img.shields.io/badge/Languages-19-royalblue)](https://github.com/Andre0512/hon#supported-languages) [![Supported Appliances](https://img.shields.io/badge/Appliances-11-forestgreen)](https://github.com/Andre0512/hon#supported-appliances) -[![Supported Models](https://img.shields.io/badge/Models-74-yellowgreen)](https://github.com/Andre0512/hon#supported-models) +[![Supported Models](https://img.shields.io/badge/Models-76-yellowgreen)](https://github.com/Andre0512/hon#supported-models) [![Supported Entities](https://img.shields.io/badge/Entities-315-crimson)](https://github.com/Andre0512/hon#appliance-features) ## Supported Appliances @@ -95,21 +96,21 @@ _Click to expand..._ ## Supported Models -Support has been confirmed for these **74 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +Support has been confirmed for these **76 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). -| | **Haier** | **Hoover** | **Candy** | -|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| -| **Washing Machine** | HW80-B14959TU1DE
HW80-B14959TU1IT
HW80-B14979TU1
HW90-B14TEAM5
HW90-B14959S8U1
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80
HW 411AMBCB/1-80
HWE 49AMBS/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | -| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5
HD90-A2959
HD90-A2959S | H9A3TCBEXS-S
HLE9A2TCE-80
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S
ROE H10A2TCE-07 | -| **Washer Dryer** | HWD80-B14979U1
HWD100-B14979
HWD100-B14978 | HD 485AMBB/1-S
HD 495AMC/1-S
HD 4106AMC/1-80
HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | -| **Oven** | HWO60SM2F3XH | HSOT3161WG | | -| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | -| **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS25TEDHRA(M1)
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1) | | CY-12TAIN | -| **Fridge** | HFW7720ENMB
HFW7819EWMP
HSW59F18EIPT | | CCE4T620EWU
CCE4T618EW | -| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | -| **Hood** | HADG6DS46BWIFI | | | -| **Wine Cellar** | HWS247FDU1 | | | -| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011 | | +| | **Haier** | **Hoover** | **Candy** | +|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| +| **Washing Machine** | HW80-B14959TU1DE
HW80-B14959TU1IT
HW80-B14979TU1
HW90-B14TEAM5
HW90-B14959S8U1
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H7W 412MBCR-80
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80
HW 411AMBCB/1-80
HWE 49AMBS/1-S
HW4 37AMBS/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | +| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5
HD90-A2959
HD90-A2959S | H9A3TCBEXS-S
HLE9A2TCE-80
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S
ROE H10A2TCE-07 | +| **Washer Dryer** | HWD80-B14979U1
HWD100-B14979
HWD100-B14978 | HD 485AMBB/1-S
HD 495AMC/1-S
HD 4106AMC/1-80
HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | +| **Oven** | HWO60SM2F3XH | HSOT3161WG | | +| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | +| **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS25TEDHRA(M1)
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1) | | CY-12TAIN | +| **Fridge** | HFW7720ENMB
HFW7819EWMP
HSW59F18EIPT | | CCE4T620EWU
CCE4T618EW | +| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | +| **Hood** | HADG6DS46BWIFI | | | +| **Wine Cellar** | HWS247FDU1 | | | +| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011 | | | Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data).
This helps us to develop new features and not to break compatibility in newer versions. | |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| diff --git a/info.md b/info.md index bbf73ca..91abdba 100644 --- a/info.md +++ b/info.md @@ -4,14 +4,14 @@ [![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-donate-orange.svg)](https://www.buymeacoffee.com/andre0512) --- - +H7W4 48MBC-S Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.com/) based on [pyhOn](https://github.com/Andre0512/pyhon). --- [![Supported Languages](https://img.shields.io/badge/Languages-19-royalblue)](https://github.com/Andre0512/hon#supported-languages) [![Supported Appliances](https://img.shields.io/badge/Appliances-11-forestgreen)](https://github.com/Andre0512/hon#supported-appliances) -[![Supported Models](https://img.shields.io/badge/Models-74-yellowgreen)](https://github.com/Andre0512/hon#supported-models) +[![Supported Models](https://img.shields.io/badge/Models-76-yellowgreen)](https://github.com/Andre0512/hon#supported-models) [![Supported Entities](https://img.shields.io/badge/Entities-315-crimson)](https://github.com/Andre0512/hon#appliance-features) ## Supported Appliances @@ -83,21 +83,21 @@ _Click to expand..._ ## Supported Models -Support has been confirmed for these **74 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +Support has been confirmed for these **76 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). -| | **Haier** | **Hoover** | **Candy** | -|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| -| **Washing Machine** | HW80-B14959TU1DE
HW80-B14959TU1IT
HW80-B14979TU1
HW90-B14TEAM5
HW90-B14959S8U1
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80
HW 411AMBCB/1-80
HWE 49AMBS/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | -| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5
HD90-A2959
HD90-A2959S | H9A3TCBEXS-S
HLE9A2TCE-80
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S
ROE H10A2TCE-07 | -| **Washer Dryer** | HWD80-B14979U1
HWD100-B14979
HWD100-B14978 | HD 485AMBB/1-S
HD 495AMC/1-S
HD 4106AMC/1-80
HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | -| **Oven** | HWO60SM2F3XH | HSOT3161WG | | -| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | -| **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS25TEDHRA(M1)
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1) | | CY-12TAIN | -| **Fridge** | HFW7720ENMB
HFW7819EWMP
HSW59F18EIPT | | CCE4T620EWU
CCE4T618EW | -| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | -| **Hood** | HADG6DS46BWIFI | | | -| **Wine Cellar** | HWS247FDU1 | | | -| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011 | | +| | **Haier** | **Hoover** | **Candy** | +|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| +| **Washing Machine** | HW80-B14959TU1DE
HW80-B14959TU1IT
HW80-B14979TU1
HW90-B14TEAM5
HW90-B14959S8U1
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H7W 412MBCR-80
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80
HW 411AMBCB/1-80
HWE 49AMBS/1-S
HW4 37AMBS/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | +| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5
HD90-A2959
HD90-A2959S | H9A3TCBEXS-S
HLE9A2TCE-80
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S
ROE H10A2TCE-07 | +| **Washer Dryer** | HWD80-B14979U1
HWD100-B14979
HWD100-B14978 | HD 485AMBB/1-S
HD 495AMC/1-S
HD 4106AMC/1-80
HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | +| **Oven** | HWO60SM2F3XH | HSOT3161WG | | +| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | +| **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS25TEDHRA(M1)
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1) | | CY-12TAIN | +| **Fridge** | HFW7720ENMB
HFW7819EWMP
HSW59F18EIPT | | CCE4T620EWU
CCE4T618EW | +| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | +| **Hood** | HADG6DS46BWIFI | | | +| **Wine Cellar** | HWS247FDU1 | | | +| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011 | | | Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data).
This helps us to develop new features and not to break compatibility in newer versions. | |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -- 2.39.5 From ae7f713c9af7717079f7861b049f2b15fd636067 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sat, 21 Oct 2023 15:54:04 +0200 Subject: [PATCH 188/205] Update supported models --- README.md | 31 ++++++++++++++++--------------- info.md | 30 +++++++++++++++--------------- 2 files changed, 31 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index 7457cc8..ae5c412 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.co [![Supported Languages](https://img.shields.io/badge/Languages-19-royalblue)](https://github.com/Andre0512/hon#supported-languages) [![Supported Appliances](https://img.shields.io/badge/Appliances-11-forestgreen)](https://github.com/Andre0512/hon#supported-appliances) -[![Supported Models](https://img.shields.io/badge/Models-76-yellowgreen)](https://github.com/Andre0512/hon#supported-models) +[![Supported Models](https://img.shields.io/badge/Models-101-yellowgreen)](https://github.com/Andre0512/hon#supported-models) [![Supported Entities](https://img.shields.io/badge/Entities-315-crimson)](https://github.com/Andre0512/hon#appliance-features) ## Supported Appliances @@ -96,21 +96,22 @@ _Click to expand..._ ## Supported Models -Support has been confirmed for these **76 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +Support has been confirmed for these **101 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). -| | **Haier** | **Hoover** | **Candy** | -|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| -| **Washing Machine** | HW80-B14959TU1DE
HW80-B14959TU1IT
HW80-B14979TU1
HW90-B14TEAM5
HW90-B14959S8U1
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H7W 412MBCR-80
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80
HW 411AMBCB/1-80
HWE 49AMBS/1-S
HW4 37AMBS/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | -| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5
HD90-A2959
HD90-A2959S | H9A3TCBEXS-S
HLE9A2TCE-80
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S
ROE H10A2TCE-07 | -| **Washer Dryer** | HWD80-B14979U1
HWD100-B14979
HWD100-B14978 | HD 485AMBB/1-S
HD 495AMC/1-S
HD 4106AMC/1-80
HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | -| **Oven** | HWO60SM2F3XH | HSOT3161WG | | -| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | -| **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS25TEDHRA(M1)
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1) | | CY-12TAIN | -| **Fridge** | HFW7720ENMB
HFW7819EWMP
HSW59F18EIPT | | CCE4T620EWU
CCE4T618EW | -| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | -| **Hood** | HADG6DS46BWIFI | | | -| **Wine Cellar** | HWS247FDU1 | | | -| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011 | | + +| | **Haier** | **Hoover** | **Candy** | +|---------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| +| **Washing Machine** | HW80-B14959TU1
HW80-B14959S8U1S
HW80-B14979TU1
HW90-B14TEAM5
HW90-B14959U1
HW90-B14959S8U1
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H7W 412MBCR-80
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 28AMBS/1-S
HW 410AMBCB/1-80
HW 411AMBCB/1-80
HWE 49AMBS/1-S
HW 49AMC/1-80
HW4 37AMBS/1-S
HWB 414AMC/1-80
HWPDQ49AMBC/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | +| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5
HD90-A2959
HD90-A3959
HD90-A2959S | H9A3TCBEXS-S
HLE9A2TCE-80
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H10RA2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10TREX-47
CSOE C10DE-80
CSOE H9A2DE-S
ROE H9A3TCEX-S
ROE H10A2TCE-07 | +| **Washer Dryer** | HWD80-B14979U1
HWD100-B14979
HWD100-B14978
HWD100-B14959U1 | HD 485AMBB/1-S
HD 495AMC/1-S
HD 4106AMC/1-80
HDB 5106AMC/1-80
HDQ 496AMBS/1-S
HDP 4149AMBC/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S
RPW4966BWMR/1-S | +| **Oven** | HWO60SM2F3XH | HSOT3161WG | | +| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HDPN 4S603PW/E
HFB 6B2S3FX | | +| **Air Conditioner** | AD71S2SM3FA(H)
AD105S2SM3FA
AS07TS4HRA-M
AS07TS5HRA
AS09TS4HRA-M
AS25PBAHRA
AS25S2SF1FA
AS25TADHRA-2
AS25TEDHRA(M1)
AS25XCAHRA
AS35PBAHRA
AS35S2SF1FA
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1)
AS35XCAHRA
AS50S2SF1FA
AS50S2SF2FA-1
AS50XCAHRA | | CY-12TAIN | +| **Fridge** | HFW7720ENMB
HFW7819EWMP
HSW59F18EIPT | | CCE4T620EB
CCE4T620EWU
CCE4T618EW | +| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | +| **Hood** | HADG6DS46BWIFI | | | +| **Wine Cellar** | HWS247FDU1
HWS42GDAU1 | | | +| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011
HHP70CAH011 | | | Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data).
This helps us to develop new features and not to break compatibility in newer versions. | |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| diff --git a/info.md b/info.md index 91abdba..83d62a8 100644 --- a/info.md +++ b/info.md @@ -11,7 +11,7 @@ Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.co [![Supported Languages](https://img.shields.io/badge/Languages-19-royalblue)](https://github.com/Andre0512/hon#supported-languages) [![Supported Appliances](https://img.shields.io/badge/Appliances-11-forestgreen)](https://github.com/Andre0512/hon#supported-appliances) -[![Supported Models](https://img.shields.io/badge/Models-76-yellowgreen)](https://github.com/Andre0512/hon#supported-models) +[![Supported Models](https://img.shields.io/badge/Models-101-yellowgreen)](https://github.com/Andre0512/hon#supported-models) [![Supported Entities](https://img.shields.io/badge/Entities-315-crimson)](https://github.com/Andre0512/hon#appliance-features) ## Supported Appliances @@ -83,21 +83,21 @@ _Click to expand..._ ## Supported Models -Support has been confirmed for these **76 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +Support has been confirmed for these **101 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). -| | **Haier** | **Hoover** | **Candy** | -|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| -| **Washing Machine** | HW80-B14959TU1DE
HW80-B14959TU1IT
HW80-B14979TU1
HW90-B14TEAM5
HW90-B14959S8U1
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H7W 412MBCR-80
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 410AMBCB/1-80
HW 411AMBCB/1-80
HWE 49AMBS/1-S
HW4 37AMBS/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | -| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5
HD90-A2959
HD90-A2959S | H9A3TCBEXS-S
HLE9A2TCE-80
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10DE-80
ROE H9A3TCEX-S
ROE H10A2TCE-07 | -| **Washer Dryer** | HWD80-B14979U1
HWD100-B14979
HWD100-B14978 | HD 485AMBB/1-S
HD 495AMC/1-S
HD 4106AMC/1-80
HDQ 496AMBS/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S | -| **Oven** | HWO60SM2F3XH | HSOT3161WG | | -| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HFB 6B2S3FX | | -| **Air Conditioner** | AD105S2SM3FA
AS09TS4HRA-M
AS25PBAHRA
AS25S2SF1FA-WH
AS25TADHRA-2
AS25TEDHRA(M1)
AS35PBAHRA
AS35S2SF1FA-WH
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1) | | CY-12TAIN | -| **Fridge** | HFW7720ENMB
HFW7819EWMP
HSW59F18EIPT | | CCE4T620EWU
CCE4T618EW | -| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | -| **Hood** | HADG6DS46BWIFI | | | -| **Wine Cellar** | HWS247FDU1 | | | -| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011 | | +| | **Haier** | **Hoover** | **Candy** | +|---------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| +| **Washing Machine** | HW80-B14959TU1
HW80-B14959S8U1S
HW80-B14979TU1
HW90-B14TEAM5
HW90-B14959U1
HW90-B14959S8U1
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H7W 412MBCR-80
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 28AMBS/1-S
HW 410AMBCB/1-80
HW 411AMBCB/1-80
HWE 49AMBS/1-S
HW 49AMC/1-80
HW4 37AMBS/1-S
HWB 414AMC/1-80
HWPDQ49AMBC/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | +| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5
HD90-A2959
HD90-A3959
HD90-A2959S | H9A3TCBEXS-S
HLE9A2TCE-80
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H10RA2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10TREX-47
CSOE C10DE-80
CSOE H9A2DE-S
ROE H9A3TCEX-S
ROE H10A2TCE-07 | +| **Washer Dryer** | HWD80-B14979U1
HWD100-B14979
HWD100-B14978
HWD100-B14959U1 | HD 485AMBB/1-S
HD 495AMC/1-S
HD 4106AMC/1-80
HDB 5106AMC/1-80
HDQ 496AMBS/1-S
HDP 4149AMBC/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S
RPW4966BWMR/1-S | +| **Oven** | HWO60SM2F3XH | HSOT3161WG | | +| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HDPN 4S603PW/E
HFB 6B2S3FX | | +| **Air Conditioner** | AD71S2SM3FA(H)
AD105S2SM3FA
AS07TS4HRA-M
AS07TS5HRA
AS09TS4HRA-M
AS25PBAHRA
AS25S2SF1FA
AS25TADHRA-2
AS25TEDHRA(M1)
AS25XCAHRA
AS35PBAHRA
AS35S2SF1FA
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1)
AS35XCAHRA
AS50S2SF1FA
AS50S2SF2FA-1
AS50XCAHRA | | CY-12TAIN | +| **Fridge** | HFW7720ENMB
HFW7819EWMP
HSW59F18EIPT | | CCE4T620EB
CCE4T620EWU
CCE4T618EW | +| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | +| **Hood** | HADG6DS46BWIFI | | | +| **Wine Cellar** | HWS247FDU1
HWS42GDAU1 | | | +| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011
HHP70CAH011 | | | Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data).
This helps us to develop new features and not to break compatibility in newer versions. | |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -- 2.39.5 From 16b9215e463e57de68688c925e2bb64724cb58c8 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 20 Nov 2023 00:16:39 +0100 Subject: [PATCH 189/205] Update supported models --- README.md | 30 +++++++++++++++--------------- info.md | 31 ++++++++++++++++--------------- 2 files changed, 31 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index ae5c412..11ad56d 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.co [![Supported Languages](https://img.shields.io/badge/Languages-19-royalblue)](https://github.com/Andre0512/hon#supported-languages) [![Supported Appliances](https://img.shields.io/badge/Appliances-11-forestgreen)](https://github.com/Andre0512/hon#supported-appliances) -[![Supported Models](https://img.shields.io/badge/Models-101-yellowgreen)](https://github.com/Andre0512/hon#supported-models) +[![Supported Models](https://img.shields.io/badge/Models-110-yellowgreen)](https://github.com/Andre0512/hon#supported-models) [![Supported Entities](https://img.shields.io/badge/Entities-315-crimson)](https://github.com/Andre0512/hon#appliance-features) ## Supported Appliances @@ -96,22 +96,22 @@ _Click to expand..._ ## Supported Models -Support has been confirmed for these **101 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +Support has been confirmed for these **110 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). -| | **Haier** | **Hoover** | **Candy** | -|---------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| -| **Washing Machine** | HW80-B14959TU1
HW80-B14959S8U1S
HW80-B14979TU1
HW90-B14TEAM5
HW90-B14959U1
HW90-B14959S8U1
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H7W 412MBCR-80
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 28AMBS/1-S
HW 410AMBCB/1-80
HW 411AMBCB/1-80
HWE 49AMBS/1-S
HW 49AMC/1-80
HW4 37AMBS/1-S
HWB 414AMC/1-80
HWPDQ49AMBC/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | -| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5
HD90-A2959
HD90-A3959
HD90-A2959S | H9A3TCBEXS-S
HLE9A2TCE-80
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H10RA2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10TREX-47
CSOE C10DE-80
CSOE H9A2DE-S
ROE H9A3TCEX-S
ROE H10A2TCE-07 | -| **Washer Dryer** | HWD80-B14979U1
HWD100-B14979
HWD100-B14978
HWD100-B14959U1 | HD 485AMBB/1-S
HD 495AMC/1-S
HD 4106AMC/1-80
HDB 5106AMC/1-80
HDQ 496AMBS/1-S
HDP 4149AMBC/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S
RPW4966BWMR/1-S | -| **Oven** | HWO60SM2F3XH | HSOT3161WG | | -| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HDPN 4S603PW/E
HFB 6B2S3FX | | -| **Air Conditioner** | AD71S2SM3FA(H)
AD105S2SM3FA
AS07TS4HRA-M
AS07TS5HRA
AS09TS4HRA-M
AS25PBAHRA
AS25S2SF1FA
AS25TADHRA-2
AS25TEDHRA(M1)
AS25XCAHRA
AS35PBAHRA
AS35S2SF1FA
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1)
AS35XCAHRA
AS50S2SF1FA
AS50S2SF2FA-1
AS50XCAHRA | | CY-12TAIN | -| **Fridge** | HFW7720ENMB
HFW7819EWMP
HSW59F18EIPT | | CCE4T620EB
CCE4T620EWU
CCE4T618EW | -| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | -| **Hood** | HADG6DS46BWIFI | | | -| **Wine Cellar** | HWS247FDU1
HWS42GDAU1 | | | -| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011
HHP70CAH011 | | +| | **Haier** | **Hoover** | **Candy** | +|---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------| +| **Washing Machine** | HW80-B14959TU1
HW80-B14959S8U1S
HW80-B14979TU1
HW90-B14TEAM5
HW90-B14959U1
HW90-B14959S8U1
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H5WPB447AMBC/1-S
H7W 412MBCR-80
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 28AMBS/1-S
HW 410AMBCB/1-80
HW 411AMBCB/1-80
HW 49AMC/1-80
HW 68AMC/1-80
HW4 37AMBS/1-S
HW4 37XMBB/1-S
HWB 410AMC/1-80
HWB 414AMC/1-80
HWE 49AMBS/1-S
HWP 48AMBCR/1-S
HWPD 69AMBC/1-S
HWPDQ49AMBC/1-S
HWPD 610AMBC/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
RO4H7A2TEX-S
ROW42646DWMC-07
RP 696BWMRR/1-S | +| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5
HD90-A2959
HD90-A3959
HD90-A2959S | HLE H9A2TCE-80
HLE C10DCE-80
NDE H10A2TCE-80
NDE H10RA2TCE-80
NDE H9A2TSBEXS-S
NDP H9A3TCBEXS-S | BCTDH7A1TE
CSOE C10TREX-47
CSOE C10DE-80
CSOE H9A2DE-S
ROE H9A3TCEX-S
ROE H10A2TCE-07 | +| **Washer Dryer** | HWD80-B14979U1
HWD100-B14979
HWD100-B14978
HWD100-B14959U1 | HD 485AMBB/1-S
HD 495AMC/1-S
HD 4106AMC/1-80
HDB 5106AMC/1-80
HDQ 496AMBS/1-S
HDP 4149AMBC/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S
RPW4966BWMR/1-S | +| **Oven** | HWO60SM2F3XH | HSOT3161WG | | +| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HDPN 4S603PW/E
HFB 5B2D3FW
HFB 6B2S3FX | | +| **Air Conditioner** | AD71S2SM3FA(H)
AD105S2SM3FA
AS07TS4HRA-M
AS07TS5HRA
AS09TS4HRA-M
AS25PBAHRA
AS25S2SF1FA
AS25TADHRA-2
AS25TEDHRA(M1)
AS25THMHRA-C
AS25XCAHRA
AS35PBAHRA
AS35S2SF1FA
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1)
AS35XCAHRA
AS50S2SF1FA
AS50S2SF2FA-1
AS50XCAHRA | | CY-12TAIN | +| **Fridge** | HFW7720ENMB
HFW7819EWMP
HSW59F18EIPT
HTW5620DNMG | | CCE4T620EB
CCE4T620EWU
CCE4T618EW | +| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | +| **Hood** | HADG6DS46BWIFI | | | +| **Wine Cellar** | HWS247FDU1
HWS42GDAU1 | | | +| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011
HHP70CAH011 | | | Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data).
This helps us to develop new features and not to break compatibility in newer versions. | |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| diff --git a/info.md b/info.md index 83d62a8..795c3e5 100644 --- a/info.md +++ b/info.md @@ -11,7 +11,7 @@ Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.co [![Supported Languages](https://img.shields.io/badge/Languages-19-royalblue)](https://github.com/Andre0512/hon#supported-languages) [![Supported Appliances](https://img.shields.io/badge/Appliances-11-forestgreen)](https://github.com/Andre0512/hon#supported-appliances) -[![Supported Models](https://img.shields.io/badge/Models-101-yellowgreen)](https://github.com/Andre0512/hon#supported-models) +[![Supported Models](https://img.shields.io/badge/Models-110-yellowgreen)](https://github.com/Andre0512/hon#supported-models) [![Supported Entities](https://img.shields.io/badge/Entities-315-crimson)](https://github.com/Andre0512/hon#appliance-features) ## Supported Appliances @@ -83,21 +83,22 @@ _Click to expand..._ ## Supported Models -Support has been confirmed for these **101 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +Support has been confirmed for these **110 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). -| | **Haier** | **Hoover** | **Candy** | -|---------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| -| **Washing Machine** | HW80-B14959TU1
HW80-B14959S8U1S
HW80-B14979TU1
HW90-B14TEAM5
HW90-B14959U1
HW90-B14959S8U1
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H7W 412MBCR-80
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 28AMBS/1-S
HW 410AMBCB/1-80
HW 411AMBCB/1-80
HWE 49AMBS/1-S
HW 49AMC/1-80
HW4 37AMBS/1-S
HWB 414AMC/1-80
HWPDQ49AMBC/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
HW 68AMC/1-80
HWPD 69AMBC/1-S | -| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5
HD90-A2959
HD90-A3959
HD90-A2959S | H9A3TCBEXS-S
HLE9A2TCE-80
HLE C10DCE-80
H5WPB447AMBC/1-S
NDE H10A2TCE-80
NDE H10RA2TCE-80
NDE H9A2TSBEXS-S
NDPHY10A2TCBEXSS | BCTDH7A1TE
CSOE C10TREX-47
CSOE C10DE-80
CSOE H9A2DE-S
ROE H9A3TCEX-S
ROE H10A2TCE-07 | -| **Washer Dryer** | HWD80-B14979U1
HWD100-B14979
HWD100-B14978
HWD100-B14959U1 | HD 485AMBB/1-S
HD 495AMC/1-S
HD 4106AMC/1-80
HDB 5106AMC/1-80
HDQ 496AMBS/1-S
HDP 4149AMBC/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S
RPW4966BWMR/1-S | -| **Oven** | HWO60SM2F3XH | HSOT3161WG | | -| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HDPN 4S603PW/E
HFB 6B2S3FX | | -| **Air Conditioner** | AD71S2SM3FA(H)
AD105S2SM3FA
AS07TS4HRA-M
AS07TS5HRA
AS09TS4HRA-M
AS25PBAHRA
AS25S2SF1FA
AS25TADHRA-2
AS25TEDHRA(M1)
AS25XCAHRA
AS35PBAHRA
AS35S2SF1FA
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1)
AS35XCAHRA
AS50S2SF1FA
AS50S2SF2FA-1
AS50XCAHRA | | CY-12TAIN | -| **Fridge** | HFW7720ENMB
HFW7819EWMP
HSW59F18EIPT | | CCE4T620EB
CCE4T620EWU
CCE4T618EW | -| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | -| **Hood** | HADG6DS46BWIFI | | | -| **Wine Cellar** | HWS247FDU1
HWS42GDAU1 | | | -| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011
HHP70CAH011 | | + +| | **Haier** | **Hoover** | **Candy** | +|---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------| +| **Washing Machine** | HW80-B14959TU1
HW80-B14959S8U1S
HW80-B14979TU1
HW90-B14TEAM5
HW90-B14959U1
HW90-B14959S8U1
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H5WPB447AMBC/1-S
H7W 412MBCR-80
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 28AMBS/1-S
HW 410AMBCB/1-80
HW 411AMBCB/1-80
HW 49AMC/1-80
HW 68AMC/1-80
HW4 37AMBS/1-S
HW4 37XMBB/1-S
HWB 410AMC/1-80
HWB 414AMC/1-80
HWE 49AMBS/1-S
HWP 48AMBCR/1-S
HWPD 69AMBC/1-S
HWPDQ49AMBC/1-S
HWPD 610AMBC/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
RO4H7A2TEX-S
ROW42646DWMC-07
RP 696BWMRR/1-S | +| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5
HD90-A2959
HD90-A3959
HD90-A2959S | HLE H9A2TCE-80
HLE C10DCE-80
NDE H10A2TCE-80
NDE H10RA2TCE-80
NDE H9A2TSBEXS-S
NDP H9A3TCBEXS-S | BCTDH7A1TE
CSOE C10TREX-47
CSOE C10DE-80
CSOE H9A2DE-S
ROE H9A3TCEX-S
ROE H10A2TCE-07 | +| **Washer Dryer** | HWD80-B14979U1
HWD100-B14979
HWD100-B14978
HWD100-B14959U1 | HD 485AMBB/1-S
HD 495AMC/1-S
HD 4106AMC/1-80
HDB 5106AMC/1-80
HDQ 496AMBS/1-S
HDP 4149AMBC/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S
RPW4966BWMR/1-S | +| **Oven** | HWO60SM2F3XH | HSOT3161WG | | +| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HDPN 4S603PW/E
HFB 5B2D3FW
HFB 6B2S3FX | | +| **Air Conditioner** | AD71S2SM3FA(H)
AD105S2SM3FA
AS07TS4HRA-M
AS07TS5HRA
AS09TS4HRA-M
AS25PBAHRA
AS25S2SF1FA
AS25TADHRA-2
AS25TEDHRA(M1)
AS25THMHRA-C
AS25XCAHRA
AS35PBAHRA
AS35S2SF1FA
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1)
AS35XCAHRA
AS50S2SF1FA
AS50S2SF2FA-1
AS50XCAHRA | | CY-12TAIN | +| **Fridge** | HFW7720ENMB
HFW7819EWMP
HSW59F18EIPT
HTW5620DNMG | | CCE4T620EB
CCE4T620EWU
CCE4T618EW | +| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | +| **Hood** | HADG6DS46BWIFI | | | +| **Wine Cellar** | HWS247FDU1
HWS42GDAU1 | | | +| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011
HHP70CAH011 | | | Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data).
This helps us to develop new features and not to break compatibility in newer versions. | |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -- 2.39.5 From 10bcc486e4d937435cf84de08b5e854ece6d65d7 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 20 Nov 2023 01:15:28 +0100 Subject: [PATCH 190/205] Bump dependencies --- custom_components/hon/manifest.json | 2 +- requirements.txt | 3 +-- requirements_dev.txt | 11 ++++++----- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index d2d19b4..82eb3c4 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -9,7 +9,7 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": [ - "pyhOn==0.15.9" + "pyhOn==0.15.12" ], "version": "0.10.1-beta.1" } diff --git a/requirements.txt b/requirements.txt index 826c706..482d88a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1 @@ -pyhOn -homeassistant +pyhOn==0.15.12 diff --git a/requirements_dev.txt b/requirements_dev.txt index 7404421..9bb8d71 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -1,5 +1,6 @@ -homeassistant~=2023.9.3 -black~=23.7.0 -flake8~=6.0.0 -mypy~=1.4.1 -pylint~=2.17.4 +homeassistant>=2023.11.3 +black>=23.11 +flake8>=6.1 +mypy>=1.7 +pylint>=3.0 +setuptools>=68.2 -- 2.39.5 From c8f45ae4bc14f8487236dc6c1cd8288577e921dc Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 20 Nov 2023 15:47:39 +0100 Subject: [PATCH 191/205] Add more checks --- .github/workflows/python_check.yml | 27 ++++++++++++++++++++++++++- requirements_dev.txt | 11 +++++------ 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/.github/workflows/python_check.yml b/.github/workflows/python_check.yml index 102943c..89e14d3 100644 --- a/.github/workflows/python_check.yml +++ b/.github/workflows/python_check.yml @@ -13,7 +13,31 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.11"] + include: + - home-assistant: "2023.1.0" + python-version: "3.10" + - home-assistant: "2023.2.0" + python-version: "3.10" + - home-assistant: "2023.3.0" + python-version: "3.10" + - home-assistant: "2023.4.0" + python-version: "3.10" + - home-assistant: "2023.5.0" + python-version: "3.10" + - home-assistant: "2023.6.0" + python-version: "3.10" + - home-assistant: "2023.7.0" + python-version: "3.10" + - home-assistant: "2023.7.0" + python-version: "3.11" + - home-assistant: "2023.8.0" + python-version: "3.11" + - home-assistant: "2023.9.0" + python-version: "3.11" + - home-assistant: "2023.10.0" + python-version: "3.11" + - home-assistant: "2023.11.0" + python-version: "3.11" steps: - uses: actions/checkout@v3 @@ -23,6 +47,7 @@ jobs: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | + python -m pip install homeassistant~=${{ matrix.home-assistant }} python -m pip install --upgrade pip python -m pip install -r requirements.txt python -m pip install -r requirements_dev.txt diff --git a/requirements_dev.txt b/requirements_dev.txt index 9bb8d71..153a20d 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -1,6 +1,5 @@ -homeassistant>=2023.11.3 -black>=23.11 -flake8>=6.1 -mypy>=1.7 -pylint>=3.0 -setuptools>=68.2 +black>=22.12 +flake8>=6.0 +mypy>=0.991 +pylint>=2.15 +setuptools>=62.3 -- 2.39.5 From a00b80be95721a500fc2aad84bd4926e01ec526a Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 20 Nov 2023 15:56:24 +0100 Subject: [PATCH 192/205] Fix mypy errors --- custom_components/hon/__init__.py | 2 +- custom_components/hon/config_flow.py | 2 +- requirements_dev.txt | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/custom_components/hon/__init__.py b/custom_components/hon/__init__.py index e95e3b8..a970fc1 100644 --- a/custom_components/hon/__init__.py +++ b/custom_components/hon/__init__.py @@ -1,7 +1,7 @@ import logging from pathlib import Path -import voluptuous as vol # type: ignore[import] +import voluptuous as vol # type: ignore[import-untyped] from homeassistant.config_entries import ConfigEntry from homeassistant.const import CONF_EMAIL, CONF_PASSWORD from homeassistant.helpers import config_validation as cv, aiohttp_client diff --git a/custom_components/hon/config_flow.py b/custom_components/hon/config_flow.py index c1ac7c8..cfaf8d7 100644 --- a/custom_components/hon/config_flow.py +++ b/custom_components/hon/config_flow.py @@ -1,7 +1,7 @@ import logging from typing import Any -import voluptuous as vol # type: ignore[import] +import voluptuous as vol # type: ignore[import-untyped] from homeassistant import config_entries from homeassistant.const import CONF_EMAIL, CONF_PASSWORD from homeassistant.data_entry_flow import FlowResult diff --git a/requirements_dev.txt b/requirements_dev.txt index 153a20d..15f7bba 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -2,4 +2,3 @@ black>=22.12 flake8>=6.0 mypy>=0.991 pylint>=2.15 -setuptools>=62.3 -- 2.39.5 From e67b9ff5b187cc1582d92c141b904a502b544b9d Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 20 Nov 2023 17:35:58 +0100 Subject: [PATCH 193/205] Add fresh zone for ref #126 --- README.md | 27 +++------------------- custom_components/hon/climate.py | 20 ++++++++++++---- custom_components/hon/number.py | 7 ++++++ custom_components/hon/translations/cs.json | 6 +++++ custom_components/hon/translations/de.json | 6 +++++ custom_components/hon/translations/el.json | 6 +++++ custom_components/hon/translations/en.json | 6 +++++ custom_components/hon/translations/es.json | 6 +++++ custom_components/hon/translations/fr.json | 6 +++++ custom_components/hon/translations/he.json | 6 +++++ custom_components/hon/translations/hr.json | 6 +++++ custom_components/hon/translations/it.json | 6 +++++ custom_components/hon/translations/nl.json | 6 +++++ custom_components/hon/translations/pl.json | 6 +++++ custom_components/hon/translations/pt.json | 6 +++++ custom_components/hon/translations/ro.json | 6 +++++ custom_components/hon/translations/ru.json | 6 +++++ custom_components/hon/translations/sk.json | 6 +++++ custom_components/hon/translations/sl.json | 6 +++++ custom_components/hon/translations/sr.json | 6 +++++ custom_components/hon/translations/tr.json | 6 +++++ custom_components/hon/translations/zh.json | 6 +++++ scripts/translation_keys.py | 2 ++ 23 files changed, 141 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index 11ad56d..a97e6cc 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.co [![Supported Languages](https://img.shields.io/badge/Languages-19-royalblue)](https://github.com/Andre0512/hon#supported-languages) [![Supported Appliances](https://img.shields.io/badge/Appliances-11-forestgreen)](https://github.com/Andre0512/hon#supported-appliances) [![Supported Models](https://img.shields.io/badge/Models-110-yellowgreen)](https://github.com/Andre0512/hon#supported-models) -[![Supported Entities](https://img.shields.io/badge/Entities-315-crimson)](https://github.com/Andre0512/hon#appliance-features) +[![Supported Entities](https://img.shields.io/badge/Entities-317-crimson)](https://github.com/Andre0512/hon#appliance-features) ## Supported Appliances - [Washing Machine](https://github.com/Andre0512/hon#washing-machine) @@ -295,19 +295,13 @@ Don't forget to star the repository if you found it useful! ⭐ | Add Dish | `silverware-fork-knife` | `switch` | `startProgram.addDish` | | Delay time | `timer-plus` | `number` | `startProgram.delayTime` | | Eco Express | `sprout` | `switch` | `startProgram.ecoExpress` | -| Eco Index | `sprout` | `sensor` | `startProgram.ecoIndex` | -| Energy Label | `lightning-bolt-circle` | `sensor` | `startProgram.energyLabel` | | Extra Dry | `hair-dryer` | `switch` | `startProgram.extraDry` | | Half Load | `fraction-one-half` | `switch` | `startProgram.halfLoad` | | Open Door | `door-open` | `switch` | `startProgram.openDoor` | | Program | | `select` | `startProgram.program` | | Remaining Time | `timer` | `select` | `startProgram.remainingTime` | | Temperature | `thermometer` | `select` | `startProgram.temp` | -| Temperature | `thermometer` | `sensor` | `startProgram.temp` | | Three in One | `numeric-3-box-outline` | `switch` | `startProgram.threeInOne` | -| Time | `timer` | `sensor` | `startProgram.remainingTime` | -| Water Efficiency | `water` | `sensor` | `startProgram.waterEfficiency` | -| Water Saving | `water-percent` | `sensor` | `startProgram.waterSaving` | | Water hard | `water` | `number` | `startProgram.waterHard` | #### Sensors | Name | Icon | Entity | Key | @@ -404,6 +398,8 @@ Don't forget to star the repository if you found it useful! ⭐ | Freezer Temperature | `thermometer` | `number` | `settings.tempSelZ2` | | Fridge | `thermometer` | `climate` | `settings.tempSelZ1` | | Fridge Temperature | `thermometer` | `number` | `settings.tempSelZ1` | +| MyZone | `thermometer` | `climate` | `settings.tempSelZ3` | +| MyZone Temperature | `thermometer` | `number` | `settings.tempSelZ3` | | Program Start | `play` | `button` | `startProgram` | | Program Stop | `stop` | `button` | `stopProgram` | | Super Cool | `snowflake` | `switch` | `quickModeZ1` | @@ -446,11 +442,8 @@ Don't forget to star the repository if you found it useful! ⭐ | Dry Time | | `number` | `startProgram.dryTime` | | Dry Time | `timer` | `select` | `startProgram.dryTimeMM` | | Dry level | `hair-dryer` | `select` | `startProgram.dryLevel` | -| Energy Label | `lightning-bolt-circle` | `sensor` | `startProgram.energyLabel` | | Program | | `select` | `startProgram.program` | -| Steam Type | `weather-dust` | `sensor` | `steamType` | | Sterilization | `lotion-plus` | `switch` | `startProgram.sterilizationStatus` | -| Suggested Load | `weight-kilogram` | `sensor` | `startProgram.suggestedLoadD` | | Temperature level | `thermometer` | `number` | `startProgram.tempLevel` | | Tumbling | `refresh-circle` | `switch` | `startProgram.tumblingStatus` | #### Sensors @@ -512,29 +505,21 @@ Don't forget to star the repository if you found it useful! ⭐ | Dry Time | | `number` | `startProgram.dryTime` | | Dry Time | `timer` | `select` | `startProgram.dryTimeMM` | | Dry level | `hair-dryer` | `select` | `startProgram.dryLevel` | -| Energy Label | `lightning-bolt-circle` | `sensor` | `startProgram.energyLabel` | | Extra Rinse 1 | `numeric-1-box-multiple-outline` | `switch` | `startProgram.extraRinse1` | | Extra Rinse 2 | `numeric-2-box-multiple-outline` | `switch` | `startProgram.extraRinse2` | | Extra Rinse 3 | `numeric-3-box-multiple-outline` | `switch` | `startProgram.extraRinse3` | | Good Night | `weather-night` | `switch` | `startProgram.goodNight` | | Hygiene | `lotion-plus` | `switch` | `startProgram.hygiene` | | Keep Fresh | `refresh-circle` | `switch` | `startProgram.permanentPressStatus` | -| Liquid Detergent Dose | `cup-water` | `sensor` | `startProgram.liquidDetergentDose` | | Main Wash Time | `clock-start` | `number` | `startProgram.mainWashTime` | -| Powder Detergent Dose | `cup` | `sensor` | `startProgram.powderDetergentDose` | | Prewash | `tshirt-crew` | `switch` | `startProgram.prewash` | | Program | | `select` | `startProgram.program` | -| Remaining Time | `timer` | `sensor` | `startProgram.remainingTime` | | Rinse Iterations | `rotate-right` | `number` | `startProgram.rinseIterations` | | Soak Prewash Selection | `tshirt-crew` | `switch` | `startProgram.haier_SoakPrewashSelection` | | Spin speed | `numeric` | `select` | `startProgram.spinSpeed` | | Stain Type | `liquid-spot` | `select` | `startProgram.extendedStainType` | -| Steam Type | `weather-dust` | `sensor` | `steamType` | | Steam level | `weather-dust` | `select` | `startProgram.steamLevel` | | Sterilization | `lotion-plus` | `switch` | `startProgram.sterilizationStatus` | -| Suggested Load | `weight-kilogram` | `sensor` | `startProgram.suggestedLoadW` | -| Suggested Load | `weight-kilogram` | `sensor` | `startProgram.suggestedLoadD` | -| Suggested weight | `weight-kilogram` | `sensor` | `startProgram.weight` | | Temperature | `thermometer` | `select` | `startProgram.temp` | | Temperature level | `thermometer` | `number` | `startProgram.tempLevel` | | Tumbling | `refresh-circle` | `switch` | `startProgram.tumblingStatus` | @@ -591,26 +576,20 @@ Don't forget to star the repository if you found it useful! ⭐ | Delay Status | `timer-check` | `switch` | `startProgram.delayStatus` | | Delay Time | `timer-plus` | `number` | `startProgram.delayTime` | | Dirty level | `liquid-spot` | `select` | `startProgram.dirtyLevel` | -| Energy Label | `lightning-bolt-circle` | `sensor` | `startProgram.energyLabel` | | Extra Rinse 1 | `numeric-1-box-multiple-outline` | `switch` | `startProgram.extraRinse1` | | Extra Rinse 2 | `numeric-2-box-multiple-outline` | `switch` | `startProgram.extraRinse2` | | Extra Rinse 3 | `numeric-3-box-multiple-outline` | `switch` | `startProgram.extraRinse3` | | Good Night | `weather-night` | `switch` | `startProgram.goodNight` | | Hygiene | `lotion-plus` | `switch` | `startProgram.hygiene` | | Keep Fresh | `refresh-circle` | `switch` | `startProgram.permanentPressStatus` | -| Liquid Detergent Dose | `cup-water` | `sensor` | `startProgram.liquidDetergentDose` | | Main Wash Time | `clock-start` | `number` | `startProgram.mainWashTime` | -| Powder Detergent Dose | `cup` | `sensor` | `startProgram.powderDetergentDose` | | Prewash | `tshirt-crew` | `switch` | `startProgram.prewash` | | Program | | `select` | `startProgram.program` | -| Remaining Time | `timer` | `sensor` | `startProgram.remainingTime` | | Rinse Iterations | `rotate-right` | `number` | `startProgram.rinseIterations` | | Soak Prewash Selection | `tshirt-crew` | `switch` | `startProgram.haier_SoakPrewashSelection` | | Spin speed | `numeric` | `select` | `startProgram.spinSpeed` | | Stain Type | `liquid-spot` | `select` | `startProgram.extendedStainType` | | Steam level | `weather-dust` | `select` | `startProgram.steamLevel` | -| Suggested Load | `weight-kilogram` | `sensor` | `startProgram.suggestedLoadW` | -| Suggested weight | `weight-kilogram` | `sensor` | `startProgram.weight` | | Temperature | `thermometer` | `select` | `startProgram.temp` | | Water hard | `water` | `number` | `startProgram.waterHard` | | lang | | `number` | `startProgram.lang` | diff --git a/custom_components/hon/climate.py b/custom_components/hon/climate.py index 9b02997..7912eac 100644 --- a/custom_components/hon/climate.py +++ b/custom_components/hon/climate.py @@ -67,6 +67,13 @@ CLIMATES: dict[ icon="mdi:snowflake-thermometer", translation_key="freezer", ), + HonClimateEntityDescription( + key="settings.tempSelZ3", + mode=HVACMode.COOL, + name="MyZone", + icon="mdi:thermometer", + translation_key="my_zone", + ), ), "OV": ( HonClimateEntityDescription( @@ -291,10 +298,6 @@ class HonClimateEntity(HonEntity, ClimateEntity): self._attr_temperature_unit = TEMP_CELSIUS self._set_temperature_bound() - self._attr_supported_features = ( - ClimateEntityFeature.TARGET_TEMPERATURE | ClimateEntityFeature.PRESET_MODE - ) - self._attr_hvac_modes = [description.mode] if "stopProgram" in device.commands: self._attr_hvac_modes += [HVACMode.OFF] @@ -312,7 +315,14 @@ class HonClimateEntity(HonEntity, ClimateEntity): modes.append(mode) else: modes.append(mode) - self._attr_preset_modes = modes + + if modes: + self._attr_supported_features = ( + ClimateEntityFeature.TARGET_TEMPERATURE | ClimateEntityFeature.PRESET_MODE + ) + self._attr_preset_modes = modes + else: + self._attr_supported_features = ClimateEntityFeature.TARGET_TEMPERATURE self._handle_coordinator_update(update=False) diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index f357735..7c0e504 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -164,6 +164,13 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { native_unit_of_measurement=UnitOfTemperature.CELSIUS, translation_key="freezer_temp_sel", ), + HonNumberEntityDescription( + key="settings.tempSelZ3", + name="MyZone Temperature", + icon="mdi:thermometer", + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + translation_key="my_zone_temp_sel", + ), ), "AP": ( HonNumberEntityDescription( diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index 8a27abb..46fa17b 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -2043,6 +2043,9 @@ }, "aroma_time_off": { "name": "Difuzér (VYPNOUT)" + }, + "my_zone_temp_sel": { + "name": "Cílová teplota My Zone" } }, "climate": { @@ -2177,6 +2180,9 @@ } } } + }, + "my_zone": { + "name": "My Zone" } }, "fan": { diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index 5a626a2..ddbe5d0 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -2043,6 +2043,9 @@ }, "aroma_time_off": { "name": "Luftverteiler (AUS)" + }, + "my_zone_temp_sel": { + "name": "Zieltemperatur My Zone" } }, "climate": { @@ -2177,6 +2180,9 @@ } } } + }, + "my_zone": { + "name": "My Zone" } }, "fan": { diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index e767bb2..a3665c8 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -2043,6 +2043,9 @@ }, "aroma_time_off": { "name": "Μεταδότης διάχυσης (ΑΠΕΝΕΡΓΟΠΟΙΗΣΗ)" + }, + "my_zone_temp_sel": { + "name": "Στοχευμένη θερμοκρασία My Zone" } }, "climate": { @@ -2177,6 +2180,9 @@ } } } + }, + "my_zone": { + "name": "My Zone" } }, "fan": { diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 129c5d0..58cad29 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -2072,6 +2072,9 @@ }, "aroma_time_off": { "name": "Diffuser (OFF)" + }, + "my_zone_temp_sel": { + "name": "Target temperature My Zone" } }, "climate": { @@ -2208,6 +2211,9 @@ } } } + }, + "my_zone": { + "name": "My Zone" } }, "fan": { diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index 167b377..fd6813e 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -2043,6 +2043,9 @@ }, "aroma_time_off": { "name": "Difusor (APAGADO)" + }, + "my_zone_temp_sel": { + "name": "Temperatura deseada My Zone" } }, "climate": { @@ -2177,6 +2180,9 @@ } } } + }, + "my_zone": { + "name": "My Zone" } }, "fan": { diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index c2267a8..85a37a0 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -2043,6 +2043,9 @@ }, "aroma_time_off": { "name": "Diffuseur (OFF)" + }, + "my_zone_temp_sel": { + "name": "Température cible My Zone" } }, "climate": { @@ -2177,6 +2180,9 @@ } } } + }, + "my_zone": { + "name": "My Zone" } }, "fan": { diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index c73387f..5d37c34 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -1108,6 +1108,9 @@ }, "aroma_time_off": { "name": "Diffuser (OFF)" + }, + "my_zone_temp_sel": { + "name": "Target temperature My Zone" } }, "climate": { @@ -1169,6 +1172,9 @@ "state": {} } } + }, + "my_zone": { + "name": "My Zone" } }, "fan": { diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index 8e0d1b2..2f48cd9 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -2043,6 +2043,9 @@ }, "aroma_time_off": { "name": "Raspršivač (UKLJUČEN)" + }, + "my_zone_temp_sel": { + "name": "Ciljana temperatura My Zone" } }, "climate": { @@ -2177,6 +2180,9 @@ } } } + }, + "my_zone": { + "name": "My Zone" } }, "fan": { diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index a69b19e..0b01a0d 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -2052,6 +2052,9 @@ }, "aroma_time_off": { "name": "Diffusore (OFF)" + }, + "my_zone_temp_sel": { + "name": "Temperatura target My Zone" } }, "climate": { @@ -2186,6 +2189,9 @@ } } } + }, + "my_zone": { + "name": "My Zone" } }, "fan": { diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index 9a6f314..42c559f 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -2043,6 +2043,9 @@ }, "aroma_time_off": { "name": "Diffuser (UIT)" + }, + "my_zone_temp_sel": { + "name": "Doeltemperatuur My Zone" } }, "climate": { @@ -2177,6 +2180,9 @@ } } } + }, + "my_zone": { + "name": "My Zone" } }, "fan": { diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index 373b852..4a651e4 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -2043,6 +2043,9 @@ }, "aroma_time_off": { "name": "Dyfuzor (WYŁ.)" + }, + "my_zone_temp_sel": { + "name": "Temperatura docelowa My Zone" } }, "climate": { @@ -2177,6 +2180,9 @@ } } } + }, + "my_zone": { + "name": "My Zone" } }, "fan": { diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index 9282bb5..9b8c62f 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -2043,6 +2043,9 @@ }, "aroma_time_off": { "name": "Difusor (OFF)" + }, + "my_zone_temp_sel": { + "name": "Temperatura alvo My Zone" } }, "climate": { @@ -2177,6 +2180,9 @@ } } } + }, + "my_zone": { + "name": "My Zone" } }, "fan": { diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index ca6e7f1..917e0df 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -2043,6 +2043,9 @@ }, "aroma_time_off": { "name": "Difuzor (OPRIT)" + }, + "my_zone_temp_sel": { + "name": "Temperatură vizată My Zone" } }, "climate": { @@ -2177,6 +2180,9 @@ } } } + }, + "my_zone": { + "name": "My Zone" } }, "fan": { diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index 99ae650..2ed7761 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -2043,6 +2043,9 @@ }, "aroma_time_off": { "name": "Распылитель (Выкл.)" + }, + "my_zone_temp_sel": { + "name": "Заданная температура My Zone" } }, "climate": { @@ -2177,6 +2180,9 @@ } } } + }, + "my_zone": { + "name": "My Zone" } }, "fan": { diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index ac60dcf..b97e612 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -2043,6 +2043,9 @@ }, "aroma_time_off": { "name": "Difuzér (VYP)" + }, + "my_zone_temp_sel": { + "name": "Cieľová teplota My Zone" } }, "climate": { @@ -2177,6 +2180,9 @@ } } } + }, + "my_zone": { + "name": "My Zone" } }, "fan": { diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index 5dd5b31..5946c7a 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -2043,6 +2043,9 @@ }, "aroma_time_off": { "name": "Razpršilnik (IZKLOP)" + }, + "my_zone_temp_sel": { + "name": "Ciljna temperatura My Zone" } }, "climate": { @@ -2177,6 +2180,9 @@ } } } + }, + "my_zone": { + "name": "My Zone" } }, "fan": { diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index 2e7cff0..3602018 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -2043,6 +2043,9 @@ }, "aroma_time_off": { "name": "Difuzor (ISKLJUČENO)" + }, + "my_zone_temp_sel": { + "name": "Željena temperatura My Zone" } }, "climate": { @@ -2177,6 +2180,9 @@ } } } + }, + "my_zone": { + "name": "My Zone" } }, "fan": { diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index 7d9847a..512c5a2 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -2043,6 +2043,9 @@ }, "aroma_time_off": { "name": "Difüzör (KAPALI)" + }, + "my_zone_temp_sel": { + "name": "Hedef sıcaklık My Zone" } }, "climate": { @@ -2177,6 +2180,9 @@ } } } + }, + "my_zone": { + "name": "My Zone" } }, "fan": { diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index dc44e38..e5e22ae 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -2029,6 +2029,9 @@ }, "aroma_time_off": { "name": "扩散器(关)" + }, + "my_zone_temp_sel": { + "name": "目标温度 My Zone" } }, "climate": { @@ -2163,6 +2166,9 @@ } } } + }, + "my_zone": { + "name": "My Zone" } }, "fan": { diff --git a/scripts/translation_keys.py b/scripts/translation_keys.py index a1d550b..0eaea52 100644 --- a/scripts/translation_keys.py +++ b/scripts/translation_keys.py @@ -462,6 +462,7 @@ NAMES = { "dry_time": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_TIME", "freezer_temp_sel": ["OV.COMMON.GOAL_TEMPERATURE", "REF.ZONES.FREEZER"], "fridge_temp_sel": ["OV.COMMON.GOAL_TEMPERATURE", "REF.ZONES.FRIDGE"], + "my_zone_temp_sel": ["OV.COMMON.GOAL_TEMPERATURE", "REF.ZONES.MY_ZONE_1"], "pollen_level": "AP.AIR_QUALITY.POLLEN_LEVEL", "aroma_time_on": "AP.TITLES.AROMA_ON", "aroma_time_off": "AP.TITLES.AROMA_OFF", @@ -471,6 +472,7 @@ NAMES = { "fridge": "REF.ZONES.FRIDGE", "freezer": "REF.ZONES.FREEZER", "oven": "GLOBALS.APPLIANCES_NAME.OV", + "my_zone": "REF.ZONES.MY_ZONE_1", }, "fan": {"air_extraction": "HO.DASHBOARD.AIR_EXTRACTION_TITLE"}, "light": {"light": "WC.DASHBOARD_MENU_MORE.LIGHT"}, -- 2.39.5 From 58ae497933e78f4607ab6bba29543b8df3fe9791 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 20 Nov 2023 17:37:49 +0100 Subject: [PATCH 194/205] Update translations --- custom_components/hon/translations/cs.json | 18 +++++++------ custom_components/hon/translations/de.json | 18 +++++++------ custom_components/hon/translations/el.json | 18 +++++++------ custom_components/hon/translations/en.json | 24 ++++++++--------- custom_components/hon/translations/es.json | 18 +++++++------ custom_components/hon/translations/fr.json | 18 +++++++------ custom_components/hon/translations/he.json | 14 +++++----- custom_components/hon/translations/hr.json | 18 +++++++------ custom_components/hon/translations/it.json | 30 ++++++++++++---------- custom_components/hon/translations/nl.json | 18 +++++++------ custom_components/hon/translations/pl.json | 18 +++++++------ custom_components/hon/translations/pt.json | 18 +++++++------ custom_components/hon/translations/ro.json | 18 +++++++------ custom_components/hon/translations/ru.json | 18 +++++++------ custom_components/hon/translations/sk.json | 26 ++++++++++--------- custom_components/hon/translations/sl.json | 18 +++++++------ custom_components/hon/translations/sr.json | 18 +++++++------ custom_components/hon/translations/tr.json | 26 ++++++++++--------- custom_components/hon/translations/zh.json | 18 +++++++------ 19 files changed, 204 insertions(+), 168 deletions(-) diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index 46fa17b..3ecf296 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -683,6 +683,7 @@ "iot_wash_sport_anti_odor": "Sportovní oblečení s efektem proti zápachu", "iot_wash_sport_anti_odor_zelig": "Sportovní oblečení s efektem proti zápachu", "iot_wash_stains_remover": "Odstraňování skvrn", + "iot_wash_super_saving": "Super úsporný 49'", "iot_wash_swimsuits_and_bikinis": "Plavky", "iot_wash_synthetic": "Syntetika", "iot_wash_synthetic_steam": "Syntetika + Pára", @@ -767,11 +768,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Režim Eco", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Fruit&Veg", "fruit_and_veg": "Fruit & Veg", "holiday": "DOVOLENÁ", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Není vybrán žádný režim", "quick_cool": "QUICK COOL", @@ -781,8 +782,8 @@ "super_cool": "SUPER CHLAZENÍ", "super_freeze": "SUPER MRAZENÍ", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Program" }, @@ -1569,6 +1570,7 @@ "iot_wash_sport_anti_odor": "Sportovní oblečení s efektem proti zápachu", "iot_wash_sport_anti_odor_zelig": "Sportovní oblečení s efektem proti zápachu", "iot_wash_stains_remover": "Odstraňování skvrn", + "iot_wash_super_saving": "Super úsporný 49'", "iot_wash_swimsuits_and_bikinis": "Plavky", "iot_wash_synthetic": "Syntetika", "iot_wash_synthetic_steam": "Syntetika + Pára", @@ -1653,11 +1655,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Režim Eco", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Fruit&Veg", "fruit_and_veg": "Fruit & Veg", "holiday": "DOVOLENÁ", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Není vybrán žádný režim", "quick_cool": "QUICK COOL", @@ -1667,8 +1669,8 @@ "super_cool": "SUPER CHLAZENÍ", "super_freeze": "SUPER MRAZENÍ", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Program" }, diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index ddbe5d0..71b8e72 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -683,6 +683,7 @@ "iot_wash_sport_anti_odor": "Anti-Geruch Sportbekleidung", "iot_wash_sport_anti_odor_zelig": "Anti-Geruch Sportbekleidung", "iot_wash_stains_remover": "Fleckenentferner", + "iot_wash_super_saving": "Super Sparprogramm 49'", "iot_wash_swimsuits_and_bikinis": "Badeanzüge", "iot_wash_synthetic": "Synthetik", "iot_wash_synthetic_steam": "Synthetik + Dampf", @@ -767,11 +768,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Eco-Modus", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Obst und Genüse", "fruit_and_veg": "Fruit & Veg", "holiday": "URLAUBSFUNKTION", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Kein Modus ausgewählt", "quick_cool": "SCHNELLKÜHLUNG", @@ -781,8 +782,8 @@ "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Programm" }, @@ -1569,6 +1570,7 @@ "iot_wash_sport_anti_odor": "Anti-Geruch Sportbekleidung", "iot_wash_sport_anti_odor_zelig": "Anti-Geruch Sportbekleidung", "iot_wash_stains_remover": "Fleckenentferner", + "iot_wash_super_saving": "Super Sparprogramm 49'", "iot_wash_swimsuits_and_bikinis": "Badeanzüge", "iot_wash_synthetic": "Synthetik", "iot_wash_synthetic_steam": "Synthetik + Dampf", @@ -1653,11 +1655,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Eco-Modus", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Obst und Genüse", "fruit_and_veg": "Fruit & Veg", "holiday": "URLAUBSFUNKTION", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Kein Modus ausgewählt", "quick_cool": "SCHNELLKÜHLUNG", @@ -1667,8 +1669,8 @@ "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Programm" }, diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index a3665c8..cb46299 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -683,6 +683,7 @@ "iot_wash_sport_anti_odor": "Κατά της οσμής των αθλητικών ρούχων", "iot_wash_sport_anti_odor_zelig": "Κατά της οσμής των αθλητικών ρούχων", "iot_wash_stains_remover": "Αφαίρεση λεκέδων", + "iot_wash_super_saving": "Εξαιρετική εξοικονόμηση 49'", "iot_wash_swimsuits_and_bikinis": "Μαγιό", "iot_wash_synthetic": "Συνθετικά", "iot_wash_synthetic_steam": "Συνθετικά + Ατμός", @@ -767,11 +768,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Λειτουργία Eco", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "ΦΡΟΥΤΑ & ΛΑΧΑΝΙΚΑ", "fruit_and_veg": "Fruit & Veg", "holiday": "Ρυθμίστε το ψυγείο στους 17°C και διατηρήστε την κατάψυξη σε λειτουργία για μεγάλο χρονικό διάστημα.", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Δεν επιλέχθηκε λειτουργία", "quick_cool": "ΓΡΗΓΟΡΗ ΨΥΞΗ", @@ -781,8 +782,8 @@ "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Πρόγραμμα" }, @@ -1569,6 +1570,7 @@ "iot_wash_sport_anti_odor": "Κατά της οσμής των αθλητικών ρούχων", "iot_wash_sport_anti_odor_zelig": "Κατά της οσμής των αθλητικών ρούχων", "iot_wash_stains_remover": "Αφαίρεση λεκέδων", + "iot_wash_super_saving": "Εξαιρετική εξοικονόμηση 49'", "iot_wash_swimsuits_and_bikinis": "Μαγιό", "iot_wash_synthetic": "Συνθετικά", "iot_wash_synthetic_steam": "Συνθετικά + Ατμός", @@ -1653,11 +1655,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Λειτουργία Eco", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "ΦΡΟΥΤΑ & ΛΑΧΑΝΙΚΑ", "fruit_and_veg": "Fruit & Veg", "holiday": "Ρυθμίστε το ψυγείο στους 17°C και διατηρήστε την κατάψυξη σε λειτουργία για μεγάλο χρονικό διάστημα.", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Δεν επιλέχθηκε λειτουργία", "quick_cool": "ΓΡΗΓΟΡΗ ΨΥΞΗ", @@ -1667,8 +1669,8 @@ "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Πρόγραμμα" }, diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 58cad29..1374407 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -425,7 +425,7 @@ "iot_dry_tablecloths": "Tablecloths", "iot_dry_technical_fabrics": "Technical Fabrics", "iot_dry_warm_embrace": "Warm Embrace", - "iot_dry_wool": "Wool", + "iot_dry_wool": "Wool Dry", "jeans": "Jeans", "mix_and_dry": "Mix&Dry", "pets": "Pets", @@ -445,7 +445,7 @@ "super_easy_iron_xxl": "Super Easy Iron XXL", "super_fast_cottons": "Super Fast Cottons", "super_fast_delicates": "Super Fast Delicates", - "synthetics": "Syntethics", + "synthetics": "Synthetics", "total_care": "Total Care", "trainers": "Trainers", "ultra_care": "Ultra Care", @@ -781,11 +781,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Eco mode", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Fruit&Veg", "fruit_and_veg": "Fruit&Veg", "holiday": "HOLIDAY", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "No mode selected", "quick_cool": "QUICK COOL", @@ -797,8 +797,8 @@ "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Program" }, @@ -1324,7 +1324,7 @@ "iot_dry_tablecloths": "Tablecloths", "iot_dry_technical_fabrics": "Technical Fabrics", "iot_dry_warm_embrace": "Warm Embrace", - "iot_dry_wool": "Wool", + "iot_dry_wool": "Wool Dry", "jeans": "Jeans", "mix_and_dry": "Mix&Dry", "pets": "Pets", @@ -1344,7 +1344,7 @@ "super_easy_iron_xxl": "Super Easy Iron XXL", "super_fast_cottons": "Super Fast Cottons", "super_fast_delicates": "Super Fast Delicates", - "synthetics": "Syntethics", + "synthetics": "Synthetics", "total_care": "Total Care", "trainers": "Trainers", "ultra_care": "Ultra Care", @@ -1680,11 +1680,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Eco mode", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Fruit&Veg", "fruit_and_veg": "Fruit&Veg", "holiday": "HOLIDAY", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "No mode selected", "quick_cool": "QUICK COOL", @@ -1696,8 +1696,8 @@ "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Program" }, diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index fd6813e..437885b 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -683,6 +683,7 @@ "iot_wash_sport_anti_odor": "Ropa deportiva antiolor", "iot_wash_sport_anti_odor_zelig": "Ropa deportiva antiolor", "iot_wash_stains_remover": "Quitamanchas", + "iot_wash_super_saving": "Súper Ahorro 49'", "iot_wash_swimsuits_and_bikinis": "Trajes de baño", "iot_wash_synthetic": "Ropa sintética", "iot_wash_synthetic_steam": "Ropa sintética + Vapor", @@ -767,11 +768,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Modo Eco", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Frutas Y Verduras", "fruit_and_veg": "Frutas Y Verduras", "holiday": "VACACIONES", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "No se ha seleccionado ningún modo", "quick_cool": "QUICK COOL", @@ -781,8 +782,8 @@ "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Programa" }, @@ -1569,6 +1570,7 @@ "iot_wash_sport_anti_odor": "Ropa deportiva antiolor", "iot_wash_sport_anti_odor_zelig": "Ropa deportiva antiolor", "iot_wash_stains_remover": "Quitamanchas", + "iot_wash_super_saving": "Súper Ahorro 49'", "iot_wash_swimsuits_and_bikinis": "Trajes de baño", "iot_wash_synthetic": "Ropa sintética", "iot_wash_synthetic_steam": "Ropa sintética + Vapor", @@ -1653,11 +1655,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Modo Eco", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Frutas Y Verduras", "fruit_and_veg": "Frutas Y Verduras", "holiday": "VACACIONES", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "No se ha seleccionado ningún modo", "quick_cool": "QUICK COOL", @@ -1667,8 +1669,8 @@ "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Programa" }, diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index 85a37a0..c84f4c5 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -683,6 +683,7 @@ "iot_wash_sport_anti_odor": "Anti-odeur pour les vêtements de sport", "iot_wash_sport_anti_odor_zelig": "Anti-odeur pour les vêtements de sport", "iot_wash_stains_remover": "Détachant", + "iot_wash_super_saving": "Super économique 49'", "iot_wash_swimsuits_and_bikinis": "Maillots de bain", "iot_wash_synthetic": "Synthétiques", "iot_wash_synthetic_steam": "Synthétiques + Vapeur d'eau", @@ -767,11 +768,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Mode Eco", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Fruit&Veg", "fruit_and_veg": "Fruit & Veg", "holiday": "HOLIDAY", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Aucun mode sélectionné", "quick_cool": "QUICK COOL", @@ -781,8 +782,8 @@ "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Programme" }, @@ -1569,6 +1570,7 @@ "iot_wash_sport_anti_odor": "Anti-odeur pour les vêtements de sport", "iot_wash_sport_anti_odor_zelig": "Anti-odeur pour les vêtements de sport", "iot_wash_stains_remover": "Détachant", + "iot_wash_super_saving": "Super économique 49'", "iot_wash_swimsuits_and_bikinis": "Maillots de bain", "iot_wash_synthetic": "Synthétiques", "iot_wash_synthetic_steam": "Synthétiques + Vapeur d'eau", @@ -1653,11 +1655,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Mode Eco", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Fruit&Veg", "fruit_and_veg": "Fruit & Veg", "holiday": "HOLIDAY", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Aucun mode sélectionné", "quick_cool": "QUICK COOL", @@ -1667,8 +1669,8 @@ "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Programme" }, diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index 5d37c34..f2841b3 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -311,15 +311,16 @@ "chiller": "Quick cool", "cold_drinks": "Soft chill", "cool_drink": "Cool Drink", - "fruits": "Fruits", + "fruits": "Fruit", "fruit_and_veg": "Fruit & Veg", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "sea_food": "Ready to cook meal", "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Program" }, @@ -725,15 +726,16 @@ "chiller": "Quick cool", "cold_drinks": "Soft chill", "cool_drink": "Cool Drink", - "fruits": "Fruits", + "fruits": "Fruit", "fruit_and_veg": "Fruit & Veg", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "sea_food": "Ready to cook meal", "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Program" }, diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index 2f48cd9..1bc65a1 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -683,6 +683,7 @@ "iot_wash_sport_anti_odor": "Sportska odjeća protiv neugodnih mirisa", "iot_wash_sport_anti_odor_zelig": "Sportska odjeća protiv neugodnih mirisa", "iot_wash_stains_remover": "Uklanjanje mrlja", + "iot_wash_super_saving": "Super ušteda 49'", "iot_wash_swimsuits_and_bikinis": "Kupaći kostimi", "iot_wash_synthetic": "Sintetika", "iot_wash_synthetic_steam": "Sintetika + Para", @@ -767,11 +768,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Način rada Eco", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Voće i Povrće", "fruit_and_veg": "Fruit & Veg", "holiday": "ODMOR", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Nije odabran način rada", "quick_cool": "BRZO HLAĐENJE", @@ -781,8 +782,8 @@ "super_cool": "SUPER HLAĐENJE", "super_freeze": "SUPER ZAMRZAVANJE", "tea": "Hladna pića i napitci", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Program" }, @@ -1569,6 +1570,7 @@ "iot_wash_sport_anti_odor": "Sportska odjeća protiv neugodnih mirisa", "iot_wash_sport_anti_odor_zelig": "Sportska odjeća protiv neugodnih mirisa", "iot_wash_stains_remover": "Uklanjanje mrlja", + "iot_wash_super_saving": "Super ušteda 49'", "iot_wash_swimsuits_and_bikinis": "Kupaći kostimi", "iot_wash_synthetic": "Sintetika", "iot_wash_synthetic_steam": "Sintetika + Para", @@ -1653,11 +1655,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Način rada Eco", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Voće i Povrće", "fruit_and_veg": "Fruit & Veg", "holiday": "ODMOR", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Nije odabran način rada", "quick_cool": "BRZO HLAĐENJE", @@ -1667,8 +1669,8 @@ "super_cool": "SUPER HLAĐENJE", "super_freeze": "SUPER ZAMRZAVANJE", "tea": "Hladna pića i napitci", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Program" }, diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index 0b01a0d..004b8c5 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -414,7 +414,7 @@ "iot_dry_tablecloths": "Tovaglie", "iot_dry_technical_fabrics": "Tessuti Tecnici", "iot_dry_warm_embrace": "Caldo abbraccio", - "iot_dry_wool": "Lana", + "iot_dry_wool": "Asciugatura Lana", "jeans": "Jeans", "mix_and_dry": "Mix&Dry", "pets": "Pets", @@ -563,7 +563,7 @@ "iot_intensive_40_steam": "Intensivo 40°C + Vapore", "iot_jeans_60_steam": "Jeans + Vapore", "iot_mixed_steam": "Misti + Vapore", - "iot_mix_and_colour_59_steam": "Misti e Colorati 59' + Vapore ", + "iot_mix_and_colour_59_steam": "Misti e Colorati 59' + Vapore", "iot_perfect_cotton_59_steam": "Cotone Perfetto 59' + Vapore", "iot_rapid_a_class_60_steam": "Rapido 59' Classe A + Vapore", "iot_resistant_cotton_steam": "Cotone Resistente + Vapore", @@ -684,6 +684,7 @@ "iot_wash_sport_anti_odor": "Sport Antiodori", "iot_wash_sport_anti_odor_zelig": "Sport Antiodori", "iot_wash_stains_remover": "Smacchia tutto", + "iot_wash_super_saving": "Super Risparmio 49'", "iot_wash_swimsuits_and_bikinis": "Costumi e Bikini", "iot_wash_synthetic": "Sintetici", "iot_wash_synthetic_steam": "Sintetici + Vapore", @@ -708,7 +709,7 @@ "mixed_and_colored_59": "Misti e Colorati 59'", "mixed_steam": "Misti + Vapore", "mix_and_colour_59": "Misti e Colorati 59'", - "mix_and_colour_59_steam": "Misti e Colorati 59' + Vapore ", + "mix_and_colour_59_steam": "Misti e Colorati 59' + Vapore", "night_and_day": "Night and Day", "night_wash": "Ciclo Notturno", "perfect_59": "Perfetto 59'", @@ -768,11 +769,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Modalità Eco", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Fruit&Veg", "fruit_and_veg": "Fruit & Veg", "holiday": "HOLIDAY", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Nessuna modalità selezionata", "quick_cool": "QUICK COOL", @@ -783,8 +784,8 @@ "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Programma" }, @@ -1307,7 +1308,7 @@ "iot_dry_tablecloths": "Tovaglie", "iot_dry_technical_fabrics": "Tessuti Tecnici", "iot_dry_warm_embrace": "Caldo abbraccio", - "iot_dry_wool": "Lana", + "iot_dry_wool": "Asciugatura Lana", "jeans": "Jeans", "mix_and_dry": "Mix&Dry", "pets": "Pets", @@ -1456,7 +1457,7 @@ "iot_intensive_40_steam": "Intensivo 40°C + Vapore", "iot_jeans_60_steam": "Jeans + Vapore", "iot_mixed_steam": "Misti + Vapore", - "iot_mix_and_colour_59_steam": "Misti e Colorati 59' + Vapore ", + "iot_mix_and_colour_59_steam": "Misti e Colorati 59' + Vapore", "iot_perfect_cotton_59_steam": "Cotone Perfetto 59' + Vapore", "iot_rapid_a_class_60_steam": "Rapido 59' Classe A + Vapore", "iot_resistant_cotton_steam": "Cotone Resistente + Vapore", @@ -1577,6 +1578,7 @@ "iot_wash_sport_anti_odor": "Sport Antiodori", "iot_wash_sport_anti_odor_zelig": "Sport Antiodori", "iot_wash_stains_remover": "Smacchia tutto", + "iot_wash_super_saving": "Super Risparmio 49'", "iot_wash_swimsuits_and_bikinis": "Costumi e Bikini", "iot_wash_synthetic": "Sintetici", "iot_wash_synthetic_steam": "Sintetici + Vapore", @@ -1601,7 +1603,7 @@ "mixed_and_colored_59": "Misti e Colorati 59'", "mixed_steam": "Misti + Vapore", "mix_and_colour_59": "Misti e Colorati 59'", - "mix_and_colour_59_steam": "Misti e Colorati 59' + Vapore ", + "mix_and_colour_59_steam": "Misti e Colorati 59' + Vapore", "night_and_day": "Night and Day", "night_wash": "Ciclo Notturno", "perfect_59": "Perfetto 59'", @@ -1661,11 +1663,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Modalità Eco", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Fruit&Veg", "fruit_and_veg": "Fruit & Veg", "holiday": "HOLIDAY", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Nessuna modalità selezionata", "quick_cool": "QUICK COOL", @@ -1676,8 +1678,8 @@ "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Programma" }, diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index 42c559f..961cb7a 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -683,6 +683,7 @@ "iot_wash_sport_anti_odor": "Anti-Odour sportkleding", "iot_wash_sport_anti_odor_zelig": "Anti-Odour sportkleding", "iot_wash_stains_remover": "Vlekkenverwijderaar", + "iot_wash_super_saving": "Super besparend 49'", "iot_wash_swimsuits_and_bikinis": "Badkleding", "iot_wash_synthetic": "Synthetische stoffen", "iot_wash_synthetic_steam": "Synthetische stoffen + Stoom", @@ -767,11 +768,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Eco-modus", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Fruit&Veg", "fruit_and_veg": "Fruit & Veg", "holiday": "HOLIDAY", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Geen modus geselecteerd", "quick_cool": "QUICK KOEL", @@ -781,8 +782,8 @@ "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Programma" }, @@ -1569,6 +1570,7 @@ "iot_wash_sport_anti_odor": "Anti-Odour sportkleding", "iot_wash_sport_anti_odor_zelig": "Anti-Odour sportkleding", "iot_wash_stains_remover": "Vlekkenverwijderaar", + "iot_wash_super_saving": "Super besparend 49'", "iot_wash_swimsuits_and_bikinis": "Badkleding", "iot_wash_synthetic": "Synthetische stoffen", "iot_wash_synthetic_steam": "Synthetische stoffen + Stoom", @@ -1653,11 +1655,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Eco-modus", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Fruit&Veg", "fruit_and_veg": "Fruit & Veg", "holiday": "HOLIDAY", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Geen modus geselecteerd", "quick_cool": "QUICK KOEL", @@ -1667,8 +1669,8 @@ "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Programma" }, diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index 4a651e4..b59b87a 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -683,6 +683,7 @@ "iot_wash_sport_anti_odor": "Odzież sportowa zapobiegająca powstawaniu nieprzyjemnych zapachów", "iot_wash_sport_anti_odor_zelig": "Odzież sportowa zapobiegająca powstawaniu nieprzyjemnych zapachów", "iot_wash_stains_remover": "Wywabiacz", + "iot_wash_super_saving": "Super oszczędność 49'", "iot_wash_swimsuits_and_bikinis": "Stroje kąpielowe", "iot_wash_synthetic": "Syntetyki", "iot_wash_synthetic_steam": "Syntetyki + Para", @@ -767,11 +768,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Tryb Eco", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Fruit&Veg", "fruit_and_veg": "Fruit & Veg", "holiday": "HOLIDAY", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Nie wybrano żadnego trybu", "quick_cool": "QUICK COOL", @@ -781,8 +782,8 @@ "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Program" }, @@ -1569,6 +1570,7 @@ "iot_wash_sport_anti_odor": "Odzież sportowa zapobiegająca powstawaniu nieprzyjemnych zapachów", "iot_wash_sport_anti_odor_zelig": "Odzież sportowa zapobiegająca powstawaniu nieprzyjemnych zapachów", "iot_wash_stains_remover": "Wywabiacz", + "iot_wash_super_saving": "Super oszczędność 49'", "iot_wash_swimsuits_and_bikinis": "Stroje kąpielowe", "iot_wash_synthetic": "Syntetyki", "iot_wash_synthetic_steam": "Syntetyki + Para", @@ -1653,11 +1655,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Tryb Eco", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Fruit&Veg", "fruit_and_veg": "Fruit & Veg", "holiday": "HOLIDAY", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Nie wybrano żadnego trybu", "quick_cool": "QUICK COOL", @@ -1667,8 +1669,8 @@ "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Program" }, diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index 9b8c62f..abeb471 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -683,6 +683,7 @@ "iot_wash_sport_anti_odor": "Roupa de desporto anti odor", "iot_wash_sport_anti_odor_zelig": "Roupa de desporto anti odor", "iot_wash_stains_remover": "Removedor de nódoas", + "iot_wash_super_saving": "Super poupança 49'", "iot_wash_swimsuits_and_bikinis": "Fatos de banho", "iot_wash_synthetic": "Sintéticos", "iot_wash_synthetic_steam": "Sintéticos + Vapor", @@ -767,11 +768,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Modo Eco", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Fruit&Veg", "fruit_and_veg": "Fruit & Veg", "holiday": "HOLIDAY", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Nenhum modo selecionado", "quick_cool": "QUICK COOL", @@ -781,8 +782,8 @@ "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Programa" }, @@ -1569,6 +1570,7 @@ "iot_wash_sport_anti_odor": "Roupa de desporto anti odor", "iot_wash_sport_anti_odor_zelig": "Roupa de desporto anti odor", "iot_wash_stains_remover": "Removedor de nódoas", + "iot_wash_super_saving": "Super poupança 49'", "iot_wash_swimsuits_and_bikinis": "Fatos de banho", "iot_wash_synthetic": "Sintéticos", "iot_wash_synthetic_steam": "Sintéticos + Vapor", @@ -1653,11 +1655,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Modo Eco", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Fruit&Veg", "fruit_and_veg": "Fruit & Veg", "holiday": "HOLIDAY", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Nenhum modo selecionado", "quick_cool": "QUICK COOL", @@ -1667,8 +1669,8 @@ "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Programa" }, diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index 917e0df..2fc4e21 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -683,6 +683,7 @@ "iot_wash_sport_anti_odor": "Îmbrăcăminte sportivă anti-miros", "iot_wash_sport_anti_odor_zelig": "Îmbrăcăminte sportivă anti-miros", "iot_wash_stains_remover": "Eliminare de pete", + "iot_wash_super_saving": "Super Economii 49'", "iot_wash_swimsuits_and_bikinis": "Costume de baie", "iot_wash_synthetic": "Sintetice", "iot_wash_synthetic_steam": "Sintetice + Abur", @@ -767,11 +768,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Modul Eco", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Fruit&Veg (Fructe și legume)", "fruit_and_veg": "Fruit & Veg", "holiday": "HOLIDAY (Perioadă de neutilizare)", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Niciun mod selectat", "quick_cool": "QUICK COOL", @@ -781,8 +782,8 @@ "super_cool": "SUPER COOL (Răcire rapidă)", "super_freeze": "SUPER FREEZE (Congelare rapidă)", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Program" }, @@ -1569,6 +1570,7 @@ "iot_wash_sport_anti_odor": "Îmbrăcăminte sportivă anti-miros", "iot_wash_sport_anti_odor_zelig": "Îmbrăcăminte sportivă anti-miros", "iot_wash_stains_remover": "Eliminare de pete", + "iot_wash_super_saving": "Super Economii 49'", "iot_wash_swimsuits_and_bikinis": "Costume de baie", "iot_wash_synthetic": "Sintetice", "iot_wash_synthetic_steam": "Sintetice + Abur", @@ -1653,11 +1655,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Modul Eco", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Fruit&Veg (Fructe și legume)", "fruit_and_veg": "Fruit & Veg", "holiday": "HOLIDAY (Perioadă de neutilizare)", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Niciun mod selectat", "quick_cool": "QUICK COOL", @@ -1667,8 +1669,8 @@ "super_cool": "SUPER COOL (Răcire rapidă)", "super_freeze": "SUPER FREEZE (Congelare rapidă)", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Program" }, diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index 2ed7761..162fb93 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -683,6 +683,7 @@ "iot_wash_sport_anti_odor": "Устранение запаха со спортивной одежды", "iot_wash_sport_anti_odor_zelig": "Устранение запаха со спортивной одежды", "iot_wash_stains_remover": "Выведение пятен", + "iot_wash_super_saving": "Супер экономичная 49 мин.", "iot_wash_swimsuits_and_bikinis": "Купальники", "iot_wash_synthetic": "Синтетика", "iot_wash_synthetic_steam": "Синтетика + Пар", @@ -767,11 +768,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Режим Eco", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Фрукты и овощи", "fruit_and_veg": "Fruit & Veg", "holiday": "HOLIDAY", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Режим не выбран", "quick_cool": "БЫСТРОЕ ОХЛАЖДЕНИЕ", @@ -781,8 +782,8 @@ "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Программа" }, @@ -1569,6 +1570,7 @@ "iot_wash_sport_anti_odor": "Устранение запаха со спортивной одежды", "iot_wash_sport_anti_odor_zelig": "Устранение запаха со спортивной одежды", "iot_wash_stains_remover": "Выведение пятен", + "iot_wash_super_saving": "Супер экономичная 49 мин.", "iot_wash_swimsuits_and_bikinis": "Купальники", "iot_wash_synthetic": "Синтетика", "iot_wash_synthetic_steam": "Синтетика + Пар", @@ -1653,11 +1655,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Режим Eco", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Фрукты и овощи", "fruit_and_veg": "Fruit & Veg", "holiday": "HOLIDAY", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Режим не выбран", "quick_cool": "БЫСТРОЕ ОХЛАЖДЕНИЕ", @@ -1667,8 +1669,8 @@ "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Программа" }, diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index b97e612..b0fb17f 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -461,8 +461,8 @@ "autocare": "Automatická starostlivosť", "autoclean": "Čistenie bubna", "baby_60": "Všetka detská 60°C", - "care_14": " Starostlivost 14'", - "care_30": " Starostlivost 30'", + "care_14": "Starostlivost 14'", + "care_30": "Starostlivost 30'", "care_44": "Starostlivost 44'", "checkup": "Kontrola", "colour_59": "Farebná 59'", @@ -683,6 +683,7 @@ "iot_wash_sport_anti_odor": "Športové oblečenie", "iot_wash_sport_anti_odor_zelig": "Športové oblečenie", "iot_wash_stains_remover": "Odstraňovanie škvŕn", + "iot_wash_super_saving": "Super úspora 49'", "iot_wash_swimsuits_and_bikinis": "Plavky", "iot_wash_synthetic": "Syntetika", "iot_wash_synthetic_steam": "Syntetika + Para", @@ -767,11 +768,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Režim Eco", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Fruit&Veg", "fruit_and_veg": "Fruit & Veg", "holiday": "DOVOLENKA", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Nie je vybraný žiadny režim", "quick_cool": "QUICK COOL", @@ -781,8 +782,8 @@ "super_cool": "SUPER CHLADENIE", "super_freeze": "SUPER MRAZENIE", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Program" }, @@ -1347,8 +1348,8 @@ "autocare": "Automatická starostlivosť", "autoclean": "Čistenie bubna", "baby_60": "Všetka detská 60°C", - "care_14": " Starostlivost 14'", - "care_30": " Starostlivost 30'", + "care_14": "Starostlivost 14'", + "care_30": "Starostlivost 30'", "care_44": "Starostlivost 44'", "checkup": "Kontrola", "colour_59": "Farebná 59'", @@ -1569,6 +1570,7 @@ "iot_wash_sport_anti_odor": "Športové oblečenie", "iot_wash_sport_anti_odor_zelig": "Športové oblečenie", "iot_wash_stains_remover": "Odstraňovanie škvŕn", + "iot_wash_super_saving": "Super úspora 49'", "iot_wash_swimsuits_and_bikinis": "Plavky", "iot_wash_synthetic": "Syntetika", "iot_wash_synthetic_steam": "Syntetika + Para", @@ -1653,11 +1655,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Režim Eco", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Fruit&Veg", "fruit_and_veg": "Fruit & Veg", "holiday": "DOVOLENKA", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Nie je vybraný žiadny režim", "quick_cool": "QUICK COOL", @@ -1667,8 +1669,8 @@ "super_cool": "SUPER CHLADENIE", "super_freeze": "SUPER MRAZENIE", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Program" }, diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index 5946c7a..8eda7ec 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -683,6 +683,7 @@ "iot_wash_sport_anti_odor": "Športna oblačila, odporna proti neprijetnim vonjavam", "iot_wash_sport_anti_odor_zelig": "Športna oblačila, odporna proti neprijetnim vonjavam", "iot_wash_stains_remover": "Odstranjevalec madežev", + "iot_wash_super_saving": "Super prihranki 49'", "iot_wash_swimsuits_and_bikinis": "Kopalke", "iot_wash_synthetic": "Sintetika", "iot_wash_synthetic_steam": "Sintetika + Para", @@ -767,11 +768,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Način Eco", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Sadje In Zelenjava", "fruit_and_veg": "Sadje in zelenjava", "holiday": "POČITNICE", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Izbran ni noben način", "quick_cool": "HITRO HLAJENJE", @@ -781,8 +782,8 @@ "super_cool": "SUPER HLAJENJE", "super_freeze": "SUPER ZAMRZOVANJE", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Program" }, @@ -1569,6 +1570,7 @@ "iot_wash_sport_anti_odor": "Športna oblačila, odporna proti neprijetnim vonjavam", "iot_wash_sport_anti_odor_zelig": "Športna oblačila, odporna proti neprijetnim vonjavam", "iot_wash_stains_remover": "Odstranjevalec madežev", + "iot_wash_super_saving": "Super prihranki 49'", "iot_wash_swimsuits_and_bikinis": "Kopalke", "iot_wash_synthetic": "Sintetika", "iot_wash_synthetic_steam": "Sintetika + Para", @@ -1653,11 +1655,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Način Eco", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Sadje In Zelenjava", "fruit_and_veg": "Sadje in zelenjava", "holiday": "POČITNICE", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Izbran ni noben način", "quick_cool": "HITRO HLAJENJE", @@ -1667,8 +1669,8 @@ "super_cool": "SUPER HLAJENJE", "super_freeze": "SUPER ZAMRZOVANJE", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Program" }, diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index 3602018..ab581d1 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -683,6 +683,7 @@ "iot_wash_sport_anti_odor": "Sportska odeća sa sprečavanjem neprijatnih mirisa", "iot_wash_sport_anti_odor_zelig": "Sportska odeća sa sprečavanjem neprijatnih mirisa", "iot_wash_stains_remover": "Uklanjanje fleka", + "iot_wash_super_saving": "Super ušteda 49'", "iot_wash_swimsuits_and_bikinis": "Odeća za kupanje", "iot_wash_synthetic": "Sintetika", "iot_wash_synthetic_steam": "Sintetika + Para", @@ -767,11 +768,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Eco režim", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Voće i Povrće", "fruit_and_veg": "Fruit & Veg", "holiday": "ODMOR", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Nije izabran nijedan režim", "quick_cool": "BRZO HLAĐENJE", @@ -781,8 +782,8 @@ "super_cool": "SUPER HLAĐENJE", "super_freeze": "SUPER ZAMRZAVANJE", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Program" }, @@ -1569,6 +1570,7 @@ "iot_wash_sport_anti_odor": "Sportska odeća sa sprečavanjem neprijatnih mirisa", "iot_wash_sport_anti_odor_zelig": "Sportska odeća sa sprečavanjem neprijatnih mirisa", "iot_wash_stains_remover": "Uklanjanje fleka", + "iot_wash_super_saving": "Super ušteda 49'", "iot_wash_swimsuits_and_bikinis": "Odeća za kupanje", "iot_wash_synthetic": "Sintetika", "iot_wash_synthetic_steam": "Sintetika + Para", @@ -1653,11 +1655,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Eco režim", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Voće i Povrće", "fruit_and_veg": "Fruit & Veg", "holiday": "ODMOR", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Nije izabran nijedan režim", "quick_cool": "BRZO HLAĐENJE", @@ -1667,8 +1669,8 @@ "super_cool": "SUPER HLAĐENJE", "super_freeze": "SUPER ZAMRZAVANJE", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Program" }, diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index 512c5a2..ad348f0 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -452,7 +452,7 @@ "20_degrees_new_energy_label": "20°C", "active_steam": "Buhar 29'", "active_wash": "Aktif Yıkama 20'", - "active_wash_steam": "Aktif Yıkama 20' + Buhar", + "active_wash_steam": "Aktif Yıkama 20' + Buhar", "allergy_care": "Alerji Bakımı", "allergy_care_pro": "Anti-Alerji Pro", "all_in_one_49": "Hepsi bir Arada 49'.", @@ -521,7 +521,7 @@ "intensive_40": "Yoğun 40°C", "intensive_40_steam": "Yoğun 40°C + Buhar", "iot_active_steam": "Buhar 29'", - "iot_active_wash_steam": "Aktif Yıkama 20' + Buhar", + "iot_active_wash_steam": "Aktif Yıkama 20' + Buhar", "iot_allergy_care_pro": "Anti-Alerji Pro", "iot_all_in_one_59_steam": "Hepsi bir Arada 59' + Buhar", "iot_checkup": "Check-up", @@ -683,6 +683,7 @@ "iot_wash_sport_anti_odor": "Koku Önleyici Spor Giyim", "iot_wash_sport_anti_odor_zelig": "Koku Önleyici Spor Giyim", "iot_wash_stains_remover": "Leke çıkarıcı", + "iot_wash_super_saving": "Süper Tasarruf 49'", "iot_wash_swimsuits_and_bikinis": "Mayolar", "iot_wash_synthetic": "Sentetikler", "iot_wash_synthetic_steam": "Sentetikler + Buhar", @@ -767,11 +768,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Eco modu", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Meyve Ve Sebze", "fruit_and_veg": "Fruit & Veg", "holiday": "TATİL", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Hiç mod seçilmedi", "quick_cool": "HIZLI SOĞUTMA", @@ -781,8 +782,8 @@ "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Program" }, @@ -1338,7 +1339,7 @@ "20_degrees_new_energy_label": "20°C", "active_steam": "Buhar 29'", "active_wash": "Aktif Yıkama 20'", - "active_wash_steam": "Aktif Yıkama 20' + Buhar", + "active_wash_steam": "Aktif Yıkama 20' + Buhar", "allergy_care": "Alerji Bakımı", "allergy_care_pro": "Anti-Alerji Pro", "all_in_one_49": "Hepsi bir Arada 49'.", @@ -1407,7 +1408,7 @@ "intensive_40": "Yoğun 40°C", "intensive_40_steam": "Yoğun 40°C + Buhar", "iot_active_steam": "Buhar 29'", - "iot_active_wash_steam": "Aktif Yıkama 20' + Buhar", + "iot_active_wash_steam": "Aktif Yıkama 20' + Buhar", "iot_allergy_care_pro": "Anti-Alerji Pro", "iot_all_in_one_59_steam": "Hepsi bir Arada 59' + Buhar", "iot_checkup": "Check-up", @@ -1569,6 +1570,7 @@ "iot_wash_sport_anti_odor": "Koku Önleyici Spor Giyim", "iot_wash_sport_anti_odor_zelig": "Koku Önleyici Spor Giyim", "iot_wash_stains_remover": "Leke çıkarıcı", + "iot_wash_super_saving": "Süper Tasarruf 49'", "iot_wash_swimsuits_and_bikinis": "Mayolar", "iot_wash_synthetic": "Sentetikler", "iot_wash_synthetic_steam": "Sentetikler + Buhar", @@ -1653,11 +1655,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Eco modu", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Meyve Ve Sebze", "fruit_and_veg": "Fruit & Veg", "holiday": "TATİL", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "Hiç mod seçilmedi", "quick_cool": "HIZLI SOĞUTMA", @@ -1667,8 +1669,8 @@ "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "Program" }, diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index e5e22ae..d1e0fef 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -676,6 +676,7 @@ "iot_wash_sport_anti_odor": "防体味运动服", "iot_wash_sport_anti_odor_zelig": "防体味运动服", "iot_wash_stains_remover": "去污", + "iot_wash_super_saving": "超级节约 49'", "iot_wash_swimsuits_and_bikinis": "泳衣", "iot_wash_synthetic": "合成纤维", "iot_wash_synthetic_steam": "合成纤维 + 蒸汽", @@ -760,11 +761,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Eco 模式", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Fruit&Veg(水果和蔬菜)", "fruit_and_veg": "Fruit & Veg", "holiday": "HOLIDAY(假日模式)", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "未选择模式", "quick_cool": "QUICK COOL(快速冷却)", @@ -774,8 +775,8 @@ "super_cool": "SUPER COOL(超级冷却)", "super_freeze": "SUPER FREEZE(超级冷冻)", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "程序" }, @@ -1555,6 +1556,7 @@ "iot_wash_sport_anti_odor": "防体味运动服", "iot_wash_sport_anti_odor_zelig": "防体味运动服", "iot_wash_stains_remover": "去污", + "iot_wash_super_saving": "超级节约 49'", "iot_wash_swimsuits_and_bikinis": "泳衣", "iot_wash_synthetic": "合成纤维", "iot_wash_synthetic_steam": "合成纤维 + 蒸汽", @@ -1639,11 +1641,11 @@ "cool_drink": "Cool Drink", "eco": "Eco", "eco_mode": "Eco 模式", - "fruits": "Fruits", + "fruits": "Fruit", "fruits_and_veg": "Fruit&Veg(水果和蔬菜)", "fruit_and_veg": "Fruit & Veg", "holiday": "HOLIDAY(假日模式)", - "keep_fresh": "0° Fresh", + "keep_fresh": "0°C Fresh", "milk_and_eggs": "Milk & Eggs", "no_mode_selected": "未选择模式", "quick_cool": "QUICK COOL(快速冷却)", @@ -1653,8 +1655,8 @@ "super_cool": "SUPER COOL(超级冷却)", "super_freeze": "SUPER FREEZE(超级冷冻)", "tea": "Cold drinks or Beverages", - "vegetables": "Vegetables", - "zero_fresh": "0° Fresh" + "vegetables": "Vegetable", + "zero_fresh": "0°C Fresh" }, "name": "程序" }, -- 2.39.5 From 11133c148bf17c063a56e2350e3621ac8edd56fb Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 20 Nov 2023 17:44:28 +0100 Subject: [PATCH 195/205] Fix black issue --- custom_components/hon/climate.py | 5 +++-- info.md | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/custom_components/hon/climate.py b/custom_components/hon/climate.py index 7912eac..d43b43f 100644 --- a/custom_components/hon/climate.py +++ b/custom_components/hon/climate.py @@ -318,11 +318,12 @@ class HonClimateEntity(HonEntity, ClimateEntity): if modes: self._attr_supported_features = ( - ClimateEntityFeature.TARGET_TEMPERATURE | ClimateEntityFeature.PRESET_MODE + ClimateEntityFeature.TARGET_TEMPERATURE + | ClimateEntityFeature.PRESET_MODE ) self._attr_preset_modes = modes else: - self._attr_supported_features = ClimateEntityFeature.TARGET_TEMPERATURE + self._attr_supported_features = ClimateEntityFeature.TARGET_TEMPERATURE self._handle_coordinator_update(update=False) diff --git a/info.md b/info.md index 795c3e5..4cfde05 100644 --- a/info.md +++ b/info.md @@ -12,7 +12,7 @@ Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.co [![Supported Languages](https://img.shields.io/badge/Languages-19-royalblue)](https://github.com/Andre0512/hon#supported-languages) [![Supported Appliances](https://img.shields.io/badge/Appliances-11-forestgreen)](https://github.com/Andre0512/hon#supported-appliances) [![Supported Models](https://img.shields.io/badge/Models-110-yellowgreen)](https://github.com/Andre0512/hon#supported-models) -[![Supported Entities](https://img.shields.io/badge/Entities-315-crimson)](https://github.com/Andre0512/hon#appliance-features) +[![Supported Entities](https://img.shields.io/badge/Entities-317-crimson)](https://github.com/Andre0512/hon#appliance-features) ## Supported Appliances - [Washing Machine](https://github.com/Andre0512/hon#washing-machine) -- 2.39.5 From 00a88093408f08a67cebb83f8026fc69efc5c5a9 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 20 Nov 2023 23:38:43 +0100 Subject: [PATCH 196/205] Auto generate supported models list --- README.md | 606 +++++++++++++++++++++----------- info.md | 763 ++++++++++++++++++++++++++++++++++++----- scripts/sensor_docs.py | 126 ++++--- supported_models.yml | 144 ++++++++ 4 files changed, 1307 insertions(+), 332 deletions(-) create mode 100644 supported_models.yml diff --git a/README.md b/README.md index a97e6cc..840a979 100644 --- a/README.md +++ b/README.md @@ -15,210 +15,48 @@ Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.co [![Supported Languages](https://img.shields.io/badge/Languages-19-royalblue)](https://github.com/Andre0512/hon#supported-languages) [![Supported Appliances](https://img.shields.io/badge/Appliances-11-forestgreen)](https://github.com/Andre0512/hon#supported-appliances) -[![Supported Models](https://img.shields.io/badge/Models-110-yellowgreen)](https://github.com/Andre0512/hon#supported-models) -[![Supported Entities](https://img.shields.io/badge/Entities-317-crimson)](https://github.com/Andre0512/hon#appliance-features) +[![Supported Models](https://img.shields.io/badge/Models-111-yellowgreen)](https://github.com/Andre0512/hon#supported-appliances) +[![Supported Entities](https://img.shields.io/badge/Entities-317-crimson)](https://github.com/Andre0512/hon#supported-appliances) ## Supported Appliances -- [Washing Machine](https://github.com/Andre0512/hon#washing-machine) -- [Tumble Dryer](https://github.com/Andre0512/hon#tumble-dryer) -- [Washer Dryer](https://github.com/Andre0512/hon#washer-dryer) -- [Oven](https://github.com/Andre0512/hon#oven) -- [Dish Washer](https://github.com/Andre0512/hon#dish-washer) -- [Air conditioner](https://github.com/Andre0512/hon#air-conditioner) -- [Fridge](https://github.com/Andre0512/hon#fridge) -- [Induction Hob](https://github.com/Andre0512/hon#induction-hob) [BETA] -- [Hood](https://github.com/Andre0512/hon#hood) [BETA] -- [Wine Cellar](https://github.com/Andre0512/hon#wine-cellar) [BETA] -- [Air Purifier](https://github.com/Andre0512/hon#air-purifier) [BETA] - -## Installation -**Method 1:** [![Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?owner=Andre0512&repository=hon&category=integration) - -**Method 2:** [HACS](https://hacs.xyz/) > Integrations > Add Integration > **Haier hOn** > Install - -**Method 3:** Manually copy `hon` folder from [latest release](https://github.com/Andre0512/hon/releases/latest) to `config/custom_components` folder. - -_Restart Home Assistant_ - -## Configuration - -**Method 1**: [![Open your Home Assistant instance and start setting up a new integration.](https://my.home-assistant.io/badges/config_flow_start.svg)](https://my.home-assistant.io/redirect/config_flow_start/?domain=hon) - -**Method 2**: Settings > Devices & Services > Add Integration > **Haier hOn** -_If the integration is not in the list, you need to clear the browser cache._ - -## Examples _Click to expand..._ +
- Washing Machine +Air Conditioner -![Washing Machine](assets/example_wm.png) -
-
- Tumble Dryer +### Air Conditioner Example +![Air Conditioner](assets/example_ac.png) -![Tumble Dryer](assets/example_td.png) -
-
- Washer Dryer +### Supported Air Conditioner models +Support has been confirmed for these **22 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). -![Washer Dryer](assets/example_wd.png) -
-
- Oven +#### Haier +- AD105S2SM3FA +- AD71S2SM3FA(H) +- AS07TS4HRA-M +- AS07TS5HRA +- AS09TS4HRA-M +- AS25PBAHRA +- AS25S2SF1FA +- AS25TADHRA-2 +- AS25TEDHRA(M1) +- AS25THMHRA-C +- AS25XCAHRA +- AS35PBAHRA +- AS35S2SF1FA +- AS35S2SF2FA-3 +- AS35TADHRA-2 +- AS35TAMHRA-C +- AS35TEDHRA(M1) +- AS35XCAHRA +- AS50S2SF1FA +- AS50S2SF2FA-1 +- AS50XCAHR -![Oven](assets/example_ov.png) -
-
- Dish Washer +#### Candy +- CY-12TAIN -![Dish Washer](assets/example_dw.png) -
-
- Air conditioner - -![Air conditioner](assets/example_ac.png) -
-
- Fridge - -![Fridge](assets/example_ref.png) -
-
- Wine Cellar - -![Wine Cellar](assets/example_wc.png) -
-
- Air Purifier - -![Air Purifier](assets/example_ap.png) -
- -## Supported Models -Support has been confirmed for these **110 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). - - -| | **Haier** | **Hoover** | **Candy** | -|---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------| -| **Washing Machine** | HW80-B14959TU1
HW80-B14959S8U1S
HW80-B14979TU1
HW90-B14TEAM5
HW90-B14959U1
HW90-B14959S8U1
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H5WPB447AMBC/1-S
H7W 412MBCR-80
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 28AMBS/1-S
HW 410AMBCB/1-80
HW 411AMBCB/1-80
HW 49AMC/1-80
HW 68AMC/1-80
HW4 37AMBS/1-S
HW4 37XMBB/1-S
HWB 410AMC/1-80
HWB 414AMC/1-80
HWE 49AMBS/1-S
HWP 48AMBCR/1-S
HWPD 69AMBC/1-S
HWPDQ49AMBC/1-S
HWPD 610AMBC/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
RO4H7A2TEX-S
ROW42646DWMC-07
RP 696BWMRR/1-S | -| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5
HD90-A2959
HD90-A3959
HD90-A2959S | HLE H9A2TCE-80
HLE C10DCE-80
NDE H10A2TCE-80
NDE H10RA2TCE-80
NDE H9A2TSBEXS-S
NDP H9A3TCBEXS-S | BCTDH7A1TE
CSOE C10TREX-47
CSOE C10DE-80
CSOE H9A2DE-S
ROE H9A3TCEX-S
ROE H10A2TCE-07 | -| **Washer Dryer** | HWD80-B14979U1
HWD100-B14979
HWD100-B14978
HWD100-B14959U1 | HD 485AMBB/1-S
HD 495AMC/1-S
HD 4106AMC/1-80
HDB 5106AMC/1-80
HDQ 496AMBS/1-S
HDP 4149AMBC/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S
RPW4966BWMR/1-S | -| **Oven** | HWO60SM2F3XH | HSOT3161WG | | -| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HDPN 4S603PW/E
HFB 5B2D3FW
HFB 6B2S3FX | | -| **Air Conditioner** | AD71S2SM3FA(H)
AD105S2SM3FA
AS07TS4HRA-M
AS07TS5HRA
AS09TS4HRA-M
AS25PBAHRA
AS25S2SF1FA
AS25TADHRA-2
AS25TEDHRA(M1)
AS25THMHRA-C
AS25XCAHRA
AS35PBAHRA
AS35S2SF1FA
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1)
AS35XCAHRA
AS50S2SF1FA
AS50S2SF2FA-1
AS50XCAHRA | | CY-12TAIN | -| **Fridge** | HFW7720ENMB
HFW7819EWMP
HSW59F18EIPT
HTW5620DNMG | | CCE4T620EB
CCE4T620EWU
CCE4T618EW | -| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | -| **Hood** | HADG6DS46BWIFI | | | -| **Wine Cellar** | HWS247FDU1
HWS42GDAU1 | | | -| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011
HHP70CAH011 | | - -| Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data).
This helps us to develop new features and not to break compatibility in newer versions. | -|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| - -## Supported Languages -Translation of internal names like programs are available for all languages which are official supported by the hOn app: -* 🇨🇳 Chinese -* 🇭🇷 Croatian -* 🇨🇿 Czech -* 🇳🇱 Dutch -* 🇬🇧 English -* 🇫🇷 French -* 🇩🇪 German -* 🇬🇷 Greek -* 🇮🇱 Hebrew -* 🇮🇹 Italian -* 🇵🇱 Polish -* 🇵🇹 Portuguese -* 🇷🇴 Romanian -* 🇷🇺 Russian -* 🇷🇸 Serbian -* 🇸🇰 Slovak -* 🇸🇮 Slovenian -* 🇪🇸 Spanish -* 🇹🇷 Turkish - -## Compatiblity -Haier offers different apps for different markets. Some appliances are compatible with more than one app. This integration only supports appliances that can be controlled via hOn. Please download the hOn app and check compatibilty before you open an issue. -The apps on this (incomplete) list have been requested so far: - -| App | Main Market | Supported | Alternative | -|-----------------|---------------|-----------------------------------------|---------------------------------------------------------------------------------| -| Haier hOn | Europe | :heavy_check_mark: | | -| Candy simply-Fi | Europe | :grey_question: (only newer appliances) | [ofalvai/home-assistant-candy](https://github.com/ofalvai/home-assistant-candy) | -| Hoover Wizard | Europe | :grey_question: (only newer appliances) | | -| Haier Uhome | China | :x: | [banto6/haier](https://github.com/banto6/haier) | -| Haier U+ | China | :x: | | -| GE SmartHQ | North America | :x: | [simbaja/ha_gehome](https://github.com/simbaja/ha_gehome) | -| Haier Evo | Russia | :x: | | - -## Contribute -Any kind of contribution is welcome! -### Read out device data -If you want to make a request for adding new appliances or additional attributes and don't want to use the command line, here is how you can read out your device data. -For every device exists a button under diagnostics which can be used to log all info of your appliance. -1. Press the button to create a notification -2. Open home assistant notifications and copy the message (Crtl+A, Ctrl+C) -### Add appliances or additional attributes -1. Install [pyhOn](https://github.com/Andre0512/pyhOn) - ```commandline - $ pip install pyhOn - ``` -2. Use the command line tool to read out all appliance data from your account - ```commandline - $ pyhOn - User for hOn account: user.name@example.com - Password for hOn account: ******** - ========== WM - Washing Machine ========== - commands: - pauseProgram: pauseProgram command - resumeProgram: resumeProgram command - startProgram: startProgram command - stopProgram: stopProgram command - data: - actualWeight: 0 - airWashTempLevel: 0 - airWashTime: 0 - antiAllergyStatus: 0 - ... - ``` -3. Fork this repository and clone it to your local machine -4. Add the keys of the attributes you'd like to have as `EntityDescription` into this Repository - _Example: Add pause button_ - ```python - BUTTONS: dict[str, tuple[ButtonEntityDescription, ...]] = { - "WM": ( # WM is the applianceTypeName - ButtonEntityDescription( - key="pauseProgram", # key from pyhOn - name="Pause Program", # name in home assistant - icon="mdi:pause", # icon in home assistant - ... - ), - ... - ``` -5. Create a [pull request](https://github.com/Andre0512/hon/pulls) - -#### Tips and Tricks -- If you want to have some states humanreadable, have a look at the `translation_key` parameter of the `EntityDescription`. -- If you need to implement some more logic, create a pull request to the underlying library. There we collect special requirements in the `appliances` directory. -- Use [pyhOn's translate command](https://github.com/Andre0512/pyhOn#translation) to read out the official translations - -## Special Thanks -- to [@alexandre-leites](https://github.com/alexandre-leites), [@MiguelAngelLV](https://github.com/MiguelAngelLV) and [@drudgebg](https://github.com/drudgebg) for contributing early to this project and adding new integrations. -- to [gvigroux/hon](https://github.com/gvigroux/hon), [signalize/hon-app-research](https://github.com/signalize/hon-app-research) and [slegars56/hon](https://github.com/slegars56/hon) for inspiring me to do this integration and for doing pioneer work on the hOn api. -- to everyone who contributed, created an issue, gave this repo a star, and used this integration. -- to the patience of my girlfriend as I work on this integration. - -## Support -If you find this project helpful and would like to support its development, you can buy me a coffee! ☕ - -[!["Buy Me A Coffee"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/andre0512) - -Don't forget to star the repository if you found it useful! ⭐ - -## Appliance Features - -### Air Conditioner +### Air Conditioner Entities #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | @@ -254,7 +92,24 @@ Don't forget to star the repository if you found it useful! ⭐ | Program | `play` | `sensor` | `programName` | | Selected Temperature | `thermometer` | `sensor` | `tempSel` | -### Air Purifier + + +
+Air Purifier + +### Air Purifier Example +![Air Purifier](assets/example_ap.png) + +### Supported Air Purifier models +Support has been confirmed for these **4 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). + +#### Hoover +- HHP30C011 +- HHP50CA001 +- HHP50CA011 +- HHP70CAH011 + +### Air Purifier Entities #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | @@ -283,7 +138,27 @@ Don't forget to star the repository if you found it useful! ⭐ | VOC | | `sensor` | `vocValueIndoor` | | Wind Speed | `fan` | `sensor` | `windSpeed` | -### Dish Washer +
+ +
+Dish Washer + +### Dish Washer Example +![Dish Washer](assets/example_dw.png) + +### Supported Dish Washer models +Support has been confirmed for these **5 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). + +#### Haier +- XIB 3B2SFS-80 +- XIB 6B2D3FB + +#### Hoover +- HDPN 4S603PW/E +- HFB 5B2D3FW +- HFB 6B2S3FX + +### Dish Washer Entities #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | @@ -316,7 +191,18 @@ Don't forget to star the repository if you found it useful! ⭐ | Rinse Aid | `spray-bottle` | `binary_sensor` | `rinseAidStatus` | | Salt | `shaker-outline` | `binary_sensor` | `saltStatus` | -### Hood +
+ +
+Hood + +### Supported Hood models +Support has been confirmed for these **1 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). + +#### Haier +- HADG6DS46BWIFI + +### Hood Entities #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | @@ -339,7 +225,21 @@ Don't forget to star the repository if you found it useful! ⭐ | RGB Light Color | `lightbulb` | `sensor` | `rgbLightColors` | | RGB Light Status | `lightbulb` | `sensor` | `rgbLightStatus` | -### Induction Hob +
+ +
+Induction Hob + +### Supported Induction Hob models +Support has been confirmed for these **2 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). + +#### Haier +- HA2MTSJ68MC + +#### Candy +- CIS633SCTTWIFI + +### Induction Hob Entities #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | @@ -364,7 +264,24 @@ Don't forget to star the repository if you found it useful! ⭐ | Remaining Time | `timer` | `sensor` | `remainingTimeMM` | | Temperature | `thermometer` | `sensor` | `temp` | -### Oven +
+ +
+Oven + +### Oven Example +![Oven](assets/example_ov.png) + +### Supported Oven models +Support has been confirmed for these **2 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). + +#### Haier +- HWO60SM2F3XH + +#### Hoover +- HSOT3161WG + +### Oven Entities #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | @@ -389,7 +306,29 @@ Don't forget to star the repository if you found it useful! ⭐ | Temperature | `thermometer` | `sensor` | `temp` | | Temperature Selected | `thermometer` | `sensor` | `tempSel` | -### Fridge +
+ +
+Fridge + +### Fridge Example +![Fridge](assets/example_ref.png) + +### Supported Fridge models +Support has been confirmed for these **7 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). + +#### Haier +- HFW7720ENMB +- HFW7819EWMP +- HSW59F18EIPT +- HTW5620DNMG + +#### Candy +- CE4T620EB +- CCE4T620EWU +- CCE4T618EW + +### Fridge Entities #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | @@ -427,7 +366,43 @@ Don't forget to star the repository if you found it useful! ⭐ | Temperature Freezer | `snowflake-thermometer` | `sensor` | `tempZ2` | | Temperature Fridge | `thermometer` | `sensor` | `tempZ1` | -### Tumble Dryer +
+ +
+Tumble Dryer + +### Tumble Dryer Example +![Tumble Dryer](assets/example_td.png) + +### Supported Tumble Dryer models +Support has been confirmed for these **19 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). + +#### Haier +- HD80-A3959 +- HD90-A3TEAM5 +- HD90-A2959 +- HD90-A2959S +- HD90-A3959 + +#### Hoover +- HLE H8A2TE-S +- HLE H9A2TCE-80 +- HLE C10DCE-80 +- NDE H10A2TCE-80 +- NDE H10RA2TCE-80 +- NDE H9A2TSBEXS-S +- NDP H9A3TCBEXS-S + +#### Candy +- BCTDH7A1TE +- CSOE C10DE-80 +- CSOE C10TREX-47 +- CSOE H9A2DE-S +- ROE H9A2TCE-80 +- ROE H9A3TCEX-S +- ROE H10A2TCE-07 + +### Tumble Dryer Entities #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | @@ -461,7 +436,22 @@ Don't forget to star the repository if you found it useful! ⭐ | Start Time | `clock-start` | `sensor` | `delayTime` | | Temperature level | `thermometer` | `sensor` | `tempLevel` | -### Wine Cellar +
+ +
+Wine Cellar + +### Wine Cellar Example +![Wine Cellar](assets/example_wc.png) + +### Supported Wine Cellar models +Support has been confirmed for these **2 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). + +#### Haier +- HWS247FDU1 +- HWS42GDAU1 + +### Wine Cellar Entities #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | @@ -482,7 +472,37 @@ Don't forget to star the repository if you found it useful! ⭐ | Temperature | `thermometer` | `sensor` | `temp` | | Temperature 2 | `thermometer` | `sensor` | `tempZ2` | -### Washer Dryer +
+ +
+Washer Dryer + +### Washer Dryer Example +![Washer Dryer](assets/example_wd.png) + +### Supported Washer Dryer models +Support has been confirmed for these **13 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). + +#### Haier +- HWD100-B14978 +- HWD100-B14979 +- HWD100-B14959U1 +- HWD80-B14979U1 + +#### Hoover +- HD 4106AMC/1-80 +- HD 485AMBB/1-S +- HD 495AMC/1-S +- HDB 5106AMC/1-80 +- HDQ 496AMBS/1-S +- HDP 4149AMBC/1-S +- HWPS4954DAMR-11 + +#### Candy +- RPW41066BWMR/1-S +- RPW4966BWMR/1-S + +### Washer Dryer Entities #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | @@ -557,7 +577,58 @@ Don't forget to star the repository if you found it useful! ⭐ | Total Wash Cycle | `counter` | `sensor` | `totalWashCycle` | | Total Water | | `sensor` | `totalWaterUsed` | -### Washing Machine +
+ +
+Washing Machine + +### Washing Machine Example +![Washing Machine](assets/example_wm.png) + +### Supported Washing Machine models +Support has been confirmed for these **34 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). + +#### Haier +- HW80-B14959TU1 +- HW80-B14959S8U1S +- HW80-B14979TU1 +- HW90-B14TEAM5 +- HW90-B14959U1 +- HW90-B14959S8U1 +- HW90G-BD14979UD +- HW100-B14959U1 +- HW110-14979 + +#### Hoover +- H5WPB447AMBC/1-S +- H7W 412MBCR-80 +- H7W4 48MBC-S +- HLWPS495TAMBE-11 +- HW 28AMBS/1-S +- HW 410AMBCB/1-80 +- HW 411AMBCB/1-80 +- HW 49AMC/1-80 +- HW 68AMC/1-80 +- HW4 37AMBS/1-S +- HW4 37XMBB/1-S +- HWB 410AMC/1-80 +- HWB 414AMC/1-80 +- HWE 49AMBS/1-S +- HWP 48AMBCR/1-S +- HWPD 69AMBC/1-S +- HWPDQ49AMBC/1-S +- HWPD 610AMBC/1-S + +#### Candy +- CO4 107T1/2-07 +- CBWO49TWME-S +- RO14126DWMST-S +- RO441286DWMC4-07 +- RO4H7A2TEX-S +- ROW42646DWMC-07 +- RP 696BWMRR/1-S + +### Washing Machine Entities #### Controls | Name | Icon | Entity | Key | | --- | --- | --- | --- | @@ -620,3 +691,128 @@ Don't forget to star the repository if you found it useful! ⭐ | Total Power | | `sensor` | `totalElectricityUsed` | | Total Wash Cycle | `counter` | `sensor` | `totalWashCycle` | | Total Water | | `sensor` | `totalWaterUsed` | + +
+ + +## Installation +**Method 1:** [![Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?owner=Andre0512&repository=hon&category=integration) + +**Method 2:** [HACS](https://hacs.xyz/) > Integrations > Add Integration > **Haier hOn** > Install + +**Method 3:** Manually copy `hon` folder from [latest release](https://github.com/Andre0512/hon/releases/latest) to `config/custom_components` folder. + +_Restart Home Assistant_ + +## Configuration + +**Method 1**: [![Open your Home Assistant instance and start setting up a new integration.](https://my.home-assistant.io/badges/config_flow_start.svg)](https://my.home-assistant.io/redirect/config_flow_start/?domain=hon) + +**Method 2**: Settings > Devices & Services > Add Integration > **Haier hOn** +_If the integration is not in the list, you need to clear the browser cache._ + +## Supported Languages +Translation of internal names like programs are available for all languages which are official supported by the hOn app: +* 🇨🇳 Chinese +* 🇭🇷 Croatian +* 🇨🇿 Czech +* 🇳🇱 Dutch +* 🇬🇧 English +* 🇫🇷 French +* 🇩🇪 German +* 🇬🇷 Greek +* 🇮🇱 Hebrew +* 🇮🇹 Italian +* 🇵🇱 Polish +* 🇵🇹 Portuguese +* 🇷🇴 Romanian +* 🇷🇺 Russian +* 🇷🇸 Serbian +* 🇸🇰 Slovak +* 🇸🇮 Slovenian +* 🇪🇸 Spanish +* 🇹🇷 Turkish + +## Compatiblity +Haier offers different apps for different markets. Some appliances are compatible with more than one app. This integration only supports appliances that can be controlled via hOn. Please download the hOn app and check compatibilty before you open an issue. +The apps on this (incomplete) list have been requested so far: + +| App | Main Market | Supported | Alternative | +|-----------------|---------------|-----------------------------------------|---------------------------------------------------------------------------------| +| Haier hOn | Europe | :heavy_check_mark: | | +| Candy simply-Fi | Europe | :grey_question: (only newer appliances) | [ofalvai/home-assistant-candy](https://github.com/ofalvai/home-assistant-candy) | +| Hoover Wizard | Europe | :grey_question: (only newer appliances) | | +| Haier Uhome | China | :x: | [banto6/haier](https://github.com/banto6/haier) | +| Haier U+ | China | :x: | | +| GE SmartHQ | North America | :x: | [simbaja/ha_gehome](https://github.com/simbaja/ha_gehome) | +| Haier Evo | Russia | :x: | | + +## Contribute +Any kind of contribution is welcome! + + +| Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data).
This helps us to develop new features and not to break compatibility in newer versions. | +|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + + +### Read out device data +If you want to make a request for adding new appliances or additional attributes and don't want to use the command line, here is how you can read out your device data. +For every device exists a button under diagnostics which can be used to log all info of your appliance. +1. Press the button to create a notification +2. Open home assistant notifications and copy the message (Crtl+A, Ctrl+C) +### Add appliances or additional attributes +1. Install [pyhOn](https://github.com/Andre0512/pyhOn) + ```commandline + $ pip install pyhOn + ``` +2. Use the command line tool to read out all appliance data from your account + ```commandline + $ pyhOn + User for hOn account: user.name@example.com + Password for hOn account: ******** + ========== WM - Washing Machine ========== + commands: + pauseProgram: pauseProgram command + resumeProgram: resumeProgram command + startProgram: startProgram command + stopProgram: stopProgram command + data: + actualWeight: 0 + airWashTempLevel: 0 + airWashTime: 0 + antiAllergyStatus: 0 + ... + ``` +3. Fork this repository and clone it to your local machine +4. Add the keys of the attributes you'd like to have as `EntityDescription` into this Repository + _Example: Add pause button_ + ```python + BUTTONS: dict[str, tuple[ButtonEntityDescription, ...]] = { + "WM": ( # WM is the applianceTypeName + ButtonEntityDescription( + key="pauseProgram", # key from pyhOn + name="Pause Program", # name in home assistant + icon="mdi:pause", # icon in home assistant + ... + ), + ... + ``` +5. Create a [pull request](https://github.com/Andre0512/hon/pulls) + +#### Tips and Tricks +- If you want to have some states humanreadable, have a look at the `translation_key` parameter of the `EntityDescription`. +- If you need to implement some more logic, create a pull request to the underlying library. There we collect special requirements in the `appliances` directory. +- Use [pyhOn's translate command](https://github.com/Andre0512/pyhOn#translation) to read out the official translations + +## Special Thanks +- to [@alexandre-leites](https://github.com/alexandre-leites), [@MiguelAngelLV](https://github.com/MiguelAngelLV) and [@drudgebg](https://github.com/drudgebg) for contributing early to this project and adding new integrations. +- to [gvigroux/hon](https://github.com/gvigroux/hon), [signalize/hon-app-research](https://github.com/signalize/hon-app-research) and [slegars56/hon](https://github.com/slegars56/hon) for inspiring me to do this integration and for doing pioneer work on the hOn api. +- to everyone who contributed, created an issue, gave this repo a star, and used this integration. +- to the patience of my girlfriend as I work on this integration. + +## Support +If you find this project helpful and would like to support its development, you can buy me a coffee! ☕ + +[!["Buy Me A Coffee"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/andre0512) + +Don't forget to star the repository if you found it useful! ⭐ diff --git a/info.md b/info.md index 4cfde05..ea2aec7 100644 --- a/info.md +++ b/info.md @@ -4,28 +4,691 @@ [![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-donate-orange.svg)](https://www.buymeacoffee.com/andre0512) --- -H7W4 48MBC-S Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.com/) based on [pyhOn](https://github.com/Andre0512/pyhon). --- [![Supported Languages](https://img.shields.io/badge/Languages-19-royalblue)](https://github.com/Andre0512/hon#supported-languages) [![Supported Appliances](https://img.shields.io/badge/Appliances-11-forestgreen)](https://github.com/Andre0512/hon#supported-appliances) -[![Supported Models](https://img.shields.io/badge/Models-110-yellowgreen)](https://github.com/Andre0512/hon#supported-models) -[![Supported Entities](https://img.shields.io/badge/Entities-317-crimson)](https://github.com/Andre0512/hon#appliance-features) +[![Supported Models](https://img.shields.io/badge/Models-111-yellowgreen)](https://github.com/Andre0512/hon#supported-appliances) +[![Supported Entities](https://img.shields.io/badge/Entities-317-crimson)](https://github.com/Andre0512/hon#supported-appliances) ## Supported Appliances -- [Washing Machine](https://github.com/Andre0512/hon#washing-machine) -- [Tumble Dryer](https://github.com/Andre0512/hon#tumble-dryer) -- [Washer Dryer](https://github.com/Andre0512/hon#washer-dryer) -- [Oven](https://github.com/Andre0512/hon#oven) -- [Dish Washer](https://github.com/Andre0512/hon#dish-washer) -- [Air Conditioner](https://github.com/Andre0512/hon#air-conditioner) -- [Fridge](https://github.com/Andre0512/hon#fridge) -- [Induction Hob](https://github.com/Andre0512/hon#induction-hob) [BETA] -- [Hood](https://github.com/Andre0512/hon#hood) [BETA] -- [Wine Cellar](https://github.com/Andre0512/hon#wine-cellar) [BETA] -- [Air Purifier](https://github.com/Andre0512/hon#air-purifier) [BETA] +_Click to expand..._ + +
+Air Conditioner + +### Air Conditioner Example +![Air Conditioner](assets/example_ac.png) + +### Supported Air Conditioner models +Support has been confirmed for these **22 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). + +#### Haier +- AD105S2SM3FA +- AD71S2SM3FA(H) +- AS07TS4HRA-M +- AS07TS5HRA +- AS09TS4HRA-M +- AS25PBAHRA +- AS25S2SF1FA +- AS25TADHRA-2 +- AS25TEDHRA(M1) +- AS25THMHRA-C +- AS25XCAHRA +- AS35PBAHRA +- AS35S2SF1FA +- AS35S2SF2FA-3 +- AS35TADHRA-2 +- AS35TAMHRA-C +- AS35TEDHRA(M1) +- AS35XCAHRA +- AS50S2SF1FA +- AS50S2SF2FA-1 +- AS50XCAHR + +#### Candy +- CY-12TAIN + +### Air Conditioner Entities +#### Controls +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| 10° Heating | `heat-wave` | `switch` | `10degreeHeatingStatus` | +| Air Conditioner | `air-conditioner` | `climate` | `settings` | +| Echo | `account-voice` | `switch` | `echoStatus` | +| Eco Mode | `sprout` | `switch` | `ecoMode` | +| Eco Pilot | `run` | `select` | `settings.humanSensingStatus` | +| Fan Direction Horizontal | `fan` | `select` | `settings.windDirectionHorizontal` | +| Fan Direction Vertical | `fan` | `select` | `settings.windDirectionVertical` | +| Health Mode | `medication-outline` | `switch` | `healthMode` | +| Night Mode | `bed` | `switch` | `silentSleepStatus` | +| Rapid Mode | `run-fast` | `switch` | `rapidMode` | +| Screen Display | `monitor-small` | `switch` | `screenDisplayStatus` | +| Self Cleaning | `air-filter` | `switch` | `selfCleaningStatus` | +| Self Cleaning 56 | `air-filter` | `switch` | `selfCleaning56Status` | +| Silent Mode | `volume-off` | `switch` | `muteStatus` | +| Target Temperature | `thermometer` | `number` | `settings.tempSel` | +#### Sensors +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Air Temperature Outdoor | `thermometer` | `sensor` | `tempAirOutdoor` | +| Ch2O Cleaning | | `binary_sensor` | `ch2oCleaningStatus` | +| Coiler Temperature Indoor | `thermometer` | `sensor` | `tempCoilerIndoor` | +| Coiler Temperature Outside | `thermometer` | `sensor` | `tempCoilerOutdoor` | +| Defrost Temperature Outdoor | `thermometer` | `sensor` | `tempDefrostOutdoor` | +| Filter Replacement | | `binary_sensor` | `filterChangeStatusLocal` | +| In Air Temperature Outdoor | `thermometer` | `sensor` | `tempInAirOutdoor` | +| Indoor Temperature | `thermometer` | `sensor` | `tempIndoor` | +| Machine Status | `information` | `sensor` | `machMode` | +| Outdoor Temperature | `thermometer` | `sensor` | `tempOutdoor` | +| Program | | `select` | `startProgram.program` | +| Program | `play` | `sensor` | `programName` | +| Selected Temperature | `thermometer` | `sensor` | `tempSel` | + +
+ +
+Air Purifier + +### Air Purifier Example +![Air Purifier](assets/example_ap.png) + +### Supported Air Purifier models +Support has been confirmed for these **4 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). + +#### Hoover +- HHP30C011 +- HHP50CA001 +- HHP50CA011 +- HHP70CAH011 + +### Air Purifier Entities +#### Controls +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Aroma Time Off | `scent-off` | `number` | `settings.aromaTimeOff` | +| Aroma Time On | `scent` | `number` | `settings.aromaTimeOn` | +| Diffuser Level | `air-purifier` | `select` | `settings.aromaStatus` | +| Light status | | `light` | `settings.lightStatus` | +| Lock Status | | `lock` | `lockStatus` | +| Mode | `play` | `select` | `settings.machMode` | +| Pollen Level | `flower-pollen` | `number` | `settings.pollenLevel` | +| Touch Tone | `account-voice` | `switch` | `touchToneStatus` | +#### Sensors +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Air Quality | `weather-dust` | `sensor` | `airQuality` | +| CO Level | | `sensor` | `coLevel` | +| Error | `math-log` | `sensor` | `errors` | +| Humidity | | `sensor` | `humidityIndoor` | +| Main Filter Status | `air-filter` | `sensor` | `mainFilterStatus` | +| On | `power-cycle` | `binary_sensor` | `attributes.parameters.onOffStatus` | +| PM 10 | | `sensor` | `pm10ValueIndoor` | +| PM 2.5 | | `sensor` | `pm2p5ValueIndoor` | +| Pre Filter Status | `air-filter` | `sensor` | `preFilterStatus` | +| Temperature | | `sensor` | `temp` | +| Total Work Time | | `sensor` | `totalWorkTime` | +| VOC | | `sensor` | `vocValueIndoor` | +| Wind Speed | `fan` | `sensor` | `windSpeed` | + +
+ +
+Dish Washer + +### Dish Washer Example +![Dish Washer](assets/example_dw.png) + +### Supported Dish Washer models +Support has been confirmed for these **5 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). + +#### Haier +- XIB 3B2SFS-80 +- XIB 6B2D3FB + +#### Hoover +- HDPN 4S603PW/E +- HFB 5B2D3FW +- HFB 6B2S3FX + +### Dish Washer Entities +#### Controls +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Buzzer Disabled | `volume-off` | `switch` | `buzzerDisabled` | +| Dish Washer | `dishwasher` | `switch` | `startProgram` / `stopProgram` | +#### Configs +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Add Dish | `silverware-fork-knife` | `switch` | `startProgram.addDish` | +| Delay time | `timer-plus` | `number` | `startProgram.delayTime` | +| Eco Express | `sprout` | `switch` | `startProgram.ecoExpress` | +| Extra Dry | `hair-dryer` | `switch` | `startProgram.extraDry` | +| Half Load | `fraction-one-half` | `switch` | `startProgram.halfLoad` | +| Open Door | `door-open` | `switch` | `startProgram.openDoor` | +| Program | | `select` | `startProgram.program` | +| Remaining Time | `timer` | `select` | `startProgram.remainingTime` | +| Temperature | `thermometer` | `select` | `startProgram.temp` | +| Three in One | `numeric-3-box-outline` | `switch` | `startProgram.threeInOne` | +| Water hard | `water` | `number` | `startProgram.waterHard` | +#### Sensors +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Connection | | `binary_sensor` | `attributes.lastConnEvent.category` | +| Door | | `binary_sensor` | `doorStatus` | +| Error | `math-log` | `sensor` | `errors` | +| Machine Status | `information` | `sensor` | `machMode` | +| Program | `play` | `sensor` | `programName` | +| Program Phase | `washing-machine` | `sensor` | `prPhase` | +| Remaining Time | `timer` | `sensor` | `remainingTimeMM` | +| Rinse Aid | `spray-bottle` | `binary_sensor` | `rinseAidStatus` | +| Salt | `shaker-outline` | `binary_sensor` | `saltStatus` | + +
+ +
+Hood + +### Supported Hood models +Support has been confirmed for these **1 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). + +#### Haier +- HADG6DS46BWIFI + +### Hood Entities +#### Controls +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Hood | `hvac` | `switch` | `startProgram` / `stopProgram` | +| Light status | | `light` | `settings.lightStatus` | +| Wind Speed | | `fan` | `settings.windSpeed` | +#### Sensors +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Delay time | `clock-start` | `sensor` | `delayTime` | +| Delay time status | `clock-start` | `sensor` | `delayTimeStatus` | +| Errors | `alert-circle` | `sensor` | `errors` | +| Filter Cleaning Alarm Status | | `sensor` | `filterCleaningAlarmStatus` | +| Filter Cleaning Status | | `sensor` | `filterCleaningStatus` | +| Last Work Time | `clock-start` | `sensor` | `lastWorkTime` | +| Light Status | `lightbulb` | `sensor` | `lightStatus` | +| Mach Mode | | `sensor` | `machMode` | +| On / Off Status | `lightbulb` | `sensor` | `onOffStatus` | +| Quick Delay Time Status | | `sensor` | `quickDelayTimeStatus` | +| RGB Light Color | `lightbulb` | `sensor` | `rgbLightColors` | +| RGB Light Status | `lightbulb` | `sensor` | `rgbLightStatus` | + +
+ +
+Induction Hob + +### Supported Induction Hob models +Support has been confirmed for these **2 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). + +#### Haier +- HA2MTSJ68MC + +#### Candy +- CIS633SCTTWIFI + +### Induction Hob Entities +#### Controls +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Start Program | `pot-steam` | `button` | `startProgram` | +#### Configs +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Power Management | `timelapse` | `number` | `startProgram.powerManagement` | +| Program | | `select` | `startProgram.program` | +| Temperature | `thermometer` | `number` | `startProgram.temp` | +#### Sensors +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Connection | `wifi` | `binary_sensor` | `attributes.lastConnEvent.category` | +| Error | `math-log` | `sensor` | `errors` | +| Hob Lock | | `binary_sensor` | `hobLockStatus` | +| Hot Status | | `binary_sensor` | `hotStatus` | +| On | `power-cycle` | `binary_sensor` | `attributes.parameters.onOffStatus` | +| Pan Status | `pot-mix` | `binary_sensor` | `panStatus` | +| Power | `lightning-bolt` | `sensor` | `power` | +| Program | `play` | `sensor` | `programName` | +| Remaining Time | `timer` | `sensor` | `remainingTimeMM` | +| Temperature | `thermometer` | `sensor` | `temp` | + +
+ +
+Oven + +### Oven Example +![Oven](assets/example_ov.png) + +### Supported Oven models +Support has been confirmed for these **2 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). + +#### Haier +- HWO60SM2F3XH + +#### Hoover +- HSOT3161WG + +### Oven Entities +#### Controls +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Oven | `thermometer` | `climate` | `settings.tempSel` | +| Oven | `toaster-oven` | `switch` | `startProgram` / `stopProgram` | +#### Configs +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Delay time | `timer-plus` | `number` | `startProgram.delayTime` | +| Preheat | `thermometer-chevron-up` | `switch` | `startProgram.preheatStatus` | +| Program | | `select` | `startProgram.program` | +| Program Duration | `timelapse` | `number` | `startProgram.prTime` | +| Target Temperature | `thermometer` | `number` | `startProgram.tempSel` | +#### Sensors +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Connection | `wifi` | `binary_sensor` | `attributes.lastConnEvent.category` | +| On | `power-cycle` | `binary_sensor` | `attributes.parameters.onOffStatus` | +| Program | `play` | `sensor` | `programName` | +| Remaining Time | `timer` | `sensor` | `remainingTimeMM` | +| Start Time | `clock-start` | `sensor` | `delayTime` | +| Temperature | `thermometer` | `sensor` | `temp` | +| Temperature Selected | `thermometer` | `sensor` | `tempSel` | + +
+ +
+Fridge + +### Fridge Example +![Fridge](assets/example_ref.png) + +### Supported Fridge models +Support has been confirmed for these **7 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). + +#### Haier +- HFW7720ENMB +- HFW7819EWMP +- HSW59F18EIPT +- HTW5620DNMG + +#### Candy +- CE4T620EB +- CCE4T620EWU +- CCE4T618EW + +### Fridge Entities +#### Controls +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Auto-Set Mode | `thermometer-auto` | `switch` | `intelligenceMode` | +| Freezer | `snowflake-thermometer` | `climate` | `settings.tempSelZ2` | +| Freezer Temperature | `thermometer` | `number` | `settings.tempSelZ2` | +| Fridge | `thermometer` | `climate` | `settings.tempSelZ1` | +| Fridge Temperature | `thermometer` | `number` | `settings.tempSelZ1` | +| MyZone | `thermometer` | `climate` | `settings.tempSelZ3` | +| MyZone Temperature | `thermometer` | `number` | `settings.tempSelZ3` | +| Program Start | `play` | `button` | `startProgram` | +| Program Stop | `stop` | `button` | `stopProgram` | +| Super Cool | `snowflake` | `switch` | `quickModeZ1` | +| Super Freeze | `snowflake-variant` | `switch` | `quickModeZ2` | +#### Configs +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Program | | `select` | `startProgram.program` | +| Zone | `radiobox-marked` | `select` | `startProgram.zone` | +#### Sensors +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Auto-Set Mode | `thermometer-auto` | `binary_sensor` | `intelligenceMode` | +| Door1 Status Freezer | `fridge-bottom` | `binary_sensor` | `doorStatusZ2` | +| Door1 Status Fridge | `fridge-top` | `binary_sensor` | `doorStatusZ1` | +| Door2 Status Freezer | `fridge-bottom` | `binary_sensor` | `door2StatusZ2` | +| Door2 Status Fridge | `fridge-top` | `binary_sensor` | `door2StatusZ1` | +| Error | `math-log` | `sensor` | `errors` | +| Holiday Mode | `palm-tree` | `binary_sensor` | `holidayMode` | +| Humidity Level | `water-outline` | `sensor` | `humidityLevel` | +| Room Humidity | `water-percent` | `sensor` | `humidityEnv` | +| Room Temperature | `home-thermometer-outline` | `sensor` | `tempEnv` | +| Super Cool | `snowflake` | `binary_sensor` | `quickModeZ1` | +| Super Freeze | `snowflake-variant` | `binary_sensor` | `quickModeZ2` | +| Temperature Freezer | `snowflake-thermometer` | `sensor` | `tempZ2` | +| Temperature Fridge | `thermometer` | `sensor` | `tempZ1` | + +
+ +
+Tumble Dryer + +### Tumble Dryer Example +![Tumble Dryer](assets/example_td.png) + +### Supported Tumble Dryer models +Support has been confirmed for these **19 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). + +#### Haier +- HD80-A3959 +- HD90-A3TEAM5 +- HD90-A2959 +- HD90-A2959S +- HD90-A3959 + +#### Hoover +- HLE H8A2TE-S +- HLE H9A2TCE-80 +- HLE C10DCE-80 +- NDE H10A2TCE-80 +- NDE H10RA2TCE-80 +- NDE H9A2TSBEXS-S +- NDP H9A3TCBEXS-S + +#### Candy +- BCTDH7A1TE +- CSOE C10DE-80 +- CSOE C10TREX-47 +- CSOE H9A2DE-S +- ROE H9A2TCE-80 +- ROE H9A3TCEX-S +- ROE H10A2TCE-07 + +### Tumble Dryer Entities +#### Controls +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Pause Tumble Dryer | `pause` | `switch` | `pauseProgram` / `resumeProgram` | +| Tumble Dryer | `tumble-dryer` | `switch` | `startProgram` / `stopProgram` | +#### Configs +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Anti-Crease | `iron` | `switch` | `startProgram.antiCreaseTime` | +| Anti-Crease | `iron` | `switch` | `startProgram.anticrease` | +| Delay time | `timer-plus` | `number` | `startProgram.delayTime` | +| Dry Time | | `number` | `startProgram.dryTime` | +| Dry Time | `timer` | `select` | `startProgram.dryTimeMM` | +| Dry level | `hair-dryer` | `select` | `startProgram.dryLevel` | +| Program | | `select` | `startProgram.program` | +| Sterilization | `lotion-plus` | `switch` | `startProgram.sterilizationStatus` | +| Temperature level | `thermometer` | `number` | `startProgram.tempLevel` | +| Tumbling | `refresh-circle` | `switch` | `startProgram.tumblingStatus` | +#### Sensors +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Anti-Crease | `iron` | `binary_sensor` | `anticrease` | +| Connection | | `binary_sensor` | `attributes.lastConnEvent.category` | +| Door | | `binary_sensor` | `doorStatus` | +| Dry level | `hair-dryer` | `sensor` | `dryLevel` | +| Error | `math-log` | `sensor` | `errors` | +| Machine Status | `information` | `sensor` | `machMode` | +| Program | `play` | `sensor` | `programName` | +| Program Phase | `washing-machine` | `sensor` | `prPhase` | +| Remaining Time | `timer` | `sensor` | `remainingTimeMM` | +| Start Time | `clock-start` | `sensor` | `delayTime` | +| Temperature level | `thermometer` | `sensor` | `tempLevel` | + +
+ +
+Wine Cellar + +### Wine Cellar Example +![Wine Cellar](assets/example_wc.png) + +### Supported Wine Cellar models +Support has been confirmed for these **2 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). + +#### Haier +- HWS247FDU1 +- HWS42GDAU1 + +### Wine Cellar Entities +#### Controls +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Light | | `light` | `settings.lightStatus` | +| Sabbath Mode | `palm-tree` | `switch` | `sabbathStatus` | +| Wine Cellar | `thermometer` | `climate` | `settings.tempSel` | +| Wine Cellar | `thermometer` | `climate` | `settings.tempSelZ2` | +#### Sensors +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Error | `math-log` | `sensor` | `errors` | +| Humidity | `water-percent` | `sensor` | `humidityZ1` | +| Humidity 2 | `water-percent` | `sensor` | `humidityZ2` | +| Program | `play` | `sensor` | `programName` | +| Room Temperature | `home-thermometer-outline` | `sensor` | `tempEnv` | +| Selected Temperature | `thermometer` | `sensor` | `tempSel` | +| Selected Temperature 2 | `thermometer` | `sensor` | `tempSelZ2` | +| Temperature | `thermometer` | `sensor` | `temp` | +| Temperature 2 | `thermometer` | `sensor` | `tempZ2` | + +
+ +
+Washer Dryer + +### Washer Dryer Example +![Washer Dryer](assets/example_wd.png) + +### Supported Washer Dryer models +Support has been confirmed for these **13 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). + +#### Haier +- HWD100-B14978 +- HWD100-B14979 +- HWD100-B14959U1 +- HWD80-B14979U1 + +#### Hoover +- HD 4106AMC/1-80 +- HD 485AMBB/1-S +- HD 495AMC/1-S +- HDB 5106AMC/1-80 +- HDQ 496AMBS/1-S +- HDP 4149AMBC/1-S +- HWPS4954DAMR-11 + +#### Candy +- RPW41066BWMR/1-S +- RPW4966BWMR/1-S + +### Washer Dryer Entities +#### Controls +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Auto Dose Detergent | `cup` | `switch` | `autoDetergentStatus` | +| Auto Dose Softener | `teddy-bear` | `switch` | `autoSoftenerStatus` | +| Pause Washer Dryer | `pause` | `switch` | `pauseProgram` / `resumeProgram` | +| Washer Dryer | `washing-machine` | `switch` | `startProgram` / `stopProgram` | +| Water hard | `water` | `number` | `settings.waterHard` | +#### Configs +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Acqua Plus | `water-plus` | `switch` | `startProgram.acquaplus` | +| Anti-Crease | `iron` | `switch` | `startProgram.anticrease` | +| Anti-Crease | `iron` | `switch` | `startProgram.antiCreaseTime` | +| Auto Dose Detergent | `cup` | `switch` | `startProgram.autoDetergentStatus` | +| Auto Dose Softener | `teddy-bear` | `switch` | `startProgram.autoSoftenerStatus` | +| Delay Status | `timer-check` | `switch` | `startProgram.delayStatus` | +| Delay Time | `timer-plus` | `number` | `startProgram.delayTime` | +| Dirty level | `liquid-spot` | `select` | `startProgram.dirtyLevel` | +| Dry Time | | `number` | `startProgram.dryTime` | +| Dry Time | `timer` | `select` | `startProgram.dryTimeMM` | +| Dry level | `hair-dryer` | `select` | `startProgram.dryLevel` | +| Extra Rinse 1 | `numeric-1-box-multiple-outline` | `switch` | `startProgram.extraRinse1` | +| Extra Rinse 2 | `numeric-2-box-multiple-outline` | `switch` | `startProgram.extraRinse2` | +| Extra Rinse 3 | `numeric-3-box-multiple-outline` | `switch` | `startProgram.extraRinse3` | +| Good Night | `weather-night` | `switch` | `startProgram.goodNight` | +| Hygiene | `lotion-plus` | `switch` | `startProgram.hygiene` | +| Keep Fresh | `refresh-circle` | `switch` | `startProgram.permanentPressStatus` | +| Main Wash Time | `clock-start` | `number` | `startProgram.mainWashTime` | +| Prewash | `tshirt-crew` | `switch` | `startProgram.prewash` | +| Program | | `select` | `startProgram.program` | +| Rinse Iterations | `rotate-right` | `number` | `startProgram.rinseIterations` | +| Soak Prewash Selection | `tshirt-crew` | `switch` | `startProgram.haier_SoakPrewashSelection` | +| Spin speed | `numeric` | `select` | `startProgram.spinSpeed` | +| Stain Type | `liquid-spot` | `select` | `startProgram.extendedStainType` | +| Steam level | `weather-dust` | `select` | `startProgram.steamLevel` | +| Sterilization | `lotion-plus` | `switch` | `startProgram.sterilizationStatus` | +| Temperature | `thermometer` | `select` | `startProgram.temp` | +| Temperature level | `thermometer` | `number` | `startProgram.tempLevel` | +| Tumbling | `refresh-circle` | `switch` | `startProgram.tumblingStatus` | +| Water hard | `water` | `number` | `startProgram.waterHard` | +| lang | | `number` | `startProgram.lang` | +#### Sensors +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Acqua Plus | `water-plus` | `binary_sensor` | `acquaplus` | +| Anti-Crease | `iron` | `binary_sensor` | `anticrease` | +| Current Electricity Used | `lightning-bolt` | `sensor` | `currentElectricityUsed` | +| Current Temperature | `thermometer` | `sensor` | `temp` | +| Current Water Used | `water` | `sensor` | `currentWaterUsed` | +| Dirty level | `liquid-spot` | `sensor` | `dirtyLevel` | +| Door | | `binary_sensor` | `doorStatus` | +| Door Lock | | `binary_sensor` | `doorLockStatus` | +| Dry level | `hair-dryer` | `sensor` | `dryLevel` | +| Error | `math-log` | `sensor` | `errors` | +| Extra Rinse 1 | `numeric-1-box-multiple-outline` | `binary_sensor` | `extraRinse1` | +| Extra Rinse 2 | `numeric-2-box-multiple-outline` | `binary_sensor` | `extraRinse2` | +| Extra Rinse 3 | `numeric-3-box-multiple-outline` | `binary_sensor` | `extraRinse3` | +| Good Night Mode | `weather-night` | `binary_sensor` | `goodNight` | +| Machine Status | `information` | `sensor` | `machMode` | +| Pre Wash | `tshirt-crew` | `binary_sensor` | `prewash` | +| Program | `play` | `sensor` | `programName` | +| Program Phase | `washing-machine` | `sensor` | `prPhase` | +| Remaining Time | `timer` | `sensor` | `remainingTimeMM` | +| Remote Control | `remote` | `binary_sensor` | `attributes.lastConnEvent.category` | +| Spin Speed | `speedometer` | `sensor` | `spinSpeed` | +| Stain Type | `liquid-spot` | `sensor` | `stainType` | +| Start Time | `clock-start` | `sensor` | `delayTime` | +| Steam level | `weather-dust` | `sensor` | `steamLevel` | +| Temperature level | `thermometer` | `sensor` | `tempLevel` | +| Total Power | | `sensor` | `totalElectricityUsed` | +| Total Wash Cycle | `counter` | `sensor` | `totalWashCycle` | +| Total Water | | `sensor` | `totalWaterUsed` | + +
+ +
+Washing Machine + +### Washing Machine Example +![Washing Machine](assets/example_wm.png) + +### Supported Washing Machine models +Support has been confirmed for these **34 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). + +#### Haier +- HW80-B14959TU1 +- HW80-B14959S8U1S +- HW80-B14979TU1 +- HW90-B14TEAM5 +- HW90-B14959U1 +- HW90-B14959S8U1 +- HW90G-BD14979UD +- HW100-B14959U1 +- HW110-14979 + +#### Hoover +- H5WPB447AMBC/1-S +- H7W 412MBCR-80 +- H7W4 48MBC-S +- HLWPS495TAMBE-11 +- HW 28AMBS/1-S +- HW 410AMBCB/1-80 +- HW 411AMBCB/1-80 +- HW 49AMC/1-80 +- HW 68AMC/1-80 +- HW4 37AMBS/1-S +- HW4 37XMBB/1-S +- HWB 410AMC/1-80 +- HWB 414AMC/1-80 +- HWE 49AMBS/1-S +- HWP 48AMBCR/1-S +- HWPD 69AMBC/1-S +- HWPDQ49AMBC/1-S +- HWPD 610AMBC/1-S + +#### Candy +- CO4 107T1/2-07 +- CBWO49TWME-S +- RO14126DWMST-S +- RO441286DWMC4-07 +- RO4H7A2TEX-S +- ROW42646DWMC-07 +- RP 696BWMRR/1-S + +### Washing Machine Entities +#### Controls +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Auto Dose Detergent | `cup` | `switch` | `autoDetergentStatus` | +| Auto Dose Softener | `teddy-bear` | `switch` | `autoSoftenerStatus` | +| Pause Washing Machine | `pause` | `switch` | `pauseProgram` / `resumeProgram` | +| Washing Machine | `washing-machine` | `switch` | `startProgram` / `stopProgram` | +| Water hard | `water` | `number` | `settings.waterHard` | +#### Configs +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Acqua Plus | `water-plus` | `switch` | `startProgram.acquaplus` | +| Anti-Crease | `iron` | `switch` | `startProgram.anticrease` | +| Auto Dose Detergent | `cup` | `switch` | `startProgram.autoDetergentStatus` | +| Auto Dose Softener | `teddy-bear` | `switch` | `startProgram.autoSoftenerStatus` | +| Delay Status | `timer-check` | `switch` | `startProgram.delayStatus` | +| Delay Time | `timer-plus` | `number` | `startProgram.delayTime` | +| Dirty level | `liquid-spot` | `select` | `startProgram.dirtyLevel` | +| Extra Rinse 1 | `numeric-1-box-multiple-outline` | `switch` | `startProgram.extraRinse1` | +| Extra Rinse 2 | `numeric-2-box-multiple-outline` | `switch` | `startProgram.extraRinse2` | +| Extra Rinse 3 | `numeric-3-box-multiple-outline` | `switch` | `startProgram.extraRinse3` | +| Good Night | `weather-night` | `switch` | `startProgram.goodNight` | +| Hygiene | `lotion-plus` | `switch` | `startProgram.hygiene` | +| Keep Fresh | `refresh-circle` | `switch` | `startProgram.permanentPressStatus` | +| Main Wash Time | `clock-start` | `number` | `startProgram.mainWashTime` | +| Prewash | `tshirt-crew` | `switch` | `startProgram.prewash` | +| Program | | `select` | `startProgram.program` | +| Rinse Iterations | `rotate-right` | `number` | `startProgram.rinseIterations` | +| Soak Prewash Selection | `tshirt-crew` | `switch` | `startProgram.haier_SoakPrewashSelection` | +| Spin speed | `numeric` | `select` | `startProgram.spinSpeed` | +| Stain Type | `liquid-spot` | `select` | `startProgram.extendedStainType` | +| Steam level | `weather-dust` | `select` | `startProgram.steamLevel` | +| Temperature | `thermometer` | `select` | `startProgram.temp` | +| Water hard | `water` | `number` | `startProgram.waterHard` | +| lang | | `number` | `startProgram.lang` | +#### Sensors +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Acqua Plus | `water-plus` | `binary_sensor` | `acquaplus` | +| Current Electricity Used | `lightning-bolt` | `sensor` | `currentElectricityUsed` | +| Current Temperature | `thermometer` | `sensor` | `temp` | +| Current Water Used | `water` | `sensor` | `currentWaterUsed` | +| Dirty level | `liquid-spot` | `sensor` | `dirtyLevel` | +| Door | | `binary_sensor` | `doorStatus` | +| Door Lock | | `binary_sensor` | `doorLockStatus` | +| Error | `math-log` | `sensor` | `errors` | +| Extra Rinse 1 | `numeric-1-box-multiple-outline` | `binary_sensor` | `extraRinse1` | +| Extra Rinse 2 | `numeric-2-box-multiple-outline` | `binary_sensor` | `extraRinse2` | +| Extra Rinse 3 | `numeric-3-box-multiple-outline` | `binary_sensor` | `extraRinse3` | +| Good Night Mode | `weather-night` | `binary_sensor` | `goodNight` | +| Machine Status | `information` | `sensor` | `machMode` | +| Pre Wash | `tshirt-crew` | `binary_sensor` | `prewash` | +| Program | `play` | `sensor` | `programName` | +| Program Phase | `washing-machine` | `sensor` | `prPhase` | +| Remaining Time | `timer` | `sensor` | `remainingTimeMM` | +| Remote Control | `remote` | `binary_sensor` | `attributes.lastConnEvent.category` | +| Spin Speed | `speedometer` | `sensor` | `spinSpeed` | +| Stain Type | `liquid-spot` | `sensor` | `stainType` | +| Steam level | `weather-dust` | `sensor` | `steamLevel` | +| Total Power | | `sensor` | `totalElectricityUsed` | +| Total Wash Cycle | `counter` | `sensor` | `totalWashCycle` | +| Total Water | | `sensor` | `totalWaterUsed` | + +
+ ## Configuration @@ -34,75 +697,6 @@ Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.co **Method 2**: Settings > Devices & Services > Add Integration > **Haier hOn** _If the integration is not in the list, you need to clear the browser cache._ -## Examples -_Click to expand..._ -
- Washing Machine - -![Washing Machine](assets/example_wm.png) -
-
- Tumble Dryer - -![Tumble Dryer](assets/example_td.png) -
-
- Washer Dryer - -![Washer Dryer](assets/example_wd.png) -
-
- Oven - -![Oven](assets/example_ov.png) -
-
- Dish Washer - -![Dish Washer](assets/example_dw.png) -
-
- Air conditioner - -![Air conditioner](assets/example_ac.png) -
-
- Fridge - -![Fridge](assets/example_ref.png) -
-
- Wine Cellar - -![Wine Cellar](assets/example_wc.png) -
-
- Air Purifier - -![Air Purifier](assets/example_ap.png) -
- -## Supported Models -Support has been confirmed for these **110 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). - - -| | **Haier** | **Hoover** | **Candy** | -|---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------| -| **Washing Machine** | HW80-B14959TU1
HW80-B14959S8U1S
HW80-B14979TU1
HW90-B14TEAM5
HW90-B14959U1
HW90-B14959S8U1
HW90G-BD14979UD
HW100-B14959U1
HW110-14979 | H5WPB447AMBC/1-S
H7W 412MBCR-80
H7W4 48MBC-S
HLWPS495TAMBE-11
HW 28AMBS/1-S
HW 410AMBCB/1-80
HW 411AMBCB/1-80
HW 49AMC/1-80
HW 68AMC/1-80
HW4 37AMBS/1-S
HW4 37XMBB/1-S
HWB 410AMC/1-80
HWB 414AMC/1-80
HWE 49AMBS/1-S
HWP 48AMBCR/1-S
HWPD 69AMBC/1-S
HWPDQ49AMBC/1-S
HWPD 610AMBC/1-S | CO4 107T1/2-07
CBWO49TWME-S
RO14126DWMST-S
RO441286DWMC4-07
RO4H7A2TEX-S
ROW42646DWMC-07
RP 696BWMRR/1-S | -| **Tumble Dryer** | HD80-A3959
HD90-A3TEAM5
HD90-A2959
HD90-A3959
HD90-A2959S | HLE H9A2TCE-80
HLE C10DCE-80
NDE H10A2TCE-80
NDE H10RA2TCE-80
NDE H9A2TSBEXS-S
NDP H9A3TCBEXS-S | BCTDH7A1TE
CSOE C10TREX-47
CSOE C10DE-80
CSOE H9A2DE-S
ROE H9A3TCEX-S
ROE H10A2TCE-07 | -| **Washer Dryer** | HWD80-B14979U1
HWD100-B14979
HWD100-B14978
HWD100-B14959U1 | HD 485AMBB/1-S
HD 495AMC/1-S
HD 4106AMC/1-80
HDB 5106AMC/1-80
HDQ 496AMBS/1-S
HDP 4149AMBC/1-S
HWPS4954DAMR-11 | RPW41066BWMR/1-S
RPW4966BWMR/1-S | -| **Oven** | HWO60SM2F3XH | HSOT3161WG | | -| **Dish Washer** | XIB 3B2SFS-80
XIB 6B2D3FB | HDPN 4S603PW/E
HFB 5B2D3FW
HFB 6B2S3FX | | -| **Air Conditioner** | AD71S2SM3FA(H)
AD105S2SM3FA
AS07TS4HRA-M
AS07TS5HRA
AS09TS4HRA-M
AS25PBAHRA
AS25S2SF1FA
AS25TADHRA-2
AS25TEDHRA(M1)
AS25THMHRA-C
AS25XCAHRA
AS35PBAHRA
AS35S2SF1FA
AS35S2SF2FA-3
AS35TADHRA-2
AS35TAMHRA-C
AS35TEDHRA(M1)
AS35XCAHRA
AS50S2SF1FA
AS50S2SF2FA-1
AS50XCAHRA | | CY-12TAIN | -| **Fridge** | HFW7720ENMB
HFW7819EWMP
HSW59F18EIPT
HTW5620DNMG | | CCE4T620EB
CCE4T620EWU
CCE4T618EW | -| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | -| **Hood** | HADG6DS46BWIFI | | | -| **Wine Cellar** | HWS247FDU1
HWS42GDAU1 | | | -| **Air Purifier** | | HHP30C011
HHP50CA001
HHP50CA011
HHP70CAH011 | | - -| Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data).
This helps us to develop new features and not to break compatibility in newer versions. | -|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| - ## Supported Languages Translation of internal names like programs are available for all languages which are official supported by the hOn app: * 🇨🇳 Chinese @@ -143,6 +737,9 @@ The apps on this (incomplete) list have been requested so far: Want to help us to support more appliances? Or add more sensors? Or help with translating? Or beautify some icons or captions? Check out the [project on GitHub](https://github.com/Andre0512/hon), every contribution is welcome! +| Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data).
This helps us to develop new features and not to break compatibility in newer versions. | +|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + ## Useful Links * [GitHub repository](https://github.com/Andre0512/hon) * [pyhOn library](https://github.com/Andre0512/pyhOn) diff --git a/scripts/sensor_docs.py b/scripts/sensor_docs.py index d968968..beec0c3 100755 --- a/scripts/sensor_docs.py +++ b/scripts/sensor_docs.py @@ -4,6 +4,7 @@ import re import sys from pathlib import Path +from homeassistant.util import yaml if __name__ == "__main__": sys.path.insert(0, str(Path(__file__).parent.parent)) @@ -26,7 +27,7 @@ from custom_components.hon.switch import ( ENTITY_CATEGORY_SORT = ["control", "config", "sensor"] -entities = { +ENTITIES = { "binary_sensor": BINARY_SENSORS, "button": BUTTONS, "climate": CLIMATES, @@ -39,47 +40,84 @@ entities = { "switch": SWITCHES, } -result = {} -for entity_type, appliances in entities.items(): - for appliance, data in appliances.items(): - for entity in data: - if isinstance(entity, HonControlSwitchEntityDescription): - key = f"{entity.turn_on_key}` / `{entity.turn_off_key}" - else: - key = entity.key - attributes = (key, entity.name, entity.icon, entity_type) - category = ( - "control" - if entity.key.startswith("settings") - or isinstance(entity, HonSwitchEntityDescription) - or isinstance(entity, HonControlSwitchEntityDescription) - or entity_type in ["button", "climate", "lock", "light", "fan"] - else "sensor" - ) - result.setdefault(appliance, {}).setdefault( - entity.entity_category or category, [] - ).append(attributes) -text = "" -for appliance, categories in sorted(result.items()): - text += f"\n### {APPLIANCES[appliance]}\n" - categories = {k: categories[k] for k in ENTITY_CATEGORY_SORT if k in categories} - for category, data in categories.items(): - text += f"#### {str(category).capitalize()}s\n" - text += "| Name | Icon | Entity | Key |\n" - text += "| --- | --- | --- | --- |\n" - for key, name, icon, entity_type in sorted(data, key=lambda d: d[1]): - icon = f"`{icon.replace('mdi:', '')}`" if icon else "" - text += f"| {name} | {icon} | `{entity_type}` | `{key}` |\n" -with open(Path(__file__).parent.parent / "README.md", "r") as file: - readme = file.read() -readme = re.sub( - "(## Appliance Features\n)(?:.|\\s)+?([^#]## |\\Z)", - f"\\1{text}\\2", - readme, - re.DOTALL, -) -entities = sum(len(x) for cat in result.values() for x in cat.values()) -readme = re.sub("badge/Entities-\\d+", f"badge/Entities-{entities}", readme) -with open(Path(__file__).parent.parent / "README.md", "w") as file: - file.write(readme) +def get_models(): + return yaml.load_yaml(str(Path(__file__).parent.parent / "supported_models.yml")) + + +def get_entites(): + result = {} + for entity_type, appliances in ENTITIES.items(): + for appliance, data in appliances.items(): + for entity in data: + if isinstance(entity, HonControlSwitchEntityDescription): + key = f"{entity.turn_on_key}` / `{entity.turn_off_key}" + else: + key = entity.key + attributes = (key, entity.name, entity.icon, entity_type) + category = ( + "control" + if entity.key.startswith("settings") + or isinstance(entity, HonSwitchEntityDescription) + or isinstance(entity, HonControlSwitchEntityDescription) + or entity_type in ["button", "climate", "lock", "light", "fan"] + else "sensor" + ) + result.setdefault(appliance, {}).setdefault( + entity.entity_category or category, [] + ).append(attributes) + return result + + +def generate_text(entites, models): + text = "_Click to expand..._\n\n" + for appliance, categories in sorted(entites.items()): + text += f"
\n{APPLIANCES[appliance]}\n\n" + example = f"example_{appliance.lower()}.png" + if (Path(__file__).parent.parent / "assets" / example).exists(): + text += f"### {APPLIANCES[appliance]} Example\n![{APPLIANCES[appliance]}](assets/{example})\n\n" + support_number = sum([len(e) for e in models[appliance.lower()].values()]) + text += ( + f"### Supported {APPLIANCES[appliance]} models\nSupport has been confirmed for these " + f"**{support_number} models**, but many more will work. Please add already supported devices " + f"[with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8).\n" + ) + for brand, items in models[appliance.lower()].items(): + text += f"\n#### {brand[0].upper()}{brand[1:]}\n- " + text += "\n- ".join(items) + "\n" + categories = {k: categories[k] for k in ENTITY_CATEGORY_SORT if k in categories} + text += f"\n### {APPLIANCES[appliance]} Entities\n" + for category, data in categories.items(): + text += f"#### {str(category).capitalize()}s\n" + text += "| Name | Icon | Entity | Key |\n" + text += "| --- | --- | --- | --- |\n" + for key, name, icon, entity_type in sorted(data, key=lambda d: d[1]): + icon = f"`{icon.replace('mdi:', '')}`" if icon else "" + text += f"| {name} | {icon} | `{entity_type}` | `{key}` |\n" + text += "\n
\n\n" + return text + + +def update_readme(text, entities, models, file_name="README.md"): + with open(Path(__file__).parent.parent / file_name, "r") as file: + readme = file.read() + readme = re.sub( + "(## Supported Appliances\n)(?:.|\\s)+?([^#]## |\\Z)", + f"\\1{text}\\2", + readme, + re.DOTALL, + ) + entities = sum(len(x) for cat in entities.values() for x in cat.values()) + readme = re.sub("badge/Entities-\\d+", f"badge/Entities-{entities}", readme) + models = sum(len(x) for cat in models.values() for x in cat.values()) + readme = re.sub("badge/Models-\\d+", f"badge/Models-{models}", readme) + with open(Path(__file__).parent.parent / file_name, "w") as file: + file.write(readme) + + +if __name__ == "__main__": + entities = get_entites() + models = get_models() + text = generate_text(entities, models) + update_readme(text, entities, models) + update_readme(text, entities, models, "info.md") diff --git a/supported_models.yml b/supported_models.yml new file mode 100644 index 0000000..e9d67e0 --- /dev/null +++ b/supported_models.yml @@ -0,0 +1,144 @@ +wm: + haier: + - "HW80-B14959TU1" + - "HW80-B14959S8U1S" + - "HW80-B14979TU1" + - "HW90-B14TEAM5" + - "HW90-B14959U1" + - "HW90-B14959S8U1" + - "HW90G-BD14979UD" + - "HW100-B14959U1" + - "HW110-14979" + hoover: + - "H5WPB447AMBC/1-S" + - "H7W 412MBCR-80" + - "H7W4 48MBC-S" + - "HLWPS495TAMBE-11" + - "HW 28AMBS/1-S" + - "HW 410AMBCB/1-80" + - "HW 411AMBCB/1-80" + - "HW 49AMC/1-80" + - "HW 68AMC/1-80" + - "HW4 37AMBS/1-S" + - "HW4 37XMBB/1-S" + - "HWB 410AMC/1-80" + - "HWB 414AMC/1-80" + - "HWE 49AMBS/1-S" + - "HWP 48AMBCR/1-S" + - "HWPD 69AMBC/1-S" + - "HWPDQ49AMBC/1-S" + - "HWPD 610AMBC/1-S" + candy: + - "CO4 107T1/2-07" + - "CBWO49TWME-S" + - "RO14126DWMST-S" + - "RO441286DWMC4-07" + - "RO4H7A2TEX-S" + - "ROW42646DWMC-07" + - "RP 696BWMRR/1-S" +td: + haier: + - "HD80-A3959" + - "HD90-A3TEAM5" + - "HD90-A2959" + - "HD90-A2959S" + - "HD90-A3959" + hoover: + - "HLE H8A2TE-S" + - "HLE H9A2TCE-80" + - "HLE C10DCE-80" + - "NDE H10A2TCE-80" + - "NDE H10RA2TCE-80" + - "NDE H9A2TSBEXS-S" + - "NDP H9A3TCBEXS-S" + candy: + - "BCTDH7A1TE" + - "CSOE C10DE-80" + - "CSOE C10TREX-47" + - "CSOE H9A2DE-S" + - "ROE H9A2TCE-80" + - "ROE H9A3TCEX-S" + - "ROE H10A2TCE-07" +wd: + haier: + - "HWD100-B14978" + - "HWD100-B14979" + - "HWD100-B14959U1" + - "HWD80-B14979U1" + hoover: + - "HD 4106AMC/1-80" + - "HD 485AMBB/1-S" + - "HD 495AMC/1-S" + - "HDB 5106AMC/1-80" + - "HDQ 496AMBS/1-S" + - "HDP 4149AMBC/1-S" + - "HWPS4954DAMR-11" + candy: + - "RPW41066BWMR/1-S" + - "RPW4966BWMR/1-S" +ov: + haier: + - "HWO60SM2F3XH" + hoover: + - "HSOT3161WG" +dw: + haier: + - "XIB 3B2SFS-80" + - "XIB 6B2D3FB" + hoover: + - "HDPN 4S603PW/E" + - "HFB 5B2D3FW" + - "HFB 6B2S3FX" +ac: + haier: + - "AD105S2SM3FA" + - "AD71S2SM3FA(H)" + - "AS07TS4HRA-M" + - "AS07TS5HRA" + - "AS09TS4HRA-M" + - "AS25PBAHRA" + - "AS25S2SF1FA" + - "AS25TADHRA-2" + - "AS25TEDHRA(M1)" + - "AS25THMHRA-C" + - "AS25XCAHRA" + - "AS35PBAHRA" + - "AS35S2SF1FA" + - "AS35S2SF2FA-3" + - "AS35TADHRA-2" + - "AS35TAMHRA-C" + - "AS35TEDHRA(M1)" + - "AS35XCAHRA" + - "AS50S2SF1FA" + - "AS50S2SF2FA-1" + - "AS50XCAHR" + candy: + - "CY-12TAIN" +ref: + haier: + - "HFW7720ENMB" + - "HFW7819EWMP" + - "HSW59F18EIPT" + - "HTW5620DNMG" + candy: + - "CE4T620EB" + - "CCE4T620EWU" + - "CCE4T618EW" +ih: + haier: + - "HA2MTSJ68MC" + candy: + - "CIS633SCTTWIFI" +ho: + haier: + - "HADG6DS46BWIFI" +wc: + haier: + - "HWS247FDU1" + - "HWS42GDAU1" +ap: + hoover: + - "HHP30C011" + - "HHP50CA001" + - "HHP50CA011" + - "HHP70CAH011" \ No newline at end of file -- 2.39.5 From fb15e4bce7976a1bd47055d7996e8177a4931a52 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Tue, 21 Nov 2023 01:26:38 +0100 Subject: [PATCH 197/205] Move config sensors to diagnose #123 --- custom_components/hon/sensor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index d381550..db88b17 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -36,7 +36,7 @@ _LOGGER = logging.getLogger(__name__) @dataclass class HonConfigSensorEntityDescription(SensorEntityDescription): - entity_category: EntityCategory = EntityCategory.CONFIG + entity_category: EntityCategory = EntityCategory.DIAGNOSTIC option_list: dict[int, str] | None = None -- 2.39.5 From f19c0cfcd2e7a35aac628fda05862e30755d9ab7 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Tue, 21 Nov 2023 02:32:53 +0100 Subject: [PATCH 198/205] Bump version --- README.md | 5 +++-- custom_components/hon/manifest.json | 4 ++-- info.md | 5 +++-- requirements.txt | 2 +- supported_models.yml | 1 + 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 840a979..1c611b4 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.co [![Supported Languages](https://img.shields.io/badge/Languages-19-royalblue)](https://github.com/Andre0512/hon#supported-languages) [![Supported Appliances](https://img.shields.io/badge/Appliances-11-forestgreen)](https://github.com/Andre0512/hon#supported-appliances) -[![Supported Models](https://img.shields.io/badge/Models-111-yellowgreen)](https://github.com/Andre0512/hon#supported-appliances) +[![Supported Models](https://img.shields.io/badge/Models-112-yellowgreen)](https://github.com/Andre0512/hon#supported-appliances) [![Supported Entities](https://img.shields.io/badge/Entities-317-crimson)](https://github.com/Andre0512/hon#supported-appliances) ## Supported Appliances @@ -586,7 +586,7 @@ Support has been confirmed for these **13 models**, but many more will work. Ple ![Washing Machine](assets/example_wm.png) ### Supported Washing Machine models -Support has been confirmed for these **34 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +Support has been confirmed for these **35 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). #### Haier - HW80-B14959TU1 @@ -607,6 +607,7 @@ Support has been confirmed for these **34 models**, but many more will work. Ple - HW 28AMBS/1-S - HW 410AMBCB/1-80 - HW 411AMBCB/1-80 +- HW 48AMC/1-S - HW 49AMC/1-80 - HW 68AMC/1-80 - HW4 37AMBS/1-S diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index 82eb3c4..a4f729d 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -9,7 +9,7 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": [ - "pyhOn==0.15.12" + "pyhOn==0.15.14" ], - "version": "0.10.1-beta.1" + "version": "0.10.1" } diff --git a/info.md b/info.md index ea2aec7..3fe91a0 100644 --- a/info.md +++ b/info.md @@ -10,7 +10,7 @@ Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.co [![Supported Languages](https://img.shields.io/badge/Languages-19-royalblue)](https://github.com/Andre0512/hon#supported-languages) [![Supported Appliances](https://img.shields.io/badge/Appliances-11-forestgreen)](https://github.com/Andre0512/hon#supported-appliances) -[![Supported Models](https://img.shields.io/badge/Models-111-yellowgreen)](https://github.com/Andre0512/hon#supported-appliances) +[![Supported Models](https://img.shields.io/badge/Models-112-yellowgreen)](https://github.com/Andre0512/hon#supported-appliances) [![Supported Entities](https://img.shields.io/badge/Entities-317-crimson)](https://github.com/Andre0512/hon#supported-appliances) ## Supported Appliances @@ -581,7 +581,7 @@ Support has been confirmed for these **13 models**, but many more will work. Ple ![Washing Machine](assets/example_wm.png) ### Supported Washing Machine models -Support has been confirmed for these **34 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +Support has been confirmed for these **35 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). #### Haier - HW80-B14959TU1 @@ -602,6 +602,7 @@ Support has been confirmed for these **34 models**, but many more will work. Ple - HW 28AMBS/1-S - HW 410AMBCB/1-80 - HW 411AMBCB/1-80 +- HW 48AMC/1-S - HW 49AMC/1-80 - HW 68AMC/1-80 - HW4 37AMBS/1-S diff --git a/requirements.txt b/requirements.txt index 482d88a..03a01d1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -pyhOn==0.15.12 +pyhOn==0.15.14 diff --git a/supported_models.yml b/supported_models.yml index e9d67e0..dbd1adc 100644 --- a/supported_models.yml +++ b/supported_models.yml @@ -17,6 +17,7 @@ wm: - "HW 28AMBS/1-S" - "HW 410AMBCB/1-80" - "HW 411AMBCB/1-80" + - "HW 48AMC/1-S" - "HW 49AMC/1-80" - "HW 68AMC/1-80" - "HW4 37AMBS/1-S" -- 2.39.5 From e01017125ee81e2a3c6e363568f028c8b140cef4 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Thu, 11 Jan 2024 00:23:08 +0100 Subject: [PATCH 199/205] Replace deprecated TEMP_CLESIUS, fix #141 --- custom_components/hon/climate.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/custom_components/hon/climate.py b/custom_components/hon/climate.py index d43b43f..323cb52 100644 --- a/custom_components/hon/climate.py +++ b/custom_components/hon/climate.py @@ -17,7 +17,7 @@ from homeassistant.components.climate.const import ( from homeassistant.config_entries import ConfigEntry from homeassistant.const import ( ATTR_TEMPERATURE, - TEMP_CELSIUS, + UnitOfTemperature, ) from homeassistant.core import callback from homeassistant.helpers.entity_platform import AddEntitiesCallback @@ -137,7 +137,7 @@ class HonACClimateEntity(HonEntity, ClimateEntity): ) -> None: super().__init__(hass, entry, device, description) - self._attr_temperature_unit = TEMP_CELSIUS + self._attr_temperature_unit = UnitOfTemperature.CELSIUS self._set_temperature_bound() self._attr_hvac_modes = [HVACMode.OFF] @@ -295,7 +295,7 @@ class HonClimateEntity(HonEntity, ClimateEntity): ) -> None: super().__init__(hass, entry, device, description) - self._attr_temperature_unit = TEMP_CELSIUS + self._attr_temperature_unit = UnitOfTemperature.CELSIUS self._set_temperature_bound() self._attr_hvac_modes = [description.mode] -- 2.39.5 From 3aadb840abacf49fb499397fcdf9af806e8e5158 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Thu, 11 Jan 2024 00:24:09 +0100 Subject: [PATCH 200/205] Update home assistant version --- .github/workflows/python_check.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/python_check.yml b/.github/workflows/python_check.yml index 89e14d3..b0b9a9b 100644 --- a/.github/workflows/python_check.yml +++ b/.github/workflows/python_check.yml @@ -14,8 +14,6 @@ jobs: fail-fast: false matrix: include: - - home-assistant: "2023.1.0" - python-version: "3.10" - home-assistant: "2023.2.0" python-version: "3.10" - home-assistant: "2023.3.0" @@ -38,6 +36,10 @@ jobs: python-version: "3.11" - home-assistant: "2023.11.0" python-version: "3.11" + - home-assistant: "2023.12.0" + python-version: "3.11" + - home-assistant: "2024.1.0" + python-version: "3.11" steps: - uses: actions/checkout@v3 -- 2.39.5 From f007777689408c28596da02fe6f64321870b74a6 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Thu, 11 Jan 2024 00:41:49 +0100 Subject: [PATCH 201/205] Fix mypy checks --- custom_components/hon/binary_sensor.py | 2 +- custom_components/hon/climate.py | 4 ++-- custom_components/hon/number.py | 4 ++-- custom_components/hon/select.py | 4 ++-- custom_components/hon/sensor.py | 4 ++-- custom_components/hon/switch.py | 5 +++-- 6 files changed, 12 insertions(+), 11 deletions(-) diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index d33d689..f304c3f 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -17,7 +17,7 @@ from .hon import HonEntity, unique_entities _LOGGER = logging.getLogger(__name__) -@dataclass +@dataclass(frozen=True) class HonBinarySensorEntityDescription(BinarySensorEntityDescription): on_value: str | float = "" diff --git a/custom_components/hon/climate.py b/custom_components/hon/climate.py index 323cb52..ff44d92 100644 --- a/custom_components/hon/climate.py +++ b/custom_components/hon/climate.py @@ -31,12 +31,12 @@ from .hon import HonEntity _LOGGER = logging.getLogger(__name__) -@dataclass +@dataclass(frozen=True) class HonACClimateEntityDescription(ClimateEntityDescription): pass -@dataclass +@dataclass(frozen=True) class HonClimateEntityDescription(ClimateEntityDescription): mode: HVACMode = HVACMode.AUTO diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index 7c0e504..b9ae6cd 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -19,12 +19,12 @@ from .const import DOMAIN from .hon import HonEntity, unique_entities -@dataclass +@dataclass(frozen=True) class HonConfigNumberEntityDescription(NumberEntityDescription): entity_category: EntityCategory = EntityCategory.CONFIG -@dataclass +@dataclass(frozen=True) class HonNumberEntityDescription(NumberEntityDescription): pass diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index 60bb071..c55e0c5 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -18,12 +18,12 @@ from .hon import HonEntity, unique_entities, get_readable _LOGGER = logging.getLogger(__name__) -@dataclass +@dataclass(frozen=True) class HonSelectEntityDescription(SelectEntityDescription): option_list: dict[int, str] | None = None -@dataclass +@dataclass(frozen=True) class HonConfigSelectEntityDescription(SelectEntityDescription): entity_category: EntityCategory = EntityCategory.CONFIG option_list: dict[int, str] | None = None diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index db88b17..4c8af97 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -34,13 +34,13 @@ from .hon import HonEntity, unique_entities, get_readable _LOGGER = logging.getLogger(__name__) -@dataclass +@dataclass(frozen=True) class HonConfigSensorEntityDescription(SensorEntityDescription): entity_category: EntityCategory = EntityCategory.DIAGNOSTIC option_list: dict[int, str] | None = None -@dataclass +@dataclass(frozen=True) class HonSensorEntityDescription(SensorEntityDescription): option_list: dict[int, str] | None = None diff --git a/custom_components/hon/switch.py b/custom_components/hon/switch.py index 8c32ccd..6bc1d2f 100644 --- a/custom_components/hon/switch.py +++ b/custom_components/hon/switch.py @@ -18,17 +18,18 @@ from .hon import HonEntity, unique_entities _LOGGER = logging.getLogger(__name__) -@dataclass +@dataclass(frozen=True) class HonControlSwitchEntityDescription(SwitchEntityDescription): turn_on_key: str = "" turn_off_key: str = "" +@dataclass(frozen=True) class HonSwitchEntityDescription(SwitchEntityDescription): pass -@dataclass +@dataclass(frozen=True) class HonConfigSwitchEntityDescription(SwitchEntityDescription): entity_category: EntityCategory = EntityCategory.CONFIG -- 2.39.5 From 355e2187ad3e5b298f6a85fa6dbe5d3eac41c618 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Thu, 11 Jan 2024 00:53:14 +0100 Subject: [PATCH 202/205] Update required version --- .github/workflows/python_check.yml | 24 ------------------------ hacs.json | 2 +- 2 files changed, 1 insertion(+), 25 deletions(-) diff --git a/.github/workflows/python_check.yml b/.github/workflows/python_check.yml index b0b9a9b..6a7457c 100644 --- a/.github/workflows/python_check.yml +++ b/.github/workflows/python_check.yml @@ -14,30 +14,6 @@ jobs: fail-fast: false matrix: include: - - home-assistant: "2023.2.0" - python-version: "3.10" - - home-assistant: "2023.3.0" - python-version: "3.10" - - home-assistant: "2023.4.0" - python-version: "3.10" - - home-assistant: "2023.5.0" - python-version: "3.10" - - home-assistant: "2023.6.0" - python-version: "3.10" - - home-assistant: "2023.7.0" - python-version: "3.10" - - home-assistant: "2023.7.0" - python-version: "3.11" - - home-assistant: "2023.8.0" - python-version: "3.11" - - home-assistant: "2023.9.0" - python-version: "3.11" - - home-assistant: "2023.10.0" - python-version: "3.11" - - home-assistant: "2023.11.0" - python-version: "3.11" - - home-assistant: "2023.12.0" - python-version: "3.11" - home-assistant: "2024.1.0" python-version: "3.11" diff --git a/hacs.json b/hacs.json index c9f8fc1..9687059 100644 --- a/hacs.json +++ b/hacs.json @@ -1,6 +1,6 @@ { "name": "Haier hOn", - "homeassistant": "2023.2.0", + "homeassistant": "2024.1.0", "zip_release": true, "filename": "haier_hon.zip" } -- 2.39.5 From ed8b5e7d3cda5c3f76f53292a3b6f4b1b50e22e1 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Thu, 11 Jan 2024 02:12:07 +0100 Subject: [PATCH 203/205] Bump version --- README.md | 35 +++++++++++++++++----- custom_components/hon/manifest.json | 4 +-- custom_components/hon/translations/cs.json | 8 +++-- custom_components/hon/translations/de.json | 8 +++-- custom_components/hon/translations/el.json | 8 +++-- custom_components/hon/translations/en.json | 12 ++++++-- custom_components/hon/translations/es.json | 8 +++-- custom_components/hon/translations/fr.json | 8 +++-- custom_components/hon/translations/he.json | 6 ++-- custom_components/hon/translations/hr.json | 8 +++-- custom_components/hon/translations/it.json | 8 +++-- custom_components/hon/translations/nl.json | 8 +++-- custom_components/hon/translations/pl.json | 8 +++-- custom_components/hon/translations/pt.json | 8 +++-- custom_components/hon/translations/ro.json | 8 +++-- custom_components/hon/translations/ru.json | 8 +++-- custom_components/hon/translations/sk.json | 8 +++-- custom_components/hon/translations/sl.json | 8 +++-- custom_components/hon/translations/sr.json | 8 +++-- custom_components/hon/translations/tr.json | 8 +++-- custom_components/hon/translations/zh.json | 8 +++-- info.md | 35 +++++++++++++++++----- requirements.txt | 2 +- supported_models.yml | 19 +++++++++++- 24 files changed, 191 insertions(+), 58 deletions(-) diff --git a/README.md b/README.md index 1c611b4..d13f696 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.co [![Supported Languages](https://img.shields.io/badge/Languages-19-royalblue)](https://github.com/Andre0512/hon#supported-languages) [![Supported Appliances](https://img.shields.io/badge/Appliances-11-forestgreen)](https://github.com/Andre0512/hon#supported-appliances) -[![Supported Models](https://img.shields.io/badge/Models-112-yellowgreen)](https://github.com/Andre0512/hon#supported-appliances) +[![Supported Models](https://img.shields.io/badge/Models-127-yellowgreen)](https://github.com/Andre0512/hon#supported-appliances) [![Supported Entities](https://img.shields.io/badge/Entities-317-crimson)](https://github.com/Andre0512/hon#supported-appliances) ## Supported Appliances @@ -147,7 +147,7 @@ Support has been confirmed for these **4 models**, but many more will work. Plea ![Dish Washer](assets/example_dw.png) ### Supported Dish Washer models -Support has been confirmed for these **5 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +Support has been confirmed for these **6 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). #### Haier - XIB 3B2SFS-80 @@ -158,6 +158,9 @@ Support has been confirmed for these **5 models**, but many more will work. Plea - HFB 5B2D3FW - HFB 6B2S3FX +#### Candy +- CF 3C7L0X + ### Dish Washer Entities #### Controls | Name | Icon | Entity | Key | @@ -231,10 +234,11 @@ Support has been confirmed for these **1 models**, but many more will work. Plea Induction Hob ### Supported Induction Hob models -Support has been confirmed for these **2 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +Support has been confirmed for these **3 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). #### Haier - HA2MTSJ68MC +- HAIDSJ63MC #### Candy - CIS633SCTTWIFI @@ -315,14 +319,20 @@ Support has been confirmed for these **2 models**, but many more will work. Plea ![Fridge](assets/example_ref.png) ### Supported Fridge models -Support has been confirmed for these **7 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +Support has been confirmed for these **11 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). #### Haier +- HDPW5620ANPD +- HBW5519ECM +- HDW5620CNPK - HFW7720ENMB - HFW7819EWMP - HSW59F18EIPT - HTW5620DNMG +#### Hoover +- HOCE7620DX + #### Candy - CE4T620EB - CCE4T620EWU @@ -375,7 +385,7 @@ Support has been confirmed for these **7 models**, but many more will work. Plea ![Tumble Dryer](assets/example_td.png) ### Supported Tumble Dryer models -Support has been confirmed for these **19 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +Support has been confirmed for these **22 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). #### Haier - HD80-A3959 @@ -392,11 +402,14 @@ Support has been confirmed for these **19 models**, but many more will work. Ple - NDE H10RA2TCE-80 - NDE H9A2TSBEXS-S - NDP H9A3TCBEXS-S +- NDP4 H7A2TCBEX-S +- NDPEH9A3TCBEXS-S #### Candy - BCTDH7A1TE - CSOE C10DE-80 - CSOE C10TREX-47 +- CSOE H10A2DE-S - CSOE H9A2DE-S - ROE H9A2TCE-80 - ROE H9A3TCEX-S @@ -481,7 +494,7 @@ Support has been confirmed for these **2 models**, but many more will work. Plea ![Washer Dryer](assets/example_wd.png) ### Supported Washer Dryer models -Support has been confirmed for these **13 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +Support has been confirmed for these **15 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). #### Haier - HWD100-B14978 @@ -490,10 +503,12 @@ Support has been confirmed for these **13 models**, but many more will work. Ple - HWD80-B14979U1 #### Hoover +- H7D 4128MBC-S - HD 4106AMC/1-80 - HD 485AMBB/1-S - HD 495AMC/1-S - HDB 5106AMC/1-80 +- HDD4106AMBCR-80 - HDQ 496AMBS/1-S - HDP 4149AMBC/1-S - HWPS4954DAMR-11 @@ -586,15 +601,16 @@ Support has been confirmed for these **13 models**, but many more will work. Ple ![Washing Machine](assets/example_wm.png) ### Supported Washing Machine models -Support has been confirmed for these **35 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +Support has been confirmed for these **39 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). #### Haier - HW80-B14959TU1 - HW80-B14959S8U1S - HW80-B14979TU1 -- HW90-B14TEAM5 +- HW90-B145XLINEDE - HW90-B14959U1 - HW90-B14959S8U1 +- HW90-B14TEAM5 - HW90G-BD14979UD - HW100-B14959U1 - HW110-14979 @@ -602,8 +618,10 @@ Support has been confirmed for these **35 models**, but many more will work. Ple #### Hoover - H5WPB447AMBC/1-S - H7W 412MBCR-80 +- H7W 610AMBC-80 - H7W4 48MBC-S - HLWPS495TAMBE-11 +- HPS484DAMB7/1-11 - HW 28AMBS/1-S - HW 410AMBCB/1-80 - HW 411AMBCB/1-80 @@ -616,6 +634,7 @@ Support has been confirmed for these **35 models**, but many more will work. Ple - HWB 414AMC/1-80 - HWE 49AMBS/1-S - HWP 48AMBCR/1-S +- HWP 610AMBC/1-S - HWPD 69AMBC/1-S - HWPDQ49AMBC/1-S - HWPD 610AMBC/1-S diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index a4f729d..4a91ecf 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -9,7 +9,7 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", "requirements": [ - "pyhOn==0.15.14" + "pyhOn==0.15.15" ], - "version": "0.10.1" + "version": "0.11.0-beta.1" } diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index 3ecf296..fa6b8dc 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -524,6 +524,7 @@ "iot_active_wash_steam": "Aktivní praní 20' + pára", "iot_allergy_care_pro": "Antialergická péče Pro", "iot_all_in_one_59_steam": "Vše v jednom 59' + pára", + "iot_baby_60_steam": "Všechno dětské 60°C + pára", "iot_checkup": "Kontrola", "iot_colour_59_steam": "Barevné 59'' + pára", "iot_cottons_steam": "Bavlna + Pára", @@ -561,6 +562,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + pára", "iot_intensive_40_steam": "Intenzivní 40°C + pára", "iot_jeans_60_steam": "Džíny + pára", + "iot_jeans_steam": "Džíny + pára", "iot_mixed_steam": "Smíšené + Pára", "iot_mix_and_colour_59_steam": "Smíšené a barevné 59' + pára", "iot_perfect_cotton_59_steam": "Perfektni Bavlna 59'", @@ -781,7 +783,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER CHLAZENÍ", "super_freeze": "SUPER MRAZENÍ", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, @@ -1411,6 +1413,7 @@ "iot_active_wash_steam": "Aktivní praní 20' + pára", "iot_allergy_care_pro": "Antialergická péče Pro", "iot_all_in_one_59_steam": "Vše v jednom 59' + pára", + "iot_baby_60_steam": "Všechno dětské 60°C + pára", "iot_checkup": "Kontrola", "iot_colour_59_steam": "Barevné 59'' + pára", "iot_cottons_steam": "Bavlna + Pára", @@ -1448,6 +1451,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + pára", "iot_intensive_40_steam": "Intenzivní 40°C + pára", "iot_jeans_60_steam": "Džíny + pára", + "iot_jeans_steam": "Džíny + pára", "iot_mixed_steam": "Smíšené + Pára", "iot_mix_and_colour_59_steam": "Smíšené a barevné 59' + pára", "iot_perfect_cotton_59_steam": "Perfektni Bavlna 59'", @@ -1668,7 +1672,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER CHLAZENÍ", "super_freeze": "SUPER MRAZENÍ", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index 71b8e72..270b815 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -524,6 +524,7 @@ "iot_active_wash_steam": "Active Wash 20' + Dampf", "iot_allergy_care_pro": "Allergy Care Pro", "iot_all_in_one_59_steam": "All in One 59' + Dampf", + "iot_baby_60_steam": "Alles Baby 60 °C + Dampf", "iot_checkup": "Check-up", "iot_colour_59_steam": "Buntes 59' + Dampf", "iot_cottons_steam": "Baumwolle + Dampf", @@ -561,6 +562,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + Dampf", "iot_intensive_40_steam": "Intensiv 40°C + Dampf", "iot_jeans_60_steam": "Jeans + Dampf", + "iot_jeans_steam": "Jeans + Dampf", "iot_mixed_steam": "Gemischt + Dampf", "iot_mix_and_colour_59_steam": "Misch- und Buntwäsche 59' + Dampf", "iot_perfect_cotton_59_steam": "Baumwolle Perfekt 59'", @@ -781,7 +783,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, @@ -1411,6 +1413,7 @@ "iot_active_wash_steam": "Active Wash 20' + Dampf", "iot_allergy_care_pro": "Allergy Care Pro", "iot_all_in_one_59_steam": "All in One 59' + Dampf", + "iot_baby_60_steam": "Alles Baby 60 °C + Dampf", "iot_checkup": "Check-up", "iot_colour_59_steam": "Buntes 59' + Dampf", "iot_cottons_steam": "Baumwolle + Dampf", @@ -1448,6 +1451,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + Dampf", "iot_intensive_40_steam": "Intensiv 40°C + Dampf", "iot_jeans_60_steam": "Jeans + Dampf", + "iot_jeans_steam": "Jeans + Dampf", "iot_mixed_steam": "Gemischt + Dampf", "iot_mix_and_colour_59_steam": "Misch- und Buntwäsche 59' + Dampf", "iot_perfect_cotton_59_steam": "Baumwolle Perfekt 59'", @@ -1668,7 +1672,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index cb46299..33fcff9 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -524,6 +524,7 @@ "iot_active_wash_steam": "Ενεργό πλύσιμο 20' + Ατμός", "iot_allergy_care_pro": "Allergy Care Επαγγελματικό", "iot_all_in_one_59_steam": "Όλα σε Ένα 59' + Ατμός", + "iot_baby_60_steam": "Μωρουδιακά 60°C + ατμός", "iot_checkup": "Έλεγχος", "iot_colour_59_steam": "Χρωματιστά 59' + ατμός", "iot_cottons_steam": "Βαμβακερό + Ατμός", @@ -561,6 +562,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + Ατμός", "iot_intensive_40_steam": "Εντατικό 40°C + ατμός", "iot_jeans_60_steam": "Τζιν παντελόνια + ατμός", + "iot_jeans_steam": "Τζιν παντελόνια + ατμός", "iot_mixed_steam": "Μικτά + Ατμός", "iot_mix_and_colour_59_steam": "Μικτά και χρωματιστά 59' + Ατμός", "iot_perfect_cotton_59_steam": "ΤΕΛΕΙΑ ΒΑΜΒΑΚΕΡΑ 59'", @@ -781,7 +783,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, @@ -1411,6 +1413,7 @@ "iot_active_wash_steam": "Ενεργό πλύσιμο 20' + Ατμός", "iot_allergy_care_pro": "Allergy Care Επαγγελματικό", "iot_all_in_one_59_steam": "Όλα σε Ένα 59' + Ατμός", + "iot_baby_60_steam": "Μωρουδιακά 60°C + ατμός", "iot_checkup": "Έλεγχος", "iot_colour_59_steam": "Χρωματιστά 59' + ατμός", "iot_cottons_steam": "Βαμβακερό + Ατμός", @@ -1448,6 +1451,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + Ατμός", "iot_intensive_40_steam": "Εντατικό 40°C + ατμός", "iot_jeans_60_steam": "Τζιν παντελόνια + ατμός", + "iot_jeans_steam": "Τζιν παντελόνια + ατμός", "iot_mixed_steam": "Μικτά + Ατμός", "iot_mix_and_colour_59_steam": "Μικτά και χρωματιστά 59' + Ατμός", "iot_perfect_cotton_59_steam": "ΤΕΛΕΙΑ ΒΑΜΒΑΚΕΡΑ 59'", @@ -1668,7 +1672,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index 1374407..3d78b7f 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -537,6 +537,7 @@ "iot_active_wash_steam": "Active Wash 20' + Steam", "iot_allergy_care_pro": "Allergy Care Pro", "iot_all_in_one_59_steam": "All in One 59' + Steam", + "iot_baby_60_steam": "All Baby 60°C + Steam", "iot_checkup": "Check-Up", "iot_colour_59_steam": "Colored 59' + Steam", "iot_cottons_steam": "Cotton + Steam", @@ -574,6 +575,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + Steam", "iot_intensive_40_steam": "Intensive 40°C + Steam", "iot_jeans_60_steam": "Jeans + Steam", + "iot_jeans_steam": "Jeans + Steam", "iot_mixed_steam": "Mixed + Steam", "iot_mix_and_colour_59_steam": "Mixed and Coloured 59' + Steam", "iot_perfect_cotton_59_steam": "Perfect Cotton 59' + Steam", @@ -586,6 +588,8 @@ "iot_special_39_full_load_steam": "Special 39' + Steam", "iot_steam_hygiene_plus": "Hygiene Plus + Steam", "iot_synthetic_and_coloured_steam": "Synthetic and Coloured + Steam", + "iot_wash_100_custom_wash": "100% Custom Wash", + "iot_wash_100_custom_wash_steam": "100% Custom Wash + Steam", "iot_wash_and_dry": "Wash and dry", "iot_wash_anti_mites": "Anti-mites", "iot_wash_anti_odor": "Anti-odour", @@ -796,7 +800,7 @@ "soft_frozen\n": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, @@ -1436,6 +1440,7 @@ "iot_active_wash_steam": "Active Wash 20' + Steam", "iot_allergy_care_pro": "Allergy Care Pro", "iot_all_in_one_59_steam": "All in One 59' + Steam", + "iot_baby_60_steam": "All Baby 60°C + Steam", "iot_checkup": "Check-Up", "iot_colour_59_steam": "Colored 59' + Steam", "iot_cottons_steam": "Cotton + Steam", @@ -1473,6 +1478,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + Steam", "iot_intensive_40_steam": "Intensive 40°C + Steam", "iot_jeans_60_steam": "Jeans + Steam", + "iot_jeans_steam": "Jeans + Steam", "iot_mixed_steam": "Mixed + Steam", "iot_mix_and_colour_59_steam": "Mixed and Coloured 59' + Steam", "iot_perfect_cotton_59_steam": "Perfect Cotton 59' + Steam", @@ -1485,6 +1491,8 @@ "iot_special_39_full_load_steam": "Special 39' + Steam", "iot_steam_hygiene_plus": "Hygiene Plus + Steam", "iot_synthetic_and_coloured_steam": "Synthetic and Coloured + Steam", + "iot_wash_100_custom_wash": "100% Custom Wash", + "iot_wash_100_custom_wash_steam": "100% Custom Wash + Steam", "iot_wash_and_dry": "Wash and dry", "iot_wash_anti_mites": "Anti-mites", "iot_wash_anti_odor": "Anti-odour", @@ -1695,7 +1703,7 @@ "soft_frozen\n": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index 437885b..614540a 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -524,6 +524,7 @@ "iot_active_wash_steam": "Lavado activo 20' + Vapor", "iot_allergy_care_pro": "Allergy Care Pro", "iot_all_in_one_59_steam": "Todo en uno 59’ + Vapor", + "iot_baby_60_steam": "All Baby 60°C + Vapor", "iot_checkup": "Revisión", "iot_colour_59_steam": "Colores 59' + vapor", "iot_cottons_steam": "Algodón + Vapor", @@ -561,6 +562,7 @@ "iot_hygiene_pro_steam": "Higiene Pro + Vapor", "iot_intensive_40_steam": "Intensivo 40°C + vapor", "iot_jeans_60_steam": "Vaqueros + Vapor", + "iot_jeans_steam": "Vaqueros + Vapor", "iot_mixed_steam": "Ropa mixta + Vapor", "iot_mix_and_colour_59_steam": "Mixta y de color 59' + Vapor", "iot_perfect_cotton_59_steam": "Algodon Perfecto 59'", @@ -781,7 +783,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, @@ -1411,6 +1413,7 @@ "iot_active_wash_steam": "Lavado activo 20' + Vapor", "iot_allergy_care_pro": "Allergy Care Pro", "iot_all_in_one_59_steam": "Todo en uno 59’ + Vapor", + "iot_baby_60_steam": "All Baby 60°C + Vapor", "iot_checkup": "Revisión", "iot_colour_59_steam": "Colores 59' + vapor", "iot_cottons_steam": "Algodón + Vapor", @@ -1448,6 +1451,7 @@ "iot_hygiene_pro_steam": "Higiene Pro + Vapor", "iot_intensive_40_steam": "Intensivo 40°C + vapor", "iot_jeans_60_steam": "Vaqueros + Vapor", + "iot_jeans_steam": "Vaqueros + Vapor", "iot_mixed_steam": "Ropa mixta + Vapor", "iot_mix_and_colour_59_steam": "Mixta y de color 59' + Vapor", "iot_perfect_cotton_59_steam": "Algodon Perfecto 59'", @@ -1668,7 +1672,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index c84f4c5..30c3776 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -524,6 +524,7 @@ "iot_active_wash_steam": "Lavage actif 20' + vapeur", "iot_allergy_care_pro": "Soin Allergie Pro", "iot_all_in_one_59_steam": "Tout-en-un 59' + vapeur", + "iot_baby_60_steam": "Bébé 60°C + vapeur", "iot_checkup": "Vérification", "iot_colour_59_steam": "Couleurs 59' + Vapeur", "iot_cottons_steam": "Coton + Vapeur d'eau", @@ -561,6 +562,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + Vapeur", "iot_intensive_40_steam": "Intensif 40°C + Vapeur", "iot_jeans_60_steam": "Jeans + vapeur", + "iot_jeans_steam": "Jeans + vapeur", "iot_mixed_steam": "Tissus mélangés + Vapeur d'eau", "iot_mix_and_colour_59_steam": "Mixtes et couleurs 59’ + vapeur", "iot_perfect_cotton_59_steam": "Coton Parfait 59'", @@ -781,7 +783,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, @@ -1411,6 +1413,7 @@ "iot_active_wash_steam": "Lavage actif 20' + vapeur", "iot_allergy_care_pro": "Soin Allergie Pro", "iot_all_in_one_59_steam": "Tout-en-un 59' + vapeur", + "iot_baby_60_steam": "Bébé 60°C + vapeur", "iot_checkup": "Vérification", "iot_colour_59_steam": "Couleurs 59' + Vapeur", "iot_cottons_steam": "Coton + Vapeur d'eau", @@ -1448,6 +1451,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + Vapeur", "iot_intensive_40_steam": "Intensif 40°C + Vapeur", "iot_jeans_60_steam": "Jeans + vapeur", + "iot_jeans_steam": "Jeans + vapeur", "iot_mixed_steam": "Tissus mélangés + Vapeur d'eau", "iot_mix_and_colour_59_steam": "Mixtes et couleurs 59’ + vapeur", "iot_perfect_cotton_59_steam": "Coton Parfait 59'", @@ -1668,7 +1672,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index f2841b3..a3465c2 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -155,6 +155,7 @@ "intensive_40": "40°C אינטנסיביים", "iot_allergy_care_pro": "Allergy Care Pro", "iot_all_in_one_59_steam": "All in One 59 '", + "iot_baby_60_steam": "All Baby 60°C + Steam", "iot_checkup": "בְּדִיקָה", "iot_delicati_59_steam": "DELICATI_59", "iot_dry_air_refresh": "רענון אוויר", @@ -318,7 +319,7 @@ "sea_food": "Ready to cook meal", "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, @@ -570,6 +571,7 @@ "intensive_40": "40°C אינטנסיביים", "iot_allergy_care_pro": "Allergy Care Pro", "iot_all_in_one_59_steam": "All in One 59 '", + "iot_baby_60_steam": "All Baby 60°C + Steam", "iot_checkup": "בְּדִיקָה", "iot_delicati_59_steam": "DELICATI_59", "iot_dry_air_refresh": "רענון אוויר", @@ -733,7 +735,7 @@ "sea_food": "Ready to cook meal", "smart_mode_title": "Smart Mode", "soft_frozen": "Soft freezing", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index 1bc65a1..0aa8ff2 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -524,6 +524,7 @@ "iot_active_wash_steam": "Aktivno pranje 20' + para", "iot_allergy_care_pro": "Alergijska njega Pro", "iot_all_in_one_59_steam": "Sve u jednom 59’ + para", + "iot_baby_60_steam": "All Baby 60°C + para", "iot_checkup": "Kontrolni pregled", "iot_colour_59_steam": "Boje 59' + para", "iot_cottons_steam": "Pamuk + Para", @@ -561,6 +562,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + para", "iot_intensive_40_steam": "Intenzivno 40°C + para", "iot_jeans_60_steam": "Jeans + para", + "iot_jeans_steam": "Jeans + para", "iot_mixed_steam": "Miješane tkanine + Para", "iot_mix_and_colour_59_steam": "Mješovite i obojene tkanine 59' + para", "iot_perfect_cotton_59_steam": "Pamuk Brzi 59'", @@ -781,7 +783,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER HLAĐENJE", "super_freeze": "SUPER ZAMRZAVANJE", - "tea": "Hladna pića i napitci", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, @@ -1411,6 +1413,7 @@ "iot_active_wash_steam": "Aktivno pranje 20' + para", "iot_allergy_care_pro": "Alergijska njega Pro", "iot_all_in_one_59_steam": "Sve u jednom 59’ + para", + "iot_baby_60_steam": "All Baby 60°C + para", "iot_checkup": "Kontrolni pregled", "iot_colour_59_steam": "Boje 59' + para", "iot_cottons_steam": "Pamuk + Para", @@ -1448,6 +1451,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + para", "iot_intensive_40_steam": "Intenzivno 40°C + para", "iot_jeans_60_steam": "Jeans + para", + "iot_jeans_steam": "Jeans + para", "iot_mixed_steam": "Miješane tkanine + Para", "iot_mix_and_colour_59_steam": "Mješovite i obojene tkanine 59' + para", "iot_perfect_cotton_59_steam": "Pamuk Brzi 59'", @@ -1668,7 +1672,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER HLAĐENJE", "super_freeze": "SUPER ZAMRZAVANJE", - "tea": "Hladna pića i napitci", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index 004b8c5..f731866 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -525,6 +525,7 @@ "iot_active_wash_steam": "Active Wash 20' + Vapore", "iot_allergy_care_pro": "Allergy Care Pro", "iot_all_in_one_59_steam": "All in One 59' + Vapore", + "iot_baby_60_steam": "Tutto Bebè 60°C + Vapore", "iot_checkup": "Check-Up", "iot_colour_59_steam": "Colorati 59' + Vapore", "iot_cottons_steam": "Cotone + Vapore", @@ -562,6 +563,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + Vapore", "iot_intensive_40_steam": "Intensivo 40°C + Vapore", "iot_jeans_60_steam": "Jeans + Vapore", + "iot_jeans_steam": "Jeans + Vapore", "iot_mixed_steam": "Misti + Vapore", "iot_mix_and_colour_59_steam": "Misti e Colorati 59' + Vapore", "iot_perfect_cotton_59_steam": "Cotone Perfetto 59' + Vapore", @@ -783,7 +785,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, @@ -1419,6 +1421,7 @@ "iot_active_wash_steam": "Active Wash 20' + Vapore", "iot_allergy_care_pro": "Allergy Care Pro", "iot_all_in_one_59_steam": "All in One 59' + Vapore", + "iot_baby_60_steam": "Tutto Bebè 60°C + Vapore", "iot_checkup": "Check-Up", "iot_colour_59_steam": "Colorati 59' + Vapore", "iot_cottons_steam": "Cotone + Vapore", @@ -1456,6 +1459,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + Vapore", "iot_intensive_40_steam": "Intensivo 40°C + Vapore", "iot_jeans_60_steam": "Jeans + Vapore", + "iot_jeans_steam": "Jeans + Vapore", "iot_mixed_steam": "Misti + Vapore", "iot_mix_and_colour_59_steam": "Misti e Colorati 59' + Vapore", "iot_perfect_cotton_59_steam": "Cotone Perfetto 59' + Vapore", @@ -1677,7 +1681,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index 961cb7a..344ee5c 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -524,6 +524,7 @@ "iot_active_wash_steam": "Actieve was 20' + Stoom", "iot_allergy_care_pro": "Allergy Care Pro", "iot_all_in_one_59_steam": "Alles-in-één 59' + Stoom", + "iot_baby_60_steam": "All baby 60 ° C + Steam", "iot_checkup": "Controle", "iot_colour_59_steam": "Gekleurd 59' + Stoom", "iot_cottons_steam": "Katoen + Stoom", @@ -561,6 +562,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + stoom", "iot_intensive_40_steam": "Intensief 40°C + Stoom", "iot_jeans_60_steam": "Jeans + Steam", + "iot_jeans_steam": "Jeans + Steam", "iot_mixed_steam": "Gemengde vezels + Stoom", "iot_mix_and_colour_59_steam": "Gemengd en Gekleurd 59' + Stoom", "iot_perfect_cotton_59_steam": "Perfecte Katoen 59'", @@ -781,7 +783,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, @@ -1411,6 +1413,7 @@ "iot_active_wash_steam": "Actieve was 20' + Stoom", "iot_allergy_care_pro": "Allergy Care Pro", "iot_all_in_one_59_steam": "Alles-in-één 59' + Stoom", + "iot_baby_60_steam": "All baby 60 ° C + Steam", "iot_checkup": "Controle", "iot_colour_59_steam": "Gekleurd 59' + Stoom", "iot_cottons_steam": "Katoen + Stoom", @@ -1448,6 +1451,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + stoom", "iot_intensive_40_steam": "Intensief 40°C + Stoom", "iot_jeans_60_steam": "Jeans + Steam", + "iot_jeans_steam": "Jeans + Steam", "iot_mixed_steam": "Gemengde vezels + Stoom", "iot_mix_and_colour_59_steam": "Gemengd en Gekleurd 59' + Stoom", "iot_perfect_cotton_59_steam": "Perfecte Katoen 59'", @@ -1668,7 +1672,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index b59b87a..3a7fb9f 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -524,6 +524,7 @@ "iot_active_wash_steam": "Aktywne pranie 20' + Para", "iot_allergy_care_pro": "Allergy Care Pro", "iot_all_in_one_59_steam": "Wszystko w jednym cyklu 59’ + Para", + "iot_baby_60_steam": "Wszystkie dziecinne 60°C + Para", "iot_checkup": "Kontrola", "iot_colour_59_steam": "Kolorowe 59' + Para", "iot_cottons_steam": "Bawełna + Para", @@ -561,6 +562,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + Para", "iot_intensive_40_steam": "Intensywny 40°C + Para", "iot_jeans_60_steam": "Dżinsy + Para", + "iot_jeans_steam": "Dżinsy + Para", "iot_mixed_steam": "Mieszane + Para", "iot_mix_and_colour_59_steam": "Mieszane i kolorowe 59' + Para", "iot_perfect_cotton_59_steam": "Idealna Bawelna 59'", @@ -781,7 +783,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, @@ -1411,6 +1413,7 @@ "iot_active_wash_steam": "Aktywne pranie 20' + Para", "iot_allergy_care_pro": "Allergy Care Pro", "iot_all_in_one_59_steam": "Wszystko w jednym cyklu 59’ + Para", + "iot_baby_60_steam": "Wszystkie dziecinne 60°C + Para", "iot_checkup": "Kontrola", "iot_colour_59_steam": "Kolorowe 59' + Para", "iot_cottons_steam": "Bawełna + Para", @@ -1448,6 +1451,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + Para", "iot_intensive_40_steam": "Intensywny 40°C + Para", "iot_jeans_60_steam": "Dżinsy + Para", + "iot_jeans_steam": "Dżinsy + Para", "iot_mixed_steam": "Mieszane + Para", "iot_mix_and_colour_59_steam": "Mieszane i kolorowe 59' + Para", "iot_perfect_cotton_59_steam": "Idealna Bawelna 59'", @@ -1668,7 +1672,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index abeb471..6ee6a70 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -524,6 +524,7 @@ "iot_active_wash_steam": "Lavagem Ativa 20' + Vapor", "iot_allergy_care_pro": "Cuidado Alergias Pro", "iot_all_in_one_59_steam": "Tudo em Um 59' + Vapor", + "iot_baby_60_steam": "All Baby 60°C + vapor", "iot_checkup": "Check-Up", "iot_colour_59_steam": "Cores 59' + vapor", "iot_cottons_steam": "Algodão + Vapor", @@ -561,6 +562,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + Vapor", "iot_intensive_40_steam": "Intensivo 40°C + vapor", "iot_jeans_60_steam": "Gangas + vapor", + "iot_jeans_steam": "Gangas + vapor", "iot_mixed_steam": "Mistos + Vapor", "iot_mix_and_colour_59_steam": "Mistos E Cores 59' + Vapor", "iot_perfect_cotton_59_steam": "Algodao Perfeito 59'", @@ -781,7 +783,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, @@ -1411,6 +1413,7 @@ "iot_active_wash_steam": "Lavagem Ativa 20' + Vapor", "iot_allergy_care_pro": "Cuidado Alergias Pro", "iot_all_in_one_59_steam": "Tudo em Um 59' + Vapor", + "iot_baby_60_steam": "All Baby 60°C + vapor", "iot_checkup": "Check-Up", "iot_colour_59_steam": "Cores 59' + vapor", "iot_cottons_steam": "Algodão + Vapor", @@ -1448,6 +1451,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + Vapor", "iot_intensive_40_steam": "Intensivo 40°C + vapor", "iot_jeans_60_steam": "Gangas + vapor", + "iot_jeans_steam": "Gangas + vapor", "iot_mixed_steam": "Mistos + Vapor", "iot_mix_and_colour_59_steam": "Mistos E Cores 59' + Vapor", "iot_perfect_cotton_59_steam": "Algodao Perfeito 59'", @@ -1668,7 +1672,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index 2fc4e21..2e5d324 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -524,6 +524,7 @@ "iot_active_wash_steam": "Spălare activă 20' + abur", "iot_allergy_care_pro": "Îngrijire alergie pro", "iot_all_in_one_59_steam": "Toate în One 59' + abur", + "iot_baby_60_steam": "Haine bebeluși 60°C + abur", "iot_checkup": "Verificare", "iot_colour_59_steam": "Colorate 59' + Abur", "iot_cottons_steam": "Bumbac + Abur", @@ -561,6 +562,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + Abur", "iot_intensive_40_steam": "Intensiv 40°C + Abur", "iot_jeans_60_steam": "Blugi + abur", + "iot_jeans_steam": "Blugi + abur", "iot_mixed_steam": "Mixte + Abur", "iot_mix_and_colour_59_steam": "Mixte și colorate 59' + abur", "iot_perfect_cotton_59_steam": "Bumbac Perfect 59'", @@ -781,7 +783,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL (Răcire rapidă)", "super_freeze": "SUPER FREEZE (Congelare rapidă)", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, @@ -1411,6 +1413,7 @@ "iot_active_wash_steam": "Spălare activă 20' + abur", "iot_allergy_care_pro": "Îngrijire alergie pro", "iot_all_in_one_59_steam": "Toate în One 59' + abur", + "iot_baby_60_steam": "Haine bebeluși 60°C + abur", "iot_checkup": "Verificare", "iot_colour_59_steam": "Colorate 59' + Abur", "iot_cottons_steam": "Bumbac + Abur", @@ -1448,6 +1451,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + Abur", "iot_intensive_40_steam": "Intensiv 40°C + Abur", "iot_jeans_60_steam": "Blugi + abur", + "iot_jeans_steam": "Blugi + abur", "iot_mixed_steam": "Mixte + Abur", "iot_mix_and_colour_59_steam": "Mixte și colorate 59' + abur", "iot_perfect_cotton_59_steam": "Bumbac Perfect 59'", @@ -1668,7 +1672,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL (Răcire rapidă)", "super_freeze": "SUPER FREEZE (Congelare rapidă)", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index 162fb93..528db30 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -524,6 +524,7 @@ "iot_active_wash_steam": "Активная стирка 20' + пар", "iot_allergy_care_pro": "Уход для аллергиков про", "iot_all_in_one_59_steam": "Все в одном 59' + пар", + "iot_baby_60_steam": "Стирка детского белья при 60°С + пар", "iot_checkup": "Проверка", "iot_colour_59_steam": "Цветные ткани 59' + пар", "iot_cottons_steam": "Хлопок + Пар", @@ -561,6 +562,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + Пар", "iot_intensive_40_steam": "Интенсивный пар 40°C +", "iot_jeans_60_steam": "Джинсы + пар", + "iot_jeans_steam": "Джинсы + пар", "iot_mixed_steam": "Смешанные ткани + Пар", "iot_mix_and_colour_59_steam": "Смешанные и цветные 59 мин + пар", "iot_perfect_cotton_59_steam": "ХЛОПОК: ИДЕАЛЬНАЯ СТИРКА 59'", @@ -781,7 +783,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, @@ -1411,6 +1413,7 @@ "iot_active_wash_steam": "Активная стирка 20' + пар", "iot_allergy_care_pro": "Уход для аллергиков про", "iot_all_in_one_59_steam": "Все в одном 59' + пар", + "iot_baby_60_steam": "Стирка детского белья при 60°С + пар", "iot_checkup": "Проверка", "iot_colour_59_steam": "Цветные ткани 59' + пар", "iot_cottons_steam": "Хлопок + Пар", @@ -1448,6 +1451,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + Пар", "iot_intensive_40_steam": "Интенсивный пар 40°C +", "iot_jeans_60_steam": "Джинсы + пар", + "iot_jeans_steam": "Джинсы + пар", "iot_mixed_steam": "Смешанные ткани + Пар", "iot_mix_and_colour_59_steam": "Смешанные и цветные 59 мин + пар", "iot_perfect_cotton_59_steam": "ХЛОПОК: ИДЕАЛЬНАЯ СТИРКА 59'", @@ -1668,7 +1672,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index b0fb17f..7477b47 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -524,6 +524,7 @@ "iot_active_wash_steam": "Aktívne pranie 20' + Para", "iot_allergy_care_pro": "Antialergické ošetrenie Pro", "iot_all_in_one_59_steam": "Všetko v jednom 59' + para", + "iot_baby_60_steam": "Všetka detská 60°C + Steam", "iot_checkup": "Kontrola", "iot_colour_59_steam": "Farebná bielizeň 59' + Para", "iot_cottons_steam": "Bavlna + Para", @@ -561,6 +562,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + para", "iot_intensive_40_steam": "Intensive 40°C + Para", "iot_jeans_60_steam": "Jeans + Steam", + "iot_jeans_steam": "Jeans + Steam", "iot_mixed_steam": "Zmiešané + Para", "iot_mix_and_colour_59_steam": "Zmiešané a Farebné 59' + Para", "iot_perfect_cotton_59_steam": "Cista Bavlna 59'", @@ -781,7 +783,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER CHLADENIE", "super_freeze": "SUPER MRAZENIE", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, @@ -1411,6 +1413,7 @@ "iot_active_wash_steam": "Aktívne pranie 20' + Para", "iot_allergy_care_pro": "Antialergické ošetrenie Pro", "iot_all_in_one_59_steam": "Všetko v jednom 59' + para", + "iot_baby_60_steam": "Všetka detská 60°C + Steam", "iot_checkup": "Kontrola", "iot_colour_59_steam": "Farebná bielizeň 59' + Para", "iot_cottons_steam": "Bavlna + Para", @@ -1448,6 +1451,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + para", "iot_intensive_40_steam": "Intensive 40°C + Para", "iot_jeans_60_steam": "Jeans + Steam", + "iot_jeans_steam": "Jeans + Steam", "iot_mixed_steam": "Zmiešané + Para", "iot_mix_and_colour_59_steam": "Zmiešané a Farebné 59' + Para", "iot_perfect_cotton_59_steam": "Cista Bavlna 59'", @@ -1668,7 +1672,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER CHLADENIE", "super_freeze": "SUPER MRAZENIE", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index 8eda7ec..46b4474 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -524,6 +524,7 @@ "iot_active_wash_steam": "Aktivno pranje 20' + para", "iot_allergy_care_pro": "Nega proti alergijam Pro", "iot_all_in_one_59_steam": "Vse v enem 59' + para", + "iot_baby_60_steam": "Vsa otroška oblačila 60 °C + para", "iot_checkup": "Preveri", "iot_colour_59_steam": "Barvno perilo 59' + para", "iot_cottons_steam": "Bombaž + Para", @@ -561,6 +562,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + Para", "iot_intensive_40_steam": "Intenzivno 40°C + para", "iot_jeans_60_steam": "Kavbojke + para", + "iot_jeans_steam": "Kavbojke + para", "iot_mixed_steam": "Mešano + Para", "iot_mix_and_colour_59_steam": "Mešana in pisana oblačila 59' + para", "iot_perfect_cotton_59_steam": "Idealen za Bombaz 59'", @@ -781,7 +783,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER HLAJENJE", "super_freeze": "SUPER ZAMRZOVANJE", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, @@ -1411,6 +1413,7 @@ "iot_active_wash_steam": "Aktivno pranje 20' + para", "iot_allergy_care_pro": "Nega proti alergijam Pro", "iot_all_in_one_59_steam": "Vse v enem 59' + para", + "iot_baby_60_steam": "Vsa otroška oblačila 60 °C + para", "iot_checkup": "Preveri", "iot_colour_59_steam": "Barvno perilo 59' + para", "iot_cottons_steam": "Bombaž + Para", @@ -1448,6 +1451,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + Para", "iot_intensive_40_steam": "Intenzivno 40°C + para", "iot_jeans_60_steam": "Kavbojke + para", + "iot_jeans_steam": "Kavbojke + para", "iot_mixed_steam": "Mešano + Para", "iot_mix_and_colour_59_steam": "Mešana in pisana oblačila 59' + para", "iot_perfect_cotton_59_steam": "Idealen za Bombaz 59'", @@ -1668,7 +1672,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER HLAJENJE", "super_freeze": "SUPER ZAMRZOVANJE", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index ab581d1..67d3d6a 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -524,6 +524,7 @@ "iot_active_wash_steam": "Aktivno pranje 20' + para", "iot_allergy_care_pro": "Tretman protiv alergija Pro", "iot_all_in_one_59_steam": "Sve u jedan 59' + para", + "iot_baby_60_steam": "All Baby 60°C + Steam", "iot_checkup": "Provera", "iot_colour_59_steam": "Šarena odeća 59' + para", "iot_cottons_steam": "Pamuk + Para", @@ -561,6 +562,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + para", "iot_intensive_40_steam": "Intenzivno 40°C + para", "iot_jeans_60_steam": "„Jeans + Steam“", + "iot_jeans_steam": "Jeans + Steam", "iot_mixed_steam": "Mešani veš + Para", "iot_mix_and_colour_59_steam": "Mešano i u boji 59' + para", "iot_perfect_cotton_59_steam": "Perfect Pamuk 59'", @@ -781,7 +783,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER HLAĐENJE", "super_freeze": "SUPER ZAMRZAVANJE", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, @@ -1411,6 +1413,7 @@ "iot_active_wash_steam": "Aktivno pranje 20' + para", "iot_allergy_care_pro": "Tretman protiv alergija Pro", "iot_all_in_one_59_steam": "Sve u jedan 59' + para", + "iot_baby_60_steam": "All Baby 60°C + Steam", "iot_checkup": "Provera", "iot_colour_59_steam": "Šarena odeća 59' + para", "iot_cottons_steam": "Pamuk + Para", @@ -1448,6 +1451,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + para", "iot_intensive_40_steam": "Intenzivno 40°C + para", "iot_jeans_60_steam": "„Jeans + Steam“", + "iot_jeans_steam": "Jeans + Steam", "iot_mixed_steam": "Mešani veš + Para", "iot_mix_and_colour_59_steam": "Mešano i u boji 59' + para", "iot_perfect_cotton_59_steam": "Perfect Pamuk 59'", @@ -1668,7 +1672,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER HLAĐENJE", "super_freeze": "SUPER ZAMRZAVANJE", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index ad348f0..e0ffbf5 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -524,6 +524,7 @@ "iot_active_wash_steam": "Aktif Yıkama 20' + Buhar", "iot_allergy_care_pro": "Anti-Alerji Pro", "iot_all_in_one_59_steam": "Hepsi bir Arada 59' + Buhar", + "iot_baby_60_steam": "Bebek Kıyafetleri 60°C + Buhar", "iot_checkup": "Check-up", "iot_colour_59_steam": "Renkliler 59' + Buhar", "iot_cottons_steam": "Pamuklular + Buhar", @@ -561,6 +562,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + Buhar", "iot_intensive_40_steam": "Yoğun 40°C + Buhar", "iot_jeans_60_steam": "Kot Pantolon + Buhar", + "iot_jeans_steam": "Kot Pantolon + Buhar", "iot_mixed_steam": "Karışık + Buhar", "iot_mix_and_colour_59_steam": "Karışık ve Renkliler 59' + Buhar", "iot_perfect_cotton_59_steam": "Kirli Pamuklular 59'", @@ -781,7 +783,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, @@ -1411,6 +1413,7 @@ "iot_active_wash_steam": "Aktif Yıkama 20' + Buhar", "iot_allergy_care_pro": "Anti-Alerji Pro", "iot_all_in_one_59_steam": "Hepsi bir Arada 59' + Buhar", + "iot_baby_60_steam": "Bebek Kıyafetleri 60°C + Buhar", "iot_checkup": "Check-up", "iot_colour_59_steam": "Renkliler 59' + Buhar", "iot_cottons_steam": "Pamuklular + Buhar", @@ -1448,6 +1451,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + Buhar", "iot_intensive_40_steam": "Yoğun 40°C + Buhar", "iot_jeans_60_steam": "Kot Pantolon + Buhar", + "iot_jeans_steam": "Kot Pantolon + Buhar", "iot_mixed_steam": "Karışık + Buhar", "iot_mix_and_colour_59_steam": "Karışık ve Renkliler 59' + Buhar", "iot_perfect_cotton_59_steam": "Kirli Pamuklular 59'", @@ -1668,7 +1672,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL", "super_freeze": "SUPER FREEZE", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index d1e0fef..6a6b3c4 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -517,6 +517,7 @@ "iot_active_wash_steam": "活化洗涤 20' + 蒸汽", "iot_allergy_care_pro": "Allergy Care Pro", "iot_all_in_one_59_steam": "一体化 59' + 蒸汽", + "iot_baby_60_steam": "婴儿服60℃ + 蒸汽", "iot_checkup": "检测", "iot_colour_59_steam": "Coloureds 59' + 蒸汽", "iot_cottons_steam": "棉质 + 蒸汽", @@ -554,6 +555,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + 蒸汽", "iot_intensive_40_steam": "Intensive 40°C + 蒸汽", "iot_jeans_60_steam": "牛仔裤 + 蒸汽", + "iot_jeans_steam": "牛仔裤 + 蒸汽", "iot_mixed_steam": "混合 + 蒸汽", "iot_mix_and_colour_59_steam": "混合材质和彩色 59' + 蒸汽", "iot_perfect_cotton_59_steam": "完美棉质 59 分", @@ -774,7 +776,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL(超级冷却)", "super_freeze": "SUPER FREEZE(超级冷冻)", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, @@ -1397,6 +1399,7 @@ "iot_active_wash_steam": "活化洗涤 20' + 蒸汽", "iot_allergy_care_pro": "Allergy Care Pro", "iot_all_in_one_59_steam": "一体化 59' + 蒸汽", + "iot_baby_60_steam": "婴儿服60℃ + 蒸汽", "iot_checkup": "检测", "iot_colour_59_steam": "Coloureds 59' + 蒸汽", "iot_cottons_steam": "棉质 + 蒸汽", @@ -1434,6 +1437,7 @@ "iot_hygiene_pro_steam": "Hygiene Pro + 蒸汽", "iot_intensive_40_steam": "Intensive 40°C + 蒸汽", "iot_jeans_60_steam": "牛仔裤 + 蒸汽", + "iot_jeans_steam": "牛仔裤 + 蒸汽", "iot_mixed_steam": "混合 + 蒸汽", "iot_mix_and_colour_59_steam": "混合材质和彩色 59' + 蒸汽", "iot_perfect_cotton_59_steam": "完美棉质 59 分", @@ -1654,7 +1658,7 @@ "soft_frozen": "Soft freezing", "super_cool": "SUPER COOL(超级冷却)", "super_freeze": "SUPER FREEZE(超级冷冻)", - "tea": "Cold drinks or Beverages", + "tea": "Cold Drinks", "vegetables": "Vegetable", "zero_fresh": "0°C Fresh" }, diff --git a/info.md b/info.md index 3fe91a0..4fcc8ec 100644 --- a/info.md +++ b/info.md @@ -10,7 +10,7 @@ Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.co [![Supported Languages](https://img.shields.io/badge/Languages-19-royalblue)](https://github.com/Andre0512/hon#supported-languages) [![Supported Appliances](https://img.shields.io/badge/Appliances-11-forestgreen)](https://github.com/Andre0512/hon#supported-appliances) -[![Supported Models](https://img.shields.io/badge/Models-112-yellowgreen)](https://github.com/Andre0512/hon#supported-appliances) +[![Supported Models](https://img.shields.io/badge/Models-127-yellowgreen)](https://github.com/Andre0512/hon#supported-appliances) [![Supported Entities](https://img.shields.io/badge/Entities-317-crimson)](https://github.com/Andre0512/hon#supported-appliances) ## Supported Appliances @@ -142,7 +142,7 @@ Support has been confirmed for these **4 models**, but many more will work. Plea ![Dish Washer](assets/example_dw.png) ### Supported Dish Washer models -Support has been confirmed for these **5 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +Support has been confirmed for these **6 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). #### Haier - XIB 3B2SFS-80 @@ -153,6 +153,9 @@ Support has been confirmed for these **5 models**, but many more will work. Plea - HFB 5B2D3FW - HFB 6B2S3FX +#### Candy +- CF 3C7L0X + ### Dish Washer Entities #### Controls | Name | Icon | Entity | Key | @@ -226,10 +229,11 @@ Support has been confirmed for these **1 models**, but many more will work. Plea Induction Hob ### Supported Induction Hob models -Support has been confirmed for these **2 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +Support has been confirmed for these **3 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). #### Haier - HA2MTSJ68MC +- HAIDSJ63MC #### Candy - CIS633SCTTWIFI @@ -310,14 +314,20 @@ Support has been confirmed for these **2 models**, but many more will work. Plea ![Fridge](assets/example_ref.png) ### Supported Fridge models -Support has been confirmed for these **7 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +Support has been confirmed for these **11 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). #### Haier +- HDPW5620ANPD +- HBW5519ECM +- HDW5620CNPK - HFW7720ENMB - HFW7819EWMP - HSW59F18EIPT - HTW5620DNMG +#### Hoover +- HOCE7620DX + #### Candy - CE4T620EB - CCE4T620EWU @@ -370,7 +380,7 @@ Support has been confirmed for these **7 models**, but many more will work. Plea ![Tumble Dryer](assets/example_td.png) ### Supported Tumble Dryer models -Support has been confirmed for these **19 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +Support has been confirmed for these **22 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). #### Haier - HD80-A3959 @@ -387,11 +397,14 @@ Support has been confirmed for these **19 models**, but many more will work. Ple - NDE H10RA2TCE-80 - NDE H9A2TSBEXS-S - NDP H9A3TCBEXS-S +- NDP4 H7A2TCBEX-S +- NDPEH9A3TCBEXS-S #### Candy - BCTDH7A1TE - CSOE C10DE-80 - CSOE C10TREX-47 +- CSOE H10A2DE-S - CSOE H9A2DE-S - ROE H9A2TCE-80 - ROE H9A3TCEX-S @@ -476,7 +489,7 @@ Support has been confirmed for these **2 models**, but many more will work. Plea ![Washer Dryer](assets/example_wd.png) ### Supported Washer Dryer models -Support has been confirmed for these **13 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +Support has been confirmed for these **15 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). #### Haier - HWD100-B14978 @@ -485,10 +498,12 @@ Support has been confirmed for these **13 models**, but many more will work. Ple - HWD80-B14979U1 #### Hoover +- H7D 4128MBC-S - HD 4106AMC/1-80 - HD 485AMBB/1-S - HD 495AMC/1-S - HDB 5106AMC/1-80 +- HDD4106AMBCR-80 - HDQ 496AMBS/1-S - HDP 4149AMBC/1-S - HWPS4954DAMR-11 @@ -581,15 +596,16 @@ Support has been confirmed for these **13 models**, but many more will work. Ple ![Washing Machine](assets/example_wm.png) ### Supported Washing Machine models -Support has been confirmed for these **35 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +Support has been confirmed for these **39 models**, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). #### Haier - HW80-B14959TU1 - HW80-B14959S8U1S - HW80-B14979TU1 -- HW90-B14TEAM5 +- HW90-B145XLINEDE - HW90-B14959U1 - HW90-B14959S8U1 +- HW90-B14TEAM5 - HW90G-BD14979UD - HW100-B14959U1 - HW110-14979 @@ -597,8 +613,10 @@ Support has been confirmed for these **35 models**, but many more will work. Ple #### Hoover - H5WPB447AMBC/1-S - H7W 412MBCR-80 +- H7W 610AMBC-80 - H7W4 48MBC-S - HLWPS495TAMBE-11 +- HPS484DAMB7/1-11 - HW 28AMBS/1-S - HW 410AMBCB/1-80 - HW 411AMBCB/1-80 @@ -611,6 +629,7 @@ Support has been confirmed for these **35 models**, but many more will work. Ple - HWB 414AMC/1-80 - HWE 49AMBS/1-S - HWP 48AMBCR/1-S +- HWP 610AMBC/1-S - HWPD 69AMBC/1-S - HWPDQ49AMBC/1-S - HWPD 610AMBC/1-S diff --git a/requirements.txt b/requirements.txt index 03a01d1..c21dd63 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -pyhOn==0.15.14 +pyhOn==0.15.15 diff --git a/supported_models.yml b/supported_models.yml index dbd1adc..4c09fd5 100644 --- a/supported_models.yml +++ b/supported_models.yml @@ -3,17 +3,20 @@ wm: - "HW80-B14959TU1" - "HW80-B14959S8U1S" - "HW80-B14979TU1" - - "HW90-B14TEAM5" + - "HW90-B145XLINEDE" - "HW90-B14959U1" - "HW90-B14959S8U1" + - "HW90-B14TEAM5" - "HW90G-BD14979UD" - "HW100-B14959U1" - "HW110-14979" hoover: - "H5WPB447AMBC/1-S" - "H7W 412MBCR-80" + - "H7W 610AMBC-80" - "H7W4 48MBC-S" - "HLWPS495TAMBE-11" + - "HPS484DAMB7/1-11" - "HW 28AMBS/1-S" - "HW 410AMBCB/1-80" - "HW 411AMBCB/1-80" @@ -26,6 +29,7 @@ wm: - "HWB 414AMC/1-80" - "HWE 49AMBS/1-S" - "HWP 48AMBCR/1-S" + - "HWP 610AMBC/1-S" - "HWPD 69AMBC/1-S" - "HWPDQ49AMBC/1-S" - "HWPD 610AMBC/1-S" @@ -52,10 +56,13 @@ td: - "NDE H10RA2TCE-80" - "NDE H9A2TSBEXS-S" - "NDP H9A3TCBEXS-S" + - "NDP4 H7A2TCBEX-S" + - "NDPEH9A3TCBEXS-S" candy: - "BCTDH7A1TE" - "CSOE C10DE-80" - "CSOE C10TREX-47" + - "CSOE H10A2DE-S" - "CSOE H9A2DE-S" - "ROE H9A2TCE-80" - "ROE H9A3TCEX-S" @@ -67,10 +74,12 @@ wd: - "HWD100-B14959U1" - "HWD80-B14979U1" hoover: + - "H7D 4128MBC-S" - "HD 4106AMC/1-80" - "HD 485AMBB/1-S" - "HD 495AMC/1-S" - "HDB 5106AMC/1-80" + - "HDD4106AMBCR-80" - "HDQ 496AMBS/1-S" - "HDP 4149AMBC/1-S" - "HWPS4954DAMR-11" @@ -90,6 +99,8 @@ dw: - "HDPN 4S603PW/E" - "HFB 5B2D3FW" - "HFB 6B2S3FX" + candy: + - "CF 3C7L0X" ac: haier: - "AD105S2SM3FA" @@ -117,10 +128,15 @@ ac: - "CY-12TAIN" ref: haier: + - "HDPW5620ANPD" + - "HBW5519ECM" + - "HDW5620CNPK" - "HFW7720ENMB" - "HFW7819EWMP" - "HSW59F18EIPT" - "HTW5620DNMG" + hoover: + - "HOCE7620DX" candy: - "CE4T620EB" - "CCE4T620EWU" @@ -128,6 +144,7 @@ ref: ih: haier: - "HA2MTSJ68MC" + - "HAIDSJ63MC" candy: - "CIS633SCTTWIFI" ho: -- 2.39.5 From 14f133f3f471bf0b46a7ba3cd2e524b45446d125 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 15 Jan 2024 10:31:25 +0100 Subject: [PATCH 204/205] Update README.md --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index d13f696..f45771a 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,13 @@ +# Announcement: I have to take the project down in the next few days +> Dear User, +> +> We are writing to inform you that we have discovered two Home Assistant integration plug-ins developed by you ( https://github.com/Andre0512/hon and https://github.com/Andre0512/pyhOn ) that are in violation of our terms of service. Specifically, the plug-ins are using our services in an unauthorized manner which is causing significant economic harm to our Company. +> We take the protection of our intellectual property very seriously and demand that you immediately cease and desist all illegal activities related to the development and distribution of these plug-ins. We also request that you remove the plug-ins from all stores and code hosting platforms where they are currently available. +> Please be advised that we will take all necessary legal action to protect our interests if you fail to comply with this notice. We reserve the right to pursue all available remedies, including but not limited to monetary damages, injunctive relief, and attorney's fees. +> We strongly urge you to take immediate action to rectify this situation and avoid any further legal action. If you have any questions or concerns, please do not hesitate to contact us. +> +> Haier Europe Security and Governance Department + # Haier hOn [![hacs_badge](https://img.shields.io/badge/hacs-Default-41BDF5.svg)](https://hacs.xyz) [![GitHub](https://img.shields.io/github/license/Andre0512/hon?color=red)](https://github.com/Andre0512/hon/blob/main/LICENSE) -- 2.39.5 From 8208c2f722e9e224ffac43d804fa3cd7e7003edf Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Mon, 15 Jan 2024 10:32:05 +0100 Subject: [PATCH 205/205] Update info.md --- info.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/info.md b/info.md index 4fcc8ec..079f926 100644 --- a/info.md +++ b/info.md @@ -1,3 +1,13 @@ +# Announcement: I have to take the project down in the next few days +> Dear User, +> +> We are writing to inform you that we have discovered two Home Assistant integration plug-ins developed by you ( https://github.com/Andre0512/hon and https://github.com/Andre0512/pyhOn ) that are in violation of our terms of service. Specifically, the plug-ins are using our services in an unauthorized manner which is causing significant economic harm to our Company. +> We take the protection of our intellectual property very seriously and demand that you immediately cease and desist all illegal activities related to the development and distribution of these plug-ins. We also request that you remove the plug-ins from all stores and code hosting platforms where they are currently available. +> Please be advised that we will take all necessary legal action to protect our interests if you fail to comply with this notice. We reserve the right to pursue all available remedies, including but not limited to monetary damages, injunctive relief, and attorney's fees. +> We strongly urge you to take immediate action to rectify this situation and avoid any further legal action. If you have any questions or concerns, please do not hesitate to contact us. +> +> Haier Europe Security and Governance Department + # Haier hOn [![GitHub all releases](https://img.shields.io/github/downloads/Andre0512/hon/total?color=blue&label=total%20downloads)](https://tooomm.github.io/github-release-stats/?username=Andre0512&repository=hon) [![GitHub](https://img.shields.io/github/license/Andre0512/hon?color=red)](https://github.com/Andre0512/hon/blob/main/LICENSE) -- 2.39.5

%{oPe1QZ)LeAct*ndK>HPj>(o74B8IE29;`iFw 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 z zlx-pt6D2=ju4IPuzsC$j{elr0E&z>ZGVHRsJE#VejypO!DlQ?hBOZym8R^Dc(`B5c zpQXkqCwx6N)TqU}VHEyTpsBRJd+Ooq7LirsVL8Q>W%$P~Tq+}zT(L~BjFXk$x)@P` zG;9N04uI^5NTsIV;qTdUUl3@ePc+B@ZaCMghg8*OcXPRb zBbXVA{TcmoXdPne!Y%g86o@bc=ly$9xhcd%HHAtoZPP4uJKHBwi=06;4{Q^b+%X#HWCwxvr;1rFdVPc(0hNZmvdWXS)Yb0s z3DBJjI!tjzbBIVY7XoC$j7+jp?Ct_%pF=$Cotym!l8ZcEz2d6w#3&4e&{I(bg1J6k zbU!KuQPF)T9>5voB-0lD{{6%A?()@(AK*kZGBE+keIu{pv$C_DBtv?7Y(QZ9Q2p4s zK<$cR6l0STAKiFU0kl$4LJQPV&; zl!cU&i@86-Q8o_X(?SgVoPm5@6ygRSg)C}hz@k3(-vd4n^sisP66%(|F$B@w$&(n6 zEaAG9A_l4zt;_ejoG zA1g^W%Um9lXXp!tv}guOS(p7sVmB`>*3QMRPgKEx2_Fai*4*GM9e|$T<$m-JG0K4C z3E+aD^v57Z+zwC#OAQhbz@9KOGwW9MXb-_8r3jr~f8K&)qW$=naee~SvbUGccq&0_ z6F|mi(7%u8_tDLb8^D!7MREv12|F;a)WCX7SRhjUjW_u1u~FDxs*jk#RI93^JOFA0 z!ZaPcN8%qofo6l1jY5L7ftbOn224@_rxuX93R5EGe#GQQb+t9EmyNtf9m$fwwVIlm z-G&}`;EY&fYKjw=`xy8isF?;EsiXVdN%)CGxY{Rx*;Z!Sl2_?YEs~cOUt4PT6CL~m z{C7Tr42wJdOI#FcfER<*niQYNB0jM?M3S7{ravu!u^0ZeMZ*4=WFQd<0%&2lAFAlQ zmVkJmB>H?mlJXC?&-t1AjN;M*+zEwsRnyYo&f&myv~s>^DHuGW;Hqe15tA6L1SSBB zFOOzRuykeby)ggP9u#Nz@IwCAoyBPmO(swy9yFHs7`Sg$W*9pS- zfccE-f$A|~W!*tG<^xC=82!)hegN?K=-dM+xh;H~Y0hg~2kJ749sNW9?fhQ5fLr$1 z$fGjbxCzK>JU$KhWAyZ2wZwn_7yW;IJB^h7U&GJ;Z$I9%x63Llv}D|U?2SpPWp2J_ zqxuny>_a*~nHWHsfGX*$40@Bi!fQ2P61FSjE_!SkIP+U>1SHr0%PtbWCBqg1y(aaG z9_LTo)KfAH^pgbJj9<+Wd@te^E%>-_@_&5{#1assL0=Pnm5CqkoE}ERCuwKL49@#@ z?Kh9#k-d#3U_wO*K;!_Udfzw!+@_$H3^=;*5C4E)65uelrOyV`0I-dXN_HR1s*=jn zI?4a*mpUZsnM%*k$M;yy5S@^l75C!bD6&C5B@kBzl^QXR{Zk{#6`CVS!Ea<`V*_4U zc3el$Y9!*-2Lg1gKw%)v_H9%jmlR9`2&xb99PxrqnE*{D-oAZY(dTxLigscmBdRZm zSgsU3R(KWv^dK3Q1#_r&_I-qoi>7>*s1I}1MTDf`UFhs+qZ8k8j8Vf;V9fg z9z|HvVD<{@<5iP9ASJNVK)>xfGEkZRPEU(-5)kFOffecD%KgvTV0*s(8PEZ2$ob#~ z$yf!Z8s6XwKzSnIb@_>ag#LGaUi!ZVRKV@OFTTSJ{5wA00Uib@m?q%X8da)bPKNMI zlL-Rx!1#gqCg64m=;{(xP*8Z3e`>dn7l_7!1OIVN?d|QmpB?}?IBmfW6idHaCotCc zjU0NtuL6n;qW*Kh4-O7KjsUC;xWs3|tka+r*eZypKf$HU-~XF)fEoB`S+Jgy@N6Xh#uAm%`+jmJ<)A~{HNKDurK`9zH9kG<`L-hm@?eccF{96-#I zv9T$)n}RW}Cv)Tu@~Gs$$)At}HCgqDKySW(f3lXwuO2%~8U;KWANY=UvbDp;wdz{2 zJgxy|k8AYnF}W$A=cj9?6)`Z0H^zCi!~aPkAzIge2`%6nF!JPa`^Wnk1!%=4J)62R z`1htO{7X6tK#l0PqcHCY0k=^Xf0QubF;}H(8 zLW_4|NLmbg=xbD6<0W9tfo9K*S_xXU;obZbqOb6bQkxsPArC8#{MXm=Z3nGg}wEue+qH^{esPHF5B47tyOvPoXM{)>a71_vasqQhyGJu*;BA<&=89L4ggkht&Qq z(Ag$9oK3F$?^r&pm_(JqW(RB&6aXh==#m%?5Tk3DcODk z-oWhu7c)a(b%;5R>ew{q!$`?nJtO9?yQo@I3&OUa`O)VR2-_@<*E|QMdW=(DJ@2R* zG82RRY1EIzEmN^@)b^WkXq%#A7AZ@8k4G!g3i zxORxGP2m`}u*}N+z4U5vYYVpxZT7}ftL|Yy&)DhQaBFjR`AnWHPh zoamH`CloGfg2`x96j!<1QF|F*Sn5cQXiq%Vu;5(yQDZXAH1HDs2-_@8Ey(nYT}7$* z*E{wJX-_sOSYc4h59hMF2Dm#tWsBS}Qs3RA;v`;;DZ4&T==taG0-mo|_G(`d)oSs@ z4sm5m)NqB&7E@F3F(z2s?MWY+lzaiS?8O3e zPU8fuA^i4mm?M#*0GE~E9{1}IsbKXJH4+NNcl!5o{4I_BW@?UGpP18hx-)j#)mov< zjRjgNGQY_D+tP{+Z|1LG3*#=y1yO2fwsGdNXGo|{vjRS>~UitYzs?$2e_+T0`9l%J~n49fnWfIP2|6^ z2vMR@Pvf-y^@nS~g40^Fb(XlMl zipO^m^>ZLMuC>>*-8QuciYfv>3eT<;=IloM9(b+JH#qI8sFxfwb*yJsQ5**^#la z?DG@c`S;C()(TgxPUp|#V@chq)M~&1zCGXpP);{9qiB_(&`TF+mN$dswh(vyp#=Gbb~RLD*C0b*EZX z|6M?ZDu1HK2Avj50rZ4szPhI~Q4UcFZr9cECv4~dl4^9x<_X#QZ=_t>rqrN1kJ!T6 zWJ?SsdCjR4WNBG1s_+8Ju9-ahNC_LmXT}0~ZRHe)_B3;Y8Ak#Rr)S)&rW~Y0vkBq&f0kOPJ+WQ0y`>yws_XfzWJ10qe(MvmI-HidpOZTV=gGZ+p#$>6p z%(48t2JH(JV+HAGSLMrdY~L+hf#=V6&kikd@diP;Iahxo1?736R`;m~k6N-8N4M-o zlulJ6{7oq@q+>W6M@ag5^!Xl_okLTn?*Fg=K+gbbV+Tmt1AZ9&`5N2DWsJ;#NP|;4 z;!%st6bl~(?*T}k=d@dY{!hE9`aJit?65N>`HMtDMu#A%!C|G(6T z#rH1|bhEfPMf|cT-O{iLj_Mrp%{p5-e+K%3%~CNlDxHKS!~EPU4&`fUgsbq$GJ}t_ zl`CzY`dCv-3V~ZY8a~x@@4Ic7AVn#=6rL8d1Q|8kMkrh00e&8uEY2&QE0l7oov#@; zK!=T8Qq}t|l2ljfn!Imr&T6c}u-xxG0|&pke?!>)r1W4)H_c!Q^|>aZ`rqhmcGsT+ z6YLAE`uXnL3$NJuDPufYcX*oAu%zQR%hBBt<=U3*2@t<=cHw9OJTwhEN)HRd{>=`4 zG!z@Wkztg7Oyo&f<2MSN@?$ZbHboS5ZS^3U)*y``>jLA01z7`P!)I}cS`aBRuW)V0+^zV}1mfC#=2SmFw8soMGqfAyu50hLT^gY+3f#3$ z=u~rXtjr+6_Gqu|2}{;{fRpm8l@;(mAE91|uCO zHswXS>-RS`_2`CQx2WACnq$bOf4U>rsyt_9#S9V*>uhoC=e0{MXj82Zl>dD9HxUdi z4~Y~;zL{czr(-C}WX`_vx$%!rpCeJjp2~`LHFY9tt>r7SCEAXe{7x4F+M5MUT8R=e z(>ervejl_2Q^~2g}-Yy-{KZAEK3%rPwtVq6h{%XzlnBSQZC;>6?)VBUlJYSP)DIJ{3wBOtzatcI6!q0S1|3v90! zaoUb%I)VdyWbkXeL-I>%+n9HruY`#7Ejj#h0|~Of(NzQ zV!lq4tw^!O6PtDGA?WLg+_vJML?Hc$^kJ+y(t7gxx#<3DsLQh-iuFhKe+==ke|7H1 zBT<)_hyZZENGGxeG8u~YTmxUvtDQLDzyv7C^Bo17In%==(7F^;nB_@7(l6$3a@txx&n3jA+aRa%HUxiLXywhAi#Dc zOgvbSZ$!Agw=8*p!AAb3{4$-bnyu`sJ)Fg}c?Zj41yTw;r{tSX&a+@Dsx!sLeVxA4 zyx;pgF*Q*4&lUK$RPptH)EaV8<$S++iW0fjI+5dj)k9mEn;3KBXC5`m{*Yqp^MUm1 zvENm1EloqaKSDTpsfC|2Z9k!Dtd%kiW@(cY05$ z_*c5rSh)Yo6d@$Hy)2Pd8|z?nn?BT%X;$R#Du=mo`2?$WQic`voKHn!nOR?P;_u4u zvDTlA6N(DTRR{|>$CCnsq9hYPze5Tj==pv`-1}Xkhp(2@Re(60H#xz6$gwB^)pp3e zXwM!Q4j?hf?uWG=*DLz^H8`c8O&PC&I6?C*)>6Cspzjq3uBVMmeqJLjM&X zF)}s`9(T%mc>*$=QE%tNhsgLAGYecd?Tnlb+bTQkxT%+(tVQzLt>q7EEw>qaU(C|v#AY7E zF@6(#YN2!5H2O8y+4;bD6G&Ax24%&QGqX=jNHf8njXI3q^AAmL`Ziu$@0lox1tIto z{)&sBhZ})oXh0t5&HNSoJBTgaQc>@E6_dZ@G2kLN$&4atXy z5GEJ7>|Riv*Y!eEzr%lUYtzO*WWx&Qj)|qF~dTJ4v%egzQ?|Zh`w8+`@%&X>REb zNhU@G@7t-Fr0e0%7mBrCO<`i84$ee)7fnvB3B?H~6Cb|_`S}}uX4gT;P&SS}+PSap zeSbd9T_xOlycx--))_~r?omxkjPr{6urcn>?Kd_<+M2-m1ieGG?zMWJhf4J5(jn{C z0oR{Hmq!5mBmw3{_VzsFtf*+`XJw-E=BXvb@D{7d?udV^6ki% z=lA^>$(Q`a0Y&)sg@+7wc zdOJJ5f;p_LReY&0HB3pt6db3QMRem0*p{Ip16^Znh~2AN4dzd->1?#(f~zsq<7{0? z!slNZ%!L0@i)l620tD{TsvLq5}@g!OM9~2~ZV;#F$yADYmYt-vv8^MLtPM^F>BG_x$V;zvq*qLtalV7143msL1QX zPOMtk#To)Pv>r!p{a#|tp6jA~bbwd#FwdkH0lp6k<gc^*Rm6b7c3AuNCKTXOuQuS4dv&`&EE~@mqnfirf zW$CLu=rH6|m%b168LlymQqfRluGZQ~n$Hqd*Z0)9lP)#3Ppygg*v}xcvoH4VrrqYv z;AS8)n%q!cpU9}0$0|Y>b#(HcEhT^VC73Z{pzLaHm%TKwCf-_}JDG0`ER2g*tSZHX zm2W(q%{j#7+}x6PxN4R!d6!=87antE^s1&95oY-N+VsuxO&N~=;Kw0f{I4a2CJXEW zZv;-Ot5yb0Ex&Thc{YYD0hockT1k;1)hu^ z(&#Jxh&u8#B~-?j{0g(@WAM+oYm#c+$my=_(xvS%FV5$DLyMXkJ`zXNH6AqS2hQo|xVHSgwmLU%(t4^u_Ulun>DVxCnM< z%gJt>K~bUZz1aA1$XOb;0__UdvFMD!Ce9bcMa}t!F}WI z!GgQHI|O(4;O=mn=XuZhq;A!%`{Q&Km8$H9?p}MY)pLzG#+XNtr|arPG*Wrx;3J8? z4)wWCG(+vxGNezql~XLXe6ysTh;+xLyzMerDI}y(!@U3KD%-P&;GVvXjz&X*B#0F-PDMV zses!~mf%naF=Eqpi#vS(^yWx6+PH4qCH;%!+ctov#N5v@`am38i^n=wm$Ab*RbK%@x;_@dg=-i3Fpzfom-=W6zf!9!D(2Np zEMW$OAm)3^mwaOa!iE%*+0MWsW^!+Dj~NdHwo+?L$oN_X;#iBieMojFlr`&knYmrn zE;qnPQuFyh{MI~?l_9Dj4w)9d;vqH2skfmK9a&MKWB}mSqlc=T=;1)0^LMcO=YnNf zAihCW`TkfGCWfLVZ{=~t!+?1GxxS%N7DzJVw+1*_59sO9bA@ab34o>TUT~9Uftu)R z*ZV`}3B<-}3OEC4UxclEkj`Vg^6;tJXp>UmbvvtV=d){w$9u^0P0oJ={$Zip+8lJX zTcZ-_dbH7*XyD+VKl+#^K*T%c{gimLm&Gn?qQ$sN3!I49KVSH6=oF(L&rgv+wD!>O z(W`IZ+AQn9xnq9)g*8%q;8uzs_>;LQV((88f|!#>u6F-`@cy%KCCB&H(g13E!o9Do z3iS^b=;xk{pyx_a?Rje2n?e9Ok^#TD9or3D0Js9nS@+>+i|wO?%e(Ct_cu=9LsFLE zUERBfm{UJsgpvzvfe%EC;*Yel-^&NkN$}M`rR@C}Z2b4L_s{#;0^h4u?*~gc&3hs0 z{fM!X-Te35kdO!q`1e)#{V>u}`sX_DXK$zeb0_a-ZvA%=7k^awp zTXH^i$N1|%FV`!y(MlXdG9kgx(;*^?Lzjp1YBdq3rQ*T$S4=vBh<)kox8KqPBh z))h7&;c;PSAE%WRxt?H;AH4>OcVzibvzHPOJYD0yS8{>DQI`bvpaP5Y83Okkknff9 z{d9+*YI*H&(F*~0fqa1?l9ic}cBR#w)taDRX{+h8HFCG*`;RLuLRIxo&RFeu4o&v; z1U)Rwtx!8-tRa?K-E1fymYwaR?`FbF)tMAC2-DuLg$M%36wCl6?fAC+jcDnM>^q;P zRJ|ss(i9j178QU*`Cjz`>VmD-cU(MTpk%>0MqM%W?CE>B9+06scTtt$m(wVNe&GOr zlF#9ZsGbgxX<=TRL2W($Wan3fa!_PSUh&G-5csr5 zw;9b-8aupa7zlv?=WiyA%{!|~Ek5Y+p1{B9ln{cjM^xuR>@p}&@_7E_{-DSgfJ4*G?X%nV*M=brMZ|hQ!Q2eTGO~hKconHEBom`SD0!ISGyFCA zQvOfm0Ryj>>%Jqgvncg^AxLJ%4}UiFSJQX)uxX{b5%Fzr&WtAJWcI_`qJLr1tZ3HobIXEuZeEjoDEutI-v@gDV46Z$$e zd!e1t!6W-k$U}JMgrmyR*+gfjKjSc4_`|f4$At#TU*zX-& zY+F6;2bA`OcQd;N9{#_|DE?#>1^JiYZMS0)ee=>FNckzN$@4g!t{kmiZ_X3H{{SC{msO z^6c}k^M1$ANjiddV4Z@m1z0o}l-GNU#-8ne)*m&-==83}e-Zi@rrLOeb~QESO*-tz zDiR;$td7r@nrKSbWOR%O?$&fc9pz>I>>Pm|i^E}Dp%vfbJ16FMpx*ENpLthUV|IuNSs4Up8m zkmtt#xO&I~$<6y>1)j@+UxcKD*MVHiW!Lod;B|jZ2TwHoS3j7V?d=&e(FRm2V34&9 z*rle8nB)s91vEg;DqCCN>7yYj+}0VNU&)px&-dh;()Bj)mN3cc6(g)~(Um(I>-EZz z`Ya43S_%HLQsNehDlhQ7P*Les&8aeueTl^61VN0UJ>!+Y*0n*G_t6fT>y}X_OpKoF z?^fVs-&+v)qdnmhEryr(dS&`L5s%VNeBWNjpr|d1S9sGP!mnb&Lfa86gpP=C2%BFJF2@`9OwrwT#lg9p4v57xoowxp%Q%^mA^i8W`~7)edvLdm@$kcmjJ6xRv_C!9PK=qJ z$g6CCbQ|YX6doOSt_d)(uMid+%dbQ&H9gjZR2cZ{NS@6r>p*=9EEcZMhe~8D`11m; z8cb8eopna^0@^18Rn3_FyMdPOt(7Bs0cs(CPYN@GTe9<%n5Nd?%hSRe>2(+bsC~7C zc|V!7wiW)nF7-!G;(>b6gBTVf1PQhcPTa$W@2TN?daUkt{!Dj%G+dJkvyM2^M|+<5 z+`W2wLVP#wr-apB*bp=jcV6}i6O(ylfe2wS|3-n@VcyWxv|FC3`eNt(K-o&BSlcal zN&wZ^%+oL?xh9;pP-}*f#%{G2lcv4OVeGKkv@=s$MzK(Xdw4rlZPUg9Un(Z z&?ox^&wFn-c6RqOdnjV7?r)--NLDxP~G#uL69 zPsU-n-`Z1=XqxEt4fEq5hjzfUD}4T_Yj#zN(Fzg3zB2XDJn%n*%ty*he^4zCF8*|}uB|Ek^V(v;P3Lv19ykH4AbV!wYSw=v zi6i!O{=7xdE=lRanMAc9j#Y@(FQ}1Es*2wFK@Z=8(wVm@j3HLaBJT6WfIYK0iP-K#zE6zVd}P^bSAsY_{E4QvXZ)6_&S%d$4= z7t@hYKyJ^42d>S3)?FOA3}Mh~5c!1yxp%ry>~!Rk?T12)LL?z(;!h;cgf9r<2A?Kh zknkai6C8sfTfp`7$hBH-U;JjeWm>`5fomcXWHFjPK)D)CUj_iFgvXE+d`DuqOZj$f z5k*(5h1#XjL`f$i=;AgLU||6{!sZ`s>ezc%7ePr?@DQQc)5tZy(i*LQJpp9bbm@0|5>OemQ zAnn0sj^)%Kr=dBl9q2Ea%budUbqy{p;EL>?v`9ihrt`aoHFEzosZ&gz!# zygsR|R%c1bsX_X8zxs!I<>^<7H&KKOWT}_9&CN%@edUyi`QoC(lZXBT=5wYgx!Ide z%TCKv{r#>8Ib7TyL~;6ghFL3Dr-@FM=i{s4|9o#Tz7N7D-k<9`mbT?>Hi1`Qg!XD6 zv34XfKpiIK;%XYma=o8)Qh(O~+AaM_}Z4 zh|twNG#XGUP>UY$ zIVdblrg^R@guRY8;}q~`<@YNzV`Mx&)L(z3=dH1bhKL<1g3FN!QLwse(XdIVvDPFi zK&6NfsZNDioA~dz%bEU8jQ%Ex$nPG9o$Y8{*nmd8J@y+}yi@WOGSGD^m;V>rN?J#H z*y^hGQd$6e+16aF64sluE(z@?r&LdUS9Q0f3O=S#Ywf;jm}ij|HT1dSGNbQ;G+hPt zFf3Oztq&2D`G^8N;$5mMCoZ{Zs#VY8T?`QD;pfvOjW?Tm6We?&ZLTK0XCl8nfAHln zAXnbbDrhN0yltd7^7}43{B1)8P=FzKzd}B^a9dfNkxOYfa?6_1@_|au0^{_h{jqsX z1Td7|e^$}KpFqg?KOgb0Z%^c>u)5nw06U2EQ?ZENo`}3Wa?5)Dxs(IHF%y6US+x9( zJk$$2O3Y>~rjZNE()GY8(X%E@qV&Y?>Fhb)qvl-Oo4MQ!I?;IQeC_DNi?`oRA%kzE zx*PAko=(yY8@@E*PFE*-q5vK^oe*A<-3bFxQ`4drJ1s#fuItm?tg;mnYA8p_Ud}m8 zpsSd8PPn(-s!n%UYJTau1vsTI;M;#=<7vd$jHnt!fE?h~rz<;_*&b1U9{py_kq{M7 z33jy0l4#WN^>iz+krk1SRp`DBjOQhXp~n|IEp^07S0}2&3JRB1p+7cI^PK*2GgDtr ztS11{8{(-sL=aiTEMWTY&&IupKDkCVYWI?K9)S9m=>-9K2;i~X=#8)S22Airq zK`2|prnl$zNP~D}5`36chM3RSuBb)pq-j=X+39xlu;2EW3i-kTJ5_qvZ_jF#H@m@pG!oVQZo=~i zyItpV^3D!9e?n%zTUPB=lR7g0S*ovxbHCXD(ZfBb5~VD@ZzkZQtbkjtNB&Jp3VwEW zc4mIwg?eG>p~K5+#JYjiupiN6B2!kZ|L_fk2QT8%jIEHu ze4TW&LYsQiN9y~#GRv27-OYoO^{h>kK8!T=r|*o~uiS_*nG~Xyk2hi}<3zna_-5Ad zuiFiltyC~~GYs|ePH|3mKzpuV0nc>uLRRs_JU;7vA?Q8An^E)89H!CU4cjMt0N~-Z z<#VImUcZM`s&R*x`C2i*aCMrs_%^9uiZSMCnL#}DXE59+;#|Zj`umZ0Pq9#OH_-0Syj0dGIIZ&O5!W?;7!<&=^y3apGjm}wY z`iHv%(5E~uHFe2&HRe^O0^m060i{yFBGmgTZT)=3VZv^s)3@vNG+LV5``I-s>jn_5 ze+782001(sa9e~zH@d`>bN4rdU0n}o3d4*sFUo+gt#y6ZH2Wj@Pgh9Q`q}&H512CTLDZ`3d^=ip6fifu*vsi?o?af(hNqOQ30`k+lVm<8k`0 zt2>a%U3ay6Jteak!#jJdziFiX2gJ6RL%p^9ku3YE@2$!oK=Ta*K$qrTS`qHgJgEHMWX7|pZe;I7=xcNa{Z-Eu2^edU#IA_Oz-&w9j6t` z8ySBdjh|R{co+?*rFnd&@yJW3_hmY18dTTT@Qg zTu$Umkg*5{4(@l6xO#k#?8WD4^8$JTmJ4S_duNwte)RZ0*%SFcEgv92?rSlQH~CK| z8fGSyW(sBd)^caQr-V~ouTjVjXNGLYZwKc;mw&&$EGxggp4>jgDN&t=*4F$mmmS?o zHq+-?xd*DvQ_Dt*cVbAGjPnW?0ZEt^90~_~9^#5(E~O@i!&2R2&MWP_tqug(D)F{@ zRBZC){T+X9DimKQ}ZSLxA=g$Vz6= zCB#QS8D*l@Y#Jz?EM?bn#E++@lG&S#YWJ-?mMN<2Ga9~>pN8dX1aOpXy_Q{^K(Dp7 zmWw9=I{}F#xi16MpWm#ax?pR|wH!vAu9|=%mzPFYe{ynnguJ&wWiwazaifjSNP*9d zz74$M?N_K(FK*@|p%0MYeja3qd9lIjSfq`#UpID{CdWHsDdT>830vH)819Y`(=6(`#)rEK4(_L|U!4LGz-O&{I9SVsH5zOT@~& z{A7)`ibswLYuNwjK!}Dz&yA(e7O|;Ws}D3NS~$5SfinWC(y-9}{%fZSe+Fahx=3q# zBV7kkQS zezqfhV4KP+jDri*-MXsStj^Vpe-OqxfrXk!Ar_C`nf zmQr+wF5K6rqSo@l`~^kLqd2w{k+iParY~Ppla{6CZSzycSMEmCoAV+Rcn=n|`)^d^ zyHsiF*IP|bO$Kh5I2>3pH8uoCkdzCa zrEYsHpRNC%@RG7X#@OoHJo>DDgHlq&oN=F6u}LWptzyL%C7?0%xH}^8 z(x;+wt?Y1IW}mp5gx)JUzAC!Hv<`P8n5o_YN)=D68Lmo*9lFT+H`^tsAElVq8<)=oV69& ziim~QQ<&^CmS;a#4bPeX)qY7!`%8Ib5%_WSw1=xzKOab>)NQWLboNEA{&@Z71KJfW zzc#QDTr$YDy{OoHKR;MG#5FJjlc zzY{L9(iXuUlVgu`&ySgYvbi{OEo=-&O2LXtf!KV6{>5y&^p2JEKR7~lrJDbeUM`qx zRf+6Cjwr<&JT(R=iq`yiC49=|jJcjQS)F?~0Qb%YN!Xep`y9l(;-wKW&=;or7K5p6 zX*X`CPbHD}dOb`B66J706cgDgjl+%r5RF*LxF8=#J%G+0+>XdT{l#P5EPw_dr=pE(Le|Z{Oy_T z&^;+J2r&wa1e3kLiAuRipt-Q+6KLBOYNn1FUQd|y!<$gO<}D9M zkldkOaaya54f$CnHHi<~>~cv_G2DiaC4l(ys9zD`4UQbQ;ee%*ekd+p!12sD52jRM zwIz;#!yfxw{Fz0iPdN0wAs_qmx=JA+nwpwoG1>?Ea1q8j!^Hht_Y*`l!)~WgS}%Y4 zF&aST^h5^6X;M2TYGav)md)_BFV43drCL3iZ})>q^bOPqwZ~#_@?rn>crP)+F_mwPDf$+y`BojpU=QxI^L|iNJX3uC~>(eKJx*K~JgoWF1HmDJhIy8E4bd z(s(`w6Ik}VctRUo-zfly-VU7}As@TtKDVRMf%tF4aJ3LDh;Nlm=UP+jh~)GHkWA(4 zoh5IXeP5-rp@^E&s*~t>U2IIYGcuKO1^$N!Y(VAb5a_e^E_efEu{|x0Pk?+pxYnzs zEld9jR)X*l`5lalfD$jm5S}VOdX}#qj2n_g*tfgMuW8cjR|XN{r8*!r{C{)HwhlSz z3tDbj90uDylqMAy-Mg{nB>Nxtwd?q&*v`Jt={BWrS*=F=m9X2WguG^%f+EJ<2;}hP za{K65rCdch6B1z+Dyksx>Us}(9>xFo`{h<4f-nV;=w~-@EqwV$V`zlBFb!>!(m)eO zX+PcVX5_WWDnmd!a_g*z?p+_xb6P@T-bj7F@2PbmJ6$t$lZbw}Bke1kjAp{?{ z5v1s>)9BY-N=R9R4OSOmPT$DuT`PJpWD2WR*1%&Qo3@>A>GJb33mn8-jdlI{bnVHE zw?FY2_VwCBnO;L$t}upV?~Jy{4JCQ6pI|-Fpw@YU#f&`1QYy?h24bdTTn8ilLV4gH z(wD_pjE+Zqb_<$|B7`Lk9e%mvD&Fy`>gSqSCqL8Kh;%;jYDf>yd7Jt@FGr zx6=n2X3i=rHqi!is(QW zN^&wXLxp7m_FptDW`W>eEpLH-P;hN*o~5l+;hkP=_e8XP0wrJ*No|~#$o7OQ68=_fNA(Xy_c0xH zNH+Wy($j8#kBmR8!=i=xHZX=uI(lUC^D(307yuA8K|w{Ye+;0P1hxo6fbuiA>~s*= z!@W~K0iGECwe1cthh2G12XKqtOYvt{0l!fA?|%Y)X~wzsN8k3}yQOVU{JZOu>VU6F z`QP_^ww_L7jQ1Noz6oP8S?R;uZ;rxQ1(RO}G&q5D07J3AE5TYRUP2o(ksfm25=P7? zv)UMaasFolz+ozAOX?&Oayw;;rlA7DL zF7knvX~I98rPi-Z$DI4u%puF#f_*x+YpHyddLM|#K&&-U`!zgvP7N0F%a0aJ%jhwJ zSSWIex;9ywNwHwG)JoRa4P`lYv0jwV<<|S#CLWdiQ8kni?;GLw8D#?Q_;F%gq zf&f?WGNH!sz9A%nK6Kg~;Q9g7BZy#R0)weMNnsWL9Y8j5|Ke@QuIa(Vial)(n976> zZ0j%8n)&}3+06Zy=n|dIN|Er+{2fYNec?W>=Gu=lkUl+Mh>40~HJ&P3BBQ6LqIp?7 zgAG`N(SS_o(jqa{3JY{?)q~r0`Z*>z*HKR5V^Sd=8iE*h4;$Y54L5Xi5FkPQuBb5G z8_jv>xlUVu4gwUr`q*N@ws{@k0E!In+>!wp(=Y+vO*Oyn%~k)U!65#6zl%PBxr_d% zNq!=S(^?vW(>KRu+IwBEBqx^_`a>l}Gc&HCJMX>y4qXqFA4p>DsP@whX03|Sx$L5 za>e`zFcScai9RMoUnf-c?S$;5YxE z{I9rrFi&1`H`wKs{#BrLq~EGS!6*BOWU`{;$rLw=kj%^e^Pk5Y#~T5yv92DXtKcQ~ zDMhODKOEIfgAYZU$L#tVgk>3DU%GdNNfpZA%0F4V+wXy}ZDG)Ie+2NEW=#6V;9f7}89-G6plc1h3X4c}wFk}~2p-=t7(Yr@$D z;?VUVr7m&LJPBU%(6c00%l+@R=*yBT@*4k5kHZN>FI*&FJM(O*I6>T5xDfhZw>GCF z!4mDf2&{t zOuheKf12JnkB4dD)#8rF^0s5VTO&srTcs(y+X>RTEnrL!?3+#&8+|Ow+z>lak(yomtM%6*A}NIaAF+plA2ol zs>MGqpu-y0YrEo2uim$}#{S}|w#60p@GjvO+1Lg9c6J`bf|`F>Z$X26ebU;WFKW3O zALS6@G0PTb%k=d;o4`S2oRQR&DtsfAg3f~*QI~qNA!>i~z+ND((gz_Stw8}}#PBGH z_qb<83HZKaCQW1l$s)z0>ek0QPOnz%SD*O_TuuaD#Gg*qUzg_}&IDQqI#iCy$C5k! z*9W&q3;koM-ooG9yoj*41p1l*QYyfISE_oMogU{&4b0LRpL#M6F&H=*>ERjho%~30 zP?57IJ_7dve(|~&e#MMzbvj2cnt47vsn@obdgqnTH0o<*J+2Os5KwEGuX-%ZncHYNye3{Ky{Xw1$kLZi$kOv#cGg`xcLo|8158s~ zrOiRT#hXWduur3DeZacwKIGZAZ*nP6akkylUl4P=)OkX)eHx4VD~_*}dR=037j7M+ z9Hh`>4p(9^-00C3b#m7zUY;e~4>~(Vx<@Apdr@!9#rd zV}u?l#@sUMM>qOo{zj_wk*Q1D8-g)71esX88d(gs4WGD@N2WFjhiR`J)mQtK|HPxe zlzNj-5W<%@r#2q3q@HP58+C@vG-~W$c3C+3%)zK}l zmNs-7a=Dg9?-D)Z<(3Uc73I3{Bk_lBAWm7Tfn;oPJL-D15s%CM{CuGGT8v;G*x-5b zQ$80)E!=LUfvvQj)1}kuKR$F!q(vw8$Td9b~{C0PN8cwhe^;zh#1n=w?MYV`OwcyNyfH>?%s z-DfI(z9U!Ok#N|0>c=H)on9Wpe*zB^h2wP>=o2U-Nw?)5*nM~&=@H!-HK(6aRC0tG zY3R#p5}oC!$cFbXb@DOl*{ToD1)p2j9o?P?#1O*ZDenv9RZNZ2jC&O|B3}Dkcuz$V zA!};0E;AVTdO0M@ljdqU-U`-3JER$58S((%8o%W5M+(N8~b}4n_5_`Km zA{p@%{{{?n|2}$NE@#z?+78J5!oCOE|3IS^WNmfmiuLjHoKghtFxtmWek^zlby9x) z!6jWLYpH#bv#e23#k310P2;uL?c_xg7`~cEgnUtwRhnxu#xgpjxma6EKg0a;(Z`A{ z0S3TdvFzfgAb&BQkLK>)6RG#x8`7rPxFB_hL+hct>d}m3BKD-?!*{%JGz#dWt=)W# z6434{ZiNQD7(lwQcGX-9&fSC19^IHRTe@0G16C#qwp#PbiVBGHA4aHsMmoJ5&>HCN zw|{^t9h7i(m&4ReMm8GWGV_0hkWL8z_qonMmb_&sYezUNT?M36CnO;#x`}w(;nGE}_5_;Ns}edK!rY|tSW36mp;vp6 zmJBy_P#^fK%k8RpJuumhM&RgZx-5Ry9pTi^_!}PLvaf7g38*GgWgG!?((@!u*j0@X z52m2-Gq?1utiURkt3_pXK%L%nZoIqEqDM0?pdfsh`nh_3cjJ678fJ!9SEkRJM^2Z} z4MC30_#x|8^;~zA5oDUQm(|PdR@-MthfS8xF3<2CDWae$09_9roCu@wz-jHH*ctn< zhI>f(UV+#9%kWXsvlZa5m4JzmNZ$2(jsfm~aX$Y!^aXrv^ZGUM<+-H5n#Kv~*h>yew*OR>|`sG#eeY*m3yBKdUQ_4cEnjVpz z@j>_K3pe?gw6`EKe+9vjp38oy!qrGW54HP$aRI;*$An)wJPE|*IIA1=eF=Vn>xB4h zG}L8w6-POi?lTwujGSFwY=2F(-dn!YJx}@`U=n1JCugJ2h#nvdg8#- zr`DRNy6zo}MRe)p9?4=i22sjQS{y-5`tnUx@`4P!u{AojB4V_A`+YTX$VyC1 zw6?jcEi2I=FP63+PA1}td7YjG>svaa z3zl-AQ(UWjuw>v(a-1yQ+^m*H`fP3vHxH3?S2fGWW?AIzJHH;PM_5;B@X6`1Kvm?C zUdmXK#(P9|(*+)y{^Ps&W-{jrHl|l0x52MOdlp9$|9>YnF%yCE7GfoM zda+U_5fHLimZ(u{2)~CwK97vnh%|L0Y)J6>7#vR@Sm1l-d((t+v2gM=IZry~>w}`U zdwG|q0m#_`EDk**%qx!jEnh(mZZUY<8KbY^Q@BNC0~3R$ zSL5isUJt}sd!$F>bw;ajCfXqz<>r}gzx+~>M${EMeAg3^#Pp{fkCnh=aL3B))4n8s ziuUDeyPF$LJ*)aVgi7~W|Ebwi>jYdbKCBhj4`#fvhm=L97vN{*L1Qp+&}};4H7`&B z4D&3Spr$~}w;Ooq5}CU6lpfhnj2$=NT@A0j9yh_9dhC;~*VthDGAX@Zp2%4y()t00 zQseWls}zu=C1T&Z z&bY;Cj4If9W%PR{f{7ch#uL4)!+w_@VS^tb}}9oiAKeA4osA zi0fMy&X2;Qdye_lHfgOGW@!dGLorpwIXD9|xIR6v;tP-Ra=j2EAY7YnFk-E!NaQ@J_w1 zy^r@I5j*?EZ5ID8uDP4wlp25km0dSZD@rzt(?WaQ{gZFz-U@P^5c834t~^?;JVRp_ z25R8LKA#{4gsQQ~Pd7-9!mUG~Xx_|zBKy;&`tiPgWi}RAl@xAZP7g0-Y+^Pb0k9^? zJSFY;-yIRN0`Rq10cFeI#4fz<6q|3Zt9XKtB$%Pu+X@jf8Fx48)jtf6oV!pro1-l? zg6O~58m-!ze?-#D!~WUFT(ZrH+am!bW4`{E(`gVbQ-v3S2J@4?CD848L zR#z}SC;+FT2dw!7;pl-fIxtv;m^LT8fu_8;s$}AixqJByZp9`XNWmH%snS&x4*5^h zAJ=Ms*4CWk;rD3vlD$#&RtH<|69?jusi<7Efhm7fpCaBJEv2F{PczkpOWy^f`GfC}Rvho9tN-WeK zRuqSwOZOfb+rGXgmG_#di2#I6_4m}4|Mf>2ae1T%4ha}v=w|lTM)_n1Dk0?kEbwE8q{v49 z25XK5tr4WyFIEC_YA(0tD7h-%C^#y+JemO&X=faXz*I{HPlLw3$A3%D{Y=I`dJooB znBAk?MQp(8OPFn+ZRX>1?OR`~kS$-kes|OtzLS2WwJ$|oNVTqoQsZAFLtv)RJ~UE{ z1ySd#m{+&S1IW&*ACEfLHYa_oH$+aET}~ciTL`sBqB@+IYZx8sbhiPO;WDQN6FR}_ zE75XpZZ6QX9SLx8{K3*&@UU)GHeyo4?0Ii12Ev#0^z>|LXkfiAw#_ShYpv)Y+T!r> zfchy}UJk7{_mJ$EK|+9>9X4e2sxuM(jqvL-C*n#9wnd{?vhZ$~a2i*vSnmw6 zOEt)TYxm-;LWS&T%UuwRTj;7vmVtSQIq zx;!%-cEt8{Jr>14jkU>vipS*?;Hqrca@w}6A`)=d3NNjGd&K9o%^q7fwOnt{Xl&$! zMj>2@vEsIl5@?9|wZ8^IZ20I}p2nXu^oqqEZ?~?iyLC+h`EWJSF-`h;G3V&%DN!{`BSo4c52jqW(DQe(Vo(p2RZ+axXs}hYyB5sU~J86z`r?Nrn5C z?2hBs!lGWqus;}Aph1~qwW}tk`PWLYm%KGU{W3)G85ZW2?7LnN+{y1wmMvTI1&iQW zM{EQK&5%o}5WKx!?_L~T`fg*A&l;X6blsZ5%E~ysQI2}kQs|^pBbKYp34rafK~0_4 zU(4w)i!CmUWMUBqor!f>n2hZML@FJNBu?wese|8@`kf_K3A&R;jMe*;W!j^XKIP-{ z>p#vJRC^}}Pef4N%#Wxum8JPe>Lu7;<)zW^P0?LXBC`;Bfzrzx+34C*uBxRf^BMPV zTKKg8fT3}z(BI$|p@{tr?sUup%9F4a^U~|>UMOk5Z(M^fW+t?Oo}VAn$4{B*pHEj? zihlpzh+rN6Q72RJm&^X4_nQ{~#X*hfc*m{cp00;koE1!o`2bv&xrJR(QXEL%WyA95 zWuTuljNNxzoE6lb8lm6A{P)9LSZK9Ak+H=xwp$uOa9NG@FGNeYarSaQLp`Eh%Uw3? z1@YQ?dB7;d`F%RYn1b*lwCrNyE^>onP>BXYreO>TBF@(avTC@lb#<0M8XWDnq{Y9z zVs1ZNUDfFh($TnOp!Gm+6RtjvX*Zx(E!b$NsUToP2e*yBZF)*IES;}hFmbK&VS{&e z7uQx6A2-Hn(XV5P3~cjW7+;CxVVU!TTZrG{7P;ImnqnYAKU`1CqaX-_Tgo{vXMmq@f|1n7Rqfo% zMU?|k?By*l`D6oBh?`xNee9|}+|jo+V=d3q6xn)|5MOCV?4f+D2%~Wh%FEu4wVZ>8 zhTmbz4mTgM1SB&5pn_&*I=y_{LVsoX1iwyF+1&|G%L|%(>eEEh642?6T#ZnHwx$roowfbBmB>4%Mi)O?L;gA@U(b*ila{^!1jw*pK0d}6CdMP% z^kP|VpYKd`x}pUO@vA^UiSE2@gmEYK3f#XMMJN~khOCOjTrSy)fT#K zq(g0$%RyBoQx9dLevdV4Wj)lnO_fArXJpS@t(L39Pd%;$d^s&L4VzF*WOP{To^H^K z7S%Y3cxb$H;JHsFQb`uUej{0j59w50s(iOOcE%kMI|&JR+E|cT>Ir{Dp?nrUP@Q7v zc)oNlYaqM+ZA)(bRi;eXRQt#Fh&#C)EV; zp-9j$fNx$yl)S!phcC-BKibWs6tI6FV`DqtS|+->Y|(`E)RN2Mw_OWyEr`JDnt?Ng z+~B=ZPB+b5`rDN0Z8j~53kskadq8W_!C2nGf4x77PYg~?1rIwNGMsMHVhFLw;O!Lx3vr|3YVt zW!%HXng(+^-Z|U47=uc2_tEyuFmeqeEj+@{c-2P-D@LavUxzFqAt3`71jdPv4B`8= zM^~Ovi#01IMBA_pX`MmXzN?q;iA*+pD zIu2ANm0`FV@#j?07_DWD9W21}dzOcED>6c*a2WcS;Fz7PDmg2WxTT#m#!lO2nVA}B zJB&^}c>3rtle7enwp18SF@^u3^)Z~x3LktVp?e#E;H?7F5389T($;*!bueiT5kNK2 zo+J%Z*^kvRJAa<4r6f^uHD+i)v5RxI;Kv9SZmLKYmA|KHKGC5p)0C)gzd}Du{Ob`Z zLK>5cWo=rR<;{K8{=@(%#Q8SA=22+YTYlr5N@=%$)O*!^H0C|@ii#3g7R`ekFcTHO z*)81^mXO9BP?bB&EV%)s6VjJHu`&H}1GxH6DHvx|1gP-B5xo601lVi^})K(T9?_22<@= z^TQD?#&muTaMoAfL{vGbzbdnrKU%5gvoM=}a>zWdzK`Npbl?-uddn+L|HA_g5xgpi z*BfQV@7X8WKZQw`ymA1g$q#=@U!E~t_Ja%O<_Jngx}Sh2TwOX$z1E&E(~&1&zH->2 zJGqJXe7ULduX`(%tV?%0*pnf2CL?vZf@QEVLO z7D6;HclJwKcJZs5lM@>=bA|wmKCqf0wW%%fV1wTSh4`hm@!PrFZnU2j@|l$=xyC>0o{8Ue;K51VvXflCRu9%X-+O~;3AE7rZ56G6}UEN-Mn?`2|iTteZ zw2*nLJLV(-u-_hQQD}!{`;jDNgC`c^n(V71r%b(Cn{jxzLHWly+Vya8$WUZ;ni9<< zkauxz_iab8Ynx`U#2ViZDejinJ~?v^dj9Pz7`X>YQ5xD$lMlKZW0utWTHW5{v8hW; zb~-tIE*FPC@7U^*k?#un<}qL$1eews{rHQpIy{pscZ%3sBJOXM{L^WUUfwBN^8mM= zRrDnRrDG=|Evfx8E)1~Vu%+7%$LtsWg{`Wpl3kiwlbPmq&taI`{+D?+ejB)W8J*g{ zIT-Zjx%Bs<5QSjSw^*X*ud5YW`NI4yv~!)d{wN7y^;=e&Q-@l_TaM;n+MiMmsGoJA zcdw8lX@I1XA;)AkJ_$SqHRq%=*^rtCL?&&!S?%v59#Z`oLI7E261X6QYlkfE^!z0R#^kEJn#d>Iu@=1OqnP;3h5Uj@fO3`uoM8?xya+(lX z1*!l_#4n!zlVv^&WXTkFeYH3NwP6oC7_8=Tg{APt4=SaOEW7`Qy0;99t8Myyk&pxr z4#6c5+=5#YAV6>kFu1!6?(XjH36=zBaF^hg;O-J+a2R~{;=bSaefFu^r_Q%sb=H?u zrG}YV*Q~3r?tlNfdr9^tlb~)jKXjHzwYELw2XXAEX@*%!-?u$uj#uljl|O`=QX$;co?H77BeBbv%Xx(x)JSAQ_FFR6oY zf^aY~#tnL#Q5xg$MM3>aSKmh#sG0vfcc^AiQCys={J1{o6}3HETXY1vo--L;KTa%C#m5;oLo=E|U!Q%NMBGgnaqET>ZH9&O$&0MLE)C z40$Q+h~8v=v{|Si@SDuZ}f3g9fIM7o(>nHTsLO(3U4}9yO;k&mys-b&mZuT zzhspE)|(c1-0yW0p$4Mb?*l65=|a@wzX>@pvX!EX4?QZZ1nL}l4#=MGVOR_0|1xlX z>?Wj{_;7o%C+_m1qIn?`y4b+?>>YWv)+m6%ECP0^*pLS}3~3lFoVzVsJ1$QMtaJ4# z>25X_aw%731oQmb+cU=9pdv=PSYBlMLVglG=XH-Y>SG=?ESrmw$|NkUcWUjIlPZx; zcKr`ixD&XYH$mPzZSe|S3pXRpw`yD!xxqbEFWZ_TH*m#v-bU3@dQ|mOXwQ4j6!#YD zlhe`KGL3=DO^M~M2| zIuG8H0VkQ|MC#QzU7`@QXKaUw9Q1oCY;m)~4ikx!1gi zi{1E|)jkM+@WuRk7D;$Ol4H;0W+GSgxN@-^C$bWJv1E@1e(6%WlF818I_=o|Trd$n zSc#hHg7Fp`-w`f#_-~oXZn)Cjjf9jDb7guR>wX?I_HaL_C#6js(5dx5%!pmUe2T)G zvm3q6K({~?Zhe6EY2JQxh+O!N~_&q zX9~<-yf|L%Snf#x%)*kLTg%M+f5ouKk@etJ1sxqSU|PY^056c6kjAcaIZ%I&MdmJt z_XN8ELzhT6jeh+>cT4yw&7-m0l>P7mOaG_+-+a}#t(Q#CduPVdn_$DpWxkilGq=NY zw>Nf1F}~4)=U>d^1=9-ArFfUpGgAl~SbS3zMOS@5IVHpoAP*QUe1EY=N?J;;TYHEx zj`&xcy@A+7VSyC0wkP+lX^MfY{@8(=S3Z}Vg*HkmE5&YAMb6vbKs+2GPrT3XsLhh} zyWVl6zLk<@0?MQJwb(Z$6SxBvO-&g(+%CK0?4s}L6*_}g&_zy+pzq(mhi-c>8mEr} ztc$&14s>D+ui6V{$Hc_MzZuP~#afX2PYWZ4w}L;}A@n)JNh>g{#Rg!Mm@kMljKJoAt+Ks&de<++~*G4{vgq>o;Vtz&==a8OBszIF<%u|^QSoOMZXFm)l96h z91Mg!TP0*)U&I)S+5i2hVwB#L)A0R`=slI_t_u= zW~l`awnQug@sDGIN!`GN`hAoRwWn4&f-A5}VnrQhJcw_*6Z<)Z&M4_ISjb9*y#o@G z_jp9&E9No*JtTB}u{`&Gg5MkWasq**!oeijb`o`iu*ik^cv)5s? zz*I&PU>F%49i8*Q4g56DugVYZi_v3&8%t*W9+#XvX4K61`eYrL|8Z8B?p^mL^B)vS zP+l>|sj!-W{rPpzKA&LW5ox8|*3Us>p~52yu*NHWs%Xxo5N&Z)iNdV!dC7IYD+&Ai zR=|;0#S#Uy?uCF?Mf2wgwrQKDpWj5=q?i@clJDgfUI7tLR*9x^Q+oQog*s;D3w|^@2#f*%M zzE@Px6JykvD-M^Ykw*cW?G?uJAHe_7(-*G`vtE+zF?LC7TY_SqJY=Dky`Po1V(tij z-mX4T;x@68z-m44vF`}U>^3MqNqyR-lv>8bpOU6+hK7a!(e`OE(!CPCXlOu8hY95- z>Dbs}RTTtKdN?vKi1(oXqB73@#|q?9fy;g0QYueZBZoGB_K3P8@abNv30G9sIvoJ- z+hQRKllD4{7Cj$2$d3 zp@{v(w1l4LPBSOe*#}ile+10yo9U{6NLZ&Fg)U~7CL%JDMo=(wZVvPu^L4PPCMdNx zP2cy)oFRrsMt;-p@STIYV)Rha(}x0IjPD-UDS4jJwf}X?3?#xF#nf*BpWRY^)4%Z4 zr2NmHKY$I*1FVeW5MzmwnwlgXE;Vk1lCJKuz1){CU&P~8I^NkkJ3IGW^<7@=yf5VZ zA1G}3y^qqL#uqZ19i(9tmjTi)E-pQV<(J!;Fy0^VNq7D8X0QLiX3Nsn;x>SvN%|2O ztd|*TQ0S|_S#wD(y-7hcDxRs|G1Kgzk1r3HQ%FIB z_6h6XmTrJ8n84(rFq^#gIPbSD-*u0Lvi=WfOK53eSG%6M-f=F`%Q_~bV{UAi*=jjV-VSp5&HR;clx{%&pm>F>5T{Xd^5UHPBZ zai0Ha9XC<>KcAJL_n+2r|F_;c>S+IYwoUG-Pp7_~dziEfkK1@tHfQW)bF<99w@c%Q z`7zoTd8NU$F=BiBG_@_H^x$wQ-R( zU1xJ=3G1I4`A7QPX|uxTiM$%!ni_h24*2{Qa^>;c-iD)o6mA2Nnfk<($2V)87sqcvi~N^?OwI_6LU~ zA9362k&HdNnsWE$mM@1Qt+0VMKi>pkgW8>v(S~8}go1UKd}EF{3?p}VHChOX-=n)3yTDi}NKN2F9_6agS1ioPr=zma`f|X2>%CgA z5T)*LDtXHdAl)>U3=DI(V`nBec}7OfrTb!z!+bsb?>pLm5t+R~ptM~bwDkk^92`?V z>aJ_{gxU9$$%1bEG&oIuGm_sKEez}7mEvynd!D#2HL|;|6D!5S=RfY0=ns`08U>Cf z`M)LQMULi2E-2rPc*Z!AIa*dL?ERTgqL5Y%+W$^|#7C-e4n$~H6fu80AoKLgCFC|~ zjjpg`S3%gezQfj3MSogTnNBplhuUYPKR#q)q-nzQ6q|O^{H*I%_K4zk4)DgzHqyBT zi`U6nnR2&;(h|6je$!iLrAaodj%=iy-za|}EA`8XF8AI2j*;4t;tTZ$PgZ<6wUtzhaGvs+rMIt${zecA2ERs=q-9 zW?FwlHFLCOM!MSj6iG>bxjBxid0X3KkBMvo`bGh1_sW0=9lkN@7+6NIJi0OPhc@V8 zM`*@I2BZ^*_fkJqB|KYit%H2RF~7IOLTjr8bQ(X+#d>;+i)V{)lhtjxuyal>WALKW2tHuCIR>4tdB3!y&J5G|IZDjD?I`DWwS z6|1AU+J=Eyfx)l?!MDJ&Ac;7GFgszzx^o*>v#Z$3hdvFXT?3t}w~*@+h^Gn11l7!F zD`{dij?pyQ@mCMtAvBr1WN9Py)316|>`RhHMl_Hk#zHEQgkRuM`iExWnZvUL*r)_9 z!{}G{7q3ney)0=Wl4{`}WqpEimh={~xGkPa7;&C14%#PYCNV_PHDs(e4sg zd6n62O`w^CD>K5<-C`sP!NtpXgf<_ny@@D~hW=y<#^3%1##P%UZ*UuHQ)>ERR&Vh4UmPj~36zKny?J zwvzJrh{j)04M{F6-)zBeJ%w%IH1)9|Vq!T0H$};DpJ_`BNQMcwx%n7lJBMxxSJkyh zL!)KixZs1p6^6PHXS!Bb%z&4Tsw(yrvN<#pLLj}f3Vn%rfeej|-NbiDAB&ns z{I&*?8Zr;irSmi-e%mMMHU>v4$K2TjYr2>d#%Z{xr!~Zfpa___AA(HZEcu#4sNAe^ zoGNk@|9rBC8z7>mu^G#(=p;g^Kc7#^jKgN1lPa?nE7S+=ZBF-*)6gQ$v=Tp;Yqj=~ zr;o>K-J^}hR7@aJ0Vw7^F58qbIxH=DAgsi7ko> zvDmgg6jO2mFhIb`7CsxvB7XSxWD#!Gk`}ZV0S7&949+XAn2M?yXZ9WW4uOh{Mh8WL zyr@+qBm__^O+f{=+>`cF_s=NxqAR%qWFV8$0=cK}vd{+~j1l_AOmFmS9Hyrek`Jkm z7WTG8v^zJQk_IU@=>(=FyBI^$*&48qi|K@_ zi^slRkMfjpPf9}&gBb_eI~#^WcaI2I6f4EFaR&$SGV%n&HpIrvm4}>6;&|-!ce<`5 zP}^sb)*Pk@eatae#yi7N&U<;T%jvA7BtuUtu|L}2>ciey>!$?O7BPc3nnddqx{Pf$ zYrMr)hyv{s4xarB?G;IN z_qOG^m75VE`Qx)3UpP(z)0CWX&v)nzgJ-Mz^cxB)!XnmlwHA{qtCfG4$k{E}_45#BgkhK* zoIYF2YyFhZcjd9;#YR^?qFieIl~?i8EyvakL<}S(u83&VYTQ|1XmpUcd1;4bu+eRH z&M|GPbh}e}?P|JFg`x@J4R>&$x76q=#r8O@xD4vYJZ_Ebz}1nFA)6UW^*xxav|0@{ z&{>#`&G91Ubym{gd+JyG*KmCRp}?;sXZSDC=%MWRaqYQFV-9uq9fFrIs_w07HKh}! zzs%Y^P3A7~Wtq>V>WhU8&PnkVX3?2ei$q@18Ij$dNcoMSP;B;ot&(tQZlU`rw~?2k z)!~WOY1yD-0SFQv$Md?H%vt}&1=DF*<`)FsL-$0TlgK=c2SQ6)+0#^##>$*XAL5b5 zIVxB$&$Guo(v=ImSVxCtlaRLMWv7E6U=Q~KIERA<-;;TqJy2dBklf843@Hdbb)AoO zEp-Bp-3;eP4dNvG*Fi?u%iXaG{3)Psygb>~ma z$$BVE&ztC&#yLLn<{?1ksJT46I?jv?emS8|>YJWoHf+19sX)x}d?CDaajVgWsY3r| z{yH+xU|tZZao`7ffVrGgl3QFF4}6fy*XI>3m&`=nQQ--&hY(Pnnq2FaNrli>b3R>Q~!k-_;o-DY-gft5o+d@;fmyVu1cMiS=;Ea5e4s zs3-USz}rd^sw}nNtY#Y4#Mc`>2jEJK)Yn#uJS$g}J$y*4$`6b+TD8ycpq>?i@ibN@zZ6cuJ41 z?a1p?LOyHjtLkEW1=FBdUC%95b&$|>r)0~oy}4~({5;SC34fo2!@--Vl31nY$#`9k zJuDi;oRrxfYh0-+(cI=_7B7r8rz6po6sGvyrd_4;8xcztgTwX~UTgjI3ruA!uA`Q? zWJAJ$FfiS?S2j^BHFu+9CT2YW(>mGa5kT(()t=Q=*o6XGMdfsXXKZaB@7gsul2Uhb zcNFeD6!Rk@T7kcgTzeXYX4{=IGfv=H_!lJ#rk)PYa1ul>6|CVSS)tQC>4I$joaZ)| z%I@Zf#a{1@<{2B~iiC!OJ+|PT!`Y_2CPmL>T6hUy_Q>3gv1*FRxSjI%btH{_6oS9f zz29&jzQGS;J=7?g@V*?{`~fUQ(_5nRql_q6Sk&pxh|%rBmqd0~TuNJ9PcQP)+)KPz z*Z8a9yriXE-HpS+`x>es`B?&G=R2sJj*IYl+?;dM8!o{YffqT%i7!ec=X`~{{&!oG6q+d_wBbscaE&fuLl=7gF zqsELKZ)nrtfcAUW^P*71&BPz>HoeJnNf{0blRmMQ-1f_qRPLu=gsb~6YYLH5fDoyh zpz^GXVYG#v_i{=W(aMU7Sq)J}164Ft^2mw)NINyjM_Hp`hd;wN@(lg$+4GlbuN%QS zeP@&{vA#M^IOvnl7GI%MI67DQ;H;M~^CTZv($oLME_i-rdS>Y(AX2QT!6)C0K1|m- z90(G+s>m7sD(Qno#;-Iv)4kXLW&rdrU_hFiN!G&j%(&b6W?+Y^?($CB{7*#AhnqW* zJ?QVBdYxRTwya^)SY%gtHz8JrcIe7>ft*VL1-iZhZW4eyxc#qc9R9&O5czHp|5du- zMb!%4|4dkl| zHk#&i{>wqlCEjeSqRUu1EL3vz&gy?S%EID`Qcn`8fRN57`*oR)_?BgFNghK?%x3Gi zub(l>Wl64hqSJQ8^qcl`iiDwPkXyqIk|y%>KFnB2Yv1DDKshh8JPTj&QEsgp5SV&t zxA*z<{K`*I3Oaq(i52A)M3QXWw!|c4)XPIDi5Sx{zGB)eX+7qX0q405Yv7; zv`Br!J3skEc9L?`DJ`Qp`)JEJ{@G|uO=Q&MsE`7>4I#Po}Dum`YsG`>xvSu!E zUilQ{vBLMT+4&k{jU?No{unCQ3;h@QOe!(3@;JnF--ILp7NYQv8W%|dP&cVRPGDtA zavOeLCo|jCAxUN*%w?mzi}wCTh(iD7?dPx#3gAo-@F-hW0t6g@p)&DvTvnR)%=E3BhKSLMCM4Bp19WiKp371vnI2I($ z{-8P1Pw6LfH67Jt-KeXh7Gbl#;ovUOE~}X>=)r;SK;?56H=oDn@HVaA+?eOAyo$~C zo7s~e8f!oFZWmp*$@TH!p620c{FDo{cB#{~f7JftOp-e8dbAh50}Lh@kg>WW@&a8? zl>&C@ivJ8OP49c+PdJQS*L&8vl#%VQpWk!!V7)1I-@b+UcmkP9YLJQ;4IRZ$t)Yrz zW*=m*lqQY+@ecJE+4wuAHYCez7{gfWIj`3P$2)Xx8zU0lLtbPi@n^iYwBEm|)&W7_ z(=Md@15y`+BCQ>m|T@Zg?%>%S&n!jjalLNd0ueQrma?(8!53WS32L+kpwtCC8@+F5>}M>?_LeNS%PlkG*ms|Gc;U{s*+S z5kxrlKo8&)?sM&Rk6dT)GhBqY6uYgR`6R)LKjecVaoNsZ95@S+Zx`71K9HBpmsg2R#f?GHCtnIW?0UPjwSVyQ6rOPQufa9*A?^3duCE z8LqqKUyt433olyS*Z@3MYnUd-`N<7`S$Xe>;%LG3vbe14BKy!*dzhoNRsF{lHT91x zx-gYPbiOHDjPv-6hWNw6+oO#SXxzoBCzRMu$5pDC`X7HI^=A{by7%LxuEqwRig*(> z`LVp2v$(XslO(ynePVm|p2uYc(&ypVdYrLaWE6Voe`@<9N%H@WX}<-L7k<4_=FR4Y zc&r^^=*auNlJkyRQaI{~(J#fERTB`7PYZ=8x6SMrIf89(kHyP^3Q5nJj_DPndKwCS zgzH$l_n}f0pPlH?SA@RX7d8-cB}C_$_ITtHR@^)fMU)`@<(xzr1{fTqVyX(93BI!wyn0@fBeLd-B$wV$q=@CR?=%pRSe{drf%1g zINCcIFvp!H*sXbp1*Qpy!Qkw9pvr>7=I_^Bx+1Xe0DQzAkB_6+hjfY2W~6a5t#yC+ z+t#2CnpuTe*A^DB-X`4YT9Wh*d z;*`xhQFYd4V}o%`WIm%HT)A_q_L>+N%#!wY79dq;D;m&{p22h|bN4*@%C@!`*>vM| z&d5VfXS#i^>n5x||2kDvXJn&H;FoY+W>bvDuc&K~cU*w+M=lZ~{_u`#Y06D`Z&)Gs zZZ%c34E0?sc~GLU{)3{@D7Y;r!~^&)QFWjjfuUqj02!zFTJF_y**wK*OO#_J?rA}VWn}FKv0*2r z_t5o^t=J>f!=TYfN+E6Qw(NW{U+0s*A+c+9>@=+)iuIanyR!(8pu$I75=|M_k9EJA7eUI_3pkkf=>5r_bwnrOI<6A~!Hfg*7 z&MG~Ax=^gtvx)u*Q^@A8U7Ml!^Ru;4z!29nRA1AdJ3Y?+7M|QmLBHrWdeBuXYjNDcBYra<2m*Yv^yU5A7VQzk-;>@X0lThb zew7KH<9-$Pg>LA|-p49P`~%kxS`B-9)0;gBw2Z5Dm4oNDhDlCjB`(U=PZ!u!^*_FULq)CO;pGhcWMNVAM|IY z1Xo*Q`e|Eths*8oXqU|KzKJ10?Zv;DS&ySj`l7G#Brh!xe!R|OqbBA&xwlv`TrCrv z+)YsbTVMfQ)r2sI)Z&p;`eE2w)!nB@L`SmG5wkInAxh!X=` zE(^YAgoG1RNU68#3{prAnkrr1Du=Cmy?JI#_DYR!awPVZ*)ONRtCn)~!!vZMA9R*) zyz>5T_(-u&VYXfD93O-+yT|727xc6Pz@q(X-y^CceeIOss)4+odczvb(Z$7UNz z@MTzU73OTo0n6DO1HeVL?!tx_Bn&!v{o4k+xeEfnpJNNpAFCY}ZarrE-P#pjRNvr_ zfaJ#{$-O`KbRw|y@Y{@d$t{Q3{9FJ{H|=glGj&m-sVLya)*zS?zCu;i+w2l!x1n_9qzc%o*xo~$%n`O?ky85E$F%P#hv@RKT`?|TBhWglfD115FqJ; zS1_s_8X|A^3X&u8=>7^}AHv749BZBFj^r7}vYM@~qG@{Vky~3oydO#_gei!wl*jDO zS!-)6YTW!Vpwk}}O%g6!5ab4S)|U###ilbnFBP}lO7uDlta*W=oK1jZ(9Zdw_w;a; zU-@|ajUw_A8j*GV$(njltjNFa*^KFh*3r6|cU>dP*jnIEqNu+*&1%&$w~!w))Qph- zEfCG$Ry300yv|!LImEKA^%T@ufnjCLy^YbNWbpvO%AeVybMTduT~2H*E`If!d-%3SlCVB<{= z1mhXp6;F;PpRkuWVYXEMG9mL5zDbUgNE_94!fkqdhCMt&VQ(N#1{yEnqKK#;&nn68 zU@iA7+%ZQ4!mJgHcM*(bHELz^OMhY@C#>u=b6dX!YsUEdIKMOS{22vi@gW?03bFQeiHrBS|eJ0sk3oE6v0 zbo1rJ@NcG|_21q9LZ(c(5{CZP_VK)`Jh)XT>UDR#tu^{U+qvtRI_2ZaYvuQ~f5zI} z3#%z}mXCvD;rl<7wSE-y%`109Gn%ex>}t@{;yH`&9*@6>DFVK9f~)hO2WsnS7cau& zHoNiuHALZiy9RRJJK^@f*}2o0%L%!Pu6rzw`U2id;l^4_xvRIQ4+2pFYO|a@mIik7 zoj+5Gp2_D2iD_#-3Y(SKQL(zvoF+pI)i{f?SZ$Ja6GX}%cUBa%j*w=a?QFLB@j_Mx zsi0g8_0s9@EjfEDgTwPgQVtTy`}t)4&Uvsj{*k>sjvQ=m&W^S=Un8@^@oY-}HjP*o zjPL7f4I>vd$`Xhh`A8X+*Os9Vt)Yx9rnU3{5 z=uoulkI+8^9i*?j8l+R6?N3T3A0qW*xA#ub9R4>85LI&L`zW~QBSamU%w52Eb8)?c zIVb}E)lDD}A%TQ%vZ64^TO}`@zd?zz^-vJvXg*3M)Rv>cE`;?j2(s`e*@4#Gefr>w z#_S0I?Eo3TwQl8}SYHG5m51x|P*d-Mf?LPE5ZcA+qUC^~=oX0P`RGzl*oWu=st&3F zRyTrmZ9RYNPW!c+528P^c2!RtUo@0by)c%f2!W-|T)m8_S|+PZ2?k87Vk|YVnD?FtJ5p*%8n!pMIwfP8JMyAC?It>V zi)rQ1&d6Wsr{TFNQpo19(t&N4uilbYXbNmCB}9}`Z`G_f8KVr357B~8nIb7qR5APm z9=>6m`6Y-i%r$>A=F+?(B1M6*6}x*Nwr^jm@yiTp4Fu+SG~bJ>D>j%I`2~9YoHtRY zoOJLYx|og6Tq*n+ZJ-J5U0woxT<=pK(%o9yadz9SD<$|p3SCc!L)b#I3p4TytY2o< zcW%qYmNjn2dY__+{{*mF>!b8mR_(-KBUbfe8tj#8a8VV*IcLu+V<=Bcx7m?6tS6f8 zx2zOf>dy;bRlfwIDhE8tUfK+P`*p6sRB2X>7Ucf;g6!5O!csu}i*Rhh)dDpIbQX8S zmU@Vp+AbZ>%MHpl@p_o9ww#RH=#^M^z(Y9LblIAxi`X|Awv2(dpd4WOYhBvn7^V|T z_eHY@d$r2Fy44o%2tWFGT(STAY`AmG|1Lz4`~yTySbECxpWRfn0Vqkwd6CO2|I@Mc z`~BNJ2`TbBXE1!>8b>zIBWV@RlG2FC30?kzlYn=&w!=h$MNw!29&VFv-wfZWce>*= z3@>g;uK2fkUvtU|ZY)CCWm*C}E$ww~92swLp7&x8pxA&f(=%UR&-QV(*Z#at-OUb# zrrcrUk`{n`96T!+V@QvA$K(FRW$xzX|*^x>B(7 z9qg^^;nHy4%r)X%jWLm!_B~6)u7I>Kdq9No*jn_YmH0O$4;1SM)7ID5!Es`xx~YZw z&iaY$6qxzI#PQ~~%G}qz8j8?;^>8w=OIzHhqyp7mn*M;ih8M>z`K{>wB}`oSqBf4` z-V}3jrtK1ESl_*c8Ym@Mo)mRGUS9nH1?ork%BTK8BMXs>O12n>FBS&;HKwr&)*?_`V5SJccdU_sgu|)S0v(C*OwY#p7Y$qZnJ%r!&0X? zZY9s_&ZRiE197~e_c*^UW?3_Vpu~IvtoLLm6`r8QjMdh^RnXNO!3uP(Cs6kC-7XNM z{&W4`0<`}BiIx3t-&)IAgD;@ ziG0#ki_*g5e?nNF`gTA4{IOG|-3b7J#`yNpt>^ryk}1#E3m3@ty{?BY`uVSl-hlNy zz0eV0a45l}^IZdp`)Bx=UB$n*5$+tQ$5Xb`#257Ca1pz6-WS=LioElBYoo1(yTdp z`VSr0@T?CbWBj`Rg_u!~j9n|y(e#`BgQCIVhs!?hU#7nvpMtqig`TCKY)EuQBXSpI zB8KGmu3M3Qmi?Wo#2Qm)SyePg__fU+nk&hxCx?!w+T<%Fjq z0#T>N{oK~uy|D-wLB6}cUjStHXCGb1u%~4dQ2~_;oZW?W%nG3`+6! z-uB|O#nKsMBipqMu4{;{S*FKuSyyO(@AZ_fmnsD+y^hbz%OQ-r`;+Sf!$P7aK7&H{ z2k+nTbS=pKJUEA+T7R=ih^7z?*8E|7a~NDI_&r7By$u?Ad(tOES5DHIw5quz*Q;Jf z4u4n#W%Y$d@4MXCqejsvO5ytSi(h8!rHiVM>|#a}tuz}Q&FL2+%mc7Y1KBsQOCFP2 zZt`kZg2eM4VKjZ~THnZJ$pw)n;ah03nPHUVJVaLW0z_?^Vjj1U#0|QKn3~Y#!OH_R zYmzn3(N5-7HLn&^Oy2C3he(4}Zs#z}L|hW1TcsTAbcP~v{lq&A>59((?gLZHTa{P| zABoOEw;;qfUSkReoVY3(cP9lVCA|8xKa+0BA<==9?54expHYKn-bT12Ts;upib9g7 zu~%gE95(OdX}z?LK`u{YVA;q*b-uTDC(c~X+nc}wXz!hu^@VE3G7VTMy}iTpD(;vy zVu%;2mcjZ49hO{n+MFxUN>xHR+TP~|8xIcjPPu1Y>CQEN?&wD!2;0l8H7{)t(YcxU zZ|+h|=z^^*!8e|dyN&}5Ez&tWc(Y1wce5h%s-4+FX&XG`?nhdE_D z*SJ*%^vVq+3SnqfhJ(U~dD(-3**4jqP%10+B?B75U!=+PL3o4CSr^IYuBjkL%rpjy z)W&~ois?wcKs_S@^$8RFU@S62FRxLj5O~+1YAikrVJXSI&E2N%W8Tj)GE)`y z|H_%&H>PJV(G*uoSHhiZ+P1~X_JkkrHw&>l(nDXo9UAS?w(LJ2xcvlvrXnMoHSjIN z>FxbAjd~%NUWnv73k|r5$Vr;1sl)cd%*5(7g*p9XYH~b0ONGlf-El0Xtl>O^k1vmF zX+*av^kx%3I{d<{uY?fdt464x{Q%puWGiEIdb`vfp)nFYBUPoA77v@GK~e^yuo+IV zcl*Xxuerg_TnE-S_>U$i+^T8ooPTS5`{9QwXL{TYzAl&tPAcOUr9TRN`UYF~&>6?{ zW8BnzNXyDg2N#Wia@{fyGfqbH;_brm%)#V0+ygo#n8U!H_53#TF`=(t8~w8u+I#%O z+KO>NFm-8lYM}pnc-!(X-<3m>se9{<)1Du&tBw9TF!q(k4iZ;rP}4RFubQ6D&8z+? zAvP{zM5M}-7F;}Bv&08A^U2-N!o&x1>`%X?l$A*k%m!tX)7Kg=kDNq{T*ex+np8#T zBr|qx<}Fi*IKXxkdc%@^e&vP^=cM=vdVQVT%msiKM>P|(h%)u;Y5h!G|KDuie#O&sJr->=%~cs&LjID|qO8MLCpESj4_|9o zvtAmk-SjPEc1eo}m)l;R-sD>ANXgE=bn|iD3a?F*OhGZ2 zihE7{ex6NiPNz_3v3t#tHY8$}1Rpd@dMTbq4wJHDZl4)3{eijKgE^kW2{~xlUpe@J-Sk}-2VZR4x(FA! zbm5x}yllA+uy3BVsh^_W`7T|9Hh*t=Uxu`6F;k*Re~jx<%ga%xg&IE^lbU|uP@&(b zLHuP%`O-jT+Plo{f#gfNx=&MM6yxfL!^`zBHQV~u{Izv7B!AA|3S@QyJBiAGCCprhfkL>kHp&9Ok{Coo0p6s)ZfI zk(wuN0CpytIQlIWb<`!L_dpnB{lz64GnkuyQA|6#%nk;9N-pqOh{hD3YM7YNB_t%+ zqHzK1`g(}3a`z*xQn&nE7;XK4w4IzQ*8#V26X$#cD;I_zojOUWuV!FGP)0*h4hj8H zr%w!Cpzmk5T8^6)rlJd0bfYAaEN9Mbp@C_;rRN}Un}Q{JK!~3d<0BP+rGxQ{Y#Et3 z#8qw9!!d&t<%=lcv)MG>oV&ba$*Wma>84#&!jc8fh8_E3zcfp?7YRqa-7>A1EUQB0 z&r<2PTkidHf+fslQP?86o7yQE&r@?D3NO-l@_wenHv@i4 z14vy}>U+|88(v^Bv@oQ!wEpre1smepr?PS-!kfVKaU(Zms~HZ+PyfQ5R!2_Iq_Nxw z^Z3H=k*3PtjeqNKy_wwxyt{dG~cMBI+-n0ID`)$ey89y5aWod_ZX!7H~9W?&K-WvSv z6^v-Yex9YZRAbF{$pz&BzimxzZZYCf*CRTF`B9>4hwts&{qqh+wzf5a4&NWOU+=pK z{AiS1TG6!tM}2wkW0&;XxyCPF{Us3xo4P$m6S6Ahh0TRllzUz{o!3Pqx1LtoS*bCg zsVkkWMsb88bTKjAZzms}7(VYxXin#eGyA;-nchNSX(1qAa9KVq_W~8o3NJ7ETx6Z{YtQ!vV|1i|nG=dqU zUR`n;Bx&hR`PR&`k7cM`G$|S9)%7Z7*@HNv*+;>+6{jQDOiVIM;q0{Dv3V4H;cF^9 zK8pvO1Uq9V$Xfq7pkA zn(n&<@p(MRtGXm|B)0t*Z6DVsd#}Ign26N)Co54*$~?p#ROk@ize#FkjY@a8fp*)7k|OSc#Qq!RR5r1{q9<+r`k`0!g!ti@z?lqQ_64{ z)?rQkQycmwB@SGI=~M7x!MATuqp4qDky+Fb%AAWWYNajPng0sMiGIx!d3}A21qN%p zJh0z7qh{?GuzjDcMZx#%H(I3njuM%mC|gdiEQQ(8rF`W) z<3sGa*&}#n)7ys8W1JwNqwITo)o6f_4=1x9f5V^pHdhr&kIeoUubV;08+;aaL<}-O zQoZ9I@XPmaum9lVw&?fw?Yv^^6df@tTlUz{aGxLX%Qs4;Jq%o!r~5(jHPW@QRtt9tXxvZx-sTuXh=)S7Z@u)4;`f% zTc?}nPMTjG>P-55*%2iozgIKPaqt6eLcMi(NV}zlhh{=e>opH9+9x)bn1uT4lOAkF zMn+4}T3wMc9h6|SJ9;Vn+vLSJ*s+8QJTjY=NxcPwyAiLiP*nCpb2n8$G&nJglDz!N6#fq~_MyE_;55 zy0*nVzzs9&PcSKw9}Ra|dp#NZT(;#<%sCm}vZ45eLgdf73uW0)v-L=^%L;!w3x|o? zDl$8jN|$#66z-MD8zr9^eJkRdm}jaR#fjeF;q3VUHPArGXO5s1-PX_2itgR>)6;&+ zJiO3a^9$+oa|At~OErHAym%dHP#7&wm)6mvAG>|ew8mO=+-8BFM)ku(+tf_xF48;T zz;ZklMufJBsz+7U*7aaB9yzF8;(YsISFY&TuMo8moSJ$kf|1 zExV`S7v;ihcEs4zQupi_i!y-M2FLV>)%v@((C3H?pV6n`kQG^W>GARY%XY`f?}28s zffEzx$5S(S!9M?XU}3xu_{oO;=_6BI?q6EO2xJ(KLMKgC!?(xZ`o6z_$q?zMo6}pS z3Puw|<_Q8qVe*(=ArY`a54o&&5tiKCgCp6!wGo>c3A*9ONQ@uzEvWNy-{p=lc+2PU zD|KcMCK2bQC{CIq;V+5g$|UV7Rf#!|bT{}iLg?enCoVKi#>Px$h{Spd2O$HDqHZt- zYYplsvsm-{WD=9HT=AW>5>Cqv^YlrJ7HDxA3pIF*j^4-fllbzcSVug~=q=%167Zx0 zTxqqndR@r>BJM5YviiPnQA&^o=@vmkI-~`q8x`qpknZm86zNXsmhLX;ZloLOI_vrR zi~l|6bMJj|U)<*ng8SLA_FQw$HRfDnOzfH&3rTru7B@8T+|D8 z-5dPAWynfhmk^SJg1cR!GaRD6mEZH}GEhXH|Kp;~s#U;79_>%_kC%~o?ZO%QSh=|6 z=Qxstff#w;%`IWlQv|v19`?IzQ=Ql1L%{pTuI z3ucQ(qN(|L&Owc~gxpM96%HPRb9$=v+CG7_{a`Z+N0TA$t^-u8632JlZbJO2T(dW) zY*(eXavz;diE^h_Z>8T{3?kmr+=k;#i0hnMPBU{>d&f|JLp=D+R-bD&`?2T#Zt3Ex z?!wWG3o2qrU2z%gAPLocV?t{^bS+4lJ8GG6pf>lD$XrzCir#SJ2YrfBL~ee4dEQW_ z)g6^43tQi>2Kra-g6B}L{tUJp z>NrNb#D+H2NzEyKjZXXe-T<-ezRdreE>wb{KhsJI(YvwI3d#VGwytX5VqYanst-MF zG!9v=k*4aY&(d~#W{h2z=3ds+1hA&}cRB+t?rFVxl_a z>lG+(D7yzmuUF%9fJzEDOR&|x{@6h61rgCg4g<-snf0gqwA|4EirARcuE*UPS)#8z z?QgT>_dr!7dik}{5qo^`4I3~2&b(arV)pvYX&wJc?o5;M@9xdtxSYJk+GMek)0~z4 zk3Skwk8fbF9d4m{y<_;|%I>u847bqC>sHMj!e1%<1V9 zd?9UunpTG?cjApdz2WEg?Nwzbk}pG1#Jt95+?XkSX*ZHIismEh3WAg*SK1wab^U-w zn_(g}olHSB2un6%Q~7XNAIeOaS)Q{mHXkaE zhv@&JT^l2L*ui_8gz3$jkooy}*+vH-@0CBf5PfUL1*yb5T{JUQ-q*LDw>-UUM^kp@ z9Kh}0!4&EfCz+w+&xN1?BSyjteTlr`V$&@hwUv<#n@LBXPWf(Ack#zGo?vdXoGRz8 ztyDV~JSg5o;0MBrnYq5<4t6GP%Q@(VNiw1!pSH%j^W#;%?Ch6uaAql$EcIlzKq3`` z_Sa-`t6@zi0(XTdV$jaC$To;5xSqd4+^a=vF#LpO#_4w=Qf3!oa!n2VFYdZ%nG zDW#!70*J(fMeGmNE&%-jRcNO}b!kg_=-9cM6QU?8*^sCEG4j$93Iy2S0Qf8Y-PRY< zyCp>q%cqRB>z_pdu}(MIk2~(iS$oZEdvs2Ya$b7WvTuorcyDbyT&}8@vBIE4i(!po z_FowJb!m4&ad6HhbFd2R-sdLEO>i&Zqsv=V%l~vH%5`0gvv_NrBSYQ|pCfH_d*X9j z_%^~kPLU`_`huNsa82(5R*JUJF1p5$WbiXl_`_@iFaXtA8?I@Q`72WDL)VLi^LUG; zu451R_ooBSLp z)rvKi*3-RHz`Wkg?RM|^xvPavUq+}_{=ps{N%3vu0=}cd!#WXdI=;kF-9*stOuoR% zSAWh!N=N4iuK(@@5S~ly>PlOsx+t0}rgw{D=Y2Z{W7mYc=n5`ffj$J{R;ZD@dVl(YFyDEqgjn6DD?qB(6N}$Cyc@@9Mh<1vj!y`Q z_6MBf*Ece+!pY^YKmSMt%Eh=IbCes?!Ch)(<%iw6O?Uf&Udm!c%+S2>g|>K6mD~u& zLREckmK+oEDfn9mX09z>S&~-E_F}OY(!!K{Z_!=@x87jj9sz3SoF-C0P%h{tIk`7v z!B$eoMneoSk!a11i0#0A6;7VOlzUWcMy6a0DA?W$l}-NYgfQf1K-E=3#y+;HGtlVk z*NL|RDCl*I`uWCs#A(Uu!y~p)k2{2K%tDnT`YYGt+Y6WzW)>|shU%qTA8coM!My{fJixqDImJrI4PFAk34vC?+GoeMdN>E_ z(o6Nlqc)S{Bu*Z%Z1VF71UVWQfZ(vOF2gEoAg{(q@a}Bc_4ss5j0|Y}#a^mQGQS|i znUDuOPJgKa!3oF13FV6ZMNLB?7V!(jby+pv&Djb)Fj(4EbAXpABH#q$`=m9 z@L7C5Ws6>fbStT4{aZOKC)vLPGkI9l&W=4m$Ljvtn*Vl(0z!@!7IqM|4+QccEhc=V z=&dwSyr&h`QeYr-luUNpi_o*Cv}g9=7L&o6HpKVVFsGx_Yy=D>kBTQvOZ z6-~_iysE?Ta=1xSS9kYVtEVR*iDK2IT>LvpcZFre)az2{z*`YIuMrdcAVTvJ@f(;O ztHA#5&(ojuA*4oR{3&3cSbE(N7+nb2&>K2B0xqkUfVPK}0l1zb$OJ~zESp7`@%7uhpz#Af zw0b;1aoO)-#~WCK@dLt&pg{++kU}BmDksNAl*vat{DO7V{`~J$-TfkJhpqMVH1?mU zwY#Q@EKXP^0;KT3z`o+(i2vXVucLws&b8i!2!t}>f0aX&@PJSw7}K4ZGObP}JG*Mp ze-jfyh8}&K>!nGPvgwyE*kG=0{MnrV*-|=ScJpa}*{&T05{Cd=AayAe^&=@V zYfc+3o!l5E(*LIH5l6>BdP5lb(&XM~;}->X5O_}<^z(#oX56YJc8X4IhxgGO|HJ9y z5;dJS3pv7%669r|_OMgmV;}_hh%o>15p^d1hdYRr3OmY=v~zBig8efkc8uS^TmHJ! zf~aZHAR2sbssCPm(kV%1<2YHs!t@=Ut;Nre|E%I5lfyTaiLySyWmEmXSNGmp6FuK$ z$9uz6@}G8!ab(*29j@r5B`An51fS@moPXQ5aL0dnhY(Hwa~{g#{}K$9|CfU3|JQ?Y zrIlzXD$7#q$DOIgIZHl1Ev}UOiVet*xp{oA7A%_GqO!P z=Gi>k0JObP{i|;%HN6ftfGrHLwuv$01NF_k#$@tWuXKuQYvaMyu7WTrbx0y6r#@T` ze0RF*ggxZveDe2oxyEVfCVsPfy!TXrTi zBz&`7Tv{UB6@0hmUjXRB|AalocJL6JH1+h^OLQi_GZ#!ALG}kY%e<_KQZMpH=I!&% z`!f42SCCQw%-W*V!Q89Xc^MqIqfQ3{BL;Kg9NAfZw^4<6!_DdMwd7 zSFlly7Psa;EY+r0qpl)nzXRK($#f}P)u;x>Pf}e3wK|xTft`4M$QXz=iy{SpwMq#ko^KvEa2}Kdo>>L(YG43Va*BGJOMa+NvVd%0jMFb8g(Bd1ut=Kg}85P=;^4M6``)HOnGvQ4eaL$9-R0+RL?5@`^9h z)`5qC6U0gK7--ULD*J}{^B03Mw40^tsf*O9LRy){zS#}QHXYNe=0J%ttY>j5@M(A7 zIZ+`(c?6+HRNe3`7tgAv&C{||9}4R8QI4lyH1WFO9aI%d3K*0*FDN=#66C5i#~qoK z9D})mi6{WV2u5;;&vDMD1dXA9i`Vp*IjI_+l=y9TU6IPSMY?X`pOHZ>biZ2BokPu$ z95|77=6Qn|yM=@KG}WDRtn#5{22SlweOVcK_S72P|7d||0jf{`YJuPx!7W*AYw8a@ zajA56TjcPl>~X!65h@P-^Q1nKop@wuT9V+D?iQ6R$8OO|a%CQ>vg|bfso)4PR3&ze z;<(p8&VOKm*r}y8=G%(Y7!7gsav%L#u98fU%ti!334L)=!hoF|w1?-j7T8q@J~{Wp z1F;effBI&Dz>Yd1oCy1v+f;SZhcpDSjSfSCX9Ai7Ap&tPo-<_Q?7up^gS3Jex<{!D z>>(V#E}LD!2*H;y(U+4KhS(j5^ibt1>;!cs_{Wzsw8(kUy0FZrk6f|bayQ!2JaYm~ z&#qn~uT0kzyVQF56X2xWKS;8^5Ui=Lb9?t>%e}dvku#DMY+7*Fw4VmY!QWSW7xH{o zzE7DwnN|W`p;0qy^}ERC%DYfN;k}v1os?GnHq!q%KkD>Bor?N>cXBdVKnRY-a5Ha? z@_Cr<9D<^Z1!(Y~?@WklUoVsEHTZIJ3*_;h%7ccIxE`;yOk`FPno@h4Qcs;)8WI-w z*LAK2iysXzmw#WyY|jlB5Ex;8eU2`#UhA1C@R8o?;@rAD)K~ju z{PTLksXw1&`pWycx=QPXw*Qw_3{PWo4Vh(Jtezo*VYW~S?y4ZO+u}rN6;|IN`$wr} zc}VoplrfFyBY?Mt_wu(lG#d=1?yfYi^MrG@3!#yj&Aw|YG~S7*xo_){oN$_v zpiBl5CUaDAdvY)m0oH}>X60J!%9hx9dMnutDb6|aRfC1nTOk8A4$O=ePbrhi#t4#8 z8LaAWjlg~Sy$dI<_u?ExKQX-VfGU+DY`2#%cfwntQ~9C-CHhc+2@`jC<~uAhP!nMr zN<=H&G?J0=lUR$}%H4IauGPOKm6rutPEyL$`QPmlb$UPc@4wBdOWP3@FK_hL5s5!v zUD!o9fRj8^R-G=sUxtETy+ZI3HN~j@!$fmCl-`b;h83;Z*|6!^d3cN${(lcPrKV0B z9d4#xdDFzscvi)2ZScPt@XjE6;@3_Iwv>Z1lU+Q*od*&B)hi@1Mo6C#wwXuvW3tJg zC9BQy^fv1@OgTa9_c&WDP`uU*BlVo+y@cTdHFa)xD!nDQE(Z)uFxn^u0v05ug9pyA z6w^@BvZ_$jERnDYam~u_&&@W?h~{g*M+E)R?L6q3Yb$0g^pR3lzIk=qJ&Rq5%*lGG zM5lbA&LSe`LhJIPyit63$Z+mz!ivyK!QTY>16jA+jcR?1w}Sawb1^eI5lATP0ECs$ zZTGz#13ub0(tK?Cyl8jtp<;jFoeYL(E7DN$6(YB3kHla9=9r3IU`lA!9ClLbUdBb~93~viaibH5=E-ju)YR%_wR8mwn8E; z{&*4vo|VS<^UAz%YSVcqU@c=y!@I=)v)SS%ZqoaXkQ(kG?&x{7l`L(pr3yy!&}w;2VKSQ-t7S3U^WwzCXmra(iK8mDSoVdS%>K4!n zpMjY%Cy;UM{hHVOu)fUTOs{eFlACCB>0M7b^rxQ0Zh4KIrK6tb@f93(7@k!ZpI}}) z)8G1k|ERR}C`ibd?C*Gi)D(VKk&&K-*EBz%1TnL;yeYp}?Psr_nxES~$0*L~(30In zBQwMxE(}#UHx}K<6(x6u9z3EYKgaVQYHao?=FQ(A{JQ2@6Xg?bpp3YCzxr5Rb$+^_ z*3yiEK8J3!ma6pLV;aTH(SX^Ynq=Y%$zKj{Bh)7Pq7UYCQtKy{=1u*f)zmU0<~bAX zmU?f6Q5P0-#;xUK`^z+H`j=OwFSd$-h=?>9f#V3JfuHxTt3T=}uDmGHsiPriU7aPu zh+ghEp*Os7HyCm*P7qFYi*gQI`%dfqr`KG^4cX*j)=S?8eOmQn>I^X1ELKFP4`ZzfaUTzf zXz1T`OIP+?$0LZ*Gh0B1TGAPgfSq$ge`2lg^g-j~F}7ufc(w!>LSfJajEB4uFDNK= zMSw~x>1fTH>9Jdb-GwP-y>0=2tJMP(E*!=((>W**rFS#n|7(`K47hia%U- z(m#5D{SAy(^CKSCL+aD_{{#KXHvNlzjRdd+B;T~EM4ngVZoX3zeyq%5v*)$SXEOYa zzRfXTJ0rVCA$R`Mnn}R9*3akn>&Yu~g3U*iGcuah&F;qn$Y9)h1W_%-Xch7Dk6-`aFT8-gP$O<}uUKkbEUj9_|mh_V%CVP;a-T3G4 zvl%>ImX-?p?ncxLRYvFl=P_>#xx36_=Ji=!*AG-`k5&%bcmC|7vQQOdJ{( zMhPIHKJnpoT+Hb6(1-{susogE6Zqf2HFJG!Ib#z$39)ajLAcy0KS!3T^XxfzBPd;w z?-r|-UGwX-gk2&Xt~eQH##=nP0q$nGA+j*h+RbAXUcZ@)X`(yzLjgjYj=BPN=m6jh zpU;W;d~0~4a*%PqXBwbF>Ir{wiFycZ@n?S~^0ibvyPN0riB6iwt;yrI=VKrOnOnKM z047*f)PMQAe9jSKPh-Tv!|T;>Tn~_?$JsX+3P#3 zC}4Du9m&7G5h(!Qwrdv?74<9U2!JpE0elBQr{K`gjlH6>ttH2m?%y^n+HFve567NZ z&*6Ta4baij(fz}CPWmnhfQXj|bDh8(pzyhEC?P;t!OZcM?b)UT*yz>ndfeRGA4^?- ze>Qm2Ma|zHj71F*rJI_X0`%QsMP)6j6Mn#~X#6S09q01Poep`168!QSPar|(`%myK z@7oKRy}doBy~2E;e~_P*<&%(rU)uWU0&pu45fOkoGTZHZ1V?b$?Oc612xp9afCB_#BjmNoZ4-mqiqokmP-EWot&Is;JSzJKSeUoMo-PvEhC z6H6rn(jy-LS)a_bK7MmOst*LC4|#plWm=4MsEu>dDO}OyLILb4S3sA9)#ZoDo-;~xJ8oh6yX<0U%ifVe?{H8JwiiqghI0fJnbQ_M6 z`UhEAG=TRSa~%)RmFX|kn#+td9#jqz;)VnE`j;#$(Pw980a4HP@^68;*iA-)%^)rb z{5bz828cr>pk6XEq7?u<7#zA_*_xV@lSB2Juxt(!=~HRT?VjykNMz(T&>oqbnt~vv zzO~KbHmKi-;GMUZ6&8jA>kT;HcH1;w`#nIz{(^vDPB#(x=6WOY=Az7V zn4xa5qr)E=xCCurYsG4HrAzj~LEer}*ekiHveu-^xzzUolAGJCj;HBTOa#KV(yr1 zvB}SA(`U9n$HXl6n419$hT^5BjVy4_ zGSk(kActIw*()eLQlU@>uBV{5m=aXH0TP~CCI0nq3HXbmBCFXfv%}$hHV2+tqzAOfO|0sZ&Usz1cQT0JAf;jWXj}XuhR;w!d#0v~FNc{(H zp7A7{X=5gNGsx)RKuM+BqAndP49Ee1^L|iJz_GTr1~Loh<5Emu*p$?n@u7ECS_RMo zh1$XQt0gDCLIOAA*hg1-&PbvuW7T0}0Gp!Qjaay>)yivvVgNp zWj;OLH8z@n(GxRPg$O{{CARRCP*HxgPbugV4@f~2b*W6_DA^JeoUj0+7BFnsxn}jN zOsniMe&8&`8wcd2zUuFok=m?8`ZLC0~9M9?`tY4mnCZ z**|Zf>7)Z$2G<1js*pY0f7^)w0yji_QF0u~Owu;zWY4)ODk*u5kK*9S2CfwspEqm# zMn?W`?a3w>l+^2;7YjruzKXKheS8QV1$Wj~9nrjOFG0am+adL*%<~}>_@iSu-w%*5 zxoC0aJgD^L%L(x0wxC1I z3t}KT4|bi#QCpAq+XA*A zAG2t_n6^!;q7Q{M%JTjBB?L|m^$2nXn-%w~3d7+fDg!w%3i5LAy4|mqdO_O3`v^Mu zDU1JAVEZ4gm&2hk6{IF0VA%kzQHPOpNOA(AI!XHdCN%+@;Sl#|I=_2TiCP_aSV1uP zp_DZ20YY?abaVC_%#iHNgOOBTm3o`k$IVxyvD9)$P024Xqsuc){!z>#S&gnKW1lZE z#FjFYg9fGz+oaOcDpY2#F&;$P*jLoMp)-*u!*@Q!=C&uF4&+A~*6M+>a4_&XEP6d* z987Rrz^56GrVUpb3@W#{aSwiH>Saa&;T04Ebx+s3Atl5r3*hoQ{Qka5DZA?(L``>B z$Ih#=mS&==`3_Q32;Kxzg|P~}6wyc&G5W!EkbY6}^QTo-vI2iORbEnNpu%^xXbY;S zEY4^85yaf%c{~&p6p0{@@w{7DpMR99D;0YQ zh&;lZpKHonL}kiri3rD=fnp0-s4Tkdmk{&2;RAhMbMuE$9Z<1%`!gn{4iYX9@vT4w zoMUDI6ijg$RQ)>Fv_XP?e>>A^I9c#%(Rn)+)Sy)AKr5e)@L$*Vzj@Rj=^QoyA4!<5 zm}z7*5$;u-{XjnmvpT5t$Z9%M+P!~q_M6Ew(Hj$Yl|S!}8YRHWBy0f#Gn)BdZVZ+_@tyzsDeJ6P6a=h02QGv&uThVq<+XW) znDOCWf{|0RsP{)D;#j@916o&bnq_!_o$VlRfceFomGch98wzA5@T(xxKl&K}TI^>h zstNxy&p@BJQI+BFD==ra(_AAU5&UY|HIf%30a^L&Zr5vp_rT7nL25L}*cfJ%<{SV# zL-rJdFTkBkfuv}h5EWyK!w))GXAk3oAB(3yA-mQLVtSU`=h@c|b@U$CZm@ZO%xiS8 z$OShE`ohV9BobCKge=+}^jF}3nziXn0~V-w?@iJ|q_cw=kOeaRWq1d`Q;SPTkaKg_ zugwA-A_8V@C@d=J)vELddPsU|BkShImwr2$4_2PwY%oyC!#y=KnuEZZK@NrVq=N#z z+iyB89ne#Sy4};$vu?*DAuj$Bl-cRZnkt2k!OUui0O8iK%3k#W_=c`ZdY}$8`85%; zEU$6KDFUoTn0R>kc!1samCdLBGsDR1=`jyUqVs((;e>HIazZ^W?SAmt^(1-}G3Hgk7V@I%` z-4_`wEkTlF$Y)mI>+?%*iYnD#s0=|<2{x+TDr3UqC6N`$q#@J$#pP@78E=}2 z^#aLd(v!96EfGd0P}qC#3aLu&e*LtxPvrV$-;yF7?-2bix+)Ln2tDCIMmt%2iyo1H$bR zbR_g#d`ZcLUBu)zFR@xYHyv3Kg~Xxyw`&w}twz#pFXwCx`yNw9fm4cL?HASkfqKsM z{7|9LEk90uYOwT)M(^;|#9ZmF(`wZg+TM5sR(VRG#={(gD2m29; zTT;ATN9=X<N@gmihy?(0MAjwmkd^u2@yP=)Uw_7?~IeJ}Sa&m;`rbF!@l%J|2z$@@P zlcYkg2JO9uABNy_@)q9!J1c!-{ct7To0I;mM!&W#8K=Vg|n;+a-JF=UGSAnwhzP_N;f~_-v+kRI;RDeq;TS4?S~? zLlO6T)Y~fgC}!RuS9{huQoJiXp4m&Ui-RfK41b^N%j;iTl6mj-$p_NudRB~IS!-;+ zG=WEa7AoPZ}RE9(zbf+bTX{Y*r~1-?my8E%=C{B3bEPVzX{Lm58X zrHWwz+IkUMd)$Z^N_qC1*|Qm;H@silmT#WCqsUf1Xjh^pyUiey`(fw?5mt774frzM zM>{blNG@pZyMKY<{S`;y0+Xvh!LgY?=t&5thUY!a=XAQ_On*V+aE5Kfsq2qZP#Os3 zJARk9AB(=+BdA^N5N3W{aPlN6;TNXK5fMkvH?Z*fC9wrxFxST;_na#C(~15}+jFn6 zG?8gttV!3|pKtL`G3MK$_-lTvQlu9>9Tt$BWGgzmTK0;De-sbp5(p`^w@kLUFgA0J zY{J~j4CE;-EIZ#@i{Geil|yJi{eV=LR`qDS-}-h>aB1uG7Y`YoAW=%SyV`bep(WTp z@_=2)-#lL6l!@J1s_nTtSL%%k)h#V~iDU-+;ycUur-z@x`Hlr;EB`agJLz zL%WdzwGkRd6WyC1{YBSZ1Ud@G_>nPkST!@xxOfwcoz`pKECLNIiGA0(%lgWpqzFus z*3p%VcLF;iO9(x*ibHUpiW;U>uMWG&;A73<6=8w(`C$l+M-3Ab*r-tCXSJjZanBV@ z*wRQKuDW!Dx0aNdFzd9I1!cLKYj})_oy*?}Gwv_{!Th>^(4%U#tkfp&X#eJJBztJ2 zSi7T=_yu}#_Q$EV)eLPVL|V~bR}Ct*T8ucZ3m!E}%)`U0nY(X_(yunG+=csNUgnx0 zTTdm3FZ?k&J4mH_k;7$9dNXA>zIYtN$#(Yo_8lpVPC30qJE?VnpO1UH8~t&S@f~`W zULJ!-*0Fu;Q#tZgU}gkb(3sD8n#Ig~q{HM@L%;h=va2-N)H`Lih(=_mJx$lU34>!x zi0e+83~2Y;@P0M@ zh_V=|zcEj^V<)3Hex~)(GP?d@rzIaRwh8((>FBC)VQ5G*$p!oH&}!kfjg>UqB~GkM zEVAc9^T$KoQ!_m2e%*y9mEdP5n?qE#MHRiS`1W@%GPumiOWkG9Bn`{YKjEdhlU#+* zC3Yg4PVCsmd2RhhKQ_VG-;D3x>N8j;p`4XMgx`NY>GO{CPf1Zd`QV`6AJ%2}+3DP$ zt;~ttBGAOGcR?}wdSdScYO2n3u+n^xV0aQH2A!^S^vLd1BZ`iTUOtVjtSj=)3ndy; zQ+P6{L`2BC4!YXLVb91X)NNLdEMQ`PqM|7DwSt zrnJ-@?L!Np9kyAOS#z3fO1h@oX?K;zGhmo7Ub#}=UyzY`D(-`A3lxE^hwn`FH){7Z zwXQY_Po-Pz7PS@j7pr|s&A~^2$|3prO#x%YPlQD`94bCmedy{A>JK2FS5>ry_oM-W5U~@75}}ODHCU~ursa{QcLod zsoqh4qm*-_Z)gp70q*(X<^^8JDSxtTUZsC!qpY6A^QrD6Pf&7i^&hLnDZ5hh1z^qV+LuS9yMDB{6HYf0)638#v}x5-uY zD6uXi^whJx?8?uf!{&F-4`MeU1Jwtvf zRL00!!ixyRc2&2vW_(EmVusLlvs4+!MfwlO7D#Lp1UD;c%5w%5!5F_I^>v$AgB5O6 z629>`d@ITSQldRfVOwq~-OlCs%+&L{aHm#CKLfJ1YIzKOe&Wx5)?;zJz&+#VzGKE& zVh5et`aYP~tiryc$KK%-_6)HFvg~8$m!Fx#*49(TF zEsMhml)UPC0-4~ZgP{ob8u{(Id+wj1i7L{5adOO<&X4B8eHmowh=IakI2$nAB<}+( zFzxUS#7#n}JFWQ}H6jVIaaGowQnBM~re}ShOkab>Qsc-H^SG zuKB69UC=K*aLanORr}D95~RW1*91eh>2`^L{of(2td6pjW)W1ynnDna-sE=HZ2(QQ7{QUfx_5gd7l}WPW zu^4?yKKQo0+1;i+s_sQP8m`fcTFr@0BI9dG1S)2o`$B1c{H&}te^tw_M<XS;Z6?;dXFp)t9;f<#4EAywEfF@KA)=eJ{=}TI*V9PxX<}LL zaP!^+%fuXdt~+@4TQ|MivRuaUhYtq%FZp`ZX}=H*GpUxx2#W{>FhKg-P{7zoejuhI7PVzI8-efw0MQ*(jK zWu*@NlyqeHfJ{0*&E06%^ljgUMlC&{{(@h^PW9Jz{>EcQ42dcd?J3%ejSr?jDC_9o zFXABPP>_qVuxjY5UZ;_v7@>zS0%mOZ8qH&Ta{DDqB%qF3nAJdU+SzQ9$`QoHQu; zN=WE4>`yO|?!Vl(;FaWhFXG?2-%>D-$z1(Kv<%fDRcbQ?MeEox~B{a;=K*mt{#rQ5rt&fEIFw4L(z{zZ*4U7!=bdPN^-&!q8UYk zqj*SnkMPHCjno3A%hqD$yw?aDHT!e#CUfoYysV;D@!o3{ZTg{~UBR~P&<-UmUMW;F zM@Jb`*9|PNROc-ZMzroQ&q;KAqjs*(ydX@<;#Mm1O7}twd3%=QpSQ~~1plo~Q-E+f zV)X<2;d2@R71Xbx-hA_o!YVOp2B-$JxbD zXISHJU}r!devG4r{YCf->bIcYCLO_&>QyHpD#nFcUlO$SyYk=ow^|{zmsHW) zK~}vTZ&}6TqG>w4B~0QT9@zNr=*LI3XjN@uv>pTLy1HS)QH2|y(}{vP%T|k4GWK!h z(-?~43*1yQT?vZmek>?dPnlz6>%Fh!yMyu)OkZULIBV@jE_yWMG5EiTJ^$E)9~^o~ z*brK?+T_S!;CV|&_F#hi`i9P0wzyL*PQoUF`nHyvNY$6<&(-ay@SOvmK#jrmaEn~Q zu08F-%OeDN35_%j%NM)ri>9ru=t zroz)ut>1>whNZRnjd|gQoXkxjl8i%9SZ`z(#W;_t))vck3Pz2;HGQ=b2~WpnMrB;A z^L=J;M6R9P(c`;Ug?TBgJXc%9n{OH(B+?uQ-$j%VfX5RII-iO{j6k_5j&9GA*7?eJ zl8bKtWJ27_Ot7!NDvsL7AAY;Z6;G-CO89s3zEhE;uW5{Un67ffg($UQ+mnNHuT7Q4 z&ULLtms)NXZ3#DqK&7t2`<3RR1wM2JpDBJH9cC^27;-YqT{ynnIEx>~T1PWn{ULfP zxFSdSR)pl6&d4=2-}7jYGP3u#W#``;*QIOYOP@Xv!>|_|E+A*8`l%opYc8MtVI>zU z`F_UmW-p(or=nybE?#?OtljL1OtrkaR&3Mt3(Ajv`NS-*$2vKeTF*YYRjJj=!Nf(S z#TjOTL7X;nfk)q^OMhRtvqH3xXQu47x`bx>d?^5U=&ZU@`6Nh6>RulA-p{p@V=zPz z<0+oxxQ9dT_NLW49>XHt}MHA#Nvj$3-$}faH+zVdpB!gbJ@Zw zVZ=7kmr&HUtXr9`=*l-WWg24LOaPPZ8z*8us83~e4nqMlGz+1O{fW&e1f>deY&r?4 zJI7Jt#iLhO(Qh{`cb!W@pz%wq9j&MyexdA4x~(36Mt9fZ{^si165I*V=}R zjoj~JbA22UmD_IA=zVhK{EAPHOl;RLKOwjjz@2ElXzW{_KCU#$c$}FR|G5GWTMg#2 zAS+n%E`8cn^JTA&aM8f_<95Re5lL*(?Xvus-r@b^GK0@VgN*BFC=&`t;}GYoe_{pY z7IAcOwBj01)2Kmq_@Tj5*mI1N$-d*QQ zCT5$o>ZAODq?$~(RN?(TLNMhL7mjVQY^o@ZE>eO&9FXo*7klGc0CFIWSYKQV|2iptFg#U5l>3q93jeTKub9#T`2r3woW z&JXLV9Y=l4Isf=Cy&`9GsA@n|bdl4R%{#unP)Kp$v&A7V&Vea(q zGoNewPM>aW_5=z0SO+D=_1DEsJer~UA<1!8SEj_*zH=?j@(0{}cgG&%>6cNd)lmc8 zvRlejUbxybyuY0;jcJt1a#qu1)5B>cC}kP*tVVf`?nPitY=^D-Mn^(ynh@aM%xb@S z%^4}_$+4UttJ1_99_Nf3wua#mN#v*yg$NiBj@Ym0VEc-2#^ip$d2O* z-`x-(NmDK*e<)NH@AmEAd1T*u`bfTMTXl*mknp1a);a(ElDBS*e~qXk$b0j>tWy<7K7% zCtB#sj-hB~hI^MOrUruCOHsSCvxw+t^Uw$EM*l%gR%nG@aea2(VV1H?7~g*!Hz&K8 zh_R5*w^Y;G}$KU7qnePbPx+g^9c_UUK}i9dwLn(iVFAsuOR zh-rHcRl#ASN$Z0!^HKG8-p6MsqQ#+=eT^+~i9r`fK$Wd-9p+}EBfK6q>A&a8wt;6}%Sy79eYFaE~qN*OGD$NX2 zgyD3oG&f8Xr7O7W%bS8rlMPG8?a}q|O`dg*#Jv3BFiKu`WDFupn}W|i4$WFJy)?1p zD80H>3pS?VIvVY~PeWFcH5rsQ^~D^_B1SrEwEu&RP(*5##lPNu_nCkB8pTYYN^g(B zi7nx9q4#2zmGcvBYsCGwaZpqKq9J!NnIv^E$QesJJ@k!BVDjNJE znXbsfSRrneLuBBB`&y)Yt1j0m#Ky$L8)O;;WL+cBJKb@pLg8Uu#7;h$kz6TyqnF zZ0dJ8^9fHe0mHIqa&+bH;$xI{v+SZUG8KgrS&FC&0cGh^Pz`d!x22Y(IXb@CvnS#H zN)HE|PQpxId-fe9Ypmgfti(w{WXxjo_mQby&Yzj+ivK7rRD9zaij^jjs<47@=Jxt*&L^5LUnQQ#1_bw-4D53Y#+J-?q19zP&Q7-Aj)Re=QdyBMS0&`6bBfT$#*P_RQB@4kluJtFHBSV6vmdIzd?Hv9f&!-Rf zqubzJ7w6^JJ4+V*|9DNSk9-L_1 zj{WUhNdFlWVgw`+rvS}L%=jo^m-KoHVid&s`w6*|v5N3`%IC#~KcK#w?!rz+ zm8xTT6uq-KBTe&V9qVz+FS$bG@Aj%(Jf%;@-ASPIpaIKK|Bc?rIt0i9DTwViAa?-Q z8e3cp%c9v9_7e7?NEM&%tM3SMZh*DbI$!JI6_;{M$-E8X=y4))NJRhioO}d%%_;%x zysXkd1@|hXY-`Kb3z{{kS;YfVr>fHRC{2YSu!)ce7je7}I~b{v1}iRUTif%w(f~NI zdGYBWNbw^e#)`|Ww&*3e4XgF8VB1&9OzqK%F>fKZ6qLECel79^oW;v_W5@T(vG03{a;{X?*RIOL*`zhDS`gA?;&`Cr7nbyQbt*EWhGs5F9< zgo>1Omw*i@A>G{|-7TPiQUcPYfS`1DBOome(k`CjKF>4G`OZ7WdB-^4$3J@u zzgX*D^PY8I^SV<0^Fd4C{rkJFF_7 z0dx?K?$H5+Dhg%`FCYid!b)y!qCtBkpa^VBSk%D8oS*(^aL@Wnprh@DCrp4Jc`0 z*8#%E>3FTQd?_uCjV#E=K?9c1mxxpmZWR7cs(n66s|&#mW~meogNz2Q@Zrr`fI1zX z>~y<+s6Lzt0BnNJaGuVXU7sZVyN7Hft9!$Zez+~V`D}pF@x{I|NO_0fW%t)djSyt_ zi2if=GesJ(0An`o%z)dnZJ}_)yK$qPv-=)`;dXHks@J|RL&zn$QY>-si4)yNr*4@E zuBRw;>c18q9#bBG?e@iG0k7B!0EXv=hP1?*PPYUd*H`z70oeDkyj_&v)@(>k}#my*q%3EutlN=r=hxIvWh%M3m>n(-KOzLo@2#WY* z&C(N9)tl0?_LK*)?IBH9^Qdjm)lDxikAVxCvMC4H*)(9>L~bY`W%fuy$2p68jyHUlH#+mH~d zZ?V`yK|w*l8D+)S0pYI`jEh9j;boM&pu?&*fc)>B?)I(4P}7E+)UAN4o2f)dEvs2B zh~U+n{Wc>bBP-kOeeTLk9rM>A>E0*7^8K=a3rH3k;DEsD7lX_4556S&*G~GH%?I#H zS+)31Qw^Fm_}+mmN83T|5O>^yd^-|=lF$F~W!ABOdep9qQ(~3|C=flA3s>owqS?zQ z=ez9z0yOiEG3UO_heD0($h$88^Bm$0;E7Hhc#cun=grEuCt!T0QtUGt^6xCXMA$2HWM4|@l8x0AGj*%R1c)u-djz$Fh4jTm?XhwGdT;gp&G65zY zz_~xL2*m!nlW(Nk5rh8A=kbpwcip^s$9^2Mri3cyl>gRZq5M$+kD5A~hTN~F#?Wl#9< zinYhGxqs&is%L#8KRTlRzO_+v;Dc69q^;SZ;5=~ca<`gM2E95nq5Ea;A!hrNyUyy#Voz3B> zULdJ`J!Bn-v2@vnDkgd5klwD2FzFjw<}vySsNf#1AaMNbwhI!la?X1LN+}-h0P043 z5BMEsM#U@uWD&hO+F2|#9k`q5G;`HqeN5cV?SzzpDtlqU5O$V}h9W;Xj%Y%V4M1*V zxx#%asneX*OJ??QoShb>wxE=u%S9$b z_y*9?Nxdtew)LHB_i~xXHb-F)_ zVD|3N(S^sxJ_ESg{QUgA%{tW8iRw7OR{}EsXyTxz1vXII${DPiYROQ@ z1W4{>wNi_Dpu<8YH0Il*IE}iBAv=mf8~=4h{}v2uS*?`y0H6@$r{L zRVnyg0y{l3{)rJ?&a*-J`r{l2FO^cpf!l^u$i=Q!3z&jDu+UM#0yaV^*iHNCA>6h= z>CmNoBnB1&A3x&>Q%#4+lSI;;FES}VqrQ#RdWu9uL_pZsY^6)G>UlzZ0YHw(Y|j%# zMIx~7?$N$sk+VZRBu_xbMYbSnA`>MI(`*Rl4@otgot?9^Y7<}3e*?FLSm8$14$el+ zG0W%ApRe7-f9QXK7Lv^KQ#ujRU`oN!0mLxAIjS#47$lE)WVF0Bw2#|}1;gX~Cv53W zf?Gi>`UlrqV8li{U{Kr3tY^yrHW|ZZa*a0pYkOWSYwbxGU80k>NnaYI5Rc$NtPEz) zmMmh^;)I?1I>lyVSpi@U`)*!acfJ09M$9(^0 z9iWx{It|T4EFV6+h-ld3UHP~o0MRxuqYH7g>tivkD@ZfcL zV`ZA{H-eg3&MAf6_yAI@2VvH2yOj=bwJeLPpoS|$2ta(yA2jbTGS`P=vXs4oB+X7E zB%=mCIGJaO(m04Nv6$HlTUb` zRD-^(hvhx}!t+>6u-Y|a-t}gi?Y@%zt);JD^&<~2?=WeYXl_T*h5!B-_sO34?Z&&3 zx6fSF5)UE0)u831Slvc7hXAi`RgXq4zLw18PNpPT zoe`2`($Oy0?eL`go{<0I$N*EK?RBNj=+0IC!kGOO6DIY<=O*@cdLd6djh)U;(bGE1 zyjItY=K$Ko<<+Ig*uAy{7Gx7yOYj@K+rD;l;tS~O%V4tVG3>&SztlAY5yVy)6 zNkvQkk@U9-77--$2Ui6%xi>Zunon%e_I9pY=36}C6T(w+W?D7{sA$r$}63topMdS3_E zEkDAJzBLKTq4G_6iPOW9{*uM8v-l)&2DB{6;&_XQZqI3yCdRPV++H@#wL8E`B0-|r zl2bbF)Mg`oS`^ITNHkc&PjANfUA=-#Ival_87p#>wod7SL)B8+ZoU4+-$Xp0W2IeG zJ!J%1rH_9|^2l-!JA|X7pI{_8Ba9{-#)c!Ob<^5}biY8eZukZ89LZHMByKTXfqo@sOnqhR`6@bb}BA z<+Oe443a4E!<^y}jAxQEiu^!^1d>+-CXXi$NVrY=KPHGmW^|6d1P5&2$(FvcU09^1 znNxS)PF}3VyB?C225alQrK)+VaeF~ZD1@9lsef1ZE~WE_q^`TSWoD>PQ~WkJ_Gfvy z>_$ILIh|;n{XSIrdL3n<$(fLOz3NG0wJy)dXb_)=!ox&&6sc<%Go!PQ;uyP^Q}A7= zsgxpoTUG9lR1kJ#Uw9k1ONe2q7MNK8Wgu)MU<+F zOMZXio`Yv;b0N5fX!plm<%4A0aiCGJ~hKC`-AB6WdGW85ou&#fkd!nid32Y=Pt!BLM)o`w;{@UyGz zVrkMz!O8S6Q^6&vH&zyWWiLmg63IHFVV04U(No~zrx#J4R3aYn%gd%PD$oGsk_!_J z6fHAjZ2Eo!SYNY3<mKjapc=e|EQXOr+llgc#W-MRJ(r3N)2MvpAbAADhddlgDhLi>KQA@$0=ThSk$ z)`x4LQlmU|1w4`Diw&LG!SB?É@Oxuf}3M-wD$_P%0W^eCL1P76QdQW8SL8!4Z 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%0DY-{_nf%=UH)= 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