Съдържание:

Училищен проект на IoT Philips Hue: 19 стъпки
Училищен проект на IoT Philips Hue: 19 стъпки

Видео: Училищен проект на IoT Philips Hue: 19 стъпки

Видео: Училищен проект на IoT Philips Hue: 19 стъпки
Видео: On the traces of an Ancient Civilization? 🗿 What if we have been mistaken on our past? 2024, Ноември
Anonim
Училищен проект на IoT Philips Hue
Училищен проект на IoT 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 Bridge да е включен.

Стъпка 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: това е командата за създаване на нов ресурс в адресирания ресурс

DELETE: това е командата за изтриване на адресирания ресурс Отговор: В тази област ще видите отговора на вашата команда. Също във формат JSON.

Стъпка 7: Нека започнем

Да започваме
Да започваме

Сега имаме нужда от произволно генерирано потребителско име, което мостът създава за вас. Ще го получите, като попълните това.

Поставете URL адреса:

/api/

Поставете в ТЯЛОТО:

и натиснете GET

Тази команда основно казва „моля, създайте нов ресурс вътре /api“(където се намират потребителски имена) със следните свойства. Отначало ще получите грешка и това е така, защото това е стъпката за сигурност на Philips Hue. С натискане на бутона те доказват, че имате физически достъп до моста.

Стъпка 8:

Образ
Образ

Сега натиснете бутона на моста и щракнете отново POST.

Сега ще получите потребителско име, което мостът е създал за вас.

Стъпка 9: Нека направим нещо със светлините

Нека направим нещо със светлините
Нека направим нещо със светлините

Напишете потребителското си име и го поставете в следния ред.

Поставете това в URL адреса си

/api//светлини

Натиснете GET

Трябва да получите JSON отговор с всички светлини във вашата система и техните имена.

Стъпка 10:

Образ
Образ

Заех някои светлини Hue Lights от училището, това което използвам е това с id 3. Искам конкретна информация за тази светлина.

Поставете това до URL адреса, който вече сте имали:

/api//lights/3

Натиснете GET

Сега получавате цялата информация за Led 3 (ако имате друг номер като 1, ще видите информация за този).

Стъпка 11: Нека контролираме светлината

Нека контролираме светлината
Нека контролираме светлината

Виждате в "състояние", че моят светодиод е "включен". Искаме да контролираме светлината в "състояние".

Поставете това до URL адреса, който вече сте имали: https:/// api// lights/ 3/ state

Поставете следващия ред в BODY

Натиснете 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 и Bridge Arduino и малко разбиране на кода. Отне ми известно време да разбера кода му, но все още не го разбирам.

За първи път добавих тази библиотека за интернет.

#включва

Това е за вашата мрежа (трябва да е същата като крушката Hue Light)

const char* ssid = ""; // поставете тук вашата WiFi мрежа SSIDconst char* password = ""; // поставете тук вашата парола за WiFi мрежа

Това са идентификационните номера на вашия мост и потребителското име, което ви е дал мостът. (Не знам къде означава 80, но когато направих малко проучване видях, че се използва за мрежи).

// Hue константи const char hueHubIP = ""; // Hue hub IP const char hueUsername = ""; // Hue потребителско име const int hueHubPort = 80;

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

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

Стъпка 15:

За настройката на празнотата направих най -много за интернет връзката. В този код 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, \" tranzitionntime / ":"+String (произволен (15, 25))+"}"; setHue (1, команда);

command = "{" on / ": true, \" hue / ": 65280, \" sat / ": 255, \" bri / ": 255, \" tranzitionntime / ":"+String (произволен (15, 25))+"}"; setHue (2, команда);

command = "{" hue / ": 65280, \" sat / ": 255, \" bri / ": 255, \" transitionntime / ":"+низ (произволен (15, 25))+"}"; setHue (1, команда);

command = "{" hue / ": 50100, \" sat / ": 255, \" bri / ": 255, \" transitionntime / ":"+низ (произволен (15, 25))+"}"; setHue (2, команда);

}

Стъпка 17:

Следващият код беше булев, но в Arduino трябва да напишете Bool. Първоначално получих много грешки заради думата клиент. Затова погледнах и видях, че някакъв код използва реда "WifiClient клиент;". Затова го използвах и работи.

В оператора if често виждате client.print. Ако разгледате кода, ще видите, че въведеният от вас URL адрес е разделен на парчета. Сега въведете свой собствен код. Трябваше да избера третата си LED светлина.

/ * setHue () е нашата основна командна функция, която трябва да получи светло число и * правилно форматиран команден низ в JSON формат (по същество масив от променливи * и стойности в стил Javascript. След това прави проста HTTP PUT заявка до мостът при IP, посочен в началото. */

bool setHue (int lightNum, команда String) {

Клиент 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/състояние"); // тук промених името на нюанса и stateclient.print ("Host:"); client.println (hueHubIP); client.print ("Content-Length:"); client.println (command.length ()); client.println ("Тип съдържание: текст/обикновен; charset = UTF-8"); client.println (); // празен ред пред body client.println (команда); // Команда Hue

} client.stop (); връщане true; // команда изпълнена}

иначе върнете false; // командата е неуспешна}

Стъпка 18:

На втория Boolean направих същото, като промених някои думи. Качих го, за да видя дали работи.

/* Помощна функция, в случай че вашата логика зависи от текущото състояние на светлината. * Това задава редица глобални променливи, които можете да проверите, за да разберете дали в момента е включена светлина или не * и нюанса и т.н. Не е необходимо само за изпращане на команди */

bool getHue (int lightNum) {

Клиент WiFiClient;

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

client.print ("GET /api /"); client.print (hueUsername); client.print ("/светлини/"); client.print (lightNum); client.println ("3/състояние"); client.print ("Хост:"); client.println (hueHubIP); client.println ("Тип съдържание: application/json"); client.println ("поддържам жив"); client.println ();

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

Стъпка 19:

Образ
Образ

Мисля, че бих могъл да направя връзка с Philips Hue. Получавам информация, но все още трябва да се използва.

За съжаление, това надхвърля това, което мога да кодирам. Ако знаете отговора или ако има реални грешки, които трябва да бъдат поправени, ще се радвам да го чуя.:-)

Препоръчано: