Controme underfloor heating system - Issues while integrating in Home Assistant

Hi all,

I have Smart-Heating system from Controme.

Controme offers a rest API to get/set (API – Controme Support Center) all relevant values of the heating system. I can access via the rest API all sensors.

i.e. get room temperature:

rest:
  - scan_interval: 60
    resource: http://192.168.x.x/get/json/v1/2/temps
    sensor:
      - name: Wohnzimmer
        value_template: "{{ value_json[0]['raeume'][0]['temperatur']|round(1) }}"
        unit_of_measurement: "°C"
        device_class: temperature
        json_attributes_path: $.[0].raeume[0]
        json_attributes:
          - "name"
          - "temperatur"
          - "solltemperatur"
          - "total_offset"
          - "luftfeuchte"

or getting the heating state (actuator on/off)

  - scan_interval: 60
    resource: http://192.168.x.x/get/json/v1/2/outs
    binary_sensor:
      - name: Wohnzimmer (Status Stellmotor)
        value_template: "{{ value_json[0]['raeume'][0]['ausgang']['1'] }}"

I’m currently stuck while creating a climate sensor, which shows the current room temperature, the target temperature, the state of the actuator and allows to set a new target temperature via a rest post command.

I try to use the Generic Thermostat (Generic Thermostat - Home Assistant), but this is from my understanding more or less the same as my smart heating system and wouldn’t help in my case.

Has anyone an idea how I can create a climate entity to solve my problem?

Many Thanks,
Markus

2 Likes

Hi Markus,

first of all: thanks for opening this issue, i’m at the exact same point. Glad to be able to show current temperatures with your code.

Did you had any success with creating the possibility of setting temperatures to controme with HA?

Best regards,
Christian

Hi Makus,

can you please explain how I can see the temperature of the other rooms?
I can only see the first room

Hi @mafrank and croso77,

the example above is using the API to query alls room but selects the room usint he attribute path. Catching all rooms with one API call hasn’t been done, not sure if this is possible. Therefore, you need to configure by room and change the room ID.

If done it a little bit differen, example:

# Wohnzimmer
- platform: rest
  name: controme_wohnzimmer
  resource: http://xxx.xxx.xxx.xxx/get/json/v1/1/temps/1/
  value_template: '{{ value_json[0]["name"] }}'
  json_attributes:
    - temperatur
    - solltemperatur
    - total_offset
    - offsets
    - sensoren

