Оглавление:

Проект школы Интернета вещей Philips Hue: 19 шагов
Проект школы Интернета вещей Philips Hue: 19 шагов

Видео: Проект школы Интернета вещей Philips Hue: 19 шагов

Видео: Проект школы Интернета вещей Philips Hue: 19 шагов
Видео: Перевал Дятлова. Дятловцы были сотрудниками КГБ? Версия Ракитина. 2024, Июль
Anonim
Проект школы Интернета вещей Philips Hue
Проект школы Интернета вещей Philips Hue

Это пособие, которое мне пришлось написать для школы. Это не полный комплект, и я не уверен, что вы вообще сможете его использовать. Мои знания API - это минимум. Мы хотели сделать интерактивное зеркало с подсветкой на задней панели, которая реагирует на погоду, свет снаружи и т. Д.

Я посмотрел, как можно запрограммировать лампу Philips Hue с Arduino. В этом я объясняю все свои шаги и то, как далеко я продвинулся. Мне не удалось запрограммировать Hue с помощью Arduino, но я думаю, что это хорошее начало.

Мне нужно это: Arduino, лампа оттенка, мост, учетная запись разработчика Philips Hue.

Источники: https://www.developers.meethue.com/documentation/g … https://github.com/bsalinas/ArduinoHuehttps://arduino-esp8266.readthedocs.io/en/latest/e…https:// www.makeuseof.com/tag/control-philips-hue-…

Шаг 1. Начало работы

Чтобы получить доступ к документации по API, вам необходимо зарегистрироваться в качестве разработчика. Это бесплатно, но вам необходимо принять Условия использования. Вы можете сделать его здесь>

Шаг 2: приложение Hue

Загрузите официальное приложение Philips Hue. Подключите телефон к сети, в которой должен быть включен мост Hue.

Шаг 3: Подключите мост

Подключите мост к сети, и он работает нормально. Убедитесь, что приложение для смартфона может управлять освещением в той же сети. Он должен быть в той же сети Wi-Fi.

Шаг 4: IP-адрес

Затем вам нужно узнать IP-адрес моста в вашей сети. Нажмите ссылку, чтобы подключиться к мосту в приложении и попробуйте управлять освещением.

Шаг 5:

Если все работает, перейдите в меню настроек в приложении. Затем перейдите в «Мой мост», перейдите в «Настройки сети». Выключите переключатель DHCP, и вы увидите IP-адрес моста. Запишите IP-адрес и снова включите DHCP.

Шаг 6: отладьте свой оттенок

Отладьте свой оттенок
Отладьте свой оттенок

Когда вы это записали, вам нужно отладить свой Hue. Для этого шага вам понадобится IP-адрес. Вам нужно посетить следующий сайт.

/debug/clip.html

Интерфейс на картинке будет выглядеть так. Это основа всего веб-трафика и интерфейса RESTful.

Я получил эту информацию об интерфейсе Restful на сайте Philips Hue.

URL: на самом деле это локальный адрес определенного ресурса (вещи) внутри системы оттенков. Это может быть свет, группа огней или многое другое. Это объект, с которым вы будете взаимодействовать в рамках этой команды.

Тело: это часть сообщения, в которой описывается, что вы хотите изменить и как. Здесь вы вводите в формате JSON название ресурса и значение, которое вы хотите изменить / добавить.

Метод: здесь у вас есть выбор из 4 методов HTTP, которые может использовать вызов hue.

GET: это команда для получения всей информации об адресном ресурсе

PUT: это команда для изменения адресуемого ресурса

POST: это команда для создания нового ресурса внутри адресуемого ресурса.

УДАЛИТЬ: это команда для удаления указанного ресурса. Ответ: В этой области вы увидите ответ на вашу команду. Также в формате JSON.

Шаг 7. Приступим

Давайте начнем
Давайте начнем

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

Введите URL:

/ api /

Поместите в ТЕЛО:

и нажмите GET

Эта команда в основном говорит: «Пожалуйста, создайте новый ресурс внутри / api» (где находятся имена пользователей) со следующими свойствами. Сначала вы получите сообщение об ошибке, потому что это шаг безопасности Philips Hue. Нажимая на кнопку, они подтверждают, что у вас есть физический доступ к мосту.

Шаг 8:

Изображение
Изображение

Теперь нажмите кнопку на мосту и снова нажмите POST.

Теперь вы получите имя пользователя, созданное для вас мостом.

Шаг 9: давайте что-нибудь сделаем с огнями

Давай сделаем что-нибудь с огнями
Давай сделаем что-нибудь с огнями

Скопируйте свое имя пользователя и поместите его в следующую строку.

Поместите это в свой URL

/ api / / огни

Нажмите GET

Вы должны получить ответ JSON со всеми индикаторами в вашей системе и их названиями.

Шаг 10:

Изображение
Изображение

Я позаимствовал несколько Hue Lights из школы, я использую тот, с идентификатором 3. Мне нужна конкретная информация об этом свете.

Поместите это рядом с URL-адресом, который у вас уже был:

/ api / / огни / 3

Нажмите GET

Теперь вы получаете всю информацию о светодиоде 3 (если у вас есть другой номер, например 1, вы увидите информацию об этом).

Шаг 11: давайте управлять светом

Давайте контролировать свет
Давайте контролировать свет

Вы видите в «состоянии», что мой светодиод включен. Мы хотим управлять светом в «состоянии».

Поместите это рядом с URL-адресом, который у вас уже был: https:// / api / / lights / 3 / state

Поместите следующую строку в ТЕЛО

Нажмите PUT

Теперь ваш свет погаснет! Измените значение в теле на true, и свет снова включится.

Шаг 12:

Теперь все работает, я хочу сделать это со своим Arduino. Я посмотрел на ссылку, которую дал Philips Hue, чтобы изменить цвет света. Но для этого вам нужен Python, я никогда не работал с Python, поэтому искал что-то другое.

Если вам нравится смотреть на этот код, у меня есть ссылка на Github:

github.com/bsalinas/ArduinoHue

Шаг 13:

Я посмотрел, как я могу получить информацию с этого сайта разработчика на свой Arduino. Большую часть времени я не понимал языка. Но я нашел код на веб-сайте Джеймса Брюса.

Это ссылка на сайт.

www.makeuseof.com/tag/control-philips-hue-lights-arduino-and-motion-sensor/

Шаг 14:

Сначала я увидел, что он использовал кабель Ethernet. У меня были только лампочка Hue Light и мост Arduino, и я мало разбирался в коде. Мне потребовалось время, чтобы понять его код, но я все еще не совсем понимаю его.

Сначала я добавил эту библиотеку для Интернета.

#включают

Это для вашей сети (она должна быть такой же, как лампочка Hue Light)

const char * ssid = ""; // введите сюда SSID вашей сети WiFiconst char * password = ""; // введите здесь пароль от сети Wi-Fi

Это идентификатор вашего моста и имя пользователя, которое вам дал мост. (Я не знаю, где это 80, но когда я провел некоторое исследование, я увидел, что он использовался для сетей).

// Константы оттенка const char hueHubIP = ""; // IP-адрес концентратора оттенка const char hueUsername = ""; // Оттенок имени пользователя const int hueHubPort = 80;

// Переменные оттенка bool hueOn; // включение / выключение int hueBri; // значение яркости long hueHue; // значение оттенка String hueCmd; // Команда оттенка

беззнаковый длинный буфер = 0; // буфер для хранения полученных данных unsigned long addr;

Шаг 15:

Для настройки void я больше всего сделал для подключения к Интернету. В этом коде Arduino проверяет, может ли он подключиться к сети.

void setup () {Serial.begin (9600);

Serial.println ();

Serial.printf («Подключение к% s», ssid);

WiFi.begin (ssid, пароль);

while (WiFi.status ()! = WL_CONNECTED) {

задержка (500);

Serial.print ("."); }

Serial.println («подключен»); }

Шаг 16:

В цикле Джеймса я увидел, что у него есть инструкции If и else. Но это было для кабеля Ethernet, поэтому я попытался не указывать его. Я тоже иногда пытался это настроить, но еще не знал с большим количеством данных. Некоторые вещи в коде, которые я понял, в строке - данные, которые передаются свету Hue.

