реклама
Гамата от светлини на Philips Hue със сигурност не е евтина (има някои алтернативи Алтернативи на Philips Hue, които всъщност си заслужаватСистемата Philips Hue води до зареждане, когато става въпрос за интелигентно осветление, но има някои достойни алтернативи. Подбрахме три, които предлагат един и същ основен набор от функции и хакане. Прочетете още ), но едно, което наистина оценявам, е добре документираното API Какво представляват API и как отворените API променят интернетЗамисляли ли сте се как програмите на вашия компютър и уебсайтовете, които посещавате, „разговарят“ помежду си? Прочетете още за създаване на собствени приложения на Hue. Днес ще ви покажа как да управлявате светлините си Hue от Arduino - след това ще добавя прост сензор за движение.
Защо правим това? Защото системите за домашна автоматизация могат да бъдат доста твърди и скъпи. Научавайки как да контролирате Hue от Arduino, вие отваряте вратите на различни проекти, направени по поръчка за домашна автоматизация, които просто не могат да бъдат победени от компоненти, които не са на рафта. Ако хакването на неща не е вашето нещо, опитайте ги
8 приказни Hue приложения 7-те най-добри приложения за Philips Hue за Android и iPhoneТърсите най-добрите приложения на Philips Hue, които да използвате с вашите умни светлини? Ето няколко страхотни приложения за iPhone и Android. Прочетете още вместо.Системата Hue
Нека да получите малко техническа информация, за да знаете основните системи, с които работите. Hue светлините създават a мрежова мрежа Мрежеви мрежи: Бъдещето на комуникациятаМрежевите мрежи са почти неуязвими. В мрежова мрежа няма точки на задушаване, през които преминава целият трафик. Вместо това информацията се предава от едно устройство на друго, докато не достигне своето местоназначение. Прочетете още , използвайки безжичен протокол от малък обхват, наречен ZigBee - конкретно, те са ZigBee Light Link сертифициран, което означава, че други продукти на ZLL също трябва да работят заедно с Hue (на теория).
Макар и технически малък обхват, мрежовата функция на ZigBee означава, че всяка нова крушка разширява мрежата, препращайки съобщения към други крушки. Това означава, че ако имате проблеми с контрола на светлина от другата страна на къщата, опитайте да поставите друга светлина между двете.
Zigbee е страхотен протокол, но е доста различен от Wi-Fi или кабелна компютърна мрежа, така че се нуждаем от Philips Hue Bridge, за да се присъединим към двете заедно. Мостът Hue работи с модифициран фърмуер с отворен код, който излъчва основен уеб сървър.
Именно чрез взаимодействие с този локален уеб сървър можете да разберете текущото състояние на светлините и да ги контролирате.
Тя е много проста система и е узряла за проекти на направи си сам. Кудо на Philips, за да направи това нещо толкова хакерско.
Започвайки
Преди да получите достъп до документацията за API, ще трябва регистрирайте се като програмист. Това е безплатно, но трябва да приемете Общите условия. Направете това сега.
Всеки, запознат със стандартните уеб услуги или Javascript, трябва да може да работи с Hue: всички данни се предават и получават като JSON пакети Какво е JSON? A Layman's OverviewНезависимо дали планирате да бъдете уеб разработчик или не, добре е поне да знаете какво е JSON, защо е важно и защо се използва навсякъде в мрежата. Прочетете още .
За да разгледате това в действие, ще трябва да знаете IP адреса на вашия мост Hue. Има няколко начина да направите това:
- Вижте таблицата за присвояване на DHCP адреса в администраторския интерфейс на вашия рутер
- Стартирайте програма за картографиране на мрежата като Начало на скенера за IP
- Опитайте Инструмент за брокери на Philips UPnP
- Ping „philips-hue.home“
Когато сте готови, продължете напред и го въведете в адресната лента на браузъра си отстраняване на грешки / clip.html добавен към URL адреса. В моя случай това беше:
http://192.168.1.216/debug/clip.html
Това е инструмент за отстраняване на грешки, който ви позволява да изпращате и получавате JSON пакетите чрез обикновен уеб интерфейс. Първата стъпка е да активирате профила на разработчика на самия Hue Bridge - който е деактивиран по подразбиране от съображения за сигурност. Поставете следното в поле BODY, оставете URL адреса като /api/и изпратете POST заявка, като щракнете върху бутон за публикуване:
{"devicetype": "тест потребител", "потребителско име": "newdeveloper"}
Първия път, когато направите това, ще видите „бутон за връзка не е натиснат“ някъде в отговора. Това е функция за защита, която изисква всяко ново приложение, което използвате, да бъде оторизирано физически. Отидете и намерете вашия Bridge, натиснете бутона и отново изпратете същото запитване в рамките на 30 секунди. Този път ще получите различен отговор и потребителят ще бъде упълномощен. Ако искате да използвате друго потребителско име, прочетете документите за API за създаване на потребители. Засега това ще е достатъчно.
След като потребителят ви се настрои, става основният URL адрес, с който трябва да взаимодействате /api/newdeveloper/. Можете да изпратите GET заявка, за да разберете всичко, което вашият Bridge в момента знае за свързани светлини, аларми, сцени и кратък дневник на приложенията, които са били използвани. Ето примерна част от информацията за състоянието, съдържаща се за една крушка.
"state": {"on": true, "bri": 254, "нюанс": 14910, "sat": 144, "ефект": "none", "xy": [0.4596, 0.4105], "ct": 369, "alarm": "none", "colormode": "ct", "dosechable": false}, "type": "Extended color light", "name": "Спалня 1", "modelid": "LCT001",
Имайте предвид, че "На": вярно състояние всъщност не ви показва дали крушката е включена или не; само това според настройките на Bridge, то Трябва бъди на. "Недостъпен": фалшива може да показва както крушка, която е прекалено далеч, или просто е изключена при захранването.
Последен пример, преди да интегрираме това в Arduino: уверете се, че една от вашите светлини е видима и включена и знаете кое число е. Променете URL адреса на /api/newdevelopers/lights/1/state (промяна на номера на светлината ви) и изпратете PUT заявка със следните данни:
{"оттенък": 50100, "sat": 255, "bri": 255}
Трябва да видите как вашата светлина реагира така:
Това, което сте направили, е да натиснете ново състояние към крушката. Можете също така да добавите „tranitiontime“, който е примитивен метод на анимация, показващ колко секунди искате да направите промяната на състоянието.
Цветът може да бъде зададен множество различни начини, но за съжаление няма лесен начин за изпращане на RGB стойност. В горния пример изпратихме оттенък, сбурация и BRIghtness. Опитайте да промените стойността на оттенъка и отново да изпратите PUT заявката.
Работа от Ардуино
Има съществуваща библиотека Hue / Arduino, наречена ArduinoHue към които самите Philips се свързват в документацията за API, но проблемът с тази библиотека е, че тя комуникира през USB връзката с вашия компютър, който също трябва да работи с Python приложение постоянно. Eugh. Можете също така да оставите вашия компютър да управлява цялото нещо в този момент и да изрежете Arduino изцяло.
Вместо това ще ви покажа как да контролирате Hue от Arduino използвайки Ethernet щит. Ардуино не трябва да бъде свързан с компютър, така че може да работи независимо навсякъде, където можете да поставите Ethernet кабел. Всъщност трябва да работи и с Wi-Fi щит, но нямам с кого да играя.
Ако искате да пропуснете напред, пълният примерен код е вграден отдолу, или на разположение тук. Адаптирах го от пример, публикуван от Gilson Oguime. Ако никога досега не сте играли с вашия Ethernet щит, може да искате да преминете бързо през урок за уеб клиент - Ще приема някакво ниво на запознаване с това и няма да покрива кода, използван за установяване на мрежов IP и т.н. Ние също ви показахме как да създадете мини уеб сървър с Ethernet екрана Дайте на своя проект Arduino собствения си мини-уеб сървър, с Ethernet щитПреди малко ви показах как да настроите интернет система за контрол на вашия Arduino - но тя трябваше да остане свързана с компютър чрез USB, за да поддържа интернет връзката ... Прочетете още .
Създаване на промени в състоянието
Създаването на ново състояние за натискане към крушките е прост случай за създаване на ново низ променлива и бягство от всички двойни кавички. Добавих a случаен () функционира и там, за да създаде малко динамична анимация. Опитайте да направите и променливия оттенък на оттенъка за различни цветове.
String command = "{\" on ": true, \" hue \ ": 50100, \" sat \ ": 255, \" bri \ ": 255, \" tranitiontime \ ":" + String (произволно (15, 25)) + "}";
Изпращане на командата
За да изпратите действително командата, имате помощна функция, наречена setHue (), която приема лекия номер и командния низ като аргумент, като така:
setHue (1, команда);
Всичко, което прави след това, е да се свърже към моста, изплюва командата като PUT заявка, заедно с всички други глупости, които създаването на HTTP заявка включва.
client.print ("PUT / api /"); client.print (hueUsername); client.print ( "/ светлини /"); client.print (lightNum); client.println ("/ състояние HTTP / 1.1"); client.println ( "проверка на връзката"); client.print ("Хост:"); client.println (hueHubIP); client.print ("Дължина на съдържанието:"); client.println (command.length ()); client.println ("Тип съдържание: текст / обикновен; кодировка = UTF-8 "); client.println (); // празен ред пред тялото. client.println (команда); // Hue команда.
Добавяне на сензор за движение
И накрая, аз свързах прост HC-SR501 сензор за движение към цифров I / O пин 2. При откриване на движение серия от състояния се изтласкват към моста за 2 крушки, за да създадат бавна, динамична анимация. Когато сензорът за движение се деактивира, една и съща команда се изпраща и на двете. В идеалния случай те ще бъдат върнати в състоянието, в което са били, преди да бъде открито движението, но логиката не е толкова умна - просто ще ги включваме и изключваме.
Ограничения
Макар и да е неоптимизиран код, отнема почти секунда на мрежовия интерфейс на Arduino, за да изпрати единична заявка за команда. Тествах същата команда от Mac, използвайки същата Ethernet връзка, и тя беше способна от десет до двадесет пъти по-голяма от тази скорост (ето AppleScript в случай, че искате да тествате). Следователно всякаква бърза анимация (опитвах се да създам трептящ ефект на свещ) просто не е възможна от Arduino. Това не трябва да е проблем за повечето проекти, само за светлинни анимации с висока скорост, но е добре да сте наясно с ограничението.
Също така е трудно напълно да анализирате всеки JSON отговор, който се върнете от моста; просто няма достатъчно RAM памет на Arduino, за да съхранява всички необработени данни. Поради тази причина може да искате да се ограничите до изпращане.
Hack the Hue
Сега, когато сте въоръжени със знанието как да контролирате Hue напълно независимо, това отваря свят на хакове за домашна автоматизация на Hue. Истинският въпрос е: какво ще направиш?
Джеймс има бакалавърска степен по изкуствен интелект и е сертифициран като CompTIA A + и Network +. Той е водещ разработчик на MakeUseOf и прекарва свободното си време, играейки VR пейнтбол и настолни игри. Той изгражда компютри още от дете.