- platform: template
  sensors:
    controme_wohnzimmer_solltemperatur:
      friendly_name: 'Wohnzimmer Solltemperatur'
      unit_of_measurement: '°C'
      value_template: '{{ states.sensor.controme_wohnzimmer.attributes["solltemperatur"] | round(2) }}'

    controme_wohnzimmer_temperatur:
      friendly_name: 'Wohnzimmer Temperatur'
      unit_of_measurement: '°C'
      value_template: '{{ states.sensor.controme_wohnzimmer.attributes["temperatur"] | round(2) }}'

    controme_wohnzimmer_total_offset:
      friendly_name: 'Wohnzimmer Total Offset'
      unit_of_measurement: '°C'
      value_template: '{{ states.sensor.controme_wohnzimmer.attributes["total_offset"] | round(2) }}'
      attribute_templates:
          offset_wetter_raum: '{{ states.sensor.controme_wohnzimmer.attributes["offsets"]["Wetter"]["raum"] | round(2) }}'
          offset_wetter_haus: '{{ states.sensor.controme_wohnzimmer.attributes["offsets"]["Wetter"]["haus"] | round(2) }}'
          offset_hfopti_raum: '{{ states.sensor.controme_wohnzimmer.attributes["offsets"]["Heizflächenoptimierung"]["raum"] | round(2) }}'
          offset_hfopti_haus: '{{ states.sensor.controme_wohnzimmer.attributes["offsets"]["Heizflächenoptimierung"]["haus"] | round(2) }}'
          offset_zeitschalter_raum: '{{ states.sensor.controme_wohnzimmer.attributes["offsets"]["Zeitschalter"]["raum"] | round(2) }}'
          offset_zeitschalter_haus: '{{ states.sensor.controme_wohnzimmer.attributes["offsets"]["Zeitschalter"]["haus"] | round(2) }}'
          offset_timer_raum: '{{ states.sensor.controme_wohnzimmer.attributes["offsets"]["Timer"]["raum"] | round(2) }}'
          offset_timer_haus: '{{ states.sensor.controme_wohnzimmer.attributes["offsets"]["Timer"]["haus"] | round(2) }}'
          offset_fensteroffenerkennung_raum: '{{ states.sensor.controme_wohnzimmer.attributes["offsets"]["Fenster-offen-Erkennung"]["raum"] | round(2) }}'
          offset_fensteroffenerkennung_haus: '{{ states.sensor.controme_wohnzimmer.attributes["offsets"]["Fenster-offen-Erkennung"]["haus"] | round(2) }}'
          offset_kalender_raum: '{{ states.sensor.controme_wohnzimmer.attributes["offsets"]["Kalender"]["raum"] | round(2) }}'
          offset_kalender_haus: '{{ states.sensor.controme_wohnzimmer.attributes["offsets"]["Kalender"]["haus"] | round(2) }}'
          offset_außentempkorrektur_raum: '{{ states.sensor.controme_wohnzimmer.attributes["offsets"]["Außentemperaturkorrektur"]["raum"] | round(2) }}'
          offset_außentempkorrektur_haus: '{{ states.sensor.controme_wohnzimmer.attributes["offsets"]["Außentemperaturkorrektur"]["haus"] | round(2) }}'

    controme_wohnzimmer_sensor_0:
      friendly_name: 'Wohnzimmer Rücklaufsensor 0'
      unit_of_measurement: '°C'
      value_template: '{{ states.sensor.controme_wohnzimmer.attributes["sensoren"][0]["wert"] | round(2) }}'
      attribute_templates:
        letzte_uebertragung: '{{ states.sensor.controme_wohnzimmer.attributes["sensoren"][0]["letzte_uebertragung"] }}'
        name: '{{ states.sensor.controme_wohnzimmer.attributes["sensoren"][0]["name"] }}'
        beschreibung: '{{ states.sensor.controme_wohnzimmer.attributes["sensoren"][0]["beschreibung"] }}'

    controme_wohnzimmer_sensor_1:
      friendly_name: 'Wohnzimmer Rücklaufsensor 1'
      unit_of_measurement: '°C'
      value_template: '{{ states.sensor.controme_wohnzimmer.attributes["sensoren"][1]["wert"] | round(2) }}'
      attribute_templates:
        letzte_uebertragung: '{{ states.sensor.controme_wohnzimmer.attributes["sensoren"][1]["letzte_uebertragung"] }}'
        name: '{{ states.sensor.controme_wohnzimmer.attributes["sensoren"][1]["name"] }}'
        beschreibung: '{{ states.sensor.controme_wohnzimmer.attributes["sensoren"][1]["beschreibung"] }}'

This will give the following sensors:

  • controme_wohnzimmer - It holds the data and is used for the template sensors
  • sensor.controme_wohnzimmer_solltemperatur
  • sensor.controme_wohnzimmer_temperatur
  • sensor.controme_wohnzimmer_total_offset - Here you will find all the offsets as attributes, in case you need it.
  • sensor.controme_wohnzimmer_sensor_0
  • sensor.controme_wohnzimmer_sensor_1 - I do have two, in case you have only one - remove.

You should carefully check on all the IDs of the rooms following the API docs as well as opening the json in Browser to align you sensor configuration with what the API gives you based on Controme config.

For the binary sensor I used the example above as follows:

- platform: rest
  scan_interval: 60
  resource: http://xxx.xxx.xxx.xxx/get/json/v1/1/outs/
  name: "Wohnzimmer Heizkreis 1"
  value_template: "{{ value_json[0]['raeume'][0]['ausgang']['1'] }}"

Unfortunately, having it as a thermostat is not really working and most likely needs a proper integration. :roll_eyes: But the API helps in regard of logging/tracking current status. My dashboard per room looks like this:

I’m not sure if I’m going to add the set temperature, should be possible but not needed for me. To get the 8 rooms going I added ~500 lines of configuration in yaml… :scream:

@cdlh Did you tried adding setting temperature?

Hope that helps,
Jens

Hi @mafrank, you can get all rooms with the request http://xxx.xxx.xxx.xxx/get/json/v1/1/temps.
How do you integrate the sensor into HASSIO?

Has anybody made success to integrate set-commands and maybe post the result here?

I have written a small PowerShell script, which creates the Controme yaml by reading out the Controme api.
As a model I have taken the yaml of @mafrank.
Only the URL of the Contromservers in must be adapted.
Have fun testing.

@flame4ever thank you very much for your efforts!

I will try your tool the next days and give you feedback.

1 Like

Hello I have a problem with the script/integration into Home Assistant. I can run the script and import it into Home Assistant. I can see all devices but I get no values from Controme. In the dashboard is “Not available” instead of the temperature.

I think the its a problem of the parsing. But I am not quite sure.
This is the output of the API request in the Browser:
[{"total_offset": 0.0, "solltemperatur": 18.5, "temperatur": 18.81, "name": "Eingangsbereich", "offsets": {"Geolocation": {"raum": 0.0, "haus": 0.0}, "Wetter": {"raum": -0.0, "haus": 0.0}, "Google Kalender": {"raum": 0.0, "haus": 0.0}, "Au\u00dfentemperaturkorrektur": {"raum": 0.0, "haus": 0.0}, "Solarpuffer": {"raum": 0.0, "haus": 0.0}, "Zeitschalter": {"raum": 0.0, "haus": 0.0}}, "sensoren": [{"raumtemperatursensor": true, "letzte_uebertragung": "23.01.2023 23:15", "name": "10_8c_1b_d0_02_08_00_58", "wert": 18.81, "beschreibung": "Eingang"}], "id": 1, "luftfeuchte": "kein Sensor vorhanden"}]

This is an entry in the Home Assistant log:
2023-01-23 23:01:41.000 ERROR (MainThread) [homeassistant.helpers.event] Error while processing template: Template("{{ states.sensor.controme_eingangsbereich.attributes[“solltemperatur”] | round(2) }}")

2023-01-23 23:01:41.006 ERROR (MainThread) [homeassistant.helpers.template_entity] TemplateError(‘UndefinedError: ‘None’ has no attribute ‘attributes’’) while processing template ‘Template("{{ states.sensor.controme_eingangsbereich.attributes[“solltemperatur”] | round(2) }}")’ for attribute ‘_attr_native_value’ in entity ‘sensor.controme_eingangsbereich_solltemperatur’

2023-01-23 23:01:41.013 ERROR (MainThread) [homeassistant.helpers.event] Error while processing template: Template("{{ states.sensor.controme_eingangsbereich.attributes[“temperatur”] | round(2) }}")

and a lot of more entrys…

Can you please help me to solve this issue? Many thanks in advance.

what does the controme.yaml look like ?

Sorry for the late response, but I didn’t get an infomail about your response…

Here is an excerpt of my yaml, because the wohle is too longe:

# Eingangsbereich
- platform: rest
  name: controme_eingangsbereich
  resource: http://heizung.priv/get/json/v1/1/temps/1/
  value_template: '{{ value_json[0]["name"] }}'
  json_attributes:
    - temperatur
    - solltemperatur
    - total_offset
    - offsets
    - sensoren

- platform: template
  sensors:
    controme_eingangsbereich_solltemperatur:
      friendly_name: 'Eingangsbereich Solltemperatur'
      unit_of_measurement: '°C'
      value_template: '{{ states.sensor.controme_eingangsbereich.attributes["solltemperatur"] | round(2) }}'

    controme_eingangsbereich_temperatur:
      friendly_name: 'Eingangsbereich Temperatur'
      unit_of_measurement: '°C'
      value_template: '{{ states.sensor.controme_eingangsbereich.attributes["temperatur"] | round(2) }}'

    controme_eingangsbereich_total_offset:
      friendly_name: 'Eingangsbereich Total Offset'
      unit_of_measurement: '°C'
      value_template: '{{ states.sensor.controme_eingangsbereich.attributes["total_offset"] | round(2) }}'
      attribute_templates:
          offset_wetter_raum: '{{ states.sensor.controme_eingangsbereich.attributes["offsets"]["Wetter"]["raum"] | round(2) }}'
          offset_wetter_haus: '{{ states.sensor.controme_eingangsbereich.attributes["offsets"]["Wetter"]["haus"] | round(2) }}'
          offset_hfopti_raum: '{{ states.sensor.controme_eingangsbereich.attributes["offsets"]["Heizflächenoptimierung"]["raum"] | round(2) }}'
          offset_hfopti_haus: '{{ states.sensor.controme_eingangsbereich.attributes["offsets"]["Heizflächenoptimierung"]["haus"] | round(2) }}'
          offset_zeitschalter_raum: '{{ states.sensor.controme_eingangsbereich.attributes["offsets"]["Zeitschalter"]["raum"] | round(2) }}'
          offset_zeitschalter_haus: '{{ states.sensor.controme_eingangsbereich.attributes["offsets"]["Zeitschalter"]["haus"] | round(2) }}'
          offset_timer_raum: '{{ states.sensor.controme_eingangsbereich.attributes["offsets"]["Timer"]["raum"] | round(2) }}'
          offset_timer_haus: '{{ states.sensor.controme_eingangsbereich.attributes["offsets"]["Timer"]["haus"] | round(2) }}'
          offset_fensteroffenerkennung_raum: '{{ states.sensor.controme_eingangsbereich.attributes["offsets"]["Fenster-offen-Erkennung"]["raum"] | round(2) }}'
          offset_fensteroffenerkennung_haus: '{{ states.sensor.controme_eingangsbereich.attributes["offsets"]["Fenster-offen-Erkennung"]["haus"] | round(2) }}'
          offset_kalender_raum: '{{ states.sensor.controme_eingangsbereich.attributes["offsets"]["Kalender"]["raum"] | round(2) }}'
          offset_kalender_haus: '{{ states.sensor.controme_eingangsbereich.attributes["offsets"]["Kalender"]["haus"] | round(2) }}'
          offset_außentempkorrektur_raum: '{{ states.sensor.controme_eingangsbereich.attributes["offsets"]["Außentemperaturkorrektur"]["raum"] | round(2) }}'
          offset_außentempkorrektur_haus: '{{ states.sensor.controme_eingangsbereich.attributes["offsets"]["Außentemperaturkorrektur"]["haus"] | round(2) }}'

    controme_eingangsbereich_sensor_0:
      friendly_name: 'Eingang 0'
      unit_of_measurement: '°C'
      value_template: '{{ states.sensor.controme_eingangsbereich.attributes["sensoren"][0]["wert"] | round(2) }}'
      attribute_templates:
        letzte_uebertragung: '{{ states.sensor.controme_eingangsbereich.attributes["sensoren"][0]["letzte_uebertragung"] }}'
        name: '{{ states.sensor.controme_eingangsbereich.attributes["sensoren"][0]["name"] }}'
        beschreibung: '{{ states.sensor.controme_eingangsbereich.attributes["sensoren"][0]["beschreibung"] }}'

# Solar Pufferspeicher
- platform: rest
  name: controme_solarpufferspeicher
  resource: http://heizung.priv/get/json/v1/1/temps/20/
  value_template: '{{ value_json[0]["name"] }}'
  json_attributes:
    - temperatur
    - solltemperatur
    - total_offset
    - offsets
    - sensoren

