Ассортимент светильников Philips Hue определенно не дешев (есть несколько вариантов
), но я очень ценю хорошо документированный API
для создания собственных приложений Hue. Сегодня я покажу вам, как управлять подсветкой Hue с Arduino, а затем добавлю простой датчик движения.
Зачем мы это делаем? Потому что системы домашней автоматизации могут быть довольно жесткими и дорогими. Узнав, как управлять Hue от Arduino, вы открываете двери для разнообразных проектов домашней автоматизации, которые просто не могут быть побеждены готовыми компонентами. Если совместное хакерство — не ваше дело, попробуйте эти 8 великолепных приложений Hue.
вместо.
Система оттенков
Давайте немного разберемся с техникой, чтобы вы знали основные системы, с которыми вы работаете. Hue lights создают ячеистую сеть
с использованием беспроводного протокола ближнего действия под названием ZigBee, в частности, они сертифицированы ZigBee Light Link, что означает, что другие продукты ZLL также должны работать вместе с Hue (теоретически).
Хотя ZigBee технически ограничен, ячеистая сеть означает, что каждая новая лампочка расширяет сеть, передавая сообщения другим лампам. Это означает, что если у вас возникли проблемы с управлением освещением на другой стороне дома, попробуйте установить другой источник света между ними.
Zigbee — отличный протокол, но он сильно отличается от Wi-Fi или проводной компьютерной сети, поэтому нам необходим мост Philips Hue Bridge, чтобы объединить их вместе. Мост Hue выполняет модифицированную прошивку Linux с открытым исходным кодом, которая транслирует базовый веб-сервер.
Создание изменений состояния
Создание нового состояния для отправки на лампочки является простым случаем создания новой строковой переменной и экранирования всех двойных кавычек. Я добавил случайным образом () там же, чтобы создать несколько динамичную анимацию. Попробуйте сделать переменную оттенка случайной для разных цветов.
Чтобы фактически отправить команду, у вас есть вспомогательная функция setHue (), которая принимает в качестве аргумента номер света и командную строку, например:
setHue(1,command);
Все, что он делает, это подключается к мосту, выплевывает команду в виде запроса PUT вместе со всей другой ерундой, связанной с созданием HTTP-запроса.
client.print("PUT /api/");
client.print(hueUsername);
client.print("/lights/");
client.print(lightNum);
client.println("/state HTTP/1.1");
client.println("keep-alive");
client.print("Host: ");
client.println(hueHubIP);
client.print("Content-Length: ");
client.println(command.length());
client.println("Content-Type: text/plain;charset=UTF-8");
client.println(); // blank line before body
client.println(command); // Hue command
Добавление датчика движения
Наконец, я подключил простой датчик движения HC-SR501 к цифровому выводу ввода / вывода 2. При обнаружении движения на мост перебрасывается серия состояний для 2 лампочек, чтобы создать медленную, динамическую анимацию. Когда датчик движения деактивируется, обе команды отправляются по одной. В идеале они должны были бы вернуться в состояние, в котором они находились, до того, как было обнаружено движение, но логика не настолько умна — мы просто собираемся включать и выключать их.
Ограничения
Хотя по общему признанию неоптимизированный код, сетевому интерфейсу Arduino требуется почти секунда для отправки одного запроса команды. Я тестировал ту же команду с Mac, используя то же соединение Ethernet, и она была способна в десять-двадцать раз превышать эту скорость (вот AppleScript на случай, если вы хотите протестировать). Следовательно, любая быстрая анимация (я пытался создать эффект мерцающей свечи) просто невозможна в Arduino. Это не должно быть проблемой для большинства проектов, только для высокоскоростной анимации света, но хорошо знать об этом ограничении.
Также трудно полностью проанализировать любой ответ JSON, который вы получите с моста; на Arduino недостаточно ОЗУ для хранения всех необработанных данных. По этой причине вы можете ограничиться отправкой.
Взломать оттенок
Теперь, когда вы обладаете знаниями о том, как управлять Hue полностью независимо, это открывает мир взломов домашней автоматизации Hue. Настоящий вопрос: что ты будешь делать?