esphome / issues

Issue Tracker for ESPHome
https://esphome.io/
290 stars 34 forks source link

Climate Component not work with custom_presets via MQTT #3454

Closed SolarWind13 closed 1 year ago

SolarWind13 commented 2 years ago

The problem

Hello.

https://www.tindie.com/products/smartlightme/wifi-dongle-for-air-conditioners-midea-electrolux/ - i'm use this module with ESPHome for control my Midea-based air conditioner (IDEA ISR-12HR-MA0-DN1) via MQTT (i'm not use Home Assistant and cannot use api-method).

https://esphome.io/components/climate/midea.html - my configuration based on this example

Base control work with this MQTT-topics: midea-ac/climate/midea_ac_climate/mode/command - air conditioner work mode (OFF, FAN_ONLY, HEAT_COOL, COOL, HEAT, DRY) midea-ac/climate/midea_ac_climate/target_temperature/command - set target temperature (from 17 to 30 Celsius degree) midea-ac/climate/midea_ac_climate/fan_mode/command - fan speed (AUTO, HIGH, MEDIUM, LOW) midea-ac/climate/midea_ac_climate/swing_mode/command - swing control (VERTICAL, HORIZONTAL, BOTH)

And i'm cannot set via MQTT mode from custom_presets: custom_fan_modes:

https://esphome.io/components/climate/index.html - in MQTT options: not present topics for this modes.

How i can set this custom presets via MQTT?

In attach:

midea_002

midea_003

Which version of ESPHome has the issue?

2022.7.0-dev

What type of installation are you using?

pip

Which version of Home Assistant has the issue?

none

What platform are you using?

ESP8266

Board

iot-uni-dongle based on esp12e

Component causing the issue

climate midea

Example YAML snippet

substitutions:
  node_name: midea-ac
  node_id: midea_ac
  friendly_node_name: "Midea AC"

esphome:
  name: ${node_name}
  comment: ${friendly_node_name}
  platform: ESP8266
  board: esp12e
  name_add_mac_suffix: true
  project:
    name: "lizardsystems.midea_mini_dongle"
    version: "1.4.0"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  ap:
    ssid: "AC-wifi"
    password: "slwf01pro"

captive_portal:

dashboard_import:
  package_import_url: github://lizardsystems/midea-mini-dongle/edit/main/midea_ac.yaml

logger:
  baud_rate: 0
#  level: ERROR
  esp8266_store_log_strings_in_flash: false

ota:

web_server:
  port: 80
  css_url: ""
  js_url: "www.js"
  local: true
  version: 2

api:

uart:
  tx_pin: 1
  rx_pin: 3
  baud_rate: 9600

climate:
  - platform: midea
    name: ${friendly_node_name} Climate         # Use a unique name.
    id: ${node_id}_climate
    period: 1s                  # Optional
    timeout: 2s                 # Optional
    num_attempts: 3             # Optional
    autoconf: true              # Autoconfigure most options.
    beeper: true                # Beep on commands.
    visual:                     # Optional. Example of visual settings override.
      min_temperature: 17 °C    # min: 17
      max_temperature: 30 °C    # max: 30
      temperature_step: 0.5 °C  # min: 0.5
    supported_modes:            # All capabilities in this section detected by autoconf.
      - FAN_ONLY                # This capability is always used.
      - HEAT_COOL
      - COOL
      - HEAT
      - DRY
    custom_fan_modes:
      - SILENT
      - TURBO
    supported_presets:          # All capabilities in this section detected by autoconf.
      - ECO
      - BOOST
      - SLEEP                   # This capability is always used.
    custom_presets:             # All capabilities in this section detected by autoconf.
      - FREEZE_PROTECTION
    supported_swing_modes:
      - VERTICAL                # This capability is always used.
      - HORIZONTAL
      - BOTH
    power_usage:                # Optional. Outdoor temperature sensor (may display incorrect values after long inactivity).
      name: "${friendly_node_name} Power Usage" 
      id: ${node_id}_power_usage
    outdoor_temperature:        # Optional. Power usage sensor (only for devices that support this feature).
      name: "${friendly_node_name} Outdoor Temperature"
      id: ${node_id}_outdoor_temperature
    humidity_setpoint:          # Optional. Indoor humidity sensor (only for devices that support this feature).
      name: "${friendly_node_name} Humidity"

switch:
  - platform: template
    name: ${friendly_node_name} Beeper
    icon: mdi:volume-source
    restore_state: true
    optimistic: true
    turn_on_action:
      midea_ac.beeper_on:
    turn_off_action:
      midea_ac.beeper_off:

binary_sensor:
  - platform: status
    name: ${friendly_node_name} Connection Status
    id: ${node_id}_connection_status

text_sensor:
  - platform: template
    name: Uptime Human Readable
    id: uptime_human
    icon: mdi:clock-start

  - platform: version
    name: ${friendly_node_name} ESPHome Version
    id: ${node_id}_esphome_version    

  - platform: wifi_info
    ip_address:
      name: ${friendly_node_name} IP Address
      id: ${node_id}_ip_address
      icon: mdi:ip-network

sensor:
  - platform: uptime
    name: Uptime Sensor
    id: uptime_sensor
    update_interval: 60s
    on_raw_value:
      then:
        - text_sensor.template.publish:
            id: uptime_human
            state: !lambda |-
              int seconds = round(id(uptime_sensor).raw_state);
              int days = seconds / (24 * 3600);
              seconds = seconds % (24 * 3600);
              int hours = seconds / 3600;
              seconds = seconds % 3600;
              int minutes = seconds /  60;
              seconds = seconds % 60;
              return (
                (days ? to_string(days) + "d " : "") +
                (hours ? to_string(hours) + "h " : "") +
                (minutes ? to_string(minutes) + "m " : "") +
                (to_string(seconds) + "s")
              ).c_str();
  - platform: wifi_signal
    name: ${friendly_node_name} WiFi Signal
    id: ${node_id}_wifi_signal
    update_interval: 60s

button:
  - platform: restart
    name: ${friendly_node_name} Restart
    id: ${node_id}_restart
    icon: "mdi:restart"
  - platform: shutdown
    name: ${friendly_node_name} Shutdown
    id: ${node_id}_shutdown
  - platform: safe_mode
    name: ${friendly_node_name} Restart (Safe Mode)"
    id: ${node_id}_safe_mode

# Example configuration entry
mqtt:
  broker: 192.168.112.200
  username: my_mqtt_login
  password: my_mqtt_password

Anything in the logs that might be useful for us?

INFO Starting log output from midea-ac.local using esphome API
INFO Successfully connected to midea-ac.local
[09:37:47][I][app:102]: ESPHome version 2022.7.0-dev compiled on Jul 18 2022, 19:58:39
[09:37:47][I][app:104]: Project lizardsystems.midea_mini_dongle version 1.4.0
[09:37:47][C][wifi:491]: WiFi:
[09:37:47][C][wifi:353]:   Local MAC: CC:50:E3:77:47:90
[09:37:47][C][wifi:354]:   SSID: [redacted]
[09:37:47][C][wifi:355]:   IP Address: 192.168.115.75
[09:37:47][C][wifi:356]:   BSSID: [redacted]
[09:37:47][C][wifi:358]:   Hostname: 'midea-ac-774790'
[09:37:47][C][wifi:360]:   Signal strength: -59 dB ▂▄▆█
[09:37:47][C][wifi:364]:   Channel: 11
[09:37:47][C][wifi:365]:   Subnet: 255.255.255.0
[09:37:47][C][wifi:366]:   Gateway: 192.168.115.254
[09:37:47][C][wifi:367]:   DNS1: 192.168.115.254
[09:37:47][C][wifi:368]:   DNS2: 0.0.0.0
[09:37:47][C][logger:275]: Logger:
[09:37:47][C][logger:276]:   Level: DEBUG
[09:37:47][C][logger:277]:   Log Baud Rate: 0
[09:37:47][C][logger:278]:   Hardware UART: UART0
[09:37:47][C][uart.arduino_esp8266:102]: UART Bus:
[09:37:47][C][uart.arduino_esp8266:103]:   TX Pin: GPIO1
[09:37:47][C][uart.arduino_esp8266:104]:   RX Pin: GPIO3
[09:37:47][C][uart.arduino_esp8266:106]:   RX Buffer Size: 256
[09:37:47][C][uart.arduino_esp8266:108]:   Baud Rate: 9600 baud
[09:37:47][C][uart.arduino_esp8266:109]:   Data Bits: 8
[09:37:47][C][uart.arduino_esp8266:110]:   Parity: NONE
[09:37:48][C][uart.arduino_esp8266:111]:   Stop bits: 1
[09:37:48][C][template.switch:058]: Template Switch 'Midea AC Beeper'
[09:37:48][C][template.switch:058]:   Icon: 'mdi:volume-source'
[09:37:48][C][template.switch:059]:   Restore State: YES
[09:37:48][C][template.switch:060]:   Optimistic: YES
[09:37:48][C][template.text_sensor:021]: Template Sensor 'Uptime Human Readable'
[09:37:48][C][template.text_sensor:021]:   Icon: 'mdi:clock-start'
[09:37:48][C][uptime.sensor:031]: Uptime Sensor 'Uptime Sensor'
[09:37:48][C][uptime.sensor:031]:   State Class: 'total_increasing'
[09:37:48][C][uptime.sensor:031]:   Unit of Measurement: 's'
[09:37:48][C][uptime.sensor:031]:   Accuracy Decimals: 0
[09:37:48][C][uptime.sensor:031]:   Icon: 'mdi:timer-outline'
[09:37:48][C][status:034]: Status Binary Sensor 'Midea AC Connection Status'
[09:37:48][C][status:034]:   Device Class: 'connectivity'
[09:37:48][C][version.text_sensor:021]: Version Text Sensor 'Midea AC ESPHome Version'
[09:37:48][C][version.text_sensor:021]:   Icon: 'mdi:new-box'
[09:37:48][C][restart.button:017]: Restart Button 'Midea AC Restart'
[09:37:48][C][restart.button:017]:   Icon: 'mdi:restart'
[09:37:48][C][shutdown.button:018]: Shutdown Button 'Midea AC Shutdown'
[09:37:48][C][shutdown.button:018]:   Icon: 'mdi:power'
[09:37:48][C][safe_mode.button:022]: Safe Mode Button 'Midea AC Restart (Safe Mode)"'
[09:37:48][C][safe_mode.button:022]:   Icon: 'mdi:restart-alert'
[09:37:48][D][sensor:124]: 'Midea AC WiFi Signal': Sending state -58.00000 dBm with 0 decimals of accuracy
[09:37:48][C][captive_portal:088]: Captive Portal:
[09:37:48][C][web_server:125]: Web Server:
[09:37:48][C][web_server:126]:   Address: midea-ac.local:80
[09:37:48][C][midea:103]: MideaDongle:
[09:37:48][C][midea:104]:   [x] Period: 1000ms
[09:37:48][C][midea:105]:   [x] Response timeout: 2000ms
[09:37:48][C][midea:106]:   [x] Request attempts: 3
[09:37:48][C][Capabilities:279]: CAPABILITIES REPORT:
[09:37:48][C][Capabilities:281]:   [x] AUTO MODE
[09:37:48][C][Capabilities:282]:       - MIN TEMP: 17.0
[09:37:48][C][Capabilities:283]:       - MAX TEMP: 30.0
[09:37:48][C][Capabilities:286]:   [x] COOL MODE
[09:37:48][C][Capabilities:287]:       - MIN TEMP: 17.0
[09:37:48][C][Capabilities:288]:       - MAX TEMP: 30.0
[09:37:48][C][Capabilities:291]:   [x] HEAT MODE
[09:37:48][C][Capabilities:292]:       - MIN TEMP: 17.0
[09:37:48][C][Capabilities:293]:       - MAX TEMP: 30.0
[09:37:48][C][Capabilities:295]:   [x] DRY MODE
[09:37:48][C][Capabilities:296]:   [x] ECO MODE
[09:37:48][C][Capabilities:298]:   [x] FROST PROTECTION MODE
[09:37:48][C][Capabilities:299]:   [x] TURBO COOL
[09:37:48][C][Capabilities:300]:   [x] TURBO HEAT
[09:37:48][C][Capabilities:301]:   [x] FANSPEED CONTROL
[09:37:48][C][Capabilities:304]:   [x] UPDOWN FAN
[09:37:48][C][Capabilities:305]:   [x] LEFTRIGHT FAN
[09:37:48][C][midea:538]: ClimateTraits:
[09:37:48][C][midea:552]:       - HEAT_COOL
[09:37:48][C][midea:552]:       - COOL
[09:37:48][C][midea:552]:       - HEAT
[09:37:48][C][midea:552]:       - FAN_ONLY
[09:37:48][C][midea:552]:       - DRY
[09:37:48][C][midea:555]:   [x] Supported fan modes:
[09:37:48][C][midea:557]:       - AUTO
[09:37:48][C][midea:557]:       - LOW
[09:37:48][C][midea:557]:       - MEDIUM
[09:37:48][C][midea:557]:       - HIGH
[09:37:48][C][midea:560]:   [x] Supported custom fan modes:
[09:37:48][C][midea:562]:       - silent
[09:37:48][C][midea:562]:       - turbo
[09:37:48][C][midea:565]:   [x] Supported presets:
[09:37:48][C][midea:567]:       - NONE
[09:37:48][C][midea:567]:       - BOOST
[09:37:48][C][midea:567]:       - ECO
[09:37:48][C][midea:567]:       - SLEEP
[09:37:48][C][midea:570]:   [x] Supported custom presets:
[09:37:48][C][midea:572]:       - freeze protection
[09:37:48][C][midea:575]:   [x] Supported swing modes:
[09:37:48][C][midea:577]:       - OFF
[09:37:48][C][midea:577]:       - BOTH
[09:37:48][C][midea:577]:       - VERTICAL
[09:37:48][C][midea:577]:       - HORIZONTAL
[09:37:48][C][mdns:084]: mDNS:
[09:37:48][C][mdns:085]:   Hostname: midea-ac-774790
[09:37:48][C][ota:085]: Over-The-Air Updates:
[09:37:48][C][ota:086]:   Address: midea-ac.local:8266
[09:37:48][D][binary_sensor:036]: 'Midea AC Connection Status': Sending state OFF
[09:37:48][W][mqtt:264]: MQTT Disconnected: TCP disconnected.
[09:37:48][I][mqtt:176]: Connecting to MQTT...
[09:37:48][C][api:138]: API Server:
[09:37:48][C][api:139]:   Address: midea-ac.local:6053
[09:37:48][C][api:143]:   Using noise encryption: NO
[09:37:48][C][mqtt:065]: MQTT:
[09:37:48][C][mqtt:066]:   Server Address: 192.168.112.200:1883 (192.168.112.200)
[09:37:48][C][mqtt:068]:   Username: [redacted]
[09:37:48][C][mqtt:069]:   Client ID: [redacted]
[09:37:48][C][mqtt:071]:   Discovery prefix: 'homeassistant'
[09:37:48][C][mqtt:072]:   Discovery retain: YES
[09:37:48][C][mqtt:074]:   Topic Prefix: 'midea-ac'
[09:37:48][C][mqtt:076]:   Log Topic: 'midea-ac/debug'
[09:37:48][C][mqtt:079]:   Availability: 'midea-ac/status'
[09:37:48][C][wifi_info:009]: WifiInfo IPAddress 'Midea AC IP Address'
[09:37:48][C][wifi_info:009]:   Icon: 'mdi:ip-network'
[09:37:48][C][wifi_signal.sensor:009]: WiFi Signal 'Midea AC WiFi Signal'
[09:37:48][C][wifi_signal.sensor:009]:   Device Class: 'signal_strength'
[09:37:48][C][wifi_signal.sensor:009]:   State Class: 'measurement'
[09:37:48][C][wifi_signal.sensor:009]:   Unit of Measurement: 'dBm'
[09:37:48][C][wifi_signal.sensor:009]:   Accuracy Decimals: 0
[09:37:48][I][mqtt:216]: MQTT Connected!

Additional information

No response

metaljay commented 2 years ago

Just to add, I also have the same dongle and have same error :)

github-actions[bot] commented 1 year ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.