Modbus TCP for CTA Heatpump

I tried different ways but the result was not satisfactory. This is probably because I am a complete beginner when it has to do with Modbus. I hope you can help me in a fairly simple way.
I have received a table with all the important data from the manufacturer CTA. For example, the following settings should be used for the outside temperature:

My configuration in HA:

modbus:
  - name: CTA
    type: tcp
    host: 192.168.178.23
    port: 502
    sensors:
      - name: CTA_Aussentemperatur
        address: 2000
        swap: byte
        data_type: int32
        slave: 1
        input_type: input

I do receive some data but the values are by fare not correct. The outside temperature is 8°C and the received values are 10747712, 7667520, 1075183424,…

I think I figured it out. It was just the “swap: word” instead of “swap: byte”

modbus:
  - name: CTA
    type: tcp
    host: 192.168.178.23
    port: 502
    sensors:
      - name: CTA_Aussentemperatur
        address: 2000
        data_type: float32
        swap: word
        slave: 1
        input_type: input

Hello,

I also own a CTA heat pump, Aeroheat 18A with Wandregler 2.0. Where did you get the datasheet for the TCP Modbus data?

Thanks!

Hello Tudor T,

I’ve got the datasheet directly from the technical customer service by CTA. They’re very friendly and you just have to commit that you don’t publish it.

What hardware do you need to connect the HA to the CTA via modbus?
I currently have HA on a RPi and am now investigating how I can integrate my CTA heatpump. As I also am registered on the heatpump24 portal, this might be another option, but I guess modbus would be easier…

On the heatpump side: Did you need to set additional parameters? I can reach my CTA heatpump via the browser accessing the inbuilt web server. But I do not receive an answer via modbus so far.

I do not think any additional hardware is necessary: Your HA will communicate via TCP with the heatpump. Did you try to reach it via the web browser? You can just type in the IP address and it should open a login dialog. The default passcode is 999999.

I had already connected the heatpump with my router (normal LAN-Cable). In your router configuration you will find the correct IP-Adress. It should work with the modbus integration and the above mentioned configuration.

1 Like

Asked CTA to provide me the table for my heatpump model and will then test.

it asks for user and password (advanced settings installer or advanced settings admin (oem), what do you enter as user if password is 99…9?

Merci, thanks for supplying you config, it works for me. As I have a CTA with TWW, I would like to add the address(es) for ‘used energy TWW’, do you know which address that is hidden? (an d can post it to here or to me)?.
I had two calls with support and marketing CTA and they do not give me the modbus interface definition. This is ‘company owner decision not to give that out’. I buy a expensive device and do not get the info to use it 100%, what a shame. Shame on them.

Yes, I know. That makes it very difficult for us. Here are the the TWW addresses:
Input Register:
2010: TWW Temperatur in °C
2012: TWW Ladefßhler °C
2022: TWW Temperatur unten in °C

Hi Buddeli

Any chance you can share the modbus list with me? I reached out to the support a few days ago, but unfortunately no answer so far.

Otherwise, I will have to go to Münsingen and ask… :slight_smile:

For me it also took quite a while until I got a response (more than a week). So I suggest you are patient and give them some more days.

Managed to get my hands on the modbus list.

I now struggle to integrate values other than temperatures. Do I need to change the data type, swap, anything else to consider?

Hey Dhs, sorry for my late replay. Here are some more examples from my modbus-list:

    - name: CTA_Drehzahl Verdichter
      address: 2030
      data_type: float32
      swap: word
      slave: 1
      input_type: input
      precision: 0
      unit_of_measurement: rps
      device_class: frequency
    - name: CTA_El. Leistungsaufnahme Verdichter
      address: 2032
      data_type: float32
      swap: word
      slave: 1
      input_type: input
      precision: 3
      unit_of_measurement: kW
      device_class: power
    - name: CTA_Stromaufnahme Verdichter
      address: 2034
      data_type: float32
      swap: word
      slave: 1
      input_type: input
      precision: 1
      unit_of_measurement: A
      device_class: current
    - name: CTA_Energie Heizen (ohne TWW)
      address: 2068
      data_type: uint32
      swap: word
      slave: 1
      input_type: input
      precision: 0
      unit_of_measurement: kWh
      device_class: energy
    - name: CTA_Energie Total
      address: 2074
      data_type: uint32
      swap: word
      slave: 1
      input_type: input
      precision: 0
      unit_of_measurement: kWh
      device_class: energy

Thanks for your work, you inspired me to build a small yaml-deshboard. you can find it here. feel free to use / or modify it to your personal needs.

1 Like

Hi Buddeli, thank you very much for the additional details!

In the meantime, I made significant progress and was able to integrate CTA heat pump controls into HA so I can change modes, turn on/off freecooling, and set the comfort temperatures. I was, however, not able to locate the registers to set the reduced temperatures, which for me is not an issue since I rarely change the temperatures. The communication works bidirectionally between HA and the heat pump.

For my setup, the integration including the controls is very helpful and improves the comfort of my CTA head pump significantly. I can share the setup and code snippets if someone should be interested.

2 Likes

Hello, wich module do you use for modbus communication. What is the appliance you have to connect to LAN with your heat pump ?

Thank you.

The heat pump is integrated in my local network and I use modbus tcp and a python script with AppDaemon.