О Z-Wave
Дано: центр управления системами Z-Wave — контроллер Vera, OS X El Capitan или macOS Sierra, iOS 8.1 и выше.
Задача: заставить Siri управлять умным домом.
Странно что Vera ничего не знает про HomeKit, хотя, казалось бы... потребуется некий проксирующий элемент, чтобы эмулировать API яблочного хозяйства.
В качестве моста возьмём NodeJS сервер Homebridge с плагином VeraLink.
Ok...
Запускаем Терминал.app и начинаем городить огород :)
Сейчас будет гайд для «начинающих».
Cкачиваем текущую версию Node.js (на данный момент — 6.2.2),
$ cd ~$ curl -o ~/Downloads/node-v6.2.2.pkg https://nodejs.org/dist/v6.2.2/node-v6.2.2.pkg
устанавливаем,
$ sudo installer -pkg ~/Downloads/node-v6.2.2.pkg -target /
$ node -v
если в ответ получили: «v6.2.2», — значит всё хорошо, двигаемся дальше.
Через нодовский менеджер пакетов ставим Homebridge,
$ sudo npm install -g homebridge
плагин VeraLink,
$ sudo npm install -g homebridge-vera
создаём конфигурационный файл для Homebridge
$ mkdir ~/.homebridge$ touch ~/.homebridge/config.json
и добавляем в него
$ nano ~/.homebridge/config.json
примерно такое содержание:
{"bridge": {
"name": "Homebridge",
"pin": "000-00-000",
"username": "CC:22:3D:E3:CE:30"
},
"platforms": [
{
"platform": "Vera",
"name": "Vera",
"veraIP": "192.168.1.2",
"includesensor": true,
"ignorerooms": [],
"securitypoll": 2000,
"dimmertest": true
}
]
}
• veraIP: текущий ip вашей Веры
• includesensor, dimmertest: со значением «true» разрешает системе работать с сенсорами и диммерами.
• pincode: Глобальный пин-код для всех девайсов, должен иметь формат ###-##-### и не должен иметь вид 111-11-111 или 123-45-678.
• securitypoll: Время в миллисекундах для обновления ваших сенсоров.
Проверяем...
$ homebridge
Если нет никаких ошибок, в ответ должны увидеть пин-код, список комнат и список девайсов, которые прописаны в контроллере.
Запоминаем этот прямоугольник, он нам пригодится позже.
Ок. Глушим сервер — CTRL+C.
Осталось добавить всё это дело в «автозагрузку».
Создаём плист
$ nano ~/Library/LaunchAgents/com.homebridge.server.plist
с примерно таким содержанием:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>com.homebridge.server</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/homebridge</string>
<string>-I</string>
</array>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/usr/local/bin/:$PATH</string>
</dict>
</dict></plist>
Теперь сервер будет подниматься автоматически при условии, что текущий пользователь залогинится после ребута системы.
Back-end готов. Запускаем Homebridge...
$ launchctl load ~/Library/LaunchAgents/com.homebridge.server.plist
Чтобы Siri начала мониторить сеть на предмет умных девайсов, в iOS 10 достаточно добавить устройство Homebridge в приложении Home. Открываем приложение и нажимаем «Добавить аксессуар» (плюсик в верхнем правом углу).
Когда мы находим наш сервер, надо его добавить, как устройство. Для этого нам и пригодится пин-код, который мы видели выше. Программа ХомеКит предложит нам его просто напросто отсканировать, или ввести вручную.
После чего подтянется всё, что привязано к контроллеру Vera. Для iOS 8 и 9 нужно скачать из App Store любой HomeKit Hub, например, Insteon+ и добавить устройство Homebridge через него, по вышеуказанной схеме.
В итоге получаем очень даже симпатичное приложение с возможностью указывать Тег для Сири, то есть то, с помощью какой команды мы будем управлять конкретным устройством.
Для русской Siri имена комнат, устройств, сцен должны быть прописаны кириллицей, иначе, не поймёт.
Всем спасибо за внимание. Статья написана по моей просьбе Дмитрием Дефом, программистом от Бога, который и помог мне в установке всего этого безобразия с правками и дополнениями вашего скромного слуги Johny81.
Дополнение и редактирование статьи - Евгений Виноградов