Mit Home Assistant richtig lüften und Schimmelbildung vorbeugen - Sensor Absolute Luftfeuchtigkeit

Hallo,
ich habe versucht die absolute Temperatur zu berechnen, wie im Video “Mit Home Assistant richtig lüften und Schimmelbildung vorbeugen” beschrieben, aber leider erhalte ich keine Werte. Die Messwerte stammen von einem über Bluetooth verbundenen Govee Sensor.

Wenn ich unter Entwicklerwerkzeuge/Zustände schaue, wird der Zustand von “sensor.absolute_luftfeuchtigkeit_keller” mit “unavailable” angezeigt. Die beiden Sensoren “sensor.h5075_8481_temperature” und “sensor.h5075_8481_humidity” zeigen dagegen plausible Werte. Im Protokoll sehe ich wiederholt folgenden Fehlereintrag:

Error while dispatching event for sensor.h5075_8481_humidity to <Job track state_changed event {‘sensor.h5075_8481_humidity’, ‘sensor.h5075_8481_temperature’} HassJobType.Callback <bound method TrackTemplateResultInfo._refresh of <TrackTemplateResultInfo {Template<template=({{ 1000e**(19.016-(4064.95/(float(states(‘sensor.h5075_8481_temperature’))+236.25)))100/(461.66(float(states(‘sensor.h5075_8481_temperature’))+273.15)) * float(states(‘sensor.h5075_8481_humidity’))/100 | float }}") renders=198>: <RenderInfo Template<template=({{ 1000e**(19.016-(4064.95/(float(states(‘sensor.h5075_8481_temperature’))+236.25)))100/(461.66(float(states(‘sensor.h5075_8481_temperature’))+273.15)) * float(states(‘sensor.h5075_8481_humidity’))/100 | float }}") renders=198> all_states=False all_states_lifecycle=False domains=frozenset() domains_lifecycle=frozenset() entities=frozenset({‘sensor.h5075_8481_humidity’, ‘sensor.h5075_8481_temperature’}) rate_limit=None has_time=False exception=None is_static=False>}>>>

Der eingefügte Code:

template:
    - sensor:
      - name: "Absolute Luftfeuchtigkeit Keller"
        unique_id: "AbsoluteHumidityBasement"
        unit_of_measurement: "g/m^3"
        state_class: "measurement"
        state: > 
            {{ 1000*e**(19.016-(4064.95/(float(states('sensor.h5075_8481_temperature'))+236.25)))*100/(461.66*(float(states('sensor.h5075_8481_temperature'))+273.15)) * float(states('sensor.h5075_8481_humidity'))/100 | float }}"

Könnt ihr mir einen Tipp geben, was ich falsch mache?

Ist keine direkte Lösung, aber vielleicht dennoch interessant: ich verwende Thermal Comfort aus HACS. Dort gibt man die Sensoren an und es werden sehr viele Daten daraus errechnet. Unter anderem auch die absolute Luftfeuchtigkeit.

1 „Gefällt mir“

Schau mal ganz an den Schluss, da steht noch ein "

1 „Gefällt mir“

Danke, das war’s! Sehr merkwürdig, im File Editor von Home Assistang wird bei mir in Firefox nicht die komplette Breite der Textdatei dargestellt. Auch das vorletzte Zeichen, die geschweifte Klammer war nur teilweise sichtbar.

Oh, warum? Wollte mich grad bedanken …

Habe gerade nachgelesen und erfahren, dass sich diese Integration eher für unbeheizte Räume eignet.

Für normale Wohnräume eignet sich diese besser:

Verstehe, ich nutze ebenfalls die “Schimmelintegration/Helfer == Mold Indicator” bzw. dessen Sensorik.
Bisher hatte ich aber keine schöne Mushroom Card :wink:
Die Logik sollte doch die gleiche sein?

ja, musst nur den Sensor und die Grenzwerte entsprechend angleichen.

type: custom:mushroom-template-card
entity: sensor.schimmel_wz
primary: |-
  Schimmel-Risiko im Wohnzimmer: {% if states(entity) | float() >= 70 %}Gering
  {% elif states(entity) | float() >= 80 %}Moderat
  {% elif states(entity) | float() >= 90 %}Hoch
  {% else %} Keines
  {% endif %}
icon: mdi:dots-hexagon
icon_color: |-
  {% if states(entity) | float() >= 70 %}yellow
  {% elif states(entity) | float() >= 80 %}orange
  {% elif states(entity) | float() >= 90 %}red
  {% else %} green
  {% endif %}
tap_action:
  action: none
hold_action:
  action: none
double_tap_action:
  action: none
layout_options:
  grid_columns: 4
  grid_rows: 1
visibility:
  - condition: numeric_state
    entity: sensor.schimmel_wz
    above: 70
alias: Notify - Humidity
description: ""
triggers:
  - entity_id:
      - sensor.absolute_luftfeuchtigkeit_unterschied_fabian
    above: 4.5
    id: above
    for:
      hours: 0
      minutes: 5
      seconds: 0
    trigger: numeric_state
  - entity_id:
      - sensor.indoor_outdoor_meter_4e84_luftfeuchtigkeit
    above: 60
    id: aboverel
    for:
      hours: 0
      minutes: 5
      seconds: 0
    trigger: numeric_state
  - entity_id:
      - sensor.absolute_luftfeuchtigkeit_unterschied_fabian
    for:
      hours: 0
      minutes: 2
      seconds: 0
    below: 4
    id: below
    trigger: numeric_state
  - entity_id:
      - sensor.indoor_outdoor_meter_4e84_luftfeuchtigkeit
    for:
      hours: 0
      minutes: 2
      seconds: 0
    below: 56
    id: below
    trigger: numeric_state
conditions:
  - condition: or
    conditions:
      - condition: trigger
        id: below
      - condition: and
        conditions:
          - condition: trigger
            id: above
          - condition: numeric_state
            entity_id: sensor.indoor_outdoor_meter_4e84_luftfeuchtigkeit
            above: 55
      - condition: and
        conditions:
          - condition: trigger
            id: aboverel
          - condition: numeric_state
            entity_id: sensor.absolute_luftfeuchtigkeit_unterschied_fabian
            above: 3
actions:
  - choose:
      - conditions:
          - condition: or
            conditions:
              - condition: trigger
                id: above
              - condition: trigger
                id: aboverel
        sequence:
          - action: input_boolean.turn_on
            target:
              entity_id: input_boolean.luften_fabian
            data: {}
          - condition: time
            after: "07:00:00"
            before: "21:30:00"
            weekday:
              - mon
              - tue
              - wed
              - thu
              - fri
              - sat
              - sun
    default:
      - action: input_boolean.turn_off
        target:
          entity_id: input_boolean.luften_fabian
        data: {}
mode: single

Wenn ich alles richtig verstanden habe, sollte es so funktionieren:

alias: Notify - Humidity
description: ""
triggers:
  - entity_id:
      - sensor.absolute_luftfeuchtigkeit_unterschied_fabian
    above: 4.5
    id: above
    for:
      hours: 0
      minutes: 5
      seconds: 0
    trigger: numeric_state
  - entity_id:
      - sensor.indoor_outdoor_meter_4e84_luftfeuchtigkeit
    above: 60
    id: aboverel
    for:
      hours: 0
      minutes: 5
      seconds: 0
    trigger: numeric_state
  - entity_id:
      - sensor.absolute_luftfeuchtigkeit_unterschied_fabian
    for:
      hours: 0
      minutes: 2
      seconds: 0
    below: 4
    id: below
    trigger: numeric_state
  - entity_id:
      - sensor.indoor_outdoor_meter_4e84_luftfeuchtigkeit
    for:
      hours: 0
      minutes: 2
      seconds: 0
    below: 56
    id: below
    trigger: numeric_state
  - trigger: time
    at: "21:00:00"
conditions: []
actions:
  - if:
      - condition: or
        conditions:
          - condition: trigger
            id: above
          - condition: trigger
            id: aboverel
      - condition: time
        after: "07:00:00"
        before: "21:00:00"
    then:
      - action: input_boolean.turn_on
        target:
          entity_id: input_boolean.luften_fabian
        data: {}
    else:
      - action: input_boolean.turn_off
        target:
          entity_id: input_boolean.luften_fabian
        data: {}
mode: single

Funktioniert leider immer noch nicht.

Der Unterscheid beträgt gerade -6,06g/m2

Und die Luftfeichtigkeit in Fabians Zimmer beträgt 61%.

Dann sollte der Schalter auf “an” springen

Er bleibt aber “aus”.

Die Auslöser greifen nur, wenn der jeweilige Schwellen Wert über bzw. Unterschritten wird, wenn sich bereits der Wert Ober bzw. unterhalb des Schwellenwerts befindet, löst nichts aus.

Ich würde zu solchen Zwecken auch keine Automation verwenden.
Sondern direkt den jeweiligen Sensor Wert verwenden. Also ein Template Binary Sensor (Helfer)

Gruß Osorkon

ok, aber wie bekomme ich es hin das mir auf dem Dashboard angezeigt wird das ich Lüften soll?

Mit Templates kenne ich mich garnicht aus.

Ich würde es evtl. mit einem input_boolean realisieren:

alias: "Alarm: Lueften"
description: ""
triggers:
  - entity_id:
      - sensor.absolute_luftfeuchtigkeit_unterschied_fabian
    above: 4.5
    id: Auf
    for:
      hours: 0
      minutes: 5
      seconds: 0
    trigger: numeric_state
  - entity_id:
      - sensor.indoor_outdoor_meter_4e84_luftfeuchtigkeit
    above: 60
    id: Auf
    for:
      hours: 0
      minutes: 5
      seconds: 0
    trigger: numeric_state
  - entity_id:
      - sensor.absolute_luftfeuchtigkeit_unterschied_fabian
    for:
      hours: 0
      minutes: 2
      seconds: 0
    below: 4
    id: Zu
    trigger: numeric_state
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - Auf
          - condition: time
            after: "07:00:00"
            before: "21:00:00"
          - condition: state
            entity_id: input_boolean.luftfeuchtigkeitswarnung_ausgelost
            state: "off"
        sequence:
          - metadata: {}
            data: {}
            target:
              entity_id: input_boolean.luftfeuchtigkeitswarnung_ausgelost
            action: input_boolean.turn_on
      - conditions:
          - condition: trigger
            id:
              - Zu
          - condition: state
            entity_id: input_boolean.luftfeuchtigkeitswarnung_ausgelost
            state: "on"
        sequence:
          - metadata: {}
            data: {}
            target:
              entity_id: input_boolean.luftfeuchtigkeitswarnung_ausgelost
            action: input_boolean.turn_off
mode: single

Was ist das genau für ein Sensor? Versteh gerade nur Bahnhof. Sorry

Habe jetzt den Sensor als Helfer eingefügt. Jetzt im Moment ist der Sensor auf aus und die Luftfeuchtigkeit bei 60%.

Dann solte der Sensor ja auf an springen wenn es auf 61% rauf geht wenn ich das richtig verstanden habe.