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

Parce qu’il n’y en as pas… :sweat_smile: (très présomptueux)

Plus sérieusement, si je prends le code 2 et que je l’utilise cela fonctionne très bien :+1:

animate

Ce n’est pas normal.
Affiche dans une carte ENTITES ton automatisation et affiche l’attribut DERNIER DECLENCHEMENT :

type: entities
entities:
  - entity: sensor.myups_status_data_2
  - entity: sensor.myups_battery_charge_2
  - entity: automation.gestion_onduleur
    secondary_info: last-triggered

De plus, pour la mise au point, enlèves les actions qui ne sont pas significatives pour la mise au point mais qui si elles échouent, bloquent l’automatisation.

Ca donne (en ajoutant des notifications partout) :

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_battery_charge_2' }}
        sequence:
          - service: persistent_notification.create
            data:
              message: >
                {% 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 %}  
              title: DEBUG Automatisation
              notification_id: '{{ (range(1, 9999)|random) }}'
      - 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: 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: persistent_notification.create
                    data:
                      message: 'ℹ️ Détection : {{(now()|string).split(''.'')[0]}}'
                      title: "⚡ Retour du Courant \U0001F50C"
                      notification_id: '{{ (range(1, 9999)|random) }}'
            default:
              - service: persistent_notification.create
                data:
                  message: action par défaut
                  title: DEFAUT
    default:
      - service: persistent_notification.create
        data:
          message: action par défaut
          title: DEFAUT GENERAL
mode: restart

Enfin,

Aucun soucis chez moi…

Bon, je recommence, en partant de ton code2 comme pour le 1er essai.

Quand je colle le code (copié via le petit bouton en haut à droite de la zone de code dans ton message), j’ai des erreurs comme celles ci :

end of the stream or a document separator is expected at line 305, column 1:
mode: restart
^
(pour mode: restart )

end of the stream or a document separator is expected at line 306, column 1:
alias: Gestion Onduleur
^

Pour alias: Gestion Onduleur

end of the stream or a document separator is expected at line 307, column 1:
id: gestion_onduleur
^

Pour id: gestion_onduleur

Pour celles ci (les 3 du dessus), j’ai dû ajouter 2 espaces devant.

duplicated mapping key at line 307, column 3:
id: gestion_onduleur
^

Etrange pour celle ci ( id: gestion_onduleur ) que l’ID ne soit pas au début de ton code, et qu’il n’y ait pas de " - " devant non ? Comme j’avais déjà créé un ID ( - id: ‹ 1614252819521 › ) j’efface ta ligne.
Est-ce ok ?

end of the stream or a document separator is expected at line 307, column 1:
description: Notification en fon …
^

Pour « description: Notification en fonction des changements d’état de l’onduleur »

end of the stream or a document separator is expected at line 308, column 1:
trigger:
^

Pour trigger:

end of the stream or a document separator is expected at line 313, column 1:
condition:
^

Pour condition:

end of the stream or a document separator is expected at line 314, column 1:
action:
^

Pour action:

Après avoir modifié tout ça, le vérificateur de code est passé en vert.

Je viens de changer l’état en OB DISCHRG (l’entité montre bien le changement), mais rien ne se passe, ce n’est pas déclenché.

Même chose pour charge_2 passé à 90%, l’entité montre bien la modif mais l’automatisation n’est pas déclenchée.

Donc là je continue de gratouiller…
Je vois que dans l’assistant d’automatisation c’est toujours l’ancien nom TEST qui apparait et pas ce que tu as écrit (gestion onduleur), étrange, je me dis que, même si je clique pour éditer (via l’assistant) cette automatisation et que le contenu apparait bien, le système n’a peut-être pas rechargé / pris en compte les nouvelles règles.
Pour mes tests je créé une nouvelle automatisation (TEST 2), et en ressortant de l’assistant, je vous que TEST a été renommée GESTION ONDULEUR. De suite je change le niveau de batterie à 95 et bingo j’ai reçu toutes les notifs !
Pfff tout ce temps perdu pour ça. Lors de mes premiers tests je n’avais pas besoin de redémarrer quoi que ce soit.

Je continue les tests et reviens vers toi.

MERCI ! :slight_smile:

Où trouves tu les icones que tu utilises pour les notifs ? (c’est top)
Est-ce une liste ?
Certaines ne passent pas par SMS et j’ai un caractère chinois (je pense, probablement car le SMS est envoyé par ma borne Huawei).

Exemple, celles ci ne passent pas
:battery: :electric_plug:

Lire l’article :

https://forum.hacf.fr/t/publie-ajouter-des-emojis-dans-vos-notifications/2591

Concernant les erreurs que tu mentionnes :

Les phrases :

et

sont incohérentes pour moi car le mode restart et l’alias ne sont pas au même niveau (ils sont de surcroit à l’opposé l’un de l’autre).

Comment intègre tu l’automatisation ?

Voici la méthode que j’utilise :

animate

Merci pour le lien, mais je ne peux pas y accéder, j’ai ce message " Oups ! Cette page n’existe pas ou est privée."

En fait je passe par l’éditeur de fichier (addon FILE EDITOR) pour éditer automatisations.yaml).
Je vais faire comme toi maintenant. Merci.

Quel outil utilises-tu pour faire tes GIFs ?

Je continue de jouer/modifier un peu.

J’ai un nouveau soucis :cry:
Si je débranche /rebranche l’onduleur du courant, j’ai des alertes pour le niveau de batterie (qui baisse / remonte) mais pas les alertes « coupure de courant » « retour du courant ».
Je les ai uniquement quand je change manuellement l’état (OB DISCHRG puis il repasse seul en OL CHARG puis OL une fois la batterie chargée).

Sur cette copie d’écran, les 2 notifs du haut sont générées manuellement, et on voit bien au milieu qu’elles manquent (entre la décharge et le charge de la batterie).

Mon code est :

mode: restart
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_battery_charge_2' }}
        sequence:
          - service: notify.huawei_lte
            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: 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) }}'
      - 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) }}'

Aurais-tu une idée ?

Oups ! Mauvais lien :

Pour le reste je me mets un rappel pour lire demain :+1:

Merci !

Il n’y a qu’une seule version des smileys « prise électrique » et « batterie », rien à faire, ça ne passe pas dans les SMS sur mon S9.
Tant pis, c’est pas bien grave :smiley:

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