İlan

Philips Hue ışık serisi kesinlikle ucuz değil (bazı alternatifler var Aslında Buna Değer Philips Hue AlternatifleriPhilips Hue sistemi, akıllı aydınlatma söz konusu olduğunda şarjı yönlendiriyor, ancak bazı değerli alternatifler var. Hepsinin aynı temel özellik setini ve hacklenebilirliği sunduğu üç tane seçtik. Daha fazla oku ), ama gerçekten takdir ettiğim bir şey iyi belgelenmiş API API Nedir ve Açık API'ler İnternet'i Nasıl Değiştirir?Bilgisayarınızdaki ve ziyaret ettiğiniz web sitelerindeki programların birbirleriyle nasıl "konuştuğunu" hiç merak ettiniz mi? Daha fazla oku kendi Hue uygulamalarınızı yapmak için. Bugün size bir Arduino'dan Hue ışıklarınızı nasıl kontrol edeceğinizi göstereceğim - sonra basit bir hareket sensörü ekleyeceğim.

Bunu neden yapıyoruz? Çünkü ev otomasyon sistemleri oldukça katı ve pahalı olabilir. Hue'yu Arduino'dan nasıl kontrol edeceğinizi öğrenerek, hazır bileşenler tarafından yenilemeyen özel yapım ev otomasyon projelerinin kapılarını açıyorsunuz. Eğer bir şeyleri birlikte kesmek sadece senin işin değilse, bunları dene

instagram viewer
8 muhteşem Hue uygulaması Android ve iPhone için En İyi 7 Philips Hue UygulamasıAkıllı ışıklarınızla kullanmak için en iyi Philips Hue uygulamalarını mı arıyorsunuz? İşte iPhone ve Android için birkaç harika uygulama. Daha fazla oku yerine.

Ton Sistemi

Biraz teknik olalım, böylece üzerinde çalıştığınız temel sistemleri öğreneceksiniz. Ton ışıkları bir ağ ağı Mesh Ağları: İletişimin GeleceğiMesh ağları neredeyse dokunulmazdır. Bir ağda, tüm trafiğin geçtiği hiçbir boğulma noktası yoktur. Bunun yerine, bilgi hedefine ulaşana kadar bir cihazdan diğerine aktarılır. Daha fazla oku , ZigBee adlı kısa menzilli bir kablosuz protokol kullanarak - özellikle, ZigBee Işık Bağlantısı diğer ZLL ürünlerinin de Hue ile birlikte çalışması gerektiği anlamına gelir (teoride).

Teknik olarak kısa menzil olmasına rağmen, ZigBee'nin mesh ağ özelliği, her yeni ampulün ağı genişlettiği ve mesajları diğer ampullere ilettiği anlamına gelir. Bu, evin diğer tarafındaki bir ışığı kontrol etmekte sorun yaşıyorsanız, ikisi arasında başka bir ışık yerleştirmeyi deneyin.

Zigbee harika bir protokoldür, ancak Wi-Fi veya kablolu bir bilgisayar ağından oldukça farklıdır, bu yüzden ikisine birlikte katılmak için Philips Hue Köprüsü'ne ihtiyacımız var. Hue köprüsü, temel bir web sunucusunu yayınlayan değiştirilmiş bir açık kaynaklı linux ürün yazılımı çalıştırır.

Tarayıcınıza sadece Hue köprünüzün IP adresini girerseniz göreceğiniz şey budur. Yine de buradan fazla bir şey yapamazsınız.
Hue köprünüzün IP adresini tarayıcınıza girerseniz, göreceğiniz şey budur. Yine de buradan fazla bir şey yapamazsınız.

Bu yerel web sunucusuyla etkileşime geçerek ışıkların mevcut durumunu öğrenebilir ve onları kontrol edebilirsiniz.

Bu çok basit bir sistem ve DIY projeleri için olgun. Bu şeyi hacklenebilir hale getirmek için Philips'e şereflendirin.

Başlayan

API belgelerine erişmeden önce, geliştirici olarak kayıt ol. Ücretsizdir, ancak şartlar ve koşulları kabul etmeniz gerekir. Bunu şimdi yap.

Standart web hizmetlerine veya Javascript'e aşina olan herkes Hue ile çalışabilmelidir: tüm veriler şu şekilde iletilir ve alınır: JSON paketleri JSON nedir? A Layman'a Genel BakışBir web geliştiricisi olmayı planlasanız da olmasanız da, en azından JSON'un ne olduğunu, neden önemli olduğunu ve web'in her yerinde neden kullanıldığını bilmek iyi bir fikirdir. Daha fazla oku .

