Мазмұны:

IoT мектебінің жобасы Philips Hue: 19 қадам
IoT мектебінің жобасы Philips Hue: 19 қадам

Бейне: IoT мектебінің жобасы Philips Hue: 19 қадам

Бейне: IoT мектебінің жобасы Philips Hue: 19 қадам
Бейне: Қызылордада 7 сынып оқушысы асық ойнайтын робот ойлап тапты 2024, Қараша
Anonim
IoT мектебінің жобасы Philips Hue
IoT мектебінің жобасы Philips Hue

Бұл мектепке мен жазуым керек болатын нұсқаулық. Бұл толық емес және сіз оны қолдана алатыныңызға сенімді емеспін. API туралы менің білімім - бұл ең төменгі деңгей. Біз интерактивті айна жасағымыз келді, оның артқы жағында ауа райына, сырттан түскен жарыққа және т.б.

Мен Philips Hue шамын Arduino -мен қалай бағдарламалауға болатынын қарастырдым. Бұл жерде мен өзімнің барлық қадамдарымды және қаншалықты жеткенімді түсіндіремін. Мен реңкті Arduino -мен бағдарламалай алмадым, бірақ бұл жақсы бастама деп ойлаймын.

Маған бұл қажет болды: Arduino реңк шамы көпір Philips Hue әзірлеуші тіркелгісі

Дереккөздер: https://www.developers.meethue.com/documentation/g…https://github.com/bsalinas/ArduinoHuehttps://arduino-esp8266.readthedocs.io/kz/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 -қадам: реңкіңізді түзету

Реңкіңізді түзету
Реңкіңізді түзету

Сіз мұны жазған кезде, сіз өзіңіздің реңкіңізді түзетуіңіз керек. Бұл қадам үшін сізге IP-адрес қажет. Сіз келесі сайтқа кіруіңіз керек.

/debug/clip.html

Интерфейс суреттегідей болады. Бұл барлық веб -трафик пен реңктің RESTful интерфейсінің негізі.

Мен бұл ақпаратты Philips Hue сайтының тыныш интерфейсі туралы алдым.

URL: бұл шын мәнінде реңк жүйесіндегі белгілі бір ресурстың (заттың) жергілікті мекенжайы. Бұл жарық, шамдар тобы немесе басқа да заттар болуы мүмкін. Бұл сіз осы пәрменде өзара әрекеттесетін объект.

Дене: бұл нені және қалай өзгерткіңіз келетінін сипаттайтын хабардың бөлігі. Мұнда сіз JSON форматында өзгерткіңіз/қосқыңыз келетін ресурстың атын және мәнін енгізесіз.

Әдіс: мұнда сіз реңк қоңырауы қолданатын 4 HTTP әдістерін таңдай аласыз.

GET: бұл мекен -жай ресурсы туралы барлық ақпаратты алу командасы

PUT: бұл адрестелген ресурсты өзгертуге арналған команда

POST: бұл адрестелген ресурс ішінде жаңа ресурс құру пәрмені

ЖОЮ: бұл адрестелген ресурсты жою пәрмені Жауап: Бұл аймақта сіз өз пәрменіңізге жауапты көресіз. Сонымен қатар JSON форматында.

7 -қадам: бастайық

Бастайық
Бастайық

Енді бізге көпір сіз үшін жасайтын кездейсоқ құрылған пайдаланушы аты қажет. Сіз оны толтыру арқылы біреуін аласыз.

URL мекенжайын енгізіңіз:

/api/

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

{«devicetype»: «my_hue_app#iphone пайдаланушы аты»}

және GET түймесін басыңыз

Бұл пәрмен негізінен «api ішінде жаңа ресурс жасаңыз» дегенді білдіреді (мұнда пайдаланушы аттары отырады), келесі қасиеттері бар. Алдымен сіз қате аласыз, себебі бұл Philips Hue қауіпсіздік қадамы. Түймені басу арқылы олар сіздің көпірге физикалық қол жеткізе алатындығыңызды дәлелдейді.

8 -қадам:

Кескін
Кескін

Енді көпірдегі түймені басып, POST түймесін қайтадан басыңыз.

Енді сіз көпір сіз үшін жасаған пайдаланушы атын аласыз.

9 -қадам: Жарықпен бірдеңе жасайық

Жарықпен бірдеңе жасайық
Жарықпен бірдеңе жасайық

Пайдаланушы атыңызды көшіріп, келесі жолға қойыңыз.

Мұны URL мекенжайына енгізіңіз

/api//шамдары

GET түймесін басыңыз

Сіз жүйеңіздегі барлық шамдар мен олардың аттары бар JSON жауабын алуыңыз керек.

10 -қадам:

Кескін
Кескін

Мен мектептен реңк шамдарын алдым, менде идентификаторы 3 бар. Мен осы жарық туралы нақты ақпарат алғым келеді.

Мұны бұрыннан бар URL мекенжайының жанына қойыңыз:

/api//шамдары/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 көпірі болды және кодты аз түсіндім. Мен оның кодын түсінуіме біраз уақыт кетті, бірақ мен оны әлі де түсінбеймін.

Мен бұл кітапхананы алғаш рет интернетке қостым.

#қосу

Бұл сіздің желіңізге арналған (ол реңк шамы сияқты болуы керек)

const char* ssid = «»; // мұнда Wi -Fi желісін SSIDconst char* password = «» қойыңыз; // WiFi желісінің құпия сөзін осында қойыңыз

Бұл сіздің көпірдің идентификаторы және көпір сізге берген пайдаланушы аты. (Мен 80 -нің қайда екенін білмеймін, бірақ мен зерттеу жүргізгенде, ол желілер үшін қолданылғанын көрдім).

// Реңк константалары const char hueHubIP = «»; // Реңк торабы IP const char hueUsername = «»; // Hue пайдаланушы аты const int hueHubPort = 80;

// Hue айнымалылары bool hueOn; // қосу/өшіру int hueBri; // жарықтық мәні long hueHue; // реңк мәні String hueCmd; // Реңк командасы

белгісіз ұзын буфер = 0; // алынған деректерді сақтауға арналған буфер белгісіз ұзақ адрес;

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 кабелі үшін болды, сондықтан мен оны қалдырмауға тырыстым. Мен кейде оны реттеуге тырыстым, бірақ мен әлі көп деректерді білмедім. Мен түсінген кодтағы кейбір нәрселер, жолда реңк шамына берілген деректер.

void loop () {

// Түсті қызыл мен қызғылт арасындағы екі шамды өшіретін төрт үлгі пәрмендер сериясы. Қолданылатын нақты командалар туралы толығырақ ақпарат алу үшін Hue API // құжаттамасынан оқыңыз, бірақ тырнақша белгілерін алып тастау керек екенін ескеріңіз.

String пәрмені = «{» on / «: true, \» hue / «: 50100, \» sat / «: 255, \» bri / «: 255, \» көшу уақыты / «:»+Жол (кездейсоқ (15, 25))+«}»; setHue (1, команда);

command = «{» on / «: true, \» hue / «: 65280, \» sat / «: 255, \» bri / «: 255, \» көшу уақыты / «:»+Жол (кездейсоқ (15, 25))+«}»; setHue (2, команда);

command = «{» hue / «: 65280, \» sat / «: 255, \» bri / «: 255, \» көшу уақыты / «:»+Жол (кездейсоқ (15, 25))+«}»; setHue (1, команда);

command = «{» hue / «: 50100, \» sat / «: 255, \» bri / «: 255, \» көшу уақыты / «:»+Жол (кездейсоқ (15, 25))+«}»; setHue (2, команда);

}

17 -қадам:

Келесі код логикалық болды, бірақ Arduino -да Bool жазу керек. Алғашында клиент деген сөздің кесірінен көп қателіктер алдым. Мен оны қарап шықтым, кейбір кодта «WifiClient клиенті;» жолы қолданылғанын көрдім. Сондықтан мен оны қолдандым және ол жұмыс істеді.

If операторында сіз client.print жиі көресіз. Егер сіз кодты қарасаңыз, сіз бұрын енгізілген URL бөліктерге бөлінгенін көресіз. Енді өзіңіздің кодты енгізіңіз. Мен үшінші жарықдиодты шамды таңдауым керек болды.

/ * 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 («/lights/»); client.print (lightNum); // hueLight нөлге негізделген, 1 client.println қосыңыз («3/state»); // мұнда мен реңк атауы мен stateclient.print («Хост:») өзгердім; 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 (команда); // Реңк командасы

} client.stop (); шындықты қайтару; // команда орындалды}

әйтпесе жалған қайтару; // команда орындалмады}

18 -қадам:

Екінші логикалық кезде мен кейбір сөздерді өзгерту арқылы дәл солай жасадым. Мен оны жұмыс істегенін көру үшін жүктедім.

/* Егер сіздің логикаңыз жарықтың ағымдағы жағдайына байланысты болса, көмекші функция. * Бұл жарықтың жанып тұрғанын немесе түсінің жоқтығын білу үшін тексеруге болатын бірқатар жаһандық айнымалыларды орнатады * және реңк т.б. Командаларды жіберу үшін қажет емес */

bool getHue (int lightNum) {

WiFiClient клиенті;

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

client.print («GET /api /»); client.print (hueUsername); client.print («/lights/»); client.print (lightNum); client.println («3/state»); client.print («Хост:»); 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 (); шындықты қайтару; // capapt on, bri, hue} else return false; // оқу қатесі, bri, hue}

19 -қадам:

Кескін
Кескін

Менің ойымша, мен Philips Hue -мен байланыс орната аламын. Мен ақпарат аламын, бірақ ол әлі де қолданылуы керек.

Өкінішке орай, бұл мен кодтай алатыннан асып түседі. Егер сіз жауапты білсеңіз немесе түзетуді қажет ететін қателер болса, мен оны естуге қуаныштымын.:-)

Ұсынылған: