İçindekiler:
- 1. Adım: Başlayın
- 2. Adım: Hue Uygulaması
- 3. Adım: Köprüyü Bağlayın
- 4. Adım: IP Adresi
- Adım 5:
- 6. Adım: Tonunuzda Hata Ayıklayın
- 7. Adım: Başlayalım
- Adım 8:
- 9. Adım: Işıklarla Bir Şeyler Yapalım
- Adım 10:
- Adım 11: Işığı Kontrol Edelim
- Adım 1/2:
- Adım 13:
- Adım 14:
- Adım 15:
- 16. Adım:
- Adım 17:
- 18. Adım:
- Adım 19:
Video: IoT Okulu Projesi Philips Hue: 19 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:18
Bu, okul için yazmam gereken bir el kitabı. Tamamlanmadı ve onu kullanıp kullanamayacağınızdan bile emin değilim. API'ler hakkındaki bilgim minimum düzeyde. Arkasında hava durumuna, dışarıdan gelen ışığa vs. tepki veren ışıklar ile interaktif bir ayna yapmak istedik.
Bir Philips Hue lambasını Arduino ile nasıl programlayabileceğime baktım. Burada, tüm adımlarımı ve ne kadar yol kat ettiğimi açıklıyorum. Hue'yu Arduino ile programlamayı başaramadım ama bunun iyi bir başlangıç olduğunu düşünüyorum.
Şuna ihtiyacım vardı: bir Arduino a hue lambası bir köprü Philips Hue geliştirici hesabı
Kaynaklar: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. Adım: Başlayın
API belgelerine erişmeden önce geliştirici olarak kaydolmanız gerekir. Ücretsizdir, ancak şartlar ve koşulları kabul etmeniz gerekir. Buradan bir tane yapabilirsiniz >
2. Adım: Hue Uygulaması
Resmi Philips Hue Uygulamasını indirin. Telefonunuzu Hue köprüsünün açık olmasını istediğiniz ağa bağlayın.
3. Adım: Köprüyü Bağlayın
Köprünüzü ağınıza bağlayın ve düzgün çalışıyor. Akıllı telefon uygulamasının aynı ağdaki ışıkları kontrol edip edemediğini test edin. Aynı Wi-Fi ağında olması gerekir.
4. Adım: IP Adresi
Ardından, ağınızdaki köprünün IP adresini bulmanız gerekir. Uygulamadaki köprüye bağlanmak için bağlantıya basın ve ışıkları kontrol etmeyi deneyin.
Adım 5:
Her şey çalışıyorsa, uygulamadaki ayarlar menüsüne gidin. “Köprüm”e gidin, “Ağ ayarları”na gidin. DHCP geçişini kapatın ve köprünün IP adresini görürsünüz. IP adresini not edin, ardından DHCP'yi tekrar açın.
6. Adım: Tonunuzda Hata Ayıklayın
Bunu yazdığınızda, Hue'nuzda hata ayıklamanız gerekir. Bu adım için IP Adresine ihtiyacınız var. Bir sonraki siteyi ziyaret etmelisiniz.
/debug/clip.html
Arayüz resimdeki gibi görünecektir. Bu, tüm web trafiğinin ve hue RESTful arayüzünün temelidir.
Philips Hue sitesinin Dinlendirici arayüzü hakkında bu bilgiyi aldım.
URL: bu aslında ton sistemi içindeki belirli bir kaynağın (şeyin) yerel adresidir. Işık, bir grup ışık veya daha birçok şey olabilir. Bu komut içinde etkileşim kuracağınız nesne budur.
Bir gövde: Bu, mesajın neyi ve nasıl değiştirmek istediğinizi açıklayan kısmıdır. Buraya, JSON formatında, değiştirmek/eklemek istediğiniz kaynak adını ve değerini girin.
Bir yöntem: burada hue çağrısının kullanabileceği 4 HTTP yöntemi arasından seçim yapabilirsiniz.
GET: Bu, adreslenen kaynak hakkındaki tüm bilgileri getirme komutudur.
PUT: Bu, adreslenen bir kaynağı değiştirme komutudur.
POST: Bu, adreslenen kaynak içinde yeni bir kaynak yaratma komutudur.
DELETE: Bu, adreslenen kaynağı silme komutudur. Yanıt: Bu alanda, komutunuza verilen yanıtı göreceksiniz. Ayrıca JSON formatında.
7. Adım: Başlayalım
Şimdi, köprünün sizin için oluşturduğu rastgele oluşturulmuş bir kullanıcı adına ihtiyacımız var. Bunu doldurarak bir tane alacaksınız.
URL'yi girin:
/api/
GÖVDE koyun:
ve GET'e basın
Bu komut temel olarak "lütfen /api içinde (kullanıcı adlarının bulunduğu yerde) aşağıdaki özelliklere sahip yeni bir kaynak oluşturun" diyor. İlk başta bir hata alırsınız ve bunun nedeni Philips Hue'nun güvenlik adımı olmasıdır. Düğmeye basarak, köprüye fiziksel erişiminiz olduğunu kanıtlarlar.
Adım 8:
Şimdi Köprüdeki düğmeye basın ve tekrar POST'a tıklayın.
Şimdi köprünün sizin için yaptığı bir kullanıcı adı alacaksınız.
9. Adım: Işıklarla Bir Şeyler Yapalım
Kullanıcı adınızı kopyalayın ve aşağıdaki satıra koyun.
Bunu URL'nize koyun
/api/ /ışıklar
GET'e basın
Sisteminizdeki tüm ışıklar ve adlarıyla birlikte bir JSON yanıtı almalısınız.
Adım 10:
Okuldan bazı Hue Lights ödünç aldım, kullandığım id 3 olanı. Bu ışık hakkında özel bilgi istiyorum.
Bunu zaten sahip olduğunuz URL'nin yanına koyun:
/api/ /ışıklar/3
GET'e basın
Şimdi Led 3 ile ilgili tüm bilgileri aldınız (1 gibi başka bir numaranız varsa, onunla ilgili bilgileri göreceksiniz).
Adım 11: Işığı Kontrol Edelim
"Durumda" ledimin "açık" olduğunu görüyorsunuz. Işığı "durumda" kontrol etmek istiyoruz.
Bunu zaten sahip olduğunuz URL'nin yanına koyun:https:// /api/ /lights/ 3/ state
BODY'ye bir sonraki satırı koy
PUT'a basın
Şimdi ışığınız kapanacak! Gövdedeki değeri true olarak değiştirin, ışık tekrar yanacaktır.
Adım 1/2:
Şimdi her şey çalışıyor, bunu Arduino'mla yapmak istiyorum. Işık renginin değişmesi için Philips Hue'nun verdiği linke baktım. Ama bunun için Python'a ihtiyacınız var, Python ile hiç çalışmadım bu yüzden başka bir şey aradım.
Bu koda bakmak isterseniz, burada Github bağlantısına sahibim:
github.com/bsalinas/ArduinoHue
Adım 13:
Bu geliştirici sitesinden arduinoma nasıl bilgi alabileceğime baktım. Çoğu zaman dilini anlamadım. Ama James Bruce'un bir web sitesinde bazı kodlar buldum.
Bu, web sitesinin bağlantısıdır.
www.makeuseof.com/tag/control-philips-hue-lights-arduino-and-motion-sensor/
Adım 14:
Önce Ethernet kablosu kullandığını gördüm. Sadece bir Hue Ampulüm vardı ve bir Arduino'ya Köprü yaptım ve çok az kod anlayışım vardı. Kodunu anlamam biraz zaman aldı, ama hala gerçekten anlamıyorum.
İlk önce bu kütüphaneyi internet için ekledim.
#Dahil etmek
Bu, ağınız içindir (Hue Ampul ile aynı olmalıdır)
const char* ssid = " "; // WiFi ağınızı buraya yazın SSIDconst char* password = " "; // WiFi ağ şifrenizi buraya girin
Bunlar, Köprünüzün kimliği ve köprünüzün size verdiği kullanıcı adıdır. (80'in ne anlama geldiğini bilmiyorum ama biraz araştırma yaptığımda ağlar için kullanıldığını gördüm).
// Ton sabitleri const char hueHubIP = ""; // Hue hub IP const char hueUsername = ""; // Hue kullanıcı adı const int hueHubPort = 80;
// Hue değişkenleri bool hueOn; // açık/kapalı int hueBri; // parlaklık değeri uzun hueHue; // ton değeri String hueCmd; // Ton komutu
işaretsiz uzun arabellek=0; //alınan veri depolaması için arabellek imzasız uzun adres;
Adım 15:
Boş kurulum için en çok internet bağlantısı için yaptım. Bu kodda Arduino, ağa bağlanıp bağlanamayacağını arıyor.
geçersiz kurulum(){ Serial.begin(9600);
Seri.println();
Serial.printf("%s'ye bağlanılıyor", ssid);
WiFi.begin(ssid, şifre);
while (WiFi.status() != WL_CONNECTED) {
gecikme(500);
Seri.print("."); }
Serial.println("bağlı"); }
16. Adım:
James'in döngüsünde, bir If ve else ifadesi olduğunu gördüm. Ama bu ethernet kablosu içindi, bu yüzden bunu dışarıda bırakmaya çalıştım. Ben de bazen ayarlamaya çalıştım, ama henüz çok fazla veri ile bilmiyordum. Anladığım kodda bazı şeyler, dizede Hue ışığına verilen veriler var.
boşluk döngüsü(){
// Kırmızı ve pembe arasındaki iki ışığı soyan dört örnek komut dizisi. Kullanılacak tam komutlar hakkında daha fazla ayrıntı için Hue API // belgelerini okuyun, ancak tırnak işaretlerinin öncelenmesi gerektiğini unutmayın.
Dize komutu = "{"on\": true, \"hue\": 50100, \"sat\":255, \"bri\":255, \"transitiontime\":"+String(random(15), 25))+"}";setHue(1, komut);
komut = "{"on\": true, \"hue\": 65280, \"sat\":255, \"bri\":255, \"transitiontime\":"+String(rastgele(15, 25))+"}"; setHue(2, komut);
komut = "{"hue\": 65280, \"sat\":255, \"bri\":255, \"geçiş zamanı\":"+String(rastgele(15, 25))+"}"; setHue(1, komut);
komut = "{"hue\": 50100, \"sat\":255, \"bri\":255, \"geçiş zamanı\":"+String(rastgele(15, 25))+"}"; setHue(2, komut);
}
Adım 17:
Bir sonraki kod bir Boole idi, ancak Arduino'da Bool yazmanız gerekiyor. İlk başta, istemci kelimesi nedeniyle çok fazla hata aldım. Baktım ve bazı kodların "WifiClient client;" satırını kullandığını gördüm. Bu yüzden kullandım ve işe yaradı.
if ifadesinde genellikle client.print'i görürsünüz. Kodun içine bakarsanız, daha önce girdiğiniz URL'nin parçalara ayrıldığını göreceksiniz. Şimdi kendi kodunuzu girin. 3. LED ışığımı seçmek zorunda kaldım.
/* setHue(), JSON formatında (temelde bir Javascript stili değişkenler * ve değerler dizisi) hafif bir sayı ve * düzgün biçimlendirilmiş bir komut dizesi iletilmesi gereken ana komut işlevimizdir. Başlangıçta belirtilen IP'deki Köprü. */
bool setHue(int lightNum, String komutu) {
WiFiClient istemcisi;
if (client.connect(hueHubIP, hueHubPort)){
while (client.connected()){
client.print("PUT /api/"); client.print(hueKullanıcı adı); client.print("/ışıklar/"); client.print(lightNum); // hueLight sıfır tabanlı, 1 client.println("3/durum"); // burada ton adını ve stateclient.print("Host: "); client.println(hueHubIP); client.print("İçerik-Uzunluk: "); client.println(komut.uzunluk()); client.println("Content-Type: text/plain;charset=UTF-8"); client.println(); // gövdeden önceki boş satır client.println(komut); // Ton komutu
} müşteri.durdur(); true döndür; // komut yürütüldü }
aksi takdirde false döndürür; // komut başarısız oldu }
18. Adım:
İkinci Boolean'da, bazı kelimeleri değiştirerek aynı şeyi yaptım. İşe yarayıp yaramadığını görmek için yükledim.
/* Mantığınızın ışığın mevcut durumuna bağlı olması durumunda bir yardımcı fonksiyon. * Bu, bir ışığın açık olup olmadığını öğrenmek için kontrol edebileceğiniz bir dizi global değişkeni ayarlar * ve renk tonu vb. Sadece komutları göndermek için gerekli değildir */
bool getHue(int lightNum) {
WiFiClient istemcisi;
if (client.connect(hueHubIP, hueHubPort)) {
client.print("GET /api/"); client.print(hueKullanıcı adı); client.print("/ışıklar/"); client.print(lightNum); client.println("3/durum"); client.print("Ana Bilgisayar: "); client.println(hueHubIP); client.println("İçerik türü: uygulama/json"); client.println("canlı tut"); client.println();
while (client.connected()) { if (client.available()) { client.findUntil("\"on\":", "\0"); hueOn = (client.readStringUntil(', ') == "true"); // ışık yanıyorsa, değişkeni true olarak ayarlayın client.findUntil("\"bri\":", "\0"); hueBri = client.readStringUntil(', ').toInt(); // değişkeni parlaklık değerine ayarla client.findUntil("\"hue\":", "\0"); hueHue = client.readStringUntil(', ').toInt(); // değişkeni ton değeri kesmesine ayarla; // henüz diğer ışık niteliklerini yakalayamadı } } client.stop(); true döndür; // yakalanan, bri, hue } else false döndür; // okuma hatası, bri, hue }
Adım 19:
Philips Hue ile bağlantı kurabileceğimi düşünüyorum. Bilgi alıyorum ama yine de kullanılması gerekiyor.
Ne yazık ki, bu benim kodlayabileceğimin ötesine geçiyor. Cevabı biliyorsanız veya düzeltilmesi gereken gerçek hatalar varsa, duymak isterim.:-)
Önerilen:
Philips Hue Işık Şeridi'ni Bölün ve Uzatın: 8 Adım (Resimlerle)
Philips Hue Işık Şeridi'ni Bölün ve Genişletin: Daha fazla "akıllı ev" ekliyorum; gadget'ları evime yazın ve oynadığım şeylerden biri de Philips Hue Işık Şeridi. Bir uygulamadan veya Alexa gibi akıllı bir asistandan kontrol edilebilen bir LED ışık şeridi ya da
Delta Okulu Sempozyumu için LED Kutu: 7 Adım
Delta Okul Sempozyumu için LED Kutu:
Gledopto: Ucuz Philips Hue Işık Şeridi Alternatifi: 3 Adım
Gledopto: Ucuz Philips Hue Işık Şeridi Alternatif: Philips Hue şu anda Philips Hue Işık şeritlerini sadece 2 metre için 71-90 $'a satıyor. Bunu çok saçma bir fiyat buldum ve alternatif aramaya başladım. LED şerit kontrolörleri yapan Gledopto adlı bir markayla karşılaştım
DIY Philips Hue Panel Işığı: 4 Adım (Resimlerle)
DIY Philips Hue Panel Işığı: Geçenlerde yatak odam için bazı Philips Hue lambaları satın aldım. Onlar harika! Alexa'yı kullanarak sesimle onları kontrol edebiliyorum ve ayrıca telefonumla da kontrol edebiliyorum. Renk değiştiren bir panel ışığı bulmaya çalıştım ama bildiğiniz gibi Philips Hue
Mood Projektörü (GSR ile Hacklenmiş Philips Hue Light) TfCD: 7 Adım (Resimlerle)
Mood Projektörü (GSR ile Hacklenmiş Philips Hue Light) TfCD: Laura Ahsmann & Maaike Weber Amaç: Düşük ruh halleri ve stres, modern hızlı yaşamın büyük bir parçasıdır. Aynı zamanda dışarıdan görünmeyen bir şeydir. Ya stres seviyemizi hem görsel hem de işitsel olarak yansıtabilseydik