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.22k stars 2.5k forks source link

Status does not get updated during dry cycle on 0.14.0 #190

Open erpayo opened 1 month ago

erpayo commented 1 month ago

Describe the bug Since updating to 0.14.0 home assistant does not get notified of status changes in tumble dryer

To Reproduce Steps to reproduce the behavior: program the tumble dryer to delayed start using hon integration let the dryer do its job

Expected behavior Once the dryer starts the dry cycle Home assistant should be getting dryer status updates: remaining time, cycle phase, machine status, etc

Screenshots before update

Captura de pantalla 2024-03-28 a las 11 38 22

after update

Captura de pantalla 2024-03-28 a las 11 34 54

Environment (please complete the following information):

Additional context Before updating to 0.14.0 it was working ok

Home Assistant Logs Check System -> Logs if you can find any logs related to this integration and post it here.

Device Log

data:
  additional_data:
    dictionaryId: 203
    options: hybrid
  appliance:
    PK: user#eu-west-1:6ff1c98a-aa1e-47e7-8358-637e9c9963c1
    SK: app#xx-xx-xx-xx-xx-xx
    applianceId: xx-xx-xx-xx-xx-xx#1970-01-01T00:00:00.0Z
    applianceModelId: 1009
    applianceStatus: 1
    applianceTypeId: 8
    applianceTypeName: TD
    attributes:
      acuVersion: 0.0.0
      chipset: 1
      dictionaryId: 203
      eppParserSet: 1
      fwLabel: iotfw_epp
      idfVersion: 4.4.4
      kernelVersion: 10.4.3
      lang: it-IT
      uiVersion: 21.09.17
    brand: haier
    code: CF0674E0200
    connectivity: wifi|ble
    defaultWarrantyYears: 3
    eepromId: 41
    eepromName: no_eeprom
    enrollmentDate: 1970-01-01T00:00:00.0Z
    firstEnrollment: True
    firstEnrollmentTBC: True
    fwVersion: 5.15.0
    id: 1009
    lastUpdate: 1970-01-01T00:00:00.0Z
    macAddress: xx-xx-xx-xx-xx-xx
    modelName: HD90-A3959 INT
    nickName: Secadora
    purchaseDate: 1970-01-01T00:00:00.0Z
    sections:
      chatbot: True
      double_pairing_hidden: True
      ecoDelayStart: True
      snap_wash: True
    series: 959
    structure: heatpump
    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
  attributes:
    active: True
    activity:
    commandHistory:
      command:
        ancillaryParameters:
          energyLabel: 4
          prPosition: 2
          programCluster: traditional
          programFamily: [dashboard|auto]
          programType: D
          remoteActionable: 1
          remoteVisible: 1
          suggestedLoadD: 4.5
          tumblingStatus: 0
        applianceOptions:
          opt1: anticrease
          opt2: dryingManager
          opt3: bestIroning
          opt4: hybrid
        applianceType: TD
        attributes:
          channel: mobileApp
          energyLabel: 0
          origin: standardProgram
        commandName: startProgram
        device:
          appVersion: 2.6.5
          deviceModel: pyhOn
          mobileId: homassistant
          mobileOs: android
          osVersion: 999
        macAddress: xx-xx-xx-xx-xx-xx
        parameters:
          airWashMode: 1
          airwashSprayTime: 0
          anionStatus: 0
          antiCreaseTime: 0
          buzzerDisabled: 1
          cloudProgId: 255
          cloudProgSrc: 2
          delayTime: 0
          delicateStatus: 0
          dryLevel: 13
          dryMode: 1
          dryTimeMM: 0
          fastDryStatus: 0
          ironRemindStatus: 1
          lockStatus: 0
          mitesRemovalStatus: 0
          onOffStatus: 1
          operationName: grDryCloudProg
          pause: 0
          prCode: 63
          programClass: 1
          sterilizationStatus: 0
          tempLevel: 3
          texture: 64
        programName: PROGRAMS.TD.HQD_SYNTHETICS
        timestamp: 1970-01-01T00:00:00.0Z
        transactionId: xx-xx-xx-xx-xx-xx_1970-01-01T00:00:00.0Z
      timestampAccepted: 1970-01-01T00:00:00.0Z
      timestampExecuted: 1970-01-01T00:00:00.0Z
    lastConnEvent:
      category: CONNECTED
      instantTime: 1970-01-01T00:00:00.0Z
      macAddress: xx-xx-xx-xx-xx-xx
      timestampEvent: 1711572986573
    parameters:
      airWashMode: 1
      airwashSprayTime: 0
      anionStatus: 0
      antiCreaseTime: 0
      buzzerDisabled: 1
      cloudProgId: 255
      cloudProgSrc: 2
      debugEnabled: 0
      delayTime: 0
      delicateStatus: 0
      doorStatus: 0
      dryLevel: 13
      dryMode: 1
      dryTimeMM: 55
      errors: 00
      fastDryStatus: 0
      forceDelete: 0
      highTransRate: 1
      ironRemindStatus: 0
      ironingStatus: 0
      lockStatus: 0
      machMode: 2
      message: 0
      mitesRemovalStatus: 0
      onOffStatus: 1
      pause: 0
      prCode: 63
      prPhase: 19
      programClass: 1
      programStats: ;a0;9;;3;;;;;;;;2;;;;;;;;;4
      remainingStandbyTime: 961
      remainingTimeMM: 35
      remoteCtrValid: 1
      statusSyncRate: 1440
      stdTransRate: 1
      sterilizationStatus: 0
      tempLevel: 3
      texture: 64
      transMode: 0
    pause: False
    programName: No Program
    resultCode: 0
  pauseProgram:
    parameters:
      pause: 1
  resumeProgram:
    parameters:
      pause: 0
  settings:
    custom:
      category: setConfig
    parameters:
      httpEndpoint: 0
      mqttEndpoint: 0
  startProgram:
    ancillaryParameters:
      energyLabel: 4
      prPosition: 2
      programCluster: traditional
      programFamily: [dashboard|auto]
      programType: D
      remoteActionable: 1
      remoteVisible: 1
      suggestedLoadD: 4.5
      tumblingStatus: 0
    custom:
      favourite: 1
      program: Sintéticos
    parameters:
      airWashMode: 1
      airwashSprayTime: 0
      anionStatus: 0
      antiCreaseTime: 0
      buzzerDisabled: 1
      cloudProgId: 255
      cloudProgSrc: 2
      delayTime: 450
      delicateStatus: 0
      dryLevel: 13
      dryMode: 1
      dryTimeMM: 0
      fastDryStatus: 0
      ironRemindStatus: 1
      lockStatus: 0
      mitesRemovalStatus: 0
      onOffStatus: 1
      operationName: grDryCloudProg
      pause: 0
      prCode: 63
      programClass: 1
      sterilizationStatus: 0
      tempLevel: 3
      texture: 64
  statistics:
    drumCleaning:
      count: 0
      percentage: 0
      remaining: 100
      tot: 100
    filterCleaning:
      count: 0
      percentage: 0
      remaining: 15
      tot: 15
    lastCheckup: None
    loadingPercentage:
    mostUsedPrograms:
      - count: 142
        prCode: 63
        prPosition: 2
        programName: PROGRAMS.TD.HQD_SYNTHETICS
        programType: D
      - count: 17
        prCode: 63
        prPosition: 2
        programName: PROGRAMS.TD.IOT_DRY_SYNTHETICS
        programType: D
      - count: 3
        prCode: 66
        prPosition: 5
        programName: PROGRAMS.TD.HQD_BED_SHEETS
        programType: D
    programsCounter: 177
    resultCode: 0
    sprayArmsCleaning: 0
    temperatureUsage:
  stopProgram:
    parameters:
      returnStandby: 1
commands:
  settings:
    category:
      - setConfig
  startProgram:
    antiCreaseTime:
      max: 360
      min: 0
      step: 360
    delayTime:
      max: 1410
      min: 0
      step: 30
    dryLevel:
      max: 14
      min: 12
      step: 1
    dryTimeMM:
      - 15
      - 20
      - 25
      - 30
      - 35
      - 40
    energyLabel:
      max: 5
      min: 1
      step: 1
    program:
      - Algodón
      - Ropa mixta
      - Sintéticos
      - Sábanas
      - hqd_baby_care
      - hqd_bath_towel
      - hqd_bed_sheets
      - hqd_bulky
      - hqd_casual
      - hqd_cold_wind_timing
      - hqd_cotton
      - hqd_curtain
      - hqd_delicate
      - hqd_duvet
      - hqd_feather
      - hqd_hot_wind_timing
      - hqd_hygienic
      - hqd_i_refresh
      - hqd_jacket
      - hqd_jeans
      - hqd_mix
      - hqd_night_dry
      - hqd_outdoor
      - hqd_precious_cure
      - hqd_quick_30
      - hqd_quick_dry
      - hqd_quilt
      - hqd_refresh
      - hqd_shirt
      - hqd_shoes
      - hqd_silk
      - hqd_sports
      - hqd_synthetics
      - hqd_timer
      - hqd_underwear
      - hqd_wool
      - hqd_working_suit
      - iot_dry_baby
      - iot_dry_backpacks
      - iot_dry_bathrobe
      - iot_dry_bed_linen
      - iot_dry_cotton
      - iot_dry_cuddly_toys
      - iot_dry_curtains
      - iot_dry_delicates
      - iot_dry_denim_jeans
      - iot_dry_down_jacket
      - iot_dry_duvet
      - iot_dry_gym_fit
      - iot_dry_lingerie
      - iot_dry_mixed
      - iot_dry_pet_accessories
      - iot_dry_pet_hair_removal
      - iot_dry_rapid_30
      - iot_dry_rapid_59
      - iot_dry_shirts
      - iot_dry_swimsuits_and_bikinis
      - iot_dry_synthetics
      - iot_dry_tablecloths
      - iot_dry_technical_fabrics
      - iot_dry_wool
    programFamily:
      - wmsync
      - guided
      - voice
      - care
      - auto
      - wmsync_guided_voice_care_auto
    sterilizationStatus:
      max: 1
      min: 0
      step: 1
    tempLevel:
      max: 4
      min: 1
      step: 1
    tumblingStatus:
      max: 1
      min: 0
      step: 1
