From 6e9981c9ab3471cb6d4ebaf6226bea3b5fddfa13 Mon Sep 17 00:00:00 2001
From: Andre Basche <andre.basche@gmail.com>
Date: Sun, 28 May 2023 17:38:56 +0200
Subject: [PATCH] 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)