Envoyer des alertes (mail, etc) lors d'une coupure de courant?

Tu ne pourra pas avoir les deux en même temps avec le code que je t’ai donné mais ce n’est pas grave… Tu aura dans un premier temps la notification d’état puis ensuite, sur un changement de niveau, la charge de la batterie.

Pour avoir la notification de coupure/reprise de courant, il faut inverser l’ordre dans l’automatisation pour mettre en premier la vérification de l’état (actuellement c’est le niveau qui est e vérifié en premier)(cela sous-entend que lorsque tu débranche, l’intégration met également à jour le niveau et c’est lui qui est capté en 1er)

Merci !
Je regarde et teste demain :slight_smile:

Au final, tu as réussi à avoir une automatisation fonctionnelle ?

Si ou, peux tu la poster ? Afin de mettre le sujet résolu en indiquant ton post comme solution :ballot_box_with_check:

Je suis sous l’eau, je suis peu à la maison et je n’ai pas encore pu regarder ce que tu avais répondu, désolé.

Je reviens en parler dès que j’arrive à m’y remettre.

Y a pas de soucis :+1:

Je posais la question car je voulais guider une autre personne sur le post que tu utilisais mais je n’arrivait pas à déterminer lequel tu utilisais…

Maintenant je sais :laughing:

Bon courage ! :hugs:

Voilà, je peux enfin re-tester.

J’ai donc inversé, dans l’éditeur YAML, le contenu des 2 " - conditions:", mais ça fait toujours la même chose.

J’ai débranché l’onduleur, j’ai reçu une notif « décharge en cours 94% » mais pas la notif « détection coupure de courant ».

J’imagine que je m’y prends mal ?

Bon, aujourd’hui, sans rien avoir changé, ça fonctionne.
Entre, j’ai mis à jour HA / relancé (le core, HA, l’host).
Donc les modifs n’avaient peut-être pas été prises en compte ?

Désolé pour le dérangement, et encore MERCI pour cette super aide !

:+1:

Postes l’automatisation finale du coup et marque ton post la contenant comme solution :+1:

Voici donc l’automatisation qui fonctionne pour mon besoin :

alias: Gestion Onduleur
description: Notification en fonction des changements d'état de l'onduleur
trigger:
  - platform: state
    entity_id: sensor.myups_status_data_2
  - platform: state
    entity_id: sensor.myups_battery_charge_2
condition: []
action:
  - choose:
      - conditions:
          - condition: template
            value_template: >-
              {{trigger.from_state.entity_id.split('.')[1] ==
              'myups_status_data_2' }}
        sequence:
          - choose:
              - conditions:
                  - condition: or
                    conditions:
                      - condition: state
                        entity_id: sensor.myups_status_data_2
                        state: OB DISCHRG
                      - condition: state
                        entity_id: sensor.myups_status_data_2
                        state: FSD OB DISCHRG
                sequence:
                  - service: notify.huawei_lte
                    data:
                      message: >-
                        ⚠️ Détection ⚡ Coupure de Courant :
                        {{(now()|string).split('.')[0]}}
                  - service: notify.notify
                    data:
                      message: '⚠️ Détection : {{(now()|string).split(''.'')[0]}}'
                      title: "⚡ Coupure de Courant \U0001F50B"
                  - service: persistent_notification.create
                    data:
                      message: '⚠️ Détection : {{(now()|string).split(''.'')[0]}}'
                      title: "⚡ Coupure de Courant \U0001F50B"
                      notification_id: '{{ (range(1, 9999)|random) }}'
              - conditions:
                  - condition: template
                    value_template: >
                      {% set etat_precedent = trigger.from_state.state %} {% if
                      'DISCHRG' in etat_precedent.split() %}
                          true
                      {% else %}
                          false
                      {% endif %}
                  - condition: template
                    value_template: '{{ trigger.to_state.state != ''unknown'' }}'
                  - condition: template
                    value_template: '{{ trigger.to_state.state != ''unavailable'' }}'
                sequence:
                  - service: notify.huawei_lte
                    data:
                      message: "ℹ️ Détection ⚡ Retour du Courant \U0001F50C : {{(now()|string).split('.')[0]}}"
                  - service: notify.notify
                    data:
                      message: 'ℹ️ Détection : {{(now()|string).split(''.'')[0]}}'
                      title: "⚡ Retour du Courant \U0001F50C"
                  - service: persistent_notification.create
                    data:
                      message: 'ℹ️ Détection : {{(now()|string).split(''.'')[0]}}'
                      title: "⚡ Retour du Courant \U0001F50C"
                      notification_id: '{{ (range(1, 9999)|random) }}'
      - conditions:
          - condition: template
            value_template: >-
              {{trigger.from_state.entity_id.split('.')[1] ==
              'myups_battery_charge_2' }}
        sequence:
          - service: notify.huawei_lte
            data:
              message: >-
                ⚡ Onduleur niveau de batterie : {{
                states('sensor.myups_battery_charge_2')|int }}%
              title: >
                {% set etat_precedent = trigger.from_state.state|int  %} {% set
                etat_actuel = trigger.to_state.state|int  %} {% if
                etat_precedent > etat_actuel %}
                    ⚡ Décharge en cours ↘️
                {% else %}
                    ⚡ Recharge en cours ↗️
                {% endif %}  
          - service: notify.notify
            data:
              message: "\U0001F50B Onduleur niveau de batterie : {{ states('sensor.myups_battery_charge_2')|int }}%"
              title: >
                {% set etat_precedent = trigger.from_state.state|int %} {% set
                etat_actuel = trigger.to_state.state|int %} {% if etat_precedent
                > etat_actuel %}
                    ⚡ Décharge en cours ↘️
                {% else %}
                    ⚡ Recharge en cours ↗️
                {% endif %}               
          - service: persistent_notification.create
            data:
              message: "\U0001F50B Onduleur niveau de batterie : {{ states('sensor.myups_battery_charge_2')|int }}%"
              title: "{% set etat_precedent = trigger.from_state.state|int %} {% set etat_actuel = trigger.to_state.state|int %} {% if etat_precedent > etat_actuel %}\n    ⚡ Décharge en cours ↘️\n{% else %}\n   \U0001F50C Recharge en cours ↗️\n{% endif %}               \n"
              notification_id: '{{ (range(1, 9999)|random) }}'
