Настройка Apple HomeKit на контроллере Wiren Board через Node-RED

Материал из Wiren Board
Список устройств в приложении Home

Описание

HomeKit — это программный фреймворк для умных устройств от Apple. Все добавленные устройства будут видны в приложении Home, что позволит вам управлять ими удалённо со своего iPhone и других устройств Apple.

В инструкции используется модуль node-red-contrib-homekit-bridged, поддержку которого осуществляет сообщество Node-RED.

Подготовка

Для настройки моста Apple HomeKit на контроллере Wiren Board с помощью Node-RED нам понадобится:

  • установленный Node-RED,
  • настроенный модуль WB Nodes,
  • модуль node-red-contrib-homekit-bridged — его мы установим ниже,
  • аккаунт iCloud и устройство Apple с приложением Home.

Для настройки контроллере должен быть доступ к интернету, чтобы установить модуль для Node-RED.

Настройка делается через встроенный в Node-Red веб-интерфейс, который доступен по адресу http://wb-ip-address:1880, например, http://192.168.42.1:1880.

В примерах мы будем создавать флоу (flows) — это блок-схемы процесса.

Установка модуля

Установка модуля node-red-contrib-homekit-bridged

Чтобы Node-RED мог работать с HomeKit, установите модуль node-red-contrib-homekit-bridged:

  1. Зайдите в веб-интерфейс Node-RED.
  2. В правом верхнем углу вызовите меню.
  3. В открывшемся окне выберите вкладку Управление палитрой (Manager palette).
  4. Перейдите на вкладку Установка (Install), введите в поле поиска homekit-bridged и нажмите на клавиатуре Enter.
  5. Установите пакет с названием node-red-contrib-homekit-bridged.
  6. Закройте окно с настройками. Установка модуля завершена.

После установки, в левой панели появится секция alice.

Добавление устройства

Как это работает

Добавление новых устройств в общем случае выглядит так:

  1. Описываем на контроллере виртуальное устройство HomeKit.
  2. Прописываем логику, которое это устройство реализует, например, включение зуммера.
  3. Публикуем флоу кнопкой Deploy.
  4. Если мост уже добавлен в приложение Home, то устройство появится в нём автоматически.

В примерах ниже мы настроим мост, а также добавим сенсор температуры процессора и переключатель, который будет управлять зуммером контроллера.

Настройка моста

Мост настраивается один раз и потом используется во всех устройствах:

  1. Перетяните в рабочую область ноду Service, которая находится слева в группе Apple HomeKit.
  2. Дважды кликните на ней — откроется окно Edit service node, где нажмите на карандашик в поле Bridge.
  3. Откроется окно Add new homekit-bridge config node, где:
    • укажите имя в поле Name, например, wb-demo
    • и запомните пин-код из поля Pin Code.
  4. Чтобы сохранить настройки, нажмите кнопку Add.
  5. В окне Edit service node нажмите кнопку Cancel и удалите ноду с рабочей области.

Мост настроен, дальше можно добавлять устройства. В процессе нужно учесть два момента:

  1. устройство HomeKit на вход принимает и отдаёт объект, который содержит имя характеристики и значение;
  2. WB нода in отдаёт, а нода out принимает строку.

Чтобы синхронизировать разные типы данных, мы будем создавать конвертеры значений.

Сенсор

В примере мы настроим сенсор температуры HomeKit, который будет выводить температуру процессора.

Нода wb-in

Добавим ноду WB, которая будет выдавать CPU Temperature:

  1. Перетяните в рабочую область ноду in, которая находится слева в группе Wiren Board.
  2. Дважды кликните на ней — откроется окно Edit in node, где укажите:
    • Name — имя, например, CPU Temp.
    • Server — MQTT-сервер, связь с которым настраивается при установке модуля WB Nodes.
    • Channel — выберите в открывшемся списке mqtt-топик hwmon/CPU Temperature. Если список пуст, нажмите кнопку Refresh Device List.
  3. Чтобы сохранить, нажмите кнопку Done.
Конвертер to Float

Настроим конвертер, который преобразует значение CPU Temperature в объект HomeKit:

  1. Перетяните в рабочую область ноду function, которая находится слева в группе function.
  2. Дважды кликните на ней — откроется окно Edit function node и впишите в поле On Message код:
    msg.payload = {'CurrentTemperature': parseFloat(msg.payload)};
    
    return msg;
    
  3. Укажите имя в поле Name, например, to Float.
  4. Нажмите кнопку Done. Конвертер готов.

CurrentTemperature — это имя характеристики, взято из документации Apple HomeKit.

Настройка устройства HomeKit

Добавим ноду HomeKit типа Service:

  1. Перетяните в рабочую область ноду service, которая находится слева в группе Apple HomeKit.
  2. Дважды кликните на ней — откроется окно Edit service node, где:
    • в поле Service выберите TemperatureSensor,
    • в поле Bridge выберите мост, который мы создавали ранее — wb-demo.
    • укажите имя в поле Name, например, CPU Temp.
  3. Нажмите кнопку Done.

У нас получилось три ноды, соедините их между собой: CPU Temp (wb-in) → to Float → CPU Temp (HK).

Общий вид флоу

Чтобы изменения вступили в силу, нажмите справа вверху страницы кнопку Deploy.

Устройство с управлением

Теперь настроим переключатель HomeKit, который будет управлять устройством Buzzer.

Нода wb-in

Добавим ноду WB, которая будет выдавать состояние Buzzer:

  1. Перетяните в рабочую область ноду in, которая находится слева в группе Wiren Board.
  2. Дважды кликните на ней — откроется окно Edit in node, где укажите:
    • Name — имя, например, Buzzer.
    • Server — MQTT-сервер, связь с которым настраивается при установке модуля WB Nodes.
    • Channel — выберите в открывшемся списке mqtt-топик buzzer/enabled. Если список пуст, нажмите кнопку Refresh Device List.
  3. Чтобы сохранить, нажмите кнопку Done.
Конвертер true/false

Настроим конвертер, который преобразует состояние Buzzer в объект HomeKit:

  1. Перетяните в рабочую область ноду function, которая находится слева в группе function.
  2. Дважды кликните на ней — откроется окно Edit function node и впишите в поле On Message код:
    msg.payload = (msg.payload == '1') ? {'On':true} : {'On':false};
    
    return msg
    
  3. Укажите имя в поле Name, например, true/false.
  4. Нажмите кнопку Done. Конвертер готов.
Настройка устройства HomeKit

Добавим ноду HomeKit типа Service:

  1. Перетяните в рабочую область ноду service, которая находится слева в группе Apple HomeKit.
  2. Дважды кликните на ней — откроется окно Edit service node, где:
    • в поле Service выберите Switch,
    • в поле Bridge выберите мост, который мы создавали ранее — wb-demo.
    • укажите имя в поле Name, например, Buzzer.
  3. Нажмите кнопку Done.
Конвертер 1/0

Настроим конвертер, который преобразует объект HomeKit в состояние Buzzer:

  1. Перетяните в рабочую область ноду function, которая находится слева в группе function.
  2. Дважды кликните на ней — откроется окно Edit function node и впишите в поле On Message код:
    msg.payload = (msg.payload.On) ? '1' : '0';
    
    return msg
    
  3. Укажите имя в поле Name, например, 1/0.
  4. Нажмите кнопку Done. Конвертер готов.
Нода wb-out

Добавим ещё одну ноду WB, которая будет от устанавливать состояние Buzzer:

  1. Перетяните в рабочую область ноду out, которая находится слева в группе Wiren Board.
  2. Дважды кликните на ней — откроется окно Edit out node, где укажите:
    • Name — имя, например, Buzzer.
    • Server — MQTT-сервер, связь с которым настраивается при установке модуля WB Nodes.
    • Channel — выберите в открывшемся списке mqtt-топик buzzer/enabled. Если список пуст, нажмите кнопку Refresh Device List.
    • Command — выберите /on.
    • Payload — должно быть выбрано msg.payload
  3. Чтобы сохранить, нажмите кнопку Done.

У нас получилось пять нод, соедините их между собой: Buzzer (wb-in) → true/false → Buzzer (HK) → 1/0 → Buzzer (wb-out).

Общий вид флоу

Чтобы изменения вступили в силу, нажмите справа вверху страницы кнопку Deploy.

Настройка в устройстве Apple

Теперь нам нужно добавить созданный выше мост в экосистему Apple HomeKit и распределить созданные устройства по комнатам. В будущем, при добавлении устройств, они будут автоматически появляться в приложении Home.

Чтобы упростить настройку, подключите контроллер Wiren Board и ваш iPhone к одной Wi-Fi сети.

Мы будем использовать iPhone и стандартное приложение Home:

  1. Откройте приложение Home.
  2. Выберите Add Accessory.
  3. Нажмите More options…
  4. Если контроллер и iPhone в одной Wi-Fi сети, то в списке появится мост, который мы настроили выше — wb-demo.
  5. Выберите наш мост из списка.
  6. На сообщение о том, что аксессуар не сертифицирован, ответьте Add Anyway.
  7. Введите код, который мы сохранили при добавлени моста.
  8. Выберите для нашего моста комнату, например, Breadroom.
  9. Укажите имя моста, или оставьте по умолчанию.
  10. Нажмите Continue и дальше для каждого устройтства укажите комнату.

Настройка завершена.

Полезные ссылки