Afficher les risques d'averses météo France

L’intégration Météo-France donne accès aux prévisions d’averses à une heure.
dans l’ancienne integration, l’information était disponible toutes les 5 minutes, dorénavant vous avez les infos pour :
0 min, 5 min, 10 min, 15 min, 20 min, 25 min, 35 min, 45 min, 55 min. (30, 40, 50 ne sont plus disponible)
je vous propose ici le code de weado mis à jour par mes soins pour fonctionner avec la derniere version de l’'intégration Météo-France (>=0.115.x).
Avec en plus une condition pour n’afficher les informations qu’en cas d’averse prévue.
cela donne ça (avec mon thème dark)

# https://pon.fr/home-assistant-afficher-les-risques-daverses-meteo-france/
# https://forum.hacf.fr/t/afficher-les-risques-daverses-meteo-france/579
# https://community.home-assistant.io/t/new-custom-component-france-weather-alerts-from-meteo-france/55831/79
          - type: vertical-stack
            cards: 
              - type: conditional
                conditions:
                  - entity: sensor.limoges_next_rain
                    state_not: "unknown"
                card:
                  type: entities
                  entities:
                    - entity: sensor.limoges_next_rain
                      name: Averse
              - type: conditional
                conditions:
                  - entity: sensor.limoges_next_rain
                    state_not: "unknown"
                card:
                  type: horizontal-stack
                  cards:
                    - color_type: card
                      entity: sensor.limoges_next_rain
                      name: "0"
                      show_icon: false
                      show_state: false
                      state:
                        - color: 'rgb(204, 217, 255)'
                          operator: template
                          value: |
                            [[[
                              return states['sensor.limoges_next_rain'].attributes
                              && (states['sensor.limoges_next_rain'].attributes['1_hour_forecast']['0 min'] == 'Pluie faible')
                            ]]]
                        - color: 'rgb(128, 159, 255)'  
                          operator: template
                          value: |
                            [[[
                              return states['sensor.limoges_next_rain'].attributes
                              && (states['sensor.limoges_next_rain'].attributes['1_hour_forecast']['0 min'] == 'Pluie modérée')
                            ]]]
                        - color: 'rgb(51, 102, 255)' 
                          operator: template
                          value: |
                            [[[
                              return states['sensor.limoges_next_rain'].attributes
                              && (states['sensor.limoges_next_rain'].attributes['1_hour_forecast']['0 min'] == 'Pluie forte')
                            ]]]
                        - color: 'rgb(255, 255, 255)'
                          operator: default
                      styles:
                        card:
                          - height: 50px
                      type: 'custom:button-card'

                    - color_type: card
                      entity: sensor.limoges_next_rain
                      name: 05
                      show_icon: false
                      show_state: false
                      state:
                        - color: 'rgb(204, 217, 255)'
                          operator: template
                          value: |
                            [[[
                              return states['sensor.limoges_next_rain'].attributes
                              && (states['sensor.limoges_next_rain'].attributes['1_hour_forecast']['5 min'] == 'Pluie faible')
                            ]]]
                        - color: 'rgb(128, 159, 255)'
                          operator: template
                          value: |
                            [[[
                              return states['sensor.limoges_next_rain'].attributes
                              && (states['sensor.limoges_next_rain'].attributes['1_hour_forecast']['5 min'] == 'Pluie modérée')
                            ]]]
                        - color: 'rgb(51, 102, 255)'
                          operator: template
                          value: |
                            [[[
                              return states['sensor.limoges_next_rain'].attributes
                              && (states['sensor.limoges_next_rain'].attributes['1_hour_forecast']['5 min'] == 'Pluie forte')
                            ]]]
                        - color: 'rgb(255, 255, 255)'
                          operator: default
                      styles:
                        card:
                          - height: 50px
                      type: 'custom:button-card'

                    - color_type: card
                      entity: sensor.limoges_next_rain
                      name: 10
                      show_icon: false
                      show_state: false
                      state:
                        - color: 'rgb(204, 217, 255)'
                          operator: template
                          value: |
                            [[[
                              return states['sensor.limoges_next_rain'].attributes
                              && (states['sensor.limoges_next_rain'].attributes['1_hour_forecast']['10 min'] == 'Pluie faible')
                            ]]]
                        - color: 'rgb(128, 159, 255)'
                          operator: template
                          value: |
                            [[[
                              return states['sensor.limoges_next_rain'].attributes
                              && (states['sensor.limoges_next_rain'].attributes['1_hour_forecast']['10 min'] == 'Pluie modérée')
                            ]]]
                        - color: 'rgb(51, 102, 255)'
                          operator: template
                          value: |
                            [[[
                              return states['sensor.limoges_next_rain'].attributes
                              && (states['sensor.limoges_next_rain'].attributes['1_hour_forecast']['10 min'] == 'Pluie forte')
                            ]]]
                        - color: 'rgb(255, 255, 255)'
                          operator: default
                      styles:
                        card:
                          - height: 50px
                      type: 'custom:button-card'

                    - color_type: card
                      entity: sensor.limoges_next_rain
                      name: 15
                      show_icon: false
                      show_state: false
                      state:
                        - color: 'rgb(204, 217, 255)'
                          operator: template
                          value: |
                            [[[
                              return states['sensor.limoges_next_rain'].attributes
                              && (states['sensor.limoges_next_rain'].attributes['1_hour_forecast']['15 min'] == 'Pluie faible')
                            ]]]
                        - color: 'rgb(128, 159, 255)'
                          operator: template
                          value: |
                            [[[
                              return states['sensor.limoges_next_rain'].attributes
                              && (states['sensor.limoges_next_rain'].attributes['1_hour_forecast']['15 min'] == 'Pluie modérée')
                            ]]]
                        - color: 'rgb(51, 102, 255)'
                          operator: template
                          value: |
                            [[[
                              return states['sensor.limoges_next_rain'].attributes
                              && (states['sensor.limoges_next_rain'].attributes['1_hour_forecast']['15 min'] == 'Pluie forte')
                            ]]]
                        - color: 'rgb(255, 255, 255)'
                          operator: default
                      styles:
                        card:
                          - height: 50px
                      type: 'custom:button-card'

                    - color_type: card
                      entity: sensor.limoges_next_rain
                      name: 20
                      show_icon: false
                      show_state: false
                      state:
                        - color: 'rgb(204, 217, 255)'
                          operator: template
                          value: |
                            [[[
                              return states['sensor.limoges_next_rain'].attributes
                              && (states['sensor.limoges_next_rain'].attributes['1_hour_forecast']['20 min'] == 'Pluie faible')
                            ]]]
                        - color: 'rgb(128, 159, 255)'
                          operator: template
                          value: |
                            [[[
                              return states['sensor.limoges_next_rain'].attributes
                              && (states['sensor.limoges_next_rain'].attributes['1_hour_forecast']['20 min'] == 'Pluie modérée')
                            ]]]
                        - color: 'rgb(51, 102, 255)'
                          operator: template
                          value: |
                            [[[
                              return states['sensor.limoges_next_rain'].attributes
                              && (states['sensor.limoges_next_rain'].attributes['1_hour_forecast']['20 min'] == 'Pluie forte')
                            ]]]
                        - color: 'rgb(255, 255, 255)'
                          operator: default
                      styles:
                        card:
                          - height: 50px
                      type: 'custom:button-card'

                    - color_type: card
                      entity: sensor.limoges_next_rain
                      name: 25
                      show_icon: false
                      show_state: false
                      state:
                        - color: 'rgb(204, 217, 255)'
                          operator: template
                          value: |
                            [[[
                              return states['sensor.limoges_next_rain'].attributes
                              && (states['sensor.limoges_next_rain'].attributes['1_hour_forecast']['25 min'] == 'Pluie faible')
                            ]]]
                        - color: 'rgb(128, 159, 255)'
                          operator: template
                          value: |
                            [[[
                              return states['sensor.limoges_next_rain'].attributes
                              && (states['sensor.limoges_next_rain'].attributes['1_hour_forecast']['25 min'] == 'Pluie modérée')
                            ]]]
                        - color: 'rgb(51, 102, 255)'
                          operator: template
                          value: |
                            [[[
                              return states['sensor.limoges_next_rain'].attributes
                              && (states['sensor.limoges_next_rain'].attributes['1_hour_forecast']['25 min'] == 'Pluie forte')
                            ]]]
                        - color: 'rgb(255, 255, 255)'
                          operator: default
                      styles:
                        card:
                          - height: 50px
                      type: 'custom:button-card'

                    - color_type: card
                      entity: sensor.limoges_next_rain
                      name: 35
                      show_icon: false
                      show_state: false
                      state:
                        - color: 'rgb(204, 217, 255)'
                          operator: template
                          value: |
                            [[[
                              return states['sensor.limoges_next_rain'].attributes
                              && (states['sensor.limoges_next_rain'].attributes['1_hour_forecast']['35 min'] == 'Pluie faible')
                            ]]]
                        - color: 'rgb(128, 159, 255)'
                          operator: template
                          value: |
                            [[[
                              return states['sensor.limoges_next_rain'].attributes
                              && (states['sensor.limoges_next_rain'].attributes['1_hour_forecast']['35 min'] == 'Pluie modérée')
                            ]]]
                        - color: 'rgb(51, 102, 255)'
                          operator: template
                          value: |
                            [[[
                              return states['sensor.limoges_next_rain'].attributes
                              && (states['sensor.limoges_next_rain'].attributes['1_hour_forecast']['35 min'] == 'Pluie forte')
                            ]]]
                        - color: 'rgb(255, 255, 255)'
                          operator: default
                      styles:
                        card:
                          - height: 50px
                      type: 'custom:button-card'

                    - color_type: card
                      entity: sensor.limoges_next_rain
                      name: 45
                      show_icon: false
                      show_state: false
                      state:
                        - color: 'rgb(204, 217, 255)'
                          operator: template
                          value: |
                            [[[
                              return states['sensor.limoges_next_rain'].attributes
                              && (states['sensor.limoges_next_rain'].attributes['1_hour_forecast']['45 min'] == 'Pluie faible')
                            ]]]
                        - color: 'rgb(128, 159, 255)'
                          operator: template
                          value: |
                            [[[
                              return states['sensor.limoges_next_rain'].attributes
                              && (states['sensor.limoges_next_rain'].attributes['1_hour_forecast']['45 min'] == 'Pluie modérée')
                            ]]]
                        - color: 'rgb(51, 102, 255)'
                          operator: template
                          value: |
                            [[[
                              return states['sensor.limoges_next_rain'].attributes
                              && (states['sensor.limoges_next_rain'].attributes['1_hour_forecast']['45 min'] == 'Pluie forte')
                            ]]]
                        - color: 'rgb(255, 255, 255)'
                          operator: default
                      styles:
                        card:
                          - height: 50px
                      type: 'custom:button-card'

                    - color_type: card
                      entity: sensor.limoges_next_rain
                      name: 55
                      show_icon: false
                      show_state: false
                      state:
                        - color: 'rgb(204, 217, 255)'
                          operator: template
                          value: |
                            [[[
                              return states['sensor.limoges_next_rain'].attributes
                              && (states['sensor.limoges_next_rain'].attributes['1_hour_forecast']['55 min'] == 'Pluie faible')
                            ]]]
                        - color: 'rgb(128, 159, 255)'
                          operator: template
                          value: |
                            [[[
                              return states['sensor.limoges_next_rain'].attributes
                              && (states['sensor.limoges_next_rain'].attributes['1_hour_forecast']['55 min'] == 'Pluie modérée')
                            ]]]
                        - color: 'rgb(51, 102, 255)'
                          operator: template
                          value: |
                            [[[
                              return states['sensor.limoges_next_rain'].attributes
                              && (states['sensor.limoges_next_rain'].attributes['1_hour_forecast']['55 min'] == 'Pluie forte')
                            ]]]
                        - color: 'rgb(255, 255, 255)'
                          operator: default
                      styles:
                        card:
                          - height: 50px
                      type: 'custom:button-card'

