
Когда пришла пора менять холодильник, «умный» я даже не рассматривал, т.к. то, что мне попадалось на локальном рынке, стоило прилично дороже «тупых» аналогов и, с точки зрения интеграции, было совершенно отвратительным – ни LG, ни Samsung, судя по Интернету, невозможно нормально интегрировать в Apple Home – для них есть свои приложения и точка. Такой сценарий я не рассматривал, ибо вся моя техника, которая имеет Wi-Fi, так или иначе заведена в приложение «Дом» на всех семейных айФонах.
Долго я не решался купить новый «гроб» – какие-то они все откровенно стрёмные1), ни мне, ни жене ничего не нравилось хоть ты тресни! Выходить из бюджета тоже не хотелось… Но, когда прижало, когда старый холодильник совсем уже стал отказываться работать, пришлось в серьез взяться за выбор и, плюнув на бюджет, пойти смотреть глубже…
Ну, и нашли – BOSCH Serie | 6 (KGN39AI32R) – прилично выше планируемого бюджета, зато он внезапно понравился нам обоим. А когда я нагуглил, что для него есть плагин к Homebridge… вопрос о покупке был снят с повестки дня окончательно!
Но после покупки этого чудесного чуда техники выяснилось, что плагин-то есть, но для полноценной его работы нужен «домашний центр», без которого он позволяет управлять только включением/выключением функций, а эвенты, алармы и настройки температуры, уж извините2)!
Однако, в процессе настройки этого плагина, до меня дошло – если есть плагин, то, вероятно, есть и соответствующее API, а если есть API, почему бы мне его не изучить и не использовать?!
Отсюда и родился этот, достаточно большой и сложный, поток. Зато теперь работают буквально все опции и настройки доступные для этого устройства!
В этой цепочке используются следующие узлы, которых нет в стандартной поставке:
Этот подпоток входит в состав кода ниже и загружать отдельно его не надо!
Поток разбит на несколько модулей, плотно связанных между собой, что продемонстрировано на снимке экрана:
Настройка и запуск – при запуске сервера отвечает за загрузку в потоковый контекст сохраненных динамических настроек, если таковые есть и маршрутизацию потока, если нет файла с настройками. Помимо этого, позволяет изменять некоторые настройки в процессе работы потока. В узле «Ввод настроек»3) необходимо указать статические настройки, о которых ниже.
SSE канал мониторинга – устанавливает постоянную связь с сервером Home Connect для доставки Push-уведомлений, таких, как события, предупреждения и обновленные настройки устройства, и их маршрутизации. Также этот модуль отвечает за подготовку и отправку большинства писем. Он же генерирует MQTT-сообщения.
Получение данных с MQTT – получает сообщения MQTT, пришедшие с Apple Home, маршрутизирует их и отправляет на API-сервер Home Connect.
Запрос настроек устройства4) – периодически запрашивает у API текущие настройки устройства. Это необходимо для восстановления состояния устройства в приложении «Дом» при перезагрузке сервера, временном отсутствии подключения к Интернету и т.п.
Запрос состояния устройства – периодически запрашивает состояние устройства, т.е. в сети оно или нет и передает статус LWT в сообщении MQTT для корректного отображения статуса устройства в приложении «Дом» на iPhone.
Сохранение и отправка статистики – взаимодействует с модулем «SSE канал мониторинга», получая от него данные об открытиях и закрытиях дверок устройства, сохраняет их в базу данных SQLite5) и периодически отправляет на почту статистику.
Получение токена – делает только то, что указано в названии, т.е. при первом запуске потока запрашивает необходимые токены для последующего взаимодействия с API. Участвует в работе модуля «Обновление токена».
Запрос устройств – срабатывает каждый раз при завершении работы модуля «Получение токена» и, соответственно, «Обновление токена». Сохраняет в потоковый контекст полученные предыдущими модулями настройки, запрашивает с сервера список ассоциированных устройств, сохраняет его в контекст и записывает все настройки в файл. Может быть запущен вручную.
Обновление токена – периодически проверяет истечение токена доступа и, если надо, запускает соответствующую часть модуля «Получение токена». Также возможен ручной запуск для моментального получения нового токена.
Отправка писем – модуль, призванный немного разгрести бардак в остальных модулях. Сам ничего не делает.
Для работы потока необходимо выполнить нижеуказанные пункты6).
После этих манипуляций на почту придёт письмо со ссылкой на авторизацию приложения8).
Теперь, для появления аксессуаров в приложении «Дом», нужно добавить соответствующие настройки в конфигурацию «Homebridge». Профит!
Код для импорта можно скачать тут.
100% совместим с вышеуказанным холодильником. Другие устройства или, если в учетной записи более одного устройства, возможно, потребуют доработки потока, т.к. он не тестировался на совместимость в этих случаях! В теории, несколько устройств должны обрабатываться потоком корректно.
CREATE TABLE doorsstatus (_id INTEGER PRIMARY KEY AUTOINCREMENT, timestamp TEXT, status INTEGER)
, пример цепочки можно посмотреть тут.
Обсуждение