Мазмуну:

IoT School Project Philips Hue: 19 кадам
IoT School Project Philips Hue: 19 кадам

Video: IoT School Project Philips Hue: 19 кадам

Video: IoT School Project Philips Hue: 19 кадам
Video: REVAN - THE COMPLETE STORY 2024, Ноябрь
Anonim
IoT School Project Philips Hue
IoT School Project Philips Hue

Бул мектеп үчүн жазууга туура келген колдонмо. Бул толук эмес жана мен аны колдоно аласыңбы, билбейм. API жөнүндө менин билимим эң аз. Биз аба ырайына, сырттан келген жарыкка жооп берген жарыктары бар интерактивдүү күзгү жасоону кааладык.

Мен Philips Hue чырагын Arduino менен кантип программалоого болорун карап көрдүм. Мында мен бардык кадамдарымды жана канчалык алыска кеткенимди түшүндүрөм. Мен Arduino менен Hue программалоодо ийгиликке жеткен жокмун, бирок бул жакшы башталыш деп ойлойм.

Мага бул керек болчу: Arduino hue чырак көпүрө 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 App

Расмий Philips Hue тиркемесин жүктөп алыңыз. Телефонуңузду Hue көпүрөсү күйгүзүлгөн тармакка туташтырыңыз.

3 -кадам: көпүрөнү туташтыруу

Көпүрөңүздү тармагыңызга туташтырыңыз жана туура иштеп жатат. Смартфон колдонмосу бир эле тармактагы жарыкты башкара аларын текшериңиз. Ал ошол эле Wi-Fi тармагында болушу керек.

4 -кадам: IP дареги

Андан кийин тармагыңыздагы көпүрөнүн IP дарегин табышыңыз керек. Колдонмодогу көпүрөгө туташуу үчүн шилтемени басыңыз жана жарыкты көзөмөлдөп көрүңүз.

5 -кадам:

Эгер баары иштесе, анда колдонмонун жөндөөлөр менюсуна өтүңүз. "Менин көпүрөмө", "Тармак жөндөөлөрүнө" өтүңүз. DHCP которуштурууну өчүрүп, көпүрөнүн IP дарегин көрөсүз. IP дарегине көңүл буруңуз, анан DHCPди кайра күйгүзүңүз.

6 -кадам: Реңкти оңдоо

Түстү оңдоо
Түстү оңдоо

Сиз муну жазып жатканда, Hue мүчүлүштүктөрдү оңдоо керек. Бул кадам үчүн сизге IP-дарек керек. Сиз кийинки сайтка киришиңиз керек.

/debug/clip.html

Интерфейс сүрөттө ушундай болот. Бул бардык веб -трафиктин жана hue RESTful интерфейсинин негизи.

Бул маалыматты Philips Hue сайтынын интерфейси жөнүндө алдым.

URL: бул чындыгында hue системасынын ичиндеги белгилүү бир ресурстун (нерсенин) жергиликтүү дареги. Бул жарык, жарык тобу же дагы башка нерселер болушу мүмкүн. Бул сиз бул буйруктун ичинде аракеттене турган объект.

Дене: бул эмнени жана кантип өзгөрткүңүз келгенин билдирүүчү бөлүгү. Бул жерде сиз JSON форматында өзгөртүүнү/кошууну каалаган ресурстун атын жана маанисин киргизесиз.

Метод: бул жерде сиз реңк чалуусу колдоно турган 4 HTTP ыкмасын тандай аласыз.

АЛУУ: бул дарек булагы жөнүндө бардык маалыматты алуу үчүн буйрук

PUT: бул даректүү булакты өзгөртүү буйругу

POST: бул даректелген булактын ичинде жаңы булакты түзүү буйругу

ӨЧҮРҮҮ: бул даректүү булакты жок кылуу буйругу Жооп: Бул аймакта сиз буйругуңузга жоопту көрөсүз. Ошондой эле JSON форматында.

7 -кадам: Келгиле, баштайлы

Келгиле, баштайлы
Келгиле, баштайлы

Эми бизге көпүрө сиз үчүн жараткан туш келди түзүлгөн колдонуучу аты керек. Муну толтуруу менен бир аласыз.

URL киргизиңиз:

/api/

Денеге салыңыз:

жана GET бас

Бул буйрук негизинен төмөндөгү касиеттери бар "колдонуучунун аттары отурган жерде /api ичинде жаңы ресурс түзүңүз" дейт. Башында, сиз ката аласыз, анткени бул Philips Hue коопсуздук кадамы. Баскычты басуу менен алар сиздин көпүрөгө физикалык мүмкүнчүлүгүңүз бар экенин далилдешет.

8 -кадам:

Сүрөт
Сүрөт

Азыр көпүрөдөгү баскычты басыңыз жана POST дегенди кайра басыңыз.

Эми сиз көпүрө сиз үчүн жасаган колдонуучу атын аласыз.

9 -кадам: Жарыктар менен бир нерсе кылалы

Жарыктар менен бир нерсе кылалы
Жарыктар менен бир нерсе кылалы

Колдонуучу атыңызды көчүрүп, аны төмөнкү сапка коюңуз.

Муну URL дарегиңизге киргизиңиз

/api//lights

GET бас

Сиз системаңыздагы бардык жарыктар жана алардын аттары менен JSON жообун алышыңыз керек.

10 -кадам:

Сүрөт
Сүрөт

Мен мектептен Hue Lights насыя алдым, мен колдонгон ID 3 менен. Мен бул жарык жөнүндө конкреттүү маалымат алууну каалайм.

