DiyУмный дом

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

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

Вчера мы показали вам, как создать самодельный Wi-Fi-свет что можно контролировать с Siri; сегодня мы собираемся использовать эти знания, чтобы заставить 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. Мы воспользуемся этим.

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

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

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

  http: // [IP-адрес СЕРВЕРА]: 5005 / [ИМЯ КОМНАТЫ] / [ДЕЙСТВИЕ] 

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

  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 / и установите модуль «request».

 sudo npm install request 

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

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

Внесите некоторые изменения, если это необходимо — это задано для местоположения Sonos «Спальня хозяев» по умолчанию, поэтому измените мастер строки % 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, который мне нравился бы по внешнему виду / цене — поэтому я собрал самодельный с помощью платы разработчика NodeMCU / ESP8266. , реле и стандартная двухканальная розетка. Я не буду вдаваться в подробности об оборудовании, так как вам не следует помещать вещи в розетки, если вы не совсем уверены в таких вещах , но я предоставлю вам свой код для стороны NodeMCU (подключите реле триггера на контакт D2 / GPIO4) и аксессуар для него .

реле узла

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

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

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

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

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

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

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

Похожие посты
Умный дом

Что такое «Эхо Амазонки Авто»?

Умный дом

Что такое умный туалет и стоит ли его покупать?

Как сделатьУмный дом

Как добавить Alexa в ваше умное зеркало

Tech новостиКак сделатьУмный дом

Как контролировать свои потолочные вентиляторы в SmartHome