Нет, это статья не про удаленное кипячение воды…

В одной из наших статей мы уже говорили про Node-RED, но уже не первый раз получали запрос о том, чтобы сделать это еще раз, но более доступным языком 🙂 Попробуем.

HomeKit в Home Assistant через Node-RED

Вообще Node-RED был предназначен своими авторами IBM для упрощения программирования. Т.е. Node-RED позволяет вместо чтения множества книг типа «С++ для чайников» вернуться в 5-ый класс на урок информатики и изобразить все наши алгоритмы прямо в браузере. И это будет работать!

Начнем с базиса

Запомним для начала, что Node-RED, наверное, самый гибкий инструмент, который не потребует в большинстве случаев знания какого-либо языка программирования (но знаний JavaScript будет большим плюсом — кстати это наверное самый просто и быстроизучаемый язык).

Исходя из этого, нам нужно знать главные несколько правил: все алгоритмы, как и на уроках информатики создаются на основе разного вида «кубиков». Только если при рисовании алгоритмов на информатики у нас были квадратики, ромбики, кружочки и т.д., то здесь «кубики» различаются цветом.

Напомним, как выглядит обычный визуализированный алгоритм.

А вот так выглядят «кубики» из Node-RED.

Урок информатики

А вот так выглядит описанный выше алгоритм с помощью этих кубиков

Давайте теперь разберем этот пример:

  1. Синий блок «Начало» — это наш блок с входными данными. В нашем примере это блок с помощью которого вы можете передать любые статичные данные. Чаще всего вы будете использовать этот блок, чтобы передать в ваш алгоритм какие-нибудь статичные данные, допустим, для проверки нарисованного вами алгоритма.
  2. Оранжевые блоки в нашем алгоритме выполняют некоторые действия. Допустим вы получили от вашего устройства значение «1», а в homekit вы хотите, чтобы это означало «включено», как раз с помощью таких блоков вы и пишите «преврати значение 1 в значение включено»
  3. Желтый блок — это условие. Один из наиболее используемых блоков в создании своего homekit устройства или автоматизаций. Аналогом этого блока можно придумать выражение «если так, то сделай так, а если вот так, то сделай вот так».
  4. Зеленый блок — это выходные данные. В данном случае это блок дебага. Опять же он используется для того, чтобы убедиться, что по итогам выполненного алгоритма вы получили то, что хотели.

Те «кубики», которые я описал выше — это стандартный набор блоков, доступный при базовой установки. Но для того, чтобы интегрировать наш Node-RED с вашими системами умного дома, вам потребуются кастомные плагины («паллеты»). Допустим для HomeKit используется плагин homekit-bridged, а для связи с home-assistant — этот.

На примере

Давайте разберем самый простой пример, который в отдельной статье распишем более подробно.

Как и в предыдущем алгоритме мы видим здесь три блока: входные данные, блок с необходимыми манипуляциями, блок с выходными данными.

Первый блок. Это блок Home Assistant, который настроен на прием информации от датчика движения Xiaomi. Как только датчик регистрирует движение, он передает об этом информацию. Но т.к. Home Assistant отдает информацию в одном формате, а HomeKit должен принимать его в другом, то нам нужен по середине оранжевый блок.

Второй блок. В этом блоке мы приводим полученную информацию от Home Assistant в понятную для HomeKit. Пример: от Home Assistant мы получаем просто булевое значение «true» или «false«, а в HomeKit передаем {«MotionDetected»: «true»} или {«MotionDetected»: «false»}.

Третий блок. Как только HomeKit получает информацию от оранжевого блока в нужном нам формате он отображает состояние датчика «сработал» или «нет».

Вместо итога

Вот примерно так это и выглядит. И так необходимо сделать каждое ваше устройство. Именно поэтому Node-RED это интересно, но о-о-о-о-очень муторно 🙂

Но при этом вы получаете, наверное, самый гибкий инструмент для автоматизации, который доступен каждому — нужно только немного попотеть :).

А если же вы готовы к бою, то приглашаю в наши статьи про Node-RED: раз, двась.

Author

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

Write A Comment