Être alerté si la pluie est attendue dans moins d'une heure

Tu veux dire que tu l’avais mal renseigné à l’installation ?

si je pose la question, c’est pour m’assurer que le code est bon

Car c’est la fonction as_timestamp() qui renvoi l’heure locale (le fait de mettre True en paramètre)

oui j’avais laisser UTC, mais la il pleut plus chez moi c’est chiant alors plus de notification lol

Remonte plus haut dans le fil pour déboguer, @oncleben31 à mit comment il faisait (et c’est ce qu’il faut faire :wink:)

c’est bon ça marche :slight_smile:
image

par contre c’est possible de rajouter si c’est une pluie faible ou autre pour avoir un peux plus de détails?

Je t’invite à lire la documentation pour essayer et nous faire un retour :+1:

1 « J'aime »

Hello. Je re ouvre le fil car je cherche un blueprint (si pluie dans dans l’heure ou 30 mn) avec évidemment l’api Meteo france, pour y associer une scene ?!

des pistes ?

Bonjour à tous , merci @oncleben31 cela fonctionne parfaitement :slight_smile:

bonjour , ce script fonctionne t’il toujours car je le copie colle dans mon éditeur Yaml et que je change avec mes entités. j 'ai une erreur .

Message malformed: expected dictionary

ca vous dit quelquechose ? :slight_smile:
merci à tous

Perso je ne me suis pas compliqué la vie, j’ai créé un template sensor (on/off) qui regade si le premier attribut forecast de mon integration meteo france contient le mot « rain », et j’ai créé une automatisation qui m’alerte quand il passe a on, ca m’evite de gérer si j’ai deja été notifié ou pas :slight_smile:

Et oui je prefere HA en anglais

platform: template
sensors:
  rain_next_hour:
    friendly_name: "Rain Next Hour"
    value_template: >-
      {% if 'rain' in state_attr('weather.ma_ville_top_secrete', 'forecast')[0].condition  %}
      on
      {% else %}
      off
      {% endif %}

en fait tout fonctionne nickel , j’avait fait une boulette :wink: merci beaucoup!
serait-il possible au lieu de notify.notify d’utiliser les notifications iOS ? j’ai essayé mais ca ne fonctionne pas . il faut sans doute changer le format du message à transmettre .

Merci pour cette automatisation. Après installation, et avec les jours de pluie de ce milieu de semaine, je suis spammé sur mon Telegram.

J’ai loupé quelque chose ou c’est chez tout le monde comme ça ?

C’est pour tout le monde pareil

1 « J'aime »

Depuis la maj HA il m’indique que certaines valeur timestamp n’ont pas de valeur par defaut, pouvez-vous me dire si j’ai mal intégré la valeur par defaut :

- alias: '[NOTIFY]Alerte quand pluie attendue'
  id: 30f4e5a8-df44-11ea-87d0-0242ac130003
  description: Envoie des notifications quand la pluie est attendue dans l'heure
  max_exceeded: silent
  trigger:
  - platform: state
    entity_id: sensor.ville_next_rain
  action:
  - choose:
    - conditions:
      - condition: template
        value_template: '{{ trigger.to_state.state != ''unknown'' }}'
      - condition: state
        entity_id: input_boolean.stop_rain_notification
        state: 'off'
        for:
          minutes: 10
      - condition: time
        after: 05:00:00
        before: '22:00:00'
      sequence:
      - choose:
        - conditions:
          - condition: template
            value_template: '{{ trigger.to_state.state != trigger.from_state.state
              }}'
          sequence:
          - service: notify.notify
            data:
              title: Alerte pluie de [5h/22h]
              message: La pluie est attendue à {{ as_timestamp(states('sensor.ville_next_rain')[0])
                | timestamp_custom('%H:%M', True, 0) }}.🌧️
          - delay:
              hours: 0
              minutes: 20
              seconds: 0
              milliseconds: 0
          - service: input_boolean.turn_off
            data: {}
            target:
              entity_id: input_boolean.stop_rain_notification
      - choose:
        - conditions:
          - condition: template
            value_template: '{{ state_attr(''sensor.ville_next_rain'', ''1_hour_forecast'')[''0
              min''] != ''Temps sec'' }}'
          sequence:
          - service: input_boolean.turn_on
            data:
              entity_id: input_boolean.stop_rain_notification
    - conditions:
      - condition: template
        value_template: '{{ trigger.to_state.state == ''unknown'' }}'
      - condition: template
        value_template: '{{ trigger.from_state.state != ''unknown'' }}'
      sequence:
      - service: notify.notify
        data:
          message: Plus de pluie attendue dans la prochaine heure 🌤️.
      - service: input_boolean.turn_off
        data:
          entity_id: input_boolean.stop_rain_notification
  mode: single

