Thermostat programmable

Thermostat programmable PAC/chadière

Bonjour à tous,
Je viens de me lancer sur HA,
Mon installation de chauffage se compose d’une PAC et d’une chaudière
Je possède une carte avec 2x contacts sec Zigbee Smart Controller, une sonde température intérieur
maison et une sonde température extérieure.

Pour l’instant j’ai intégrer 2x thermostats generic
1x pour la PAC et 1x pour la chaudière, piloté en fonction température intérieur

L’idée serait :

  • piloter la PAC en fonction de la température intérieur et d’un programme horaire (COMFORT/ECO)
    fonctionnement par température ext de +20 à -2°C,
  • piloter la chaudière en fonction de la température intérieur et d’un programme
    horaire(COMFORT/ECO)
    enclenchement en dessous de +3°C ext et coupre au dessus de +3°C

Merci pour votre aide :blush:

Salut, cherche ici versatile thermostat il devrais faire ton bonheur.

Merci, mais ce thermostat ne gère pas un contact en fonction de la température intérieur et extérieure

Salut

regarde cela

tu devrais pouvoir activer l’un ou l’autre en fonction de ta contrainte …

Merci, ça n’a pas l’air évident pour un débutant sur HA :hot_face:

C’est pas si dur et on va t’aider en plus :smiling_face_with_three_hearts:

Vu ce que tu décris comme besoin, tu n’as pas besoin du Versatile Thermostat. Tu en auras besoin quand tu devras gérer les ouvertures (je coupe si une fenêtres est ouverte), l’absence (je baisse si y a personne, …).
Il faut que tu fasses une automatisation, qui se déclenche sur le changement de la temp extérieur,
et qui allume ou éteint l’un des 2 thermostats que tu as en fonction de la temp.

Je ferais un truc comme ça pour commencer :

description: "Allume le thermostat PAC au dessus de 2°C, sinon allume le thermostat chuadiere"
mode: single
trigger:
  - platform: numeric_state
    entity_id: sensor.meteo_beynes_temperature
    id: mode_pac
    above: -2
  - platform: numeric_state
    entity_id: sensor.meteo_beynes_temperature
    below: -2
    id: mode_chaudiere
condition: []
action:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - mode_pac
        sequence:
          - service: climate.turn_on
            data: {}
            target:
              entity_id: climate.thermostat_pac
          - service: climate.turn_off
            data: {}
            target:
              entity_id: climate.thermostat_chaudiere
      - conditions:
          - condition: trigger
            id:
              - mode_chaudiere
        sequence:
          - service: climate.turn_off
            data: {}
            target:
              entity_id: climate.thermostat_pac
          - service: climate.turn_on
            data: {}
            target:
              entity_id: climate.thermostat_chaudiere

Dans le principe : 2 trigger → au dessus de -2° et en dessous. En fonction du trigger tu allumes l’un et éteint l’autre. Ca devrait faire 95% de ton besoin.

Note : j’ai pas testé mais ca devrait pas être loin de ça. Faut que tu travailles un peu et que tu adaptes à ton cas exact.

Bonjour,
il y a pas une erreur dans l’automatisation ?

  - platform: numeric_state
    entity_id: sensor.meteo_beynes_temperature
    id: mode_pac
    above: -2 
  - platform: numeric_state
    entity_id: sensor.meteo_beynes_temperature
    below: -2
    id: mode_chaudiere

-2 ?

1 « J'aime »

une erreur dans le texte mais pas dans l’autom du coup

1 « J'aime »

Ok merci beaucoup je teste ça et je vous redis

Je débute en programmation sous HA
Est-ce que je dois écrire le texte à la suite de mon thermostat simple:


Est-ce que je dois écrire le texte à la suite de mon thermostat simple:

J’ai pas compris ta question, désolé.

Le « texte » de l’automatisation (son code) doit être dans l’automatisation.
Le « texte » des generic_thermostat (leur déclaration) doit être dans ton configuration.yaml ou dans un fichier inclut par le configuration.yaml (cherche !include si tu ne vois pas de quoi je parle)

Il manque la première ligne dans la déclaration des tes thermostats, on dirait.
Il devrait y avoir :

climate:
  - platform: generic_thermostat
...

La premier climate est manquant.

Note: pour coller du code, ne met pas des copies d’écran mais plutot le code lui-même entre les balises ‹ </> ›
Capture d’écran 2023-10-15 à 23.52.23

Bonjour après intégration dans,
Paramètres=> Automatisations => CREER UNE ATO => Modifier en YAML
J’ai le message suivant : Message malformTexte préformatéed: required key not provided @ data[‹ trigger ›][0][‹ platform ›]

description: "Allume le thermostat PAC au dessus de -2°C, sinon allume le thermostat chuadiere"
mode: single
trigger:
  - platform: numeric_state
    entity_id: sensor.sonde_exterieure_temperature
    id: mode_pac
    above: -2
  - platform: numeric_state
    entity_id: sensor.sonde_exterieure_temperature
    below: -2
    id: mode_chaudiere
condition: []
action:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - mode_pac
        sequence:
          - service: climate.turn_on
            data: {}
            target:
              entity_id: climate.pac
          - service: climate.turn_off
            data: {}
            target:
              entity_id: climate.chaudiere
      - conditions:
          - condition: trigger
            id:
              - mode_chaudiere
        sequence:
          - service: climate.turn_off
            data: {}
            target:
              entity_id: climate.pac
          - service: climate.turn_on
            data: {}
            target:
              entity_id: climate.chaudiere

J’ai copier / coller le code dans une nouvelle automatisation et ça fonctionne bien chez moi.
Curieux.

Dans platform il faut que je prenne mon generic_thermostat
Pour mes 2x thermostats j’ai:

climate:
  - platform: generic_thermostat
    name: PAC
    heater: light.contact_pac
    target_sensor: sensor.sonde_maison_temperature
    min_temp: 10
    max_temp: 25
    ac_mode: false
    target_temp: 19.5
    cold_tolerance: 0.5
    hot_tolerance: 0
    min_cycle_duration:
      seconds: 2
    initial_hvac_mode: "heat"
    away_temp: 18
    home_temp: 19.5
    activity_temp: 15
    precision: 0.1
  - platform: generic_thermostat
    name: Chaudière
    heater: light.contact_chaudiere
    target_sensor: sensor.sonde_maison_temperature
    min_temp: 10
    max_temp: 25
    ac_mode: false
    target_temp: 19
    cold_tolerance: 0.5
    hot_tolerance: 0
    min_cycle_duration:
      seconds: 2
    initial_hvac_mode: "heat"
    away_temp: 17.5
    home_temp: 19
    activity_temp: 15
    precision: 0.1

J’ai créé une nouvelle automation, mais ma chaudière s’enclenche même si la température ext. est au dessus de 3°C

PAC => marche en dessous de 18°C / arrêt en dessous de -2°C
Chaudière => marche en dessous de 2°C/ arrêt au dessus de 3°C

- id: '1697662573652'
  alias: Enclenchement PAC
  description: en dessous de 18
  trigger:
  - platform: numeric_state
    entity_id: sensor.sonde_exterieure_temperature
    for:
      hours: 0
      minutes: 10
      seconds: 0
    below: 18
  condition: []
  action:
  - type: turn_on
    device_id: 86f16810fd101cb57547ba3ba0f9af38
    entity_id: a65c8145aa041461b50c68b1b268feea
    domain: switch
  mode: single
- id: '1697662684581'
  alias: Coupure PAC
  description: Coupure PAC en dessous de -2
  trigger:
  - platform: numeric_state
    entity_id: sensor.sonde_exterieure_temperature
    for:
      hours: 0
      minutes: 10
      seconds: 0
    below: -2
  condition: []
  action:
  - type: turn_off
    device_id: 86f16810fd101cb57547ba3ba0f9af38
    entity_id: a65c8145aa041461b50c68b1b268feea
    domain: switch
  mode: single
- id: '1697662776114'
  alias: Enclenchement Chaudière
  description: en dessous de 2
  trigger:
  - platform: numeric_state
    entity_id: sensor.sonde_exterieure_temperature
    for:
      hours: 0
      minutes: 10
      seconds: 0
    below: 2
  condition: []
  action:
  - type: turn_on
    device_id: 86f16810fd101cb57547ba3ba0f9af38
    entity_id: d17df8ee1cd22696956986f8ac57718f
    domain: switch
  mode: single
- id: '1697663004668'
  alias: Coupure Chaudière
  description: au dessus de 3
  trigger:
  - platform: numeric_state
    entity_id: sensor.sonde_exterieure_temperature
    for:
      hours: 0
      minutes: 10
      seconds: 0
    above: 3
  condition: []
  action:
  - type: turn_off
    device_id: 86f16810fd101cb57547ba3ba0f9af38
    entity_id: d17df8ee1cd22696956986f8ac57718f
    domain: switch
  mode: single

Rien de grave mais au niveau indentation, c’est pas tout à fait ça (même si ça gène pas).
Quand tu as un tiret, décale de 2 espaces devant. Ca donnerait ça:

C’est beaucoup plus lisible.

Sinon pour le debug de test automatisations (j’ai l’impression que c’est ça ton problème), tu peux utiliser « l’historique des executions »
Capture d’écran 2023-10-22 à 09.26.32

Tu choisis une éxécution qui n’a pas marché comme tu voulais et tu regarder étape après étape où il a été.

Sur le problème à proprement parler, ta logique est pas bonne je pense:

Tu enclenches la PAC en dessous de 18.
Tu stoppes la PAC en dessous de -2.

Donc si il fait -4, tu vas enclencher la PAC (en dessous de 18) et couper la PAC (au dessous de -2).
Il faut que tu définisses des plages entre x et y ° je mets la PAC, etc.

Pareil avec la chaudière:
Tu la mets en dessous de 2,
Tu la coupes au dessus de 3.
Entre 2 et 3 il se passe quoi ? Un interval permettra de résoudre ça.

Et mon dernier conseil, gratuit, fait une seule automatisation avec toute ta logique à un seul endroit. Tu peux utiliser les id de conditions (id: …). Regarde dans l’exemple que je t’ai donné en haut de ce post.
Toute la logique est à seul endroit et pas besoin de naviguer sur 4 automatisations. Mais c’est pas obligé, chacun fait ce qu’il veut :wink:

Ok, merci de ta réponse, comment fait-on pour mettre des intervalles entre (x-y)
je n’ai que en dessous de ou au dessus de

Tu mets les.deux : au-dessus ET en-dessous.

Il y a un truc qui cloche encore…

parallel:
  - choose:
      - conditions:
          - condition: numeric_state
            entity_id: sensor.sonde_temperature_exterieure_temperature
            above: -2
            below: 18
        sequence:
          - type: turn_on
            device_id: 86f16810fd101cb57547ba3ba0f9af38
            entity_id: a65c8145aa041461b50c68b1b268feea
            domain: switch
      - conditions:
          - condition: numeric_state
            entity_id: sensor.sonde_temperature_exterieure_temperature
            above: '18'
            below: -2
        sequence:
          - type: turn_off
            device_id: 86f16810fd101cb57547ba3ba0f9af38
            entity_id: a65c8145aa041461b50c68b1b268feea
            domain: switch
  - choose:
      - conditions:
          - condition: numeric_state
            entity_id: sensor.sonde_temperature_exterieure_temperature
            above: -20
            below: 5
        sequence:
          - type: turn_on
            device_id: 86f16810fd101cb57547ba3ba0f9af38
            entity_id: d17df8ee1cd22696956986f8ac57718f
            domain: switch
      - conditions:
          - condition: numeric_state
            entity_id: sensor.sonde_temperature_exterieure_temperature
            above: 5
            below: -20
        sequence:
          - type: turn_off
            device_id: 86f16810fd101cb57547ba3ba0f9af38
            entity_id: d17df8ee1cd22696956986f8ac57718f
            domain: switch