Mündəricat:
- Addım 1: Başlayın
- Addım 2: Hue Tətbiqi
- Addım 3: Körpünü bağlayın
- Addım 4: IP ünvanı
- Addım 5:
- Addım 6: Hue'nuzu düzəldin
- Addım 7: Başlayaq
- Addım 8:
- Addım 9: İşıqlarla Bir şey edək
- Addım 10:
- Addım 11: İşığı idarə edək
- Addım 12:
- Addım 13:
- Addım 14:
- Addım 15:
- Addım 16:
- Addım 17:
- Addım 18:
- Addım 19:
Video: IoT Məktəbi Layihəsi Philips Hue: 19 Addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:44
Bu məktəb üçün yazmalı olduğum bir dərslikdir. Tam deyil və hətta istifadə edə biləcəyinizə əmin deyiləm. API haqqında biliklərim minimumdur. Arxasında hava şəraiti, kənardan gələn işıq və s.
Philips Hue lampasını Arduino ilə necə proqramlaşdıra biləcəyimə baxdım. Burada bütün addımlarımı və nə qədər irəli getdiyimi izah edirəm. Hue proqramını Arduino ilə proqramlaşdırmağı bacarmadım, amma bunun yaxşı bir başlanğıc olduğunu düşünürəm.
Buna ehtiyacım var: bir Arduino çalar lampası körpü Philips Hue geliştirici hesabı
Mənbələr: 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-…
Addım 1: Başlayın
API sənədlərinə girməzdən əvvəl bir geliştirici olaraq qeydiyyatdan keçməlisiniz. Pulsuzdur, amma şərtləri qəbul etməlisiniz. Burada edə bilərsiniz>
Addım 2: Hue Tətbiqi
Rəsmi Philips Hue Tətbiqini yükləyin. Telefonunuzu Hue körpüsünün aktiv olmasını istədiyiniz şəbəkəyə qoşun.
Addım 3: Körpünü bağlayın
Körpünüzü şəbəkənizlə birləşdirin və düzgün işləyir. Smartfon tətbiqinin eyni şəbəkədəki işıqları idarə edə biləcəyini sınayın. Eyni Wi-Fi şəbəkəsində olmalıdır.
Addım 4: IP ünvanı
Sonra şəbəkənizdəki körpünün IP ünvanını kəşf etməlisiniz. Tətbiqdəki körpüyə qoşulmaq və işıqları idarə etməyə çalışmaq üçün linki vurun.
Addım 5:
Hər şey işləyirsə, tətbiqdəki parametrlər menyusuna keçin. "Körpüm" ə, "Şəbəkə parametrləri" nə gedin. DHCP keçidini söndürün və körpünün IP ünvanını görürsünüz. IP ünvanını qeyd edin, sonra DHCP -ni yenidən yandırın.
Addım 6: Hue'nuzu düzəldin
Bunu yazanda Hue'nuzu düzəltməlisiniz. Bu addım üçün IP ünvanına ehtiyacınız var. Növbəti saytı ziyarət etməlisiniz.
/debug/clip.html
Şəkildə interfeys belə görünəcək. Bu, bütün veb trafikinin və hue RESTful interfeysinin əsasını təşkil edir.
Philips Hue saytının Restful interfeysi haqqında bu məlumatı aldım.
URL: bu əslində hue sistemindəki müəyyən bir mənbənin (şeyin) yerli ünvanıdır. Bu işıq, bir qrup işıq və ya daha çox şey ola bilər. Bu komanda daxilində qarşılıqlı əlaqə quracağınız obyektdir.
Bədən: bu, nəyi və necə dəyişdirmək istədiyinizi izah edən mesaj hissəsidir. Burada JSON formatında dəyişdirmək/əlavə etmək istədiyiniz mənbənin adını və dəyərini daxil edirsiniz.
Bir üsul: burada hue zənginin istifadə edə biləcəyi 4 HTTP metodundan birini seçə bilərsiniz.
ƏLAVƏ EDİN: bu, ünvanlanan mənbə haqqında bütün məlumatları əldə etmək əmridir
PUT: bu ünvanlı bir mənbəni dəyişdirmək əmridir
POST: bu, ünvanlanmış mənbənin daxilində yeni bir qaynaq yaratmaq əmridir
SİL: bu ünvanlı mənbəni silmək əmridir Cavab: Bu sahədə əmrinizə verilən cavabı görəcəksiniz. Həm də JSON formatında.
Addım 7: Başlayaq
İndi körpünün sizin üçün yaratdığı təsadüfi bir istifadəçi adına ehtiyacımız var. Bunu doldurmaqla birini alacaqsınız.
URL daxil edin:
/api/
Bədənə qoyun:
və GET düyməsini basın
Bu əmr əsasən "xahiş edirəm /api içərisində yeni bir qaynaq yaradın" (istifadəçi adlarının oturduğu yer) deyərək aşağıdakı xüsusiyyətlərə malikdir. Əvvəlcə bir səhv alacaqsınız və bunun səbəbi Philips Hue -nin təhlükəsizlik addımıdır. Düyməni basaraq körpüyə fiziki girişinizin olduğunu sübut edirlər.
Addım 8:
İndi körpüdəki düyməni basın və yenidən POST düyməsini basın.
İndi körpünün sizin üçün yaratdığı bir istifadəçi adı alacaqsınız.
Addım 9: İşıqlarla Bir şey edək
İstifadəçi adınızı kopyalayın və aşağıdakı sətirə qoyun.
Bunu URL -ə daxil edin
/api//işıqlar
GET düyməsini basın
Sisteminizdəki bütün işıqlar və adları olan bir JSON cavabı almalısınız.
Addım 10:
Hue Lights -ı məktəbdən götürdüm, istifadə etdiyim id 3 -lüdür. Bu işıq haqqında xüsusi məlumat istəyirəm.
Bunu artıq əldə etdiyiniz URL -nin yanına qoyun:
/api//işıqlar/3
GET düyməsini basın
İndi Led 3 haqqında bütün məlumatları əldə edirsiniz (1 kimi başqa bir nömrəniz varsa, bu nömrəni görürsünüz).
Addım 11: İşığı idarə edək
"Vəziyyətdə" rəhbərimin "açıq" olduğunu görürsünüz. İşığı "vəziyyətdə" idarə etmək istəyirik.
Bunu artıq əldə etdiyiniz URL -nin yanına qoyun: https:/// api// lights/ 3/ state
Növbəti sətri BODY -ə qoyun
PUT düyməsini basın
İndi işığınız sönəcək! Bədəndəki dəyəri doğru olaraq dəyişdirin və işıq yenidən açılacaq.
Addım 12:
İndi hər şey işləyir, bunu Arduino ilə etmək istəyirəm. Açıq rəng dəyişikliyi etmək üçün Philips Hue -in verdiyi bağlantıya baxdım. Ancaq bunun üçün Pythona ehtiyacınız var, Python ilə heç işləməmişəm, buna görə başqa bir şey axtardım.
Bu koda baxmaq istəsəniz burada Github bağlantım var:
github.com/bsalinas/ArduinoHue
Addım 13:
Bu geliştirici saytından arduino -ya necə məlumat əldə edə biləcəyimə baxdım. Çox vaxt dili başa düşmədim. Ancaq bir saytda James Bruce -dan bir kod tapdım.
Bu veb saytın bağlantısıdır.
www.makeuseof.com/tag/control-philips-hue-lights-arduino-and-motion-sensor/
Addım 14:
Əvvəlcə Ethernet kabeli istifadə etdiyini gördüm. Yalnız Hue ampulüm və Arduino körpüsü və kod haqqında az anlayışım var idi. Onun kodunu başa düşməyim bir müddət çəkdi, amma hələ də tam anlamıram.
İlk dəfə bu kitabxananı internet üçün əlavə etdim.
#daxil edin
Bu şəbəkəniz üçündür (Hue Light ampul ilə eyni olmalıdır)
const char* ssid = ""; // WiFi şəbəkənizi bura qoyun SSIDconst char* password = ""; // WiFi şəbəkə parolunuzu bura daxil edin
Bunlar körpünüzün kimliyi və körpünüzün sizə verdiyi istifadəçi adıdır. (80 -in harada olduğunu bilmirəm, amma bir az araşdırma apardığımda bunun şəbəkələr üçün istifadə edildiyini gördüm).
// Hue sabitləri const char hueHubIP = ""; // Hue hub IP const char hueUsername = ""; // Hue istifadəçi adı const int hueHubPort = 80;
// Hue dəyişənləri bool hueOn; // aç/söndür int hueBri; // parlaqlıq dəyəri uzun hueHue; // hue dəyəri String hueCmd; // Hue əmri
işarəsiz uzun tampon = 0; // alınan məlumatların saxlanması üçün bufer imzasız uzun addr;
Addım 15:
Boşluq qurmaq üçün internet bağlantısı üçün ən çox etdim. Bu kodda Arduino, şəbəkəyə qoşula biləcəyini araşdırır.
void setup () {Serial.begin (9600);
Serial.println ();
Serial.printf (" %s -ə qoşulur", ssid);
WiFi.begin (ssid, parol);
isə (WiFi.status ()! = WL_CONNECTED) {
gecikmə (500);
Serial.print ("."); }
Serial.println ("bağlı"); }
Addım 16:
James döngəsində, bir If və else ifadəsi olduğunu gördüm. Ancaq bu, Ethernet kabeli üçün idi, buna görə də bunu kənara qoymağa çalışdım. Mən də bəzən düzəltməyə çalışdım, amma çox məlumatla hələ bilmirdim. Anladığım koddakı bəzi şeylər, sətirdə Hue işığına verilən məlumatlardır.
boşluq döngəsi () {
// Rəngi qırmızı və çəhrayı arasında iki işığı söndürən dörd nümunə əmrdən ibarət bir sıra. Hue əmrləri haqqında daha çox məlumat üçün Hue API // sənədlərini oxuyun, ancaq qeyd edin ki, qiymət işarələrindən qaçmaq lazımdır.
String əmri = "{" on / ": true, \" hue / ": 50100, \" sat / ": 255, \" bri / ": 255, \" o'tish zamanı / ":"+String (təsadüfi (15, 25))+"}"; setHue (1, əmr);
command = "{" on / ": true, \" hue / ": 65280, \" sat / ": 255, \" bri / ": 255, \" o'tish zamanı / ":"+String (təsadüfi (15, 25))+"}"; setHue (2, əmr);
command = "{" ton / ": 65280, \" sat / ": 255, \" bri / ": 255, \" keçid vaxtı / ":"+String (təsadüfi (15, 25))+"}"; setHue (1, əmr);
command = "{" ton / ": 50100, \" sat / ": 255, \" bri / ": 255, \" keçid vaxtı / ":"+String (təsadüfi (15, 25))+"}"; setHue (2, əmr);
}
Addım 17:
Növbəti kod Boolean idi, ancaq Arduinoda Bool yazmalısınız. Əvvəlcə müştəri sözünə görə çoxlu səhvlər aldım. Buna görə baxdım və gördüm ki, bəzi kodlar "WifiClient müştəri;" xəttini istifadə edir. Buna görə istifadə etdim və işlədi.
İf ifadəsində tez -tez client.print görürsünüz. Kodu araşdırsanız, əvvəllər daxil etdiyiniz URL -nin parçalara bölündüyünü görəcəksiniz. İndi öz kodunuzu daxil edin. Üçüncü LED işığımı seçmək məcburiyyətində qaldım.
/ * setHue (), JSON formatında (əsasən Javascript üslubunda dəyişənlər və dəyərlər dəsti olan) yüngül bir rəqəm və * düzgün biçimlendirilmiş bir əmr sətri keçməli olan əsas əmr funksiyamızdır. Daha sonra sadə bir HTTP PUT sorğusu göndərir başlanğıcda göstərilən IP -də körpü. */
bool setHue (int lightNum, String əmri) {
WiFi müştəri;
əgər (client.connect (hueHubIP, hueHubPort)) {
while (client.connected ()) {
client.print ("PUT /api /"); client.print (hueUsername); client.print ("/işıqlar/"); client.print (lightNum); // hueLight sıfıra əsaslanır, 1 client.println ("3/state") əlavə edin; // burada hue adını və stateclient.print ("Host:") dəyişdirdim; müştəri.println (hueHubIP); client.print ("Məzmun-Uzunluq:"); client.println (command.length ()); client.println ("Məzmun Tipi: mətn/düz; charset = UTF-8"); müştəri.println (); // bədən müştəri qarşısında boş sətir.println (əmr); // Hue əmri
} client.stop (); doğru qayıtmaq; // əmr icra edildi}
əks halda yalan; // əmr uğursuz oldu}
Addım 18:
İkinci Boolean -da, bəzi sözləri dəyişdirməklə eyni şeyi etdim. İşləyib -işləmədiyini görmək üçün yüklədim.
/* Məntiqinizin işığın hazırkı vəziyyətindən asılı olması halında köməkçi funksiyası. * Bu, bir işığın hazırda olub olmadığını öyrənmək üçün yoxlaya biləcəyiniz bir sıra qlobal dəyişənləri təyin edir * və rəng və s. Yalnız əmrləri göndərmək üçün lazım deyil */
bool getHue (int lightNum) {
WiFi müştəri;
əgər (client.connect (hueHubIP, hueHubPort)) {
client.print ("GET /api /"); client.print (hueUsername); client.print ("/işıqlar/"); client.print (lightNum); client.println ("3/dövlət"); client.print ("Host:"); müştəri.println (hueHubIP); client.println ("Məzmun növü: application/json"); client.println ("canlı tut"); müştəri.println ();
while (client.connected ()) {if (client.available ()) {client.findUntil ("\" on / ":", "\ 0"); hueOn = (client.readStringUntil (',') == "doğru"); // işıq yanarsa, dəyişəni true client.findUntil ("\" bri / ":", "\ 0") olaraq təyin edin; hueBri = client.readStringUntil (',').toInt (); // dəyişəni parlaqlıq dəyərinə təyin edin client.findUntil ("\" hue / ":", "\ 0"); hueHue = client.readStringUntil (',').toInt (); // dəyər dəyişikliyini hue dəyər fasiləsinə təyin edin; // hələ digər işıq atributlarını ələ keçirmir}} client.stop (); doğru qayıtmaq; // captured on, bri, hue} else false return; // oxuma xətası, bri, hue}
Addım 19:
Philips Hue ilə əlaqə qura biləcəyimi düşünürəm. Məlumat alıram, amma hələ də istifadə olunmalıdır.
Təəssüf ki, bu kodlaşdıra biləcəyimdən kənara çıxır. Cavabı bilirsinizsə və ya düzəldilməsi lazım olan real səhvlər varsa, eşitmək istərdim.:-)
Tövsiyə:
Philips Hue Lightstripini ayırın və uzatın: 8 addım (şəkillərlə)
Philips Hue Lightstrip -i ayırın və genişləndirin: Mən daha çox " ağıllı ev " evimə gadgets yazın və oynadığım şeylərdən biri Philips Hue Lightstrip -dir. Bir tətbiqdən və ya Alexa kimi ağıllı köməkçidən idarə edilə bilən LED işıqlar zolağıdır
Delta Məktəbi Simpoziumu üçün LED Qutu: 7 addım
Delta Məktəbi Simpoziumu üçün LED Qutu:
Gledopto: Ucuz Philips Hue Light Strip Alternativi: 3 Addım
Gledopto: Ucuz Philips Hue Light Strip Alternativi: Philips Hue hazırda Philips Hue Light şeritlərini cəmi 2 metrə 71-90 dollara satır. Çox absurd bir qiymət tapdım və alternativ axtarmağa başladım. Gledopto adlı bir marka ilə tanış oldum ki, bu da LED şerit idarəedicilərini mükəmməl edir
Səslə İdarə Edilən Kol Çəkmə - Arduino Məktəbi Layihəsi: 4 Addım (Şəkillərlə)
Səslə İdarə Edilən Kol Çəkmə - Arduino Məktəbi Layihəsi: Arduino ilə ilk dəfədir işləyirəm və belə bir şeylə işləyirəm, səhvlər etsəm üzr istəyirəm! Rəsm və musiqi olan hobbilərimi düşünəndə bu fikri aldım. Buna görə də ikisini bir araya gətirməyə çalışdım! Bir sel
DIY Philips Hue Panel İşıq: 4 Addım (Şəkillərlə birlikdə)
DIY Philips Hue Panel İşığı: Bu yaxınlarda yataq otağım üçün bəzi Philips Hue işıqları aldım. Əla! Alexa istifadə edərək onları səsimlə idarə edə bilərəm və telefonum vasitəsilə də idarə edə bilərəm. Rəng dəyişən panel işığı tapmağa çalışdım, amma bildiyiniz kimi, Philips Hue bunu bilmir