Thermostate für Controme im HA anlegen

Hallo Leute,

wir haben ein Einzelraumregelsystem von Controme im Tierheim verbaut, funktioniert perfekt.
Jetzt möchte ich auch die Raum Solltemperaturen über den HA einstellen können. Praktisch schöne Kacheln, die in mehreren Dashboarden nach Bereichen aufgegliedert sind.

Somit könnten die Mitarbeiter über Tabelts oder Panels in verschiednen Bereichen wie z.B. Katzengang, die Räume kontrollieren und die Temperaturen ändern.

Grund ist wir haben leider nur die Solar Enocean Thermostate ohne Display. Die Wlan Thermostate von Controme funktionieren leider im Batteriebetrieb nicht richtig.

Controme konnte ich über die Hilfe diesen yaml Creator integrieren.

Allerdings nur die Sensoren als Entitäten.

Laut der Controme API sollte auch ein setzen der Raum Solltemperaturen möglich sein.

Aber da blicke ich nicht durch, wie ich dies umsetzen könnte damit ich mir ein Dashboard anlege mit Thermostate die die aktuelle IST Temperatur anzeigen und ich die SOLL Temperatur über Pfeile etc. ändern könnte.

Hallo,

seit Jahren versuche ich ebenfalls, Controme extern steuerbar zu machen. (Früher IoBroker, vor einem 3/4 Jahr wechselte ich auf Home Assistant). Bisher habe ich es auch nur hinbekommen, die Temperaturen mittels des yaml-Creator auszulesen. Aber eben habe ich die Lösung gefunden: Einbindung mittels Apple Homekit!

https://support.controme.com/apple-home-integration/

In Controme einfach das Home-Kit Plugin installieren und dort definieren, ob die Soll-Temperaturänderung temporär oder dauerhaft geändert werden soll.
Controme wird dann automatisch von Home Assistant erkannt. Es muss nur noch das Passwort eingegeben werden. Wie dieses ermittelt wird, steht in der oben verlinkten Support-Seite von Controme.
Anschließend sind alle Soll und Ist-Werte in Home Assistant eingerichtet und die Soll-Temperatur lässt sich steuern.

Hi,
na das hört sich ja Top an.
Jetzt muss ich nur nal gucki ob ich das als nicht Apple Besitzer hinbekomme.

Denke es langt sich einen Apple Account über PC zu erstellen und diesen dann im HA zu verknüpfen.

Ich hatte zu den Thema auch schon Controme angeschrieben, aber seit 2 Wochen keine Antwort bekommen.

Wenn das klappt, dann müssten ja die Controme Thermostate im HA als Thermostate erkannt werden. Und mein Problem wäre gelöst.

Gruß
Matthias

@Matze_AB

Das habe ich auch probiert, aber der Controme.Miniserver wird bei mir als nicht Supportseiten Gerät erkannt und die Integration scheitert. über die Home-App geht die Bedienung.

Könntest Du deinen „Integrationsweg“ nochmals genau erklären? Danke!