mode: restart

1 « J'aime »

Bonjour,

Après quelques essai du code précédent avec mon onduleur quand la batterie descend fortement sa spam pas mal.

ma question: est-il possible d’indiquer tout les ‹ 10 › % envoyer la notif à la place de chaque changement de pourcentage ?

Merci d’avance

Bonjour

Je me permet de relancer ce sujet, J’ai utilisé le code ci dessus pour automatisation des alertes pour mon onduleur. sa fonctionne, mais j’ai un souci, c’est que la fréquence des messages se fait a chaque fois que le % de recharge ou décharge évolue de 1%.

  • est il possible que la notification ne soit envoyé que pour 10% de changement ?

voici le code que j’ai utilisé : (je pense que c’est dans cette partie qu’il faut modifier, mais je n’y arrive pas.

service: notify.telegram_pascal_ha
data:
  message: >-
    🔋 Onduleur niveau de batterie : {{ states('sensor.ups_battery_charge')|int
    }}%
  title: >
    {% set etat_precedent = trigger.from_state.state|int  %} {% set etat_actuel
    = trigger.to_state.state|int  %} {% if etat_precedent > etat_actuel %}
        ⚡ Décharge en cours ↘️
    {% else %}
        ⚡ Recharge en cours ↗️
    {% endif %}  

Merci de votre aide

A la lecture de ça, je pense que c’est plus sur le « trigger » qu’il va falloir jouer.

Le code que tu partages ne sert ni plus ni moins qu’à documenter le message :wink:

1 « J'aime »

Ce serait plus dans cette partie qu’il faut modifier (avant séquence) ?

      - conditions:
          - condition: template
            value_template: >-
              {{trigger.from_state.entity_id.split('.')[1] ==
              'ups_battery_charge' }}
        sequence:
          - service: notify.telegram_pascal_ha
            data:
              message: >-
                🔋 Onduleur niveau de batterie : {{
                states('sensor.ups_battery_charge')|int }}%
              title: >
                {% set etat_precedent = trigger.from_state.state|int  %} {% set
                etat_actuel = trigger.to_state.state|int  %} {% if
                etat_precedent > etat_actuel %}
                    ⚡ Décharge en cours ↘️
                {% else %}
                    ⚡ Recharge en cours ↗️
                {% endif %}  
mode: restart

Dans le même esprit qu’@Herbs je suis pas certain que le niveau de charge de la batterie soit un trigger intéressant :

  • En fonctionnement normal, la batterie est toujours chargée à 100% (soit 99% du temps)
  • Il y a décharge uniquement quand l’onduleur prends le relais par rapport à l’alimentation secteur. Idem la charge n’a lieu que quand le secteur est revenu
  • Comme en principe on coupe les applis avant la fin de la batterie, tu vas perdre une partie des infos des cycles

L’info importante à suivre c’est plutôt le fait d’avoir ou non du courant, il y a un sensor.xxx_status exprès

2 « J'aime »

Oui je pense que je vais simplifier.

Je vais récupérer :

  • la coupure secteur (ups status data : OB DISCHRG)
  • le retour secteur (ups status data : OL CHARG)
  • la charge une fois seulement à 100% (ups status data : OL)

c’est bien ce sensor ups status data qu’il que j’utilise
(nodered va être plus a ma portée pour le faire)

Tu as un autre status plus simple : avec juste online/battery. Faire le tri des 3 états de celui data c’est un bel exercice

oui j’ai ups.status

merci a vous deux pour votre aide.
Je vais voir cela dans la semaine, et faire des essais.

Pour ce week end c’est bon :exploding_head: :face_with_head_bandage:

bonne soirée

Pour ne pas être spams j’ai rajouter un délai entre deux notification.

Sinon option 2

condition: or
conditions:
  - condition: numeric_state
    entity_id: sensor.ups_battery_charge
    below: "101"
    above: "90"
  - condition: numeric_state
    entity_id: sensor.ups_battery_charge
    below: "71"
    above: "60"
  - condition: numeric_state
    entity_id: sensor.ups_battery_charge
    below: "51"
    above: "40"
  - condition: numeric_state
    entity_id: sensor.ups_battery_charge
    below: "31"
    above: "20"
  - condition: numeric_state
    entity_id: sensor.ups_battery_charge
    below: "10"

Hello, je post ici car c’est sensiblement le même script que j’utilise.
Tout fonctionne parfaitement sauf le retour au secteur, je ne recois aucunes notifications de retour de courant (le comptage de % de batterie lui fonctionne en décharge et en charge avec notifications)

Peut être un membre plus expérimenté dans le code que moi trouveras la faille ? :slight_smile:

- id: '1643189410521'
  alias: Gestion Onduleur
  description: Notification en fonction des changements d'état de l'onduleur
  trigger:
  - platform: state
    entity_id: sensor.qnapups_status_data
  - platform: state
    entity_id: sensor.qnapups_battery_charge
  condition: []
  action:
  - choose:
    - conditions:
      - condition: template
        value_template: '{{trigger.from_state.entity_id.split(''.'')[1] == ''qnapups_status_data''
          }}'
      sequence:
      - choose:
        - conditions:
          - condition: or
            conditions:
            - condition: state
              entity_id: sensor.qnapups_status_data
              state: OB
            - condition: state
              entity_id: sensor.qnapups_status_data
              state: FSD
          sequence:
          - service: notify.gmail
            data:
              message: '⚠️ Détection ⚡ Coupure de Courant : {{(now()|string).split(''.'')[0]}}'
          - service: notify.notify
            data:
              message: '⚠️ Détection : {{(now()|string).split(''.'')[0]}}'
              title: "⚡ Coupure de Courant \U0001F50B"
          - service: persistent_notification.create
            data:
              message: '⚠️ Détection : {{(now()|string).split(''.'')[0]}}'
              title: "⚡ Coupure de Courant \U0001F50B"
              notification_id: '{{ (range(1, 9999)|random) }}'
        - conditions:
          - condition: template
            value_template: "{% set etat_precedent = trigger.from_state.state %} {%
              if 'DISCHRG' in etat_precedent.split() %}\n    true\n{% else %}\n    false\n{%
              endif %}\n"
          - condition: template
            value_template: '{{ trigger.to_state.state != ''unknown'' }}'
          - condition: template
            value_template: '{{ trigger.to_state.state != ''unavailable'' }}'
          sequence:
          - service: notify.gmail
            data:
              message: "ℹ️ Détection ⚡ Retour du Courant \U0001F50C : {{(now()|string).split('.')[0]}}"
          - service: notify.notify
            data:
              message: 'ℹ️ Détection : {{(now()|string).split(''.'')[0]}}'
              title: "⚡ Retour du Courant \U0001F50C"
          - service: persistent_notification.create
            data:
              message: 'ℹ️ Détection : {{(now()|string).split(''.'')[0]}}'
              title: "⚡ Retour du Courant \U0001F50C"
              notification_id: '{{ (range(1, 9999)|random) }}'
    - conditions:
      - condition: template
        value_template: '{{trigger.from_state.entity_id.split(''.'')[1] == ''qnapups_battery_charge''
          }}'
      sequence:
      - service: notify.gmail
        data:
          message: '⚡ Onduleur niveau de batterie : {{ states(''sensor.qnapups_battery_charge'')|int
            }}%'
          title: "{% set etat_precedent = trigger.from_state.state|int  %} {% set
            etat_actuel = trigger.to_state.state|int  %} {% if etat_precedent > etat_actuel
            %}\n    ⚡ Décharge en cours ↘️\n{% else %}\n    ⚡ Recharge en cours ↗️\n{%
            endif %}  \n"
      - service: notify.notify
        data:
          message: "\U0001F50B Onduleur niveau de batterie : {{ states('sensor.qnapups_battery_charge')|int
            }}%"
          title: "{% set etat_precedent = trigger.from_state.state|int %} {% set etat_actuel
            = trigger.to_state.state|int %} {% if etat_precedent > etat_actuel %}\n
            \   ⚡ Décharge en cours ↘️\n{% else %}\n    ⚡ Recharge en cours ↗️\n{%
            endif %}               \n"
      - service: persistent_notification.create
        data:
          message: "\U0001F50B Onduleur niveau de batterie : {{ states('sensor.qnapups_battery_charge')|int
            }}%"
          title: "{% set etat_precedent = trigger.from_state.state|int %} {% set etat_actuel
            = trigger.to_state.state|int %} {% if etat_precedent > etat_actuel %}\n
            \   ⚡ Décharge en cours ↘️\n{% else %}\n   \U0001F50C Recharge en cours
            ↗️\n{% endif %}               \n"
          notification_id: '{{ (range(1, 9999)|random) }}'
  mode: restart