INFO: Weather Intelligence neue Features

Hallo zusammen,
ich hätte nicht damit gerechnet, dass allen WI so einen Anklang findet! Also habe ich mich entschlossen, nach dem großen Zuspruch, die API zu erweitern!

Damit kann ich etwas abstellen, dass mich selber seit langem nervt: Die Unwetterwarnungen von der DWD-App bedingt durch die schwierige Konfiguration auf dem HA-Dashboard.

WI bekommt nun eine eigen Unwetterwarnung (Gewitter, Starkregen, Nebel, Sturm, starker Frost,…) und Kepler kann sie verarbeiten und in einen Sensor umwandeln.

So ist es möglich sich z.B. Warnungen für den eigenen lokalen (!!!) Standort auf das Handy zu schicken (24 Std im Voraus oder bei unvorhergesehen Ereignissen sofort) oder Automationen zu triggern um z.B. die Markise einzufahren.

und der Sensor (nur Warnungen!)

Beispiel Code für Handy-Warnungen:

alias: EAI Wetterwarnung aufs Handy
triggers:
  - trigger: state
    entity_id: sensor.solar_forecast_energy_ai_wichtigste_wetterwarnung
    attribute: event_id

conditions:
  - condition: template
    value_template: >
      {{ trigger.to_state.attributes.event_id is not none }}

actions:
  - action: notify.mobile_app_DEIN_HANDY
    data:
      title: "{{ trigger.to_state.attributes.title }}"
      message: >-
        {{ trigger.to_state.attributes.recommended_action }}
        Gültig ab
        {{ as_timestamp(trigger.to_state.attributes.start)
           | timestamp_custom('%d.%m. %H:%M', true) }} Uhr.

mode: queued

Code für Apex:

type: conditional
conditions:
  - condition: state
    entity: sensor.solar_forecast_energy_ai_wichtigste_wetterwarnung
    state_not: "none"

card:
  type: vertical-stack
  cards:
    - type: markdown
      content: >-
        {% set w =
          states.sensor.solar_forecast_energy_ai_wichtigste_wetterwarnung %}

        ## ⚠️ {{ w.attributes.title | default('Wetterwarnung') }}

        **Schweregrad:**
        {{ 'Dringend' if w.attributes.severity == 'critical'
           else 'Warnung' }}

        **Gültig:**
        {{ as_timestamp(w.attributes.start)
           | timestamp_custom('%d.%m.%Y · %H:%M', true) }}
        bis
        {{ as_timestamp(w.attributes.end)
           | timestamp_custom('%d.%m.%Y · %H:%M', true) }} Uhr

        {{ w.attributes.recommended_action }}

    - type: custom:apexcharts-card
      graph_span: 48h
      update_interval: 1min

      span:
        start: hour

      header:
        show: true
        title: Zeitfenster der Wetterwarnung
        show_states: false

      now:
        show: true
        label: Jetzt

      apex_config:
        chart:
          height: 190px
          toolbar:
            show: false
        legend:
          show: false
        tooltip:
          x:
            format: "dd.MM. HH:mm 'Uhr'"
        grid:
          borderColor: rgba(128, 128, 128, 0.2)

      yaxis:
        - min: 0
          max: 2
          decimals: 0
          show: false

      series:
        - entity: sensor.solar_forecast_energy_ai_wichtigste_wetterwarnung
          attribute: warning_count
          name: Warnung
          type: area
          color: "#ff9800"
          opacity: 0.55
          curve: stepline
          stroke_width: 1
          extend_to: false
          data_generator: |
            const a = entity.attributes;

            if (
              a.severity !== "warning" ||
              !a.start ||
              !a.end
            ) {
              return [];
            }

            const warningStart =
              new Date(a.start).getTime();
            const warningEnd =
              new Date(a.end).getTime();

            if (
              !Number.isFinite(warningStart) ||
              !Number.isFinite(warningEnd) ||
              warningEnd <= warningStart
            ) {
              return [];
            }

            return [
              [warningStart - 1, 0],
              [warningStart, 1],
              [warningEnd, 1],
              [warningEnd + 1, 0]
            ];

        - entity: sensor.solar_forecast_energy_ai_wichtigste_wetterwarnung
          attribute: warning_count
          name: Dringend
          type: area
          color: "#e53935"
          opacity: 0.6
          curve: stepline
          stroke_width: 1
          extend_to: false
          data_generator: |
            const a = entity.attributes;

            if (
              a.severity !== "critical" ||
              !a.start ||
              !a.end
            ) {
              return [];
            }

            const warningStart =
              new Date(a.start).getTime();
            const warningEnd =
              new Date(a.end).getTime();

            if (
              !Number.isFinite(warningStart) ||
              !Number.isFinite(warningEnd) ||
              warningEnd <= warningStart
            ) {
              return [];
            }

            return [
              [warningStart - 1, 0],
              [warningStart, 2],
              [warningEnd, 2],
              [warningEnd + 1, 0]
            ];

7 „Gefällt mir“

Hey Tom, ich hoffe ich darf hier antworten. Ansonsten bitte meinen Post umkopieren…

Coole Sache, freue mich immer über solche Wetter Features.

Aber was macht hier speziell den Mehrwert aus? Das können doch andere Integrationen (insbesondere DWD Weather Warnings) für meinen Standort auch?!

Lokale Vorhersage: auf Basis Deiner Wetterstation; meinst Du das DWD die Prognose so genau hinbekommt?

Was bedeutet der ganze Zirkus denn hier, wenn nicht lokal?

1 „Gefällt mir“