Ok, dann versuche ich es noch etwas zu konkretisieren. Zuallererst, ich besitze keine Apple-Geräte, meine Homekit Geräte laufen direkt über die HomeKit Integration in Home Assistant (https://www.home-assistant.io/integrations/homekit_controller). Nachdem ich in Controme das Plugin installiert und eingerichtet habe, kam in Home Assistant schon die Nachricht, dass ein neues Homekit Gerät gefunden wurde. Dort musste ich zum Einrichten nur das Passwort eingeben (die letzten 3 Ziffern der Mini-Server-ID, restliche Ziffern mit 1 eingeben), danach waren alle Geräte und Entitäten verfügbar. Das war es auch schon. Hier noch ein paar Screenshots:


Danke für die Anleitung,
leider geht es bei mir nicht.

So bin ich vorgegangen. Alles mit dem Smartphone

  1. Im Controme Miniserver das Plugin Apple Homekit aktiviert.
  2. Das Plugin im Miniserver für die Einstellungen aufgerufen und die Temperaturübertragung auf dauherhaft gestellt.

Da fragte ich mich schon warum hier nach keiner Apple ID gefragt wird.

  1. Im HA unter Integrationen tauchte dann der Controme Miniserver als Homekit Devices auf.
    Hier habe ich auf Konfigurieren geklickt, dann dauerte es eine Minute mit der Meldung Bitte warten, Konfigurationsassistent für die Integration wird gestartet

Dann kam leider Fehler, Der Konigurationsfluss konte nicht gealden werden: Unknow error.

  1. Jetzt habe ich mal im Miniserver bei den Plugin den Resetbutton gedrückt. Miniserver neu gestartet, 5 Min gewartet und HA neu gestartet. Und dann am PC per lokalem Zugriff im HA nochmals versucht die Konfiguration durchzuführen. Nun nach 10 Min warten kam wieder der Fehler, Der Konigurationsfluss konte nicht gealden werden: Unknow error.

  2. Dann habe ich versucht im HA es über Integration hinzufügen zu probieren.
    Hier gibt es für Apple zwei Möglichkeiten.

  3. HomeKit Bridge
    Hier findet er mehrere Smarthome Geräte im Haushalt und integriert diese, aber leider keinen Controme Miniserver. Diese habe ich dann alle wieder gelöscht.

  4. Homekit Gerät
    Hier gibt es dann den Controme Miniserver als Bridge zur Auswahl. aber beim einrichten kommt wieder der Fehler.

Vieleicht liegt es an meiner Hardware.

HA läuft nur auf einen Pi3

Hast du vorher die manuelle über den yaml-Creator erstellten Controme Sensoren gelöscht?
Und welche Version läuft auf deinen Controme Miniserver, Stable oder LAB und mit welchen Softwarestand?
Bei mir läuft aktuell die LAB Version vom 17.08.23

Controme läuft bei mir in der Lab Version vom 29.8.23. Home Assistant unter Proxmox auf einem Intel Nuc in der Version 2023.8.3. Die yaml-Sensoren habe ich nicht gelöscht. Beim Einrichten unter Home Assistant hatte ich in Controme die Temperatur-Änderung auf Temporär und die Zeiteinstellung auf 360 Minuten eingestellt. Auf “dauerhaft” habe ich erst später umgestellt. Ich glaube zwar nicht, dass dies was ändert. Aber vielleicht ist es ein Versuch wert.
Bei mir kam in Homeassistant nach dieser “Bitte warten” Meldung das Fenster für die Eingabe des Passworts.

Ok, alles versucht. Dann scheint der Pi3 das Problem zu sein. Obwohl er bis jetzt super flüssig lief.

Also ich habe nun zum testen meinen HA mal auf einen Leistungstarken Windows PC umgezogen und alles so gemacht wie du.

Leider genau das selbe Problem wie auf den Pi3.
Nach anklicken des Button Konfigurieren kommt die Meldung bitte warten und dann der Fehler.

Scheint ein Problem bei Controme zu sein.
Nur Support werde ich hierzu wahrscheinlich nicht bekommen.

Noch ein paar Gedanken: Hast du schon mal im Home Assistant unter Einstellungen-System-Protokolle nachgesehen, ob vielleicht noch Fehlermeldungen mit mehr Aussagekraft vorhanden sind? Beim Einrichten der yaml Sensoren habe ich alle Umlaute im Controme entfernt. Falls welche bei dir vorhanden sein sollten, vielleicht hilft es, diese umzubenennen? Und dann habe ich mal die Fehlermeldung gegoogelt. Kommt wohl immer mal wieder in HA vor, aber auf die schnelle habe ich nichts im Zusammenhang mit Homekit gefunden, vielleicht hast du mehr Glück. Evtl. auch auf Englisch suchen ( Config flow could not be loaded). Ansonsten bin ich auch mit meinem Latein am Ende… sorry.

Danke Dir für die Ideen.

Ja die Umlaute bei der yaml Sensoren Integration war ein Problem.

Hatte alle Räume und Sensoren wie z.B. die Rücklauf Sensoren unbenannt.

Im Tierheim mit über 50 Räumen war das bei 11 Verteilern und bis zu 10 Stellmotoren pro Verteiler ein großer Aufwand.

Ich bin auch gerade ein wenig ratlos. Das einzige was mir einfällt ist das bei mir privat z.B das Plugin Alexa trotz Unterstützung von Controme nie funktionierte.

Controme konnte es sich trotz vollem Fernzugriff nicht erklären. Neuer Miniserver und und und.

Vielleicht hängt da bei mir grundsätzlich der Wurm drin.

Hallo,
ich habe meine Controme FBH auch ohne den Umweg über HomeKit integriert.
Es geht über einen REST Call. Nachdem die Formatierung über die REST Integration nicht geklappt hat ist der API Call in ein Shell Command verpackt.

shell_command:
    zimmer_ziel_temperatur_setzen: 'curl --location --request POST ''http://contromeminiserver/set/json/v1/1/ziel/7/'' --form ''ziel="{{ states(''sensor.ziel_temperature_value'') }}"'' --form ''duration="default"'' --form ''user="user@localdomain"'' --form ''password="GanzGeheim"'''

Das ganze funktioniert bei mir mit der Standard Miniserver Hardware und dem HA auf einem RPI 4.

Oh hört sich gut an, nur leider kenne ich mich mit Shell Commands nicht aus.

Könntest du mir dies bitte genauer erklären, wie du das umgesetzt hast.

Kann man damit dann auch ein visuelles Thermostat erstellen, dass dann bei Änderung dies dann in Controme auf den Raum Soll überträgt?

Daran wäre ich auch interessiert!

Ich habe nämlich das Problem, dass ich den Mini Server zwar als Homekit hinzufügen kann, aber nach einem Neustart des Home Assistant in der core.config_entries die IP Adresse bei “AccessoryIP”: immer wieder in “10.134.177.182” geändert wird und dann den Fehler bekomme:

WARNING (MainThread) [homeassistant.config_entries] Config entry ‘Controme Miniserver B8-27-EB-86-B1-B6 3715’ for homekit_controller integration not ready yet: Error while connecting to device 10.134.177.182:51826: [Errno 101] Connect call failed (‘10.134.177.182’, 51826) (ConnectionError); Retrying in background

Ich habe schon zich Mal über verschiedene Wege versucht die IP auf die Richtige zu ändern, stellt sich aber immer wieder zurück.

Ich habe Thermostate mit Hilfe von generic_thermostat angelegt. Das ganze ist so konfiguriert, dass ich die Temperatur aus HA heraus steuern kann und parallel weiterhin über die Controme Web Oberfläche. Heizpläne in Controme funktionieren bei mir auch nach wie vor.

Die REST API von Controme nutze ich um die Soll und Ist Temperatur auszulesen, sowie neue Soll Temperaturen zu setzen. Alles wird über templates als Sensoren für den Thermostat bereitgestellt.

Die Konfiguration ist weitgehend durch YAML in der configuration.yaml aufgebaut, als ich begonnen habe war die UI Unterstützung noch recht rudimentär.

Die Template Sensoren sind notwendig um die Werte welche die Controme API liefert richtig zu formatieren und auch dann einen Wert zu liefern, wenn Controme mal wieder die Enocean Sensoren nicht richtig auslesen kann.
Ist Temperatur Sensor

template:
  - sensor:
    - name: "Arbeitszimmer Ist Temperatur"
      unique_id: arbeitszimmer_ist_temperature_value
      device_class: temperature
      state_class: measurement
      unit_of_measurement: "°C"
      state: "{{ states('sensor.controme_arbeitszimmer_temperatur')|float(99) }}"

Soll Temperatur Sensor

template:
  - sensor:
    - name: "Arbeitszimmer Soll Temperatur value"
      unique_id: arbeitszimmer_soll_temperature_value
      device_class: temperature
      state_class: measurement
      unit_of_measurement: "°C"
      state: "{{ states('sensor.controme_arbeitszimmer_solltemperatur')|float(99)+states('sensor.controme_arbeitszimmer_total_offset')|float(99) }}"

REST API für Ist und Soll Temperatur auslesen

#
# Ist Temperatur Sensor Controme
#
rest:
  - resource: http://contromeminiserver/get/json/v1/1/temps
    scan_interval: 60
    sensor:
      - name: "Temperatur Ist Arbeitszimmer"
        device_class: temperature
        unit_of_measurement: "°C"
        value_template: "{{ value_json[1].raeume[2].temperatur|round(1) }}"
#
# Soll Temperatur Sensor Controme
#
      - name: "Temperatur Soll Arbeitszimmer"
        device_class: temperature
        unit_of_measurement: "°C"
        value_template: "{{ value_json[1].raeume[2].solltemperatur|round(1) }}"

Und der Generic Thermostat

climate:
  - platform: generic_thermostat
    name: Arbeitszimmer
    target_sensor: sensor.arbeitszimmer_ist_temperatur
    heater: input_boolean.controme_dummy_heater
    min_temp: 4.5
    max_temp: 30.5
    precision: 0.1

Die Shell Scripte um die werte über die REST API zu setzen. Das hat aus welchen Gründen auch immer nicht über die Rest Unterstützung in HA funktioniert.

shell_command:
    arbeitszimmer_ziel_temperatur_setzen: 'curl --location --request POST ''http://contromeminiserver/set/json/v1/1/ziel/5/'' --form ''ziel="{{ states(''sensor.arbeitszimmer_ziel_temperature_value'') }}"'' --form ''duration="default"'' --form ''user="user@localdomain.local"'' --form ''password="StrengGeheim"'''

Die Anzeige, ob aktuell geheizt wird, oder nicht funktioniert noch nicht. Ich habe noch keinen Weg gefunden diesen Wert aus Controme auszulesen, deshlab wird der Wert im Thermostat über einen helper gesetzt.

Neben den oben aufgeführten Sensoren habe ich noch ein paar Automatisierungen die regelmäßig prüfen, ob sich die Werte in Controme geändert haben und entsprechend die Werte auf dem Thermostat in HA aktualisiert werden muss.
Wenn Euch die Logik interessiert, dann kann ich die auch noch beschreiben.

Nach dem gleichen Prinzip habe ich auch manche Räume die mit im Raum mit einem HomematicIP Thermostat gesteuert werden eingebunden. Damit habe ich um Raum eine Anzeige der wichtigsten Werte und eine Bedienmöglichkeit ohne Handy oder Tablet. Das funktioniert zuverlässiger als die Wlan Thermostate von Controme.

1 „Gefällt mir“

Danke Dir für die Erklärung.

Aber leider ist dies für mich nicht nachvollziebar wie du das wo eingefügt bzw. was erstellt hast.
Da sind meine Kentnisse im HA doch zu anfängerhaft :sweat_smile:

Ich habe es über den yaml Creator soweit hinbekommen, dass die Werte ausgelesen werden und pro Sensor eine Entität angelegt wird.

Auch habe ich hierfür nicht alles in die configuration.yaml eingefügt, damit es weng übersichlicher bleibt sondern nur den Befehl

sensor: !include_dir_merge_list sensors

und im Odner config einen Odner mit Sensors angelegt und hier eine Datei mit controme.yaml die von den yaml Creator erstellt wurde eingefügt.

Beispiel Wohnzimmer:

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

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

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

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

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

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

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

    controme_wohnzimmerunten_sensor_3:
      friendly_name: 'Raumthermostat Wohnzimmer unten 3'
      unit_of_measurement: '°C'
      value_template: '{{ states.sensor.controme_wohnzimmerunten.attributes["sensoren"][3]["wert"] | round(2) }}'
      attribute_templates:
        letzte_uebertragung: '{{ states.sensor.controme_wohnzimmerunten.attributes["sensoren"][3]["letzte_uebertragung"] }}'
        name: '{{ states.sensor.controme_wohnzimmerunten.attributes["sensoren"][3]["name"] }}'
        beschreibung: '{{ states.sensor.controme_wohnzimmerunten.attributes["sensoren"][3]["beschreibung"] }}'

Aber dein Teil ist nochmals eine andere Nummer, da bin ich leider überfordert.
Trotzdem Danke

Nachtrag:
Und deine Möglichkeit mit einen Dritthersteller, also mit Homematic Thermostate Controme zu steuern ist natürlich auch geil.

Wir haben im Tierheim ja aktuell keine bedienbare Thermostate, sondern nur die Solar Enocean Dinger.
Aber wir haben Homematic IP. Genauso wie bei mir Zuhause, da habe ich noch die Danfoss Dinger von Controme, die naja sagen wir mal anzeigen können, aber ändern nicht gerade.

Ich muss mich mal genauer mit deiner Lösung beschäftigen, vieleicht bekomme ich es ja fürs Tierheim hin, wäre schon nicht schlecht, wenn die Mitarbeiter es über den HA steuern könnten.

:crayon:by HarryP: Zusammenführung Doppelpost

Ja wäre echt super wenn du ein schritt für schritt Anleitung machen könntest. Die Sensoren habe ich auch eingebunden, aber mit einem generic_thermostat und shell befehlen habe ich noch nie gearbeitet. muss für jeden raum ein Thermostat nach deinem Muster angelegt werden? wie weise ich einem Thermostat einen shell Befehl zu?

Vielen Dank für deine Mühe!!!

Ich versuche die Schritt für Schritt Anleitung, wird aber vielleicht ein klein wenig dauern.

3 „Gefällt mir“

Danke, so habe ich es bisher und gerade auch nochmals versucht.

Leider bekomme ich dieses Bild:


mit einer unendlichen “Sanduhr”?

Hast Du eine Idee?
Würde die HomeKit-Integration ungern löschen und neu einrichten, weil sonst auch mein
Aqara FP2 weg ist.

Hast du im Mini Server den Reset butten im homekit plugin gedrückt und dann neugestartet? Bei mir wird das gerät auch nach reset angezeigt. Verbinden geht aber erst nach einem neustart.