Automatisation : Limiter occurrence / notification

Mon problème

J’ai l’automatisation suivante :
Si température extérieure < 0°C pendant plus de 15 min alors envoie une notification.

[center]alias: Alarme temp ext <0°C
description: «  »
trigger:

  • platform: numeric_state
    entity_id:
    • sensor.esp32_v1_ext_temperature
      for:
      hours: 0
      minutes: 15
      seconds: 0
      below: 0
      condition:
      action:
  • device_id: 8163d848d9079d744ded3f115a235918
    domain: mobile_app
    type: notify
    message: GLAGLA !!! GEL dehors !!! GLAGLA
    title: Alarme Température extérieure < 0 °C
    mode: single[/center]

C’est bien mais s’il fait une température <0°C pendant Xh , toutes les 15 min je reçois la notification.
Comment faire en sorte de dire : si l’automatisation c’est déclenchée alors tu l’inhibe pendant 12h ?

Ma configuration


[center]## System Information

version core-2023.11.3
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.11.6
os_name Linux
os_version 6.1.59
arch x86_64
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 5000
Installed Version 1.33.0
Stage running
Available Repositories 1342
Downloaded Repositories 4
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 11.1
update_channel stable
supervisor_version supervisor-2023.11.6
agent_version 1.6.0
docker_version 24.0.6
disk_total 30.8 GB
disk_used 7.2 GB
healthy true
supported true
board ova
supervisor_api ok
version_api ok
installed_addons Samba share (12.2.0), Terminal & SSH (9.8.1), Studio Code Server (5.14.2), File editor (5.7.0), ESPHome (2023.11.6), SQLite Web (4.0.0)
Dashboards
dashboards 7
resources 2
views 7
mode storage
Recorder
oldest_recorder_run 20 novembre 2023 à 03:31
current_recorder_run 24 novembre 2023 à 13:18
estimated_db_size 251.34 MiB
database_engine sqlite
database_version 3.41.2
[/center]

Tu utilises un input boolean et 2 automatisation :
Dans la premier tu vérifies en plus de ce que tu as deja fait que ton boolean est faux/false ou 0 je n’ai pas la syntaxe en tête… Lors de son exécution après la notification tu le mets à true/vrai/1.

Ensuite dans une autre automatisation lorsque la t°>0/1°C tu le repasse à 0/false/faux.

Tout simplement

Si tu reçois une notification toutes les 15 minutes c’est que pendant cette periode de temp ton capteur est repassé au dessus de 0 ou qu’il est devenu indisponible pour ensuite revenir sous 0.
Vérifie l’historique de ton capteur pour voir ce qu’il se passe.

Le comportement normal c’est la température passe sous 0 pendant 15 minutes, envoie de la notification et tant que la température reste en dessous de 0 l’automatisation n’est plus appelée.

2 « J'aime »

En effet tu as bien raison, c’est bien le fonctionnement.
Du coup si la température oscile autour de 0 je reçoie trop de notification.

La proposition de tikismoke ne résoudra pas le Pb même si je comprends l’idée qui m’inspire fortement pour la proposition de solution ci dessous:
Automatisation 1:
idem ce que j’ai fait avec test boolean est à 1, puis passe le boolean à 0
Automatisation 2:
Si boolean à 0 Alors 12h plus tard repasse le bolean à 1

… La question c’est comment concrètement on fait?..
1/ comment on déclare ce boolean
j’ai rajouté les 2 lignes ci dessous dans le fichier configuration.yaml

input_boolean:
name: booleantemp0

→ C’est comme cela qu’il faut faire ?

2/ dans l’interface automatisation, je ne retrouve pas ce boolean « booleantemp0 » …

hello

Tu créé des entrées dans paramètres/ appareils et services/ Entrées

@+

Voici une condition template pour ton automatisation qui vérifie l’intervalle entre deux déclenchement minimum

{{ now() - state_attr('automation.nom_de_automatisation', 'last_triggered') > timedelta(hours=12) }}# A remplacer hours par minute et le 12 par le nombre de votre choix.
1 « J'aime »

voici le code que j’ai rentré:

alias: Alarme temp ext <5°C
description: ""
trigger:
  - platform: numeric_state
    entity_id: sensor.esp32_v1_ext_temperature
    for:
      hours: 0
      minutes: 30
      seconds: 0
    below: 5
condition:
  - condition: {{ now() - state_attr('automation.Alarme temp ext <5°C', 'last_triggered') > timedelta(hours=12) }}

action:
  - device_id: 8163d848d9079d744ded3f115a235918
    domain: mobile_app
    type: notify
    message: GLAGLA GLAGLA
    title: Alarme Température extérieure < 5 °C
mode: single

→ Mes gros doigts ont mal retranscris tes consignes Félix car la condition ne passe pas…
→ Autre question : quand HA redémarre, la notion timedelta est elle perdue ?

