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

Merci pour le partage.

Bonjour,
j’ai adapté ce tuto pour mon utilisation mais je ne reçois pas de notification.
j’ai supprimer la partie Google car je veux que des notifications sur mon smartphone.
pouvez vous m’aidé?
Merci

voici le code

- id: 30f4e5a8-df44-11ea-87d0-0242ac130003
  alias: Alerte quand pluie attendue
  description: Envoie des notifications quand la pluie est attendue dans l'heure
  trigger:
  - platform: state
    entity_id: sensor.courlay_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'
      sequence:
      - choose:
        - conditions:
          - condition: template
            value_template: '{{ trigger.to_state.state != trigger.from_state.state
              }}'
          sequence:
          - service: notify.telegram_groupe
            data:
              message: 'La pluie est attendue à {{ as_timestamp(states(''sensor.courlay_next_rain''))
                | timestamp_custom(''%H:%M'', True) }}.

                '
      - choose:
        - conditions:
          - condition: template
            value_template: '{{ state_attr(''ssensor.courlay_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.telegram_groupe
        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

en faite je reçois que ça comme notification alors que quand je l’ai mis en place j’avais bien de la pluie de prévu

      - choose:
        - conditions:
          - condition: template
            value_template: '{{ state_attr(''ssensor.courlay_next_rain'', ''1_hour_forecast'')[''0
              min''] != ''Temps sec'' }}'

tu as un s en trop sur l’entité ssensor.courlay_next_rain au lieu de sensor.courlay_next_rain

merci j’avais, pas vu ça mais ça ne fonctionne toujours pas toujours que c’est notification et pas les pluie

image

Ajoute ceci en première action pour déboguer :

- service: persistent_notification.create
  data:
    message: "L'entité **{{trigger.from_state.state.name}}** *({{trigger.from_state.state.entity_id}})* vient de passer de : \n '{{trigger.from_state.state}}' \n à \n '{{trigger.to_state.state}}'"
    title: "DEBUG Automatisation"
    notification_id: "{{ (range(1, 9999)|random) }}"

Ensuite, il attendre que l’automatisation s’éxécute d’elle même, car l’utilisation des trigger.from\to_state n’est pas compatible avec le déclenchement fait par l’interface car le déclencheur n’existe pas à ce moment…
(voir la :information_source: de cette page )

j’ai ce message quand je veux ajouter en 1er action le code que tu ma donné:
image

Tu peux déboguer en forçant la valeur des états et des attributs dans l’onglet Etats de la section outils de développement .

C’est comme ca que je fais.

1 « J'aime »

Attention il y a un ou plusieurs bug ouverts sur l’IHM de création d’automatisation si vous alternez entre la vue YAML et la vue classique.
Si vous copiez un code YAML sans trop comprendre son contenu, faites le dans l’IHM en mode YAML, enregistrez le mais si vous revenez en mode standard n’enregistrez pas les modifications.

Je t’avoues que je l’ai écrit rapidement et ne l’est pas du tout testé…

Je suis au boulot, donc ça attendra ce soir pour ma part.

Effectivement, j’étais parti sur le fait d’informer que l’execution manuelle ne marche pas dans le cas de l’utilisation des données contenu dans le déclencheur :+1:

très bien pas de problème je vais attendre je suis moi même au boulot :stuck_out_tongue:

Après une pause café passé sur le forum (car les collègues sont en vacances… :sob:) :

    #DEBUG
    - service: persistent_notification.create
      data:
        message: "L'entité **{{trigger.from_state.name}}** *({{trigger.from_state.entity_id}})* vient de passer de : \n '{{trigger.from_state.state}}' \n à \n '{{trigger.to_state.state}}'"
        title: "DEBUG Automatisation"
        notification_id: "{{ (range(1, 9999)|random) }}"
    #DEBUG

il y avait un ‹ trigger.from_state .state. name › de trop :+1:, mais sans rapport avec ton erreur.

J’ai pris ton automatisation, et ajouter donc le débogage :

- id: 30f4e5a8-df44-11ea-87d0-0242ac130003
  alias: Alerte quand pluie attendue
  description: Envoie des notifications quand la pluie est attendue dans l'heure
  trigger:
  - platform: state
    entity_id: sensor.courlay_next_rain
  action:
  #DEBUG
  - service: persistent_notification.create
    data:
      message: "L'entité **{{trigger.from_state.name}}** *({{trigger.from_state.entity_id}})* vient de passer de : \n '{{trigger.from_state.state}}' \n à \n '{{trigger.to_state.state}}'"
      title: "DEBUG Automatisation"
      notification_id: "{{ (range(1, 9999)|random) }}"
  #DEBUG
  - choose:
    - conditions:
      - condition: template
        value_template: '{{ trigger.to_state.state != ''unknown'' }}'
      - condition: state
        entity_id: input_boolean.stop_rain_notification
        state: 'off'
      sequence:
      #DEBUG
      - service: persistent_notification.create
        data:
          message: "Déclencheur différent de 'unknown'"
          title: "DEBUG Automatisation"
          notification_id: "{{ (range(1, 9999)|random) }}"
      #DEBUG
      - choose:
        - conditions:
          - condition: template
            value_template: '{{ trigger.to_state.state != trigger.from_state.state
              }}'
          sequence:
          #DEBUG
          - service: persistent_notification.create
            data:
              message: "Déclencheur différent de l'état précédent, la pluie arrive !"
              title: "DEBUG Automatisation"
              notification_id: "{{ (range(1, 9999)|random) }}"
          #DEBUG
          - service: notify.telegram_groupe
            data:
              message: 'La pluie est attendue à {{ as_timestamp(states(''sensor.courlay_next_rain''))
                | timestamp_custom(''%H:%M'', True) }}.

                '
      - choose:
        - conditions:
          - condition: template
            value_template: '{{ state_attr(''ssensor.courlay_next_rain'', ''1_hour_forecast'')[''0
              min''] != ''Temps sec'' }}'
          sequence:
          #DEBUG
          - service: persistent_notification.create
            data:
              message: "La pluie est là !"
              title: "DEBUG Automatisation"
              notification_id: "{{ (range(1, 9999)|random) }}"
          #DEBUG
          - 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:
      #DEBUG
      - service: persistent_notification.create
        data:
          message: "Plus de pluie dans l'heure..."
          title: "DEBUG Automatisation"
          notification_id: "{{ (range(1, 9999)|random) }}"
      #DEBUG
      - service: notify.telegram_groupe
        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

Je te confirme que ce code fonctionne car je l’ai testé :wink:

:warning: je n’ai rien modifié à la logique, du coup, une question me vient :

  • As tu bien créé le booléen input_boolean.stop_rain_notification ?
    Car sans lui, tu ne verras que la première notification…

J’aimerai bien trouver un moyen de le faire sans le input_boolen.

1 « J'aime »

Et pourquoi ne pas utiliser les scènes ?

Une utilisation ici.
Et conditionner sur le fait de son existence ?

ah non j’avais pas fait le input boolean :frowning:
par contre j’ai un autre problème lol

image

je pense a voir trouvé j’ai changer le fuseau horaire

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:)