ESPHome component for JHS manufactured air conditioners

This is ESPHome component for air conditioners made by JHS (Dongguan Jinhongsheng Electric Co., Ltd.). These air conditioners are known under such brands as Timberk, Hyundai, Scoole, Lifetime Air, Goldair, Honeywell, Deltaco, Tronic and others.

Component allows you to control the air conditioner from Home Assistant. It works by using UART interface between Wi-Fi module and AC main board, and in this scheme ESP8266 or ESP32 are used as replacement for Wi-Fi module (even if AC unit does not have module out of the box).

You could check wiring instructions and list of supported/tested air conditioners on project GitHub repository.

Usage

You need to add three sections to your ESPHome device configuration YAML file. The first section will make able to use this component in your configuration:

external_components:
  - source: github://SNMetamorph/esphome-jhs-ac-component@master
    components: [ jhs_ac ]
    refresh: 0s

The second section is configuration of UART interface. It is mandatory for communicating between AC and ESPHome device:

uart:
  # ATTENTION! Use GPIO4 (D2) and GPIO5 (D1) as the TX and RX for NodeMCU-like boards.
  # If you decided to flash ESPHome firmware to built-in Wi-Fi module, it's up to you to determine correct GPIO pinout.
  tx_pin: D2
  rx_pin: D1
  baud_rate: 9600
  data_bits: 8
  parity: NONE
  stop_bits: 1

The third section is definition of your air conditioning device itself. Here, you should specify the device’s capabilities, model name, and protocol version. You can determine this through trial and error, or refer to the table of supported & tested air conditioners below.

climate:
  - platform: jhs_ac
    name: "Your AC model"
    protocol_version: 1 # available options are 1 & 2, select one that works correctly with your AC
    supported_modes: # add HEAT mode, if your unit supports it
      - COOL
      - DRY
      - FAN_ONLY
    supported_fan_modes: # add MEDIUM fan mode, if your unit supports it
      - LOW
      - HIGH
    supported_swing_modes: # add VERTICAL swing mode, if your unit supports it
    water_tank_status: # this will create binary sensor indicating internal water tank occupance
      name: Water Tank Status

You can also check /examples folder for existing ESPHome configurations for specific air conditioner models.

Credits

Project was made possible because of reverse-engineered JHS conditioners protocol specification made by @hutchx86.

1 Like