###########################################################################
3 J'aime

Merci pour le partage :+1:

Merci @papoo pour le partage :kissing_smiling_eyes:

1 J'aime

Annhh trop bien, je viens de découvrir ce forum en cherchant des informations concernant le plugin meteofrance!

(Je squatte un peu le topic, désolé)

Est-ce que l’un de vous saurais m’indiquer comment utiliser le « next_rain » pour créér des automatismes…?

J’ai un capteur d’ouverture sur une de mes fenetres et j’aurais aimé créer une alerte lorsqu’il va pleuvoir dans les 5-10 minutes et que la fenetres est ouverte.

J’avais réussi a faire fonctionner cet automation en utilisant le weather.ville mais malheureusement les prévisions ne sont pas très précises :frowning:

Merci d’avance si l’un de vous à des informations à ce sujet, je vais m’empresser de découvrir et parcourir ce forum :slight_smile:

je ferais un truc du genre

- alias: "alerte fenetres ouvertes"
  trigger:
    - platform: time_pattern
      minutes: '/1'
      seconds: 0
  condition:
    condition: and # toutes les conditions doivent être vraies "TRUE" avant que l'action ne soit exécutée.
    conditions:

    - condition: state
      entity_id: binary_sensor.fenetre_douche
      state: on
      # # Time based conditions
    - condition: template
      value_template: '{{state_attr('sensor.limoges_next_rain', '1_hour_forecast')['5 min'] != 'Temps sec' }}' 

  action:

[quote=« MrDje, post:6, topic:579, full:true »]
Anh, merci infiniment!

J’avoue j’arrive a m’en sortir -a peu près- avec des automations relativement basiques, mais les templates me dépassent complètement.

Bon par contre la syntaxe ne plait pas a mon file editor:

Il faut mettre des guillemets plutot que des quotes pour entourer le template :+1:

En fait, le coup des guillemets ou des quotes est un basique :

Il ne faut pas utiliser les mêmes pour marquer le début/fin de la propriété et les échappements dans les formules.

Du coup, pour reprendre @papoo :

value_template: "{{state_attr('sensor.limoges_next_rain', '1_hour_forecast')['5 min'] != 'Temps sec' }}" 

et

value_template: '{{state_attr("sensor.limoges_next_rain" , "1_hour_forecast")["5 min"] != "Temps sec" }}' 

doivent fonctionner tous les deux.

Décidemment les templates, c’est pas pour moi :frowning:

Ayant plusieurs automations qui pourraient utiliser ce capteur ‹ il_va_pleuvoir › dans différents contextes, et ne voulant pas requeter à foisons toutes les minutes mon ‹ next_rain ›, j’ai essayé de créér un template qui activerait un boolean sur « différent de temps sec » et qui le désactiverait sur « temps sec »…

Mais j’avoue que la combinaison template + « if » / « else if » me dépasse un peu :frowning:

Help :relaxed: :eyes:

@MrDje il te faut créer un template binary sensor (doc)

Ensuite, pour creuser les templates tu peux déjà lire ceci :

Mais pour la formule à renseigner pour un binary_sensor, elle doit renvoyer true donc tu peux très bien utiliser la formule extraite dans le post 8

binary_sensor:
  - platform: template
    sensors:
      pluie_5min:
        friendly_name: "Pluie dans 5 minutes"
        value_template: >-
          {{state_attr('sensor.limoges_next_rain', '1_hour_forecast')['5 min'] != 'Temps sec' }}

Ce capteur sera à true s’il pleut dans les 5mins.
Ensuite, tu en crée d’autre pour les autres périodes.

Je ne proposai pas une automation prêt à l’emploi
J’ai juste écris rapidement comment je récupérerai l’info si j’avais à le faire, sans terminer ni tester l’automation
Attention l’information next_rain Xmn est sous forme d’attribut pas d’état

Un grand merci à @Clemalex et @papoo pour votre aide et vos exemples!

Le dernier template en binary_sensor semble fonctionner parfaitement :+1:

Encore merci!

1 J'aime