If anyone is still interested or stumbles upon this in the future, I have gotten my Roth Touchline SL up and working through the API and NodeRed. There is probably a more efficient way to do this. I am very open for improvements, so let me know 
I have the following sensors from Roth from each room:
And some helpers from HA, I can control the temperature and see the zone status/mode:
I can also see status of the pump and the potential free contact. If there are actuators attached to a zone, these are visible as well. I have chosen only to extract battery and signal from these, but I believe I saw on/off as well.
In the end I can make a climate template to make easy control:
First step is to have NodeRed installed. I won’t go into any details with this, as there are plenty of guides for this.
1: So, the first thing inside NodeRed, is to get a token. This is a one-time thing, as the token has not expired for mee yet after a couple of weeks.
My function node:

And my http request node:
In the debug you will then get a token and user_id you can use in the rest of the flow.
2: You need to get a hold of your module number (also described as “udid” when you get the response back). Use the http request node again. This time you will use the endpoint /users/{user_id}/modules. You also need to set authentication to “bearer”. Here you can then insert your token.
3: With you token + user_id + module_id (udid), you can now start to make the flow. This took me quite some time to get arranged nicely with its own devices. All data from your unit, you will get from the endpoint /users/{user_id}/modules/{module_udid}. Here is a view of mine, where I every 5 minutes get an update on my sensors. I am using the NodeRed-HA-sensors+binary sensors+HA-helpers, to get the information nicely into HA.
Notice how I have put a json node in after the http-request. This is to “Convert between JSON String & Object”.
In the function node after the json I am making small calculations, since all temperatures are mentioned in factor 10. So if the measured temperature is 23,5 degrees, Roth sends to HA as 235.
All the rooms are mentioned in the response under payload → zones → elements.
I have also a setup for the helpers inside HA when they are changed, the endpoint /users/{user_id}/modules/{module_udid}/zones helps me with that. The function node just before the “post” http request, I make sure that the payload is correct according to the API:
I only use the constant temperature and change in NodeRed/HA depending on time of day/year/presence etc. There is also the option to change the scheduled heating through the API, but I haven’t tried that.
4: To get the climate control inside of HA, I am using the HACS: GitHub - jcwillox/hass-template-climate: ❄️Templatable Climate Device for Home Assistant, Supports Running Actions On Service Calls. (thanks jcwillox). After install of this I made some config in configuration.yaml:
climate:
- platform: climate_template
name: Roth Entre Heating
modes:
- "auto"
min_temp: 17
max_temp: 25
current_temperature_template: "{{ states('sensor.roth_entre_temperature') }}"
target_temperature_template: "{{states ('input_number.roth_entre_set_constant_temperature') }}"
current_humidity_template: "{{ states('sensor.roth_entre_humidity') }}"
temp_step: 0.1
set_temperature:
- service: input_number.set_value
target:
entity_id: input_number.roth_entre_set_constant_temperature
data:
value: "{{ temperature }}"
I know that I am not the best to write this guide, so feel very free to ask any questions, and I will try to answer them as fast as possible – if I can 