Template Ordner

Hallo , ich hab mal wieder eine Frage
Habe meine ganzen Templete Sensoren (soviele sind es noch nicht ) ausgelagert , und zwar in einem Ordner Namens template und dann für jeden Sensor eine eigene yaml Datei erstellt . Den include in der config,yaml gemacht , Soweit funktioniert es , bis auf meinen Absoluten Luftfeuchtigkeits Sensor .
Hier mal ein Teil des Inhaltes , würde zu lange werden , weil hab für jeden Raum diese Berechnung .

# Lüften im jeweiligen Raum berechnen

- sensor:
    # Errechnet aus der relativen Luftfeuchtigkeit und Temperatur außen die absolute Luftfreuchtigkeit in Gramm pro Kubikmeter
    - name: "Absolute Luftfeuchtigkeit Balkon"
      unique_id: "AbsoluteHumidityBalkon"
      unit_of_measurement: "g/m^3"
      state_class: "measurement"
      state: >
        {{ ( 1000*e**(19.016-(4064.95/(float(states('sensor.balkon_temp_temperature'))+236.25)))*100/(461.66*(float(states('sensor.balkon_temp_temperature'))+273.15)) * float(states('sensor.balkon_temp_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: "AbsoluteHumidityAussen"
      unit_of_measurement: "g/m^3"
      state_class: "measurement"
      state: >
        {{ ( 1000*e**(19.016-(4064.95/(float(states('sensor.aussen_temperature'))+236.25)))*100/(461.66*(float(states('sensor.aussen_temperature'))+273.15)) * float(states('sensor.aussen_humidity'))/100 | float) | round (2) }}
    # Errechnet aus der relativen Luftfeuchtigkeit und Temperatur im Innenraum die absolute Luftfreuchtigkeit in Gramm pro Kubikmeter
    ###### Wohnzimmer ######
    - name: "Absolute Luftfeuchtigkeit WZ"
      unique_id: "AbsoluteHumidityWZ"
      unit_of_measurement: "g/m^3"
      state_class: "measurement"
      state: >
        {{ ( 1000*e**(19.016-(4064.95/(float(states('sensor.wz_temp_temperature'))+236.25)))*100/(461.66*(float(states('sensor.wz_temp_temperature'))+273.15)) * float(states('sensor.wz_temp_humidity'))/100 | float) | round (2) }}
    # Errechnet den Untschied der Luftfeuchte von innen und außen in Gramm pro Kubikmeter
    - name: "Absolute Luftfeuchtigkeit Unterschied WZ"
      unique_id: "AbsoluteHumidityDifferenceWZ"
      unit_of_measurement: "g/m^3"
      state_class: "measurement"
      state: >
        {{ ( float(states('sensor.absolute_luftfeuchtigkeit_wz')) - float(states('sensor.absolute_luftfeuchtigkeit_aussen')) ) | float | round (2) }}
    # Errechnet aus der relativen Luftfeuchtigkeit und Temperatur im Innenraum die absolute Luftfreuchtigkeit in Gramm pro Kubikmeter

Konfiguration lässt sich ohne fehlermeldung neu starten , aber leider werden mir die Werte der jeweiligen absoluten Luffeuchtigkeit angezeigt .
Hat jemand vielleicht ein Tip für mich woran das liegen könnte ?
RWxpPcw

Vorher waren die Sensoren so in der configuration.yaml

Vielen Dank für jegliche Art von Hilfe

Deine Formel bzw. das Template hat irgendwo einen Fehler, habe aber keinen Lust danach zu suchen. :wink:

Hier mal meine Version zur Berechnung der absolute Feuchte und Taupunkt.

{% set t = states('sensor.temperature') | float(0) %} {## Luft-Temperatur (°C) ##}
{% set r = states('sensor.humidity') | float(0) %} {## relative Luftfeuchtigkeit (%) ##}
{% if  states('sensor.temperature') | float(0) >= 0 %}
{% set a = 7.5 %}
{% set b = 237.3 %}
{%- else -%}
{% set a = 7.6 %}
{% set b = 240.7 %}
{%- endif %}
{% set ssd = 6.1078 * 10**((a*t)/(b+t)) %} {## Sättigungsdampfdruck (hPa) ##}
{% set dd = ssd * (r/100) %} {## Dampfdruck (hPa) ##}
{% set mw = 18.016 %} {## Molekulargewicht des Wasserdampfes (kg/kmol) ##}
{% set gk = 8314.3 %} {## universelle Gaskonstante (J/(kmol*K)) ##}
{% set t0 = 273.15 %} {## Absolute Temperatur von 0 °C (Kelvin) ##}
{% set tk = t + t0 %} {## Temperatur in Kelvin ##}
{% set v = log(dd/6.1078,10) %} {## v-Parameter ##}
{% set af = (10**5 *  mw/gk * dd/tk) | float | round(2) %} {## Wasserdampfdichte bzw. absolute Feuchte (g/m3) ##}
{% set td = ((b*v) / (a-v)) | round(2) %} {## Taupunkttemperatur (°C) ##}
Taupunkt: {{td}} °C
absolute Feuchte: {{af}} g/m3

Oder Du verwendest ein macro
Und rufst im template das macro auf und übergibst die Temperatur und Luftfeuchtigkeit Sensoren.

{% macro klima_entity(temperature, humidity) %}
{% set t = states(temperature) | float(0) %} {## Luft-Temperatur (°C) ##}
{% set r = states(humidity) | float(0) %} {## relative Luftfeuchtigkeit (%) ##}
{% if  states(temperature) | float(0) >= 0 %}
{% set a = 7.5 %}
{% set b = 237.3 %}
{%- else -%}
{% set a = 7.6 %}
{% set b = 240.7 %}
{%- endif %}
{% set ssd = 6.1078 * 10**((a*t)/(b+t)) %} {## Sättigungsdampfdruck (hPa) ##}
{% set dd = ssd * (r/100) %} {## Dampfdruck (hPa) ##}
{% set mw = 18.016 %} {## Molekulargewicht des Wasserdampfes (kg/kmol) ##}
{% set gk = 8314.3 %} {## universelle Gaskonstante (J/(kmol*K)) ##}
{% set t0 = 273.15 %} {## Absolute Temperatur von 0 °C (Kelvin) ##}
{% set tk = t + t0 %} {## Temperatur in Kelvin ##}
{% set v = log(dd/6.1078,10) %} {## v-Parameter ##}
{% set af = (10**5 *  mw/gk * dd/tk) | float | round(2) %} {## Wasserdampfdichte bzw. absolute Feuchte (g/m3) ##}
{% set td = ((b*v) / (a-v)) | round(2) %} {## Taupunkttemperatur (°C) ##}
{{ af }}
{% endmacro %}

Im Ordner config den Ordner custom_templates und darin die Datei klima.jinja erstellen.
Dort das oben stehende macro einfügen, speichern und Home Assistant neu starten.

Bei deinem Template Sensoren, kannst Du dann diese Template verwenden.
Die Temperatur und Luftfeuchtigkeit Entitäten natürlich gegen Dien eigen austauschen.

{% from 'klima.jinja' import klima_entity %}
{{ klima_entity('sensor.temperature', 'sensor.humidity' ) }}

Aber theoretisch kannst Du Dir den ganzen Aufwand auch sparen und einfach die Custom Integration Thermal Comfort verwenden. :wink: :grinning:

BTW:
Du brauchst Deine Template Sensoren nicht unbedingt per yaml erstellen.
Seit längeren gibt es ja die Template Helfer. :grinning:

Gruß
Osorkon

Die Template Sensoren liefen vorher einwandfrei , wollte sie halt nur in den template ordner verschieben , in einer seperaten yaml datei
Das mit dem template helfer hab ich auch gesehen , kenn mich aber damit nicht aus und bin halt froh , wenn soetwas in einem Video quasi serviert wird .
Gruß

Poste mal Deine configuration.yaml.
Dann ist da irgendwo noch der Wurm drin.

Das Template selber funktioniert, bzw. liefert ein gültiges Ergebnis.
Man muss nur die richtigen Entitäten verwenden. :see_no_evil: War wohl gestern schon zu spät für mich.

Ob Dein Template richtig funktioniert, kannst ohne eine einzige YAML Datei anfassen zu müssen, einfach im Template Editor testen.

Entwicklungswerkzeuge → Template → Template kopieren und im Template Editor einfügen.

Wenn das Template keinen Fehler auswirft und das Ergebnis Deinen Vorstellungen entspricht. Kannst Du dieses Template für Deinen Template Sensor verwenden.

Was das Thema Template Helfer angeht, das ist relativ einfach. :grinning:

Einstellungen → Geräte & Dienste → Helfer → + HELFER ERSTELLEN → Template → Template für einen Sensor erstellen.

  • Dem Sensor einen Namen vergeben

  • Dein Template unter Zustandstemplate einfügen

{{ ( 1000*e**(19.016-(4064.95/(float(states('sensor.balkon_temp_temperature'))+236.25)))*100/(461.66*(float(states('sensor.balkon_temp_temperature'))+273.15)) * float(states('sensor.balkon_temp_humidity'))/100 | float) | round (2) }}
  • Als Maßeinheit g/m³ eingeben.

  • Die Geräteklasse bleibt frei, das es keine definierte Geräteklasse für Absolute Luftfeuchtigkeit gibt.

  • Zustandsklasse → Messung

  • Auf absenden drücken.


Kein Neuladen der Konfiguration nötig, der neue Sensor steht sofort zur verfügung.

Wenn Du möchtest, kannst Du den Sensor im Nachgang noch pimpen, in dem Du z.B. noch ein Icon auswählst, den Namen Änderst, oder das Template selbst noch mal anpassen oder ändern willst.

Entität auswählen → Zahnradsymbol

Wenn das jetzt komplizierter ist, als in den yaml Dateien irgendwelche code Zeilen einzugeben, die man im Worst Case nicht mal versteht, dann verstehe ich die Welt nicht mehr. :wink:

Gruß
Osorkon