Apple homekit своими руками

«Привет, Siri. Включи обогреватели» — Интеграция умного дома на базе NooLite с Apple HomeKit

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

С выходом iOS 10, Apple представила пользователям приложение Дом — свою реализацию интерфейса управления умным домом через HomeKit. Меня весьма заинтересовала данная тема и, потратив несколько вечеров на изучение доступного материала, я решил реализовать интеграцию данного продукта с моей системой. В статье я подробно изложу процесс ее установки и настройки, а также поделюсь видео с результатами того, что получилось в итоге.

Содержание

Введение

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

Первой задачей был поиск готовых свободных решений в автоматизации домашнего оборудования с поддержкой HomeKit. Тут я сразу вспомнил несколько статей об open source продукте OpenHab. Почитав документацию и немного погуглив, действительно нашел аддон поддержки протокола HomeKit. На данный момент готовится к выходу вторая версия OpenHab и проводится активное бета тестирование. Последней доступной версией на тот момент была beta4, которую и решил использовать.

Процесс интеграции можно разделить на 4 этапа:

  1. Установка и настройка OpenHab
  2. Подключение NooLite к OpenHab
  3. Установка и настройка HomeKit для OpenHab
  4. Настройка приложения «Дом»

В итоге должна была получится следующая схема:

Установка и настройка OpenHab

У OpenHab 2 есть довольно подробная документация, где помимо основных платформ есть и туториал по установке на Raspberry Pi. Не буду копировать сюда все шаги, так как никаких проблем с установкой не возникло.

После установки web-интерфейс OpenHab был доступен в браузере по адресу: «> :8080.

Сразу были доступны:

  1. Basic UI, Classic UI — панели управления устройствами подключенными к OpenHab
  2. Rest API — собственно rest API
  3. Paper UI — интерфейс администирования OpenHab, через который его можно настроить

Пока Basic UI был пустой:

Подключение NooLite к OpenHab

Исходя из документации, для подключения нового устройства к OpenHab нужно было:

  1. Добавить его в items
  2. Добавить в sitemap, чтобы оно отображалось в OpenHab панели управления умным домом (Basic UI, Classic UI). Данный шаг можно пропустить, к работе с HomeKit он не относится, но с его помощью можно проверить, что OpenHab видит NooLite и правильно с ним работает.
  3. Добавить правила в rules, если нужна автоматизация или дополнительная логика обработки событий

Items

В items мы описываем конечные управляемые устройства, к примеру силовой блок NooLite и «учим» OpenHab работать с ним:

  • itemtype — тип устройства (Switch, Dimmer и т.д.)
  • itemname — имя устройства
  • labeltext — текстовое отображение. К примеру для датчика: «Температура [%.1f °C]», для блока просто «Обогреватели»
  • iconname — отображаемая иконка
  • group1 — группы
  • bindingconfig — то, как управлять этим устройством

Самое интересное здесь — это биндинг. То, каким образом будет осуществляться взаимодействие с управляемым устройством. Немного поискав информацию по работе OpenHab с NooLite, нашел готовый вариант. Но он был написан для работы с NooLite USB адаптерами PC и RX серий. В моей же системе управление силовыми блоками работало через ethernet-шлюз PR1132, поэтому нужно было искать другие варианты работы.

Посмотрев на доступные биндинги, нашел универсальные Http binding и Exec binding, с помощью которых можно было реализовать общение с NooLite:

  1. Http binding позволяет выполнять сетевой запрос при возникновении какого-либо события (включение/выключение, получение информации с датчика). Используя API в PR1132, можно было реализовать прямое общение OpenHab с NooLite.
  2. Exec binding — на событие выполняется какая-либо команда.

На тот момент я думал, что будет необходима дополнительная логика пре/пост обработки запросов к NooLite, поэтому выбрал второй вариант.

NooLite CLI

При разработке Telegram-бота, предыдущей реализации интерфейса общения с умным домом, я уже написал простенький класс-обертку над API вызовами к NooLite:

Читайте также:  При зарядке айфона нет значка молнии

Используя его, в несколько строк python кода я набросал NooLite CLI, с помощью которого появилась возможность управлять NooLite из командной строки:

Аргументы имеют такие же названия, как и в API ethernet-шлюза PR1132, единственное, что добавил — аргумент sns для получения информации с датчиков.

Теперь я мог описать все силовые блоки NooLite в items:

  • FFTemperature, FFHumidity — температура и влажность датчика первого этажа. OpenHab для получения информации каждые 5 секунд выполняет python noolite_cli.py с параметром -sns 0 и извлекает значения temperature из json ответа. Аналогично для влажности
  • Heaters1 — линия обогревателей первого этажа. Для включения (команда «ON») OpenHab должен выполнить python noolite_cli.py -ch 0 -cmd 2 , для выключения (команда «OFF») — python noolite_cli.py -ch 0 -cmd 0 .
  • Light1 — уличный прожектор, команды аналогичные обогревателям, только на втором канале -ch 2
  • RGBLight — светодиодная лента.

Rules

Управление светодиодной лентой уже не умещалось в одну команду, так как нужна была дополнительная логика для получения значений яркости каждого из RGB каналов. Поэтому обработку изменения состояния я описал в rules:

Я описал одно правило, которое срабатывало при изменении состояния RGBLight, где получал значения каждого канала (0-255), формировал строку python noolite_cli.py -ch 3 -cmd 6 -fmt 3 -d0 redValue -d1 greenValue -d2 blueValue и выполнял ее.

Sitemap

Теперь, когда OpenHab «видел» все мои силовые блоки и умел ими управлять, оставалось описать, как нужно их отображать в панели управления OpenHab (Basic UI, Classic UI). Делается это в sitemap:

После сохранения этого файла в Basic UI появились все устройства:

Также протестировал работу с умным домом через приложение OpenHab для iOS устройств, где тоже все отлично работало:

Установка и настройка HomeKit для OpenHab

Установку HomeKit аддона для OpenHab я произвел в пару кликов через Paper UI (интерфейс администрирования):

Для его корректной работы, следуя документации, для каждого элемента items прописал тип (Lighting, Switchable, CurrentTemperature, CurrentHumidity, Thermostat). После этого файл noolite.items имел следующий вид:

Затем в настройках аддона прописал локальный адрес устройства c OpenHab (в моем случае Raspberry Pi) и посмотрел pin-код сопряжения:

После этого с настройками OpenHab было закончено, и я приступил к конфигурированию умного дома на iphone в приложении «Дом».

Настройка приложения «Дом»


Первый запуск приложения «Дом»


Нажал «Добавить аксессуар»


iPhone увидел в локальной сети устройство с поддерждок HomeKit


Ввести код вручную


При добавлении указал pin-код из настроек HomeKit аддона


Все устройства

iPhone увидел все мои устройства, описанные в items. Далее я переименовал некоторые устройства, создал «комнаты» (первый этаж, второй этаж, улица) и раскидал все устройства по ним.

Здесь я хочу пояснить один момент. На скриншоте выше виден элемент «Температура на улице» (первый элемент с показателем 2 градуса), находящийся в комнате «Улица». Этот элемент реализован с использованием биндинга YahooWeather Binding — по сути просто прогноз погоды от yahoo для конкретного места.

К NooLite он не относится, поэтому я не затронул подробности его установки и настройки. Сделать это можно опять же через Paper UI, все подробно изложено в документации.

Удаленный доступ и автоматизация

В моей локальной сети находился Apple TV, который без дополнительных настроек сам определился как «Домашний центр». Как я позже выяснил, домашний центр необходим для удаленного доступа к умному дому и настройки автоматизации (действия по расписанию, действия на основе вашей геопозиции и т.д.). В качестве домашнего центра может выступать Apple TV 3 или 4 поколения (в 3 поколении работает только удаленный доступ, для автоматизации нужно 4 поколение) или iPad с iOS 10. Это устройство должно быть постоянно включено и находится в локальной сети умного дома.
Приятно порадовало то, что никаких дополнительных настроек с Apple TV я не делал. Все, что нужно — это войти в iCloud под своей учетной записью.

Результат

Нагляднее всего процесс работы можно показать с помощью видео. Ниже приведу несколько примеров работы приложения «Дом» и голосового управления через Siri:

В щитке 2 крайних правых места нанимают контакторы, управляемые силовыми блоками NooLite серии SL. Через них подключены линии обогревателей на первом и втором этаже дома. На видео слышно, как они щелкают при включении/выключении. К сожалению нет более наглядной индикации их работы.

В начале следующего видео я отключаюсь от дачной Wi-Fi сети и вся дальнейшая работа с умным домом происходит через мобильный 3G интернет.

Читайте также:  Как разбирали iphone 3gs

Заключение

Интеграция с HomeKit позволила добавить к умному дому удобный интерфейс управления с iOS устройств через приложение «Дом», а так же расширила его функционал:

  • полноценное удаленное управление всеми устройствами дома, вместо Telegram-бота
  • голосовое управление
  • автоматизацию на основе: времени суток, геолокации, показаний датчиков (например обнаружение движения)
  • удобное добавление пользователей к управлению умным домом через приглашения (нужно наличие iOS устройства и учетной записи Apple) с разграничением прав доступа

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

Работа над данной статьей позволила взглянуть на систему управления загородным домом со стороны и отметить те места, которые в ближайшем будущем буду дорабатывать:

  • для упрощения системы вместо использования ethernet-шлюза PR1132 и управления NooLite блоками через HTTP API можно использовать USB-адаптеры RX и PC серий и отдавать команды напрямую
  • насколько мне известно, в ближайшее время NooLite планирует выпустить новый USB-приемо-передающий адаптер и силовые блоки с обратной связью. Будет очень интересно попробовать их в деле.

Источник

Как подключить умные гаджеты Xiaomi с Apple HomeKit. Простое руководство

Система управления умным домом HomeKit развивается не так быстро, как хотелось бы. На данный момент найти поддерживающий её гаджеты сложновато, а ценник на них в разы дороже проверенных устройств с AliExpress.

Ходят слухи, что Xiaomi в ближайшем будущем предоставит возможность подключать свои устройства к HomeKit. Пока неясно, как это будет реализовано, насколько просто будет происходить подключение, какие хабы и шлюзы для этого понадобятся.

Прямо сейчас есть относительно несложный способ подружить гаджеты Xiaomi (и не только) с системой HomeKit и приложением Дом на iOS. Об этом способе и поговорим ниже.

HomeBridge – это специальная служба, позволяющая «подружить» всевозможные гаджеты с HomeKit, которые изначально не поддерживают систему умного дома от Apple.

Сервис HomeBridge должен быть постоянно запущен на любом компьютере в домашней сети, чтобы передавать сигналы с техники Apple на неподдерживаемую умную электронику.

Если дома есть постоянно работающий компьютер или медиасервер, можно развернуть HomeBridge на нем, если же такого устройства нет, можно обзавестись простой «малинкой» (одноплатным компьютером Raspberry Pi) и запустить сервис на нем.

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

Как настроить HomeBridge на macOS

1. Скачиваем и устанавливаем необходимые для работы сервиса компоненты:

2. Устанавливаем HomeBrigde при помощи команды в терминале:

sudo npm install -g —unsafe-perm homebridge

3. Для запуска HomeBridge используем команду:

Как настроить HomeBridge на Windows

Рекомендуем производить установку и настройку HomeBridge в той учетной записи, в которой в дальнейшем и будет работать сервис. Некоторые компоненты будут установлены таким образом, что доступа к ним может не быть у других пользователей Windows.

1. Устанавливаем необходимые для работы сервиса компоненты:

  • Bonjour SDK для Windows (потребуется подтвердить бесплатное участие в программе Apple Developer);
  • OpenSSL 64-bit;
  • Nodejs для Windows (на последнем шаге следует выбрать место сохранения DLL OpenSSL. Указываем «Каталог двоичных файлов OpenSSL»).

2. Запускаем командную строку от имени админимтратора (именно командную строку cmd, а не облегченный аналог Windows PowerShell).

3. Вводим команду для загрузки и установки необходимых модулей:

4. Производим установку HomeBridge командой:

5. После окончания установки запускаем Homebridge в командной строке:

Что делать дальше

Теперь для работы сервиса нужно повторять последний пункт после перезагрузки компьютера и держать запущенной командную строку/терминал с работающим HomeBridge.

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

После того, как HomeBridge настроен и запущен, следует перейти к настройке сервиса и добавлению дополнительных модулей.

В теории большую часть умных гаджетов можно подружить с HomeKit при помощи HomeBridge. Нужно лишь загрузить и настроить соответствующие плагины.

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

Читайте также:  От чего сгибается айфон

Файл с конфигурацией HomeBridge config.json должен располагаться по пути:

%userprofile%\.homebridge для Windows

/usr/local/lib/node_modules/homebridge для macOS

Его придется создать вручную при помощи любого текстового редактора и добавлять все части из примеров с GitHub для запуска соответствующих плагинов и дополнений.

Сам HomeBridge будет восприниматься HomeKit как отдельный независимый блок. Для его подключения потребуется добавить устройство в приложении Дом на iOS, отсканировав выводимый в командной строке QR-код либо введя отображаемый там же номер.

Когда девайс появится в приложении Дом, установку и настройку HomeBridge можно считать завершенной.

Наконец-то, подключаем Xiaomi к HomeKit

Если вы проделали описанное выше, дальше проблем практически не будет.

Установка различных гаджетов Xiaomi происходит по одному и тому же алгоритму:

1. Находим страницу с плагином для нужного устройства на GitHub.

Вот, например, плагин для умной розетки Xiaomi.

2. Устанавливаем плагин через командную строку или терминал.

В нашем примере следует использовать команду:

3. Вносим соответствующий код в файл конфигурации.

В приведенном примере плагин поддерживает сразу несколько девайсов. Умную розетку разных поколений и несколько сетевых фильтров.

Для нашей розетки нужен такой кусок кода конфигурации:

«platforms»: [
<
«platform»: «MiOutletPlatform»,
«deviceCfgs»: [
<
«type»: «MiPlugBase»,
«ip»: «192.168.31.149»,
«token»: «XXXXXXXXXXXXXXXXXXXXXXX»,
«outletName»: «Розетка Xiaomi»,
«outletDisable»: false,
«temperatureName»: «Температура розетки»,
«temperatureDisable»: true,
«switchLEDName»: «Диод на розетке»,
«switchLEDDisable»: true
>
]
]

Определить IP-адрес розетки будет несложно, в этом поможет приложение или веб-интерфейс используемого дома роутера. Как видите, через HomeBridge получится даже отдельно управлять светящимся диодом на розетке и определять температуру внутри устройства.

При необходимости переключатели добавляются и убираются из HomeKit изменением параметров true/false.

Сложнее всего в приведенном примере будет определить так называемый токен. Это уникальный идентификатор конкретно взятого устройства.

Подробно останавливаться на этом не буду, для получения токена существует множество способов, в зависимости от наличия тех или иных девайсов. Например, его можно запросто получить через модифицированное приложение Mi Home для Android, а, если нужного смартфона под рукой нет, всегда придет на помощь виртуальная машина.

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

После перезапуска службы HomeBridge девайсы начинают отображаться в приложении Дом, а управлять ими становится так же просто, как и гаджетами с поддержкой HomeKit из коробки.

Как установить веб-интерфейс

Управление через командную строку понравится не всем. Намного удобнее добавить простой, но наглядный веб-интерфейс и производить все манипуляции через него.

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

Для установки делаем следующее:

Это далеко не единственный вариант добавления веб-интерфейса для HomeBridge. Можете остановиться на нем или поискать подобные от других разработчиков. Возможности в большинстве случаев будут идентичными, отличается лишь внешний вид модуля.

2. Запускаем командную строку или терминал и используем команду для установки модуля:

npm install -g —unsafe-perm homebridge-config-ui-x

3. В файл конфигурации HomeBridge следует добавить такой код:

4. После успешной установки перезапускаем HomeBridge и пробуем перейти на страницу в браузере http://localhost:8080.

Для авторизации используем логин и пароль «admin». В дальнейшем рекомендуем сменить учетные данные.

5. Чтобы в веб-интерфейсе отображался раздел для управления подключенными гаджетами, следует запускать сервис с параметром «-I».

Так команда для запуска HomeBridge будет выглядеть следующим образом:

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

Что в итоге

Теперь вы знаете, как подключить практически любой умный гаджет к HomeKit и управлять им с iPhone или iPad. Можно даже привлекать ассистент Siri.

Все это добавляет весомое преимущество гаджетам Xiaomi по сравнению с HomeKit-ready девайсами. Так определить, какая розетка лучше, будет сложнее.

Сервис HomeBridge может работать на постоянно запущенном компьютере, а в идеале для него приобретается миниатюрный Raspberry PI, который отлично подходит для подобных целей. Если интересно, расскажу подробно о том, как настраивал свою «малинку» для работы с HomeKit.

Источник

Оцените статью