void loop () {

// Серия из четырех примеров команд, цвет которых затемняет два индикатора между красным и розовым. Прочтите документацию Hue API // для получения более подробной информации о точных командах, которые будут использоваться, но обратите внимание, что кавычки должны быть экранированы.

String command = "{" on / ": true, \" hue / ": 50100, \" sat / ": 255, \" bri / ": 255, \" transitiontime / ":" + String (random (15, 25)) + "}"; setHue (1, команда);

command = "{" on / ": true, \" hue / ": 65280, \" sat / ": 255, \" bri / ": 255, \" transitiontime / ":" + String (random (15, 25)) + "}"; setHue (2, команда);

command = "{" оттенок / ": 65280, \" sat / ": 255, \" bri / ": 255, \" transitiontime / ":" + String (random (15, 25)) + "}"; setHue (1, команда);

command = "{" оттенок / ": 50100, \" sat / ": 255, \" bri / ": 255, \" transitiontime / ":" + String (random (15, 25)) + "}"; setHue (2, команда);

}

Шаг 17:

Следующий код был логическим, но в Arduino вам нужно написать Bool. Сначала у меня было много ошибок из-за слова клиент. Я посмотрел и увидел, что в каком-то коде используется строка «WifiClient client;». Так что я привык, и это сработало.

В операторе if вы часто видите client.print. Если вы посмотрите в код, вы увидите, что введенный вами ранее URL разделен на части. Теперь введите свой собственный код. Пришлось выбрать свою 3-ю светодиодную лампу.

/ * setHue () - это наша основная командная функция, которой необходимо передать число и * правильно отформатированную командную строку в формате JSON (в основном массив переменных * и значений в стиле Javascript. Затем он выполняет простой HTTP-запрос PUT для Мост по IP указанному в начале. * /

bool setHue (int lightNum, String command) {

Клиент WiFiClient;

if (client.connect (hueHubIP, hueHubPort)) {

while (client.connected ()) {

client.print ("PUT / api /"); client.print (hueUsername); client.print ("/ огни /"); client.print (lightNum); // hueLight на основе нуля, добавляем 1 client.println ("3 / state"); // здесь я изменил название оттенка и stateclient.print ("Host:"); client.println (hueHubIP); client.print ("Длина содержимого:"); client.println (command.length ()); client.println ("Content-Type: text / plain; charset = UTF-8"); client.println (); // пустая строка перед телом client.println (command); // Команда оттенка

} client.stop (); вернуть истину; // команда выполнена}

иначе вернет ложь; // команда не выполнена}

Шаг 18:

Со вторым логическим значением я проделал то же самое с изменением некоторых слов. Я загрузил его, чтобы посмотреть, работает ли он.

/ * Вспомогательная функция на случай, если ваша логика зависит от текущего состояния источника света. * Это устанавливает ряд глобальных переменных, которые вы можете проверить, чтобы узнать, горит ли в данный момент свет *, а также оттенок и т. Д. Не требуется только для отправки команд * /

bool getHue (int lightNum) {

Клиент WiFiClient;

if (client.connect (hueHubIP, hueHubPort)) {

client.print ("ПОЛУЧИТЬ / api /"); client.print (hueUsername); client.print ("/ огни /"); client.print (lightNum); client.println («3 / состояние»); client.print ("Хост:"); client.println (hueHubIP); client.println ("Content-type: application / json"); client.println ("поддерживать активность"); client.println ();

while (client.connected ()) {if (client.available ()) {client.findUntil ("\" на / ":", "\ 0"); hueOn = (client.readStringUntil (',') == "правда"); // если свет горит, установить значение true для переменной client.findUntil ("\" bri / ":", "\ 0"); hueBri = client.readStringUntil (',').toInt (); // устанавливаем переменную в значение яркости client.findUntil ("\" оттенок / ":", "\ 0"); hueHue = client.readStringUntil (',').toInt (); // установить переменную в значение оттенка break; // еще не захватываются другие атрибуты света}} client.stop (); вернуть истину; // зафиксировано, bri, hue} else return false; // ошибка чтения on, bri, hue}

Шаг 19:

Изображение
Изображение

Я думаю, что смогу найти связь с Philips Hue. Я получаю информацию, но ее еще нужно использовать.

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

Рекомендуемые: