Integration with Haier HoN app

2022-06-30 13:01:19 INFO (MainThread) [custom_components.hon.hon] {“payload”:{“resultCode”:“0”,“shadow”:{“parameters”:{“voiceStatus”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“tempCoilerIndoor”:{“parNewVal”:“7.00”,“lastUpdate”:“2022-06-30T09:50:55Z”},“tempSel”:{“parNewVal”:“18.00”,“lastUpdate”:“2022-06-30T08:57:46Z”},“totalWorkTime”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“halfDegreeSettingStatus”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“tempAirOutdoor”:{“parNewVal”:“55”,“lastUpdate”:“2022-06-30T09:57:27Z”},“debugEnabled”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:04Z”},“co2ValueIndoor”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“tempInAirOutdoor”:{“parNewVal”:“4”,“lastUpdate”:“2022-06-30T10:00:14Z”},“selfCleaningStatus”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“pm2p5ValueIndoor”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“fanStatusOutdoor”:{“parNewVal”:“2”,“lastUpdate”:“2022-06-24T11:27:30Z”},“tempUnit”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“stdTransRate”:{“parNewVal”:“3600”,“lastUpdate”:“2022-06-24T11:27:04Z”},“intelligenceStatus”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“airQuality”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“machMode”:{“parNewVal”:“2”,“lastUpdate”:“2022-06-30T08:57:41Z”},“humidityIndoor”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“energySavingStatus”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“vocValueIndoor”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“errors”:{“parNewVal”:“00”,“lastUpdate”:“2022-06-24T11:27:04Z”},“defrostStatus”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:30Z”},“compressorFrequency”:{“parNewVal”:“38”,“lastUpdate”:“2022-06-30T09:40:45Z”},“tempIndoor”:{“parNewVal”:“21.00”,“lastUpdate”:“2022-06-30T10:00:14Z”},“healthMode”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“fourWayValveStatus”:{“parNewVal”:“2”,“lastUpdate”:“2022-06-24T11:27:30Z”},“10degreeHeatingStatus”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“freshAirStatus”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“expansionValveOpenDegree”:{“parNewVal”:“90”,“lastUpdate”:“2022-06-30T09:32:56Z”},“windDirectionVertical”:{“parNewVal”:“2”,“lastUpdate”:“2022-06-30T08:57:41Z”},“muteStatus”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T23:52:58Z”},“onOffStatus”:{“parNewVal”:“1”,“lastUpdate”:“2022-06-30T00:34:55Z”},“lockStatus”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“highTransRate”:{“parNewVal”:“1”,“lastUpdate”:“2022-06-24T11:27:04Z”},“ch2oCleaningStatus”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“errAckFlag”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“windDirectionHorizontal”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-27T11:06:35Z”},“power”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:30Z”},“ch2oValueIndoor”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“machineModeHK”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“acType”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“tempCoilerOutdoor”:{“parNewVal”:“28”,“lastUpdate”:“2022-06-30T09:57:27Z”},“pm2p5LevelIndoor”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“heatAccumulationStatus”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“sensingResult”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“screenDisplayStatus”:{“parNewVal”:“1”,“lastUpdate”:“2022-06-30T08:25:44Z”},“silentSleepStatus”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-30T08:23:55Z”},“humanSensingStatus”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“energySavePeriod”:{“parNewVal”:“15”,“lastUpdate”:“2022-06-24T11:27:07Z”},“filterChangeStatusLocal”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“tempDefrostOutdoor”:{“parNewVal”:“28”,“lastUpdate”:“2022-06-30T09:57:27Z”},“operationSource”:{“parNewVal”:“1”,“lastUpdate”:“2022-06-30T08:57:41Z”},“pm2p5ValueOutdoor”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“lightStatus”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“electricHeatingStatusIndoor”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:30Z”},“tempOutdoor”:{“parNewVal”:“25.00”,“lastUpdate”:“2022-06-30T09:57:27Z”},“pm2p5CleaningStatus”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“voiceSignStatus”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“selfCleaning56Status”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“compressorCurrent”:{“parNewVal”:“51.10”,“lastUpdate”:“2022-06-24T11:27:30Z”},“humiditySel”:{“parNewVal”:“30”,“lastUpdate”:“2022-06-24T11:27:07Z”},“pmvStatus”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“operationName”:{“parNewVal”:"",“lastUpdate”:“2022-06-30T08:25:48Z”},“echoStatus”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“windSpeed”:{“parNewVal”:“5”,“lastUpdate”:“2022-06-30T08:57:41Z”},“errCode”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“specialMode”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“windSensingStatus”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“transMode”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:04Z”},“electricHeatingStatus”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“compressorStatus”:{“parNewVal”:“1”,“lastUpdate”:“2022-06-30T09:01:24Z”},“humidificationStatus”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“totalElectricityUsed”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-24T11:27:07Z”},“fanStatusIndoor”:{“parNewVal”:“1”,“lastUpdate”:“2022-06-30T08:49:22Z”},“rapidMode”:{“parNewVal”:“0”,“lastUpdate”:“2022-06-25T00:23:51Z”}}},“activity”:{“resultCode”:“0”,“activityStarted”:“2022-06-30T00:34:47Z”,“category”:“CYCLE”,“ttl”:1664325295,“attributes”:{“machMode”:“1”,“specialMode”:“0”,“heatAccumulationStatus”:“0”,“echoStatus”:“0”,“healthMode”:“0”,“tempSel”:“16”,“humidificationStatus”:“0”,“tempUnit”:“0”,“humiditySel”:“30”,“pmvStatus”:“0”,“screenDisplayStatus”:“1”,“windDirectionVertical”:“0”,“lightStatus”:“0”,“energySavingStatus”:“0”,“lockStatus”:“0”,“windDirectionHorizontal”:“0”,“freshAirStatus”:“0”,“pm2p5CleaningStatus”:“0”,“windSpeed”:“5”,“ch2oCleaningStatus”:“0”,“electricHeatingStatus”:“0”,“energySavePeriod”:“15”,“intelligenceStatus”:“0”,“halfDegreeSettingStatus”:“0”,“rapidMode”:“0”,“silentSleepStatus”:“0”,“muteStatus”:“0”,“10degreeHeatingStatus”:“0”,“selfCleaning56Status”:“0”,“humanSensingStatus”:“0”,“selfCleaningStatus”:“0”,“voiceStatus”:“0”,“tempCoilerIndoor”:“17.00”,“tempAirOutdoor”:“20”,“co2ValueIndoor”:“0”,“tempInAirOutdoor”:“17”,“pm2p5ValueIndoor”:“0”,“fanStatusOutdoor”:“2”,“airQuality”:“0”,“humidityIndoor”:“0”,“vocValueIndoor”:“0”,“defrostStatus”:“0”,“compressorFrequency”:“0”,“tempIndoor”:“23.00”,“fourWayValveStatus”:“2”,“expansionValveOpenDegree”:“480”,“errAckFlag”:“0”,“power”:“0”,“ch2oValueIndoor”:“0”,“machineModeHK”:“0”,“acType”:“0”,“tempCoilerOutdoor”:“14”,“pm2p5LevelIndoor”:“0”,“sensingResult”:“0”,“tempDefrostOutdoor”:“14”,“operationSource”:“3”,“pm2p5ValueOutdoor”:“0”,“electricHeatingStatusIndoor”:“0”,“tempOutdoor”:“12.00”,“voiceSignStatus”:“0”,“compressorCurrent”:“51.10”,“windSensingStatus”:“0”,“compressorStatus”:“0”,“fanStatusIndoor”:“0”,“mobileOs”:“android”,“osVersion”:“31”,“appVersion”:“1.41.2”,“deviceModel”:“lito”,“channel”:“googleHome”,“origin”:“conversationalVoice”,“programFamily”:"[standard]",“principalUserId”:“0016800000D8Zk3AAF”,“programName”:“HOME_ASSISTANT”},“macAddress”:"‘xx-xx-xx-xx-xx-xx’",“applianceTypeName”:“AC”},“commandHistory”:{“command”:{“macAddress”:"‘xx-xx-xx-xx-xx-xx’",“commandName”:“startProgram”,“applianceOptions”:{},“programName”:“PROGRAMS.AC.HOME_ASSISTANT”,“ancillaryParameters”:{“programFamily”:"[standard]",“remoteActionable”:“1”,“remoteVisible”:“1”},“applianceType”:“AC”,“attributes”:{“prStr”:“HOME_ASSISTANT”,“channel”:“googleHome”,“origin”:“conversationalVoice”},“device”:{“appVersion”:“1.41.2”,“deviceModel”:“lito”,“osVersion”:“31”,“mobileId”:“xxxxxxxxxxxxxxxxxxx”,“mobileOs”:“android”},“parameters”:{“specialMode”:“0”,“heatAccumulationStatus”:“0”,“echoStatus”:“0”,“healthMode”:“0”,“tempSel”:“20.00”,“humidificationStatus”:“0”,“tempUnit”:“0”,“humiditySel”:“30”,“pmvStatus”:“0”,“screenDisplayStatus”:“1”,“windDirectionVertical”:“0”,“lightStatus”:“0”,“energySavingStatus”:“0”,“lockStatus”:“0”,“machMode”:“1”,“windDirectionHorizontal”:“0”,“freshAirStatus”:“0”,“pm2p5CleaningStatus”:“0”,“windSpeed”:“3”,“ch2oCleaningStatus”:“0”,“electricHeatingStatus”:“0”,“onOffStatus”:“1”,“energySavePeriod”:“15”,“intelligenceStatus”:“0”,“halfDegreeSettingStatus”:“0”,“rapidMode”:“0”,“operationName”:“grSetDAC”,“silentSleepStatus”:“0”,“voiceSignStatus”:“0”,“voiceStatus”:“0”,“muteStatus”:“0”,“10degreeHeatingStatus”:“0”,“windSensingStatus”:“0”,“selfCleaning56Status”:“0”,“humanSensingStatus”:“0”,“selfCleaningStatus”:“0”},“transactionId”:“34-86-5d-81-db-6c_2022-06-30T08:25:41Z”,“timestamp”:“2022-06-30T08:25:41Z”},“timestampAccepted”:“2022-06-30T08:25:44.3Z”,“timestampExecuted”:“2022-06-30T08:25:46.0Z”},“lastConnEvent”:{“macAddress”:"‘xx-xx-xx-xx-xx-xx’",“category”:“CONNECTED”,“instantTime”:“2022-06-30T08:11:26Z”,“timestampEvent”:1656576686148}},“authInfo”:{}}