- platform: template
  sensors:
    controme_solarpufferspeicher_solltemperatur:
      friendly_name: 'Solar Pufferspeicher Solltemperatur'
      unit_of_measurement: '°C'
      value_template: '{{ states.sensor.controme_solarpufferspeicher.attributes["solltemperatur"] | round(2) }}'

    controme_solarpufferspeicher_temperatur:
      friendly_name: 'Solar Pufferspeicher Temperatur'
      unit_of_measurement: '°C'
      value_template: '{{ states.sensor.controme_solarpufferspeicher.attributes["temperatur"] | round(2) }}'

    controme_solarpufferspeicher_total_offset:
      friendly_name: 'Solar Pufferspeicher Total Offset'
      unit_of_measurement: '°C'
      value_template: '{{ states.sensor.controme_solarpufferspeicher.attributes["total_offset"] | round(2) }}'
      attribute_templates:
          offset_wetter_raum: '{{ states.sensor.controme_solarpufferspeicher.attributes["offsets"]["Wetter"]["raum"] | round(2) }}'
          offset_wetter_haus: '{{ states.sensor.controme_solarpufferspeicher.attributes["offsets"]["Wetter"]["haus"] | round(2) }}'
          offset_hfopti_raum: '{{ states.sensor.controme_solarpufferspeicher.attributes["offsets"]["Heizflächenoptimierung"]["raum"] | round(2) }}'
          offset_hfopti_haus: '{{ states.sensor.controme_solarpufferspeicher.attributes["offsets"]["Heizflächenoptimierung"]["haus"] | round(2) }}'
          offset_zeitschalter_raum: '{{ states.sensor.controme_solarpufferspeicher.attributes["offsets"]["Zeitschalter"]["raum"] | round(2) }}'
          offset_zeitschalter_haus: '{{ states.sensor.controme_solarpufferspeicher.attributes["offsets"]["Zeitschalter"]["haus"] | round(2) }}'
          offset_timer_raum: '{{ states.sensor.controme_solarpufferspeicher.attributes["offsets"]["Timer"]["raum"] | round(2) }}'
          offset_timer_haus: '{{ states.sensor.controme_solarpufferspeicher.attributes["offsets"]["Timer"]["haus"] | round(2) }}'
          offset_fensteroffenerkennung_raum: '{{ states.sensor.controme_solarpufferspeicher.attributes["offsets"]["Fenster-offen-Erkennung"]["raum"] | round(2) }}'
          offset_fensteroffenerkennung_haus: '{{ states.sensor.controme_solarpufferspeicher.attributes["offsets"]["Fenster-offen-Erkennung"]["haus"] | round(2) }}'
          offset_kalender_raum: '{{ states.sensor.controme_solarpufferspeicher.attributes["offsets"]["Kalender"]["raum"] | round(2) }}'
          offset_kalender_haus: '{{ states.sensor.controme_solarpufferspeicher.attributes["offsets"]["Kalender"]["haus"] | round(2) }}'
          offset_außentempkorrektur_raum: '{{ states.sensor.controme_solarpufferspeicher.attributes["offsets"]["Außentemperaturkorrektur"]["raum"] | round(2) }}'
          offset_außentempkorrektur_haus: '{{ states.sensor.controme_solarpufferspeicher.attributes["offsets"]["Außentemperaturkorrektur"]["haus"] | round(2) }}'

    controme_solarpufferspeicher_sensor_0:
      friendly_name: 'Fuehler Pufferspeicher Solar 0'
      unit_of_measurement: '°C'
      value_template: '{{ states.sensor.controme_solarpufferspeicher.attributes["sensoren"][0]["wert"] | round(2) }}'
      attribute_templates:
        letzte_uebertragung: '{{ states.sensor.controme_solarpufferspeicher.attributes["sensoren"][0]["letzte_uebertragung"] }}'
        name: '{{ states.sensor.controme_solarpufferspeicher.attributes["sensoren"][0]["name"] }}'
        beschreibung: '{{ states.sensor.controme_solarpufferspeicher.attributes["sensoren"][0]["beschreibung"] }}'

# Gang EG
- platform: rest
  name: controme_gangeg
  resource: http://heizung.priv/get/json/v1/1/temps/6/
  value_template: '{{ value_json[0]["name"] }}'
  json_attributes:
    - temperatur
    - solltemperatur
    - total_offset
    - offsets
    - sensoren

