Блог

Достала меня эта TUYA Zigbee TRV

В общем достала меня это голова со своим не очень адекватным поведением.

У меня плотные занавески в пол, в итоге у окна жара, датчик показывает температуру 25, а то и 28 при целевых 24, а в комнате холодно 21 - 22, а батарея выключена и ждать пока сквозь занавеску, что то просочиться нет не какого желания.

В итоге решил взять управление полностью в свои руки, создал Generic Thermostat и MQTT Switc.

climate: ## Термостат - platform: generic_thermostat name: "bedroom" heater: switch.bedroom_heating target_sensor: sensor.cleargrass_air_temperature min_temp: 20 max_temp: 27 target_temp: 23.5 ac_mode: false min_cycle_duration: seconds: 120 initial_hvac_mode: "off" away_temp: 18 precision: 0.1 # Вертуальный свитч для термоголовы switch: - platform: mqtt unique_id: bedroom_switch name: "Bedroom Heating" state_topic: "zigbee2mqtt/spal_bat/set/force" command_topic: "zigbee2mqtt/spal_bat/set/force" payload_on: "open" payload_off: "normal" # Смотрите что я тут не закрываю задвижку, а перевожу задвижку в "нормальное" состояние, пускай живет своей жизнью state_on: "open" state_off: "normal" optimistic: false qos: 0 retain: true icon: mdi:radiator

И достаточная простая автоматизация по синхронизации целевых температур и еще одна на всякий случай при переходе в нормальное состояние, что бы дублировало, а то когда применяешь силу - голова как виснет.

### Управление батареей #Синхронизируем термостаты - alias: 'Synchronizing the thermostats' trigger: - platform: template value_template: "{{ state_attr('climate.bedroom', 'temperature') | float != state_attr('climate.spal_bat_climate', 'temperature') }}" action: - service: climate.set_temperature data_template: entity_id: climate.spal_bat_climate temperature: >- {{ state_attr('climate.bedroom', 'temperature') | float }} # Синхронизация при отключение - alias: 'Synchronizing the thermostats when shutdown' trigger: platform: state entity_id: switch.bedroom_heating to: 'off' for: minutes: 1 action: - service: climate.set_temperature data_template: entity_id: climate.spal_bat_climate temperature: >- {{ state_attr('climate.bedroom', 'temperature') | float }}

Не сложно, но стало сильно лучше в комнате.

UPD 30.12.20

На github есть решение проблемы за счет калибровки, в комментариях тоже есть, но мне кажется на github проще. Ссылка на оригинал.Прожил 3 дня с ним - это просто праздник.Сам код:

- alias: Heat temperature update and calibration trigger: - platform: time_pattern minutes: "/1" - platform: template value_template: "{{ (state_attr('climate.spal_bat_climate', 'temperature')|float - states('sensor.cleargrass_air_temperature')|float)|abs > 0.25 }}" for: '00:00:02' action: - service: mqtt.publish data_template: topic: 'zigbee2mqtt/spal_bat/set/local_temperature_calibration' payload_template: >- {{(state_attr('climate.spal_bat_climate','local_temperature_calibration')|float - state_attr('climate.spal_bat_climate', 'current_temperature')|float + states('sensor.cleargrass_air_temperature')|float + 128)|round(1,'half')}}


Да уж, заголовок сбивает с толку... "Туя достала", потому что шторы глухие и расположение термостата специфично :(

Надо было "рабочее" название перед публикацией изменить.


Со стороны туя могли бы дать возможность выбирать датчик температуры (у них же есть отдельно датчик в системы, почему не сделать этого) и было бы очень круто.

это вам, батенька, повезло, что голова умеет ручное управление. у меня с дисплеем и такой чудесной фичи нет. в итоге я просто методом научного втыка скорректировал голову. в месте где она греется от батареи, просто добавлено 4 градуса сверху. и получилось то что надо. 

Согласен - повезло, если бы не было такой возможности - отправил бы на барахолку ее.

Тоже задирал температуру, но днем то я занавески открываю и становить жарко, тоже решаемая зада конечно (например по часам), но внешний датчик решает вообще все проблемы.

Ребята, а как проще всего будет притащить эту голову в ХК? И шоб оно стабильно работало.

Тоже думал над этим, но хотелось бы не просто полностью закрывать/открывать кран по дженерик термостату, а управлять степенью открытия крана основываясь на показаниях внешнего датчика температуры.
Есть идеи как это реализовать?

Идя - есть, но нет возможности управлять "position". Может и не появится.

да, я тоже пробовал отправлять в топик
zigbee2mqtt/TRV_name/set/position
значения от 0 до 100, но реакции никакой



Чтобы использовать штатный функционал "умного" неполного открытия (т.к. position не устанавливается кроме как 0/100) я использую local_temperature_calibration. Т.е. калибрую (у меня по времени автоматизация стоит) внутренний датчик туи по внешнему датчику (у меня ксяомишный). Пока тестирую, но вроде работает стабильно. Калибровка работает в +- 7 градусов. 




Tw=Tw+256- - это чтобы корректно работала отрицательная калибровка. Более подробное обсуждение есть на гитхабе, если надо кину ссылку (англ.)


Автоматизация такая (код криво сюда вставляется (( )


- alias: Update Temp TRV 1  description: Update local temp TRV 1
trigger:
- minutes: /10
platform: time_pattern
condition:
- condition: template
value_template: >-
{{(float(((states('sensor.a4c138b1856f_temperature')|round(1,'floor'))/0.5|round(1))|int*0.5) -
float(state_attr('climate.radiator_1_climate','local_temperature')))!=0}}
action:
- service: mqtt.publish
data_template:
payload: >-
{% set
Tp=(((states('sensor.a4c138b1856f_temperature')|round(1,'floor'))/0.5|round(1))|int*0.5)
-%}{% set
Tg=(state_attr('climate.radiator_1_climate','local_temperature'))-%}{%
set
Tk=state_attr('climate.radiator_1_climate','local_temperature_calibration')-%}{%
set Tw=float(Tp)-float(Tg)+float(Tk) -%}{% if Tw<0 -%}{% set
Tw=Tw+256-%}{%- endif %}{{Tw}}
topic: zigbee2mqtt/Radiator_1/set/local_temperature_calibration
mode: single


https://sprut.ai/static/media/cache/00/65/63/5/6488583/72305/1000x_image.png?1608292342" alt="1000x_image.png?1608292342" />



Мне кажется такой способ лучше чем мой. На том же гит человек опубликовал схожий вариант управления за счет калибровки:

https://sprut.ai/static/media/cache/00/49/47/5/6547751/72803/1000x_image.png?1609175980" alt="1000x_image.png?1609175980" />

Сделал под себя, в гите есть не большая ошибка.

Сегодня целый день ее пробую, открываю/закрываю окна - вроде работает, есть конечно скачек в минуту синхронизации, но в целом всё равно лучше.

Как у вас дела с тестами?

Привет! Как дела с постоянной калибровкой? 


Язычок в батарее держит среднее значение? Есть график? 


Былоб очень прикольно. 

Я так понимаю в такой реализации температуру можно менять и на головке, и в приложении? 



https://sprut.ai/static/media/cache/00/49/47/5/6628161/73488/1000x_image.jpg?1610608075" alt="1000x_image.jpg?1610608075" />https://sprut.ai/static/media/cache/00/49/47/5/6628161/73489/1000x_image.jpg?1610608076" alt="1000x_image.jpg?1610608076" />https://sprut.ai/static/media/cache/00/49/47/5/6628161/73490/1000x_image.jpg?1610608076" alt="1000x_image.jpg?1610608076" />

Привет. Дела с постоянной калибровкой отлично - всё работает отлично. Язык работает. Вот графики. Целевая температура 23.5 днем и 23 - ночью. По поводу управления батареей прямо с головы - не знаю. Я один раз настроил и больше не трогаю.

По автоматизации, изменил время с раз в минуты на раз в пять минут из-за этого бывают сбои минутные. Еще когда пропадает датчик (у меня температура берется из датчика качества воздуха - он по фиви, по графикам видно когда я ее перегружал :) ) - то калибровка слетает в 0 или в 80 градусов.

В общем я доволен и претензий не имею :)

Привет! Спасибо! Выглядит хорошо. 

У меня есть очень похожая задачка. Написал в телегу. Помоги плиз. 



@WishFly

Проблема force - open заключается в том, что режим форсированного обогрева включается на непродолжительное, заданное в настройках головы время. В результате, при необходимости длительного обогрева - голова будет включаться / выключаться. Поэтому к открытию, в список команд виртуального (вЕртуальный - уж очень глаз режет, исправьте) свича, добавить и указание высокой целевой температуры, у меня плотных штор нет - ставлю 25, со шторами - 30 можно поставить. А при закрытии - соответственно ставить низкую - 20 например, неважно. Можно и не трогать параметр force в таком случае, по большому счету.



Не соглашусь что команда форс долго не работает.

https://sprut.ai/static/media/cache/00/49/47/5/6475638/72545/1000x_image.jpg?1608574430" alt="1000x_image.jpg?1608574430" />https://sprut.ai/static/media/cache/00/49/47/5/6475638/72546/1000x_image.jpg?1608574430" alt="1000x_image.jpg?1608574430" />https://sprut.ai/static/media/cache/00/49/47/5/6475638/72547/1000x_image.jpg?1608574431" alt="1000x_image.jpg?1608574431" />

Видно что батарея включилась в 7 утра, видно что пошла температура вверх и видно что язык полностью выдвинут (батарея полностью открыта 12 часов).

Тут или датчик виснет или движений языка нет? Но я так же не слышу работы задвижки\языка. Ну и температура тоже растёт.

Это говорит только о том, что фактическая температура - ниже целевой. Время работы в форсированном режиме - настраивается на головке, он игнорирует показания целевой и фактической - просто открывается, по истечении этого времени, включается стандартный режим головки

А как же вылет языка? Почему он в 100%.
Форс и буст по вашему одно и тоже?

postiton = 0 - закрытор, 100 - открыто. Естественно он будет в 100 при форсированном открытие. Не по моему, это и есть одно и то же. Поставьте низкую целевую температуру, включите force = open и проверьте через время (превышающее настройку на головке) - голова будет закрыта



Я уверен, что это не одно и тоже.
Я провел предложенный эксперимент. Надеюсь часа хватит (я буст в настройках головы не трогал).
https://sprut.ai/static/media/cache/00/49/47/5/6545691/72596/1000x_image.jpg?1608661675" alt="1000x_image.jpg?1608661675" />https://sprut.ai/static/media/cache/00/49/47/5/6545691/72597/1000x_image.jpg?1608661676" alt="1000x_image.jpg?1608661676" />https://sprut.ai/static/media/cache/00/49/47/5/6545691/72598/1000x_image.jpg?1608661676" alt="1000x_image.jpg?1608661676" />Я сломал

generic_thermostat, что бы он не управлял

mqtt switch, понизил целевую температуру до 20 и ручками включил
mqtt switch.
В итоге задвижка залипла на 100, температура в помещении ползет вверх не взирая на цель и

mqtt switch

не выключался. На всякий потрогал трубу - огненная - открыто там всё.

Тем не менее. У меня термоголовка несколько месяцев, я это все давно проверил и высказывал не предположения, а факты. Однако есть еще и другой факт - "зоопарк" моделей и прошивок при идентичном внешнем виде. Возможно в вашей версии - имеется глюк, не отключающий force/boost режим. 

Так и я пишу факты. Про зоопарк согласен. Мне думается что у меня не глюк, а фича (может глюк у вас?, при всём уважении к вашим трудам). + в 

generic_thermostat есть параметр 

keep_alive и если я правильно понял его назначение- он проверяет состояние переключателя и если он выключился (по любым причинам) он его включит, т.е. если буст выключился то keep_alive включит его обратно, если конечно я понял его назначение.


Владельцы таких голов - делитесь у кого как работает форс.

Ну не думаю что залипание головы в открытом состоянии вне зависимости от целевой температуры - это нормальная работы. Весь смысл в том, что "пнуть" голову на какое-то время при необходимости, после чего она перейдет в свое нормальное состояние. 

keep_alive - нужен для устройств, которые автоматически отключаются если не получают никаких команд, если этот параметр установлен то свич будет срабатывать каждый раз по истечении этого интервала, что еще и помогает при потере статуса устройства. В случае с force - он действительно будет его постоянно дергать, что видимо приводит к обнулению интервала работы буст режима.

выпаял термодатчик и вывел его в другое место. Работает идеально

Далеко?

Примерно 1.5 метра. Из под занавески главное

беспроводная превратилась в проводную ))

