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)