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.24k stars 2.49k forks source link

Wrong parameters sent for drying #74

Open frlequ opened 11 months ago

frlequ commented 11 months ago

Describe the bug When comparing sent parameters between official app vs hOn there are some wrong data structures.

I think there are two options regarding Drying:

  1. Automatic drying (dryLevel: "2",dryProgFlag: "1", dryTime: "1")
  2. Custom drying set by minutes (in this case the dryProgFlag should be "1" AND steamLevel: 0 AND dryLevel not set.

Also, when starting WD with integration, the official app shows all kind of wrong values(undefined). I think there are also programName: PROGRAMS.WM_WD.HQD_QUICK_15 parameters missing, but I'm not sure. If you look at mostUsedPrograms: some programs are undefined

Screenshots Capture

Environment (please complete the following information):

Device Log OFFICIAL APP (Integration log is below!!!)

data:
  additional_data:
    options:
      haier_SoakPrewashSelection: haier_SoakPrewashSelection
  appliance:
    applianceId: xx-xx-xx-xx-xx-xx#2022-12-15T12:52:26Z
    applianceModelId: 1228
    applianceStatus: 1
    applianceTypeId: 2
    applianceTypeName: WD
    attributes:
      acuVersion: 21.05.18
      chipset: ESP32D0WDQ5
      dictionaryId: 77
      lang: it-IT
    brand: haier
    code: CE0HUTB0000
    connectivity: wifi|ble
    eepromId: 41
    eepromName: no_eeprom
    enrollmentDate: 2022-12-15T12:52:26.825Z
    firstEnrollment: True
    firstEnrollmentTBC: True
    fwVersion: 3.8.0
    id: 1228
    lastUpdate: 2022-12-15T12:52:46Z
    macAddress: xx-xx-xx-xx-xx-xx
    modelName: HWD100-BD1499U1N-INT
    nickName: Washer Dryer
    sections:
      chatbot: True
      demo: False
      double_pairing_hidden: True
      ecoDelayStart: True
      epp_enabled: False
      snap_wash: True
    series: superdrum
    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: True
    activity:
      activityStarted: 2023-06-16T08:43:58Z
      applianceTypeName: WM
      attributes:
        antiWrinkle: 1
        appVersion: 2.0.9
        autoDetergentStatus: 1
        autoSoftenerStatus: 1
        channel: mobileApp
        delayStatus: 1
        delayTime: 510
        deviceModel: exynos2100
        dirtyLevel: 0

        dryProgFlag: 1
        dryTime: 4
        dryTimeMM: 0
        dryType: C
        ecoDelayStart: 0
        energyLabel: 0
        haier_SoakPrewashSelection: 0
        liquidDetergentDose: 1
        mainWashTime: 3
        mobileOs: android
        nightWashStatus: 0
        origin: standardProgram
        osVersion: 33
        permanentPressStatus: 0
        powderDetergentDose: 1
        prCode: 72
        prPosition: 2
        prStrDisp: Quick 15'
        principalUserId: 0016800000J84GHAAZ
        programCluster: quick
        programFamily: [dashboard]
        programIntensity: standard
        programName: HQD_QUICK_15
        programType: W+D
        remainingTimeMM: 510
        remoteCtrValid: 1
        rinseIterationTime: 3
        rinseIterations: 1
        spinSpeed: 1400
        steamLevel: 0
        suggestedLoadW: 2
        suggestedLoadWD: 0.6
        temp: 0
      category: CYCLE
      macAddress: xx-xx-xx-xx-xx-xx
      resultCode: 0
      ttl: 1694681040
    commandHistory:
      command:
        ancillaryParameters:
          antiWrinkle: 1
          dryOption: 0
          dryTimeMM: 0
          dryType: C
          ecoDelayStart: 0
          energyLabel: 0
          liquidDetergentDose: 1
          powderDetergentDose: 1
          prPosition: 2
          programCluster: quick
          programFamily: [dashboard]
          programIntensity: standard
          programRules:
            dryLevel:
              dryOption:
                0:
                  fixedValue: 0
                  typology: fixed
            dryTime:
              dryTimeMM:
                0:
                  fixedValue: 0
                  typology: fixed
                120:
                  fixedValue: 4
                  typology: fixed
                150:
                  fixedValue: 5
                  typology: fixed
                180:
                  fixedValue: 6
                  typology: fixed
                210:
                  fixedValue: 7
                  typology: fixed
                30:
                  fixedValue: 1
                  typology: fixed
                60:
                  fixedValue: 2
                  typology: fixed
                90:
                  fixedValue: 3
                  typology: fixed
          programType: W+D
          remoteActionable: 1
          remoteVisible: 1
          suggestedLoadW: 2
          suggestedLoadWD: 0.6
          tempContribution: 0
        applianceOptions:
          haier_SoakPrewashSelection: haier_SoakPrewashSelection
        applianceType: WD
        attributes:
          channel: mobileApp
          energyLabel: 0
          origin: standardProgram
          prStr: Quick 15'
        commandName: startProgram
        device:
          appVersion: 2.0.9
          deviceModel: exynos2100
          mobileId: 664fb7aa93b9cf82
          mobileOs: android
          osVersion: 33
        macAddress: xx-xx-xx-xx-xx-xx
        parameters:
          antiAllergyStatus: 0
          autoDetergentStatus: 1
          autoDisinfectantStatus: 0
          autoSoftenerStatus: 1
          cloudProgId: 255
          cloudProgSrc: 2
          creaseResistSoakStatus: 0
          delayStatus: 0
          delayTime: 510
          detergentBStatus: 0

          dryProgFlag: 1
          dryTime: 4
          energySavingStatus: 0
          haier_ConstantTempStatus: 1
          haier_MainWashRotateTime: 15
          haier_MainWashSpeed: 45
          haier_MainWashStopTime: 0
          haier_MainWashWaterLevel: 3
          haier_RinseRotateTime: 15
          haier_RinseSpeed: 45
          haier_RinseStopTime: 0
          haier_SoakPrewashRotateTime: 15
          haier_SoakPrewashSelection: 0
          haier_SoakPrewashSpeed: 45
          haier_SoakPrewashStopTime: 0
          haier_SoakPrewashTemperature: 30
          haier_SoakPrewashTime: 0
          highWaterLevelStatus: 0
          intelligenceStatus: 0
          lockStatus: 0
          mainWashTime: 3
          nightWashStatus: 0
          operationName: grOnlineWash
          permanentPressStatus: 0
          prCode: 72
          purifiedWashStatus: 0
          rinseIterationTime: 3
          rinseIterations: 1
          soakWashStatus: 0
          speedUpStatus: 0
          spinSpeed: 1000
          steamLevel: 0
          strongStatus: 0
          temp: 0
          texture: 20
          uvSterilizationStatus: 0
          voiceStatus: 0
          washerDryIntensity: 1
          weight: 3
        programName: PROGRAMS.WM_WD.HQD_QUICK_15
        timestamp: 2023-06-16T08:43:48.487Z
        transactionId: xx-xx-xx-xx-xx-xx_2023-06-16T08:43:48.487Z
      timestampAccepted: 2023-06-16T08:43:50.0Z
      timestampExecuted: 2023-06-16T08:43:54.9Z
    lastConnEvent:
      category: CONNECTED
      instantTime: 2023-06-16T05:46:19Z
      macAddress: xx-xx-xx-xx-xx-xx
      timestampEvent: 1686894379114
    parameters:
      actualWeight: 0
      airWashTempLevel: 0
      airWashTime: 0
      antiAllergyStatus: 0
      autoDetergentStatus: 1
      autoDisinfectantStatus: 0
      autoSoftenerStatus: 1
      buzzerDisabled: 1
      buzzerDisabledCurrent: 0
      clothesAnionStatus: 0
      cloudProgId: 255
      cloudProgSrc: 2
      creaseResistSoakStatus: 0
      currentElectricityUsed: 0.00
      currentWashCycle: 67
      currentWaterUsed: 0
      defSetAllowed: 0
      delayStatus: 1
      detWarn: 0
      detergentBStatus: 0
      detergentPercent: 100
      detergentType: 1
      dirtyLevel: 0
      doorLockStatus: 1
      doorStatus: 0
      dryCleaningNeeded: 0
      dryLevel: 0
      dryProgFlag: 1
      dryStatus: 1
      dryTime: 4
      energySavingStatus: 0
      errors: 00
      forceDelete: 0
      haier_DetergentWeight: 1
      haier_SoftenerWeight: 1
      highWaterLevelStatus: 0
      intelligenceStatus: 0
      laundryCycleStatus: 1
      lockStatus: 0
      loosenStatus: 0
      machMode: 5
      message: 0
      nightWashStatus: 0
      pause: 0
      permanentPressStatus: 0
      prCode: 72
      prPhase: 19
      program1: 0
      program10: 0
      program11: 2
      program12: 0
      program13: 0
      program14: 2
      program15: 0
      program16: 0
      program17: 1
      program18: 10
      program2: 19
      program3: 0
      program4: 3
      program5: 0
      program6: 2
      program7: 7
      program8: 19
      program9: 1
      purifiedWashStatus: 0
      remainingMainWashTime: 6
      remainingRinseIterations: 1
      remainingStandbyTime: 1440
      remainingTimeMM: 510
      remoteCtrValid: 1
      shoesAnionStatus: 0
      soakWashStatus: 0
      socksAnionStatus: 0
      softWarn: 0
      speedUpStatus: 0
      spinSpeed: 1400
      stainType: 0
      standbyTimeExtended: 1
      steamStatus: 0
      strongStatus: 0
      temp: 0
      temp0to30: 33
      temp40: 22
      temp60to90: 12
      testCmdReceiveStatus: 0
      texture: 20
      totalElectricityUsed: 71.94
      totalWashCycle: 67
      totalWaterUsed: 4792
      toyAnionStatus: 0
      uvSterilizationStatus: 0
      voiceModuleDataDef: 130
      voiceModuleOnOffStatus: 1
      voiceModuleVolume: 0
      voiceModuleWakeStatus: 0
      voiceModuleWakeUp: 0
      voiceStatus: 0
      washSpeed: 0
      washerDryIntensity: 1
      weight: 3
    pause: False
    programName: hqd_quick_15
    resultCode: 0
  extra_command_data:
    startProgram:
      dryLevel:
        2: 45
      dryTime:
        0: 0
        1: 30
        2: 60
        3: 90
        4: 120
        5: 150
        6: 180
        7: 210
        8: 10
        9: 15
  pauseProgram:
    parameters:
      pause: 1
  resumeProgram:
    parameters:
      pause: 0
  settings:
    custom:
      category: setConfig
    parameters:
      httpEndpoint: 0
      mqttEndpoint: 0
  startProgram:
    ancillaryParameters:
      antiWrinkle: 1
      dryOption: 0
      dryTimeMM: 120
      dryType: C
      energyLabel: 5
      liquidDetergentDose: 1
      powderDetergentDose: 1
      prPosition: 2
      programCluster: quick
      programFamily: [dashboard]
      programIntensity: standard
      programRules: {'dryLevel': {'dryOption': {'0': {'typology': 'fixed', 'fixedValue': '0'}}}, 'dryTime': {'dryTimeMM': {'0': {'typology': 'fixed', 'fixedValue': '0'}, '30': {'typology': 'fixed', 'fixedValue': '1'}, '60': {'typology': 'fixed', 'fixedValue': '2'}, '90': {'typology': 'fixed', 'fixedValue': '3'}, '120': {'typology': 'fixed', 'fixedValue': '4'}, '150': {'typology': 'fixed', 'fixedValue': '5'}, '180': {'typology': 'fixed', 'fixedValue': '6'}, '210': {'typology': 'fixed', 'fixedValue': '7'}}}}
      programType: W+D
      remoteActionable: 1
      remoteVisible: 1
      suggestedLoadW: 2
      suggestedLoadWD: 0.6
      tempContribution: 0
    custom:
      program: hqd_quick_15
    parameters:
      antiAllergyStatus: 0
      autoDetergentStatus: 1
      autoDisinfectantStatus: 0
      autoSoftenerStatus: 1
      cloudProgId: 255
      cloudProgSrc: 2
      creaseResistSoakStatus: 0
      delayStatus: 1
      delayTime: 510
      detergentBStatus: 0
      dryLevel: 2
      dryProgFlag: 0
      dryTime: 6
      energySavingStatus: 0
      haier_ConstantTempStatus: 1
      haier_MainWashRotateTime: 15
      haier_MainWashSpeed: 45
      haier_MainWashStopTime: 0
      haier_MainWashWaterLevel: 3
      haier_RinseRotateTime: 15
      haier_RinseSpeed: 45
      haier_RinseStopTime: 0
      haier_SoakPrewashRotateTime: 15
      haier_SoakPrewashSelection: 0
      haier_SoakPrewashSpeed: 45
      haier_SoakPrewashStopTime: 0
      haier_SoakPrewashTemperature: 30
      haier_SoakPrewashTime: 0
      highWaterLevelStatus: 0
      intelligenceStatus: 0
      lockStatus: 0
      mainWashTime: 3
      nightWashStatus: 0
      operationName: grOnlineWash
      permanentPressStatus: 0
      prCode: 72
      purifiedWashStatus: 0
      rinseIterationTime: 3
      rinseIterations: 1
      soakWashStatus: 0
      speedUpStatus: 0
      spinSpeed: 1000
      strongStatus: 0
      temp: 0
      texture: 20
      uvSterilizationStatus: 0
      voiceStatus: 0
      washerDryIntensity: 1
      weight: 3
    remainingTimes:
      remainingTime: 15
  statistics:
    drumCleaning:
      count: 67
      percentage: 74
      remaining: 23
      tot: 90
    filterCleaning:
      count: 32
      percentage: 32
      remaining: 68
      tot: 100
    lastCheckup: 2023-03-12T10:29:47.874Z
    loadingPercentage:
      - current: None
        date: 2023-06-16T06:21:53.2Z
        max: 0.6
      - current: None
        date: 2023-06-16T06:08:49.4Z
        max: 0.6
      - current: None
        date: 2023-06-15T20:56:49Z
        max: 4.8
      - current: None
        date: 2023-06-15T20:56:49.7Z
        max: 4.8
      - current: None
        date: 2023-06-15T20:09:39Z
        max: 0.1
    mostUsedPrograms:
      - count: 15
        prCode: 77
        prPosition: 18
        programName: PROGRAMS.WM.undefined
        programType: W+D
      - count: 10
        prCode: 72
        prPosition: 2
        programName: PROGRAMS.WM_WD.HQD_QUICK_15
        programType: W+D
      - count: 9
        prCode: 116
        prPosition: 8
        programName: PROGRAMS.WM.undefined
        programType: W+D
      - count: 8
        prCode: 116
        prPosition: 8
        programName: PROGRAMS.WM_WD.HQD_SYNTHETIC_AND_COLOURED
        programType: W+D
      - count: 7
        prCode: 115
        prPosition: 7
        programName: PROGRAMS.WM.undefined
        programType: W+D
    programsCounter: 99
    resultCode: 0
    temperatureUsage:
      temp0to30: 33
      temp40: 22
      temp60to90: 12
  stopProgram:
    parameters:
      onOffStatus: 0
commands:
  settings:
    category:
      - setConfig
  startProgram:
    airWashPara10:
      - 30
    airWashPara11:
      - 55
    airWashPara12:
      - 30
    airWashPara13:
      - 5
    airWashPara15:
      - 45
    airWashPara16:
      - 30
    airWashPara19:
      - 50
    airWashPara2:
      - 80
    airWashPara21:
      - 160
    airWashPara24:
      - 10
    airWashPara27:
      - 10
    airWashPara3:
      - 85
    airWashPara31:
      - 1
    airWashPara36:
      - 0
      - 8
      - 10
    airWashPara4:
      - 95
    airWashPara5:
      - 30
    airWashPara6:
      - 10
    airWashPara7:
      - 180
    airWashPara9:
      - 150
    autoDetergentStatus:
      max: 1
      min: 0
      step: 1
    autoSoftenerStatus:
      max: 1
      min: 0
      step: 1
    delayStatus:
      max: 1
      min: 0
      step: 1
    delayTime:
      max: 1410
      min: 0
      step: 30
    dryLevel:
      - h1
      - h2
      - h3
    dryOption:
      max: 1
      min: 0
      step: 1
    dryProgFlag:
      max: 1
      min: 0
      step: 1
    dryTime:
      max: 7
      min: 0
      step: 1
    dryTimeMM:
      max: 210
      min: 0
      step: 30
    energyLabel:
      max: 5
      min: 3
      step: 1
    haier_SoakPrewashSelection:
      max: 2
      min: 0
      step: 2
    mainWashTime:
      max: 120
      min: 5
      step: 5
    program:
      - Bathrobes and Towels
      - hqd_20_degrees
      - hqd_autoclean
      - hqd_babycare
      - hqd_checkup
      - hqd_cottons
      - hqd_delicate
      - hqd_dry
      - hqd_duvet
      - hqd_eco_40_60_degrees
      - hqd_handwash_wool
      - hqd_i_refresh
      - hqd_mix
      - hqd_quick_15
      - hqd_rapid_wash_and_dry
      - hqd_rinse
      - hqd_shirts
      - hqd_smart
      - hqd_spin
      - hqd_sport
      - hqd_super_fast
      - hqd_synthetic_and_coloured
      - iot_dry_cotton_dry
      - iot_wash_anti_mites
      - iot_wash_anti_odor
      - iot_wash_ariel_clean_cycle
      - iot_wash_ariel_cold_cycle
      - iot_wash_ariel_fresh_cycle
      - iot_wash_baby_sanitizer
      - iot_wash_backpacks
      - iot_wash_bathrobe
      - iot_wash_bed_linen
      - iot_wash_bleaching
      - iot_wash_blood_stains
      - iot_wash_cashmere
      - iot_wash_chocolate_stains
      - iot_wash_cold_wash
      - iot_wash_colored
      - iot_wash_colored_anti_stain
      - iot_wash_colored_delicate
      - iot_wash_coloured
      - iot_wash_cotton
      - iot_wash_cuddly_toys
      - iot_wash_curtains
      - iot_wash_dark
      - iot_wash_delicate
      - iot_wash_delicate_antiallergy
      - iot_wash_delicate_colors
      - iot_wash_delicate_dark
      - iot_wash_delicate_tablecloths
      - iot_wash_delicate_whites
      - iot_wash_denim_jeans
      - iot_wash_diving_suits
      - iot_wash_down_jackets
      - iot_wash_fruit_stains
      - iot_wash_handwash
      - iot_wash_handwash_colored
      - iot_wash_handwash_dark
      - iot_wash_lingerie
      - iot_wash_masks_refresh
      - iot_wash_masks_sanification
      - iot_wash_mats
      - iot_wash_men_s_trousers
      - iot_wash_mixed
      - iot_wash_new_clothes
      - iot_wash_perfect_white
      - iot_wash_pets
      - iot_wash_pets_hair_removal
      - iot_wash_pets_odours_stains_removal
      - iot_wash_quick_drum_cleaner
      - iot_wash_rapid_14
      - iot_wash_rapid_30
      - iot_wash_rapid_44
      - iot_wash_rapid_59
      - iot_wash_resistant_colored
      - iot_wash_resistant_dark
      - iot_wash_resistant_whites
      - iot_wash_rinse
      - iot_wash_silk
      - iot_wash_ski_suit
      - iot_wash_spin
      - iot_wash_sport
      - iot_wash_swimsuits_and_bikinis
      - iot_wash_synthetic
      - iot_wash_tablecloths
      - iot_wash_technical_fabrics
      - iot_wash_technical_jackets
      - iot_wash_trainers
      - iot_wash_whites
      - iot_wash_wine_stains
      - iot_wash_wool
    programCluster:
      - traditional
      - eco
      - traditional_eco
    programFamily:
      - hidden
      - guided
      - dashboard
      - hidden_guided_dashboard
    remainingTime:
      max: 48
      min: 38
      step: 10
    rinseIterations:
      max: 5
      min: 0
      step: 1
    spinSpeed:
      - 0
      - 400
      - 600
      - 800
      - 1000
      - 1200
      - 1400
    temp:
      - 0
      - 20
      - 30
      - 40
      - 60
      - 90
rules:
  startProgram:
    dryLevel:
      H1:
        airWashPara1: 
        airWashPara10: 60
        airWashPara11: 45
        airWashPara12: 15
        airWashPara13: 10
        airWashPara14: 120
        airWashPara15: 45
        airWashPara16: 50
        airWashPara17: 5
        airWashPara18: 120
        airWashPara19: 60
        airWashPara2: 65
        airWashPara20: 10
        airWashPara21: 120
        airWashPara22: 12
        airWashPara23: 120
        airWashPara24: 8
        airWashPara25: 60
        airWashPara26: 30
        airWashPara27: 10
        airWashPara28: 64255
        airWashPara29: 64255
        airWashPara3: 70
        airWashPara30: 254
        airWashPara31: 10
        airWashPara32: 50
        airWashPara33: 55
        airWashPara34: 5
        airWashPara35: 120
        airWashPara36: 8
        airWashPara37: 
        airWashPara38: 
        airWashPara39: 
        airWashPara4: 85
        airWashPara40: 
        airWashPara5: 20
        airWashPara6: 3
        airWashPara7: 135
        airWashPara8: 90
        airWashPara9: 150
        cloudProgId: 442
        cloudProgSrc: 2
        remainingTime: 38
      H2:
        airWashPara1: 
        airWashPara10: 
        airWashPara11: 50
        airWashPara12: 30
        airWashPara13: 5
        airWashPara14: 120
        airWashPara15: 60
        airWashPara16: 30
        airWashPara17: 5
        airWashPara18: 120
        airWashPara19: 45
        airWashPara2: 65
        airWashPara20: 10
        airWashPara21: 120
        airWashPara22: 12
        airWashPara23: 120
        airWashPara24: 10
        airWashPara25: 60
        airWashPara26: 30
        airWashPara27: 
        airWashPara28: 64255
        airWashPara29: 64255
        airWashPara3: 70
        airWashPara30: 254
        airWashPara31: 6
        airWashPara32: 50
        airWashPara33: 55
        airWashPara34: 5
        airWashPara35: 120
        airWashPara36: 10
        airWashPara37: 
        airWashPara38: 
        airWashPara39: 
        airWashPara4: 70
        airWashPara40: 
        airWashPara5: 20
        airWashPara6: 3
        airWashPara7: 90
        airWashPara8: 90
        airWashPara9: 135
        cloudProgId: 393
        cloudProgSrc: 2
        remainingTime: 38
      H3:
        airWashPara1: 
        airWashPara10: 30
        airWashPara11: 55
        airWashPara12: 30
        airWashPara13: 5
        airWashPara14: 120
        airWashPara15: 45
        airWashPara16: 30
        airWashPara17: 5
        airWashPara18: 120
        airWashPara19: 50
        airWashPara2: 80
        airWashPara20: 10
        airWashPara21: 160
        airWashPara22: 12
        airWashPara23: 120
        airWashPara24: 10
        airWashPara25: 60
        airWashPara26: 30
        airWashPara27: 10
        airWashPara28: 64255
        airWashPara29: 64255
        airWashPara3: 85
        airWashPara30: 254
        airWashPara31: 1
        airWashPara32: 50
        airWashPara33: 55
        airWashPara34: 5
        airWashPara35: 120
        airWashPara36: 
        airWashPara37: 
        airWashPara38: 
        airWashPara39: 
        airWashPara4: 95
        airWashPara40: 
        airWashPara5: 30
        airWashPara6: 10
        airWashPara7: 180
        airWashPara8: 90
        airWashPara9: 150
        cloudProgId: 392
        cloudProgSrc: 2
        remainingTime: 48
    dryOption:
      0:
        dryLevel: 0
    dryTimeMM:
      0:
        dryTime: 0
      120:
        dryTime: 4
      150:
        dryTime: 5
      180:
        dryTime: 6
      210:
        dryTime: 7
      30:
        dryTime: 1
      60:
        dryTime: 2
      90:
        dryTime: 3
pyhOnVersion: 0.13.0

Device Log HON INTEGRATION

data:
  additional_data:
    options:
      haier_SoakPrewashSelection: haier_SoakPrewashSelection
  appliance:
    applianceId: xx-xx-xx-xx-xx-xx#2022-12-15T12:52:26Z
    applianceModelId: 1228
    applianceStatus: 1
    applianceTypeId: 2
    applianceTypeName: WD
    attributes:
      acuVersion: 21.05.18
      chipset: ESP32D0WDQ5
      dictionaryId: 77
      lang: it-IT
    brand: haier
    code: CE0HUTB0000
    connectivity: wifi|ble
    eepromId: 41
    eepromName: no_eeprom
    enrollmentDate: 2022-12-15T12:52:26.825Z
    firstEnrollment: True
    firstEnrollmentTBC: True
    fwVersion: 3.8.0
    id: 1228
    lastUpdate: 2022-12-15T12:52:46Z
    macAddress: xx-xx-xx-xx-xx-xx
    modelName: HWD100-BD1499U1N-INT
    nickName: Washer Dryer
    sections:
      chatbot: True
      demo: False
      double_pairing_hidden: True
      ecoDelayStart: True
      epp_enabled: False
      snap_wash: True
    series: superdrum
    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: True
    activity:
      activityStarted: 2023-06-16T09:04:03Z
      applianceTypeName: WM
      attributes:
        antiWrinkle: 1
        appVersion: 2.0.10
        autoDetergentStatus: 1
        autoSoftenerStatus: 1
        channel: mobileApp
        delayStatus: 1
        delayTime: 510
        deviceModel: exynos9820
        dirtyLevel: 0
        dryLevel: 0
        dryProgFlag: 0
        dryTime: 4
        dryTimeMM: 120
        dryType: C

        energyLabel: 0
        haier_SoakPrewashSelection: 0
        liquidDetergentDose: 1
        mainWashTime: 3
        mobileOs: android
        nightWashStatus: 0
        origin: standardProgram
        osVersion: 31
        permanentPressStatus: 0
        powderDetergentDose: 1
        prCode: 72
        prPosition: 2

        principalUserId: 0016800000J84GHAAZ
        programCluster: quick
        programFamily: [dashboard]
        programIntensity: standard

        programType: W+D
        remainingTimeMM: 510
        remoteCtrValid: 1
        rinseIterationTime: 3
        rinseIterations: 1
        spinSpeed: 1000

        suggestedLoadW: 2
        suggestedLoadWD: 0.6
        temp: 0
      category: CYCLE
      macAddress: xx-xx-xx-xx-xx-xx
      resultCode: 0
      ttl: 1694682247
    commandHistory:
      command:
        ancillaryParameters:
          antiWrinkle: 1
          dryOption: 0
          dryTimeMM: 120
          dryType: C

          energyLabel: 5
          liquidDetergentDose: 1
          powderDetergentDose: 1
          prPosition: 2
          programCluster: quick
          programFamily: [dashboard]
          programIntensity: standard

          programType: W+D
          remoteActionable: 1
          remoteVisible: 1
          suggestedLoadW: 2
          suggestedLoadWD: 0.6
          tempContribution: 0
        applianceOptions:
          haier_SoakPrewashSelection: haier_SoakPrewashSelection
        applianceType: WD
        attributes:
          channel: mobileApp
          energyLabel: 0
          origin: standardProgram

        commandName: startProgram
        device:
          appVersion: 2.0.10
          deviceModel: exynos9820
          mobileId: be7aeae771cea87d
          mobileOs: android
          osVersion: 31
        macAddress: xx-xx-xx-xx-xx-xx
        parameters:
          antiAllergyStatus: 0
          autoDetergentStatus: 1
          autoDisinfectantStatus: 0
          autoSoftenerStatus: 1
          cloudProgId: 255
          cloudProgSrc: 2
          creaseResistSoakStatus: 0
          delayStatus: 1
          delayTime: 510
          detergentBStatus: 0
          dryLevel: 0
          dryProgFlag: 0
          dryTime: 4
          energySavingStatus: 0
          haier_ConstantTempStatus: 1
          haier_MainWashRotateTime: 15
          haier_MainWashSpeed: 45
          haier_MainWashStopTime: 0
          haier_MainWashWaterLevel: 3
          haier_RinseRotateTime: 15
          haier_RinseSpeed: 45
          haier_RinseStopTime: 0
          haier_SoakPrewashRotateTime: 15
          haier_SoakPrewashSelection: 0
          haier_SoakPrewashSpeed: 45
          haier_SoakPrewashStopTime: 0
          haier_SoakPrewashTemperature: 30
          haier_SoakPrewashTime: 0
          highWaterLevelStatus: 0
          intelligenceStatus: 0
          lockStatus: 0
          mainWashTime: 3
          nightWashStatus: 0
          operationName: grOnlineWash
          permanentPressStatus: 0
          prCode: 72
          purifiedWashStatus: 0
          rinseIterationTime: 3
          rinseIterations: 1
          soakWashStatus: 0
          speedUpStatus: 0
          spinSpeed: 1000

          strongStatus: 0
          temp: 0
          texture: 20
          uvSterilizationStatus: 0
          voiceStatus: 0
          washerDryIntensity: 1
          weight: 3

        timestamp: 2023-06-16T09:04:00.553Z
        transactionId: xx-xx-xx-xx-xx-xx_2023-06-16T09:04:00.553Z
      timestampAccepted: 2023-06-16T09:03:59.9Z
      timestampExecuted: 2023-06-16T09:04:01.7Z
    lastConnEvent:
      category: CONNECTED
      instantTime: 2023-06-16T05:46:19Z
      macAddress: xx-xx-xx-xx-xx-xx
      timestampEvent: 1686894379114
    parameters:
      actualWeight: 0
      airWashTempLevel: 0
      airWashTime: 0
      antiAllergyStatus: 0
      autoDetergentStatus: 1
      autoDisinfectantStatus: 0
      autoSoftenerStatus: 1
      buzzerDisabled: 1
      buzzerDisabledCurrent: 0
      clothesAnionStatus: 0
      cloudProgId: 255
      cloudProgSrc: 2
      creaseResistSoakStatus: 0
      currentElectricityUsed: 0.00
      currentWashCycle: 67
      currentWaterUsed: 0
      defSetAllowed: 0
      delayStatus: 1
      detWarn: 0
      detergentBStatus: 0
      detergentPercent: 100
      detergentType: 1
      dirtyLevel: 0
      doorLockStatus: 1
      doorStatus: 0
      dryCleaningNeeded: 0
      dryLevel: 0
      dryProgFlag: 0
      dryStatus: 0
      dryTime: 0
      energySavingStatus: 0
      errors: 00
      forceDelete: 0
      haier_DetergentWeight: 1
      haier_SoftenerWeight: 1
      highWaterLevelStatus: 0
      intelligenceStatus: 0
      laundryCycleStatus: 1
      lockStatus: 0
      loosenStatus: 0
      machMode: 5
      message: 0
      nightWashStatus: 0
      pause: 0
      permanentPressStatus: 0
      prCode: 72
      prPhase: 19
      program1: 0
      program10: 0
      program11: 2
      program12: 0
      program13: 0
      program14: 2
      program15: 0
      program16: 0
      program17: 1
      program18: 10
      program2: 19
      program3: 0
      program4: 3
      program5: 0
      program6: 2
      program7: 7
      program8: 19
      program9: 1
      purifiedWashStatus: 0
      remainingMainWashTime: 6
      remainingRinseIterations: 1
      remainingStandbyTime: 1440
      remainingTimeMM: 510
      remoteCtrValid: 1
      shoesAnionStatus: 0
      soakWashStatus: 0
      socksAnionStatus: 0
      softWarn: 0
      speedUpStatus: 0
      spinSpeed: 1000
      stainType: 0
      standbyTimeExtended: 1
      steamStatus: 0
      strongStatus: 0
      temp: 0
      temp0to30: 33
      temp40: 22
      temp60to90: 12
      testCmdReceiveStatus: 0
      texture: 20
      totalElectricityUsed: 71.94
      totalWashCycle: 67
      totalWaterUsed: 4792
      toyAnionStatus: 0
      uvSterilizationStatus: 0
      voiceModuleDataDef: 130
      voiceModuleOnOffStatus: 1
      voiceModuleVolume: 0
      voiceModuleWakeStatus: 0
      voiceModuleWakeUp: 0
      voiceStatus: 0
      washSpeed: 0
      washerDryIntensity: 1
      weight: 3
    pause: False
    programName: hqd_quick_15
    resultCode: 0
  extra_command_data:
    startProgram:
      dryLevel:
        2: 45
      dryTime:
        0: 0
        1: 30
        2: 60
        3: 90
        4: 120
        5: 150
        6: 180
        7: 210
        8: 10
        9: 15
  pauseProgram:
    parameters:
      pause: 1
  resumeProgram:
    parameters:
      pause: 0
  settings:
    custom:
      category: setConfig
    parameters:
      httpEndpoint: 0
      mqttEndpoint: 0
  startProgram:
    ancillaryParameters:
      antiWrinkle: 1
      dryOption: 0
      dryTimeMM: 120
      dryType: C
      energyLabel: 5
      liquidDetergentDose: 1
      powderDetergentDose: 1
      prPosition: 2
      programCluster: quick
      programFamily: [dashboard]
      programIntensity: standard
      programRules: {'dryLevel': {'dryOption': {'0': {'typology': 'fixed', 'fixedValue': '0'}}}, 'dryTime': {'dryTimeMM': {'0': {'typology': 'fixed', 'fixedValue': '0'}, '30': {'typology': 'fixed', 'fixedValue': '1'}, '60': {'typology': 'fixed', 'fixedValue': '2'}, '90': {'typology': 'fixed', 'fixedValue': '3'}, '120': {'typology': 'fixed', 'fixedValue': '4'}, '150': {'typology': 'fixed', 'fixedValue': '5'}, '180': {'typology': 'fixed', 'fixedValue': '6'}, '210': {'typology': 'fixed', 'fixedValue': '7'}}}}
      programType: W+D
      remoteActionable: 1
      remoteVisible: 1
      suggestedLoadW: 2
      suggestedLoadWD: 0.6
      tempContribution: 0
    custom:
      program: hqd_quick_15
    parameters:
      antiAllergyStatus: 0
      autoDetergentStatus: 1
      autoDisinfectantStatus: 0
      autoSoftenerStatus: 1
      cloudProgId: 255
      cloudProgSrc: 2
      creaseResistSoakStatus: 0
      delayStatus: 1
      delayTime: 510
      detergentBStatus: 0
      dryLevel: 0
      dryProgFlag: 0
      dryTime: 4
      energySavingStatus: 0
      haier_ConstantTempStatus: 1
      haier_MainWashRotateTime: 15
      haier_MainWashSpeed: 45
      haier_MainWashStopTime: 0
      haier_MainWashWaterLevel: 3
      haier_RinseRotateTime: 15
      haier_RinseSpeed: 45
      haier_RinseStopTime: 0
      haier_SoakPrewashRotateTime: 15
      haier_SoakPrewashSelection: 0
      haier_SoakPrewashSpeed: 45
      haier_SoakPrewashStopTime: 0
      haier_SoakPrewashTemperature: 30
      haier_SoakPrewashTime: 0
      highWaterLevelStatus: 0
      intelligenceStatus: 0
      lockStatus: 0
      mainWashTime: 3
      nightWashStatus: 0
      operationName: grOnlineWash
      permanentPressStatus: 0
      prCode: 72
      purifiedWashStatus: 0
      rinseIterationTime: 3
      rinseIterations: 1
      soakWashStatus: 0
      speedUpStatus: 0
      spinSpeed: 1000
      strongStatus: 0
      temp: 0
      texture: 20
      uvSterilizationStatus: 0
      voiceStatus: 0
      washerDryIntensity: 1
      weight: 3
    remainingTimes:
      remainingTime: 15
  statistics:
    drumCleaning:
      count: 67
      percentage: 74
      remaining: 23
      tot: 90
    filterCleaning:
      count: 32
      percentage: 32
      remaining: 68
      tot: 100
    lastCheckup: 2023-03-12T10:29:47.874Z
    loadingPercentage:
      - current: None
        date: 2023-06-16T06:21:53.2Z
        max: 0.6
      - current: None
        date: 2023-06-16T06:08:49.4Z
        max: 0.6
      - current: None
        date: 2023-06-15T20:56:49Z
        max: 4.8
      - current: None
        date: 2023-06-15T20:56:49.7Z
        max: 4.8
      - current: None
        date: 2023-06-15T20:09:39Z
        max: 0.1
    mostUsedPrograms:
      - count: 15
        prCode: 77
        prPosition: 18
        programName: PROGRAMS.WM.undefined
        programType: W+D
      - count: 10
        prCode: 72
        prPosition: 2
        programName: PROGRAMS.WM_WD.HQD_QUICK_15
        programType: W+D
      - count: 9
        prCode: 116
        prPosition: 8
        programName: PROGRAMS.WM.undefined
        programType: W+D
      - count: 8
        prCode: 116
        prPosition: 8
        programName: PROGRAMS.WM_WD.HQD_SYNTHETIC_AND_COLOURED
        programType: W+D
      - count: 7
        prCode: 115
        prPosition: 7
        programName: PROGRAMS.WM.undefined
        programType: W+D
    programsCounter: 99
    resultCode: 0
    temperatureUsage:
      temp0to30: 33
      temp40: 22
      temp60to90: 12
  stopProgram:
    parameters:
      onOffStatus: 0
commands:
  settings:
    category:
      - setConfig
  startProgram:
    airWashPara10:
      - 30
    airWashPara11:
      - 55
    airWashPara12:
      - 30
    airWashPara13:
      - 5
    airWashPara15:
      - 45
    airWashPara16:
      - 30
    airWashPara19:
      - 50
    airWashPara2:
      - 80
    airWashPara21:
      - 160
    airWashPara24:
      - 10
    airWashPara27:
      - 10
    airWashPara3:
      - 85
    airWashPara31:
      - 1
    airWashPara36:
      - 0
      - 8
      - 10
    airWashPara4:
      - 95
    airWashPara5:
      - 30
    airWashPara6:
      - 10
    airWashPara7:
      - 180
    airWashPara9:
      - 150
    autoDetergentStatus:
      max: 1
      min: 0
      step: 1
    autoSoftenerStatus:
      max: 1
      min: 0
      step: 1
    delayStatus:
      max: 1
      min: 0
      step: 1
    delayTime:
      max: 1410
      min: 0
      step: 30
    dryLevel:
      - h1
      - h2
      - h3
    dryOption:
      max: 1
      min: 0
      step: 1
    dryProgFlag:
      max: 1
      min: 0
      step: 1
    dryTime:
      max: 7
      min: 0
      step: 1
    dryTimeMM:
      max: 210
      min: 0
      step: 30
    energyLabel:
      max: 5
      min: 3
      step: 1
    haier_SoakPrewashSelection:
      max: 2
      min: 0
      step: 2
    mainWashTime:
      max: 120
      min: 5
      step: 5
    program:
      - Bathrobes and Towels
      - hqd_20_degrees
      - hqd_autoclean
      - hqd_babycare
      - hqd_checkup
      - hqd_cottons
      - hqd_delicate
      - hqd_dry
      - hqd_duvet
      - hqd_eco_40_60_degrees
      - hqd_handwash_wool
      - hqd_i_refresh
      - hqd_mix
      - hqd_quick_15
      - hqd_rapid_wash_and_dry
      - hqd_rinse
      - hqd_shirts
      - hqd_smart
      - hqd_spin
      - hqd_sport
      - hqd_super_fast
      - hqd_synthetic_and_coloured
      - iot_dry_cotton_dry
      - iot_wash_anti_mites
      - iot_wash_anti_odor
      - iot_wash_ariel_clean_cycle
      - iot_wash_ariel_cold_cycle
      - iot_wash_ariel_fresh_cycle
      - iot_wash_baby_sanitizer
      - iot_wash_backpacks
      - iot_wash_bathrobe
      - iot_wash_bed_linen
      - iot_wash_bleaching
      - iot_wash_blood_stains
      - iot_wash_cashmere
      - iot_wash_chocolate_stains
      - iot_wash_cold_wash
      - iot_wash_colored
      - iot_wash_colored_anti_stain
      - iot_wash_colored_delicate
      - iot_wash_coloured
      - iot_wash_cotton
      - iot_wash_cuddly_toys
      - iot_wash_curtains
      - iot_wash_dark
      - iot_wash_delicate
      - iot_wash_delicate_antiallergy
      - iot_wash_delicate_colors
      - iot_wash_delicate_dark
      - iot_wash_delicate_tablecloths
      - iot_wash_delicate_whites
      - iot_wash_denim_jeans
      - iot_wash_diving_suits
      - iot_wash_down_jackets
      - iot_wash_fruit_stains
      - iot_wash_handwash
      - iot_wash_handwash_colored
      - iot_wash_handwash_dark
      - iot_wash_lingerie
      - iot_wash_masks_refresh
      - iot_wash_masks_sanification
      - iot_wash_mats
      - iot_wash_men_s_trousers
      - iot_wash_mixed
      - iot_wash_new_clothes
      - iot_wash_perfect_white
      - iot_wash_pets
      - iot_wash_pets_hair_removal
      - iot_wash_pets_odours_stains_removal
      - iot_wash_quick_drum_cleaner
      - iot_wash_rapid_14
      - iot_wash_rapid_30
      - iot_wash_rapid_44
      - iot_wash_rapid_59
      - iot_wash_resistant_colored
      - iot_wash_resistant_dark
      - iot_wash_resistant_whites
      - iot_wash_rinse
      - iot_wash_silk
      - iot_wash_ski_suit
      - iot_wash_spin
      - iot_wash_sport
      - iot_wash_swimsuits_and_bikinis
      - iot_wash_synthetic
      - iot_wash_tablecloths
      - iot_wash_technical_fabrics
      - iot_wash_technical_jackets
      - iot_wash_trainers
      - iot_wash_whites
      - iot_wash_wine_stains
      - iot_wash_wool
    programCluster:
      - traditional
      - eco
      - traditional_eco
    programFamily:
      - hidden
      - guided
      - dashboard
      - hidden_guided_dashboard
    remainingTime:
      max: 48
      min: 38
      step: 10
    rinseIterations:
      max: 5
      min: 0
      step: 1
    spinSpeed:
      - 0
      - 400
      - 600
      - 800
      - 1000
      - 1200
      - 1400
    temp:
      - 0
      - 20
      - 30
      - 40
      - 60
      - 90
rules:
  startProgram:
    dryLevel:
      H1:
        airWashPara1: 
        airWashPara10: 60
        airWashPara11: 45
        airWashPara12: 15
        airWashPara13: 10
        airWashPara14: 120
        airWashPara15: 45
        airWashPara16: 50
        airWashPara17: 5
        airWashPara18: 120
        airWashPara19: 60
        airWashPara2: 65
        airWashPara20: 10
        airWashPara21: 120
        airWashPara22: 12
        airWashPara23: 120
        airWashPara24: 8
        airWashPara25: 60
        airWashPara26: 30
        airWashPara27: 10
        airWashPara28: 64255
        airWashPara29: 64255
        airWashPara3: 70
        airWashPara30: 254
        airWashPara31: 10
        airWashPara32: 50
        airWashPara33: 55
        airWashPara34: 5
        airWashPara35: 120
        airWashPara36: 8
        airWashPara37: 
        airWashPara38: 
        airWashPara39: 
        airWashPara4: 85
        airWashPara40: 
        airWashPara5: 20
        airWashPara6: 3
        airWashPara7: 135
        airWashPara8: 90
        airWashPara9: 150
        cloudProgId: 442
        cloudProgSrc: 2
        remainingTime: 38
      H2:
        airWashPara1: 
        airWashPara10: 
        airWashPara11: 50
        airWashPara12: 30
        airWashPara13: 5
        airWashPara14: 120
        airWashPara15: 60
        airWashPara16: 30
        airWashPara17: 5
        airWashPara18: 120
        airWashPara19: 45
        airWashPara2: 65
        airWashPara20: 10
        airWashPara21: 120
        airWashPara22: 12
        airWashPara23: 120
        airWashPara24: 10
        airWashPara25: 60
        airWashPara26: 30
        airWashPara27: 
        airWashPara28: 64255
        airWashPara29: 64255
        airWashPara3: 70
        airWashPara30: 254
        airWashPara31: 6
        airWashPara32: 50
        airWashPara33: 55
        airWashPara34: 5
        airWashPara35: 120
        airWashPara36: 10
        airWashPara37: 
        airWashPara38: 
        airWashPara39: 
        airWashPara4: 70
        airWashPara40: 
        airWashPara5: 20
        airWashPara6: 3
        airWashPara7: 90
        airWashPara8: 90
        airWashPara9: 135
        cloudProgId: 393
        cloudProgSrc: 2
        remainingTime: 38
      H3:
        airWashPara1: 
        airWashPara10: 30
        airWashPara11: 55
        airWashPara12: 30
        airWashPara13: 5
        airWashPara14: 120
        airWashPara15: 45
        airWashPara16: 30
        airWashPara17: 5
        airWashPara18: 120
        airWashPara19: 50
        airWashPara2: 80
        airWashPara20: 10
        airWashPara21: 160
        airWashPara22: 12
        airWashPara23: 120
        airWashPara24: 10
        airWashPara25: 60
        airWashPara26: 30
        airWashPara27: 10
        airWashPara28: 64255
        airWashPara29: 64255
        airWashPara3: 85
        airWashPara30: 254
        airWashPara31: 1
        airWashPara32: 50
        airWashPara33: 55
        airWashPara34: 5
        airWashPara35: 120
        airWashPara36: 
        airWashPara37: 
        airWashPara38: 
        airWashPara39: 
        airWashPara4: 95
        airWashPara40: 
        airWashPara5: 30
        airWashPara6: 10
        airWashPara7: 180
        airWashPara8: 90
        airWashPara9: 150
        cloudProgId: 392
        cloudProgSrc: 2
        remainingTime: 48
    dryOption:
      0:
        dryLevel: 0
    dryTimeMM:
      0:
        dryTime: 0
      120:
        dryTime: 4
      150:
        dryTime: 5
      180:
        dryTime: 6
      210:
        dryTime: 7
      30:
        dryTime: 1
      60:
        dryTime: 2
      90:
        dryTime: 3
pyhOnVersion: 0.13.0