Мне с браком прислали, жрет 40ма в режиме покоя. Так что она стала проводной по питанию. Переписываюсь с инженерами в надежде на чудо, но не надеюсь.


Снял на видео, если кому-то интересно https://zen.yandex.ru/media/id/5f96bcd7b1c2c94095587eea/tuya-zigbee-smart-thermostatic-radiator-valve-for-radiator-5fdf88aac80827600ff26331?from=channel&rid=1292246415.539.1609220363409.47388">https://zen.yandex.ru/media/id...


подскажите, датчик сильно мелкий? какой тип? поябельно? собираюсь покупать термоголовки 

Датчик демонтируется любым паяльником без особых проблем. Последняя моя модификация описана https://zen.me/Y5gVcxx5">тут

меня больше напрягает шум, который издает привод в движении, особенно слышно когда голова уже стоит на кране батареи ((

Мне кажется что после выноса датчика шум почти исчез. Поясню догадки. Из-за того что колебания температуры исчезли, пид перестал колбасится. Регулирует редко и на долю секунды по 5%



Обнаружил у себя вот такую "красоту", ктото уже сталкивался с этим?

https://sprut.ai/static/media/cache/00/71/83/5/6477311/73023/1000x_image.png?1609768541" alt="1000x_image.png?1609768541" />

вопрос. поддержка данного термоголовки есть в zigbee home automation?

Если я правильно понял то ответ - да. 
Определчется как термостат.

Ничего не понимаю, на внешнем датчике 22.8 на внутреннем 24 а калибровка всё равно в 0 встаёт

Уже и с гитхаба и от 

https://sprut.ai/client/user/profile/6563">(drnemo) пробовал варианты. И руками дёргаю службу с этим темплейтом. всё одно в 0



Отпаял датчик температуры и заменил на резистор 12Ком. Теперь температура внутр.датчика никуда не плавает и ее не надо считывать и что-то мудрить. Она всегда 21С.


Теперь делается простейшая автоматизация, раз в 30 минут, скидываю показания внешнего датчика минус 21.

Так же, если кто-то хочет напрямую управлять чисто штоком, с этим способом это намного проще, т.к. температура на датчике не изменяется сама по себе. Т.е если задать 22, то шток откроется на 50% и будет так открыт вечно, пока не изменишь целевую температуру.

https://sprut.ai/static/media/cache/00/54/71/5/10878092/83867/1000x_image.png?1638499002" alt="1000x_image.png?1638499002" />
https://sprut.ai/static/media/cache/00/54/71/5/10768603/83721/1000x_image.png?1638142582" alt="1000x_image.png?1638142582" />

Меня тоже достали эти термоголовки. На счет автоматизации перепробовал всё. Если просто калибровать температуру, то даже при рассогласовании в 10 градусов кран открывается/закрывается в течении часа, а это очень долго, обычная термоголовка открывается за 1 мин. Более менее работает, когда управляешь через force open\close и поставить deadband 0.2-0.3 градуса. Но есть еще одна проблема, у меня головки периодически не принимают команды, бывает это быстро проходит, а бывает нет. Особенно хреново, когда я уезжаю в командировку, а жена никак не может управлять отопление. На данный момент очень не надежная штука, вернусь с командировки и сниму их все.



Если речь про TuYa TS0601
_TZE200_cwnjrr72, то это не совсем верная информация. Головка реагирует мгновенно. Вот специально только что выставил с 23 до 30. Головка в течении 30 секунд открыла на 100%.


https://sprut.ai/static/media/cache/00/54/71/5/10878092/83868/1000x_image.png?1638499180" alt="1000x_image.png?1638499180" />

Если меняешь уставку, то да, а если делать коррекцию температуры, то нет. Сейчас обновил прошивку, посмотрим как будет работать. А еще одна головка сейчас напрочь зависла на 70%, задание/режимы меняются, а сам язычек завис.



А где вы обновили прошивку? В z2m показывается пустота в месте где номер прошивки.

Через z2m OTA, на двух из трех клапанов обновилась прошивка. На подвисшем не хочет обновлятся.



а у тебя так же версии нет в z2m как у меня? и появилась ли после апдейта? я у себя боюсь апрейдить.

https://sprut.ai/static/media/cache/00/54/71/5/10886358/83914/1000x_image.png?1638631823" alt="1000x_image.png?1638631823" />


Версия не пишется, но на тех, где обновил, при проверки обновления, пишет, что новой прошивке нет. А на той, где не обновился красная кнопка с обновлением. И еще, если прочитать appversion, на обновленной 87, на старой 85.

Приветствую. TRV HY368.  Установил 3 датчика. Заказал 11.11.  Работают коректно пару дней. Патом замечаю что температура в комнатах растёт. PID на нуле. А клапан не закрыт до конца и радиатор греет. Forced close  нажимаеш. Клапан давольно долго гудит пока закроиться. Хотя пид и на датчике и tuya програмка показывала что датчик уже был в нулевом положении. После такой манипуляции пару дней снова всё ок.  Может кто сталкивался с такой проблемай? Датчики переустанавливал, результат тотже :(

я так понимаю что сбиваеться PID и не соответствует PID при калибровке.( и сбиваеться на много. Выставил галовку чтоб начало открывания былобы при 45% PID. Пару дней и таже история. Показывает что PID 0 а радиатор валит по полной.)

как с этим бороться?

Такая же история. Решение нашли?
Вот и у меня такое и не знаю пока как с этим бороться:(
пробовали монетку подкладывать?
В инструкции есть настройка АА. Кто-то понял что она точно значит? Вроде как выбор либо PID в % работает, либо on/off. Но когда я поставил на 1. Он все равно закрывается на %.

Вернуться назад
Вернуться назад