Andre0512 / hon

Home Assistant integration for Haier hOn: support for Haier/Candy/Hoover home appliances like washing machines and air conditioners in 28 languages.
MIT License
1.23k stars 2.49k forks source link

Dishwasher can't be started anymore #125

Closed AlexCherrypi closed 6 months ago

AlexCherrypi commented 6 months ago

Describe the bug My dishwasher can't be started from the Homeassistant integration anymore.

To Reproduce Steps to reproduce the behavior:

  1. Go to your dishwasher in 'devices'
  2. Select a program
  3. Press "Start"
  4. :(

Expected behavior Dishwasher starts with selected program

Screenshots https://github.com/Andre0512/hon/assets/19236891/3ba92f89-e214-4ec8-948a-a3ec0707770a

Environment (please complete the following information):

Home Assistant Logs

This error originated from a custom integration.

Logger: pyhon.connection.api
Source: custom_components/hon/switch.py:472
Integration: Haier hOn (documentation, issues)
First occurred: 09:38:40 (10 occurrences)
Last logged: 09:52:02

https://api-iot.he.services/commands/v1/send - Payload: {'ancillaryParameters': {'ecoIndex': '1', 'ecoIndexOpt4': '0', 'ecoIndexOpt5': '0', 'energyLabel': '1', 'functionalId': '1', 'programCluster': 'hygienePlus', 'programFamily': '[download]', 'programType': 'WD', 'remainingTime': '156', 'remoteActionable': '1', 'remoteVisible': '1', 'suggestedLoadD': 'RL100', 'temp': '65', 'waterEfficiency': '2', 'waterSaving': '55'}, 'applianceOptions': {'opt1': 'threeInOne', 'opt2': 'ecoExpress', 'opt3': 'halfLoad', 'opt4': 'extraDry', 'opt5': 'openDoor', 'opt6': 'addDish'}, 'applianceType': 'DW', 'attributes': {'channel': 'mobileApp', 'energyLabel': '0', 'origin': 'standardProgram'}, 'commandName': 'startProgram', 'device': {'appVersion': '2.1.2', 'deviceModel': 'exynos9820', 'mobileId': '490ddef28c30e177', 'mobileOs': 'android', 'osVersion': 31}, 'macAddress': '1c-9d-c2-30-93-80', 'parameters': {'checkUpStatus': '0', 'delayTime': '0', 'extraDry': '0', 'onOffStatus': '1', 'openDoor': '0', 'prCode': '23', 'prPosition': '2', 'prStr': ''}, 'timestamp': '2023-11-04T08:38:40.519Z', 'transactionId': '1c-9d-c2-30-93-80_2023-11-04T08:38:40.519Z'}
https://api-iot.he.services/commands/v1/send - Payload: {'ancillaryParameters': {'ecoIndex': '1', 'ecoIndexOpt4': '0', 'ecoIndexOpt5': '0', 'energyLabel': '1', 'functionalId': '1', 'programCluster': 'hygienePlus', 'programFamily': '[download]', 'programType': 'WD', 'remainingTime': '156', 'remoteActionable': '1', 'remoteVisible': '1', 'suggestedLoadD': 'RL100', 'temp': '65', 'waterEfficiency': '2', 'waterSaving': '55'}, 'applianceOptions': {'opt1': 'threeInOne', 'opt2': 'ecoExpress', 'opt3': 'halfLoad', 'opt4': 'extraDry', 'opt5': 'openDoor', 'opt6': 'addDish'}, 'applianceType': 'DW', 'attributes': {'channel': 'mobileApp', 'energyLabel': '0', 'origin': 'standardProgram'}, 'commandName': 'startProgram', 'device': {'appVersion': '2.1.2', 'deviceModel': 'exynos9820', 'mobileId': '9e2195a23b8468b3', 'mobileOs': 'android', 'osVersion': 31}, 'macAddress': '1c-9d-c2-30-93-80', 'parameters': {'checkUpStatus': '0', 'delayTime': '0', 'extraDry': '0', 'onOffStatus': '1', 'openDoor': '0', 'prCode': '23', 'prPosition': '2', 'prStr': ''}, 'timestamp': '2023-11-04T08:48:19.995Z', 'transactionId': '1c-9d-c2-30-93-80_2023-11-04T08:48:19.995Z'}
https://api-iot.he.services/commands/v1/send - Payload: {'ancillaryParameters': {'ecoIndex': '1', 'ecoIndexOpt4': '0', 'ecoIndexOpt5': '0', 'energyLabel': '1', 'functionalId': '1', 'programCluster': 'hygienePlus', 'programFamily': '[download]', 'programType': 'WD', 'remainingTime': '156', 'remoteActionable': '1', 'remoteVisible': '1', 'suggestedLoadD': 'RL100', 'temp': '65', 'waterEfficiency': '2', 'waterSaving': '55'}, 'applianceOptions': {'opt1': 'threeInOne', 'opt2': 'ecoExpress', 'opt3': 'halfLoad', 'opt4': 'extraDry', 'opt5': 'openDoor', 'opt6': 'addDish'}, 'applianceType': 'DW', 'attributes': {'channel': 'mobileApp', 'energyLabel': '0', 'origin': 'standardProgram'}, 'commandName': 'startProgram', 'device': {'appVersion': '2.1.2', 'deviceModel': 'exynos9820', 'mobileId': '9e2195a23b8468b3', 'mobileOs': 'android', 'osVersion': 31}, 'macAddress': '1c-9d-c2-30-93-80', 'parameters': {'checkUpStatus': '0', 'delayTime': '0', 'extraDry': '0', 'onOffStatus': '1', 'openDoor': '0', 'prCode': '23', 'prPosition': '2', 'prStr': ''}, 'timestamp': '2023-11-04T08:48:59.815Z', 'transactionId': '1c-9d-c2-30-93-80_2023-11-04T08:48:59.815Z'}
https://api-iot.he.services/commands/v1/send - Payload: {'ancillaryParameters': {'ecoIndex': '1', 'ecoIndexOpt4': '0', 'ecoIndexOpt5': '0', 'energyLabel': '1', 'functionalId': '1', 'programCluster': 'hygienePlus', 'programFamily': '[download]', 'programType': 'WD', 'remainingTime': '156', 'remoteActionable': '1', 'remoteVisible': '1', 'suggestedLoadD': 'RL100', 'temp': '65', 'waterEfficiency': '2', 'waterSaving': '55'}, 'applianceOptions': {'opt1': 'threeInOne', 'opt2': 'ecoExpress', 'opt3': 'halfLoad', 'opt4': 'extraDry', 'opt5': 'openDoor', 'opt6': 'addDish'}, 'applianceType': 'DW', 'attributes': {'channel': 'mobileApp', 'energyLabel': '0', 'origin': 'standardProgram'}, 'commandName': 'startProgram', 'device': {'appVersion': '2.1.2', 'deviceModel': 'exynos9820', 'mobileId': '9e2195a23b8468b3', 'mobileOs': 'android', 'osVersion': 31}, 'macAddress': '1c-9d-c2-30-93-80', 'parameters': {'checkUpStatus': '0', 'delayTime': '0', 'extraDry': '0', 'onOffStatus': '1', 'openDoor': '0', 'prCode': '23', 'prPosition': '2', 'prStr': ''}, 'timestamp': '2023-11-04T08:50:12.435Z', 'transactionId': '1c-9d-c2-30-93-80_2023-11-04T08:50:12.435Z'}
https://api-iot.he.services/commands/v1/send - Payload: {'ancillaryParameters': {'ecoIndex': '1', 'ecoIndexOpt4': '0', 'ecoIndexOpt5': '0', 'energyLabel': '1', 'functionalId': '1', 'programCluster': 'hygienePlus', 'programFamily': '[download]', 'programType': 'WD', 'remainingTime': '156', 'remoteActionable': '1', 'remoteVisible': '1', 'suggestedLoadD': 'RL100', 'temp': '65', 'waterEfficiency': '2', 'waterSaving': '55'}, 'applianceOptions': {'opt1': 'threeInOne', 'opt2': 'ecoExpress', 'opt3': 'halfLoad', 'opt4': 'extraDry', 'opt5': 'openDoor', 'opt6': 'addDish'}, 'applianceType': 'DW', 'attributes': {'channel': 'mobileApp', 'energyLabel': '0', 'origin': 'standardProgram'}, 'commandName': 'startProgram', 'device': {'appVersion': '2.1.2', 'deviceModel': 'exynos9820', 'mobileId': '9e2195a23b8468b3', 'mobileOs': 'android', 'osVersion': 31}, 'macAddress': '1c-9d-c2-30-93-80', 'parameters': {'checkUpStatus': '0', 'delayTime': '0', 'extraDry': '0', 'onOffStatus': '1', 'openDoor': '0', 'prCode': '23', 'prPosition': '2', 'prStr': ''}, 'timestamp': '2023-11-04T08:52:02.686Z', 'transactionId': '1c-9d-c2-30-93-80_2023-11-04T08:52:02.686Z'}
This error originated from a custom integration.

Logger: pyhon.commands
Source: custom_components/hon/switch.py:472
Integration: Haier hOn (documentation, issues)
First occurred: 09:38:40 (5 occurrences)
Last logged: 09:52:02

False
Logger: homeassistant.components.websocket_api.http.connection
Source: components/websocket_api/commands.py:230
Integration: Home Assistant WebSocket API (documentation, issues)
First occurred: 09:38:40 (5 occurrences)
Last logged: 09:52:02

[546053082432] Can't send command
[546001355840] Can't send command
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 230, in handle_call_service
    await hass.services.async_call(
  File "/usr/src/homeassistant/homeassistant/core.py", line 2035, in async_call
    response_data = await coro
                    ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2072, in _execute_service
    return await target(service_call)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 235, in handle_service
    return await service.entity_service_call(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 876, in entity_service_call
    response_data = await _handle_entity_call(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 948, in _handle_entity_call
    result = await task
             ^^^^^^^^^^
  File "/config/custom_components/hon/switch.py", line 472, in async_turn_on
    await self._device.commands[self.entity_description.turn_on_key].send()
  File "/usr/local/lib/python3.11/site-packages/pyhon/commands.py", line 130, in send
    return await self.send_parameters(params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/pyhon/commands.py", line 149, in send_parameters
    raise ApiError("Can't send command")
pyhon.exceptions.ApiError: Can't send command

Device Log

data:
  additional_data:
    dictionaryId: 131
    options: addDish
  appliance:
    PK: user#eu-west-1:75b67867-6387-4755-b482-5659a8a3d5a4
    SK: app#xx-xx-xx-xx-xx-xx
    applianceId: xx-xx-xx-xx-xx-xx#1970-01-01T00:00:00.0Z
    applianceModelId: 522
    applianceStatus: 1
    applianceTypeId: 9
    applianceTypeName: DW
    attributes:
      acuVersion: 0.0.0
      chipset: ESP32D0WDQ5
      dictionaryId: 131
      fwLabel: nuib
      lang: it-IT
      uiVersion: 5.5.0
    autoDetergentStatus: False
    autoSoftenerStatus: False
    brand: hoover
    code: 32002182
    connectivity: wifi|ble
    defaultWarrantyYears: 2
    eepromId: 214
    eepromName: 41053147
    enrollmentDate: 1970-01-01T00:00:00.0Z
    firstEnrollment: False
    firstEnrollmentTBC: False
    fwVersion: 5.5.0
    id: 522
    lastUpdate: 1970-01-01T00:00:00.0Z
    macAddress: xx-xx-xx-xx-xx-xx
    modelName: HFB 5B2D3FW
    purchaseDate: 1970-01-01T00:00:00.0Z
    sections:
      chatbot: True
      check_up: False
      ecoDelayStart: True
      enroll_under_norms: False
      quickPair_enabled: False
    series: h-dish500
    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
    waterHard: 3
  attributes:
    active: False
    activity:
    lastConnEvent:
      category: CONNECTED
      instantTime: 1970-01-01T00:00:00.0Z
      macAddress: xx-xx-xx-xx-xx-xx
      timestampEvent: 1699063084901
    parameters:
      addDish: 1
      addDishStatus: 0
      armStatus: 0
      buzzerDisabled: 0
      cameraStatus: 0
      checkUpStatus: 0
      delayTime: 0
      doorStatus: 0
      ecoExpress: 0
      errors: 00
      extraDry: 0
      halfLoad: 0
      lang: 3
      lastCycleSavingStatus: 0
      macAddressCamera: 
      machMode: 1
      openDoor: 0
      photoSessionStatus: 0
      prCode: 23
      prCodeSuggest: 0
      prPhase: 0
      prPosition: 2
      program1: 19
      program10: 0
      program11: 0
      program12: 0
      program13: 0
      program14: 0
      program15: 0
      program16: 0
      program17: 0
      program18: 0
      program19: 0
      program2: 65
      program20: 0
      program21: 0
      program3: 3
      program4: 84
      program5: 0
      program6: 0
      program7: 4
      program8: 1
      program9: 3
      remainingTimeMM: 156
      remoteCtrValid: 1
      rinseAidStatus: 0
      saltStatus: 0
      specialAutomaticStatus: 0
      temp45to55: 6
      temp60to65: 88
      temp70to75: 65
      threeInOne: 0
      waterHard: 4
    programName: No Program
    resultCode: 0
  extra_command_data:
    startProgram:
      extraDry:
        1: 140
      openDoor:
        1: 148
  settings:
    custom:
      category: setParameters
    parameters:
      buzzerDisabled: 0
      lastCycleSavingStatus: 0
      waterHard: 4
  startProgram:
    ancillaryParameters:
      ecoIndex: 1
      ecoIndexOpt4: 0
      ecoIndexOpt5: 0
      energyLabel: 1
      functionalId: 1
      programCluster: hygienePlus
      programFamily: [download]
      programRules: {'opt2': {'opt3': {'1': {'typology': 'fixed', 'fixedValue': '0'}}, 'opt4': {'1': {'typology': 'fixed', 'fixedValue': '0'}}, 'opt5': {'1': {'typology': 'fixed', 'fixedValue': '0'}}}, 'opt3': {'opt2': {'1': {'typology': 'fixed', 'fixedValue': '0'}}, 'opt4': {'1': {'typology': 'fixed', 'fixedValue': '0'}}, 'opt5': {'1': {'typology': 'fixed', 'fixedValue': '0'}}}, 'opt4': {'opt2': {'1': {'typology': 'fixed', 'fixedValue': '0'}}, 'opt3': {'1': {'typology': 'fixed', 'fixedValue': '0'}}, 'opt5': {'1': {'typology': 'fixed', 'fixedValue': '0'}}}, 'opt5': {'opt2': {'1': {'typology': 'fixed', 'fixedValue': '0'}}, 'opt3': {'1': {'typology': 'fixed', 'fixedValue': '0'}}, 'opt4': {'1': {'typology': 'fixed', 'fixedValue': '0'}}}}
      programType: WD
      remainingTime: 156
      remoteActionable: 1
      remoteVisible: 1
      suggestedLoadD: RL100
      temp: 65
      waterEfficiency: 2
      waterSaving: 55
    custom:
      program: iot_extra_hygiene
    parameters:
      checkUpStatus: 0
      delayTime: 0
      extraDry: 0
      onOffStatus: 1
      openDoor: 0
      prCode: 23
      prPosition: 2
      prStr: 
  statistics:
    drawerCleaning:
      count: 16
      percentage: 16
      remaining: 84
      tot: 100
    drumCleaning:
      count: 25
      percentage: 25
      remaining: 75
      tot: 100
    filterCleaning:
      count: 25
      percentage: 167
      remaining: -10
      tot: 15
    lastCheckup: 1970-01-01T00:00:00.0Z
    mostUsedPrograms:
      - count: 17
        prCode: 8
        prPosition: 1
        programName: PROGRAMS.DW.ECO_BLDC
      - count: 12
        prCode: 23
        prPosition: 2
        programName: PROGRAMS.DW.IOT_EXTRA_HYGIENE
        programType: D
      - count: 3
        prCode: 23
        prPosition: 2
        programName: PROGRAMS.DW.IOT_TURBOPOWER
      - count: 3
        prCode: 23
        prPosition: 2
        programName: PROGRAMS.DW.undefined
        programType: D
      - count: 3
        prCode: 15
        prPosition: 4
        programName: PROGRAMS.DW.AUTO_UNIVERSAL_SOIL
    programsCounter: 112
    resultCode: 0
    sprayArmsCleaning:
      count: 25
      percentage: 25
      remaining: 75
      tot: 100
    tabs: 0
    temperatureUsage:
      temp45to55: 1
      temp60to65: 7
      temp70to75: 15
  stopProgram:
    parameters:
      onOffStatus: 0
commands:
  settings:
    buzzerDisabled:
      max: 1
      min: 0
      step: 1
    category:
      - setConfig
      - setParameters
    lastCycleSavingStatus:
      max: 1
      min: 0
      step: 1
    waterHard:
      max: 7
      min: 0
      step: 1
  startProgram:
    delayTime:
      max: 1410
      min: 0
      step: 30
    ecoIndexOpt4:
      - eyixijoyldv9
    ecoIndexOpt5:
      - eyixijo1fq==
    energyLabel:
      max: 5
      min: 0.5
      step: 1
    extraDry:
      max: 1
      min: 0
      step: 1
    openDoor:
      max: 1
      min: 0
      step: 1
    program:
      - Einfach Sauber
      - auto_care_soil
      - auto_universal_plus_soil
      - auto_universal_soil
      - classe_a_59
      - delicate
      - dishwasher_care
      - eco_bldc
      - hygiene_plus
      - intensive_rapid
      - iot_baby_care
      - iot_breakfast
      - iot_checkup
      - iot_china_crystals
      - iot_cocktail_glasses_soil
      - iot_daily_care_soil
      - iot_dinner_for_two_soil
      - iot_dreft_quick_cycle
      - iot_extra_hygiene
      - iot_happy_hour
      - iot_party_soil
      - iot_pizza_menu_soil
      - iot_plastic_tupperware
      - iot_porcelain
      - iot_pot_&_pans_soil
      - iot_power_mix_wash_soil
      - iot_pyrex_and_glassware
      - iot_single
      - iot_super_flash
      - iot_super_wash
      - iot_turbopower
      - iot_voice_automatic
      - iot_voice_delicate
      - iot_voice_eco
      - iot_voice_intensive
      - iot_voice_prewash
      - iot_voice_rapid_59
      - iot_voice_universal
      - iot_wok_grids_maxi_pans_soil
      - prewash
      - rapid_29
      - rapid_39
      - silent_care
      - steam
      - total_care
    programCluster:
      - traditional
      - eco
      - traditional_eco
    programFamily:
      - dashboard
      - guided
      - dashboard_guided
    remainingTime:
      max: 160
      min: 145
      step: 15
    temp:
      max: 60
      min: 50
      step: 10
versions:
  hon: 0.10.0
  pyhOn: 0.15.8

Data Archive dw_522.zip

Bapo16 commented 6 months ago

I am seeing the same behaviour with my washing machine, HWB 410AMC/1-80

I Can set the program etc in HA and the Time remaining, and Current Program are all correct i just cant start the process.

davideantonelli commented 6 months ago

Same issue with my tumble dryer, when i press the start button i will see the error : can't send command

Benniepie commented 6 months ago

Same issue with my Tumble Dryer (HD90-A2959S firmware 5.1.5) - if I reload the integration and do not change any settings it will start but changing the program first results in the same error.

My Haier washing machine on the same account continues to work as expected. (HW90-B14959S8U1 firmware 4.1.0)

Please let me know if I can help at all - happy to provide any logs/config or wotnot if it helps track down the issue.

axel2906 commented 6 months ago

Same issue for me uising Wash machine HWE 49AMBS/1-S with Firmware: 5.14.0 and tumble dryer HLE H8A2TE-S. I can see status choose progrma etc but when iI want to launch I've message Failed to call service switch/turn_on. Can't send command

Benniepie commented 6 months ago

Hi all, I updated to the beta release (v0.10.1-beta.1) via HACS, reloaded the integration, restarted home assistant (possibly not in that order) and mine started working again if that helps anyone else. Bennie

davideantonelli commented 6 months ago

Hi all, I updated to the beta release (v0.10.1-beta.1) via HACS, reloaded the integration, restarted home assistant (possibly not in that order) and mine started working again if that helps anyone else. Bennie

This worked for me, i've downloaded the v 0.10.1-beta1) via hacs ,restarted home assistant and it start work! thank you

Bapo16 commented 6 months ago

I have updated also and all seems to be working now.

Andre0512 commented 6 months ago

Hi, sorry for the delay. The problem should be the same as #117 and should be fixed with the latest beta. I have now published it as a normal release, check it out :slightly_smiling_face: