Windrichtung - Himmelsrichtung anstatt Richtungswinkel in Grad

Eine Sammlung von Home Assistant Templates.
Bitte nur fertige Templates posten, ergänzt um eine Beschreibung und ggf. Screenshots.


Antworten
Benutzeravatar
Osorkon
Administrator
Beiträge: 1905
Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 60 times
Been thanked: 516 times
Kontaktdaten:

Windrichtung - Himmelsrichtung anstatt Richtungswinkel in Grad

Beitrag von Osorkon »

Je nach dem welche Wetter Stationen oder Wetterdienste ihr einsetzen tut,
wird die Windrichtung als Richtungswinkel in Grad angeben.
Also: 0° = Norden; 90° = Osten; 180° = Süden; 270° = Westen

Schöner wäre es vielleicht die Himmelsrichtung anzugeben.
Also die Zuordnung von Richtungswinkel zur Himmelsrichtung.

Dieses template teilt die 360° in 16 Abschnitte auf von je 22,5° und ordnet die jeweilige Himmelsrichtung zu.

mit der Formel (degree+11,5)/22,5 als Ganzzahl (int) ergeben sich Werte zwischen 0 und 16
Diese wiederum werden dem Parameter direction zugeordnet. Wobei 0 = N ist, 1 = NNO ist usw.

sensor.ws_wind_direction ist der Sensor der den Richtungswinkel in Grad ausgibt, diesen müsst Ihr gegen euren Sensor austauschen.

Code: Alles auswählen

{% set direction = ['N','NNO','NO','ONO','O','OSO','SO','SSO','S','SSW','SW','WSW','W','WNW','NW','NNW','N'] %}
{% set degree = states('sensor.ws_wind_direction')|float %}
{{ direction[((degree+11.25)/22.5)|int] }}
Teilen wir die 360° nur in 8 Scheiben auf, sieht das Template dann so aus.

Code: Alles auswählen

{% set direction = ['N','NO','O','SO','S','SW','W','NW','N'] %}
{% set degree = states('sensor.ws_wind_direction')|float %}
{{ direction[((degree+22.5)/45)|int] }}
Ein Template Sensor in der template.yaml sieht dann so aus:

Code: Alles auswählen

- sensor:
  - name: "Windrichtung"
    state: >
      {% set direction = ['N','NNO','NO','ONO','O','OSO','SO','SSO','S','SSW','SW','WSW','W','WNW','NW','NNW','N'] %}
      {% set degree = states('sensor.ws_wind_direction')|float %}
      {{ direction[((degree+11.25)/22.5)|int] }}
    icon: mdi:windsock
    unique_id: windrichtung
Gruß
Osorkon
Einer muss ja für Ordnung sorgen. :D
Andreas
Beiträge: 493
Registriert: Di 21. Dez 2021, 22:05
2
Wohnort: Geltow
Has thanked: 116 times
Been thanked: 22 times

Re: Windrichtung - Himmelsrichtung anstatt Richtungswinkel in Grad

Beitrag von Andreas »

Hallo Sylvester,
ich habe mir die template.yaml angelegt und den letzten Code reinkopiert. Gespeichert, HA neu gestartet, aber finde keinen neuen Sensor. Ist der neue Sensor eine Entität? Muss ich den Sensor selber noch anlegen?
Ich habe auch das

Code: Alles auswählen

sensor.ws_wind_direction
durch (den, den mir Ecowitt dafür anbietet)

Code: Alles auswählen

sensor.wind_direction
ersetzt. Ohne Erfolg Muss ich noch etwas anpassen?
Danke für Deine Unterstützung.
Gruß, Andreas
Benutzeravatar
Osorkon
Administrator
Beiträge: 1905
Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 60 times
Been thanked: 516 times
Kontaktdaten:

Re: Windrichtung - Himmelsrichtung anstatt Richtungswinkel in Grad

Beitrag von Osorkon »

Hallo @Andreas
Bis auf die Entität des Sensors musst Du nichts anpassen.

Du hast den Template Sensor und der Template yaml angelegt.
Datei gespeichert und die Konfiguration geprüft.
Anschließend die Template Konfiguration neu geladen?

Hast Du zuvor nur das Template in Temple Editor getestet?

Gruß
Osorkon
Einer muss ja für Ordnung sorgen. :D
Benutzeravatar
azrael783
Beiträge: 114
Registriert: Mi 27. Okt 2021, 08:57
2
Has thanked: 5 times
Been thanked: 8 times
Kontaktdaten:

Re: Windrichtung - Himmelsrichtung anstatt Richtungswinkel in Grad

Beitrag von azrael783 »

@Andreas ich hatte auch Schwierigkeiten den Sensor hinzuzufügen. Anscheinend hat @Osorkon seine Konfig anders / neuer aufgeteilt als ich. Ich habe noch eine "sensor.yaml" und da habe ich folgendes eingetragen:

Code: Alles auswählen

# Template Sensoren
- platform: template
  sensors:
    windrichtung:
      friendly_name: "Windrichtung"
      value_template: >-
        {% set direction = ['N','NNO','NO','ONO','O','OSO','SO','SSO','S','SSW','SW','WSW','W','WNW','NW','NNW','N'] %}
        {% set degree = states('sensor.wind_direction')|float %}
        {{ direction[((degree+11.25)/22.5)|int] }}
      icon_template: mdi:windsock
      unique_id: windrichtung
Edit: Hab übersehen, dass du die "template.yaml" angelegt hast. Hast du sie auch mit "template: !include template.yaml" in der "configuration.yaml" hinzugefügt?
Wer Rechtschreibfehler findet, darf sie gerne behalten :D
Benutzeravatar
Osorkon
Administrator
Beiträge: 1905
Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 60 times
Been thanked: 516 times
Kontaktdaten:

Re: Windrichtung - Himmelsrichtung anstatt Richtungswinkel in Grad

Beitrag von Osorkon »

Ihr solltet vorzugsweise bei neuen Template Sensoren die neue Template Integration nutzen. Die alte (noch) funktionierende Platform Template wird früher oder später abgeschafft.

Gruß
Osorkon
Einer muss ja für Ordnung sorgen. :D
Andreas
Beiträge: 493
Registriert: Di 21. Dez 2021, 22:05
2
Wohnort: Geltow
Has thanked: 116 times
Been thanked: 22 times

Re: Windrichtung - Himmelsrichtung anstatt Richtungswinkel in Grad

Beitrag von Andreas »

@azrael783
Hast du sie auch mit "template: !include template.yaml" in der "configuration.yaml" hinzugefügt?

Das hatte ich noch nicht. So funktioniert es. Danke!
Osorkon hat geschrieben: Do 14. Jul 2022, 16:01 Ihr solltet vorzugsweise bei neuen Template Sensoren die neue Template Integration nutzen.
Muss ich da auch was in die configuration.yaml eintragen?
Gruß, Andreas
Andreas
Beiträge: 493
Registriert: Di 21. Dez 2021, 22:05
2
Wohnort: Geltow
Has thanked: 116 times
Been thanked: 22 times

Re: Windrichtung - Himmelsrichtung anstatt Richtungswinkel in Grad

Beitrag von Andreas »

@Osorkon
Anschließend die Template Konfiguration neu geladen?

Hast Du zuvor nur das Template in Temple Editor getestet?
Das ist für mich auch noch Neuland.
Gruß, Andreas
Benutzeravatar
Osorkon
Administrator
Beiträge: 1905
Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 60 times
Been thanked: 516 times
Kontaktdaten:

Re: Windrichtung - Himmelsrichtung anstatt Richtungswinkel in Grad

Beitrag von Osorkon »

Hallo @Andreas gehen wir es mal Schritt für schritt durch.

Dein Sensor für die Windrichtung lautet:

Code: Alles auswählen

sensor.wind_direction

richtig.

Ich würde immer erst empfehlen, Templates Die Du in Automatisierungen /Skripten yaml-Dateien verwenden tust, im Template Editor zu testen.

Den Template Editor findest Du unter Entwicklungswerkzeuge -> Reiter Template

gebe dort erstmal diesen Inhalt ein:

Code: Alles auswählen

{{ states('sensor.wind_direction') }}

Das Ergebnis, dass Du im Browser auf der rechten Seite sehen solltest, ist die Windrichtung in Grad. Also der aktuelle Wert des Sensor "sensor.wind_direction"

Wenn das funktioniert hat, ist der verwendete Sensor existent und gibt einen gültigen Wert zurück.

Jetzt fügst Du das Template ein, welches die Umwandlung zu Himmelsrichtung erledigt.

Code: Alles auswählen

{% set direction = ['N','NNO','NO','ONO','O','OSO','SO','SSO','S','SSW','SW','WSW','W','WNW','NW','NNW','N'] %}
{% set degree = states('sensor.wind_direction')|float %}
{{ direction[((degree+11.25)/22.5)|int] }}

Jetzt sollte die Himmelsrichtung als Ergebnis angezeigt werden, z.B. SSW

Wenn das auch funktioniert hat, ist Dein Template ohne Fehler und kann für Dein Template Sensor verwendet werden.

Zwecks der Übersichtlichkeit habe ich meine Konfiguration aufgeteilt und Erstelle meine Sensoren nicht direkt in der configuration.yaml.
Für die Template Integration bedeutet das, dass Du in der configuration.yaml folgende Zeile benötigst.

Code: Alles auswählen

template: !include template.yaml

Jetzt erstellt Du Dir im gleichen Verzeichnis, wo auch die configuration.yaml liegt einen neue Datei "template.yaml"

Wichtig ist dass ab sofort alle template Sensoren nur noch in der template.yaml angelegt werden dürfen.

Hast Du bereits die Zeile:

Code: Alles auswählen

template: 

in Denier configuration.yaml, und bereits template Sensoren angelegt, müssen diese in die template.yaml umziehen.
Oder Du verzichtest auf die Aufteilung der Konfiguration und fügst auch zukünftig Deine template Sensoren in der configuration.yaml ein.

Damit die Änderungen wirksam werden, muss Home Assistent neu gestartet werden.
Du solltest Dir aber unbedingt angewöhnen, nach jeder Änderung in den Yaml-Dateien zuvor die Konfiguration zu prüfen, bevor Du Home Assistent Neustarten tust oder die Konfiguration neu laden tust.
Das tust Du ebenfalls unter Entwicklungswerkzeuge Reiter YAML und auf KONFIGURATION PRÜFEN klicken.
Sollten dabei Fehler Aufgezeigt werden, musst Du erstmal diese beseitigen, in dem Du die Änderungen nochmal prüfen und korrigieren tust.
War die Prüfung Erfolgreich, kannst Du HA neu Starten

Wenn Du Deine Konfiguration bereits aufgeteilt hast, kannst Du diese Schritte überspringen.

Jetzt kannst Du den Sensor in der template.yaml erstellen. Achte penibel auf die Einrückungen, ist eine Leerzeile zu wenig oder zu viel, führt das zwangsläufig zu Fehlern.

Code: Alles auswählen

- sensor:
  - name: "Windrichtung"
    state: >
      {% set direction = ['N','NNO','NO','ONO','O','OSO','SO','SSO','S','SSW','SW','WSW','W','WNW','NW','NNW','N'] %}
      {% set degree = states('sensor.wind_direction')|float %}
      {{ direction[((degree+11.25)/22.5)|int] }}
    icon: mdi:windsock
    unique_id: windrichtung

Nach dem Du die Änderungen gespeichert hast, muss die Template Konfiguration neu geladen werden, bevor die Änderung wirksam werden und der neue Sensor erstellt wird.
Doch zuvor Prüfen wir die Konfiguration, wie oben bereits beschrieben.

Wenn keinen Fehler Angezeigt werden, kannst Du jetzt die Konfiguration neu laden.

Entwicklungswerkzeuge Reiter YAML, nach unten scrollen und auf TEMPLATE-ENTITÄTEN klicken.

Jetzt sollte der neue Sensor "sensor.windrichtung" zur Verfügung stehen.
Ob der Sensor existent ist und welchen Wert er liefert, kannst Du unter Entwicklungswerkzeuge Reiter ZUSTÄNDE prüfen.
Einfach unter Entität
sensor.windrichtung
Eintippen.

Hoffe das war einigermaßen verständlich und Du jetzt einen Neuen Sensor hast, der Dir die Himmelsrichtung des Windes anzeigt.

Gruß
Osorkon

Einer muss ja für Ordnung sorgen. :D
Andreas
Beiträge: 493
Registriert: Di 21. Dez 2021, 22:05
2
Wohnort: Geltow
Has thanked: 116 times
Been thanked: 22 times

Re: Windrichtung - Himmelsrichtung anstatt Richtungswinkel in Grad

Beitrag von Andreas »

Osorkon hat geschrieben: Do 14. Jul 2022, 23:03

Hoffe das war einigermaßen verständlich und Du jetzt einen Neuen Sensor hast, der Dir die Himmelsrichtung des Windes anzeigt.

Na das war doch mal was! Danke! Wenn ich es nun nicht verstanden hätte, bräuchte ich nichts mehr mit HA machen :lol:
Trotzdem die nächste Frage. :roll: Wie finde ich heraus, ob ich den weiter oben genannten neuen Template-Editor habe bzw. wie kann ich den updaten?
Gruß, Andreas

Benutzeravatar
Osorkon
Administrator
Beiträge: 1905
Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 60 times
Been thanked: 516 times
Kontaktdaten:

Re: Windrichtung - Himmelsrichtung anstatt Richtungswinkel in Grad

Beitrag von Osorkon »

Guten Morgen @Andreas ,
Bedanken darfst Du Dich erst, wenn Dein Sensor funktioniert.

Was Meinst Du mit neuen Template-Editor?
Mal generell, wenn Deine Home Assistent Version aktuell ist, ist erstmal alles aktuell.
Wenn Du die Template Integration meinst, sprich die neue Art und Weise wie man Template Sensoren anlegen tut, das hat erstmal gar nichts mit dem Template-Editor zu tun.
Der Template-Editor gibt Dir die Möglichkeit Deine Templates zu testen, ob sie funktionieren und die richtigen Werte liefern, bevor Du diese irgendwo verarbeiten tust.

Zum Verständnis, es gibt die alte Art und Weise, wie man Template Sensoren anlegt, und zwar über die Plattform „template“. Diese werden über die jeweilige Integration Sensor, Binary Sensor angelegt. Also in der sensor.yaml oder binary_sensor.yaml
Die Integration Template ist relativ neu und ersetz die alte Art und Weise wie man Template Sensoren anlegt. Bietet auch mehr Möglichkeiten und Funktionen, wie z.B Trigger basierende Sensoren. Diese Sensoren werden dann in der template.yaml erstellt oder unterhalb der Zeile "template:", wenn Du Deinen Konfiguration nicht aufgeteilt hast.
Beide kannst Du nach wie vor verwenden und auch parallel nutzen. Nur kann man davon ausgehen, dass die alte Plattform Template früher oder später nicht mehr unterstützt wird.
Deswegen würde ich jedem empfehlen, wenn er neue Template Sensoren anlegt, nur noch die neue Template Integration zu verwenden. Ich habe bereits alle meinen alten Template Sensoren in die die Form überführt und verwenden die Plattform Template gar nicht mehr.

Konnte das Deine Frage beantworten?

Hier der Link zur der offiziellen Template Integration Doku.

