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.