Thanks but unfortunately there is no indicator that your device support the DRY mode.
Can you please share the first log after reboot. It gives more details on connected devices (and hide your mac address :slight_smile: :slight_smile:

I have something like:

INFO (MainThread) [custom_components.hon] [{'fwVersion': '5.3.1', 'unitConfiguration': '1to1', 'applianceTypeId': 11, 'attributes': [{'parValue': '06.26.00', 'id': 39166830, 'parName': 'acuVersion', 'status': 1, 'lastUpdate': '2022-05-30T17:41:25Z'}, {'parValue': 'ESP32D0WDQ5', 'id': 39166829, 'parName': 'chipset', 'status': 1, 'lastUpdate': '2022-05-30T17:41:25Z'}, {'parValue': '176', 'id': 44433379, 'parName': 'dictionaryId', 'status': 1, 'lastUpdate': '2022-06-30T07:56:19Z'}, {'parValue': '1', 'id': 39168135, 'parName': 'eppParserSet', 'status': 1, 'lastUpdate': '2022-05-30T17:51:02Z'}, {'parValue': 'it-IT', 'id': 39166828, 'parName': 'lang', 'status': 1, 'lastUpdate': '2022-05-30T17:41:25Z'}], 'applianceModelId': 313, 'series': 'flexis', 'code': 'AAACL3E0000', 'SK': 'app#xx-xx-xx-xx-xx-xx', 'macAddress': 'xx-xx-xx-xx-xx-xx', 'eepromName': 'no_eeprom', 'applianceId': 'xx-xx-xx-xx-xx-xx#2022-05-30T17:41:13Z', 'id': 313, 'modelName': 'AS50S2SF1FA-WH', 'applianceTypeName': 'AC', 'connectivity': 'wifi|ble', 'serialNumber': 'AAACL3E0000N5MB40188', 'nickName': 'Climatiseur', 'enrollmentDate': '2022-05-30T17:41:13.296Z', 'brand': 'haier', 'lastUpdate': '2022-05-30T17:50:17Z', 'eepromId': 41, 'applianceStatus': 1, 'coords': {'lng': 5.4595276, 'lat': 43.53262}, 'PK': 'user#eu-west-1:52857aa6-7f56-4977-840d-50eabea1c970', 'SK_Secondary': 'AC#selfClean56#2022-07-29', 'sections': {'chatbot': True, 'double_pairing_hidden': True, 'epp_enabled': False}, 'topics': {'publish': [], 'subscribe': ['$aws/events/presence/disconnected/xx-xx-xx-xx-xx-xx', '$aws/events/presence/connected/xx-xx-xx-xx-xx-xx', 'haier/things/xx-xx-xx-xx-xx-xx/event/appliancestatus/update', 'haier/things/xx-xx-xx-xx-xx-xx/event/discovery/update']}}]

In my Haier hon the echo services doesn’t works well. I tried in developers section in HA, and the indoor unit always beeps after I call the echo service.

How I can implement the beep status always off ? I need that the unit doesn’t beeps in any command called in HA or local infrared remote…

The display off service works well in my appliance

Thanks for your integration!

Hello,

I tried to add integration from: https://github.com/gvigroux/hon
After paste all files in custom_component directory, I got an error while add new intergration - Config flow could not be loaded

Logs:

Logger: homeassistant.config_entries
Source: config_entries.py:720
First occurred: 8:32:12 PM (1 occurrences)
Last logged: 8:32:12 PM

Error occurred loading configuration flow for integration hon: cannot import name 'HVACMode' from 'homeassistant.components.climate.const' (/usr/src/homeassistant/homeassistant/components/climate/const.py)

Could you help me?

edit: after update Home Assistant Core to 2022.6 it works

Hi

@gvigroux great work, hats off and thank you :smiley:
I have 2 x AS25S2SF1FA and 1 x AS35S2SF1FA and all works perfect.

Adding new service brings full functionality for me.
Once again thanks!

First of all, thank you for your hard work.

Second: I have added the integration successfully, but it doesn’t add any entities or devices. It just sits there, with my email name, blank. What gives?

Edit: After restarting for the nth time, it finally gave me an error, at least.

Logger: homeassistant.components.climate
Source: custom_components/hon/climate.py:115
Integration: Climate (documentation, issues)
First occurred: 06:09:00 (1 occurrences)
Last logged: 06:09:00

Error while setting up hon platform for climate
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 250, in _async_setup_platform
    await asyncio.shield(task)
  File "/config/custom_components/hon/climate.py", line 69, in async_setup_entry
    appliances.append(HonClimate(hass, entry, appliance))
  File "/config/custom_components/hon/climate.py", line 115, in __init__
    self._name          = appliance['nickName']
KeyError: 'nickName'

Apparently it didn’t read the AC’s nickname. I changed it to something else and back to what it was, restarted HA and it worked.

Now I only have the problem that with app controls the AC’s LED shows the temperature in °F despite the app using °C, but I believe that to be a hOn issue since it does that with their app as well.

Leaving this here with the error log and all to help anyone else stumbling in the same keyError.

Hello

It seems that hOn password is valid for one year. My integration with HA stopped to work two days ago. When I tried to enter with hOn App recalls me to change the password. After that I deleted the hOn integration in HA and reinstalled with the new password and work ok.

Is possible to change the password stored in hOn HA integration without reinstalling? Where is stored?

Thanks

Still problems with the automations.
Who has a working example?

Hello, thank you for the hard work with creating this automation. I have a problem with making it work though. The manual under the github repository is not precise. It says “Create a directory ‘hon’ in custom components sub directory in your HA.”

From I can understand, the folder name needs to be custom_components and it needs to be created in the config folder. So that the path to the hon folder is /config/custom_components/hon. Then I restart the Home assistant and go to the integrations and add new integration? Is this a correct way? If so, it does not work for me or I did something wrong. Could anyone please give me some hints?

this is how i did it.
same folder you mentioned.
Did you put all the files in the Hon Folder?

Yes, all the files downloaded from the github repo inside the hon folder.

and then + at integrations.
Make new with your email and password

This is how my folders look like:

And still no hon integration available (restart done):
no_integration

Did you pressed the + in settings, devices, +add integrations?
then login?

This is what I do:
1
Then


Then

Then
4

Am I doing something wrong?

this is how i did it.
sorry i think i cant help!

I am trying to get automations working, i have problems with that!

Ok, thanks for your efforts. I envy you being at the next steps :wink:

@yagi Have you enabled Advanced Mode by clicking on your username in the lower left? I think (don’t quote me on that) that it is needed to implement custom components.

The services (for things like sleep mode, dry mode etc) that were talked about in this post are not popping up for me. Unless I need to add them manually somehow - in which case some guidance would be appreciated.

Of note, not sure if related or unrelated, the integration throws a warning every time I restart HA, but I’m absolutely clueless about what it’s trying to warn me about. Here’s the log, if anyone would like to help me out to either understand and possibly remove the warning:

Logger: custom_components.hon
Source: custom_components/hon/__init__.py:44
Integration: hOn
First occurred: 00:40:05 (1 occurrences)
Last logged: 00:40:05

[{'fwVersion': '5.3.1', 'unitConfiguration': '1to1', 'applianceTypeId': 11, 'firstEnrollment': False, 'attributes': [{'parValue': '06.26.00', 'id': 46171672, 'parName': 'acuVersion', 'status': 1, 'lastUpdate': '2022-07-09T03:17:31Z'}, {'parValue': 'ESP32D0WDQ5', 'id': 46171671, 'parName': 'chipset', 'status': 1, 'lastUpdate': '2022-07-09T03:17:31Z'}, {'parValue': '181', 'id': 46173079, 'parName': 'dictionaryId', 'status': 1, 'lastUpdate': '2022-07-09T04:20:09Z'}, {'parValue': '1', 'id': 46171815, 'parName': 'eppParserSet', 'status': 1, 'lastUpdate': '2022-07-09T03:23:43Z'}, {'parValue': 'it-IT', 'id': 46171670, 'parName': 'lang', 'status': 1, 'lastUpdate': '2022-07-09T03:17:31Z'}], 'applianceModelId': 343, 'series': 'pearl', 'firstEnrollmentTBC': False, 'code': 'AABF10E0000', 'SK': 'app#xx-xx-xx-xx-xx-xx', 'macAddress': 'xx-xx-xx-xx-xx-xx', 'eepromName': 'no_eeprom', 'applianceId': 'xx-xx-xx-xx-xx-xx#2022-07-09T03:17:15Z', 'id': 343, 'modelName': 'AS25PBAHRA', 'applianceTypeName': 'AC', 'connectivity': 'wifi|ble', 'serialNumber': 'AABF10E0000XXXXXXXXX', 'nickName': '[redacted]', 'enrollmentDate': '2022-07-09T03:17:15.875Z', 'brand': 'haier', 'lastUpdate': '2022-07-09T03:23:43Z', 'eepromId': 41, 'applianceStatus': 1, 'coords': {'lng': xx, 'lat': xx}, 'PK': 'user#eu-west-1:5b24f717-e85b-4523-a950-5c0b1b5d3fa4', 'SK_Secondary': 'AC#selfClean56#2022-09-07', 'sections': {'chatbot': True, 'double_pairing_hidden': True, 'epp_enabled': False}, 'topics': {'publish': [], 'subscribe': ['$aws/events/presence/disconnected/xx-xx-xx-xx-xx-xx', '$aws/events/presence/connected/xx-xx-xx-xx-xx-xx', 'haier/things/xx-xx-xx-xx-xx-xx/event/appliancestatus/update', 'haier/things/xx-xx-xx-xx-xx-xx/event/discovery/update']}}]

Just a quick question: could this also work for washing machines operated with the hOn-app? In particular a Hoover h-wash 500?