Du hast Schimmelprobleme oder willst verhindern, dass dieser überhaupt entsteht?
Hier zeige ich dir, wie du mit Home Assistant berechnen kannst, ob du ein Fenster öffnen solltest, um die Luftfeuchtigkeit zu senken oder ob es sogar kontraproduktiv wäre 🙌
Inhaltsverzeichnis
Voraussetzungen
Home Assistant muss bereits installiert sein, auf welcher Hardware spielt keine Rolle.
Benötigte Gadgets
Wie im Video angesprochen, benötigst du eine Temperatur und Luftfeuchtigkeitssensor, sowohl für innen als auch für außen. Anschließend einige mögliche Geräte für Home Assistant, die du nutzen könntest.
ZigBee
Diese Geräte benötigen auf Home Assistant z.B. Zigbee2MQTT






Günstige Alternative von Aliexpress: Tuya-WSD500A
Dies ist der Sensor, den ich für außen benutze: https://go.simon42.com/Tuya-WSD500A*
Die beiden Aqara-Sensoren von oben sind übrigens etwas genauer, was Messerergebnisse angeht.
Wenn du dich für die Genauigkeit der Sensoren interessierst, kann ich dir diesen Beitrag empfehlen.
Wi-Fi





Homematic / RaspberryMatic

Wichtiger Hinweis
Mir war nicht bewusst, dass es auch von Home Assistant einen Mold Indicator gibt.
Der Schimmelindikator-Sensor nutzt die Informationen von zwei Temperatursensoren und einem Feuchtigkeitssensor, um einen Hinweis auf mögliche Schimmelbildung in Ihrer Wohnung zu geben.
https://www.home-assistant.io/integrations/mold_indicator/
Könnte also alternativ zur manuellen Berechnung unten verwendet werden, danke an euch für den Hinweis 🙏
Code-Snippets
Hier die versprochenen Abschnitte aus meiner Configuration.yaml sowie die Automation
Absolute Luftfeuchtigkeit & Unterschied
template: # Errechnet aus der relativen Luftfeuchtigkeit und Temperatur im Innenraum die absolute Luftfreuchtigkeit in Gramm pro Kubikmeter - name: "Absolute Luftfeuchtigkeit SZ" unique_id: "AbsoluteHumiditySZ" unit_of_measurement: "g/m^3" state_class: "measurement" state: > {{ ( 1000*e**(19.016-(4064.95/(float(states('sensor.aqara_tvoc_air_quality_monitor_temperature'))+236.25)))*100/(461.66*(float(states('sensor.aqara_tvoc_air_quality_monitor_temperature'))+273.15)) * float(states('sensor.aqara_tvoc_air_quality_monitor_humidity'))/100 | float) | round (2) }} # Errechnet aus der relativen Luftfeuchtigkeit und Temperatur außen die absolute Luftfreuchtigkeit in Gramm pro Kubikmeter - name: "Absolute Luftfeuchtigkeit außen" unique_id: "AbsoluteHumidityOutside" unit_of_measurement: "g/m^3" state_class: "measurement" state: > {{ ( 1000*e**(19.016-(4064.95/(float(states('sensor.tuya_temperature_humidity_sensor_temperature'))+236.25)))*100/(461.66*(float(states('sensor.tuya_temperature_humidity_sensor_temperature'))+273.15)) * float(states('sensor.tuya_temperature_humidity_sensor_humidity'))/100 | float) | round (2) }} # Errechnet den Untschied der Luftfeuchte von innen und außen in Gramm pro Kubikmeter - name: "Absolute Luftfeuchtigkeit Unterschied" unique_id: "AbsoluteHumidityDifference" unit_of_measurement: "g/m^3" state_class: "measurement" state: > {{ ( float(states('sensor.absolute_luftfeuchtigkeit_sz')) - float(states('sensor.absolute_luftfeuchtigkeit_aussen')) ) | float | round (2) }}
Hinweis
Ich wurde in den Kommentaren mehrmals darauf hingewiesen, dass es auch die HACS-Repo Thermal-Comfort dafür gibt.
Diese berechnet die absolute Luftfeuchtigkeit und noch einige andere Werte automatisch 😅
Automation
Natürlich dient der Unterschied von 4 nur zu Demonstrationszwecken und kann von dir auf deinen Anforderungen geändert werden 😀
alias: Notify - Humidity description: "" trigger: - platform: numeric_state entity_id: sensor.absolute_luftfeuchtigkeit_unterschied above: 4.5 id: above for: hours: 0 minutes: 5 seconds: 0 - platform: numeric_state entity_id: sensor.absolute_luftfeuchtigkeit_unterschied for: hours: 0 minutes: 5 seconds: 0 below: 4 id: below condition: [] action: - choose: - conditions: - condition: trigger id: above sequence: - service: notify.notify data: title: Bitte Fenster öffnen message: >- Die Luftfeuchtigkeit in der Wohnung ist hoch im Vergleich zu außen. Bitte ein Fenster öffnen! - condition: time after: "07:00:00" before: "21:30:00" weekday: - mon - tue - wed - thu - fri - sat - sun - service: media_player.play_media data: media_content_id: http://192.168.1.200:8123/local/BitteEinFensterOeffnen.mp3 media_content_type: music announce: true target: entity_id: media_player.homepod_mini_schlafzimmer default: - condition: state entity_id: binary_sensor.fenster_schlafzimmer_state state: "on" - service: notify.notify data: title: Fenster kann wieder geschlossen werden. message: Die Luftfeuchtigkeit hat sich ausreichend angeglichen. mode: single
Erweiterte Automation
Die Automation oben ist als Startpunkt zu verstehen und kann bzw. sollte natürlich nach Belieben erweitert werden.
Unten ist z.B. meine aktuelle Version, in der ebenfalls berücksichtigt wird, ob die relative Luftfeuchtigkeit innen über 55 % liegt (den dann sollte gelüftet werden, spätestens bei 60 %).
Außerdem wird geprüft, ob der HomePod grade Musik abspielt und wenn dem so ist, wird die Wiedergabe nach Abschluss der Ansage fortgesetzt.
alias: Notify - Humidity description: "" trigger: - platform: numeric_state entity_id: sensor.absolute_luftfeuchtigkeit_unterschied above: 4.5 id: above for: hours: 0 minutes: 5 seconds: 0 - platform: numeric_state entity_id: sensor.aqara_tvoc_air_quality_monitor_humidity above: 60 id: aboverel for: hours: 0 minutes: 5 seconds: 0 - platform: numeric_state entity_id: sensor.absolute_luftfeuchtigkeit_unterschied for: hours: 0 minutes: 2 seconds: 0 below: 4 id: below - platform: numeric_state entity_id: sensor.aqara_tvoc_air_quality_monitor_humidity for: hours: 0 minutes: 2 seconds: 0 below: 56 id: below condition: - condition: or conditions: - condition: trigger id: below - condition: and conditions: - condition: trigger id: above - condition: numeric_state entity_id: sensor.aqara_tvoc_air_quality_monitor_humidity above: 55 - condition: and conditions: - condition: trigger id: aboverel - condition: numeric_state entity_id: sensor.absolute_luftfeuchtigkeit_unterschied above: 3 action: - choose: - conditions: - condition: or conditions: - condition: trigger id: above - condition: trigger id: aboverel sequence: - service: notify.notify data: title: Bitte Fenster öffnen message: >- Die Luftfeuchtigkeit in der Wohnung ist hoch im Vergleich zu außen. Bitte ein Fenster öffnen! - condition: time after: "07:00:00" before: "21:30:00" weekday: - mon - tue - wed - thu - fri - sat - sun - choose: - conditions: - condition: device device_id: d6e070c62eebf0a8eaece4ead0fce5fe domain: media_player entity_id: media_player.homepod_mini_schlafzimmer type: is_playing sequence: - service: media_player.play_media data: media_content_id: >- media_content_type: music announce: true target: entity_id: media_player.homepod_mini_schlafzimmer - delay: hours: 0 minutes: 0 seconds: 3 milliseconds: 0 - service: media_player.media_play_pause data: {} target: entity_id: media_player.homepod_mini_schlafzimmer default: - service: media_player.play_media data: media_content_id: http://192.168.1.200:8123/local/BitteEinFensterOeffnen.mp3 media_content_type: music announce: true target: entity_id: media_player.homepod_mini_schlafzimmer default: - condition: state entity_id: binary_sensor.fenster_schlafzimmer_state state: "on" - service: notify.notify data: title: Fenster kann wieder geschlossen werden. message: Die Luftfeuchtigkeit hat sich ausreichend angeglichen. mode: single
Fazit
Jetzt musst du dich also nicht mehr auf dein Bauchgefühl verlassen, um ein Fenster zu öffnen, sondern bekommst von Home Assistant eine Benachrichtigung zum Lüften, wenn das eine gute Idee oder erforderlich ist.
Natürlich lässt sich diese Automation noch beliebig erweitern, z.B. um die Berücksichtigung der relativen Luftfeuchtigkeit als Bedingung oder mit der Luftqualität als Trigger. Deiner Kreativität sind keine Grenzen gesetzt 🙌
Wenn du Fragen oder Anmerkungen hast, zögere nicht, sie mir unten in den Kommentaren mitzuteilen und ich werde mein Bestes tun, um dir zu helfen. Vielen Dank fürs Zuschauen!
Hallo Simon,
Nur ne kleine Frage wegen Tuya-WSD500A, geht der ohne Probleme in HA oder muss da so ein Work Around geschaffen werden, ich glaube MQTT oder.
Meine Absicht ist, einfach nur anmelden (Zigbee) und los gehts.
Schon mal Danke für deine Nachricht.
Cu Alex
PC Klasse Kanal u. Forum.
Hallo,
ich habe mal eine Frage zu der Auslöser-ID in Automatiesierung:
Wenn ich eine weitere Automatiesierung einrichte, darf ich die Auslöser-ID dort nochmal verwenden?
Ist die Auslöser-ID nur auf die Automatiesierung wo sie eingetragen ist aktiv oder ist diese Systemweit beim Home Assistant?
Die gilt nur für die Automatisierung selbst, ich versuche aber nichts doppelt anzulegen 😉
Hallo Simon
Sorry …
bin mit meinem Latein am Ende.
Sobald ich diesen Teil des Template einfüge erhalte ich einen Fehler im LOG :
siehe Anhang !
Ich finde bzw. sehe keinen “\n” am Zeilenende. Die gebildeten absoluten Sensoren funktionieren. NUR die Differenzbildung will nicht funktionieren.
LG
Der Code ist so nicht lesbar, bitte als Code einfügen:
Hallo Simon, der Affiliate-Link zu Homematic könnte Dir ggf. mehr Probleme als Geld einbringen. Das HmIP-WTH-2 (ja, ist ein anderes), wie bei mir, liefert “climate.” als Domain zurück. Damit kommt die Formel in Deiner Anleitung nicht klar. Wenn die Domain “sensor.” ist, läuft alles.
Der Grund ist vermutlich hier beschrieben:
Neue HomeMatic Integration für Home Assistant (Tester & Feedback erwünscht) – HomeMatic-Forum / FHZ-Forum
Das kann ich aber nicht verifizieren.
Falls es eine Lösung dafür gibt, oder man etwas an der Domain/Entität manipulieren kann, freue ich mich über ein Video-Update.
Grüße
Axel
Hi Axel, mit einem Template Sensor ist es einfach zu realisieren.
Wollte ich auch grade sagen, danke dir Sascha 💙
Hallo Simon,
zuerst mal vielen Dank für die vielen super Videos! Ich mag Deinen Style und mittlerweile, bevor ich mir irgendwelche anderen Videos zu HA anschaue, schaue ich erstmal, was es bei Dir Neues gibt.
Nachdem ich Dein Setup zum Laufen gebracht habe, mit einem Aqara Innensensor draussen, habe ich mir den HmIP-STHO für draußen gekauft.
Jetzt bekomme ich Werte für die abs. Diff., die deutlich niedriger sind als vorher bzw. wie in Deinem Video, und auch negativ werden, zb im SZ (s. Anhang). Hast Du eine Idee an was das liegt, habe nichts an den Formeln geändert, außer die Sensoren.
Mir ist auch aufgefallen, dass in Deinem Video in der config.yaml ein “- sensor:” drin hast, in dem Code hier fehlt der. Da im Video darüber nichts mehr zu sehen war, hat das eine Auswirkung?
Hier noch der Code meiner YAML:
Besten Dank vorab und weiter so!
Grüße Axel
Hallo Sascha,
ich muss mich korrigieren. Die Entität “..actual_temperature” war versteckt. Nachdem ich sie “entsteckt” habe, konnte ich sie verwenden.
Danke Dir!
Moin, würdest du das ganze auch mit den Wetterdaten, statt eines extra Sensors draußen empfehlen oder hat jemand Erfahrungen damit?
Sollte prinzipiell gehen, ist vermutlich aber dann sehr ungenau (abhängig vom Standort der tatsächlichen Wetterstation, von der die Daten kommen)
Kann mir vielleicht hier einer erklären warum ich das Teil nicht zum Laufen bekomme? Ich bekomme immer folgende Fehlermeldung
Invalid config for [sensor.template]: expected dictionary for dictionary value @ data[‘sensors’]. Got [OrderedDict([(‘name’, ‘Absolute Luftfeuchtigkeit Bad’), (‘unique_id’, ‘AbsoluteHumidityBad’), (‘unit_of_measurement’, ‘g/m^3’), (‘state’, “{{ ( 1000*e**(19.016-(4064.95/(float(states(‘sensor.bad_wandthermostat_temperature’))+236.25)))*100/(461.66*(float(states(‘sensor.bad_wandthermostat_temperature’))+273.15)) * float(states(‘sensor.bad_wandthermostat_humidity’))/100 | float) | round (2) }}\n”)])]. (See ?, line ?).
Ich arbeite aber mit eigenen YAML’s und habe es bei den „SENSOREN“ hinzugefügt. Auszug aus meiner configuration.yaml:
sensor: !include_dir_merge_list sensors/
Auszug aus meiner Template.yaml:
– platform: template
sensors:
– name: “Absolute Luftfeuchtigkeit Bad”
unique_id: “AbsoluteHumidityBad”
unit_of_measurement: “g/m^3”
state: >
{{ ( 1000*e**(19.016-(4064.95/(float(states(‘sensor.bad_wandthermostat_temperature’))+236.25)))*100/(461.66*(float(states(‘sensor.bad_wandthermostat_temperature’))+273.15)) * float(states(‘sensor.bad_wandthermostat_humidity’))/100 | float) | round (2) }}
Danke für eure Hilfe
Hallo René, du mixt hier alte und neue Schreibweise für den Template Sensor, aber ich denke du bist schon dahinter gekommen.
Hallo Sascha,
leider nein, ich habe jetzt einfach die Sensoren mit Thermal Control eingerichtet und nur die Differenz rechne ich über Templates aus. Die Formel für die manuelle Berechnung habe ich nicht als Template zum Laufen gebracht. So sieht das jetzt bei mir aus:
– platform: template
sensors:
bad_balkon_humidity_diff:
unique_id: “bad_balkon_humidity_diff”
friendly_name: “Absolute Luftfeuchtigkeit Unterschied Bad”
unit_of_measurement: “g/m³”
value_template: >
{{ (states(‘sensor.absolute_luftfeuchtigkeit_bad_absolutehumidity’) | float – states(‘sensor.absolute_luftfeuchtigkeit_balkon_absolutehumidity’) | float )| round(1) }}
LG
Hallo René, das hier ist ja kein Forum. Also weiß ich auch nicht wie weit wir hier gehen sollen. Aber ich würde dir wirklich empfehlen auf das neue Format umzusteigen. Oben bei deiner Kopie, sieht man auch nicht mehr, ob die Einrückungen passen, das ist ja nunmal das A und O bei YAML. Wenn ich dein Snippet kopiere, dann passen die Einrückungen nicht, muss aber nichts heißen. Und eine Fehlermeldung für deine letzte Variante hast du auch nicht bereitgestellt.
Yepp, wie von Simon geschrieben, unterscheidet sich der hier gepostete template Eintrag von dem den Du in Deinem Video zeigst 😉
Blödsinn, von Yannik :-))
Hallo Simon, danke für deine Anleitung:
Mir ist ein Fehler aufgefallen:
Bei deinem Template script fehlt bei jedem – sensor:
template:
# Errechnet aus der relativen Luftfeuchtigkeit und Temperatur im Innenraum die absolute Luftfreuchtigkeit in Gramm pro Kubikmeter
– name: “Absolute Luftfeuchtigkeit SZ”
unique_id: “AbsoluteHumiditySZ”
unit_of_measurement: “g/m^3”
state: >
{{ ( 1000*e**(19.016-(4064.95/(float(states(‘sensor.aqara_tvoc_air_quality_monitor_temperature’))+236.25)))*100/(461.66*(float(states(‘sensor.aqara_tvoc_air_quality_monitor_temperature’))+273.15)) * float(states(‘sensor.aqara_tvoc_air_quality_monitor_humidity’))/100 | float) | round (2) }}
sollte sein:
template:
# Errechnet aus der relativen Luftfeuchtigkeit und Temperatur im Innenraum die absolute Luftfreuchtigkeit in Gramm pro Kubikmeter
– sensor:
– name: “Absolute Luftfeuchtigkeit SZ”
unique_id: “AbsoluteHumiditySZ”
unit_of_measurement: “g/m^3”
state: >
{{ ( 1000*e**(19.016-(4064.95/(float(states(‘sensor.aqara_tvoc_air_quality_monitor_temperature’))+236.25)))*100/(461.66*(float(states(‘sensor.aqara_tvoc_air_quality_monitor_temperature’))+273.15)) * float(states(‘sensor.aqara_tvoc_air_quality_monitor_humidity’))/100 | float) | round (2) }}
Man benötigt nicht zwingend einen Außensensor, sonder kann auch eine weather integration nutzen. Den wert für Temperatur und Luftfeuchtigkeit bekommt man dann wie folgt:
template:
# Errechnet aus der relativen Luftfeuchtigkeit und Temperatur außen die absolute Luftfreuchtigkeit in Gramm pro Kubikmeter
– sensor:
– name: “Absolute Luftfeuchtigkeit außen”
unique_id: “AbsoluteHumidityOutside”
unit_of_measurement: “g/m^3”
state: >
{{ ( 1000*e**(19.016-(4064.95/(float(state_attr(‘weather.home’, ‘temperature’))+236.25)))*100/(461.66*(float(state_attr(‘weather.home’, ‘temperature’))+273.15)) * float(state_attr(‘weather.home’, ‘humidity’))/100 | float) | round (2) }}
Hallo Simon
ein Alternative für den Meßbereich -30°C bis max. 40°C
# Ermittelt aus der relativen Luftfeuchtigkeit und Temperatur außen die absolute Luftfreuchtigkeit in Gramm pro Kubikmeter
– name: “Absolute Luftfeuchtigkeit außen”
unique_id: “AbsoluteHumidityOutside”
unit_of_measurement: “g/m^3”
state: >
{% set tab = [ 0.45,0.5,0.55,0.6,0.65,0.71,0.77,0.84,0.91,0.99,
1.08,1.17,1.27,1.37,1.49,1.61,1.74,1.88,2.03,
2.19,2.36,2.55,2.74,2.95,3.17,3.41,3.66,3.93,
4.22,4.53,4.85,5.19,5.56,5.95,6.36,6.8,7.26,
7.75,8.27,8.81,9.39,10.01,10.65,11.34,12.06,
12.82,13.62,14.46,15.35,16.29,17.28,18.32,19.41,
20.55,21.76,23.03,24.35,25.75,27.22,28.76,30.37,
32.06,33.82,35.66,37.59,39.62,41.72,42.93,46.25,
48.66,51.18 ] %}
{{ ( float( tab[ [ state_attr(‘weather.home’,’temperature’) | int , 40 ] | min | int + 30 ] ) *
float(state_attr(‘weather.home’,’humidity’))/100 | float )| round (2) }}
Danke dir 💙
Hi Simon, wunderbar.
Danke für deine tolle Anleitung. Ich wollte wie Yannik die Daten vom externen Wetterdienst nutzen, der bereits in Home Assistant integriert ist. Ich habe eigentlich alles, wie auch Yannik geschrieben hat, befolgt. Nur gibt er mir den Status unavaiable aus. Die Entität lautet:
weather.forecast_homeassistant
Und so sieht mein Template Sensor aus.
template:
– sensor:
# Errechnet aus der relativen Luftfeuchtigkeit und Temperatur im Innenraum die absolute Luftfreuchtigkeit in Gramm pro Kubikmeter
– name: “Absolute Luftfeuchtigkeit AZ”
unique_id: “AbsoluteHumidityAZ”
unit_of_measurement: “g/m^3”
state_class: “measurement”
state: >
{{ ( 1000*e**(19.016-(4064.95/(float(states(‘sensor.ble_temperature_temperatursensor_az’))+236.25)))*100/(461.66*(float(states(‘sensor.ble_temperature_temperatursensor_az’))+273.15)) * float(states(‘sensor.ble_humidity_temperatursensor_az’))/100 | float) | round (2) }}
# Errechnet aus der relativen Luftfeuchtigkeit und Temperatur außen die absolute Luftfreuchtigkeit in Gramm pro Kubikmeter
– name: “Absolute Luftfeuchtigkeit außen”
unique_id: “AbsoluteHumidityOutside”
unit_of_measurement: “g/m^3”
state: >
{{ ( 1000*e**(19.016-(4064.95/(float(state_attr(‘weather.forecast_homeassistant’,’temperature’))+236.25)))*100/(461.66*(float(states(‘weather.forecast_homeassistant’,’temperature’))+273.15)) * float(state_attr(‘weather.forecast_homeassistant’,’humidity’))/100 | float) | round (2) }}
Jemand eine Idee ?
Hab den Fehler gefunden :/ sorry .
Ich hatte vergessen bei der zweiten Formel die Attribute zu nehmen , dort steht noch states statt state_attr.
Danke
Hi, es gibt die HA Mold Indicator Integration. Taugt die nix? Oder warum hast du eigene Templates geschrieben? Hut ab übrigens!
https://www.home-assistant.io/integrations/mold_indicator/
Holy Sh**, den kannte ich einfach nur nicht 😆
Danke für den Hinweis, kommt mit in den Beitrag 🙏