Gree Climate Split Unit with Modbus Configuration

It took me ages to finally get the correct configuration to be able to control our office’s AC that consists of a gree outdoor unit and several ceiling-mounted units via modbus. I thought I’d share my config here in case that anyone is searching for the same thing.

You need to find out which ceiling unit is which by just trying it out and seeing which unit turns on, AFAIK there is no real system as to in which order they are recognized.

- name: gree_climate
  type: serial
  method: rtu
  port: /dev/ttyUSB0 # Check if this is correct for your setup
  baudrate: 9600
  bytesize: 8
  parity: N
  stopbits: 1
  delay: 2
  message_wait_milliseconds: 200
  climates:
    - name: "Climate Unit 01" # ID 1
      unique_id: climate_unit_01
      slave: 14 # Address of the Modbus gateway
      input_type: holding
      data_type: uint16

      write_registers: true

      # Current temperatue (Word 116)
      address: 141 #116 + 25

      # Target temperature (Word 104)
      target_temp_write_registers: true
      target_temp_register: 129 #104 + 25

      temperature_unit: C
      min_temp: 16
      max_temp: 30
      temp_step: 1
      scale: 0.1 # Value is TrueValue * 10, so scaling 0.1 for both temperatures

      # Turn on/off (Word 102)
      hvac_onoff_register: 127 #102 + 25
      hvac_on_value: 0xAA
      hvac_off_value: 0x55

      hvac_mode_register:
        address: 128 #103 + 25
        write_registers: true
        values:
          state_fan_only: 3
          state_cool: 1
          state_heat: 4
          state_dry: 2
    - name: "Climate Unit 02" # ID 0
      unique_id: climate_unit_02
      slave: 14 # Address of the Modbus gateway
      input_type: holding
      data_type: uint16

      write_registers: true

      # Current temperature (Word 116)
      address: 116 #116 + 0 * 25

      # Target temperature (Word 104)
      target_temp_write_registers: true
      target_temp_register: 104 #104 + 0 * 25

      temperature_unit: C
      min_temp: 16
      max_temp: 30
      temp_step: 1
      scale: 0.1 # Value is TrueValue * 10, so scaling 0.1 for both temperatures

      # Turn on/off (Word 102)
      hvac_onoff_register: 102 #102 + 0 * 25
      hvac_on_value: 0xAA
      hvac_off_value: 0x55

      hvac_mode_register:
        address: 103 #103 + 0 * 25
        write_registers: true
        values:
          state_fan_only: 3
          state_cool: 1
          state_heat: 4
          state_dry: 2
    - name: "Climate Unit 03" # ID 2
      unique_id: climate_unit_03
      slave: 14 # Address of the Modbus gateway
      input_type: holding
      data_type: uint16

      write_registers: true

      # Current temperature (Word 116)
      address: 166 #116 + 2 * 25

      # Target temperature (Word 104)
      target_temp_write_registers: true
      target_temp_register: 154 #104 + 2 * 25

      temperature_unit: C
      min_temp: 16
      max_temp: 30
      temp_step: 1
      scale: 0.1 # Value is TrueValue * 10, so scaling 0.1 for both temperatures

      # Turn on/off (Word 102)
      hvac_onoff_register: 152 #102 + 2 * 25
      hvac_on_value: 0xAA
      hvac_off_value: 0x55

      hvac_mode_register:
        address: 153 #103 + 2 * 25
        write_registers: true
        values:
          state_fan_only: 3
          state_cool: 1
          state_heat: 4
          state_dry: 2
1 Like

Thank you very much for this work. It helped me to reduce the time!

Could you tell me how to control the speed of the fans in these air conditioners?

In my config, I added:

     fan_mode_register:
          address: 230  # 105+5 * 25 
          values:
            state_fan_auto: 0
            state_fan_low: 1
            state_fan_medium: 2
            state_fan_high: 3

But the air conditioner does not respond to the speed setting from Home Assistant.
What am I doing wrong?