Recevoir une notification lorsqu'une alerte météo est en cours

Belle explication de ton automatisation avec de bon détails pour les automatisations en yaml

Quel plaisir de voir du YAML :wink:

Super tuto et très sympa à lire.

Faut monter le FLDY (Front libérateur du YAML) contre l’envahisseur Node-Red :laughing: !

2 « J'aime »

Hello,

On peut simplifier encore et faire une seule automatisation :

- alias: "Notification pour alerte météo"
  description: "Envoie une notification sur Telegram si une alerte météo est levée par Météo-France"
  id: bb9f2730-ee77-11ea-9220-4198f0db79cf
  trigger:
    - platform: state
      entity_id: sensor.home_weather_alert
  condition: []
  action:
    - choose:
      - conditions:
        - condition: state
          entity_id: sensor.home_weather_alert
          state: ['Jaune', 'Orange', 'Rouge'] # Filtre le 'unavailable'
        sequence:
          - service: notify.telegram
            data_template:
              message: "Alerte météo {{states('sensor.home_weather_alert')}} en cours:\n
                {%- for attr in ['Vent violent', 'Pluie-inondation', 'Orages', 'Inondation', 'Neige-verglas',
                                'Canicule', 'Grand-froid', 'Avalanches', 'Vagues-submersion'] -%}
                {%- if state_attr('sensor.home_weather_alert', attr) != 'Vert' and state_attr('sensor.home_weather_alert', attr) != None %}\n
                - {{attr}} : {{state_attr('sensor.home_weather_alert', attr)}}
                {%- endif -%}
                {% endfor -%}"
      - conditions:
        - condition: state
          entity_id: sensor.home_weather_alert
          state: 'Vert'
        - condition: template
          value_template: "{{ trigger.from_state.state != 'unavailable' }}"
        sequence:
          - service: notify.telegram
            data_template:
              message: "Fin de l'alerte météo."
2 « J'aime »

Pour celles et ceux qui veulent en savoir plus sur la méthode de @Makai, voici le lien vers la documentation :

Effectivement la version de @Makai est plus optimisée. La fonctions choose a été implémentée avec la version 0.113.0 de Home Assistant core, et je n’avais pas encore pris le temps de revoir ma config avec cette nouvelle possibilité. Merci :pray:t2:

Pour reprendre l’esprit du poste initial. Voici les explications.

Nous n’utilisons pas la première clé condition car nous allons définir un arbre de décision avec la clé choose un peu plus loin. Chaque possibilité aura son propre jeu de conditions.

condition: []

Dans la section ou nous définissons les actions à réaliser (clé action), nous utilisons la clé choose pour implémenter un arbre de décision avec plusieurs conditions. Uniquement la première des conditions vraie déclenche les actions dans la séquence attachée.

Le premier choix vérifie une condition sur l’état de l’entité. La condition est vraie si l’état est Jaune, Orange ou Rouge. Cela permet d’éviter le cas unavailable (cf. premier post de cette discussion). Dans ce cas il lance l’action qui génère la première notification correspondant au début d’une alerte météo comme je l’avais fait initialement.

      - conditions:
        - condition: state
          entity_id: sensor.home_weather_alert
          state: ['Jaune', 'Orange', 'Rouge'] # Filtre le 'unavailable'
        sequence:
          - service: notify.telegram
            ...

Le second choix teste si l’état est revenu à Vert. Nous ajoutons comme dans la version précédente un test pour vérifier que l’état précédent n’était pas unavailable pour éviter une notification parasite. Et lance la notification de fin d’alerte météo.

      - conditions:
        - condition: state
          entity_id: sensor.home_weather_alert
          state: 'Vert'
        - condition: template
          value_template: "{{ trigger.from_state.state != 'unavailable' }}"
        sequence:
          - service: notify.telegram
            ...
1 « J'aime »

Et avec la 0.115 on pourra encore simplifier tout ça ! :wink:

Çà m’intéresse, tu as un lien ?

Je vais commencer la refonte de mon code qui commence à dater et surtout des premiers bouts de code qui parfois même s’il font le boulot sont :face_with_raised_eyebrow:

Suivant l’info, je vais peut être attendre…

Pour l’instant je suis les PR et vois donc les « nouveautés » qui vont arriver.
Avec le mois du « What the Heck? », pas mal de petites choses ont été améliorées et tout ça va sortir avec la 0.115.

Quelques exemples :

Merci pour l’info. :+1:

J’aimerai bien aussi ajouter des évènements a l’intégration meteo_france. Pour encore simplifier les automatisations.

1 « J'aime »

Et maintenant disponible sous forme de Blueprint:
https://forum.hacf.fr/t/notification-pour-une-alerte-meteo/1588

Bonjour,

Je souhaiterai utiliser le code de @Makai plutôt que le blueprint mais après un copier/coller de celui-ci dans le code Yaml de l’automatisation, je me retrouve avec un code modifié et qui bien sûr ne marche pas. Je suppose que la syntaxe du message PushOver n’est pas correct.

De l’aide serait la bienvenue. Merci d’avance.

alias: Notification pour alerte météo
description: Envoi une notification si une alerte météo est levée par Météo-France
trigger:
  - platform: state
    entity_id: sensor.33_weather_alert
condition: []
action:
  - choose:
      - conditions:
          - condition: state
            entity_id: sensor.33_weather_alert
            state:
              - Jaune
              - Orange
              - Rouge
        sequence:
          - service: notify.pushover_ha
            data:
              message: |-
                Alerte météo {{states('sensor.33_weather_alert')}} en cours:
                 {%- for attr in ['Vent violent', 'Pluie-inondation', 'Orages', 'Inondation', 'Neige-verglas', 'Canicule', 'Grand-froid', 'Avalanches', 'Vagues-submersion'] -%} {%- if state_attr('sensor.33_weather_alert', attr) != 'Vert' and state_attr('sensor.33_weather_alert', attr) != None %}
                 - {{attr}} : {{state_attr('sensor.33_weather_alert', attr)}} {%- endif -%} {% endfor -%}
      - conditions:
          - condition: state
            entity_id: sensor.33_weather_alert
            state: Vert
          - condition: template
            value_template: '{{ trigger.from_state.state != ''unavailable'' }}'
        sequence:
          - service: notify.pushover_ha
            data:
              message: Fin de l alerte météo.
mode: single

Pourquoi ? C’est le même code… :upside_down_face:

Oui, c’est pas faux … mais j’apprend plus vite en bidouillant du code (comprendre la structure) plutôt que de renseigner deux ou trois champs pour un blueprint.

De plus, j’ai configuré le blueprint mais :

essai en notify.notify pour le test :slight_smile:

Voici les modifications que j’ai apporter pour l’exemple:
il suffira simplement de remplacer le n°00 par celui de la Gironde :slight_smile:

- alias: Notification pour alerte météo
  description: Envoie une notification si une alerte météo est levée par Météo-France
  trigger:
  - platform: state
    entity_id: sensor.00_weather_alert
  condition: []
  action:
  - choose:
    - conditions:
      - condition: state
        entity_id: sensor.00_weather_alert
        state:
        - Jaune
        - Orange
        - Rouge
      sequence:
      - service: notify.notify
        data_template:
          message: "Alerte météo {{states('sensor.00_weather_alert')}} en cours:\n\
            \ {%- for attr in ['Vent violent', 'Pluie-inondation', 'Orages', 'Inondation',\
            \ 'Neige-verglas', 'Canicule', 'Grand-froid', 'Avalanches', 'Vagues-submersion']\
            \ -%} {%- if state_attr('sensor.00_weather_alert', attr) != 'Vert' and\
            \ state_attr('sensor.00_weather_alert', attr) != None %}\n - {{attr}}\
            \ : {{state_attr('sensor.00_weather_alert', attr)}} {%- endif -%} {% endfor\
            \ -%}"
    - conditions:
      - condition: state
        entity_id: sensor.00_weather_alert
        state: Vert
      - condition: template
        value_template: '{{ trigger.from_state.state != ''unavailable'' }}'
      sequence:
      - service: notify.notify
        data_template:
          message: Fin de l'alerte météo.
2 « J'aime »

Merci de ton aide @Felix62 mais je ne reçois aucune notification (ni erreur).

Le code, je le colle bien dans le fichier automations.yaml ?

oui dans automation.yaml
le code se déclenchera lors des prochaines alertes soit en certain :slight_smile:

Normal de trouver ça en fin du code ?

J’ai corriger en supprimant ces deux lignes dans le message précédent il s’agit du début d’une de mes autres automation :sweat_smile: