Baby Kleidungsempfehlung in Abhängigkeit des Wetters

Hallo liebe Community,

ich bin neu in Sachen HA und habe rudimentäre Kenntnis von Coding. Ich möchte mir einen Sensor zusammenschreiben, der mir in Abhängigkeit der Wetterbedingungen Kleidungsempfehlungen für unser Baby vorschlägt. Das ganze soll so ähnlich funktionieren, wie auf der Seite baby-wetter.de

Ich nutze die met.no Daten als Bezugsquelle und habe mit der KI versucht, mir einen passenden YAML Code zu schreiben. Folgenden Code habe ich in die configuration.yaml eingefügt, aber wenn ich den Sensor auf meinem Dashboard einfüge, bekomme ich stets die Meldung, dass keine Daten vorhanden sind:

- sensor:
      - name: "Baby Kleidungsempfehlung"
        state: >
          {% set t = state_attr('weather.forecast_home_2','temperature') %}
          {% set w = state_attr('weather.forecast_home_2','wind_speed') %}
          {% set uv = state_attr('weather.forecast_home_2','uv_index') %}
          {% if t is none or w is none or uv is none %}
            Keine Wetterdaten verfügbar
          {% else %}
            {% set liste = [] %}
            {% if t < 5 %}
              {% set _ = liste.append('Overall, Body, Mütze, Handschuhe') %}
            {% elif t < 10 %}
              {% set _ = liste.append('Übergangsjacke, Body, Mütze') %}
            {% elif t < 18 %}
              {% set _ = liste.append('Langarm-Body, leichte Jacke') %}
            {% elif t < 24 %}
              {% set _ = liste.append('Kurzarm-Body, Hose') %}
            {% else %}
              {% set _ = liste.append('Kurzarm-Body, Sonnenhut') %}
            {% endif %}
            {% if w > 10 %}
              {% set _ = liste.append('Windschutzschicht') %}
            {% endif %}
            {% if uv > 3 %}
              {% set _ = liste.append('UV-Kleidung oder Sonnenhut') %}
            {% endif %}
            {{ liste | join(', ') }}
          {% endif %}

Die Entitäten der met.no Integration passen vom Zahlenformat zu dem Code. Ich hänge noch an, was die aktuellen Einträge der Bezugsquelle sind.

Entities of weather.forecast_home_2

temperature: 20.2 
dew_point: 15.8 
temperature_unit: °C 
humidity: 75 
cloud_coverage: 100 
uv_index: 1.9 
pressure: 29.94 
pressure_unit: inHg 
wind_bearing: 161.9 
wind_speed: 10.8 
wind_speed_unit: km/h 
visibility_unit: mi 
precipitation_unit: mm 
attribution: Weather forecast from met.no, delivered by the Norwegian Meteorological Institute. 
friendly_name: Forecast Home 
supported_features: 3 

An dieser Stelle endet mein Wissen. Mir ist bewusst, dass ich nicht erwarten kann, dass mir jemand hier den perfekten Code auswirft, aber ich bin lernwillig und schicke gerne weitere Infos nach, die gebraucht werden.

Übrigens habe ich mir eine vorübergehende Notlösung geschaffen: Eine Badge auf dem Dashboard leitet mich beim Anklicken auf baby-wetter.de. Funktioniert natürlich auch, ist aber nicht mein eigentliches Ziel gewesen.

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)

Moin,

Schau dir bitte einmal diesen Blueprint an, der kann mittels KI dann auch vorschläge machen

VG
Bernd

P.S.: ein möglicher Anwendungsfall

alias: DailyNews
description: ""
use_blueprint:
  path: SchBenedikt/v.2024-12-13.yaml
  input:
    notify_service: notify.alexa_media_wohnzimmer_echodot
    notify_target: media_player.wohnzimmer_echodot
    calendar_entity:
      - calendar.
      - calendar.
    weather_entity: weather.wolfsburg
    zone_entity: zone.home
    conversation_agent: conversation.google_generative_ai
    prompt: >-
      Bitte generiere eine freundliche und hilfreiche Benachrichtigung für einen
      Sprachassistenten des Benutzers.


      - Deine Antworten sollen stets hilfreich, herzlich und informativ sein.

      - Vermeide technische Details oder spezifische Systeminformationen.

      - Gestalte die Nachrichten so, dass sie den Benutzer motivieren

      - Berücksichtige dabei Hinweise zu außergewöhnlichem Wetter, das zur
      Jahreszeit passt, ohne banale Informationen zu liefern. Liefere dazu
      passende Empfehlungen, was ich heute anziehen sollte (z. B. lange Hose,
      kurze Hose, (leichte) Jacke, Pulli)

      - Informiere über anstehende Meetings oder Termine nur, wenn es welche
      gibt. Liste die Ereignisse chronologisch auf. Zeige das Datum und die
      Uhrzeit.

      - Falls keine Termine anstehen, informiere nicht darüber.

      - Erwähne besondere Anlässe, wie beispielsweise Geburtstagsfeiern oder
      Jubiläen.

      - Achte auf korrekte Grammatik und sinnvolle Satzstrukturen.

      - Mache kurze Pausen, zwischen den einzelnen Informationen
1 „Gefällt mir“

Hi und danke für deinen Input! Ich habe es doch tatsächlich gelöst bekommen:

- sensor:
  - name: "Baby Kleidungsempfehlung"
    state: >
          {% set t = state_attr('weather.forecast_home_2','temperature') %}
          {% set w = state_attr('weather.forecast_home_2','wind_speed') %}
          {% set uv = state_attr('weather.forecast_home_2','uv_index') %}
          {% set c = state_attr('weather.forecast_home_2','cloud_coverage') %}
          {% if t is none or w is none or uv is none or c is none %}
            Keine Wetterdaten verfügbar
          {% else %}
            {% set liste = ['Windel'] %}
            {% if t < 0 %}
              {% set liste = liste + ['Langarmbody', 'Fleeceanzug', 'dicke Mütze', 'Handschuhe', 'warme Socken', 'Decke'] %}
            {% elif t < 5 %}
              {% set liste = liste + ['Langarmbody', 'gefütterte Hose', 'dicke Jacke oder Overall', 'Mütze', 'warme Socken'] %}
            {% elif t < 8 %}
              {% set liste = liste + ['Langarmbody', 'dicke Hose', 'Pullover', 'Jacke', 'Mütze', 'warme Socken'] %}
            {% elif t < 12 %}
              {% set liste = liste + ['Langarmbody', 'Hose', 'Pullover', 'Jacke', 'Socken', 'Mütze'] %}
            {% elif t < 15 %}
              {% set liste = liste + ['Langarmbody', 'dünne Hose', 'dünner Pullover', 'Jäckchen', 'dünne Mütze', 'Socken'] %}
            {% elif t < 18 %}
              {% set liste = liste + ['Langarmbody', 'leichte Hose', 'Pullover oder dünnes Jäckchen', 'dünne Mütze', 'Socken'] %}
            {% elif t < 21 %}
              {% set liste = liste + ['Langarmbody', 'leichte Hose', 'dünner Pulli oder Langarmshirt', 'dünne Mütze einpacken', 'Socken'] %}
            {% elif t < 24 %}
              {% set liste = liste + ['Kurzarmbody', 'leichte Hose', 'ggf. leichtes Shirt'] %}
            {% elif t < 27 %}
              {% set liste = liste + ['Kurzarmbody', 'kurze Hose'] %}
            {% else %}
              {% set liste = liste + ['Kurzarmbody', 'kurze Hose'] %}
            {% endif %}
            {% if w > 10 %}
              {% set liste = liste + ['Windschutzschicht'] %}
            {% endif %}
            {% if uv < 3 %}
              {% set liste = liste + ['UV Index unter 3: Kein Schutz nötig'] %}
            {% elif uv == 3 %}
              {% set liste = liste + ['UV Index 3 (Mittel): Sonnenhut'] %}
            {% elif uv == 4 %}
              {% set liste = liste + ['UV Index 4 (Mittel): Sonnenhut'] %}
            {% elif uv == 5 %}
              {% set liste = liste + ['UV Index 5 (Mittel): Sonnenhut'] %}
            {% endif %}
            {% if uv >= 6 %}
              {% set liste = liste + ['UV Index 6 oder höher: UV-Kleidung, Sonne wenn möglich meiden'] %}
            {% endif %}
            {% if c >= 20 %}
              {% set liste = liste + ['Regenschutz sinnvoll (Regenradar checken!)'] %}
            {% endif %}
            {{ liste | join('\n') }}
          {% endif %}

bin erst einmal zufrieden. Feintuning kommt sicherlich irgendwann, aber damit kann ich arbeiten :slight_smile: