Notifications pour ouvrir ou fermer les fenêtres suivant les températures internes et externes

Bonjour,

Mon problème

N’ayant pas de climatiseur, je cherche à ce qu’HA me notifie dès je peux ouvrir mes fenêtres car l’air extérieur est plus frais que l’air intérieur (mais pas quand il fait déjà 20° à l’intérieur, je ne voudrais pas que ça me notifie pendant l’hiver !) et inversement qu’il me notifie quand il faut les fermer car le soleil commence à taper.
Le mieux que j’ai réussi à faire avec mes piètres connaissances d’HA et en dév en général est ceci :


Mais ça se cantonne à une température de seuil bien précise… Je pense qu’il faudrait plutôt comparer directement les variables de température.
Alors j’ai creusé, il semblerait qu’il faut que je créée quelques entité dont de type « booléen » pour stocker des états. Mais j’avoue que je suis vite largué :confused:

Ma configuration


[center]## System Information

version core-2025.6.3
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.13.3
os_name Linux
os_version 6.12.23-haos
arch x86_64
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
HACS Data ok
GitHub API Calls Remaining 5000
Installed Version 2.0.5
Stage running
Available Repositories 2129
Downloaded Repositories 2
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 15.2
update_channel stable
supervisor_version supervisor-2025.06.2
agent_version 1.7.2
docker_version 28.0.4
disk_total 30.8 GB
disk_used 15.5 GB
healthy true
supported true
host_connectivity true
supervisor_connectivity true
ntp_synchronized true
virtualization kvm
board ova
supervisor_api ok
version_api ok
installed_addons Matter Server (8.0.0), AirCast (4.2.4), File editor (5.8.0), Mosquitto broker (6.5.1), Zigbee2MQTT (2.4.0-1), Music Assistant Server (2.5.5), MyElectricalData (0.13.2), Terminal & SSH (9.18.0), Gazpar2HAWS (0.3.2), Linky (1.5.0)
Dashboards
dashboards 4
resources 1
views 2
mode storage
Network Configuration
adapters lo (disabled), enp0s3 (enabled, default, auto), hassio (disabled), docker0 (disabled), veth214d5a7 (disabled), veth81c200d (disabled), vethd13746e (disabled), veth29a5067 (disabled), veth06d85a7 (disabled), veth484a230 (disabled), vethf271634 (disabled), vetha121ce5 (disabled), veth494b838 (disabled), veth19c7d36 (disabled), vethc7c80c9 (disabled), vethbbcaac3 (disabled)
ipv4_addresses lo (127.0.0.1/8), enp0s3 (192.168.1.249/24), hassio (172.30.32.1/23), docker0 (172.30.232.1/23), veth214d5a7 (), veth81c200d (), vethd13746e (), veth29a5067 (), veth06d85a7 (), veth484a230 (), vethf271634 (), vetha121ce5 (), veth494b838 (), veth19c7d36 (), vethc7c80c9 (), vethbbcaac3 ()
ipv6_addresses lo (::1/128), enp0s3 (2a02:8424:9d61:7a01:6d96:1669:d1a3:c1aa/64, fe80::7e0f:bee2:e59c:eb13/64), hassio (fe80::cc47:a4ff:fed3:c1f5/64), docker0 (fe80::206e:40ff:feb9:a97a/64), veth214d5a7 (fe80::40ea:46ff:fe58:4421/64), veth81c200d (fe80::30ce:32ff:fe65:5060/64), vethd13746e (fe80::1034:ebff:feeb:3300/64), veth29a5067 (fe80::f82c:52ff:fed4:5351/64), veth06d85a7 (fe80::a0f7:5dff:fe6b:7d9e/64), veth484a230 (fe80::e4ae:c0ff:fe08:f4e3/64), vethf271634 (fe80::e89b:e8ff:fec3:b640/64), vetha121ce5 (fe80::3061:20ff:fe7c:bf6e/64), veth494b838 (fe80::4033:41ff:feaa:abc1/64), veth19c7d36 (fe80::60a3:aaff:fe6b:8ccd/64), vethc7c80c9 (fe80::20e0:7fff:fe4c:b63c/64), vethbbcaac3 (fe80::18fc:e8ff:fe8a:9477/64)
announce_addresses 192.168.1.249, 2a02:8424:9d61:7a01:6d96:1669:d1a3:c1aa, fe80::7e0f:bee2:e59c:eb13
Recorder
oldest_recorder_run 14 juin 2025 à 02:31
current_recorder_run 25 juin 2025 à 00:13
estimated_db_size 198.25 MiB
database_engine sqlite
database_version 3.48.0
[/center] ___

J’ai le même problème, j’ai fait des entrées. En voici un en exemple :

{%if states('sensor.qualite_air_bureau_temperature')|float>22 and states('sensor.qualite_air_bureau_temperature')|float>states('sensor.sonde_exterieure_sonde_exterieure_temperature')|float %}
{{1}}
{% elif states('sensor.qualite_air_bureau_temperature')|float<states('sensor.sonde_exterieure_sonde_exterieure_temperature')|float or states('sensor.derivee_temperature_bureau')|float>0 %}
{{0}}
{% else %}
{{states('binary_sensor.aeration_cible_bureau')}}
{%endif%}

J’ai fait également un capteur dérivé qui m’informe si la température est en train de remonter dans la pièce.

1 « J'aime »

tu peut faire comme cela:

alias: notification ouverture/fermeture
description: ""
triggers:
  - trigger: numeric_state
    entity_id:
      - sensor.sonde_exterieure_temperature
    above: sensor.temperature_appartement
    id: extérieur > intérieur
  - trigger: numeric_state
    entity_id:
      - sensor.sonde_exterieure_temperature
    id: extérieur < intérieur
    below: sensor.temperature_appartement
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - extérieur < intérieur
          - condition: numeric_state
            entity_id: sensor.sonde_exterieure_temperature
            above: 23
        sequence:
          - action: notify.mobile_app_sm_a536b
            metadata: {}
            data:
              message: ouvrir les fenetres
      - conditions:
          - condition: trigger
            id:
              - extérieur > intérieur
        sequence:
          - action: notify.mobile_app_sm_a536b
            metadata: {}
            data:
              message: fermer les fenetres
mode: single

1 « J'aime »

J’ai piqué à un membre de ce forum une redite de ce qu’il avait pu proposer pour domoticz auparavant. Voici les liens vers son github à adapter selon votre situation (sensor disponibles, moyen de notification…) :
rafraichissement nocturne
fin de rafraichissement

Sur mon installation, j’ai glissé ses fichiers dans un répertoire « packages » après avoir ajouté packages: !include_dir_named packages à mon fichier de configuration.

1 « J'aime »

Moi je ferais un helper pour avoir la différence des deux capteurs (il faudrait peut être que j’en fasse 2, un pour multiplier par -1 la température intérieure et un pour additionner extérieur et intérieur mais en YAML ça doit pouvoir se faire d’un coup).

Si le résultat est <0 et si la température intérieure est >23°C alors j’envoie une notif.

pas besoin de helpeur dans ce cas je pense a un value_template: si l’ extérieur est plus frais

{{ states('sensor.temperature_interieur') | float > 23 and states('sensor.temperature_exterieur') | float < states('sensor.temperature_interieur') | float }}
1 « J'aime »

Je crois que mes connaissances sont du même ordre que celles de @Broffrey . Plus clairement @hackdiy tu écris une ligne avec des accolades mais je ne saurais pas où la mettre, dans une automatisation? J’avoue bêtement que je n’ai pas encore trouvé d’information suffisante pour maîtriser le YAML et que j’ai du mal à comprendre la ligne de code

la ligne va dans une condition value_template:.
je sais pas si c’est ce que tu veux faire , voila ce que j’ai

alias: Gestion volets en fonction des températures
description: ""
triggers:
  - entity_id: sensor.temperature_terrase, sensor.avignon_temperature
    trigger: state
conditions: []
actions:
  - choose:
      - conditions:
          - condition: template
            value_template: >-
              {% set temp_int = states('sensor.temperature_salon') | float %}
              {% set temp_ext = states('sensor.temperature_terrase') | float %}
              {{ temp_int > 24 and temp_ext < temp_int }}
        sequence:
          - data:
              message: Il fait  frais dehors. ouvrir les fenêtres.
            action: telegram_bot.send_message
      - conditions:
          - condition: template
            value_template: >-
              {% set temp_int = states('sensor.temperature_salon') | float %}
              {% set temp_ext = states('sensor.temperature_terrase') | float %}
              {{ temp_ext > temp_int }}
        sequence:
          - data:
              message: Il fait chaud dehors. fermer les fenêtres.
            action: telegram_bot.send_message
    default: []

1 « J'aime »

Comme beaucoup vois confondez yaml qui est un langage de markup et les template qui sont en langage jinja2 (entre les accolades)
La jinja2 permet de faire des tests des calculs…

Le yaml est avant tout une convention d’écriture

3 « J'aime »

Salut,
de mon côté j’ai fait hyper simple
2 automations, une quand la temperature extérieure passe au dessus de l’intérieure, et inversement.

Je ne gère pas de seuil, et j’active ou desactive les automations quand je pense que c’est pertinent, et a l’inverse quand ça n’a plus de sens

Exemple:

alias: Exterieur trop chaud
description: Température extérieure au dessus de la température intérieur
triggers:
  - above: sensor.sensor_weather_salon_temperature
    entity_id: sensor.sensor_weather_terrasse_jardin_temperature
    trigger: numeric_state
  - above: sensor.sensor_weather_sam_temperature
    entity_id: sensor.sensor_weather_terrasse_jardin_temperature
    trigger: numeric_state
  - above: sensor.sensor_weather_chambre_temperature
    entity_id: sensor.sensor_weather_terrasse_jardin_temperature
    trigger: numeric_state
  - above: sensor.sensor_weather_bureau_temperature
    entity_id: sensor.sensor_weather_terrasse_jardin_temperature
    trigger: numeric_state
  - above: sensor.sensor_weather_cuisine_temperature
    entity_id: sensor.sensor_weather_terrasse_jardin_temperature
    trigger: numeric_state
  - above: sensor.sensor_weather_pallier_temperature
    entity_id: sensor.sensor_weather_terrasse_jardin_temperature
    trigger: numeric_state
actions:
  - data:
      title: Extérieur trop chaud
      message: >-
        {{ trigger.to_state.name }} plus chaud que l'intérieur. Fermer ! {{
        trigger.to_state.state }}
    action: notify.mobile_app_sm_a528b_dist
mode: single

Waouh merci pour toutes vos réponses messieurs, je vais étudier cela. Un ami qui a migrer de Jeedom à HA grâce à l’aide d’un agent Mistral AI (il a mis en prompt qu’il doit être expert en HA) a refait ses automations et ça marche bien. Je vais donc regarder vos solutions et me faire aider de l’IA si besoin. (et trouver comment activer les notifications emails quand une réponse est posté sur le forum, car je n’avais pas vu !)