- platform: template
  sensors:
    controme_gangeg_solltemperatur:
      friendly_name: 'Gang EG Solltemperatur'
      unit_of_measurement: '°C'
      value_template: '{{ states.sensor.controme_gangeg.attributes["solltemperatur"] | round(2) }}'

    controme_gangeg_temperatur:
      friendly_name: 'Gang EG Temperatur'
      unit_of_measurement: '°C'
      value_template: '{{ states.sensor.controme_gangeg.attributes["temperatur"] | round(2) }}'

    controme_gangeg_total_offset:
      friendly_name: 'Gang EG Total Offset'
      unit_of_measurement: '°C'
      value_template: '{{ states.sensor.controme_gangeg.attributes["total_offset"] | round(2) }}'
      attribute_templates:
          offset_wetter_raum: '{{ states.sensor.controme_gangeg.attributes["offsets"]["Wetter"]["raum"] | round(2) }}'
          offset_wetter_haus: '{{ states.sensor.controme_gangeg.attributes["offsets"]["Wetter"]["haus"] | round(2) }}'
          offset_hfopti_raum: '{{ states.sensor.controme_gangeg.attributes["offsets"]["Heizflächenoptimierung"]["raum"] | round(2) }}'
          offset_hfopti_haus: '{{ states.sensor.controme_gangeg.attributes["offsets"]["Heizflächenoptimierung"]["haus"] | round(2) }}'
          offset_zeitschalter_raum: '{{ states.sensor.controme_gangeg.attributes["offsets"]["Zeitschalter"]["raum"] | round(2) }}'
          offset_zeitschalter_haus: '{{ states.sensor.controme_gangeg.attributes["offsets"]["Zeitschalter"]["haus"] | round(2) }}'
          offset_timer_raum: '{{ states.sensor.controme_gangeg.attributes["offsets"]["Timer"]["raum"] | round(2) }}'
          offset_timer_haus: '{{ states.sensor.controme_gangeg.attributes["offsets"]["Timer"]["haus"] | round(2) }}'
          offset_fensteroffenerkennung_raum: '{{ states.sensor.controme_gangeg.attributes["offsets"]["Fenster-offen-Erkennung"]["raum"] | round(2) }}'
          offset_fensteroffenerkennung_haus: '{{ states.sensor.controme_gangeg.attributes["offsets"]["Fenster-offen-Erkennung"]["haus"] | round(2) }}'
          offset_kalender_raum: '{{ states.sensor.controme_gangeg.attributes["offsets"]["Kalender"]["raum"] | round(2) }}'
          offset_kalender_haus: '{{ states.sensor.controme_gangeg.attributes["offsets"]["Kalender"]["haus"] | round(2) }}'
          offset_außentempkorrektur_raum: '{{ states.sensor.controme_gangeg.attributes["offsets"]["Außentemperaturkorrektur"]["raum"] | round(2) }}'
          offset_außentempkorrektur_haus: '{{ states.sensor.controme_gangeg.attributes["offsets"]["Außentemperaturkorrektur"]["haus"] | round(2) }}'

    controme_gangeg_sensor_0:
      friendly_name: 'Gang 1OG 0'
      unit_of_measurement: '°C'
      value_template: '{{ states.sensor.controme_gangeg.attributes["sensoren"][0]["wert"] | round(2) }}'
      attribute_templates:
        letzte_uebertragung: '{{ states.sensor.controme_gangeg.attributes["sensoren"][0]["letzte_uebertragung"] }}'
        name: '{{ states.sensor.controme_gangeg.attributes["sensoren"][0]["name"] }}'
        beschreibung: '{{ states.sensor.controme_gangeg.attributes["sensoren"][0]["beschreibung"] }}'

# Zimmer 1 Gaestezimmer
- platform: rest
  name: controme_zimmer1gaestezimmer
  resource: http://heizung.priv/get/json/v1/1/temps/2/
  value_template: '{{ value_json[0]["name"] }}'
  json_attributes:
    - temperatur
    - solltemperatur
    - total_offset
    - offsets
    - sensoren

