Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Диапазон целевой температуры (и сопутствующие проблемы) #32

Open
booroondook-eng opened this issue Feb 21, 2023 · 5 comments

Comments

@booroondook-eng
Copy link

booroondook-eng commented Feb 21, 2023

Версия 0.2.0
Обнаружилось, что все термостаты (зоны) из интеграции MyHeat имеют диапазон установки целевой температуры от 7 до 35 градусов Цельсия.
Это касается абсолютно всех термостатов - как связанных с температурой воздуха в помещениях, так и прочих.
Например, у меня есть зона "Бойлер" - это бойлер косвенного нагрева, отапливаемый газовым котлом. Там (через настройки облака Myheat) выставлена целевая температура 52 градуса.
И на карточке Home Assistant также (если ничего не трогать) показана целевая температура 52 градуса:
Boiler
Однако при попытке изменить целевую температуру упираемся в верхнее ограничение 35 градусов.
Boiler2
Кстати, тут еще параметр "target_temp_step" задан в 1 градус, хотя панель управления MyHeat позволяет задавать температуру с точностью до 0.1 градуса.

И еще один неприятный момент: если в HA изменить целевую температуру любой зоны, то полностью останавливается расписание, заданное в панели управления MyHeat.

@vooon
Copy link
Owner

vooon commented Feb 21, 2023

Диапазон - дефолтный для ХА. Может можно его как-то переписать в самом ХА?

Облако кроме текущей уставки и значения данных в ответе не дает.
В документе на АПИ goal: integer, так что шаг в 1 градус идет отсюда. Да и честно говоря я сомневаюсь, что точность задачи до десятых нужна.

Судя по АПИ там либо какое-либо расписание, либо просто задача цели. При чем нет возможности узнать текущее состояние какое управление работает. Нет вызова и на получение доступных режимов.

Я в https://github.com/vooon/hass-myheat/blob/master/custom_components/myheat/api.py собственно реализовал все доступные вызовы описанные в документации на АПИ от производителя.
Я спрашивал список ошибок, прочие вызовы - молчат.

@booroondook-eng
Copy link
Author

Диапазон - дефолтный для ХА. Может можно его как-то переписать в самом ХА?

Я выкрутился из положения, воспользовавшись директивой "customize" в ХА:

  homeassistant:
    customize:
      climate.myheat_boiler:
        min_temp: 30
        max_temp: 65
        target_temp_step: 0.1
        preset_modes: home, none
        cold_tolerance: 3
        hot_tolerance: 1
        precision: 0.1
        initial_hvac_mode: "heat"
      climate.myheat_floor_1:
        min_temp: 10
        max_temp: 30
        target_temp_step: 0.1
        preset_modes: home, none
        cold_tolerance: 0.1
        hot_tolerance: 0.1
        precision: 0.1
        initial_hvac_mode: "heat"

Пока еще точно не могу сказать, все ли параметры отрабатываются. Но точность до 0.1 и граничные температуры работают

Облако кроме текущей уставки и значения данных в ответе не дает. В документе на АПИ goal: integer, так что шаг в 1 градус идет отсюда. Да и честно говоря я сомневаюсь, что точность задачи до десятых нужна.

Не знаю, каким документом по API вы пользуетесь. Мне их техподдержка еще два года назад выслала вот этот документ (собственно по нему я и работал через REST-запросы). Там не говорится про int.

My_Heat_API.pdf

Судя по АПИ там либо какое-либо расписание, либо просто задача цели. При чем нет возможности узнать текущее состояние какое управление работает. Нет вызова и на получение доступных режимов.

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

Я в https://github.com/vooon/hass-myheat/blob/master/custom_components/myheat/api.py собственно реализовал все доступные вызовы описанные в документации на АПИ от производителя. Я спрашивал список ошибок, прочие вызовы - молчат.

Да, молчат. Я тоже их тереблю периодически.

P.S. У меня еще есть одна мечта. Я понимаю, что здесь это оффтопик, но просто больше посоветоваться не с кем.
Короче, фирменный радиомодуль общается с контроллером по 1-Wire. То есть, по сути, эмулирует датчик Dallas. Однако в документации и на рекламных скриншотах видно, что через радиомодуль "протягивается" не только температура, но и влажность, а также уровень сигнала. Как известно, датчиков влажности и тем более датчоиков уровня сигнала, работающих по протоколу Dallas, в природе не существует. С другой стороны, полученное контроллером от датчика значение - это просто число. Число, которое можно произвольно изменить математически (умножить, разделить и т.д.). И более того - к этому числу можно приписать произвольную единицу измерения. Таким образом, можно предположить, что радиомодуль посылает контроллеру значения, интерпретируемые изначально как температура от датчика DS18B20, но благодаря какой-то "хитрости" преобразуемые в проценты влажности или уровня сигнала.
Вопрос - в чем состоит эта хитрость? Как контроллер узнаёт, что полученное им число - не температура, а что-то другое?
Мне пока в голову приходит тлько один ответ - радиомодуль эмулирует серийный номер датчика, подменяя код производителя (так называемый Family Code - это первый байт в серийном номере). У DS18B20 этот байт равен 0x28, у других типов датчиков Dallas - другие. И вот я подозреваю, что используется какие-то нестандартные значения этого байта. Вопрос - какие именно.

@vooon
Copy link
Owner

vooon commented Feb 21, 2023

Тот же самый документ и у меня.

Там не говорится про int.

Ну я воспринял "goal":27 - что хочет именно целое. Плюс в инфо там тоже целые у таргета. Но флоты апи класс не режет.

changeMode у меня вроде должен быть взведен, но может и ошибка где-то.

По датчикам - я предполагаю что по идам сделано. Скажем эмулируется три 18б20 два из которых имеют маску совпадающую с чем-то.
Потом на 1-wire есть всякие другие чипы, вроде даже АЦП были. Есть датчики температуры-влажности с почти 1-вайром, это тоже как вариант.

Я бы предположил попробовать прицепить логический анализатор и послушать шину.
Sigrok умеет работать с дешевыми подделками под SelaeLogic, на алишке раньше были меньше тыщи...

@booroondook-eng
Copy link
Author

booroondook-eng commented Feb 21, 2023

Ну я воспринял "goal":27 - что хочет именно целое. Плюс в инфо там тоже целые у таргета. Но флоты апи класс не режет.

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

на 1-wire есть всякие другие чипы, вроде даже АЦП были. Есть датчики температуры-влажности с почти 1-вайром, это тоже как вариант.

Да, действительно есть: https://owfs.org/index_php_page_family-code-list.html

Я бы предположил попробовать прицепить логический анализатор и послушать шину. Sigrok умеет работать с дешевыми подделками под SelaeLogic, на алишке раньше были меньше тыщи...

Это все здорово. Но для этого понадобится купить МайХитовский радиомодуль (4190 руб.) и хотя бы один их фирменный датчик (3500 руб.). Дороговато для экспериментов.
На самом деле я хочу сделать эмулятор радиомодуля, через который передавать контроллеру показания.
Собственно, эмулятор "чисто-температурных" DS18B20 я уже сделал на ESP8266 - он получает данные с реальных датчиков из ХА через MQTT. Тем самым, нет нужды тянуть провода к контроллеру - на нем вместо датчиков (на тех же трёх пинах) висит эта ESPшка.

@vooon
Copy link
Owner

vooon commented Feb 21, 2023

Ну тут увы, без железа не понять - там может быть все что угодно.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants