Sicherst du dir auch schon den vollen Wohnkomfort? In diesem Video zeige ich dir, wie du deine Fußbodenheizung mit nur 4 cleveren Automationen und dem Home Assistant smart machst! Verpasse keine Tipps und Tricks, um Energie zu sparen und dein Zuhause gleichzeitig gemütlicher zu machen.
Schau jetzt rein und mach deine Fußbodenheizung intelligenter!
Inhaltsverzeichnis
Voraussetzungen
Home Assistant muss schon installiert sein, auf welcher Hardware spielt keine Rolle. Außerdem sollte du mit den Grundlagen sowie den Automationen vertraut sein:
- Home Assistant auf Intel NUC installieren (Generic x86-64) 🚀
- Home Assistant Grundlagen für Anfänger – From Zero to Hero
- Home Assistant Automation Tutorial – Komplett & verständlich erklärt
Hardware für Fußbodenheizung
Hier erstmal die gesamte Hardware, die ich verwendet habe. Für die Homematic Geräte wird natürlich eine [CCU oder RaspberryMatic] + HomematicLocal vorausgesetzt.
Controller
Das ist der im Video genutzte Controller, der die Ventile auch zu X% öffnen kann und nicht nur auf & zu kennt.
Ventil (1 Pro Kreislauf)
Diese Ventile passen zum Controller oben, andere sind bei diesem nicht möglich!
Raumthermostate
Funk-Thermostat
Hierbei handelt es sich um Funk-Thermostate die mit dem Controller im Verteilerkasten eine Verbindung herstellen (diese passen als für den Controller oben!). Alternativen für Verkabelte Installationen findest du unten.
Kabelgebundenes Thermostat
Bei Kabelgebundenen Thermostaten benötigst du keinen Controller, da diese „direkt“ mit den Ventilen verkabelt werden. Allerdings muss man zusätzlich darauf achten, dass die Spannung des Thermostats zur Spannung des Ventils passt.
Außerdem gibt es laut einigen Nutzererfahrungen im Forum den Unterschied / das Problem (wenn man das so sehen möchte), dass diese dann nur komplett auf oder zu gemacht werden können (wie auch beim HmIP-FAL230-C10).
ZigBee-Alternative
Selbst nicht getestet, hier ebenfalls genau auf die Spannung der Ventile achten!
Code für Automationen
Angelegte Helfer & Templates
| Name | Entitäts-ID |
|---|---|
| FBH Abschaltzeit W | input_datetime.fbh_abschaltzeit_w |
| FBH Abschaltzeit WE | input_datetime.fbh_abschaltzeit_we |
| FBH Anschaltzeit W | input_datetime.fbh_anschaltzeit_w |
| FBH Anschaltzeit WE | input_datetime.fbh_anschaltzeit_we |
| FBH Sonnensteuerung | input_boolean.fbh_sonnensteuerung |
| FBH Temperatursteuerung | input_boolean.fbh_temperatursteuerung |
| Tages-Temperatur | input_number.tages_temperatur |
| Nacht-Temperatur | input_number.nacht_temperatur |
| Bad Nacht-Temperatur | input_number.bad_nacht_temperatur |
| Urlaubsmodus | input_boolean.urlaubsmodus |
| Urlaubsstart | input_datetime.urlaubsstart |
| Urlaubsende | input_datetime.urlaubsende |
configuration.yaml Template-Code für Wettervorhersage der nächsten Stunde (erforderlich für Sonnensteuerung):
template:
- trigger:
- platform: time_pattern
hours: /1
action:
- service: weather.get_forecast
data:
type: hourly
target:
entity_id: weather.forecast_haus_elisabeth
response_variable: stundenvorhersage
sensor:
- name: Wetter-Vorhersage der nächsten Stunde
unique_id: forecast_next_1_hour
state: "{{ now().isoformat() }}"
icon: mdi:hours-24
attributes:
condition: "{{ stundenvorhersage.forecast[0].condition }}"
cloud_coverage: "{{ stundenvorhersage.forecast[0].cloud_coverage }}"
temnperature: "{{ stundenvorhersage.forecast[0].temperature }}"
Hinweis zum Code
Natürlich werden die Entitäts-Namen für euch nicht passen, aber ihr könnt euch zumindest den Aufbau der Automationen als eigene Automation kopieren.
Falls jemand suchen und ersetzen möchte, dies sind die Entitäts-Namen von Geräten, welche im Code vorkommen:
- climate.heizkorper_dg_zimmer
- climate.heizkorper_entspannungszimmer
- climate.heizkorper_esszimmer_links
- climate.thermostat_eszimmer
- climate.thermostat_wohnzimmer
- climate.wandthermostat_bad
Und ja: Mir ist bewusst, dass dort leider ein Rechtschreibfehler drinnen ist 😅
FBH – Temperatursteuerung
alias: FBH - Temperatursteuerung
description: ""
trigger:
- platform: time
at: input_datetime.fbh_anschaltzeit_w
id: AnschaltenW
- platform: time
at: input_datetime.fbh_anschaltzeit_we
id: AnschaltenWE
- platform: time
at: input_datetime.fbh_abschaltzeit_w
id: AbschaltenW
- platform: time
at: input_datetime.fbh_abschaltzeit_we
id: AbschaltenWE
condition:
- condition: and
conditions:
- condition: state
entity_id: input_boolean.fbh_temperatursteuerung
state: "on"
- condition: or
conditions:
- condition: and
conditions:
- condition: trigger
id:
- AnschaltenW
- condition: time
weekday:
- mon
- tue
- wed
- thu
- fri
- condition: and
conditions:
- condition: trigger
id:
- AnschaltenWE
- condition: time
weekday:
- sat
- sun
- condition: and
conditions:
- condition: trigger
id:
- AbschaltenW
- condition: time
weekday:
- mon
- tue
- wed
- thu
- fri
- condition: and
conditions:
- condition: trigger
id:
- AbschaltenWE
- condition: time
weekday:
- sat
- sun
- condition: not
conditions:
- condition: state
entity_id: input_boolean.urlaubsmodus
state: "on"
alias: Urlaubsmodus nicht aktiv
action:
- choose:
- conditions:
- condition: trigger
id:
- AnschaltenW
- AnschaltenWE
sequence:
- service: climate.set_temperature
data:
temperature: "{{(float(states('input_number.tages_temperatur')))}}"
target:
entity_id:
- climate.heizkorper_dg_zimmer
- climate.heizkorper_entspannungszimmer
- climate.heizkorper_esszimmer_links
- climate.thermostat_eszimmer
- climate.thermostat_wohnzimmer
- climate.wandthermostat_bad
- conditions:
- condition: trigger
id:
- AbschaltenW
- AbschaltenWE
sequence:
- service: climate.set_temperature
data:
temperature: "{{(float(states('input_number.nacht_temperatur')))}}"
target:
entity_id:
- climate.heizkorper_dg_zimmer
- climate.heizkorper_entspannungszimmer
- climate.heizkorper_esszimmer_links
- climate.thermostat_eszimmer
- climate.thermostat_wohnzimmer
- service: input_number.set_value
data:
value: "{{(float(states('input_number.nacht_temperatur'))) + 0.3}}"
target:
entity_id: input_number.ausschalt_temperatur
- service: input_number.set_value
data:
value: "{{(float(states('input_number.nacht_temperatur'))) - 0.2}}"
target:
entity_id: input_number.anschalt_temperatur
- service: climate.set_temperature
data:
temperature: "{{(float(states('input_number.bad_nacht_temperatur')))}}"
target:
entity_id:
- climate.wandthermostat_bad
mode: single
FBH – Sonnensteuerung
Die richtigen Azimut & Elevation-Werte zu finden, geht entweder über die von mir genutzte App Sun Seeker oder alternativ hier (am besten dafür die Uhrzeiten aufschreiben und schauen, wie zu dem Zeitpunkt der Sonnenstand war)
alias: FBH - Sonnensteuerung
description: ""
trigger:
- platform: state
entity_id:
- sensor.wetter_der_nachsten_stunde
attribute: condition
to: sunny
id: SunIsShiningNextHour
- platform: state
entity_id:
- sensor.wetter_der_nachsten_stunde
attribute: condition
id: NoSunNextHour
from: sunny
- alias: 1 Stunde bevor die Sonne untergeht
platform: sun
event: sunset
offset: "-01:00:00"
id: NoSunNextHour
condition:
- alias: Muss gesteuert werden (und)?
condition: and
conditions:
- condition: state
entity_id: input_boolean.fbh_sonnensteuerung
state: "on"
alias: Steuerung aktiv?
- alias: Zur richtigen Zeit? (außerhalb der Abschalt-Zeiten)
condition: or
conditions:
- alias: Im Tages-Zeit-Slot am Wochenende
condition: time
after: input_datetime.fbh_anschaltzeit_we
before: input_datetime.fbh_abschaltzeit_we
weekday:
- sat
- sun
- alias: Im Tages-Zeit-Slot unter der Woche
condition: time
after: input_datetime.fbh_anschaltzeit_w
before: input_datetime.fbh_abschaltzeit_w
weekday:
- fri
- thu
- tue
- mon
- wed
- alias: Temperaturen weichen vom Soll-Wert der Sonnensteuerung ab?
condition: or
conditions:
- alias: Muss die Temperatur gesenkt werden?
condition: and
conditions:
- condition: trigger
id:
- SunIsShiningNextHour
alias: Die sonne scheint bald
- condition: or
conditions:
- condition: template
value_template: >-
{{ states('input_number.tages_temperatur') | float ==
state_attr('climate.thermostat_wohnzimmer', 'temperature')
| float }}
alias: Temperatur ist Tages-Temperatur
- alias: Temperatur ist höher als Tages-Temperatur
condition: template
value_template: >-
{{ states('input_number.tages_temperatur') | float <
state_attr('climate.thermostat_wohnzimmer', 'temperature')
| float }}
alias: Temperatur höher oder gleich Tages-Temperatur
- condition: numeric_state
entity_id: sun.sun
attribute: azimuth
above: 170
below: 217
alias: Sonne im Bereich des Fenster? (Links - Rechts)
- alias: Sonne im Bereich des Fenster? (Unten - Oben)
condition: numeric_state
entity_id: sun.sun
attribute: azimuth
above: 8
below: 30
- alias: Muss die Temperatur erhöht werden?
condition: and
conditions:
- alias: Es ist nicht sonnig die nächste Stunde
condition: trigger
id:
- NoSunNextHour
- alias: Temperatur niedriger als Tages-Temperatur
condition: template
value_template: >-
{{ states('input_number.tages_temperatur') | float >
state_attr('climate.thermostat_wohnzimmer', 'temperature') |
float }}
- condition: or
conditions:
- condition: not
conditions:
- condition: state
entity_id: sensor.wetter_der_nachsten_stunde
attribute: condition
state: sunny
alias: Wettervorhersage ist nicht sonnig
- condition: sun
after: sunset
after_offset: "-01:00:00"
alias: 1 Stunde bevor die Sonne untergeht
alias: Sonne scheint nicht oder geht bald unter?
- condition: not
conditions:
- condition: state
entity_id: input_boolean.urlaubsmodus
state: "on"
alias: Urlaubsmodus nicht aktiv
action:
- choose:
- conditions:
- condition: trigger
id:
- SunIsShiningNextHour
sequence:
- service: climate.set_temperature
data:
temperature: "{{(float(states('input_number.tages_temperatur'))) - 0.5}}"
target:
entity_id:
- climate.heizkorper_dg_zimmer
- climate.heizkorper_esszimmer_links
- climate.thermostat_eszimmer
- climate.thermostat_wohnzimmer
alias: Verringern der Temperatur um 0,5 Grad
- conditions:
- condition: trigger
id:
- NoSunNextHour
sequence:
- service: climate.set_temperature
data:
temperature: "{{(float(states('input_number.tages_temperatur')))}}"
target:
entity_id:
- climate.heizkorper_dg_zimmer
- climate.heizkorper_esszimmer_links
- climate.thermostat_eszimmer
- climate.thermostat_wohnzimmer
alias: Zurücksetzen auf Tages-Temperatur
mode: single
FBH – Notabschaltung
Voraussetzung ist die Überwachung von Rohr-Temperaturen der Heizung, zumindest in meinem speziellem Fall 😉
alias: FBH - Notabschaltung
description: ""
trigger:
- platform: numeric_state
entity_id: sensor.vorlauf_fbh
for:
hours: 0
minutes: 3
seconds: 0
above: 48.4
id: Notabschaltung
- platform: numeric_state
entity_id: sensor.vorlauf_fbh
for:
hours: 0
minutes: 5
seconds: 0
id: WiederAnschalten
below: 48.1
condition: []
action:
- choose:
- conditions:
- condition: trigger
id:
- Notabschaltung
sequence:
- type: turn_off
device_id: a54c7740e13c9b5c91b98bc4262fdea4
entity_id: c45482b6c3193829cb1e67a1d0a9d36a
domain: switch
- service: notify.notify
data:
message: >-
Die Fußbodenheizungspumpe wurde deaktiviert, da der Vorlauf zu
heiß ist!
title: Notabschaltung FBH!
- conditions:
- condition: trigger
id:
- WiederAnschalten
sequence:
- type: turn_on
device_id: a54c7740e13c9b5c91b98bc4262fdea4
entity_id: c45482b6c3193829cb1e67a1d0a9d36a
domain: switch
- service: notify.notify
data:
message: Die Fußbodenheizungspumpe wurde wieder aktiviert!
title: Wiederanlauf FBH!
mode: single
FBH – Pumpensteuerung
Basiert auf den Ventil-Öffnungsangaben des Homematic-Controllers.
alias: FBH - Pumpensteuerung
description: ""
trigger:
- platform: numeric_state
entity_id: sensor.fusbodenheizungscontroller_hmip_falmot_c12_level_ch1
above: 0
id: PumpOn
enabled: true
- platform: numeric_state
entity_id: sensor.fusbodenheizungscontroller_hmip_falmot_c12_level_ch2
above: 0
id: PumpOn
- platform: numeric_state
entity_id: sensor.fusbodenheizungscontroller_hmip_falmot_c12_level_ch3
above: 0
id: PumpOn
- platform: numeric_state
entity_id: sensor.fusbodenheizungscontroller_hmip_falmot_c12_level_ch1
id: PumpOff
below: 1
enabled: true
- platform: numeric_state
entity_id: sensor.fusbodenheizungscontroller_hmip_falmot_c12_level_ch2
id: PumpOff
below: 1
- platform: numeric_state
entity_id: sensor.fusbodenheizungscontroller_hmip_falmot_c12_level_ch3
id: PumpOff
below: 1
condition:
- alias: Muss Pumpe an- oder ausgeschaltet werden?
condition: or
conditions:
- alias: Muss Pumpe angeschaltet werden?
condition: and
conditions:
- condition: trigger
id:
- PumpOn
- condition: device
type: is_off
device_id: a54c7740e13c9b5c91b98bc4262fdea4
entity_id: c45482b6c3193829cb1e67a1d0a9d36a
domain: switch
- alias: Sollte die Pumpe ausgeschaltet werden?
condition: and
conditions:
- condition: trigger
id:
- PumpOff
- condition: numeric_state
entity_id: sensor.fusbodenheizungscontroller_hmip_falmot_c12_level_ch1
below: 1
enabled: true
- condition: numeric_state
entity_id: sensor.fusbodenheizungscontroller_hmip_falmot_c12_level_ch2
below: 1
- condition: numeric_state
entity_id: sensor.fusbodenheizungscontroller_hmip_falmot_c12_level_ch3
below: 1
- condition: device
type: is_on
device_id: a54c7740e13c9b5c91b98bc4262fdea4
entity_id: c45482b6c3193829cb1e67a1d0a9d36a
domain: switch
action:
- choose:
- conditions:
- condition: trigger
id:
- PumpOn
sequence:
- type: turn_on
device_id: a54c7740e13c9b5c91b98bc4262fdea4
entity_id: c45482b6c3193829cb1e67a1d0a9d36a
domain: switch
- conditions:
- condition: trigger
id:
- PumpOff
sequence:
- type: turn_off
device_id: a54c7740e13c9b5c91b98bc4262fdea4
entity_id: c45482b6c3193829cb1e67a1d0a9d36a
domain: switch
mode: single
FBH – Bad Comfort-Temperatur
alias: FBH - Bad Comfort-Temperatur
description: ""
trigger:
- type: motion
platform: device
device_id: e9c06c437ac2030b21c3ad0db76962d1
entity_id: 807c8072a0112779c51d224304467e97
domain: binary_sensor
id: BewegungErkannt
- type: no_motion
platform: device
device_id: e9c06c437ac2030b21c3ad0db76962d1
entity_id: 807c8072a0112779c51d224304467e97
domain: binary_sensor
id: KEINEBewegungErkannt
for:
hours: 0
minutes: 15
seconds: 0
condition:
- condition: or
conditions:
- condition: time
after: input_datetime.fbh_anschaltzeit_w
before: "08:30:00"
weekday:
- mon
- tue
- wed
- thu
- fri
- condition: time
after: input_datetime.fbh_anschaltzeit_we
before: "08:30:00"
weekday:
- sat
- sun
- condition: time
after: "18:00:00"
before: input_datetime.fbh_abschaltzeit_we
weekday:
- sat
- sun
- condition: time
after: "18:00:00"
before: input_datetime.fbh_abschaltzeit_w
weekday:
- mon
- tue
- wed
- thu
- fri
- condition: trigger
id:
- KEINEBewegungErkannt
- condition: not
conditions:
- condition: state
entity_id: input_boolean.urlaubsmodus
state: "on"
alias: Urlaubsmodus nicht aktiv
action:
- choose:
- conditions:
- condition: trigger
id:
- KEINEBewegungErkannt
- condition: numeric_state
entity_id: climate.wandthermostat_bad
attribute: temperature
above: input_number.tages_temperatur
sequence:
- service: climate.set_temperature
data:
temperature: "{{(float(states('input_number.tages_temperatur')))}}"
target:
entity_id: climate.wandthermostat_bad
- conditions:
- condition: trigger
id:
- BewegungErkannt
- condition: numeric_state
entity_id: climate.wandthermostat_bad
attribute: temperature
below: input_number.tages_temperatur
sequence:
- service: climate.set_temperature
data:
temperature: "{{(float(states('input_number.tages_temperatur'))) + 0.5}}"
target:
entity_id: climate.wandthermostat_bad
mode: single
Urlaubsmodus-Steuerung
alias: Urlaubsmodus-Steuerung
description: ""
trigger:
- platform: state
entity_id:
- input_boolean.urlaubsmodus
from: "off"
to: "on"
alias: UrlaubAktiviert
id: UrlaubAktiviert
- platform: state
entity_id:
- input_datetime.urlaubsstart
id: UrlaubsStartGeaendert
- platform: state
entity_id:
- input_datetime.urlaubsende
id: UrlaubsEndeGeaendert
- alias: 6 Stunden vor Urlaubsende
platform: template
value_template: >-
{{ (now() + timedelta(minutes=360)).strftime('%Y-%m-%d %H:%M') ==
states('input_datetime.urlaubsende')[:-3] }}
id: 6StundenVorUrlaubsende
- platform: time
at: input_datetime.urlaubsstart
id: UrlaubsStart
condition: []
action:
- choose:
- conditions:
- condition: trigger
id:
- 6StundenVorUrlaubsende
sequence:
- service: input_boolean.turn_off
target:
entity_id: input_boolean.urlaubsmodus
data: {}
- service: homeassistant.turn_off
target:
entity_id:
- switch.presence_simulation
device_id: []
area_id: []
data: {}
- conditions:
- condition: trigger
id:
- UrlaubsStart
sequence:
- service: input_boolean.turn_on
target:
entity_id:
- input_boolean.urlaubsmodus
device_id: []
area_id: []
data: {}
- conditions:
- condition: trigger
id:
- UrlaubsStart
- UrlaubAktiviert
- UrlaubsStartGeaendert
- UrlaubsEndeGeaendert
- condition: template
value_template: >-
{{ (now() + timedelta(minutes=-2)).strftime('%Y-%m-%d %H:%M') >=
states('input_datetime.urlaubsstart')[:-3] }}
alias: Nach Urlaubsstart
- alias: Vor Urlaubsende
condition: template
value_template: >-
{{ (now() + timedelta(minutes=0)).strftime('%Y-%m-%d %H:%M') <=
states('input_datetime.urlaubsende')[:-3] }}
sequence:
- service: climate.set_temperature
data:
temperature: 17
target:
entity_id:
- climate.heizkorper_dg_zimmer
- climate.heizkorper_entspannungszimmer
- climate.heizkorper_esszimmer_links
- climate.thermostat_eszimmer
- climate.thermostat_wohnzimmer
- climate.wandthermostat_bad
- service: homeassistant.turn_on
target:
entity_id: switch.presence_simulation
data: {}
mode: single
Geräte für HA
Mehr Geräte für Home Assistant, HACS oder auch Alexa, Google Home, HomeKit sowie Homebridge findest du in unserem Smart Home Gerätefinder!
Fazit
Zusammenfassend lässt sich sagen, dass das Smart-Machen deiner Fußbodenheizung nicht nur deinen Wohnkomfort erheblich steigern kann, sondern dir auch ermöglicht, erheblich Energie und Kosten zu sparen.
Mit Home Assistant und den 4 vorgestellten Automationen kannst du ein neues Level von Effizienz und Komfort erreichen, indem du nützliche Funktionen wie Nachtabsenkung oder Urlaubsmodus nutzt.
Mache den ersten Schritt in ein smarteres Zuhause noch heute!





Das Video fand ist sehr interessant, kann mir davon viele Sachen für meine Heizungssteuerung rausziehen, die ich noch bauen werden - aber das wird erst nach dem Winter passieren.
Bei FBH muss man wirklich aufpassen, was und wie man regelt. Beim Bekannten von mir hat ein Test mir/ohne Nachabsenkung dazu geführt, das der Energieverbrauch mit Nachabsenkung deutlich angestiegen ist ( Passivhaus, Erdwärmepumpe mit FBH ) im Vergleich zu der Zeit wo die ohne Absenkung nachts durchgelaufen ist.
Guten Morgen simon42 und Mitleser ;-),
ich bewundere dein Verständnis zu Automatisierungen und habe das Video sehr gerne geschaut.
Gerne möchte ich auch den Fussbodenheizungscontroller installieren und eine Einrichtung zwischen RaspberryMatic-VM und HomeAssistant vornehmen.
Ich frage mich allerdings zwei Dinge, vielleicht mag mir jemand auf die “Sprünge helfen”:
Viele Grüße, Stoffi
EDIT: oder ist mein Gedankengang zum zweiten Punkt Blödsinn, da ich eigentlich die Homematic Wandthermostate in der CUU3 mit einbinden müsste, damit die Logik zur Einstellung der Ventilstellung (z. B. Öffnen von 23% auf 28% um Sollwert zu erreichen) arbeiten kann?
Hallo zusammen,
mit Begeisterung schaue Ich regelmäßig deine Videos und habe auch schon - dank deiner Hilfe - das ein oder andere gemeistert.
Nun wollte Ich aus deinem letzten Video einmal die Geschichte mit der Sonnensteuerung nutzen, nur leider bekomme Ich schon die Stundenvorhersage mit dem hier hinterlegten Code nicht hin. Ich bekomme immer die Fehlermeldung: ‘stundenvorhersage’ is undefined.
Habe Ich vielleicht etwas überlesen und man muss ‘stundenvorhersage’ vorher noch irgendwo anlegen ?
Besten Dank im Voraus
Gruß
Magnus
Hi,
Ich bin am überlegen auf ein smartes System zu wechseln.
Mir würde theoretisch reichen wenn ich die Aktoren direkt in home assistant ansteuern könnte, finde hierzu jedoch nichts.
Dh zum Gateway benötige ich ebenfalls noch den AP von HMIP, korrekt?
Wäre es denn nicht auch denkbar einfach “normale” Stellantriebe für Heizkörper zu nehmen und zu integrieren?
Temp. Steuerung über meine vorhandenen Aquara Temp Sensoren?
Oder übersehe ich hier aktuell was?
Danke für das Video, @simon42 . Gerade als HA-Einsteiger sehr hilfreich. Zwei Fragen: du sagst im Video, dass du auch die Code-Snippets für das Dashboard in den Blog-Beitrag packst. Die konnte ich jetzt da nicht finden… Und könntest du im Zuge dessen evtl. auch noch zeigen wie die Helfer eingestellt sind? Gerade bei den input_number-Helfern gibt es ja einige Einstellmöglichkeiten. (vll erklärt sich das aber auch schon mit den Dashboard Code-Snippets). LG talkstar