From 83c5e3479e6ae632d02d4252382d72d18a564c69 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Sat, 15 Apr 2023 04:27:40 +0200 Subject: [PATCH] Add hob support #22 --- README.md | 2 +- custom_components/hon/binary_sensor.py | 39 +++++++++++++- custom_components/hon/button.py | 9 +++- custom_components/hon/manifest.json | 4 +- custom_components/hon/number.py | 14 +++++ custom_components/hon/select.py | 9 ++++ custom_components/hon/sensor.py | 16 ++++++ custom_components/hon/translations/en.json | 59 +++++++++++++++++++++- info.md | 1 + 9 files changed, 146 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 6e310f8..858567f 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Home Assistant integration for Haier hOn: support for Haier/Candy/Hoover home ap - Washer Dryer - Washing Machine - Oven - +- Hob ## Installation **Method 1:** [![Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?owner=Andre0512&repository=hon&category=integration) diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index 18f0f8b..4579c3d 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -104,14 +104,14 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { "OV": ( HonBinarySensorEntityDescription( key="attributes.lastConnEvent.category", - name="Online", + name="Connection", device_class=BinarySensorDeviceClass.CONNECTIVITY, on_value="CONNECTED", icon="mdi:wifi", ), HonBinarySensorEntityDescription( key="attributes.parameters.remoteCtrValid", - name="On", + name="Remote Control", device_class=BinarySensorDeviceClass.CONNECTIVITY, on_value="1", icon="mdi:remote", @@ -124,6 +124,41 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { icon="mdi:power-cycle", ), ), + "IV": ( + HonBinarySensorEntityDescription( + key="attributes.lastConnEvent.category", + name="Connection", + device_class=BinarySensorDeviceClass.CONNECTIVITY, + on_value="CONNECTED", + icon="mdi:wifi", + ), + HonBinarySensorEntityDescription( + key="attributes.parameters.remoteCtrValid", + name="Remote Control", + device_class=BinarySensorDeviceClass.CONNECTIVITY, + on_value="1", + icon="mdi:remote", + ), + HonBinarySensorEntityDescription( + key="attributes.parameters.onOffStatus", + name="On", + device_class=BinarySensorDeviceClass.RUNNING, + on_value="1", + icon="mdi:power-cycle", + ), + HonBinarySensorEntityDescription( + key="hotStatus", + name="Hot Status", + device_class=BinarySensorDeviceClass.HEAT, + on_value="1", + ), + HonBinarySensorEntityDescription( + key="hobLockStatus", + name="Hob Lock", + device_class=BinarySensorDeviceClass.LOCK, + on_value="0", + ), + ), } diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index 15b32fc..f4cf6a1 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -25,7 +25,14 @@ BUTTONS: dict[str, tuple[ButtonEntityDescription, ...]] = { name="Stop Program", icon="mdi:power-off", ), - ) + ), + "IV": ( + ButtonEntityDescription( + key="startProgram", + name="Start Program", + icon="mdi:pot-steam", + ), + ), } diff --git a/custom_components/hon/manifest.json b/custom_components/hon/manifest.json index c4dcaaa..4ffbf4d 100644 --- a/custom_components/hon/manifest.json +++ b/custom_components/hon/manifest.json @@ -6,6 +6,6 @@ "documentation": "https://github.com/Andre0512/hon/", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/Andre0512/hon/issues", - "requirements": ["pyhOn==0.7.4"], - "version": "0.5.1" + "requirements": ["pyhOn==0.8.0b2"], + "version": "0.6.0-beta.1" } diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index ed69dbd..f95bedf 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -106,6 +106,20 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { native_unit_of_measurement=UnitOfTime.MINUTES, ), ), + "IV": ( + NumberEntityDescription( + key="startProgram.temp", + name="Temperature", + entity_category=EntityCategory.CONFIG, + icon="mdi:thermometer", + ), + NumberEntityDescription( + key="startProgram.powerManagement", + name="Power Management", + entity_category=EntityCategory.CONFIG, + icon="mdi:timelapse", + ), + ), } diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index fee762b..08a4200 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -68,6 +68,7 @@ SELECTS = { key="startProgram.program", name="Program", entity_category=EntityCategory.CONFIG, + translation_key="programs", ), SelectEntityDescription( key="startProgram.preheatStatus", @@ -75,6 +76,14 @@ SELECTS = { entity_category=EntityCategory.CONFIG, ), ), + "IV": ( + SelectEntityDescription( + key="startProgram.program", + name="Program", + entity_category=EntityCategory.CONFIG, + translation_key="programs", + ), + ), } diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index dfae684..4511e0d 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -221,6 +221,22 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { icon="mdi:thermometer", ), ), + "IV": ( + SensorEntityDescription( + key="remainingTimeMM", + name="Remaining Time", + icon="mdi:timer", + native_unit_of_measurement=UnitOfTime.MINUTES, + ), + SensorEntityDescription( + key="temp", + name="Temperature", + icon="mdi:thermometer", + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + ), + SensorEntityDescription(key="errors", name="Error", icon="mdi:math-log"), + ), } diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index f0a21a0..cafd100 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -402,7 +402,64 @@ "wool": "Wool", "wool_and_delicates_49": "Wool and Delicates 49'", "wool_dry": "Wool Dry", - "wool_soft_care": "Wool and Soft Car" + "wool_soft_care": "Wool and Soft Car", + "bakery": "Pasta and Pastries", + "bakery_steam": "Steam-baked bread", + "bottom_heating": "Bottom Heating", + "bottom_heating_fan": "Bottom Heating + Fan", + "bread": "Bread", + "bread_steam": "Steam-baked pastries", + "combi": "Combi", + "convection_fan": "Convection + Fan", + "convection_fan_turnspit": "Convection + Fan + Turnspit", + "conventional": "Conventional", + "conventional_turnspit": "Convection + Turnspit", + "defrost": "Defrost", + "descaling": "Descaling", + "fish": "Fish", + "fish_steam": "Steam-cooked fish", + "grill_cata": "Grill", + "grill_fan_cata": "Grill fan", + "grill_fan_pyro": "Grill + Fan", + "grill_pyro": "Grill", + "h20_clean": "H2O-Clean", + "iot_bread": "Bread", + "iot_h20_clean": "h2O clean", + "leavening": "Leavening", + "light_fan": "Light Fan", + "low_temp_cooking": "Low Temperature Cooking", + "low_temp_cooking_fish": "Low Temperature Cooking - Fish", + "low_temp_cooking_fish_steam": "Low Temperature Steam Cooking - Fish", + "low_temp_cooking_meat": "Low Temperature Cooking - Meat", + "low_temp_cooking_meat_steam": "Low Temperature Steam Cooking - Meat", + "low_temp_cooking_steam": "Low Temperature Steam Cooking", + "meat": "Meat", + "meat_steam": "Steam-cooked meat", + "multi_level": "Multi-Level", + "paella": "Paella", + "pasta_and_bakery": "Pasta and Bakery", + "pizza": "Pizza", + "pyrolysis": "Pyrolysis", + "pyrolysis_plus": "Pyrolysis +", + "red_meat": "Red Meat", + "red_meat_steam": "Steam-cooked red meat", + "regenerate": "Regeneration", + "soft_plus": "Soft+", + "super_grill": "Super Grill", + "tailor_bake": "Tailor bake", + "tailor_bake_cata": "Tailor Bake", + "tailor_bake_pyro": "Tailor Bake", + "vegetables": "Vegetables", + "vegetables_cata": "Vegetables", + "vegetables_pyro": "Vegetables", + "water_discharge": "Water Drain", + "white_meat": "White Meat", + "white_meat_steam": "Steam-cooked white meat", + "iot_standard_boiling": "Boiling", + "iot_standard_frying": "Frying", + "iot_standard_keep_warm": "Keep Warm", + "iot_standard_melting": "Melting", + "iot_standard_simmering": "Simmering" } } } diff --git a/info.md b/info.md index 82b7256..a35b040 100644 --- a/info.md +++ b/info.md @@ -9,6 +9,7 @@ Support for home appliances of Haier's mobile app hOn. - Washer Dryer - Washing Machine - Oven +- Hob ## Tested Appliances - Haier WD90-B14TEAM5