Gestion automatique clim chauffage selon température extérieure + prévisions météo

Salut à tous :waving_hand:

Je partage mon automatisation pour gérer mes clims (pompes à chaleur air/air) en mode chauffage selon la température extérieure.
J’ai mis en place une solution en deux parties que je trouve assez propre, et j’aimerais avoir vos retours :slightly_smiling_face:


Le principe

  1. Hystérésis à deux seuils : au lieu d’un seuil unique, j’utilise 14°C pour le rallumage et 16°C pour l’extinction. Entre les deux, on ne touche à rien → pas d’oscillations.

  2. Filtre par prévision météo (+4h) via l’intégration Météo France :

    • On n’éteint que si la prévision à +4h confirme qu’il fera encore doux (> 14°C). Si une chute de température est annoncée, on garde la clim allumée.
    • On ne rallume que si la prévision à +4h annonce qu’il fera encore froid (< 15°C). Si un réchauffement est prévu, on évite de relancer pour rien.

Le setup

  • Capteur température extérieure : Sonoff SNZB-02 (via Zigbee/MQTT)
  • Clims : unités gérées via des modules Protoart ClimaControl (MQTT) ( superbe tuto de @xTG ici : Piloter sa pompe à chaleur Mitsubishi en local avec module ProtoArt)
  • Intégration Météo France pour les prévisions horaires
  • Un input_number (helper) qui stocke la température prévue à +4h, mis à jour toutes les heures par une automation dédiée
  • Un input_boolean.clim_manuelle pour détecter les extinctions manuelles et ne pas les écraser
  • Un input_boolean.clim_action_auto pour distinguer les actions auto des actions manuelles

Automation 1 — Mise à jour de la prévision +4h

Une automation qui appelle weather.get_forecasts toutes les heures, trouve la prévision la plus proche de maintenant +4h, et écrit la valeur dans l’input_number.

Automation 2 — Gestion clim

Triggers :

  • Température extérieure > 16°C depuis 5 min
  • Température extérieure < 14°C depuis 5 min
  • Toutes les 10 min (filet de sécurité)

Conditions globales :

  • Entre 10h et 22h
  • Pas de mode manuel actif

Actions :

  • Extinction : temp > 16°C ET prévision +4h > 14°C → on coupe les clims + notification
  • Rallumage : temp < 14°C ET prévision +4h < 15°C → on relance en mode heat avec consigne adaptée (20.5°C jour / 19°C nuit) + notification

Gestion du mode manuel

Si quelqu’un éteint la clim à la main, une automation séparée détecte que l’extinction n’a pas été faite par l’auto (via le flag clim_action_auto) et active clim_manuelle, ce qui bloque l’automatisation jusqu’au reset à 19h.


Résultat : La prévision météo évite en plus les relances inutiles quand un réchauffement est annoncé.

Qu’en pensez-vous ? Des suggestions d’amélioration ? Est-ce que certains d’entre vous ont une approche différente pour gérer ce type de scénario ? :grin:

Merci !

Salut,

Tu devrais partager le yaml de ton automatisation :wink:

Oui bien sûr le voilà :slightly_smiling_face: :


alias: Clim - Gestion auto temp extérieure (hystérésis + prévision)
triggers:
  - entity_id: sensor.sonoff_snzb_02wd_temperature
    above: 16
    for:
      minutes: 5
    trigger: numeric_state
  - entity_id: sensor.sonoff_snzb_02wd_temperature
    below: 14
    for:
      minutes: 5
    trigger: numeric_state
  - minutes: /10
    trigger: time_pattern
conditions:
  - condition: time
    after: "10:00:00"
    before: "22:00:00"
  - condition: state
    entity_id: input_boolean.clim_manuelle
    state: "off"
actions:
  - choose:
      - conditions:
          - condition: numeric_state
            entity_id: sensor.sonoff_snzb_02wd_temperature
            above: 16
          - condition: numeric_state
            entity_id: input_number.temperature_prevue_4h
            above: 14
        sequence:
          - condition: state
            entity_id: climate.climacontrol_salon_climate
            state: heat
          - action: input_boolean.turn_on
            target:
              entity_id: input_boolean.clim_action_auto
          - action: climate.turn_off
            data: {}
            target:
              entity_id:
                - climate.climacontrol_salle_a_manger_climate
                - climate.climacontrol_salon_climate
          - delay:
              seconds: 5
          - action: input_boolean.turn_off
            target:
              entity_id: input_boolean.clim_action_auto
          - action: notify.mobile_app_
            data:
              title: Climatisation
              message: >
                Clim éteinte — temp ext {{
                states('sensor.sonoff_snzb_02wd_temperature') }}°C (prévision
                +4h : {{ states('input_number.temperature_prevue_4h') }}°C)
      - conditions:
          - condition: numeric_state
            entity_id: sensor.sonoff_snzb_02wd_temperature
            below: 14
          - condition: numeric_state
            entity_id: input_number.temperature_prevue_4h
            below: 15
        sequence:
          - condition: state
            entity_id: climate.climacontrol_salon_climate
            state: "off"
          - action: input_boolean.turn_on
            target:
              entity_id: input_boolean.clim_action_auto
          - action: climate.set_hvac_mode
            data:
              hvac_mode: heat
            target:
              entity_id:
                - climate.climacontrol_salle_a_manger_climate
                - climate.climacontrol_salon_climate
          - action: climate.set_temperature
            data:
              temperature: |
                {% if now().hour < 8 or now().hour >= 22 %}
                  19
                {% else %}
                  20.5
                {% endif %}
            target:
              entity_id:
                - climate.climacontrol_salle_a_manger_climate
                - climate.climacontrol_salon_climate
          - delay:
              seconds: 5
          - action: input_boolean.turn_off
            target:
              entity_id: input_boolean.clim_action_auto
          - action: notify.mobile_app_
            data:
              title: Climatisation
              message: >
                Clim allumée — temp ext {{
                states('sensor.sonoff_snzb_02wd_temperature') }}°C (prévision
                +4h : {{ states('input_number.temperature_prevue_4h') }}°C)
mode: single

Utilises les balises :
image

Pour partager le code YAML sinon on perd l’indentation et c’est inutilisable…

Oups c’est édité merci !