Муну мурунтан бар болгон URLдин жанына коюңуз:

/api//lights/3

GET бас

Эми сиз Led 3 жөнүндө бардык маалыматты аласыз (эгерде сизде 1 сыяктуу башка номер болсо, анда ал жөнүндө маалыматты көрөсүз).

11 -кадам: Жарыкты башкаралы

Жарыкты башкаралы
Жарыкты башкаралы

Сиз "штатта" менин лидерим "күйүп" турганын көрүп турасыз. Биз жарыкты "абалда" башкарууну каалайбыз.

Муну мурунтан бар болгон URLдин жанына коюңуз: https:/// api// lights/ 3/ state

Кийинки сапты BODYге салыңыз

PUT басыңыз

Эми сиздин жарык өчөт! Денедеги маанини чын деп өзгөртсөңүз, жарык кайра күйөт.

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 лампасы жана Arduino көпүрөсү бар болчу жана кодду анча түшүнчү эмесмин. Мен анын кодун түшүнүү үчүн бир аз убакыт талап кылынган, бирок мен дагы деле аны түшүнбөйм.

Мен биринчи жолу бул китепкананы интернетке коштум.

#кошуу

Бул сиздин тармагыңыз үчүн (ал Hue Light лампасы менен бирдей болушу керек)

const char* ssid = ""; // бул жерге WiFi тармагыңызды киргизиңиз SSIDconst char* password = ""; // WiFi тармагыңыздын сырсөзүн бул жерге коюңуз

Бул көпүрөңүздүн идентификатору жана көпүрөңүз сизге берген колдонуучу аты. (80 кайда турганын билбейм, бирок бир аз изилдөө жүргүзгөнүмдө ал тармактар үчүн колдонулганын көрдүм).

// Реңк константалары const char hueHubIP = ""; // Hue hub IP const char hueUsername = ""; // Hue колдонуучу аты const int hueHubPort = 80;

// Hue өзгөрмөлөрү bool hueOn; // on/off int hueBri; // жарыктык мааниси узун hueHue; // түс мааниси String hueCmd; // Hue буйругу

белгисиз узун буфер = 0; // алынган маалыматтарды сактоо үчүн буфер кол коюлбаган узак 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 and else билдирүүсүн көрдүм. Бирок бул Ethernet кабели үчүн болгон, ошондуктан мен муну сыртта калтырууга аракет кылдым. Мен да кээде аны тууралоого аракет кылчумун, бирок көп маалымат менен али биле элекмин. Мен түшүнгөн коддогу кээ бир нерселер, сапта Hue жарыгына берилген маалыматтар.

void loop () {

// Төрт үлгүдөгү буйруктардын сериясы, алардын түсү кызыл менен кызгылттын ортосундагы эки жарыкты өчүрөт. Колдонула турган так буйруктар жөнүндө көбүрөөк маалымат алуу үчүн Hue API // документациясын окуңуз, бирок тырмакча белгилери качышы керектигин эске алыңыз.

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

command = "{" on / ": true, \" hue / ": 65280, \" sat / ": 255, \" bri / ": 255, \" o'tish time / ":"+String (random (15, 25))+"}"; setHue (2, буйрук);

command = "{" hue / ": 65280, \" sat / ": 255, \" bri / ": 255, \" өткөөл убакыт / ":"+Стринг (туш келди (15, 25))+"}"; setHue (1, буйрук);

command = "{" hue / ": 50100, \" sat / ": 255, \" bri / ": 255, \" switchtime / ":"+String (random (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 кардары;

эгер (client.connect (hueHubIP, hueHubPort)) {

while (client.connected ()) {

client.print ("PUT /api /"); client.print (hueUsername); client.print ("/lights/"); client.print (lightNum); // hueLight нөлгө негизделген, 1 client.println кошуу ("3/абал"); // бул жерде мен өңдүн атын жана stateclient.print ("Host:") өзгөрттүм; client.println (hueHubIP); client.print ("Content-Length:"); client.println (command.length ()); client.println ("Content-Type: text/plain; charset = UTF-8"); client.println (); // body client алдында бош сап.println (команда); // Hue буйругу

} client.stop (); чындыкка кайтуу; // буйрук аткарылды}

башка жалган кайтаруу; // буйрук аткарылган жок}

18 -кадам:

Экинчи логикада мен кээ бир сөздөрдү өзгөртүү менен ушундай кылдым. Иштедиби деп жүктөп койдум.

/* Сиздин логикаңыз жарыктын учурдагы абалына көз каранды болгон учурда жардамчы функция. * Бул бир катар глобалдык өзгөрмөлөрдү орнотот, аларды жарыктын күйүп же күйбөй турганын билүү үчүн текшере аласыз * жана өңү ж.

bool getHue (int lightNum) {

WiFiClient кардары;

эгер (client.connect (hueHubIP, hueHubPort)) {

client.print ("GET /api /"); client.print (hueUsername); client.print ("/lights/"); client.print (lightNum); client.println ("3/штат"); client.print ("Host:"); client.println (hueHubIP); client.println ("Мазмун түрү: application/json"); client.println ("тирүү кал"); client.println ();

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

19 -кадам:

Сүрөт
Сүрөт

Мен Philips Hue менен байланыш түзө алам деп ойлойм. Мен маалымат алам, бирок ал дагы эле колдонулушу керек.

Тилекке каршы, бул мен коддогондон да ашып түшөт. Эгер сиз жоопту билсеңиз, же реалдуу каталар болсо, аларды оңдош керек, мен муну уккум келет.:-)

Сунушталууда: