Когда друзья Эрика приходили к нему в гости и нажимали на звонок в его квартире, ему звонили. Однако, если он смотрел фильм или играл в видеоигру, он часто пропускал звонок. Поэтому Эрик использовал Twilio, чтобы перенаправлять вызовы с домофона на экран телевизора, и теперь он никогда не пропускает звонки, даже если находится в разгаре жаркой битвы на Xbox.
После реализации хака с телевизором Эрик захотел сделать больше. С помощью Belkin Wemo, SMS от Twilio и Siri он разработал способ включать и выключать свет в своей квартире с помощью голосовых команд и текстовых сообщений. Ознакомьтесь с его руководством ниже, которое изначально было опубликовано на его блоге здесь.
*Узнайте больше об Эрике и его независимых проектах в области разработки ПО, посетив его блог здесь.*
Примерно в это же время в прошлом году в один амбициозный вечер у меня возникла идея быстро объединить несколько API и создать крутой и полезный хак для автоматизации дома. В этом примере используются умные розетки Belkin Wemo, мой Perl API (WebService::Belkin::WeMo) для их управления, Twilio и встроенные функции голосового управления с помощью Siri на iPhone. Это звучит сложно, но с относительно небольшим количеством кода вы можете автоматически включать и выключать свет в своем доме, отправляя текстовые сообщения или даже используя голосовые команды (например: «Компьютер, включи весь свет!»).
**Схема обзора**
**Perl API для Belkin WeMo**
В прошлом году, когда я впервые приобрел умные розетки Belkin Wemo, я был разочарован, узнав, что API для них еще не существовало. Поскольку Perl — мой основной язык для быстрых «хаков», я решил разобраться, как это работает. К счастью, устройства основаны на UPnP (Universal Plug and Play), и не потребовалось много усилий, чтобы понять, как искать розетки и датчики, а также отправлять команды для включения и выключения электроприборов. Код уже некоторое время доступен на GitHub, и недавно я загрузил его на CPAN, чтобы упростить распространение и подключение.
**Пошаговая инструкция**
[API и SMS-сервер]
— Найдите компьютер, находящийся в той же сети, что и ваши устройства Belkin. Убедитесь, что ваш брандмауэр/роутер может открыть порт 9000 (по умолчанию) и сопоставить его с вашим компьютером.
— Установите Perl API для Belkin Wemo с CPAN (версия 1.0 на момент написания) для последней стабильной версии или с GitHub для последних обновлений.
— Просканируйте локальную сеть, чтобы найти все умные розетки Belkin Wemo, и сохраните их в файл /etc/belkin.db (см. примеры/scan.pl в дистрибутиве Perl API для Wemo).
— Создайте простой тестовый скрипт для включения и выключения розетки, чтобы убедиться, что всё работает правильно.
— Скачайте пример SMS-сервера по ссылке https://github.com/ericblue/Belkin-WeMo-Twilio-Server. Измените команды, свой номер телефона и названия розеток.
— Вы можете запустить сервер (launch.sh) или в режиме отладки. Переход по адресу http://ваш_внутренний_ip:9000/ должен показать простое текстовое приветственное сообщение.
[Настройка Twilio]
— Зайдите на Twilio.com и создайте аккаунт.
— Зарегистрируйте новый номер и укажите URL для обработки сообщений как «http://ваш_публичный_ip:9000/sms/» с методом POST. Порт 9000 используется по умолчанию и должен быть проброшен в вашем брандмауэре с публичного IP на внутренний IP вашего SMS-сервера.
— Отправьте текстовое сообщение на этот номер с текстом «get devices», и вы должны получить список всех розеток Belkin в вашей сети.
[Голосовое управление через iPhone/Siri]
— Ознакомьтесь с этой статьей о настройке Siri для голосового управления — http://www.dummies.com/how-to/content/how-to-use-siri-for-texting.
— Добавьте ваш SMS-сервер Twilio в контакты. Я назвал свой «Компьютер» (как в «Звездном пути»), но вы можете выбрать любое имя.
— Вам нужно добавить прозвище или метку «Компьютер», чтобы при удержании кнопки Siri вы могли сказать: «Отправь сообщение Компьютеру».
my $valid_commands = {‘1’ => ‘test’,’2′ => ‘get devices’,’3′ => ‘get commands’,’4′ => ‘turn all lights on’,’5′ => ‘turn all lights off’,’6′ => ‘turn upstairs lights on’,’7′ => ‘turn upstairs lights off’,’8′ => ‘turn downstairs lights on’,’9′ => ‘turn downstairs lights off’};
Если вы посмотрите на файл sms_server.pl, то увидите, что это ОЧЕНЬ простой и примитивный обработчик для некоторых базовых команд, который переводит слова вроде «наверху» и «внизу» в конкретные устройства. Это было создано очень быстро, поэтому для кастомизации вы можете изменить его под свои нужды или добавить что-то более сложное, например, процессор правил или XML-конфигурацию для сопоставления команд и устройств.
Вот и всё! Надеюсь, вам понравился этот относительно простой хак, и вы хорошо проведете время!