Накупить умных гаджетов — не проблема. Но как сделать так, чтобы они работали вместе и управлялись при помощи голоса? Команда «Сири, включи свет» будет работать только с устройствами, которые поддерживают фирменный протокол HomeKit. Однако немного шаманства, и этому трюку можно научить практически любой девайс, способный принимать команды извне.

Если ты успел поддаться моде и купил хотя бы пару умных домашних приборов, то наверняка столкнулся с проблемой: каждый из них управляется через свое приложение, имеет свой стандарт связи и хорошо интегрируется только с устройствами того же производителя. Обойти это ограничение вполне реально, причем в основном софтверными методами, которые не требуют замены всей техники. Купить придется разве что Raspberry Pi или другой одноплатный компьютер и (если понадобится) несколько модулей беспроводной связи для него.

Для меня возня с умным домом началась с приобретения одной-единственной светодиодной лампочки, на примере которой я и покажу, как будет работать моя система. Я решил не шиковать и остановился на самом бюджетном варианте — лампе MiLight с четырьмя диодами (тремя цветными и белым).


Рано или поздно умные лампы будут стоить примерно столько же, сколько и обычные светодиодные, и китайцы уже неплохо продвинулись в этом направлении. На AliExpress лампы MiLight сейчас продаются примерно за 800 рублей, к ним в комплект можно взять беспроводной командный модуль. Он подключается к домашнему Wi-Fi, а лампочками рулит по собственному проприетарному радиопротоколу.

Как вариант — можешь посмотреть на лампы Yeelight производства Xiaomi. Они подороже, зато подключаются сразу к Wi-Fi и не требуют промежуточного радиоканала и лишней коробки с контроллером. Ну и конечно, всегда существуют Lifx и Philips Hue. Их качество не вызывает сомнений, но цены тут уже совсем другие — по 4–7 тысяч за лампочку.

Особое внимание при выборе лампы стоит обратить на протокол. Попадаются модели с управлением не по Wi-Fi, а по Bluetooth LE. При работе со смартфоном это может быть удобнее, но если ты, как и я, собираешься использовать Raspberry Pi или другой компьютер в качестве «мозга» умного дома, то предпочтителен Wi-Fi.

 

Подключаем лампу и настраиваем Wi-Fi

Честно говоря, изначально у меня не было вообще никакого плана. Мне была нужна лампочка для настольной лампы, и я хотел иметь возможность выключать ее, не вставая с кровати. Иногда, знаешь ли, хочется просто накрыться одеялом и немедленно заснуть — в такие моменты выключатель в другом конце комнаты становится куда большей проблемой, чем обычно.

Первоначальная установка оказалась проста, хоть и не совсем прямолинейна. Вкручиваем лампочку в патрон, включаем радиомодуль в любой USB и подключаемся к сети Wi-Fi, которую он создаст. Это временное решение: оно нужно только для первой настройки.

В случае с MiLight последующие действия будут такими. Открываем веб-интерфейс (обычно по адресу 10.10.100.254) и вбиваем админский логин и пароль (admin/admin). Теперь можно зайти в настройки STA Setting и вписать данные своего роутера, а потом выбрать STA mode в разделе Work Mode.


Обязательно зайди в раздел Other Setting и скопируй себе номер порта UDP, а также IP-адрес из поля Server Address. Эти данные пригодятся тебе чуть позже. По желанию можешь еще зайти в раздел Account и поменять логин и пароль на что-нибудь пооригинальнее.

Теперь перезагружай радиокоробок, и можешь переключать компьютер на обычный Wi-Fi. С настройкой покончено, это было нетяжело! А вот следующий шаг из инструкции доставил мне почти физическую боль.


Проблема в том, что админка авторства безвестных китайских программистов — это еще туда-сюда, а вот доверять им дизайн приложения для iOS не стоит вовсе. В нем плохо все. В первую очередь — необходимость зачем-то каждый раз выбирать вид пульта, который оно эмулирует, а также отсутствие возможности одной кнопкой вернуть нормальный ровный свет, если вдруг ошибся и начал перебирать режимы мигания (количество которых превышает все разумные пределы). Дизайн и разрешение экрана времен iPhone 4, учитывая перечисленное, можно уже и не обсуждать. Китайский лубок как он есть.

Китайский лубок
Китайский лубок

Впрочем, неверно выразился. Китайский лубок, известный также как няньхуа, прекрасен, чего не скажешь о приложении MiLight. Хорошая новость заключается в том, что нам оно не понадобится.

 

Пишем простой скрипт и рулим лампочкой с компьютера

Если программа общается с устройством по IP, значит, отловить и подделать ее команды — не такая уж сложная задача. В нашем случае она к тому же давно решена и существует масса реализаций протокола MiLight на разных языках программирования и в составе разных утилит.

Начнем с самого простого. Чтобы включить лампочку, достаточно всего трех строк на Python без всяких левых библиотек.

import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto("x42x00x55", ("192.168.0.10", 8899))

В последней строчке поменяй IP и порт на актуальные, и лампочка должна начать повиноваться. Для выключения замени первый байт послания на 41, а для выставления белого цвета полной яркости — на C2. Если твоя лампа работает по TCP, а не по UDP, поменяй SOCK_DGRAM на SOCK_STREAM.

Такой способ удобен для отправки одной-двух команд, но если ты хочешь что-то более развесистое, то, так или иначе, понадобится скрипт-обертка. Писать ее не обязательно — есть готовые варианты. Лично мне приглянулся модуль wifileds, с ним включение лампочки выглядит следующим образом:

import wifileds
led_connection = wifileds.limitlessled.connect('192.168.0.10', 8899)
led_connection.rgbw.all_on()
led_connection.rgbw.white()

Полный список команд ты увидишь, открыв файл rgbw.py, rgb.py или white.py, там же можешь подсмотреть и шестнадцатеричные коды, если планируешь командовать лампой напрямую через socket. Важный момент: для белых ламп, RGB и RGBW коды команд различаются.

Я сделал пару скриптов для включения и выключения света и привязал их к сочетаниям клавиш. Теперь управлять лампой, работая за компьютером, можно прямо с клавиатуры, без всякого выключателя. Потрясающий комфорт и оголтелое гиковство!

 

Прочие извраты с MiLight

Большую подборку скриптов, совместимых с MiLight, ты можешь найти на сайте LimitlessLED. Это американская фирма, которая продает под своим брендом те же или похожие лампочки (по крайней мере, их протоколы полностью идентичны).

Настоящие фанаты своего дела пошли дальше и разреверсили радиопротокол MiLight. Если тебе не мил фирменный вайфайный коробок, то ты можешь попробовать воспроизвести его функции при помощи Arduino с модулем ESP8266. Для него к тому же существует прошивка, которая расширяет число групп лампочек с четырех штук до 262 тысяч, а также имеет веб-интерфейс и RESTful API.

Продолжение статьи доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все статьи на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта, включая эту статью. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

Вариант 2. Купи одну статью

Заинтересовала статья, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для статей, опубликованных более двух месяцев назад.


2 комментария

Подпишитесь на ][, чтобы участвовать в обсуждении

Обсуждение этой статьи доступно только нашим подписчикам. Вы можете войти в свой аккаунт или зарегистрироваться и оплатить подписку, чтобы свободно участвовать в обсуждении.

Check Also

Троян Linux.ProxyM теперь используется для взлома сайтов

Аналитики «Доктор Веб» обнаружили, что троян Linux.ProxyM, поднимающий на зараженных устро…