Synchronizacja głowicy termostatycznej z termometrem

Dzień dobry wszystkim.
To mój pierwszy post, więc proszę o pewną wyrozumiałość, jesli niewłaściwie przypisałem go do kategorii. :slight_smile:

Mój problem jest następujący.
Posiadam głowicę termostatyczną z wbudowanym termometrem i funkcją jego kalibracji (wiadomo, przy grzejniku zawsze cieplej) i niezależny termometr NOUSa. I tak sobie zamarzyłem, że mógłbym przygotować taką automatyzację, odświeżaną na przykład co 15 sekund, która wykonywałaby - w teorii - prostą czynność.
Temp_termometr - temp_głowica = różnica
I wspomniana “różnica” byłaby podstawiana jako wartość do local_temperature_calibration. Początkowo próbowałem robić to poprzez edycję znalezionego (chociaż niedziałającego) kodu, ale jestem strasznym laikiem i chociaż efekt był to zmieniona wartość wyświetlana była przez 30 sekund, następnie przez 30 sekund była wartość realna i tak w kółko, przez co głowica wariowała włączając i wyłączając się w kółko.
Macie może pomysł jak to obejść korzystając z Node-Red? Również próbowałem, ale tutaj już w ogóle nie miałem pojęcia jak wymusić podstawienie wyniku odejmowania do wartości.
Zastanawiałem się także czy nie ma bezprzewodowych elektrozaworów, które nie byłby tak “inteligentne”. Wystarczyłoby przecież, żeby były na baterie i odbierały sygnał 0 i 1. Korzystając z HA ich wewnętrzny termometr jest mi zbędny, a wręcz przeszkadza.

Poniżej załączam kod, może komuś pomoże zrozumieć moje rozterki. :smiley:

blueprint:
  name: Sync TRV tempature
  description: Sync external tempature sensor with TRV tempature
  domain: automation
  input:
    ieeeaddressoftrv:
      name: IEEE Address
      description: This is the address of the TRV found in your zigbee database example 03.02v8
    external_temp:
      name: Select the external temp sensor
      description: This will be your external temp sensor
      selector:
        entity:
          domain: sensor
          device_class: temperature
    climate_name:
      name: Climate entry
      description: This will be the TRV it self in home assistant
      selector:
        entity:
          domain: climate 
alias: Calibrate Thermostat
description: ''

variables:
  target_device: !input 'ieeeaddressoftrv'
  climate_device: !input 'climate_name'
  external_temperature: !input 'external_temp'
  adjust: "{{state_attr(climate_device, 'local_temperature_calibration')}}"
trigger:
  - platform: state
    entity_id: !input 'external_temp'
    for:
      hours: 0
      minutes: 0
      seconds: 45
      milliseconds: 0
  - platform: state
    entity_id: !input 'climate_name'
    for:
      hours: 0
      minutes: 0
      seconds: 45
      milliseconds: 0
condition:
  condition: or
  conditions:
    - condition: template
      value_template: "{{ states(external_temperature) != 'unavailable' }}"
    - condition: template
      value_template: "{{ states(external_temperature) != 'unknown' }}"
    - condition: template
      value_template: "{{ state_attr(climate_device,'local_temperature')|float(0) | round(1, 'half') != states(external_temperature)|float(0) | round(1,'half') }}"
action:      
  - service: mqtt.publish
    data_template:
      topic: zigbee2mqtt/{{ target_device }}/set/local_temperature_calibration
      payload_template: >-
        {{states(external_temperature)|float(0) | round(1,'half') - state_attr(climate_device,'local_temperature')|float(0) | round(1, 'half')}}
  - delay: 4
mode: single
max_exceeded: silent

tez kiedyś używałem tego blueprintu i powiem ci że manipulacja local_temperature_calibration nie jest dobra głowica wtedy szaleje trudno ustabilizować temperaturę bynajmniej na głowicy TS0601.
Polecam ci dodatek z HACS “AI Thermostat for Zigbee2MQTT” tam kalibracja odbywa się manipulacją temperatury docelowej.

Już byłem w ogródku, ale niestety ten dodatek z HACS działa połowicznie. Tzn. odczytuje wynik z termometru i podstawia go jako temperaturę docelową prawidłowo do głowicy. Ale co z tego, jeśli mimo 20 stopni przy zadanych 23 nie grzeje…A nie grzeje dlatego, że głowica mimo wszystko sprawdza swój termometr z wynikiem 23.5, na przykład. U Ciebie działa normalnie?

Tak działa u mnie normalnie i też sprawdza temperaturę z termometrem wewnętrznym ale tam kalibracja jest rozwiązana dość sprytnie. Kalibracja temperatury następuję na temperaturze docelowej w termostacie dlatego tak ważne jest stworzenie virtualnego termostatu dla dodatku. Ale tak metoda kalibracji niesie za sobą pewną niedogodność mianowicie temperatura którą widzisz na głowicy jest fałszywa i nie możesz sterować temperaturą na głowicy tylko Encją z poziomu HA, taki przykład jak to działa:

Temperatura w pomieszczeniu 20oC , odczytywana temperatura na grzejniku 22oC , nastaw w encji 22oC
Więc dodatek wie że różnica to 2oC więc wysyła do głowicy Target temperaturę 24oC.

Głowica po takim zabiegu ładnie trzyma te parametry i tak nie szaleje jak przy manipulacji local temperature calibration.

climate:
  - platform: ai_thermostat
    name: IA Termostat Kinga
    thermostat: climate.termostat_kinga
    temperature_sensor: sensor.temperatura_kinga_temperature

Ok, posprawdzałem i zaczęło działać trochę lepiej, aż tu nagle sprawdzam po weekendzie, a tu niespodzianka. Termometr pokazuje 19.8, a głowica 21.2. Brak logów, brak błędów, wszystko uruchomione ponownie i zero współpracy… Ech, ciężkie to życie.

Cześć.
Czy mógłbyś opisać jak dokładnie skonfigurowałeś AI Thermostat?
Pierwsza sprawa to skąd repozytoria do HACS - pytam bo tam jest PROGRAMMABLE THERMOSTAT a nie AI thermostat.
Nie wiem również jak ma wyglądać postać docelowej konfiguracji w configuration.yaml i jej odniesienie do climate.yaml bo z tym mam największy problem.