Gree Versati III Air to water heat pump

Yes, that’s right. The connector is on the back of the LCD. All you have to do is remove the panel from the chassis and open the cover.

Personally, I had a communication problem so I tried to connect to the modbus converter and the GND that is used for the LCD with no result. Still no communication and I don’t know where the problem is.

I still thought of using the 12v power supply of the LCD panel to power the wemos through the step-down converter. But I think the common ground of LCD and modbus converter A,B,GND should be enough.

Does anyone have any verified addresses of e.g. sensors that work in esphome? I still think I have the wrong address format. It’s not clear to me from the datasheet what it should look like.
I would be glad for any verified address to try so I can rule out an address problem and focus on the hardware.

I will be glad for sharing the full code in esphome and a link to the modbus converter used. I have tried several types and the same result…

1 Like

And I’ve got another problem to solve, maybe someone has already solved it.

I have a classic problem with smart PID thermoheads with stepless control and a heat pump.

When my 3/4 heads close the heat pump writes a flow error.
I found that Gree only has a reed sensor as a pressure sensor and it also responds to pressure surges when the heads close.

I know it is not recommended to use smart heads but I believe this can be solved and optimized.

Has anyone solved this problem?

That would work only if you have a buffer water tank.
As you said, it is not recomemded to use smart heads with a heat pump. It’s a big waste of energy.

@Pecator Are you completely sure, that is your model and protocol? Because for Different Versati III, there are different communications as well independent of model. Can you make picture of label on Versati?

Regards

I ordered a pressure sensor to know the readings and then plan to install adjustable relief valves…

It is a Gree Versati III GRS-CQ10Pd/NhH-E 10kw model. I just have the wrong label that says 8kw but it’s actually 10kw…




Hi all. I have Gree Versati 2+, firmware version 1.2, protocol version 1.5. Perhaps someone has documentation on the modbus protocol for Gree Versati 2+? The document that was posted above also has version 1.5 but is related to Gree Versati 3. I managed almost all functions thanks to this document, but some registers / coils still do not work. I would be grateful for modbus documents for Versati 2 of any version, thanks!

Okay, have you know that the CH, Gree, Electrolux asambles in one factory ? All their Heat Pumps (Air to Water) are pretty the same. So I just google for CH documentation and found one, that is exatly fit to my gree versati 2+ modbus communication.

1 Like

Hi, can you please share your working esphome yaml? And what converter do you use for modbus and what is your wiring?
Thank you!

Hi! Actually I’ve used the node-red solution, that I’ve run on Debian Os. I can share my node-red flow if needed.

I’ll just need the working modbus addresses you’re using.
I would also be grateful for the exact type of converter you are using.

I got the datasheet from the manufacturer directly for my heat pump…

Regarding converter, I think any uart ttl converter will fit. In my case it is FT232 + MAX485 since I have only USB I\O. But in case of clear UART - MAX485 will be enough.
So I use:

But for UART it will be enough something like that:

And then just connect A\B of your board to indoor controller:

For addressing, you should look at the documentation. It’s good that the manufacturer gave it to you directly. I set the modbus address to 1 (in the heat pump controller menu) and then just read/write the parameters via my controller.

To write single register (On \ Off in exampale):

    msg.payload = {
        value: msg.payload, // 0xAA 
        'fc': 6,
        'unitid': 1,
        'address': 1,
        'quantity': 1
    } 

To read multipl registers (0 - 40 in example):

    msg.payload = {
        'fc': 3, // functional code
        'unitid': 1,
        'address': 0,
        'quantity': 40
    } 

To read coils (bits):

    msg.payload = {
        'fc': 1, // functional code
        'unitid': 1,
        'address': 0,
        'quantity': 200
    } 

To write single coil:

    msg.payload = {
        value: true, // Enable
        'fc': 5,
        'unitid': 1,
        'address': 33, // Remote room t sensor
        'quantity': 1
    } 

Can you maybe help on the device side connection?
I can not find this plug thingy maybe on aliexpress?
Thanks

Use simple Arduino cables for connection

1 Like

Just in case it helps you to find out where you can find the modbus connection slot in your Gree Versati 3…


Once you unscrew the four screws you will be able to find an available slot to connect your Modbus connector. I use an internet UTP or signalization cable wires for the A/B wires connection and
a USB to RS485 485 Converter Adapter (USB to RS485 485 Converter Adapter) to connect the Gree Versati 3 Modbus slot (1) with my HomeAssistant computer via USB.
See slot 1
Using this connection I am able to operate my Gree Versati 3 via HomeAssistant completely.

2 Likes

Here is the settings for my Gree Versati3 heat pump…

in configuration.yaml

....
modbus:
  - name: versati3_hub
    type: serial
    baudrate: 9600
    bytesize: 8
    method: rtu
    parity: N
    port: /dev/ttyUSB0
    stopbits: 1
    retry_on_empty: true

    sensors:
      - name: "Gree Optional E-Heater"
        unique_id: gree_optional_e_heater
        scan_interval: 10
        slave: 1
        address: 3
        count: 1
        scale: 1
        offset: 0
        precision: 0
        input_type: holding
        data_type: uint16
        state_class: measurement

      - name: "Gree Disinfection Setpoint Temperature"
        unique_id: gree_disinfection_setpoint_temperature
        scan_interval: 10
        slave: 1
        address: 4
        unit_of_measurement: °C
        count: 1
        scale: 1
        offset: 0
        precision: 0
        input_type: holding
        data_type: uint16
        state_class: measurement
        device_class: temperature

      - name: "Gree Leaving Water Setpoint Temperature"
        unique_id: gree_leaving_water_setpoint_temperature
        scan_interval: 10
        slave: 1
        address: 10
        unit_of_measurement: °C
        count: 1
        scale: 1
        offset: 0
        precision: 0
        input_type: holding
        data_type: uint16
        state_class: measurement
        device_class: temperature

      # - name: "Gree Room Sensor Setpoint Temperature"
      #   unique_id: gree_room_sensor_setpoint_temperature
      #   scan_interval: 10
      #   slave: 1
      #   address: 12
      #   unit_of_measurement: °C
      #   count: 1
      #   scale: 1
      #   offset: 0
      #   precision: 0
      #   input_type: holding
      #   data_type: uint16
      #   state_class: measurement
      #   device_class: temperature

      - name: "Gree HotWater Tank Setpoint Temperature"
        unique_id: gree_hotwater_tank_setpoint_temperature
        scan_interval: 10
        slave: 1
        address: 13
        unit_of_measurement: °C
        count: 1
        scale: 1
        offset: 0
        precision: 0
        input_type: holding
        data_type: uint16
        state_class: measurement
        device_class: temperature

      - name: "Gree Ambient Upper Setpoint Temperature"
        unique_id: gree_ambient_upper_setpoint_temperature
        scan_interval: 10
        slave: 1
        address: 17
        unit_of_measurement: °C
        count: 1
        scale: 1
        offset: 0
        precision: 0
        input_type: holding
        data_type: uint16
        state_class: measurement
        device_class: temperature

      - name: "Gree Ambient Lower Setpoint Temperature"
        unique_id: gree_ambient_lower_setpoint_temperature
        scan_interval: 10
        slave: 1
        address: 18
        unit_of_measurement: °C
        count: 1
        scale: 1
        offset: 0
        precision: 0
        input_type: holding
        data_type: int16
        state_class: measurement
        device_class: temperature

      - name: "Gree Leaving Water Upper Setpoint Temperature"
        unique_id: gree_leaving_water_upper_setpoint_temperature
        scan_interval: 10
        slave: 1
        address: 21
        unit_of_measurement: °C
        count: 1
        scale: 1
        offset: 0
        precision: 0
        input_type: holding
        data_type: uint16
        state_class: measurement
        device_class: temperature

      - name: "Gree Leaving Water Lower Setpoint Temperature"
        unique_id: gree_leaving_water_lower_setpoint_temperature
        scan_interval: 10
        slave: 1
        address: 22
        unit_of_measurement: °C
        count: 1
        scale: 1
        offset: 0
        precision: 0
        input_type: holding
        data_type: uint16
        state_class: measurement
        device_class: temperature

      - name: "Gree Delta T Heat Setpoint Temperature"
        unique_id: gree_delta_t_heat_setpoint_temperature
        scan_interval: 10
        slave: 1
        address: 30
        unit_of_measurement: °C
        count: 1
        scale: 1
        offset: 0
        precision: 0
        input_type: holding
        data_type: uint16
        state_class: measurement
        device_class: temperature

      - name: "Gree Delta T Hot Water Setpoint Temperature"
        unique_id: gree_delta_t_hot_water_setpoint_temperature
        scan_interval: 10
        slave: 1
        address: 31
        unit_of_measurement: °C
        count: 1
        scale: 1
        offset: 0
        precision: 0
        input_type: holding
        data_type: uint16
        state_class: measurement
        device_class: temperature

      - name: "Gree Thermostat Mode Digital"
        unique_id: gree_thermostat_mode_digital      
        address: 39
        scan_interval: 10
        slave: 1
        input_type: holding        
        data_type: uint16        

      - name: "Gree Unit Status Digital"
        unique_id: gree_unit_status_digital
        scan_interval: 10
        slave: 1
        address: 117
        count: 1
        offset: 0
        input_type: holding        
        data_type: uint16

      - name: "Gree Outside Temperature"
        unique_id: gree_outside_temperature
        scan_interval: 10
        slave: 1
        address: 118
        unit_of_measurement: °C
        count: 1
        scale: 0.1
        offset: 0
        precision: 1
        input_type: holding        
        data_type: int16
        state_class: measurement
        device_class: temperature

      - name: "Gree Water Out PE Temperature"
        unique_id: gree_water_out_pe_temperature
        scan_interval: 10
        slave: 1
        address: 125
        unit_of_measurement: °C
        count: 1
        scale: 0.1
        offset: 0
        precision: 1
        input_type: holding
        data_type: uint16
        state_class: measurement
        device_class: temperature

      - name: "Gree T-optional water sen"
        unique_id: gree_t_optional_water_sen      
        scan_interval: 10
        slave: 1
        address: 126
        unit_of_measurement: °C
        count: 1
        scale: 0.1
        offset: 0
        precision: 1
        input_type: holding        
        data_type: uint16
        state_class: measurement
        device_class: temperature

      - name: "Gree Water In PE Temperature"
        unique_id: gree_water_in_pe_temperature      
        scan_interval: 10
        slave: 1
        address: 127
        unit_of_measurement: °C
        count: 1
        scale: 0.1
        offset: 0
        precision: 1
        input_type: holding        
        data_type: uint16
        state_class: measurement
        device_class: temperature

      - name: "Gree Water Tank Temperature"
        unique_id: gree_water_tank_temperature      
        scan_interval: 10
        slave: 1
        address: 128
        unit_of_measurement: °C
        count: 1
        scale: 0.1
        offset: 0
        precision: 1
        input_type: holding        
        data_type: uint16
        state_class: measurement
        device_class: temperature

      - name: "Gree Room Sensor Temperature"
        unique_id: gree_room_sensor_temperature      
        scan_interval: 10
        slave: 1
        address: 129
        unit_of_measurement: °C
        count: 1
        scale: 0.1
        offset: 0
        precision: 1
        input_type: holding        
        data_type: uint16
        state_class: measurement
        device_class: temperature

      - name: "Gree Thermostat Status Digital"
        unique_id: gree_thermostat_status_digital      
        scan_interval: 10
        slave: 1
        address: 132
        count: 1
        offset: 0
        input_type: holding        
        data_type: uint16

      - name: "Gree Disinfection Status Digital"
        unique_id: gree_disinfection_status_digital
        scan_interval: 10
        slave: 1
        address: 135
        count: 1
        offset: 0
        input_type: holding        
        data_type: uint16          

      - name: "Gree T-Weather Depend"
        unique_id: gree_t_weather_depend      
        scan_interval: 10
        slave: 1
        address: 137
        unit_of_measurement: °C
        count: 1
        scale: 1
        offset: 0
        precision: 0
        input_type: holding        
        data_type: uint16
        state_class: measurement
        device_class: temperature
  
    binary_sensors:
      - name: "Gree Weather Dependent State"
        unique_id: gree_weather_dependent_state      
        address: 22
        scan_interval: 10
        slave: 1
        input_type: coil

      - name: "Gree Heat 2Way Valve State"
        unique_id: gree_heat_2way_valve_state
        address: 38
        scan_interval: 10
        slave: 1
        input_type: coil

      - name: "Gree Compressor State"
        unique_id: gree_compressor_state      
        address: 80
        scan_interval: 10
        slave: 1
        input_type: coil

      - name: "Gree Fan State"
        unique_id: gree_fan_state      
        address: 81
        scan_interval: 10
        slave: 1
        input_type: coil        

      - name: "Gree 4way Valve State"
        unique_id: gree_4way_valve_state      
        address: 83 
        scan_interval: 10
        slave: 1
        input_type: coil        

      - name: "Gree Compressor Crankcase Heater State"
        unique_id: gree_compressor_crankcase_heater_state      
        address: 84 
        scan_interval: 10
        slave: 1
        input_type: coil  

      - name: "Gree Underpan Heater State"
        unique_id: gree_gree_underpan_heater_state      
        address: 85 
        scan_interval: 10
        slave: 1
        input_type: coil  

      - name: "Gree Defrosting State"
        unique_id: gree_defrosting_state      
        address: 86 
        scan_interval: 10
        slave: 1
        input_type: coil  

      - name: "Gree Oil Return State"
        unique_id: gree_oil_return_state      
        address: 87 
        scan_interval: 10
        slave: 1
        input_type: coil  

      - name: "Gree Flow Switch State"
        unique_id: gree_flow_switch_state      
        address: 170
        scan_interval: 10
        slave: 1
        input_type: coil  

      - name: "Gree E_heater1 State"
        unique_id: gree_e_heater1_state      
        address: 171
        scan_interval: 10
        slave: 1
        input_type: coil  

      - name: "Gree E_heater2 State"
        unique_id: gree_e_heater2_state      
        address: 172
        scan_interval: 10
        slave: 1
        input_type: coil  

      - name: "Gree Water Pump State"
        unique_id: gree_water_pump_state      
        address: 175
        scan_interval: 10
        slave: 1
        input_type: coil  

      - name: "Gree Circulating 2way Valve State"
        unique_id: gree_circulating_2way_valve_state      
        address: 176
        scan_interval: 10
        slave: 1
        input_type: coil  

      - name: "Gree Plate Heater State"
        unique_id: gree_plate_heater_state      
        address: 177
        scan_interval: 10
        slave: 1
        input_type: coil  

      - name: "Gree 3way Valve State"
        unique_id: gree_3way_valve_state      
        address: 178
        scan_interval: 10
        slave: 1
        input_type: coil  

    switches:
      - name: "Gree Heat+HotWater Or HotWaterOnly Mode"
        unique_id: gree_heat_hotwater_mode      
        slave: 1
        address: 2
        command_on: 4   #Heat+HotWater Mode
        command_off: 2  #HotWater_only Mode
        scan_interval: 10
        write_type: holding          
        verify:
            input_type: holding
            address: 2
            state_on: 4    #Heat+HotWater Mode
            state_off: 2   #HotWater_only Mode 

      - name: "Gree Temperature Control Mode"
        unique_id: gree_temperature_control_mode      
        slave: 1
        address: 17
        command_on: 1  #Use Room sensor temperature
        command_off: 0 #Use Leaving water temperature
        scan_interval: 10
        write_type: coil
        verify:
            input_type: coil
            address: 17
            state_on: 1
            state_off: 0

      - name: "Gree Fast HotWater Mode"
        unique_id: gree_fast_hotwater_mode      
        slave: 1
        address: 18
        command_on: 1
        command_off: 0
        scan_interval: 10
        write_type: coil
        verify:
            input_type: coil
            address: 18
            state_on: 1
            state_off: 0

      - name: "Gree Heat HotWater Priority"
        unique_id: gree_heat_hotwater_priority      
        slave: 1
        address: 20
        command_on: 1 #HotWater
        command_off: 0 #Heat
        scan_interval: 10
        write_type: coil
        verify:
            input_type: coil
            address: 20
            state_on: 1 #HotWater
            state_off: 0 #Heat

      - name: "Gree Quite Mode"
        unique_id: gree_quite_mode      
        slave: 1
        address: 21
        command_on: 1
        command_off: 0
        scan_interval: 10
        write_type: coil
        verify:
            input_type: coil
            address: 21
            state_on: 1
            state_off: 0

      - name: "Gree Weather Depend Mode" 
        unique_id: gree_weather_depend_mode      
        slave: 1
        address: 22
        command_on: 1
        command_off: 0
        scan_interval: 10
        write_type: coil
        verify:
            input_type: coil
            address: 22
            state_on: 1
            state_off: 0            

      - name: "Gree Disinfection Mode"
        unique_id: gree_disinfection_mode      
        slave: 1
        address: 23
        command_on: 1
        command_off: 0
        scan_interval: 10
        write_type: coil
        verify:
            input_type: coil
            address: 23
            state_on: 1
            state_off: 0   

      - name: "Gree On/OFF"
        unique_id: gree_on_off
        slave: 1
        address: 42
        command_on: 0xAA
        command_off: 0x55
        scan_interval: 10
        write_type: holding
        verify:
            input_type: holding
            address: 42
            state_on: 0xAA
            state_off: 0x55

      - name: "Gree Thermostat"
        unique_id: gree_thermostat
        slave: 1
        address: 39
        command_on: 2 # Air+hot water mode
        command_off: 0
        scan_interval: 10
        write_type: holding        
        verify:
            input_type: holding
            address: 39
            state_on: 2 # Air+hot water mode
            state_off: 0  

I do not use the modbus Climate sensors as they do not allow you to work with negative temperature values (at least for now). Instead, I use regular sensors to get values from Gree modbus registers and the input_number sensors to keep and modify modbus values in HA.

in configuration.yaml

....
input_number:
  gree_room_sensor_temperature:
    name: gree_room_sensor_temperature
    min: -50
    max: 50
    step: 0.1
    mode: box            
    icon: mdi:thermometer
    unit_of_measurement: '°C'

  gree_outside_temperature: 
    name: gree_outside_temperature
    min: -50
    max: 50
    step: 0.1
    mode: box            
    icon: mdi:thermometer
    unit_of_measurement: '°C'      

  gree_leaving_water_setpoint_temperature: 
    name: gree_leaving_water_setpoint_temperature
    min: 20
    max: 55
    step: 1
    mode: box            
    icon: mdi:thermometer
    unit_of_measurement: '°C'      

  gree_leaving_water_upper_setpoint_temperature: 
    name: gree_leaving_water_upper_setpoint_temperature
    min: 46
    max: 55
    step: 1
    mode: box            
    icon: mdi:thermometer
    unit_of_measurement: '°C'      

  gree_leaving_water_lower_setpoint_temperature: 
    name: gree_leaving_water_lower_setpoint_temperature
    min: 20
    max: 45
    step: 1
    mode: box            
    icon: mdi:thermometer
    unit_of_measurement: '°C'      

  gree_ambient_upper_setpoint_temperature: 
    name: gree_ambient_upper_setpoint_temperature
    min: 10
    max: 37
    step: 1
    mode: box            
    icon: mdi:thermometer
    unit_of_measurement: '°C'      

  gree_ambient_lower_setpoint_temperature: 
    name: gree_ambient_lower_setpoint_temperature
    min: -20
    max: 9
    step: 1
    mode: box            
    icon: mdi:thermometer
    unit_of_measurement: '°C'      

  gree_delta_t_heat_setpoint_temperature: 
    name: gree_delta_t_heat_setpoint_temperature
    min: 2
    max: 10
    step: 1
    mode: box            
    icon: mdi:thermometer
    unit_of_measurement: '°C'      

  gree_hotwater_tank_setpoint_temperature: 
    name: gree_hotwater_tank_setpoint_temperature
    min: 40
    max: 60
    step: 1
    mode: box            
    icon: mdi:thermometer
    unit_of_measurement: '°C'      

  gree_delta_t_hot_water_setpoint_temperature: 
    name: gree_delta_t_hot_water_setpoint_temperature
    min: 2
    max: 8
    step: 1
    mode: box            
    icon: mdi:thermometer
    unit_of_measurement: '°C'      

  gree_disinfection_setpoint_temperature: 
    name: gree_disinfection_setpoint_temperature
    min: 40
    max: 70
    step: 1
    mode: box            
    icon: mdi:thermometer
    unit_of_measurement: '°C'      

input_select:
  gree_optional_e_heater:
    name: "Gree Optional E-Heater"
    options:
      - '1-3kW'
      - '2-6 kW'
      - '3-Off'
    icon: mdi:hvac 

In order to handle value changes(temperature mainly) in my HomeAssistant code I use an automation trigger handler in automations.yaml:

....
- id: Handle_gree_setpoint_temperature_change
  alias: Handle gree setpoint temperature change
  mode: queued
  max: 20  
  trigger:
  - platform: state
    entity_id:
    - sensor.gree_leaving_water_setpoint_temperature
    - sensor.gree_leaving_water_upper_setpoint_temperature
    - sensor.gree_leaving_water_lower_setpoint_temperature
    - sensor.gree_ambient_upper_setpoint_temperature
    - sensor.gree_ambient_lower_setpoint_temperature
    - sensor.gree_delta_t_heat_setpoint_temperature
    - sensor.gree_hotwater_tank_setpoint_temperature
    - sensor.gree_delta_t_hot_water_setpoint_temperature
    - sensor.gree_disinfection_setpoint_temperature

  condition: []
  action:
  - condition: template
    value_template: "{{ is_number(trigger.to_state.state) and (trigger.to_state.state | float > -50 and trigger.to_state.state | float < 100) }}"
  - service: input_number.set_value
    data:
      entity_id: "input_number.{{trigger.to_state.object_id}}"
      value: "{{trigger.to_state.state}}"

