Как использовать Siri, чтобы установить сцену для романтики

Вчера мы показали вам, как создать DIY Wi-Fi свет

это можно контролировать с помощью Сири; сегодня мы собираемся использовать эти знания, чтобы заставить Siri работать и со звуковой системой Sonos, а затем соединить все это в романтической сцене.

Проверьте конечный результат:

Видео выше не было подделано или поставлено — все возможно, используя Siri, и руководство ниже. Не требуется джейлбрейк, хотя есть некоторые программы, для которых я предоставил код.

Вещи, которые вам понадобятся:

  • Raspberry Pi
  • устройство iOS
  • Siri-совместимое цветное освещение, такое как Philips Hue с концентратором 2-го поколения или наш DIY Wi-Fi Light
  • Sonos (или другое устройство воспроизведения с HTTP API)
  • (Опционально) NodeMCU / ESP8266, реле и розетки; или коммерческий аксессуар для розетки HomeKit

Почему это так сложно?

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

Начните, следуя нашему учебнику по Wi-Fi Light

потому что это станет основой всего остального. На самом деле, если у вас еще нет системы освещения Philips Hue, вы можете пойти дальше и создать светильник Wi-Fi, описанный в этом руководстве.

Даже если у вас есть система Hue, продолжайте и следуйте руководству, потому что вам нужно будет создать поддельные аксессуары HomeKit для всего остального (код приведен ниже). Продолжая это руководство, я собираюсь предположить, что у вас уже запущен сервер HAP-NodeJS, и вы успешно добавили фальшивый индикатор и протестировали сервер, даже если он не подключен к действительному элементу «Сделай сам» аппаратное обеспечение.

Сделать плейлист

Создайте новый плейлист Sonos под названием «Romantic». Это не обязательно должно быть одно и то же имя, но вам придется настроить дополнительные скрипты позже, если вы его измените. Я добавил несколько треков Marvin Gaye и Sade к своим. Гладкий; плавный.

Затем, на Raspberry Pi, на котором запущен HAB-NodeJS (если вы не знаете, о чем я говорю, вы не читали учебник по освещению Wi-Fi. Сначала сделайте это), перейдите в свой домашний каталог и введите следующее для установки HTTP API для Sonos. Это даст нам веб-URL, который мы можем пропинговать, чтобы вызвать определенные действия на Sonos.

git clone https://github.com/jishi/node-sonos-http-api.git sonos
cd sonos
npm install production
npm install basic-auth sonos-discovery require-fu request-promise node-static async
npm start

Если вы видите сообщение о том, что такой-то модуль не найден, просто сделайте другой установка npm и имя модуля, затем попробуйте начало вечера снова. Возможно, у меня уже были установлены глобально модули из других проектов, и вам может потребоваться установить больше. Надеюсь, вы увидите что-то вроде этого:

sonos-http-api работает

Поздравляем, теперь у вас есть простой HTTP API, который вы можете использовать для запуска вашего Sonos. Читайте документацию для полного списка команд, но формат, который нас больше всего интересует, таков:

http://[SERVER IP]:5005/[ROOM NAME]/[ACTION]

или как конкретный пример:

http://192.168.1.99:5005/master%20bedroom/playlist/romantic

Дело, похоже, не имеет значения. % 20 является URL-кодировкой пробела, но вы также должны иметь возможность ввести фактический пробел, и ваш браузер автоматически преобразует его. Приведенная выше команда просто запускает романтический плейлист на устройстве в главной спальне. Использовать Пауза Команда остановить это:

http://192.168.1.99:5005/master%20bedroom/pause

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

http://192.168.1.99:5005/master%20bedroom/say/make%20use%20of%20is%20awesome/en-gb

Когда вы сделаете это в первый раз, вы получите сообщение о необходимости регистрации на ключ API на VoiceRSS.org (до 350 запросов в день бесплатны). Когда вы закончите с этим, введите:

nano settings.json

и вставьте ключ в следующий пример:

{
"voicerss":"YOURAPIKEY"
}

Перезагрузите сервер и снова пропингуйте URL. Через несколько секунд вы должны услышать восхитительный английский голос. Вы можете изменить конец URL на en-us, если предпочитаете американский голос. Ухоженная! Абсолютно не имеет отношения к этому проекту, но все равно аккуратно!

Наконец, давайте снова запустим этот сервер при перезапуске Pi:

sudo nano /etc/rc.local

Добавьте строку перед выход 0:

sudo node /home/pi/sonos/server.js < /dev/null &

CTRL-X, Y для сохранения. Вы можете видеть, что я запускаю это вместе с OpenHAB, детектором присутствия Bluetooth для дома и сервером HAP-NodeJS HomeKit - он также должен быть запущен, если вы уже выполнили предварительное учебное руководство по освещению Wi-Fi.

добавить в rc-localСоздание устройства HomeKit для Sonos

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

Перейдите к вашему HAP-NodeJS / сначала каталог, и установите модуль «запрос».

sudo npm install request

Затем спрыгните на аксессуары / каталог и возьмите мой готовый прибор с помощью следующей простой команды:

wget https://gist.githubusercontent.com/jamesabruce/72bd250fbcf054acaa25/raw/8272d4b9a4ef76db752cab2ddd9bdc47d09a65f1/Romantic_accessory.js

Внесите некоторые изменения, если вам нужно - это установлено для стандартного расположения Sonos «Master Bedroom», поэтому измените строку Мастер% 20bedroom к началу кода, если вы хотите, чтобы он был направлен в другую комнату. Поскольку мы притворялись светом, отправка команды яркости на самом деле ничего не даст, хотя в какой-то момент я обновлю ее, чтобы справиться с громкостью. Это блок кода, который делает магию:

setPowerOn: function(on) {
console.log("Turning the light %s!", on ? "on" : "off");
FAKELIGHT.powerOn = on;
console.log(on);
if(on){
request('http://localhost:5005/master%20bedroom/playlist/romantic', function (error, response, body) {
console.log("Sent play request");
})
}
else{
request('http://localhost:5005/master%20bedroom/pause', function (error, response, body) {
console.log("Sent pause request");
})
}
},

Вы можете увидеть, что это удивительно просто: когда источник получает команду setPowerOn от HomeKit, он проверяет, является ли значение 1 (или истиной), и в какой точке он отправляет URL-адрес Sonos HTTP API для воспроизведения этого списка воспроизведения. Если это что-то еще (т. Е. 0, false), он отправляет команду паузы. Перезапустите сервер HAP-NodeJS, затем перейдите на устройство iOS и выполните ту же процедуру, что и раньше, чтобы добавить фальшивый индикатор «Романтический список воспроизведения» (вам потребуется код сопряжения 031-45-154).

Проверьте, работает ли ваше новое устройство, затем продолжайте. Если вы немного заняты программированием, попробуйте отобразить изменения яркости в объеме (и, пожалуйста, поделитесь кодом в комментариях!).

(Необязательно) Сказочные огни и другие устройства переменного тока

Вас может удивить то, что нет никаких официальных волшебных огней HomeKit, и при этом я не смог найти никаких универсальных силовых розеток HomeKit, которые мне понравились, вид / цена - так что я собрал DIY сам, используя плату разработчика NodeMCU / ESP8266

, реле и стандартная двухпроводная розетка. Я не буду вдаваться в подробности об оборудовании, так как вам не следует помещать вещи в розетки, если вы не совсем уверены в таких вещах, но я предоставлю вам свой код для стороны NodeMCU (подключите Реле триггера на контакт D2 / GPIO4) и аксессуар для него.

реле узла

Как и индикатор Wi-Fi, он передает команды по каналу MQTT («спальня-вилка»), поэтому вам необходимо изменить код, указав адрес вашего брокера MQTT (см. Часть 2 нашего руководства OpenHAB о том, как настроить MQTT маклер

), измените названия каналов, если хотите, и, конечно, введите свои собственные данные Wi-Fi.

Собираем все вместе

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

Вы можете назвать сцену как угодно, и Сири сможет сопоставить ее, даже не сказав «установить сцену». Итак, я сделал две сцены: одну под названием «дети в постели», а другую «давай теперь серьезно».

Первый выключает один из источников света Hue, другой - розовый, затем включает романтический аксессуар для плейлиста и сказочные огни. Последний делает огни снова белыми и приостанавливает Sonos (то есть, выключает романтический аксессуар плейлиста). Simples!

создание сцены homekit

Я надеюсь, что вам понравился этот учебник, и вы действительно можете увидеть, как мы можем расширить контроль Siri на что угодно без особых проблем, благодаря мощности HAP-NodeJS. Есть ли что-то, для чего вы хотели бы увидеть какие-то особенные действия Siri? Дайте нам знать в комментариях и расскажите, как вы использовали Siri для управления своим домом.

Ссылка на основную публикацию
Adblock
detector