J’ai depuis cette erreur persistante, comment met-on la valeur par defaut merci

Error rendering data template: ValueError: Template error: as_timestamp got invalid input '2' when rendering template 'La pluie est attendue à {{ as_timestamp(states('sensor.xxxx_next_rain')[0]) | timestamp_custom('%H:%M', True, 0)(0) }}.🌧️' but no default was specified

Bonjour,
Après avoir essayé cette automatisation quelques mois, je me rends compte que j’ai pas mal de notifications et parfois, cela n’a aucun intérêt pour moi. Je préfèrerai avoir des notifications seulement quand mes fenêtres sont ouvertes.
Si j’ai besoin de savoir si la pluie arrive, je vais ouvrir l’appli et regarder ma carte de prévisions :

### PLUIE DANS L'HEURE ###
  - type: vertical-stack
    cards: 
      - type: conditional
        conditions:
          - entity: sensor.chalon_sur_saone_next_rain
            state_not: "unknown"
        card:
          type: entities
          entities:
            - entity: sensor.chalon_sur_saone_next_rain
              name: Averse
      - type: conditional
        conditions:
          - entity: sensor.chalon_sur_saone_next_rain
            state_not: "unknown"
        card:
          type: horizontal-stack
          cards:
            - color_type: card
              entity: sensor.chalon_sur_saone_next_rain
              name: "0"
              show_icon: false
              show_state: false
              state:
                - color: 'rgb(204, 217, 255)'
                  operator: template
                  value: |
                    [[[
                      return states['sensor.chalon_sur_saone_next_rain'].attributes
                      && (states['sensor.chalon_sur_saone_next_rain'].attributes['1_hour_forecast']['0 min'] == 'Pluie faible')
                    ]]]
                - color: 'rgb(128, 159, 255)'  
                  operator: template
                  value: |
                    [[[
                      return states['sensor.chalon_sur_saone_next_rain'].attributes
                      && (states['sensor.chalon_sur_saone_next_rain'].attributes['1_hour_forecast']['0 min'] == 'Pluie modérée')
                    ]]]
                - color: 'rgb(51, 102, 255)' 
                  operator: template
                  value: |
                    [[[
                      return states['sensor.chalon_sur_saone_next_rain'].attributes
                      && (states['sensor.chalon_sur_saone_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'
# Prochaine pluie à 5min
            - color_type: card
              entity: sensor.chalon_sur_saone_next_rain
              name: 05
              show_icon: false
              show_state: false
              state:
                - color: 'rgb(204, 217, 255)'
                  operator: template
                  value: |
                    [[[
                      return states['sensor.chalon_sur_saone_next_rain'].attributes
                      && (states['sensor.chalon_sur_saone_next_rain'].attributes['1_hour_forecast']['5 min'] == 'Pluie faible')
                    ]]]
                - color: 'rgb(128, 159, 255)'
                  operator: template
                  value: |
                    [[[
                      return states['sensor.chalon_sur_saone_next_rain'].attributes
                      && (states['sensor.chalon_sur_saone_next_rain'].attributes['1_hour_forecast']['5 min'] == 'Pluie modérée')
                    ]]]
                - color: 'rgb(51, 102, 255)'
                  operator: template
                  value: |
                    [[[
                      return states['sensor.chalon_sur_saone_next_rain'].attributes
                      && (states['sensor.chalon_sur_saone_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'
# Prochaine pluie à 10min
            - color_type: card
              entity: sensor.chalon_sur_saone_next_rain
              name: 10
              show_icon: false
              show_state: false
              state:
                - color: 'rgb(204, 217, 255)'
                  operator: template
                  value: |
                    [[[
                      return states['sensor.chalon_sur_saone_next_rain'].attributes
                      && (states['sensor.chalon_sur_saone_next_rain'].attributes['1_hour_forecast']['10 min'] == 'Pluie faible')
                    ]]]
                - color: 'rgb(128, 159, 255)'
                  operator: template
                  value: |
                    [[[
                      return states['sensor.chalon_sur_saone_next_rain'].attributes
                      && (states['sensor.chalon_sur_saone_next_rain'].attributes['1_hour_forecast']['10 min'] == 'Pluie modérée')
                    ]]]
                - color: 'rgb(51, 102, 255)'
                  operator: template
                  value: |
                    [[[
                      return states['sensor.chalon_sur_saone_next_rain'].attributes
                      && (states['sensor.chalon_sur_saone_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'
# Prochaine pluie à 15min
            - color_type: card
              entity: sensor.chalon_sur_saone_next_rain
              name: 15
              show_icon: false
              show_state: false
              state:
                - color: 'rgb(204, 217, 255)'
                  operator: template
                  value: |
                    [[[
                      return states['sensor.chalon_sur_saone_next_rain'].attributes
                      && (states['sensor.chalon_sur_saone_next_rain'].attributes['1_hour_forecast']['15 min'] == 'Pluie faible')
                    ]]]
                - color: 'rgb(128, 159, 255)'
                  operator: template
                  value: |
                    [[[
                      return states['sensor.chalon_sur_saone_next_rain'].attributes
                      && (states['sensor.chalon_sur_saone_next_rain'].attributes['1_hour_forecast']['15 min'] == 'Pluie modérée')
                    ]]]
                - color: 'rgb(51, 102, 255)'
                  operator: template
                  value: |
                    [[[
                      return states['sensor.chalon_sur_saone_next_rain'].attributes
                      && (states['sensor.chalon_sur_saone_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'
# Prochaine pluie à 20min
            - color_type: card
              entity: sensor.chalon_sur_saone_next_rain
              name: 20
              show_icon: false
              show_state: false
              state:
                - color: 'rgb(204, 217, 255)'
                  operator: template
                  value: |
                    [[[
                      return states['sensor.chalon_sur_saone_next_rain'].attributes
                      && (states['sensor.chalon_sur_saone_next_rain'].attributes['1_hour_forecast']['20 min'] == 'Pluie faible')
                    ]]]
                - color: 'rgb(128, 159, 255)'
                  operator: template
                  value: |
                    [[[
                      return states['sensor.chalon_sur_saone_next_rain'].attributes
                      && (states['sensor.chalon_sur_saone_next_rain'].attributes['1_hour_forecast']['20 min'] == 'Pluie modérée')
                    ]]]
                - color: 'rgb(51, 102, 255)'
                  operator: template
                  value: |
                    [[[
                      return states['sensor.chalon_sur_saone_next_rain'].attributes
                      && (states['sensor.chalon_sur_saone_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'
# Prochaine pluie à 25min
            - color_type: card
              entity: sensor.chalon_sur_saone_next_rain
              name: 25
              show_icon: false
              show_state: false
              state:
                - color: 'rgb(204, 217, 255)'
                  operator: template
                  value: |
                    [[[
                      return states['sensor.chalon_sur_saone_next_rain'].attributes
                      && (states['sensor.chalon_sur_saone_next_rain'].attributes['1_hour_forecast']['25 min'] == 'Pluie faible')
                    ]]]
                - color: 'rgb(128, 159, 255)'
                  operator: template
                  value: |
                    [[[
                      return states['sensor.chalon_sur_saone_next_rain'].attributes
                      && (states['sensor.chalon_sur_saone_next_rain'].attributes['1_hour_forecast']['25 min'] == 'Pluie modérée')
                    ]]]
                - color: 'rgb(51, 102, 255)'
                  operator: template
                  value: |
                    [[[
                      return states['sensor.chalon_sur_saone_next_rain'].attributes
                      && (states['sensor.chalon_sur_saone_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'
# Prochaine pluie à 35min
            - color_type: card
              entity: sensor.chalon_sur_saone_next_rain
              name: 35
              show_icon: false
              show_state: false
              state:
                - color: 'rgb(204, 217, 255)'
                  operator: template
                  value: |
                    [[[
                      return states['sensor.chalon_sur_saone_next_rain'].attributes
                      && (states['sensor.chalon_sur_saone_next_rain'].attributes['1_hour_forecast']['35 min'] == 'Pluie faible')
                    ]]]
                - color: 'rgb(128, 159, 255)'
                  operator: template
                  value: |
                    [[[
                      return states['sensor.chalon_sur_saone_next_rain'].attributes
                      && (states['sensor.chalon_sur_saone_next_rain'].attributes['1_hour_forecast']['35 min'] == 'Pluie modérée')
                    ]]]
                - color: 'rgb(51, 102, 255)'
                  operator: template
                  value: |
                    [[[
                      return states['sensor.chalon_sur_saone_next_rain'].attributes
                      && (states['sensor.chalon_sur_saone_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'
# Prochaine pluie à 45min
            - color_type: card
              entity: sensor.chalon_sur_saone_next_rain
              name: 45
              show_icon: false
              show_state: false
              state:
                - color: 'rgb(204, 217, 255)'
                  operator: template
                  value: |
                    [[[
                      return states['sensor.chalon_sur_saone_next_rain'].attributes
                      && (states['sensor.chalon_sur_saone_next_rain'].attributes['1_hour_forecast']['45 min'] == 'Pluie faible')
                    ]]]
                - color: 'rgb(128, 159, 255)'
                  operator: template
                  value: |
                    [[[
                      return states['sensor.chalon_sur_saone_next_rain'].attributes
                      && (states['sensor.chalon_sur_saone_next_rain'].attributes['1_hour_forecast']['45 min'] == 'Pluie modérée')
                    ]]]
                - color: 'rgb(51, 102, 255)'
                  operator: template
                  value: |
                    [[[
                      return states['sensor.chalon_sur_saone_next_rain'].attributes
                      && (states['sensor.chalon_sur_saone_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'
# Prochaine pluie à 55min
            - color_type: card
              entity: sensor.chalon_sur_saone_next_rain
              name: 55
              show_icon: false
              show_state: false
              state:
                - color: 'rgb(204, 217, 255)'
                  operator: template
                  value: |
                    [[[
                      return states['sensor.chalon_sur_saone_next_rain'].attributes
                      && (states['sensor.chalon_sur_saone_next_rain'].attributes['1_hour_forecast']['55 min'] == 'Pluie faible')
                    ]]]
                - color: 'rgb(128, 159, 255)'
                  operator: template
                  value: |
                    [[[
                      return states['sensor.chalon_sur_saone_next_rain'].attributes
                      && (states['sensor.chalon_sur_saone_next_rain'].attributes['1_hour_forecast']['55 min'] == 'Pluie modérée')
                    ]]]
                - color: 'rgb(51, 102, 255)'
                  operator: template
                  value: |
                    [[[
                      return states['sensor.chalon_sur_saone_next_rain'].attributes
                      && (states['sensor.chalon_sur_saone_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'

J’ai donc regroupé mes 3 capteurs qui correspondent aux fenêtres que je souhaite suivre en cas de pluie :

# Mes fenêtres ouvertes
      - name: "Fenêtres ouvertes"
        unique_id: fenetres_ouvertes
        device_class: window
        state: >
            {{ 
              is_state('binary_sensor.fenetre_2_salon', 'on')
              or is_state('binary_sensor.porte_chambre_rdc', 'on')
              or is_state('binary_sensor.velux_1_chambre_etage', 'on')
            }} 

Et je l’ai ajouté en condition dans l’automatisation :

trigger:
  - platform: state
    entity_id:
      - sensor.chalon_sur_saone_next_rain
condition: []
action:
  - choose:
      - conditions:
          - "{{ trigger.to_state.state != 'unknown' }}"
          - condition: state
            entity_id: input_boolean.stop_rain_notification
            state: "off"
          - condition: state
            entity_id: binary_sensor.fenetres_ouvertes
            state: "on"
        sequence:
...

Maintenant, je souhaiterai avoir connaissance de la ou les fenêtres ouvertes dans mon message. Je dois donc rajouter un élément ici :

                  - service: notify.synochat_appart
                    data:
                      message: >
                        La pluie est attendue vers {{
                        as_timestamp(states('sensor.chalon_sur_saone_next_rain'))
                        | timestamp_custom('%H:%M', True) }}.

et ici :

                  - service: notify.synochat_appart
                    data:
                      message: La pluie est attendue dans quelques minutes.

Avec un message du style :
La pluie est attendue vers {{ as_timestamp(states(‹ sensor.chalon_sur_saone_next_rain ›)) | timestamp_custom(‹ %H:%M ›, True) }} et {{ fenetre en question }} est/sont ouverte/s !
et
La pluie est attendue dans quelques minutes et {{ fenetre en question }} est/sont toujours ouverte/s !

Avez-vous une idée ou un code que je pourrai adapté pour afficher le nom de mon binary_sensor qui correspond à la ou les fenêtres ouvertes ?
Merci !

En parallèle, sur jeedom j’utilisais le plugin meteoprev qui donnait une quantité estimée de pluie à 1, 2, 3 ou 4 jours.
Je ne sais pas quel site ils utilisent pour ça.
Savez vous si on peut récupérer cette info ?
J’ai vu qu’on savait le faire à 1h sur météofrance mais c’est trop peu pour une prévision d’un arrosage automatique.
Merci

Salut,
Regarde bien l’intégration météo france fait ça sur plusieurs jours :

Merci
Les entités sont dispo pour chaque jour ou en cumulées ?

chaque jour … 2.4 puis 0.2 ça ne peut pas être un cumul

1 « J'aime »

OK
Je l’ai installée mais je n’ai que 9 entités.
Concernant la pluie je n’ai que l’entité sur le daily precipitation.
Je ne vois pas comment faire pour récupérer ces valeurs dont tu parles