Gruß
Osorkon

Einer muss ja für Ordnung sorgen. :D
Andreas
Beiträge: 493
Registriert: Di 21. Dez 2021, 22:05
2
Wohnort: Geltow
Has thanked: 116 times
Been thanked: 22 times

Re: Windrichtung - Himmelsrichtung anstatt Richtungswinkel in Grad

Beitrag von Andreas »

Hallo Silvester,

Bedanken darfst Du Dich erst, wenn Dein Sensor funktioniert.

Funktioniert hat er ja schon. Ich hatte den Eintrag in der configuration.yaml nicht gemacht.
Aber was ich ganz top fand war Deine echt verständliche und ausführliche Erläuterung! 👍
Gruß, Andreas

Benutzeravatar
azrael783
Beiträge: 114
Registriert: Mi 27. Okt 2021, 08:57
2
Has thanked: 5 times
Been thanked: 8 times
Kontaktdaten:

Re: Windrichtung - Himmelsrichtung anstatt Richtungswinkel in Grad

Beitrag von azrael783 »

Osorkon hat geschrieben: Do 14. Jul 2022, 16:01

Ihr solltet vorzugsweise bei neuen Template Sensoren die neue Template Integration nutzen. Die alte (noch) funktionierende Platform Template wird früher oder später abgeschafft.

Gruß
Osorkon

Bin gerade dabei das alles mal umzustellen. Macht halt auch einfach mehr Sinn und die neue Integration ist auch irgendwie logisch finde ich.

Gibt es für die Darstellung der Windrichtung auch was schickes? So a la Windrose. Kennt ihr da was?

Wer Rechtschreibfehler findet, darf sie gerne behalten :D
Benutzeravatar
Osorkon
Administrator
Beiträge: 1905
Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 60 times
Been thanked: 516 times
Kontaktdaten:

Re: Windrichtung - Himmelsrichtung anstatt Richtungswinkel in Grad

Beitrag von Osorkon »

@azrael783 da fällt mir nur die Compass Card aus dem HACS ein.

Gruß
Osorkon

Einer muss ja für Ordnung sorgen. :D
Andreas
Beiträge: 493
Registriert: Di 21. Dez 2021, 22:05
2
Wohnort: Geltow
Has thanked: 116 times
Been thanked: 22 times

Re: Windrichtung - Himmelsrichtung anstatt Richtungswinkel in Grad

Beitrag von Andreas »

Hallo,
im Log-File kommt immer unten gezeigte Fehler. Wie kann ich ihn beseitigen.

Code: Alles auswählen

Logger: homeassistant.helpers.event
Source: helpers/template.py:422
First occurred: 12:36:47 (1 occurrences)
Last logged: 12:36:47

Error while processing template: Template("{% set direction = ['N','NNO','NO','ONO','O','OSO','SO','SSO','S','SSW','SW','WSW','W','WNW','NW','NNW','N'] %} {% set degree = states('sensor.wind_direction')|float %} {{ direction[((degree+11.25)/22.5)|int] }}")
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 1701, in forgiving_float_filter
    return float(value)
ValueError: could not convert string to float: 'unavailable'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 420, in async_render
    render_result = _render_with_context(self.template, compiled, **kwargs)
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 1933, in _render_with_context
    return template.render(**kwargs)
  File "/usr/local/lib/python3.10/site-packages/jinja2/environment.py", line 1301, in render
    self.environment.handle_exception()
  File "/usr/local/lib/python3.10/site-packages/jinja2/environment.py", line 936, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "<template>", line 1, in top-level template code
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 1704, in forgiving_float_filter
    raise_no_default("float", value)
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 1402, in raise_no_default
    raise ValueError(
ValueError: Template error: float got invalid input 'unavailable' when rendering template '{% set direction = ['N','NNO','NO','ONO','O','OSO','SO','SSO','S','SSW','SW','WSW','W','WNW','NW','NNW','N'] %} {% set degree = states('sensor.wind_direction')|float %} {{ direction[((degree+11.25)/22.5)|int] }}' but no default was specified

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 536, in async_render_to_info
    render_info._result = self.async_render(variables, strict=strict, **kwargs)
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 422, in async_render
    raise TemplateError(err) from err
homeassistant.exceptions.TemplateError: ValueError: Template error: float got invalid input 'unavailable' when rendering template '{% set direction = ['N','NNO','NO','ONO','O','OSO','SO','SSO','S','SSW','SW','WSW','W','WNW','NW','NNW','N'] %} {% set degree = states('sensor.wind_direction')|float %} {{ direction[((degree+11.25)/22.5)|int] }}' but no default was specified

Gruß,
Andreas

Benutzeravatar
Osorkon
Administrator
Beiträge: 1905
Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 60 times
Been thanked: 516 times
Kontaktdaten:

Re: Windrichtung - Himmelsrichtung anstatt Richtungswinkel in Grad

Beitrag von Osorkon »

Andreas hat geschrieben: Mo 21. Nov 2022, 16:21

im Log-File kommt immer unten gezeigte Fehler.

Ist den der Sensor sensor.wind_direction überhaupt existent?
Der Sensor scheint es nicht zu geben oder dieser ist nicht Verfügbar.

Welche Ergebnis spuckt den der Template Editor aus, wenn Du diese Template eingeben tust?

Code: Alles auswählen

{{ states('sensor.wind_direction') | float }}

Gruß
Osorkon

Einer muss ja für Ordnung sorgen. :D
Andreas
Beiträge: 493
Registriert: Di 21. Dez 2021, 22:05
2
Wohnort: Geltow
Has thanked: 116 times
Been thanked: 22 times

Re: Windrichtung - Himmelsrichtung anstatt Richtungswinkel in Grad

Beitrag von Andreas »

Ist den der Sensor sensor.wind_direction überhaupt existent?
Der Sensor scheint es nicht zu geben oder dieser ist nicht Verfügbar.

Eigentlich schon.

Welche Ergebnis spuckt den der Template Editor aus, wenn Du diese Template eingeben tust?

Im Template Editor ist mit meinem Kenntnisstand alles o.k.
Gruß,
Andreas

Dateianhänge
IMG_20221121_190417.jpg
IMG_20221121_190417.jpg (90 KiB) 971 mal betrachtet
IMG_20221121_190925.jpg
IMG_20221121_190925.jpg (189.73 KiB) 971 mal betrachtet
Benutzeravatar
Osorkon
Administrator
Beiträge: 1905
Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 60 times
Been thanked: 516 times
Kontaktdaten:

Re: Windrichtung - Himmelsrichtung anstatt Richtungswinkel in Grad

Beitrag von Osorkon »

Also funktioniert Deine Template Sensor.
Und Du störst Dich an der Fehlermeldung, die bei Home Assistant Neustart auftaucht?
Der Grund wird sein, dass bei einem Home Assistant Neustart, die Template Sensoren zuerst geladen werden und die Ecowitt Integration erst später.

Du kannst die Fehlermeldung entweder ignorieren,
Oder Du verpasst dem Template einen default Wert.

Code: Alles auswählen

states('sensor.wind_direction')|float(0)

Gruß
Osorkon

Einer muss ja für Ordnung sorgen. :D
Andreas
Beiträge: 493
Registriert: Di 21. Dez 2021, 22:05
2
Wohnort: Geltow
Has thanked: 116 times
Been thanked: 22 times

Re: Windrichtung - Himmelsrichtung anstatt Richtungswinkel in Grad

Beitrag von Andreas »

Hallo Sylvester,
danke für den Hinweis, dass ich es ignorieren kann. Ich dachte eben, einen Fehler sollte man beheben. Das es mit der Startreihenfolge zu tun hat, wusste ich nicht. Aber nun kann ich damit leben.
Gruß, Andreas

Antworten