Adapter la température de consigne d'un Thermostat MOES BHT-002GBLZB à la température d'un autre capteur

Mon problème

Faire vérifier la consigne d’un Thermostat MOES BHT-002GBLZB sur la température d’un capteur différent

Bonjour à tous, j’imagine que ça a été traité mille fois, mais je ne trouve pas comment faire en sorte que ma consigne de Thermostat se fie à la valeur de la température de mon petit capteur d’ambiance plutôt que la valeur de l’attribut local_temperature.

En effet j’ai remplacé mon ancien thermostat par le MOES, mais il est mal placé et ne reflète pas la température ambiante que je souhaite obtenir.

En terme d’intégration j’ai utilisé Scheduler

image

Et la carte custom:scheduler-card

J’ai l’impression que la solution se situe par là :

Par avance merci pour votre aide et vos idées.

Ma configuration


En terme de matériel j’ai :

  • un thermostat MOES BHT-002GBLZB et je l’utilise via Z2M.
  • un capteur d’ambiance Xiaomi Aqara WSDCGQ11LM

Je dois encore manquer de compréhension des concepts de HA.
J’ajoute quelques précisions.

La valeur IN/ALL/OUT est modifiable.

Par contre une fois fait je ne sais pas comment la surcharger.
Faut-il recréer de toute pièce une objet climate dans le genre qui suit ?

- platform: generic_thermostat
  # Nom de notre thermostat
  name: Chauffage espace salon
  # entité du chauffage
  heater: climate.thermostat_salon_dalle_electrique
  # entité du capteur de température
  target_sensor: sensor.capteur_salon_temperature

climate.thermostat_salon_dalle_electrique étant mon entité issue du Z2M.

Merci d’avance pour toute aide !

Salut,

Les options IN/ALL/OUT, ce n’est pas vraiment lié à HA, seul ton appareil doit savoir ce que ça veut dire.

Ensuite pour gérer la consigne suivant des plages horaires ça a l’air d’être comme tu fais avec le scheduler.

Mais changer la source du sensor températeur du thermostat, si celui-ci n’est pas prévu pour ça risque d’être compliqué. As tu une doc sur cet appareil qui dit que ça se fait?

Salut @AlexHass,

Les options IN/AL/OU viennent du Thermostat MOES BHT-002GBLZB - (manuel)
De ce que je vois ça permet de sélectionner la sonde interne (IN), Externe dans ce cas c’est une sonde pour la dalle (OU) ou une combinaison des 2 (AL).

En terme d’installation, j’ai mis ce thermostat en remplacement de l’ancien car tous les câbles étaient déjà tirés mais le Thermostat est malheureusement proche de ma cheminée. La valeur remontée par le IN ne reflète pas vraiment la réalité de l’ambiance de la pièce.
Le plus juste est celle de mon petit capteur xiaomi centré dans la pièce.

D’où ma question sur la surcharge par la valeur d’un autre capteur.

Salut @cchancrin
J’ai ce thermostat que je suis en train de paramétrer. C’est lui qui donne l’ordre en contact sec à ma chaudière de s’allumer. Home assistant ne lui transmet que la température de consigne.
Donc la température interne du thermostat ne peut pas être déportée je pense.
Cependant, il existe une fonction offet (local_temperature_calibration) pour calibrer la temperature relevée (regarde dans zigbee2mqtt) : j’essayerai de modifier dynamiquement cette valeur selon le relevé de ton xiaomi (calcule le delta et applique le dans local_temperature_calibration), ce qui adaptera la temperature affichée et utilisée par le MOES.
Une idée comme ca, non testé.

PS: le custom:scheduler-card modifie-t-il dans ta config la programmation intégrée au thermostat ou juste un scheduler de home assistant ?

Salut @Faexa , merci pour l’idée, je n’avais pas pensé à ce paramètre.
Je vais faire quelques essais pour voir.

Salut @Faexa ,

non c’est juste un ordre de modification de consigne à une heure donnée.
Je m’étais basé sur ce site.
Pour agir sur le programme intégré à l’appareil, je n’ai pas vu comment faire.
Dans Zigbee2MQTT on retrouve bien ce qu’il faut

Par contre dans HA, les commandes ne sont pas associées.

Si tu trouves une astuce, je suis preneur.

Merci pour tes retours en tout cas.

Salut,

Dans un premier temps essaye de créer un script tout simple avec comme action de modifier Local Temperature calibration en le passant à -2 par exemple.

Si ça fonctionne tu pourras créer une automatisation qui fait un petit calcul et réglera le offset.

J’utilise ce genre de chose pour les robinets thermostatique Tado, voici le blueprint que j’utilise, ça pourra peut être t’aider :

Salut @nZAngel ,

Merci pour tes conseils en complément de @Faexa
En effet, je viens de faire le petit script

alias: Modifier le Local Temperature calibration
sequence:
  - service: number.set_value
    data:
      value: '-2'
    target:
      entity_id: number.thermostat_salon_dalle_electrique_local_temperature_calibration
mode: single
icon: mdi:delta

Ca fonctionne bien. Les ordres sont bien envoyés et le thermostat « physique » affiche bien la température réajustée.

Pour l’automatisation, ça va me prendre un peu plus de temps pour la faire, je ne suis pas encore au top sur ça.

Je vous tiens au courant.

1 « J'aime »

Bon, je complète un peu la solution.

L’objectif étant maintenant de positionner la valeur calculée automatiquement dans le script.

Après, pas mal d’essais je me suis aperçu que le calibrage ne sait prendre que des entiers. Enfin, via les appels sur Z2M. (peut-être est-ce un bug ou moi-même qui n’ai pas compris le fonctionnement).
Au passage j’ai même tenté l’arrondi à 0.5 : round(1, "half", default)

Donc première chose, mettre le calcul dans un template sensor (de mon côté déporté dans un template.yaml) :

   # Valeur calculée de la température réelle de la sonde du Thermostat
    - name: valeur réelle sonde thermostat salon
      state: "{% set tat = states('sensor.temperature_du_thermostat_salon') | float %}
        {% set tct = states('sensor.valeur_courante_du_calibrage_thermostat_salon') | float %}
       {{ (tat - tct) }}"
      unique_id: "valeur_reel_sonde_salon"
      unit_of_measurement: °C
      device_class: temperature

    # Valeur calculée de calibrage pour aligner 
    # la température du thermostat à la valeur du capteur déporté arrondi à l'entier inférieur.
    - name: valeur de calibrage temperature salon
      state: "{% set tts = states('sensor.valeur_reelle_sonde_thermostat_salon') | float %}
        {% set tcs = states('sensor.capteur_salon_temperature') | float | round(1, default=0) %}
        {{ (tcs - tts) | round(0, 'floor',default=0) }}"
      unique_id: "calibrage_tp_salon"

Ensuite adaptation du script

alias: Modifier le Local Temperature calibration
sequence:
  - service: number.set_value
    data:
      value: "{{ states('sensor.valeur_de_calibrage_temperature_salon') }}"
    target:
      entity_id: number.thermostat_salon_dalle_electrique_local_temperature_calibration
mode: single
icon: mdi:delta

Bon reste plus qu’à faire l’automation.
Je pense faire recalculer ça toutes les heures, ça devrait être suffisant.

Si vous avez des commentaires sur la méthode, n’hésitez pas, je débute.

Tu as bien avancé, bravo.
Voici une petite modif que j’ai faite sur mon blueprint pour qu’il prenne de valeurs décimales :

variables:
  target_tado: !input target_tado
  source_temp_sensor: !input source_temp_sensor
  tado_temp: '{{ state_attr(target_tado, ''current_temperature'') | float }}'
  current_offset: '{{ state_attr(target_tado, ''offset_celsius'') }}'
  actual_temp: '{{ states(source_temp_sensor) | float }}'
  offset: '{{ ( actual_temp - tado_temp ) | round(1, "ceil") }}'
  calculated_offset: '{{ ( ( actual_temp - tado_temp ) + current_offset ) | round(1, "ceil") }}'

round(1, « ceil ») est la clé :wink: j’ai pas mal buté sur ça.

1 « J'aime »

Salut,

Je trouve ta solution un peu compliqué alors qu’on peu vraiment faire plus simple.
J’ai créé un thermostat générique qui me pilote les tètes MOES en version ON/OFF.
Je m’explique :
J’ai des têtes MOES et des capteurs SONOFF dispatchés dans chaque pièces de ma maison.
J’ai créé des script ON et OFF en réglant la consigne à 25 pour ON et à 15 pour OFF, ensuite un petit SWITCH dans configuration.yaml et le tour et joué la tète s’ouvre pour chauffer et se ferme quand la consigne arrive température.
Ta tête ne détectera jamais la bonne température au bon moment de toute façon et ça te permet de calibrer au dixieme ton chauffage
Après il ne te reste plus qu’a automatiser tout ça et voila !
Simple et efficace

Bonjour, je suis tombé sur ton post , ta solution est utile avec les têtes thermostatique mais pas le thermostats d’ambiance moes qui actionne la chaudière via un contact sec? Je n’arrive pas à activer se contact sec par un on off il n’est pas remonté dans HA . On faut donc adapter la température de consigne de se thermostat pour qu il actionne son contact. Je n’ai pas trouvé d’autres solutions : donc quand les vannes radiateur sont ouvertes je monte la température de consigne de mon thermostat d’ambiance pour qu il actionne son contact. Mais ça ne me plait pas car pour le désactiver je suis obligé de descendre la température de consigne beaucoup plus bas que la température de la pièce donc la température risque de chuter dans cette pièce. A tu une idée de comment activer simplement le contact sans passer par une température de consigne ? Merci d’avance