versions:
  hon: 0.14.0-beta.3
  pyhOn: 0.17.1

Data Archive

td_1009.zip

KameDomotics commented 1 month ago

My problem: The dryer finished program, the remaining time was 120 min (countdown was working), I turned off the appliance and the time increased to 150 min! Could you please help me? I've already tried removing the integration and doing everything again. IMG_7666 IMG_7665

Andre0512 commented 1 month ago

Hi @erpayo, I think the integration maybe lost it's connection to the websocket at 06:15. In the latest version I tried to implement a mechanism to reconnect when the connection is lost unexpected. Can you check it out? :slightly_smiling_face:

Andre0512 commented 1 month ago

@KameDomotics I think that's the normal behavior of the hon api, when you turn it off and on it's ready for the next run.

KameDomotics commented 1 month ago

@KameDomotics I think that's the normal behavior of the hon api, when you turn it off and on it's ready for the next run.

I don't think that's the case. The remaining time at the end of the cycle must be zero minutes (the cycle time is a countdown, it must end at zero). There are always minutes left in my dryer, and the same thing happens in my washing machine too (usually 2 or 5 minutes left). These residual minutes are never the same, they almost always vary, but they never reach zero. However, in the official hOn app the cycle ends at zero.

erpayo commented 1 month ago

installed beta 6. Now it's running its firs drying cycle with new version. Will report with the result of a few cycles.

erpayo commented 1 month ago

Hi @erpayo, I think the integration maybe lost it's connection to the websocket at 06:15. In the latest version I tried to implement a mechanism to reconnect when the connection is lost unexpected. Can you check it out? 🙂

During various cycles, the integration seems to remain connected during the cycle, but as noted in issue #191 for the next cycle it does not get connected again