Инструменты пользователя

Инструменты сайта


iot:software:node-red:flows:home_connect_api

Управление холодильником BOSCH с Node-RED

Когда пришла пора менять холодильник, «умный» я даже не рассматривал, т.к. то, что мне попадалось на локальном рынке, стоило прилично дороже «тупых» аналогов и, с точки зрения интеграции, было совершенно отвратительным – ни LG, ни Samsung, судя по Интернету, невозможно нормально интегрировать в Apple Home – для них есть свои приложения и точка. Такой сценарий я не рассматривал, ибо вся моя техника, которая имеет Wi-Fi, так или иначе заведена в приложение «Дом» на всех семейных айФонах.

Долго я не решался купить новый «гроб» – какие-то они все откровенно стрёмные1), ни мне, ни жене ничего не нравилось хоть ты тресни! Выходить из бюджета тоже не хотелось… Но, когда прижало, когда старый холодильник совсем уже стал отказываться работать, пришлось в серьез взяться за выбор и, плюнув на бюджет, пойти смотреть глубже…

Ну, и нашли – BOSCH Serie | 6 (KGN39AI32R) – прилично выше планируемого бюджета, зато он внезапно понравился нам обоим. А когда я нагуглил, что для него есть плагин к Homebridge… вопрос о покупке был снят с повестки дня окончательно! m(

Но после покупки этого чудесного чуда техники выяснилось, что плагин-то есть, но для полноценной его работы нужен «домашний центр», без которого он позволяет управлять только включением/выключением функций, а эвенты, алармы и настройки температуры, уж извините2)!

Однако, в процессе настройки этого плагина, до меня дошло – если есть плагин, то, вероятно, есть и соответствующее API, а если есть API, почему бы мне его не изучить и не использовать?!

Отсюда и родился этот, достаточно большой и сложный, поток. 8-) Зато теперь работают буквально все опции и настройки доступные для этого устройства!

Нестандартные узлы

В этой цепочке используются следующие узлы, которых нет в стандартной поставке:

Дополнительные подпотоки

Этот подпоток входит в состав кода ниже и загружать отдельно его не надо!

Описание работы потока

Поток разбит на несколько модулей, плотно связанных между собой, что продемонстрировано на снимке экрана:

Настройка и запуск – при запуске сервера отвечает за загрузку в потоковый контекст сохраненных динамических настроек, если таковые есть и маршрутизацию потока, если нет файла с настройками. Помимо этого, позволяет изменять некоторые настройки в процессе работы потока. В узле «Ввод настроек»3) необходимо указать статические настройки, о которых ниже.

SSE канал мониторинга – устанавливает постоянную связь с сервером Home Connect для доставки Push-уведомлений, таких, как события, предупреждения и обновленные настройки устройства, и их маршрутизации. Также этот модуль отвечает за подготовку и отправку большинства писем. Он же генерирует MQTT-сообщения.

Получение данных с MQTT – получает сообщения MQTT, пришедшие с Apple Home, маршрутизирует их и отправляет на API-сервер Home Connect.

Запрос настроек устройства4) – периодически запрашивает у API текущие настройки устройства. Это необходимо для восстановления состояния устройства в приложении «Дом» при перезагрузке сервера, временном отсутствии подключения к Интернету и т.п.

Запрос состояния устройства – периодически запрашивает состояние устройства, т.е. в сети оно или нет и передает статус LWT в сообщении MQTT для корректного отображения статуса устройства в приложении «Дом» на iPhone.

Сохранение и отправка статистики – взаимодействует с модулем «SSE канал мониторинга», получая от него данные об открытиях и закрытиях дверок устройства, сохраняет их в базу данных SQLite5) и периодически отправляет на почту статистику.

Получение токена – делает только то, что указано в названии, т.е. при первом запуске потока запрашивает необходимые токены для последующего взаимодействия с API. Участвует в работе модуля «Обновление токена».

Запрос устройств – срабатывает каждый раз при завершении работы модуля «Получение токена» и, соответственно, «Обновление токена». Сохраняет в потоковый контекст полученные предыдущими модулями настройки, запрашивает с сервера список ассоциированных устройств, сохраняет его в контекст и записывает все настройки в файл. Может быть запущен вручную.

Обновление токена – периодически проверяет истечение токена доступа и, если надо, запускает соответствующую часть модуля «Получение токена». Также возможен ручной запуск для моментального получения нового токена.

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

API Home Connect

Для работы потока необходимо выполнить нижеуказанные пункты6).

  1. Скачать приложение «Home Connect», зарегистрироваться и добавить устройство;
  2. зарегистрироваться с тем же электронным адресом7) в программе для разработчиков Home Connect;
  3. зарегистрировать новое приложение, установив параметр «OAuth Flow» в значение «Device Flow», а в пункте «Home Connect User Account for Testing» введя указанный в первом пункте электронный адрес;
  4. скопировать и вставить в узел «Ввод настроек» сгенерированные «Client ID» и «Client Secret»;
  5. развернуть поток и запустить узел «Автоматический запуск потока».

После этих манипуляций на почту придёт письмо со ссылкой на авторизацию приложения8).

Homebridge

Теперь, для появления аксессуаров в приложении «Дом», нужно добавить соответствующие настройки в конфигурацию «Homebridge». Профит!

Код для загрузки

Код для импорта можно скачать тут.

Совместимость

100% совместим с вышеуказанным холодильником. Другие устройства или, если в учетной записи более одного устройства, возможно, потребуют доработки потока, т.к. он не тестировался на совместимость в этих случаях! В теории, несколько устройств должны обрабатываться потоком корректно.

Как это выглядит и работает в живую


Дисклеймер

  • Использование материалов данной базы знаний разрешено на условиях лицензии, указанной внизу каждой страницы! При использовании материалов активная гиперссылка на соответствующую страницу данной базы знаний обязательна!
  • Автор не несет и не может нести какую либо ответственность за последствия использования материалов, размещенных в данной базе знаний. Все материалы предоставляются по принципу «как есть». Используйте их исключительно на свой страх и риск.
  • Все высказывания, мысли или идеи автора, размещенные в материалах данной базе знаний, являются исключительно его личным субъективным мнением и могут не совпадать с мнением читателей!
  • При размещении ссылок в данной базе знаний на интернет-страницы третьих лиц автор не несет ответственности за их техническую функциональность (особенно отсутствие вирусов) и содержание! При обнаружении таких ссылок, можно и желательно сообщить о них в комментариях к соответствующей статье.
1)
Я вообще хочу холодильник Side-by-Side! Но, увы, в этой кухне он не поместится… :-(
2)
Не знаю точно, что из этого списка будет работать с домашним центром, а что так и не заработает…
3)
Описание настроек смотрите в свойствах этого узла.
4)
Обратите особое внимание на ограничения использования API! При настройках по умолчанию, данный поток генерирует около 500 запросов в сутки.
5)
Для работы необходимо вручную создать таблицу, выполнив запрос к БД CREATE TABLE doorsstatus (_id INTEGER PRIMARY KEY AUTOINCREMENT, timestamp TEXT, status INTEGER), пример цепочки можно посмотреть тут.
6)
Как рассказывает Интернет, самым сложным обычно является третья часть первого пункта… У меня он тоже вызвал некоторые затруднения. Далее все просто.
7)
Скорее всего, это не обязательно, но… зачем усложнять жизнь?
8)
Если письма нет, проверьте настройки подпотока «Отправка почты».

Обсуждение

Ваш комментарий:
B J R​ N P O U T B B L W Q V L A
 
Последнее изменение: 2022/02/16 21:20 — Николай Солошин