Dzień dobry wszystkim.
To mój pierwszy post, więc proszę o pewną wyrozumiałość, jesli niewłaściwie przypisałem go do kategorii.
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.
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