- id: Handle_gree_options_change
  alias: Handle gree options change
  mode: queued
  max: 20  
  variables:
    input_select_id: "input_select.{{trigger.to_state.object_id}}"
  trigger:
  - platform: state
    entity_id:
    - sensor.gree_optional_e_heater
  condition: []
  action:
  - condition: []
  - service: input_select.select_option
    target:
      entity_id: "{{input_select_id}}"
    data:
      option: "{{ state_attr(input_select_id, 'options') [states(trigger.to_state.entity_id)|int(3) - 1] }}"

- id: Update_gree_modbus_value
  alias: Update gree modbus value
  mode: queued
  max: 20  
  variables:
    sensor_id: "sensor.{{trigger.to_state.object_id}}"
  trigger:
  - platform: state
    entity_id:
    - input_number.gree_leaving_water_setpoint_temperature
    - input_number.gree_leaving_water_upper_setpoint_temperature
    - input_number.gree_leaving_water_lower_setpoint_temperature
    - input_number.gree_ambient_upper_setpoint_temperature
    - input_number.gree_ambient_lower_setpoint_temperature
    - input_number.gree_delta_t_heat_setpoint_temperature
    - input_number.gree_hotwater_tank_setpoint_temperature
    - input_number.gree_delta_t_hot_water_setpoint_temperature
    - input_number.gree_disinfection_setpoint_temperature
    - input_select.gree_optional_e_heater
  condition: []
  action:
  - service: modbus.write_register
    data_template:
      hub: versati3_hub
      unit: 1
      address: >
        {{ state_attr(sensor_id, 'address' ) }}
      value: >
        {% if 'input_select' in trigger.to_state.entity_id %}  
          {{ state_attr(trigger.to_state.entity_id, 'options').index(trigger.to_state.state) + 1 }}
        {% else %}
          {{ (trigger.to_state.state | int) if (trigger.to_state.state | int >= 0) else (65536 + trigger.to_state.state | int) }}
        {% endif %}

In order to know which modbus register address to use for updating values (temperature and optional_e_heater dropdown selection) I use a custom attribute ‘address’ in customize.yaml. I have these lines in the customize.yaml file for that:

....
sensor.gree_optional_e_heater:
  address: 3
sensor.gree_disinfection_setpoint_temperature:
  address: 4
sensor.gree_leaving_water_setpoint_temperature:
  address: 10
sensor.gree_leaving_water_upper_setpoint_temperature:
  address: 21
sensor.gree_leaving_water_lower_setpoint_temperature:
  address: 22
sensor.gree_ambient_upper_setpoint_temperature:
  address: 17
sensor.gree_ambient_lower_setpoint_temperature:
  address: 18
sensor.gree_delta_t_heat_setpoint_temperature:
  address: 30
sensor.gree_hotwater_tank_setpoint_temperature:
  address: 13
sensor.gree_delta_t_hot_water_setpoint_temperature:
  address: 31

And finally, in order to modify my settings (temperature and optional_e_heater dropdown selection) in ui-lovelace.yaml I use numberbox-card controls (https://github.com/htmltiger/numberbox-card)

....
      - entities:
        - type: custom:numberbox-card
          entity: input_number.gree_leaving_water_setpoint_temperature
          secondary_info: last-changed
        - type: custom:numberbox-card
          entity: input_number.gree_leaving_water_upper_setpoint_temperature
          secondary_info: last-changed
        - type: custom:numberbox-card
          entity: input_number.gree_leaving_water_lower_setpoint_temperature
          secondary_info: last-changed
        - type: custom:numberbox-card
          entity: input_number.gree_ambient_upper_setpoint_temperature
          secondary_info: last-changed
        - type: custom:numberbox-card
          entity: input_number.gree_ambient_lower_setpoint_temperature
          secondary_info: last-changed
        - type: custom:numberbox-card
          entity: input_number.gree_delta_t_heat_setpoint_temperature
          secondary_info: last-changed
        - type: custom:numberbox-card
          entity: input_number.gree_hotwater_tank_setpoint_temperature
          secondary_info: last-changed ##Now %sensor.gree_water_tank_temperature:state ##last-changed      
        - type: custom:numberbox-card
          entity: input_number.gree_delta_t_hot_water_setpoint_temperature
          secondary_info: last-changed
        - type: custom:numberbox-card
          entity: input_number.gree_disinfection_setpoint_temperature 
          secondary_info: last-changed       
        - input_select.gree_optional_e_heater
        title: Heat/HotWater Settings
        show_header_toggle: false
        state_color: true 
        type: entities
3 Likes

Did anyone tried to do this other than usb connection ? I’m trying with an nodemcu and uart rs485 with esphome and all I get is

[22:40:34][W][modbus_controller:112]: Duplicate modbus command found: type=0x3 address=129 count=1
[22:41:21][D][modbus_controller:029]: Modbus command to device=1 register=0x81 countdown=0 no response received - removed from send queue

I only have one sensor and I can’t figure it out why it says duplicate command. I’m out of ideas. I will try with an usb connection too just to exclude a modbus version problem but not as a permanent solution :slight_smile:

I think you have the wrong address. Why did you said the address is 0x9004? If the starting address of the Modbus register is 1, then the hexadecimal representation of register word 118 would be 0x76. The address of each register word is simply an offset from the starting address, so in this case the address of register 118 would be 1 + 117 = 118. And the hexadecimal representation of 118 is 0x76.