Il faut le nom de l’entité de l’automation !

Bj

Ha déteste les Majuscule et espace , essai de corrigé ceci

automation.Alarme temp ext <5°C

comme ceci par exemple
automation.alarme_temp_ext_moins_5_degres

@bobi92
Il suffit de regarder le nom que HA a transformé !
Voir sur ton automation
image :point_left:
image puis image
Il devrait y avoir le nom de ton automation !
Effectivement certain caracteres sont supprimés !

et du coup c’est quoi le nom de l’entité ? je le trouve ou, si ce n’est pas « Alarme temp ext <5°C »

image

Sinon Nothing j’ai essayé avec " automation.alarme_temp_ext_moins_5_degres" mais toujours Pb

Il ne faut pas confondre alias et le nom de l’entité de HA
Regarde bien comme dit plus haut !

OK trouvé ! merci:

1 « J'aime »

mais cela ne veut toujours pas fonctionner avec le code suivant :

alias: Alarme temp ext <5°C
description: ""
trigger:
  - platform: numeric_state
    entity_id: sensor.esp32_v1_ext_temperature
    for:
      hours: 0
      minutes: 30
      seconds: 0
    below: 5
condition:
  - condition: {{ now() - state_attr('automation.alarme_temp_ext_5degc', 'last_triggered') > timedelta(hours=12) }}
action:
  - device_id: 8163d848d9079d744ded3f115a235918
    domain: mobile_app
    type: notify
    message: GLAGLA GLAGLA
    title: Alarme Température extérieure < 5 °C
mode: single

quand j’enregistre le code Yaml tout va bien, je sors et réédite le code et j’ai :


alias: Alarme temp ext <5°C
description: ""
trigger:
  - platform: numeric_state
    entity_id: sensor.esp32_v1_ext_temperature
    for:
      hours: 0
      minutes: 30
      seconds: 0
    below: 5
condition: null
action:
  - device_id: 8163d848d9079d744ded3f115a235918
    domain: mobile_app
    type: notify
    message: GLAGLA GLAGLA
    title: Alarme Température extérieure < 5 °C
mode: single

→ Il ne veut pas de la condition…

Condition Modèle
image
En YAML donnerai :point_down:

condition: template
value_template: >-
  {{ now() - state_attr('automation.alarme_temp_ext_5degc', 'last_triggered') >
  timedelta(hours=12) }}
1 « J'aime »

Intéressant merci, je ne connaissais pas cette possibilité! :+1:

HA a accepté le code… reste à voir si cela fonctionne

voici ce que cela donne visuellement

alias: Alarme temp ext <5°C
description: ""
trigger:
  - platform: numeric_state
    entity_id: sensor.esp32_v1_ext_temperature
    for:
      hours: 0
      minutes: 30
      seconds: 0
    below: 5
condition:
  - condition: template
    value_template: >-
      {{ now() - state_attr('automation.alarme_temp_ext_5degc',
      'last_triggered') > timedelta(hours=12) }}
action:
  - device_id: 8163d848d9079d744ded3f115a235918
    domain: mobile_app
    type: notify
    message: GLAGLA GLAGLA
    title: Alarme Température extérieure < 5 °C
mode: single

je vais essayer avec une température de 9° pour tester et reviens vers vous. Si cela fonctionne c’est plus simple qu’avec des Boolean.

Malheureusement le test est négatif je suis toujours spammé de notification à chaque fois que la température passe sous la consigne :

Mon code de test qui ne fonctionne pas est :

alias: Alarme temp ext <9°C
description: ""
trigger:
  - platform: numeric_state
    entity_id:
      - sensor.esp32_v1_ext_temperature
    for:
      hours: 0
      minutes: 5
      seconds: 0
    below: 9
condition:
  - condition: template
    value_template: >-
      {{ now() - state_attr('automation.alarme_temp_ext_9degc',
      'last_triggered') > timedelta(hours=12) }}
action:
  - device_id: 8163d848d9079d744ded3f115a235918
    domain: mobile_app
    type: notify
    message: GLAGLA  TEST
    title: Alarme Température extérieure < 9 °C
mode: single

je viens de faire le test chez moi avec des sensor différents des tiens évidement et cela fonctionne:

timedelta.ha

alias: Alarme temp ext <9°C
description: ""
trigger:
  - platform: numeric_state
    entity_id:
      - sensor.temp_maison
    for:
      hours: 0
      minutes: 5
      seconds: 0
    below: 9
condition:
  - condition: template
    value_template: >-
      {{ now() - state_attr('automation.alarme_temp_ext_9degc',
      'last_triggered') > timedelta(hours=12) }}
action:
  - service: notify.mobile_app_xxxx
    data:
      message: test
mode: single