- platform: template
  sensors:
    controme_zimmer1gaestezimmer_solltemperatur:
      friendly_name: 'Zimmer 1 Gaestezimmer Solltemperatur'
      unit_of_measurement: '°C'
      value_template: '{{ states.sensor.controme_zimmer1gaestezimmer.attributes["solltemperatur"] | round(2) }}'

    controme_zimmer1gaestezimmer_temperatur:
      friendly_name: 'Zimmer 1 Gaestezimmer Temperatur'
      unit_of_measurement: '°C'
      value_template: '{{ states.sensor.controme_zimmer1gaestezimmer.attributes["temperatur"] | round(2) }}'

    controme_zimmer1gaestezimmer_total_offset:
      friendly_name: 'Zimmer 1 Gaestezimmer Total Offset'
      unit_of_measurement: '°C'
      value_template: '{{ states.sensor.controme_zimmer1gaestezimmer.attributes["total_offset"] | round(2) }}'
      attribute_templates:
          offset_wetter_raum: '{{ states.sensor.controme_zimmer1gaestezimmer.attributes["offsets"]["Wetter"]["raum"] | round(2) }}'
          offset_wetter_haus: '{{ states.sensor.controme_zimmer1gaestezimmer.attributes["offsets"]["Wetter"]["haus"] | round(2) }}'
          offset_hfopti_raum: '{{ states.sensor.controme_zimmer1gaestezimmer.attributes["offsets"]["Heizflächenoptimierung"]["raum"] | round(2) }}'
          offset_hfopti_haus: '{{ states.sensor.controme_zimmer1gaestezimmer.attributes["offsets"]["Heizflächenoptimierung"]["haus"] | round(2) }}'
          offset_zeitschalter_raum: '{{ states.sensor.controme_zimmer1gaestezimmer.attributes["offsets"]["Zeitschalter"]["raum"] | round(2) }}'
          offset_zeitschalter_haus: '{{ states.sensor.controme_zimmer1gaestezimmer.attributes["offsets"]["Zeitschalter"]["haus"] | round(2) }}'
          offset_timer_raum: '{{ states.sensor.controme_zimmer1gaestezimmer.attributes["offsets"]["Timer"]["raum"] | round(2) }}'
          offset_timer_haus: '{{ states.sensor.controme_zimmer1gaestezimmer.attributes["offsets"]["Timer"]["haus"] | round(2) }}'
          offset_fensteroffenerkennung_raum: '{{ states.sensor.controme_zimmer1gaestezimmer.attributes["offsets"]["Fenster-offen-Erkennung"]["raum"] | round(2) }}'
          offset_fensteroffenerkennung_haus: '{{ states.sensor.controme_zimmer1gaestezimmer.attributes["offsets"]["Fenster-offen-Erkennung"]["haus"] | round(2) }}'
          offset_kalender_raum: '{{ states.sensor.controme_zimmer1gaestezimmer.attributes["offsets"]["Kalender"]["raum"] | round(2) }}'
          offset_kalender_haus: '{{ states.sensor.controme_zimmer1gaestezimmer.attributes["offsets"]["Kalender"]["haus"] | round(2) }}'
          offset_außentempkorrektur_raum: '{{ states.sensor.controme_zimmer1gaestezimmer.attributes["offsets"]["Außentemperaturkorrektur"]["raum"] | round(2) }}'
          offset_außentempkorrektur_haus: '{{ states.sensor.controme_zimmer1gaestezimmer.attributes["offsets"]["Außentemperaturkorrektur"]["haus"] | round(2) }}'

    controme_zimmer1gaestezimmer_sensor_0:
      friendly_name: 'Raum 1 1OG 0'
      unit_of_measurement: '°C'
      value_template: '{{ states.sensor.controme_zimmer1gaestezimmer.attributes["sensoren"][0]["wert"] | round(2) }}'
      attribute_templates:
        letzte_uebertragung: '{{ states.sensor.controme_zimmer1gaestezimmer.attributes["sensoren"][0]["letzte_uebertragung"] }}'
        name: '{{ states.sensor.controme_zimmer1gaestezimmer.attributes["sensoren"][0]["name"] }}'
        beschreibung: '{{ states.sensor.controme_zimmer1gaestezimmer.attributes["sensoren"][0]["beschreibung"] }}'

You can also easily integrate the Controme Module as an Apple Homekit.
This is quite simple.
Activate Apple Homekit in Controme (Plug-In) and then activate Apple Homekit in HA.

1 Like

@jensihnow
I like this graph “Ist-/Soll-Temperatur und Offeset”. May you please share how you created this graph?

This is based on the mini-graph-card you can install via HACS. Here is the configuration snippet:

type: custom:mini-graph-card
entities:
  - entity: sensor.controme_wohnzimmer_temperatur
    color: lightgreen
    show_state: true
    name: Raumtemperatur
  - entity: sensor.controme_wohnzimmer_solltemperatur
    color: lightblue
    show_state: false
    name: Solltemperatur
  - entity: sensor.controme_wohnzimmer_total_offset
    show_state: true
    show_graph: false
    name: Offset
name: Ist-/Soll-Temperatur und Offset
hours_to_show: 24
points_per_hour: 60
line_width: 2
show:
  name: true
  legend: true
  icon: true
  labels: true
  fill: false

1 Like