Voici un exemple comme convenu :
Je n’ai pas du tout fait la mise au point…
Lis tranquillement et poses TOUTES les questions que tu veux ![]()
Avec le code suivant, tu sera spammé de notification toutes les minutes, mais j’ai fais comme tu le demande pour que tu t’y retrouves.
Je mets un second code qui à le même comportement que le 1er mais qui notifie à chaque changement d’état du niveau de batterie et non plus toutes les minutes (ça à l’avantage de ne pas recevoir 2x ou + la notification avec le même niveau de batterie).
Code 1 (qui réponds à ta demande initiale)
id: 'gestion_onduleur'
mode: restart #Pourquoi RESTART ? -> https://www.home-assistant.io/docs/automation/modes/
alias: Gestion Onduleur
description: "Notifie en fonction des changements d'état de l'onduleur"
trigger:
- platform: state
entity_id: sensor.myups_status_data_2
condition: []
action:
## Utilisation de choose (if elsif/else ). L'ordre est important.
- choose:
## Coupure de Courant
- 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 : {{(now()|string).split('.')[0]}}
title: ⚡ Coupure de Courant
- service: notify.notify
data:
message: >
⚠️ Détection : {{(now()|string).split('.')[0]}}
title: ⚡ Coupure de Courant 🔋
- repeat:
sequence:
- service: notify.huawei_lte
data:
message: "🔋 Niveau : {{ states('sensor.myups_battery_charge_2')|int }}%"
title: ⚡ Décharge en cours ↘️
- service: notify.notify
data:
message: "🔋 Niveau : {{ states('sensor.myups_battery_charge_2')|int }}%"
title: ⚡ Décharge en cours ↘️
- delay:
minutes: 1
while:
- 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"
## Retour du Courant
- conditions:
# Si l'état précédent comportait le texte "DISCHRG" cela veux dire que l'onduleur était sur batterie et qu'il vient
# de passer sur secteur.
- condition: template
value_template: >
{% set etat_precedent = trigger.from_state.state %}
{% if 'DISCHRG' in etat_precedent.split() %}
true
{% else %}
false
{% endif %}
- "{{ trigger.to_state.state != 'unknown' }}"
- "{{ trigger.to_state.state != 'unavailable' }}"
sequence:
- service: notify.huawei_lte
data:
message: "ℹ️ Détection : {{(now()|string).split('.')[0]}}"
title: ⚡ Retour du Courant 🔌
- service: notify.notify
data:
message: "ℹ️ Détection : {{(now()|string).split('.')[0]}}"
title: ⚡ Retour du Courant 🔌
- choose:
## Chargement de la batterie
- conditions:
- condition: template
value_template: >
{% set etat_actuel = trigger.to_state.state %}
{% if 'CHRG' in etat_actuel.split() %}
true
{% else %}
false
{% endif %}
sequence:
- repeat:
sequence:
- service: notify.huawei_lte
data:
message: "🔋 Niveau : {{ states('sensor.myups_battery_charge_2')|int }}%"
title: ⚡ Recharge en cours ↗️
- service: notify.notify
data:
message: "🔋 Niveau : {{ states('sensor.myups_battery_charge_2')|int }}%"
title: ⚡ Recharge en cours ↗️
- delay:
minutes: 1
while:
- condition: numeric_state
entity_id: sensor.myups_battery_charge_2
below: 100
Code 2 (avec notification sur % de batterie):
mode: restart
alias: Gestion Onduleur
id: gestion_onduleur
description: Notificatiob 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: "🔋 Niveau : {{ 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: "🔋 Niveau : {{ 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 %}
- 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 : {{(now()|string).split('.')[0]}}
title: ⚡ Coupure de Courant
- service: notify.notify
data:
message: >
⚠️ Détection : {{(now()|string).split('.')[0]}}
title: ⚡ Coupure de Courant 🔋
- conditions:
# Si l'état précédent comportait le texte "DISCHRG" cela veux dire que l'onduleur était sur batterie et qu'il vient
# de passer sur secteur.
- condition: template
value_template: >
{% set etat_precedent = trigger.from_state.state %}
{% if 'DISCHRG' in etat_precedent.split() %}
true
{% else %}
false
{% endif %}
- "{{ trigger.to_state.state != 'unknown' }}"
- "{{ trigger.to_state.state != 'unavailable' }}"
sequence:
- service: notify.huawei_lte
data:
message: "ℹ️ Détection : {{(now()|string).split('.')[0]}}"
title: ⚡ Retour du Courant 🔌
- service: notify.notify
data:
message: "ℹ️ Détection : {{(now()|string).split('.')[0]}}"
title: ⚡ Retour du Courant 🔌