321 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			321 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Haier hOn
 | |
| [](https://hacs.xyz)
 | |
| [](https://github.com/Andre0512/hon/releases/latest)
 | |
| [](https://github.com/Andre0512/hon/blob/main/LICENSE)
 | |
| [](https://tooomm.github.io/github-release-stats/?username=Andre0512&repository=hon)  
 | |
| Home Assistant integration for Haier hOn: support for Haier/Candy/Hoover home appliances like washing machines.
 | |
| 
 | |
| ## Supported Appliances
 | |
| - [Washing Machine](https://github.com/Andre0512/hon#washing-machine)
 | |
| - [Tumble Dryer](https://github.com/Andre0512/hon#tumble-dryer)
 | |
| - [Washer Dryer](https://github.com/Andre0512/hon#washer-dryer)
 | |
| - [Oven](https://github.com/Andre0512/hon#oven)
 | |
| - [Hob](https://github.com/Andre0512/hon#hob)
 | |
| - [Dish Washer](https://github.com/Andre0512/hon#dish-washer)
 | |
| 
 | |
| ## Installation
 | |
| **Method 1:** [](https://my.home-assistant.io/redirect/hacs_repository/?owner=Andre0512&repository=hon&category=integration)
 | |
| 
 | |
| **Method 2:** [HACS](https://hacs.xyz/) > Integrations > Add Integration > **Haier hOn** > Install  
 | |
| 
 | |
| **Method 3:** Manually copy `hon` folder from [latest release](https://github.com/Andre0512/hon/releases/latest) to `config/custom_components` folder.
 | |
| 
 | |
| _Restart Home Assistant_
 | |
| 
 | |
| ## Configuration
 | |
| 
 | |
| **Method 1**: [](https://my.home-assistant.io/redirect/config_flow_start/?domain=hon)
 | |
| 
 | |
| **Method 2**: Settings > Devices & Services > Add Integration > **Haier hOn**  
 | |
| _If the integration is not in the list, you need to clear the browser cache._
 | |
| 
 | |
| ## Contribute
 | |
| Any kind of contribution is welcome!
 | |
| ### Read out device data
 | |
| If you want to make a request for adding new appliances or additional attributes and don't want to use the command line, here is how you can read out your device data.
 | |
| For every device exists a hidden button which can be used to log all info of your appliance.
 | |
| 1. Enable the "Log Device Info" button  
 | |
|    _This button can be found in the diagnostic section of your device or in the entity overview if "show disabled entities" is enabled._
 | |
| 2. Press the button
 | |
| 3. Go to Settings > System > Logs, click _load full logs_ and scroll down  
 | |
|    _The formatting is messy if you not load full logs_
 | |
| 4. Here you can find all data which can be read out via the api
 | |
|    ```yaml
 | |
|    data:
 | |
|      appliance:
 | |
|        applianceId: 12-34-56-78-90-ab#2022-10-25T19:47:11Z
 | |
|        applianceModelId: 1569 
 | |
|        ...
 | |
|    ```
 | |
| 5. Copy this data and create a [new issue](https://github.com/Andre0512/hon/issues/new) with your request
 | |
| 
 | |
| ### Add appliances or additional attributes
 | |
| 1. Install [pyhOn](https://github.com/Andre0512/pyhOn)
 | |
|    ```commandline
 | |
|     $ pip install pyhOn
 | |
|     ```
 | |
| 2. Use the command line tool to read out all appliance data from your account
 | |
|     ```commandline
 | |
|     $ pyhOn
 | |
|     User for hOn account: user.name@example.com
 | |
|     Password for hOn account: ********
 | |
|     ========== WM - Washing Machine ==========
 | |
|     commands:
 | |
|       pauseProgram: pauseProgram command
 | |
|       resumeProgram: resumeProgram command
 | |
|       startProgram: startProgram command
 | |
|       stopProgram: stopProgram command
 | |
|     data:
 | |
|       actualWeight: 0
 | |
|       airWashTempLevel: 0
 | |
|       airWashTime: 0
 | |
|       antiAllergyStatus: 0
 | |
|       ...
 | |
|     ```
 | |
| 3. Fork this repository and clone it to your local machine
 | |
| 4. Add the keys of the attributes you'd like to have as `EntityDescription` into this Repository  
 | |
|    _Example: Add pause button_
 | |
|     ```python
 | |
|     BUTTONS: dict[str, tuple[ButtonEntityDescription, ...]] = {
 | |
|         "WM": (                        # WM is the applianceTypeName
 | |
|             ButtonEntityDescription(
 | |
|                 key="pauseProgram",    # key from pyhOn
 | |
|                 name="Pause Program",  # name in home assistant
 | |
|                 icon="mdi:pause",      # icon in home assistant
 | |
|                 ...
 | |
|             ),
 | |
|         ...
 | |
|     ```
 | |
| 5. Create a [pull request](https://github.com/Andre0512/hon/pulls)
 | |
| 
 | |
| #### Tips and Tricks
 | |
| - If you want to have some states humanreadable, have a look at the `translation_key` parameter of the `EntityDescription`.
 | |
| - If you need to implement some more logic, create a pull request to the underlying library. There we collect special requirements in the `appliances` directory.
 | |
| - Use [pyhOn's translate command](https://github.com/Andre0512/pyhOn#translation) to read out the official translations 
 | |
| 
 | |
| ## Tested Devices
 | |
| - Haier WD90-B14TEAM5
 | |
| - Haier HD80-A3959
 | |
| - Haier HWO60SM2F3XH
 | |
| - Hoover H-WASH 500
 | |
| - Candy CIS633SCTTWIFI
 | |
| - Haier XIB 3B2SFS-80
 | |
| - Haier XIB 6B2D3FB
 | |
| 
 | |
| ## Supported Languages
 | |
| Translation of internal names like programs are available for all languages which are official supported by the hOn app:
 | |
| * 🇨🇳 Chinese
 | |
| * 🇭🇷 Croatian
 | |
| * 🇨🇿 Czech
 | |
| * 🇳🇱 Dutch
 | |
| * 🇬🇧 English
 | |
| * 🇫🇷 French
 | |
| * 🇩🇪 German
 | |
| * 🇬🇷 Greek
 | |
| * 🇮🇱 Hebrew
 | |
| * 🇮🇹 Italian
 | |
| * 🇵🇱 Polish
 | |
| * 🇵🇹 Portuguese
 | |
| * 🇷🇴 Romanian
 | |
| * 🇷🇺 Russian
 | |
| * 🇷🇸 Serbian
 | |
| * 🇸🇰 Slovak
 | |
| * 🇸🇮 Slovenian
 | |
| * 🇪🇸 Spanish
 | |
| * 🇹🇷 Turkish
 | |
| 
 | |
| 
 | |
| ## About this Repo
 | |
| The existing integrations missed some features from the app I liked to have in HomeAssistant.
 | |
| I tried to create a pull request, but in the structures of these existing repos, I find it hard to fit in my needs, so I basically rewrote everything. 
 | |
| I moved the api related stuff into the package [pyhOn](https://github.com/Andre0512/pyhOn).
 | |
| 
 | |
| ## Appliance Features
 | |
| 
 | |
| ### Dish washer
 | |
| #### Controls
 | |
| | Name | Icon | Entity | Key |
 | |
| | --- | --- | --- | --- |
 | |
| | Dish Washer | `mdi:dishwasher` | `switch` | `startProgram` / `stopProgram` |
 | |
| #### Configs
 | |
| | Name | Icon | Entity | Key |
 | |
| | --- | --- | --- | --- |
 | |
| | Add Dish | `mdi:silverware-fork-knife` | `switch` | `startProgram.addDish` |
 | |
| | Delay time | `mdi:timer-plus` | `number` | `startProgram.delayTime` |
 | |
| | Eco Express | `mdi:sprout` | `switch` | `startProgram.ecoExpress` |
 | |
| | Eco Index | `mdi:sprout` | `sensor` | `startProgram.ecoIndex` |
 | |
| | Energy Label | `mdi:lightning-bolt-circle` | `sensor` | `startProgram.energyLabel` |
 | |
| | Extra Dry | `mdi:hair-dryer` | `switch` | `startProgram.extraDry` |
 | |
| | Half Load | `mdi:fraction-one-half` | `switch` | `startProgram.halfLoad` |
 | |
| | Open Door | `mdi:door-open` | `switch` | `startProgram.openDoor` |
 | |
| | Program |  | `select` | `startProgram.program` |
 | |
| | Temperature | `mdi:thermometer` | `sensor` | `startProgram.temp` |
 | |
| | Three in One | `mdi:numeric-3-box-outline` | `switch` | `startProgram.threeInOne` |
 | |
| | Time | `mdi:timer` | `sensor` | `startProgram.remainingTime` |
 | |
| | Water Efficiency | `mdi:water` | `sensor` | `startProgram.waterEfficiency` |
 | |
| | Water Saving | `mdi:water-percent` | `sensor` | `startProgram.waterSaving` |
 | |
| | Water hard | `mdi:water` | `number` | `startProgram.waterHard` |
 | |
| #### Sensors
 | |
| | Name | Icon | Entity | Key |
 | |
| | --- | --- | --- | --- |
 | |
| | Connection |  | `binary_sensor` | `attributes.lastConnEvent.category` |
 | |
| | Door |  | `binary_sensor` | `doorStatus` |
 | |
| | Error | `mdi:math-log` | `sensor` | `errors` |
 | |
| | Machine Status | `mdi:information` | `sensor` | `machMode` |
 | |
| | Program Phase | `mdi:washing-machine` | `sensor` | `prPhase` |
 | |
| | Remaining Time | `mdi:timer` | `sensor` | `remainingTimeMM` |
 | |
| | Rinse Aid | `mdi:spray-bottle` | `binary_sensor` | `rinseAidStatus` |
 | |
| | Salt | `mdi:shaker-outline` | `binary_sensor` | `saltStatus` |
 | |
| 
 | |
| ### Hob
 | |
| #### Controls
 | |
| | Name | Icon | Entity | Key |
 | |
| | --- | --- | --- | --- |
 | |
| | Start Program | `mdi:pot-steam` | `button` | `startProgram` |
 | |
| #### Configs
 | |
| | Name | Icon | Entity | Key |
 | |
| | --- | --- | --- | --- |
 | |
| | Power Management | `mdi:timelapse` | `number` | `startProgram.powerManagement` |
 | |
| | Program |  | `select` | `startProgram.program` |
 | |
| | Temperature | `mdi:thermometer` | `number` | `startProgram.temp` |
 | |
| #### Sensors
 | |
| | Name | Icon | Entity | Key |
 | |
| | --- | --- | --- | --- |
 | |
| | Connection | `mdi:wifi` | `binary_sensor` | `attributes.lastConnEvent.category` |
 | |
| | Error | `mdi:math-log` | `sensor` | `errors` |
 | |
| | Hob Lock |  | `binary_sensor` | `hobLockStatus` |
 | |
| | Hot Status |  | `binary_sensor` | `hotStatus` |
 | |
| | On | `mdi:power-cycle` | `binary_sensor` | `attributes.parameters.onOffStatus` |
 | |
| | Pan Status | `mdi:pot-mix` | `binary_sensor` | `panStatus` |
 | |
| | Power | `mdi:lightning-bolt` | `sensor` | `power` |
 | |
| | Remaining Time | `mdi:timer` | `sensor` | `remainingTimeMM` |
 | |
| | Remote Control | `mdi:remote` | `binary_sensor` | `attributes.parameters.remoteCtrValid` |
 | |
| | Temperature | `mdi:thermometer` | `sensor` | `temp` |
 | |
| 
 | |
| ### Oven
 | |
| #### Controls
 | |
| | Name | Icon | Entity | Key |
 | |
| | --- | --- | --- | --- |
 | |
| | Oven | `mdi:toaster-oven` | `switch` | `startProgram` / `stopProgram` |
 | |
| #### Configs
 | |
| | Name | Icon | Entity | Key |
 | |
| | --- | --- | --- | --- |
 | |
| | Delay time | `mdi:timer-plus` | `number` | `startProgram.delayTime` |
 | |
| | Preheat | `mdi:thermometer-chevron-up` | `switch` | `startProgram.preheatStatus` |
 | |
| | Program |  | `select` | `startProgram.program` |
 | |
| | Program Duration | `mdi:timelapse` | `number` | `startProgram.prTime` |
 | |
| | Target Temperature | `mdi:thermometer` | `number` | `startProgram.tempSel` |
 | |
| #### Sensors
 | |
| | Name | Icon | Entity | Key |
 | |
| | --- | --- | --- | --- |
 | |
| | Connection | `mdi:wifi` | `binary_sensor` | `attributes.lastConnEvent.category` |
 | |
| | On | `mdi:power-cycle` | `binary_sensor` | `attributes.parameters.onOffStatus` |
 | |
| | Remaining Time | `mdi:timer` | `sensor` | `remainingTimeMM` |
 | |
| | Remote Control | `mdi:remote` | `binary_sensor` | `attributes.parameters.remoteCtrValid` |
 | |
| | Start Time | `mdi:clock-start` | `sensor` | `delayTime` |
 | |
| | Temperature | `mdi:thermometer` | `sensor` | `temp` |
 | |
| | Temperature Selected | `mdi:thermometer` | `sensor` | `tempSel` |
 | |
| 
 | |
| ### Tumble dryer
 | |
| #### Controls
 | |
| | Name | Icon | Entity | Key |
 | |
| | --- | --- | --- | --- |
 | |
| | Pause Tumble Dryer | `mdi:pause` | `switch` | `pauseProgram` / `resumeProgram` |
 | |
| | Tumble Dryer | `mdi:tumble-dryer` | `switch` | `startProgram` / `stopProgram` |
 | |
| #### Configs
 | |
| | Name | Icon | Entity | Key |
 | |
| | --- | --- | --- | --- |
 | |
| | Anti-Crease | `mdi:timer` | `switch` | `startProgram.antiCreaseTime` |
 | |
| | Delay time | `mdi:timer-plus` | `number` | `startProgram.delayTime` |
 | |
| | Dry level | `mdi:hair-dryer` | `select` | `startProgram.dryLevel` |
 | |
| | Program |  | `select` | `startProgram.program` |
 | |
| | Sterilization | `mdi:clock-start` | `switch` | `startProgram.sterilizationStatus` |
 | |
| | Temperature level | `mdi:thermometer` | `number` | `startProgram.tempLevel` |
 | |
| | Time | `mdi:timer` | `select` | `startProgram.dryTimeMM` |
 | |
| #### Sensors
 | |
| | Name | Icon | Entity | Key |
 | |
| | --- | --- | --- | --- |
 | |
| | Connection |  | `binary_sensor` | `attributes.lastConnEvent.category` |
 | |
| | Door |  | `binary_sensor` | `doorStatus` |
 | |
| | Dry level | `mdi:hair-dryer` | `sensor` | `dryLevel` |
 | |
| | Error | `mdi:math-log` | `sensor` | `errors` |
 | |
| | Machine Status | `mdi:information` | `sensor` | `machMode` |
 | |
| | Program | `mdi:tumble-dryer` | `sensor` | `prCode` |
 | |
| | Program Phase | `mdi:washing-machine` | `sensor` | `prPhase` |
 | |
| | Remaining Time | `mdi:timer` | `sensor` | `remainingTimeMM` |
 | |
| | Start Time | `mdi:clock-start` | `sensor` | `delayTime` |
 | |
| | Temperature level | `mdi:thermometer` | `sensor` | `tempLevel` |
 | |
| 
 | |
| ### Washer dryer
 | |
| #### Controls
 | |
| | Name | Icon | Entity | Key |
 | |
| | --- | --- | --- | --- |
 | |
| | Pause Washing Machine | `mdi:pause` | `switch` | `pauseProgram` / `resumeProgram` |
 | |
| | Washing Machine | `mdi:washing-machine` | `switch` | `startProgram` / `stopProgram` |
 | |
| #### Configs
 | |
| | Name | Icon | Entity | Key |
 | |
| | --- | --- | --- | --- |
 | |
| | Delay Time | `mdi:timer-plus` | `number` | `startProgram.delayTime` |
 | |
| | Program |  | `select` | `startProgram.program` |
 | |
| | Suggested weight | `mdi:weight-kilogram` | `sensor` | `startProgram.weight` |
 | |
| #### Sensors
 | |
| | Name | Icon | Entity | Key |
 | |
| | --- | --- | --- | --- |
 | |
| | Acqua Plus |  | `binary_sensor` | `acquaplus` |
 | |
| | Anti-Crease |  | `binary_sensor` | `anticrease` |
 | |
| | Current Electricity Used | `mdi:lightning-bolt` | `sensor` | `currentElectricityUsed` |
 | |
| | Current Program | `mdi:tumble-dryer` | `sensor` | `prCode` |
 | |
| | Current Temperature | `mdi:thermometer` | `sensor` | `temp` |
 | |
| | Current Water Used | `mdi:water` | `sensor` | `currentWaterUsed` |
 | |
| | Dirt level | `mdi:liquid-spot` | `sensor` | `dirtyLevel` |
 | |
| | Dry level | `mdi:hair-dryer` | `sensor` | `dryLevel` |
 | |
| | Extra Rinse 1 |  | `binary_sensor` | `extraRinse1` |
 | |
| | Extra Rinse 2 |  | `binary_sensor` | `extraRinse2` |
 | |
| | Extra Rinse 3 |  | `binary_sensor` | `extraRinse3` |
 | |
| | Good Night Mode |  | `binary_sensor` | `goodNight` |
 | |
| | Machine Status | `mdi:information` | `sensor` | `machMode` |
 | |
| | Pre Wash |  | `binary_sensor` | `startProgram.prewash` |
 | |
| | Program Phase | `mdi:washing-machine` | `sensor` | `prPhase` |
 | |
| | Remaining Time | `mdi:timer` | `sensor` | `remainingTimeMM` |
 | |
| | Remote Control | `mdi:remote` | `binary_sensor` | `attributes.lastConnEvent.category` |
 | |
| | Spin Speed | `mdi:fast-forward-outline` | `sensor` | `spinSpeed` |
 | |
| | Steam level | `mdi:smoke` | `sensor` | `steamLevel` |
 | |
| | Total Power |  | `sensor` | `totalElectricityUsed` |
 | |
| | Total Wash Cycle | `mdi:counter` | `sensor` | `totalWashCycle` |
 | |
| | Total Water |  | `sensor` | `totalWaterUsed` |
 | |
| 
 | |
| ### Washing machine
 | |
| #### Controls
 | |
| | Name | Icon | Entity | Key |
 | |
| | --- | --- | --- | --- |
 | |
| | Pause Washing Machine | `mdi:pause` | `switch` | `pauseProgram` / `resumeProgram` |
 | |
| | Washing Machine | `mdi:washing-machine` | `switch` | `startProgram` / `stopProgram` |
 | |
| #### Configs
 | |
| | Name | Icon | Entity | Key |
 | |
| | --- | --- | --- | --- |
 | |
| | Delay Status | `mdi:timer-check` | `switch` | `startProgram.delayStatus` |
 | |
| | Delay Time | `mdi:timer-plus` | `number` | `startProgram.delayTime` |
 | |
| | Main Wash Time | `mdi:clock-start` | `number` | `startProgram.mainWashTime` |
 | |
| | Program |  | `select` | `startProgram.program` |
 | |
| | Rinse Iterations | `mdi:rotate-right` | `number` | `startProgram.rinseIterations` |
 | |
| | Soak Prewash Selection | `mdi:tshirt-crew` | `switch` | `startProgram.haier_SoakPrewashSelection` |
 | |
| | Spin speed | `mdi:numeric` | `select` | `startProgram.spinSpeed` |
 | |
| | Suggested weight | `mdi:weight-kilogram` | `sensor` | `startProgram.weight` |
 | |
| | Temperature | `mdi:thermometer` | `select` | `startProgram.temp` |
 | |
| #### Sensors
 | |
| | Name | Icon | Entity | Key |
 | |
| | --- | --- | --- | --- |
 | |
| | Current Electricity Used | `mdi:lightning-bolt` | `sensor` | `currentElectricityUsed` |
 | |
| | Current Water Used | `mdi:water` | `sensor` | `currentWaterUsed` |
 | |
| | Door |  | `binary_sensor` | `doorStatus` |
 | |
| | Door Lock |  | `binary_sensor` | `doorLockStatus` |
 | |
| | Error | `mdi:math-log` | `sensor` | `errors` |
 | |
| | Machine Status | `mdi:information` | `sensor` | `machMode` |
 | |
| | Program Phase | `mdi:washing-machine` | `sensor` | `prPhase` |
 | |
| | Remaining Time | `mdi:timer` | `sensor` | `remainingTimeMM` |
 | |
| | Remote Control | `mdi:remote` | `binary_sensor` | `attributes.lastConnEvent.category` |
 | |
| | Spin Speed | `mdi:speedometer` | `sensor` | `spinSpeed` |
 | |
| | Total Power |  | `sensor` | `totalElectricityUsed` |
 | |
| | Total Wash Cycle | `mdi:counter` | `sensor` | `totalWashCycle` |
 | |
| | Total Water |  | `sensor` | `totalWaterUsed` |
 |