-
Notifications
You must be signed in to change notification settings - Fork 52
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
Интеграция с HomeKit iOS #32
Comments
Немного почитал HomeKit Accessory Protocol Specification и посмотрел в репозитории HA файл /components/homekit/type_thermostats.py. HomeKit идентифицирует чайник, как "thermostat" и ожидает получить обязательные параметры:
Данная реализация кастомного компонента предполагает, что есть три девайса: Экспортируются в HomeKit только light.light_rfs_kkl00 и water_heater.kettle_rfs_kkl003. Светильник работает нормально, с задержкой в секунд 5 (светильники на Wi-Fi ESP у меня реагируют мгновенно на переключение). А вот нагреватель скорее не работает, о чём я описал выше. При это в компоненте HomeKit для HA я вижу код:
Который импортирует и нужные нам значения CHAR_CURRENT_TEMPERATURE и CHAR_CURRENT_HEATING_COOLING и ниже по коду должен отправлять их в HomeKit:
Но тем не менее эти данные не попадают в HomeKit (текущая температура и статус чайника вкл/выкл). Также есть код, который отвечает за приём статуса вкл/выкл и текущей температуры из HomeKit, но функционал не работает. Оставлю свои рассуждения здесь, в надежде на то что подключится автор и другие пользователи компонента. |
для того, чтобы подключиться, нужен homekit...если вы или кто-либо разберется чего именно не хватает, то я добавлю... |
если есть желание, то попробуйте переделать water_heater в climate...это очень просто, потому что сущности максимально похожи... переименуйте файл water_heater в climate. from homeassistant.components.water_heater import ( на from homeassistant.components.climate import ( в файле init.py исправьте в списке доменов water_heater на climate запускайтесь, ловите мелкие баги, правьте...как запустите - попробуйте подключить в homekit |
Пошел по простому пути и сделал скрипт для включения чайника. Вывел его в виде выключателя в Homekit. |
Можешь подсказать как ты это сделал? |
Я добавил в HomeKit чайник как Climate (через шаблон Generic Thermostat). Всё работает. Но есть существенная проблема: температура поддерживается, чайник все время на подогреве. Никак не могу побороть это 🤔 |
нет такой функции в чайнике. Во всяком случае в моем G200S на момент написания интеграции не было. Может с обновлением прошивки добавили.
Вы можете решить эту проблему Автоматизацией HA: Условие Текущая температура больше установленной, триггер - включен режим подогрев, действие - выключить чайник |
Функции поддержки температуры нет и в моём чайнике) Видимо, HomeKit форсирует включение при первой возможности (когда температура опускается на 1 градус, например) |
Вы неправильно поняли. Как раз наоборот! Нет функции нагреть и выключить (во всяком случае я такую не нашел команду на тот момент). Если вклчаешь нагрев, то чайник постоянно будет греться, это его нативное поведение. Если нужно иное, то выше я написал, как сделать: Автоматизация - и нет проблем |
Теперь более менее понятно. Но вот алгоритм в предложенной автоматизации я не понял.
|
Не попросит, он не умеет. Он тупо первоначально отдает команду подогреть, а постоянно подогревает сам чайник. Чтобы он этого не делал, нужно выключить его и все.
Еще как есть: Это свойство может иметь 3 значения: Выкл, Кипятить, Подогреть |
теперь понял. В принципе логичное поведение )) Также можно попробовать делать не через климат: Либо ждать когда вотер хеатер появится, либо переделывать в свич (но тогда совсем пропадет возможность нагревать до любой температуры отличной от 100) |
Проверил, оказалось, Home Assistant настаивал на подогреве) Капнул немного глубже и сделал автоматизацию, которая выключает объект Climate, когда выключается Switch, дублирующий функционал Water Heater:
Конфигурация в configuration.yaml:
|
вот, о чем я и писал ) хорошо, что вы в итоге нашли для себя выход ) |
Открыл Issue: home-assistant/core#45972. Уже есть Pull Request, в ближайшее время, видимо, починят |
Хм, странная проблема. |
@vrslev скопипастил себе эту автоматизацию с климатом, но что-то у меня какие-то чудеса происходят. Если в приложении Home выставить температуру и включить - всё работает. Если попросить Siri - на любую команду говорит - охлаждаю до 40 градусов Си :) Вот с другим климатом вроде нормально работает, а с этим прям никак не хочет. Есть мысли куда копать? |
@sbasmanov Перестал пользоваться Home Assistant, HomeKit и кастомными конфигурациями) |
Эх, жаль. Думал почерпнуть немного опыта :) Ладно, буду строить костыли дальше :) Покупать чайник с homekit я пока еще не созрел :) |
В общем эту шляпу можно заставить работать без дополнительных автоматизаций, нужен только climate_template
Остается единственный косяк - в iOS 15 Siri криво понимает температуры. И даже с учетом того, что везде, где только можно, стоит C, команда "включи чайник на 150 градусов" приводит к установке 66 градусов по Цельсию. При этом если сказать "включи чайник на 60 градусов Цельсия" - то магически эта зараза понимает, чего от неё хотят :) На реддите (https://www.reddit.com/r/HomeKit/comments/toom40/siri_not_setting_right_temp_ecobee_3_any_ideas_to/) пишут что это баг и dev team о нем в курсе. Но когда пофиксят - хз. Так что остается либо через команды (фиксированные значения), либо через Home App. |
При интеграции в HomeKit появляется аксессуар в таком виде:
То есть в данный момент статус аксессуара "активен", цель 100 градусов. Но никаких действий не происходит. Если я сдвину регулятор цели, например на 95 градусов, то начнётся кипячение, но после финала аксессуар так и останется в "активном" состоянии. Текущую температуру отображает некорректно.
При этом в интерфейсе Home Assistant всё нормально. Есть возможность задать цвет, корректно отображается текущая температура. Статус состояния устройства работает.
Может кто уже смог корректно настроить для iOS?
The text was updated successfully, but these errors were encountered: