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