Buna bir göz atmak için Hue köprünüzün IP adresini bilmeniz gerekir. Bunu yapmanın birkaç yolu var:

  • Yönlendiricinizin yönetici arayüzündeki DHCP adres atama tablosuna bakın
  • Şunun gibi bir ağ eşleme programı çalıştırın: IP Tarayıcı Ana Sayfası
  • Deneyin Philips UPnP broker aracı
  • Ping "philips-hue.home"
köprü bulmak için ağ haritalama

İşiniz bittiğinde, tarayıcı adres çubuğuna debug / clip.html URL'ye eklenir. Benim durumumda, bu:

http://192.168.1.216/debug/clip.html

Bu, basit bir web arayüzü üzerinden JSON paketleri göndermenizi ve almanızı sağlayan bir hata ayıklama aracıdır. İlk adım, güvenlik nedenleriyle varsayılan olarak devre dışı bırakılan Hue Bridge'in kendisinde geliştirici profilini etkinleştirmektir. Aşağıdakileri BODY alanına yapıştırın, URL'yi şu şekilde bırakın: /api/ve ardından bir POST isteği gönderin. postala düğmesi:

{"devicetype": "test kullanıcısı", "kullanıcı adı": "yeni geliştirici"}

Bunu ilk kez yaptığınızda, yanıtın herhangi bir yerinde bir "bağlantı düğmesi basılmamış" ifadesini görürsünüz. Bu, kullandığınız her yeni uygulamanın fiziksel olarak yetkilendirilmesini gerektiren bir güvenlik özelliğidir. Git ve Bridge'inizi bul, düğmeye basın ve aynı isteği tekrar gönderin 30 saniye içinde. Bu kez farklı bir yanıt alırsınız ve kullanıcı yetkilendirilir. Farklı bir kullanıcı adı kullanmak istiyorsanız, ilgili API dokümanlarını okuyun kullanıcı oluşturma. Şimdilik bu yeterli olacak.

Kullanıcınız ayarlandıktan sonra, etkileşim kurmanız gereken temel URL /api/newdeveloper/. Bridge'in şu anda bağlı ışıklar, alarmlar, sahneler ve kullanılan kısa uygulama günlüğü hakkında bildikleri her şeyi öğrenmek için bir GET isteği gönderebilirsiniz. Aşağıda, tek bir ampul için bulunan durum bilgilerinin bir örneği verilmiştir.


"state": {"on": true, "bri": 254, "hue": 14910, "sat": 144, "effect": "none", "xy": [0.4596, 0.4105], "ct": 369, "alert": "none", "colormode": "ct", "ulaşılabilir": false}, "type": "Genişletilmiş renk ışığı", "name": "Bedroom 1", "modelid": "LCT001", 

Unutmayın ki “On”: true ampulün açık olup olmadığını göstermez; sadece Köprü ayarlarına göre, meli olmak. “Ulaşılabilir”: false hem çok uzaktaki bir ampulü gösterebilir hem de güç anahtarından kapatılmış olabilir.

Bunu Arduino'ya entegre etmeden önce son bir örnek: ışıklarınızdan birinin görünür ve açık olduğundan ve bunun hangi sayı olduğunu bildiğinizden emin olun. URL'yi olarak değiştir /api/newdevelopers/lights/1/state (numarayı ışığınıza değiştirme) ve aşağıdaki verilerle bir PUT isteği gönderin:

{"hue": 50100, "sat": 255, "bri": 255}

Işığınızın böyle tepki verdiğini görmelisiniz:

renk demosu

Yaptığınız şey ampulün içine yeni bir durum sokmak. Ayrıca, durum değişikliğinin kaç saniye sürmesini istediğinizi belirten ilkel bir animasyon yöntemi olan “geçiş zamanı” da ekleyebilirsiniz.

Renk ayarlanabilir bir dizi farklı yolancak maalesef bir RGB değeri göndermenin basit bir yolu yoktur. Yukarıdaki örnekte, renk, oturduuration ve brightness. Ton değerini değiştirmeyi ve PUT isteğini tekrar göndermeyi deneyin.

Arduino'dan Çalışma

Mevcut bir Hue / Arduino kütüphanesi var ArduinoHue Philips'in API belgelerinde kendilerine bağlandığı, ancak bu kitaplıktaki sorun PC'nize USB bağlantısı üzerinden iletişim kurar, bu da bir Python uygulaması çalıştırmalıdır sürekli. eugh. Bilgisayarınızın bu noktada çalışmasına izin verebilir ve Arduino'yu tamamen kesebilirsiniz.

Bunun yerine, Tonu Arduino'dan nasıl kontrol edeceğinizi göstereceğim Ethernet kalkanı kullanma. Arduino'nuzun bir bilgisayara bağlı olması gerekmez, böylece Ethernet kablosu koyabileceğiniz her yerde bağımsız olarak çalışabilir. Aslında, bir Wi-Fi kalkanı ile de çalışmalı, ancak oynayacak bir tane yok.

ethernet ağ-kalkan-box

İleri atlamak isterseniz, tam örnek kod aşağıda gömülüdür veya burada mevcut. Bunu yayınlanan bir örnekten uyarladım ile Gilson Oguime. Daha önce hiç Ethernet kalkanı ile oynamamışsanız, hızlı bir şekilde web istemcisi öğreticisi - Buna aşina olduğumu varsayacağım ve bir ağ IP'si oluşturmak için kullanılan kodu kapsamaz. Size de gösterdik Ethernet kalkanı ile mini bir web sunucusu nasıl oluşturulur Ethernet Kalkanı ile Arduino Projenize Kendi Mini Web Sunucusunu VerinBir süre önce, Arduino'nuz için bir internet kontrol sisteminin nasıl kurulacağını gösterdim - ancak internet bağlantısını sürdürmek için USB üzerinden bir bilgisayara bağlı kalmak zorunda kaldı ... Daha fazla oku .

Durum Değişiklikleri Oluşturma

Ampullere itmek için yeni bir durum yaratmak, yeni bir sicim değişken ve tüm çift tırnak işareti kaçan. Ekledim Rastgele () biraz dinamik bir animasyon oluşturmak için orada fonksiyon. Ton değişkenini farklı renkler için de rastgele yapmayı deneyin.

String command = "{\" on ": true, \" hue \ ": 50100, \" sat \ ": 255, \" bri \ ": 255, \" transitiontime \ ":" + Dize (rastgele (15, 25)) + "}";

Komutu Gönderme

Komutu gerçekten göndermek için, ışık numarasını ve komut dizesini bağımsız değişken olarak alan setHue () adında bir yardımcı fonksiyonunuz vardır:

setHue (1, komut);

Daha sonra tek yaptığı, köprüye bağlanmak, komutu bir PUT isteği olarak tükürmek ve bir HTTP isteği oluşturmanın içerdiği tüm diğer saçmalıklardır.


client.print ("PUT / api /"); client.print (hueUsername); client.print ( "/ ışık /"); client.print (lightNum); client.println ("/ durum HTTP / 1.1"); client.println ( "canlı tutma"); client.print ("Ana Bilgisayar:"); client.println (hueHubIP); client.print ("İçerik Uzunluğu:"); client.println (command.length ()); client.println ("İçerik Tipi: metin / düz; karakter kümesi = UTF-8" ); ) (Client.println; // bedenden önce boş satır. client.println (komut); // Ton komutu. 

Hareket Sensörü Ekleme

Sonunda basit bir kablo bağladım HC-SR501 hareket sensörü dijital I / O pinine 2. Hareket algılandığında, yavaş ve dinamik bir animasyon oluşturmak için 2 ampul için bir dizi durum köprüye itilir. Hareket sensörü devre dışı bırakıldığında, her ikisine de tek bir kapatma komutu gönderilir. İdeal olarak, hareket algılanmadan önce bulundukları duruma geri döneceklerdi, ancak mantık o kadar akıllı değil - sadece onları açıp kapatacağız.

Sınırlamalar

Kabul edilmeyen bir kod olmasına rağmen, Arduino'nun ağ arayüzünün tek bir komut isteği göndermesi neredeyse bir saniye sürer. Aynı Ethernet bağlantısını kullanarak Mac'ten aynı komutu test ettim ve bu hızın on ila yirmi katı kadar yetenekli (İşte AppleScript test etmek isterseniz). Sonuç olarak, Arduino'dan her türlü hızlı animasyon (titrek bir mum efekti yaratmaya çalışıyordum) mümkün değil. Bu, çoğu proje için, sadece yüksek hızlı ışık animasyonları için bir sorun olmamalı, ancak sınırlamanın farkında olmak iyidir.

Köprüden aldığınız tüm JSON yanıtlarını tam olarak ayrıştırmak da zordur; Arduino'da tüm ham verileri depolamak için yeterli RAM yok. Bu nedenle, kendinizi gönderme ile sınırlandırmak isteyebilirsiniz.

Tonu Kes

Artık Hue'yu tamamen bağımsız olarak nasıl kontrol edeceğinizi öğrendiğinize göre, Hue ev otomasyon saldırıları dünyasını açıyor. Asıl soru şu: ne yapacaksın

James Yapay Zeka alanında lisans derecesine sahiptir ve CompTIA A + ve Network + sertifikalıdır. MakeUseOf'un baş geliştiricisi ve boş zamanlarını VR paintball ve boardgames oynayarak geçiriyor. Çocukluğundan beri bilgisayar yapıyor.