Хаки Эрика Блю по автоматизации дома с помощью Belkin, Twilio и Siri

Автор: | 29.07.2026

Когда друзья Эрика приходили к нему в гости и нажимали на звонок в его квартире, ему звонили. Однако, если он смотрел фильм или играл в видеоигру, он часто пропускал звонок. Поэтому Эрик использовал 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-конфигурацию для сопоставления команд и устройств.

Вот и всё! Надеюсь, вам понравился этот относительно простой хак, и вы хорошо проведете время!