DIY Siri Kontrollü Wi-Fi Işık Nasıl Yapılır

  • Gabriel Brooks
  • 0
  • 4943
  • 1203
reklâm

HomeKit nihayet vahşi yaşamda, bir avuç dolusu tüketici akıllı ev cihazı için Siri üzerinden ses kontrolü sağlandı.

Ne yazık ki, gerçek anlamda bir avuç demek - zaten satın aldığınız her şey uyumlu değildir. Bununla birlikte, protokol zaten ters mühendislik uygulanmıştır ve HomeKit API için açık kaynaklı bir emülatör mevcuttur: ya da düz İngilizce olarak, şimdi oluşturabilirsiniz “sahte” HomeKit aygıtları ve Siri, diğer tüm resmi HomeKit aksesuarları gibi onları kontrol eder.

Bugün, bir Wi-Fi kontrol edilebilir ışık oluşturacağız ve bunu Siri ile kontrol edeceğiz. İşte bir demo.

İşte ihtiyacınız olan şey:

  • Raspberry Pi (Bir RPi2 kullandım, yükseltilmiş ARM mimarisini göz önüne alarak Node sürümlerinde küçük bir fark var..
  • Ahududu Pi üzerine kurulu bir MQTT brokeri. Bölüme bakınız “Pi'nize Mosquitto yükleyin” OpenHAB Kılavuzu bölüm 2'de OpenHAB Başlangıç ​​Kılavuzu Bölüm 2: ZWave, MQTT, Kurallar ve Grafik Açma OpenHAB Başlangıç ​​Kılavuzu Bölüm 2: ZWave, MQTT, Kurallar ve Grafik Açma OpenHAB Başlangıç ​​Kılavuzu Bölüm 2: ZWave, MQTT, Kurallar ve Grafik Açma OpenHAB, açık kaynak kodlu ev otomasyonu yazılımı, diğer ev otomasyon sistemlerinin özelliklerini fazlasıyla aşıyor piyasada - ama kurmak kolay değil. Aslında, düpedüz sinir bozucu olabilir. . Özellikle Pi'ye kurulması gerekmez - bulut tabanlı bir MQTT sunucusu bile kullanabilirsiniz, ancak yine de bu eğitim için Pi'ye ihtiyacımız var.
  • NodeMCU v2 (Arduino uyumlu)
  • Neopiksel LED'ler (test için 4 piksel öneririm, o zaman harici bir güç kaynağı ekleyebilir ve istediğiniz kadar ekleyebilirsiniz)

HomeKit Köprüsü'nü Takma

Raspberry Pi'ye HAP-NodeJS adlı bir NodeJS uygulaması yükleyeceğiz: Bu, HomeKit istekleri ve Wi-Fi cihazları arasında bir köprü oluşturacak. Şimdilik bu köprüyü tek bir aksesuarla yapılandıracağız, ancak istediğiniz kadar ekleyebilirsiniz.

Aslında bunu OpenHAB çalıştıran mevcut ev sunucuma yüklüyorum - İkisini daha sonraki bir tarihte birbirine bağlamayı umuyorum, fakat şimdilik aynı Raspberry Pi'de birlikte bulunabileceklerini biliyorum. Aynı şeyi yapıyorsanız, tam da geçerli durumda, mevcut Pi SD kartınızın klon yedeklemesini kolayca yapın SD Kartınızı Sorunsuz Klonlayın Ahududu Pi Bilişim İçin Kolayca SD Kartınızı Sorunsuz Klonlayın Ahududu Pi Bilişim İçin Kolayca Sahip Olun SD kart veya birkaç, ihtiyacınız olacak bir şey, Raspberry Pi'niz önyükleme yapamadığında ortaya çıkabilecek sorunları önlemek için kartlarınızı yedekleme yeteneğidir. . Her şey ters giderse, buna geri dönebilirsin..

Terminalden veya SSH oturumundan tam bir yükseltme yaparak başlayın. Ahududu Pi'nizi SSH ile Başsız Kullanım İçin Ayarlama Ahududu Pi'nizi SSH ile Başsız Kullanım İçin Ayarlama Raspberry Pi, yerel bir ağa bağlandığında SSH komutlarını kabul edebilir (Ethernet ile) veya Wi-Fi), kolayca ayarlamanızı sağlar. SSH'nin faydaları günlük gösterimi üzmenin ötesine geçiyor… .

sudo apt-get güncelleme sudo apt-get yükseltme 

Bir süre olsaydı, bunları iki kez yapmanız gerekebilir..

Şimdi ihtiyaç duyacağımız birkaç çekirdek paketi kurun:

sudo apt-get install npm git çekirdekli libnss-mdns libavahi-compat-libdnssd-dev 

Ardından, NodeJS'nin en son sürümünü yükleyeceğiz. Bunu yapmak için cazip olabilir apt-get, ama yok - bu sürüm şimdi gerçekten eski ve işe yaramaz. Bunun yerine, nodejs.org adresini ziyaret edin, indir / bırakma / son-v5.x.0 / dizinine gidin ve en son sürüm için bağlantının ne olduğunu kontrol edin. Arıyorsun linux-armv7l Ahududu Pi 2 için, veya linuxarmv6l Orijinal RPI modelleri için. Ardından, URL’leri ve dizin adlarını gerektiği gibi ayarlayın, aşağıdaki komutları kullanarak indirin ve yükleyin.

https://nodejs.org/download/release/latest-v5.x.0/node-v5.5.0-linux-armv7l.tar.gz wget tar -xvf düğümü-v5.5.0-linux-armv7l.tar.gz cd düğümü-v5.5.0-linux-armv7l sudo cp -R * / usr / yerel 

Yazarak onayla

düğüm sürümü 

Ve v5.5'i görmelisiniz (ya da en son ne indirdiyseniz).

Sonra, kurmamız gereken bazı Node modülleri var..

sudo npm kurulumu -g npm sudo npm kurulumu -g node-gyp 

Bu ilk komutta, aslında daha yeni bir sürümünü kurmak için Düğüm Paket Yöneticisi'ni (npm) kullanıyoruz. zeki!

Şimdi, HAP-NodeJS adlı HomeKit emülatörünü indirmek için:

git klon https://github.com/KhaosT/HAP-NodeJS.git cd HAP-DüğümJS npm sudo npm yeniden kurun node kurulum sudo npm yeniden yükleyin 

Bu noktada, bu hatayı koştum: “#error / NAN / v8 düğümünün bu sürümü bir C ++ 11 derleyicisi gerektiriyor“. Bu durumda, daha yeni bir C ++ derleyicisini aşağıdaki komutlarla yükleyin:

sudo apt-get install gcc-4.8 g ++ - 4.8 sudo güncelleme alternatifleri - kurulum / usr / bin / gccgcc / usr / bin / gcc-4.6 20 sudo güncelleme alternatifleri - kurulum / usr / bin / gcc gcc / usr / bin / gcc-4.8 50 sudo güncelleme alternatifi - kurulum / usr / bin / g ++ g ++ / usr/bin/g++-4.6 20 sudo güncelleme-alternatifleri - kurulum / usr / bin / g ++ g ++ / usr / bin / g ++ - 4.8 50 

Şimdi bir problemin olmamalı. Bu komutları tek tek çalıştırmaya devam edin:

sudo npm kurulum srp sudo npm kurulum mdns - güvenli olmayan perm sudo npm kurulum hata ayıklayıcı sudo npm kurulum ed25519 - güvenli olmayan perm sudo npm kurulum eğrisi25519 - güvenli olmayan perm 

Bu her şey olmalı. Taklitçiyi şununla çalıştırmayı deneyin:

Core.js düğümü 

Böyle ve böyle bir modül bulamadığını söyleyen hatalar alırsanız, sadece sudo npm kurulumu tekrar komut verin ve hangi modülün eksik olduğunu yapıştırın. Her şeyin yolunda olduğunu varsayarsak, birkaç uyarı görmeniz gerekir ve HomeKit köprünüz çalışacaktır. Başarı bu gibi görünüyor:

Hemen bir dizi 6 sahte cihaz oluşturulduğunu görebilirsiniz. Bunları daha sonra kendi Wi-Fi ışığımız için bir başlangıç ​​noktası olarak kullanacağız, ancak bunları test etmek için şimdilik kullanacağız. Sunucuyu şu şekilde başlatırsanız, daha fazla hata ayıklama bilgisi de görebilirsiniz:

DEBUG = * node Core.js

Şimdi Siri'yi çalıştırabilen bir Apple cihazına atlayın. Apple meraklı bir şekilde, kayıtlı geliştiriciler dışında bir hisse senedi HomeKit uygulaması sağlamaz, bu yüzden HomeKit ağınıza (hatta Elgato olmayan) cihazlar eklemenizi sağlayan bir HomeKit yönetim uygulaması olan ücretsiz Elgato Eve uygulamasını indirin.

Uygulamayı ilk başlattığınızda evinizi adlandırmanız, ilerlemeniz ve bunun üzerinde yürümeniz gerekir. Sonra seçin “Aksesuar ekle”. Yakın olmakla ilgili mesajı yoksay!

Size eşsiz bir şey aramanızı söyler “HomeKit Kurulum Kodu” Sonraki. Bunu görmezden gel ve vur “[Evinizin adını] ekleyin”.

Ayrıca cihazın sertifikalı olmadığını da söyleyecektir. Gerçekten de değil. Yine de devam et. Bir ekran kodu soran ekrana geldiğinizde…

Kodu manuel olarak girmeyi seçin ve aşağıdakileri yazın:

031-45-154

Bu / bulunabilir bulunabilir Light_accessory.js dosya, ancak daha sonra bu konuda. Bu aksesuarı varsayılan odanıza ekleyin, arayın Sahte Işık, ve ikon vb. seçmek için diyaloglarda dolaşmaya devam edin.

Son olarak, HAP-NodeJS'nin çalıştığı SSH oturumuna geri dönün. Zaten bir mesaj görmüş olabilirsiniz “Açık mıyız?” - Işık durumu için yoklama Elgato uygulaması budur. Siri'yi aç ve ona söyle “Sahte ışığı aç”, sonra tekrar kapatmayı deneyin. Umarım, komutları aldığını göstermek için HAP-NodeJS’ten bazı hata ayıklama mesajları göreceksiniz..

Açık mıyız? Hayır. Işığı aç! Işığı kapatmak!

Fantastik, bu bir adım bitti. Köprü yeniden yapılandırmak için geri dönmeden önce şimdi gerçek bir ışığa ihtiyacımız olacak.

Wi-Fi Işık Oluşturma

Bu adımın donanım tarafı, yalnızca NodeMCU geliştirme kartından ve USB bağlantısından güç verebildiğimiz için, yalnızca dört Neopikselle başlıyorsak şaşırtıcı şekilde basittir. Daha uzun bir şeridin varsa, endişelenme - bunu yazılımda tanımladık, böylece gerisi açılmayacak.

Kırmızı güç kablosunu bir Neopiksel iplikçikten VIN pimine, mavi toprak GND'ye ve yeşil sinyal kablosunu NodeMCU'da D2 işaretli pime bağlayın. Polarite konusunda çok dikkatli olun: zemini ve VIN'i karıştırırsanız, panonuzdan bir güç dalgası gönderir ve işlem sırasında onu yok edersiniz.

Arduino ortamınız henüz ESP8266 ile çalışmak için kurulmadıysa, devam edin ve ESP8266: Arduino Katil ile tanışın Arduino Katil ile tanışın: ESP8266 Arduino Katil ile tanışın: ESP8266 Size Arduino uyumlu bir aygıt olduğunu söylersem 10 $ 'dan daha az dahili Wi-Fi ile kurulu? Eh, var. rehberlik sonra işe yaradığını onayladıktan sonra geri gelin. Bu ek kitaplıkları yükleyin:

  • lmroy'ın PubSubClient
  • Adafruit'in NeoPikselleri

Kullandığımız kod, Github kullanıcısı Aditya Tannu'nun bir modifikasyonudur - Gereksiz havadan güncelleme fonksiyonunu kaldırdım, eksik olan bazı HSV fonksiyonlarına ekledim ve sadece değiştirerek daha fazla ışık oluşturmayı kolaylaştırdım. tek değişkenli Aşağıda gömülü kodu göremiyorsanız, kodu bu Gist'te bulabilirsiniz..

Aşağıdaki satırları kendi ağ bilgilerinizle ve oluşturduğunuz her fikstür için benzersiz bir adla (ana bilgisayar) güncelleyin..

const char * ssid = "…"; const char * password = "…"; const char * host = "kapalı ışık"; IPAdresi MQTTserver (192, 168, 1, 99);

Bu armatürün IP adresi DHCP üzerinden otomatik olarak alınır - değiştirilmesinin önemi yoktur, çünkü her seferinde aynı MQTT sunucusuna bağlanıyoruz.

Şimdilik sadece 4 Neopiksel kullanıyoruz, ancak harici bir kaynaktan güç alırsanız daha sonra sayıyı artırabilirsiniz. Kodu yükleyin ve test edelim - en sevdiğiniz MQTT istemcisini komut göndermek için kullanın (değiştirdiyseniz, ana bilgisayar adını aşağıdaki talimatlarda ayarlayın).

  • Gönderebilirsin üzerinde köke officelight açmak için Kapatmak için o kanala başka bir değer gönderin.
  • Rengi değiştirmek için 0-360 arasında resmi ışık / renk tonunu gönderebilirsiniz. HSV renk uzayını kullanıyoruz, bu nedenle 0 ve 360 ​​kırmızı, 120 yeşil ve 240 mavi.
  • Parlaklık için bir yüzde değeri gönderirsiniz (0-100,% sembolünü içermez).
  • Doygunluk için aynı. 100 değeri tam olarak doygun (yani düz bir renk) olacak ve sıfır, belirtilen Renk Tonundan bağımsız olarak saf beyaz olacaktır..

MQTT odaklı aydınlatma armatürünüzün çalıştığını doğruladıktan sonra, devam edin.

Yeni Bir Ev Seti Aksesuarını Yapılandırma

Raspberry Pi'ye geri dönün ve henüz yapmadıysanız HAP-NodeJS uygulamasını sonlandırın. Şuraya git /Aksesuarlar dizin. Bunu kolaylaştırmak için, önceden belirlenmiş olan kodu doğrudan indirebilirsiniz. “officelight” yazarak fikstürü:

https://gist.githubusercontent.com/jamesabruce/a6607fa9d93e41042fee/raw/12e4fd1d1c2624e7540ba5e17c3e79bc6bdec5fd/Officelight_accessory.js ile

Temel olarak, bu varsayılan değişken ışık aksesuarının bir kopyası, bazı değişken isimler değiştirildi (yine, Adysan'ın çalışmasından uyarlandı, kullanım kolaylığı için basitleştirildi). İşte buna göre kendi özel aksesuarlarınızı oluşturmak için bilmeniz gerekenler.

  • Tüm aksesuarlar adlandırılmalıdır *_accessory.js
  • Üstteki seçenekler değişkenindeki IP adresini MQTT sunucunuz için değiştirin.
  • Farklı bir fikstür adınız varsa, tüm örneklerini arayın / değiştirin. “officelight” benzersiz fikstür adınızla. Tuşuna basarak Nano’da arama / değiştirme yapabilirsiniz. CTRL ve \, Bulunacak terimi, yerine konacak terimi yazarak, ardından isabet bir (tüm örnekler anlamına gelir). Tam olarak hangi değişkenlerin güncellendiğini öğrenmek için bunların her birini adım adım izleyin.
  • Aksesuar için benzersiz bir onaltılık kullanıcı adı oluşturun (light.username = “1 B: 2B: 3C: 5D: 6E: FF”;)
  • PIN kodunu değiştirmeyin. Belirli bir formatı izler ve ne yaptığınızı bilmiyorsanız, eşleştirilemez. Işıklar arasında aynı kalmaları sorunu yok.
  • Fikstürünüze farklı bir şey verebilirsiniz “Siri adı” Elgato Eve uygulamasına eklerken bunları istediğiniz zaman düzenleyin, böylece ilk seçiminizde sıkışıp kalmazsınız. Yapılandırma dosyalarını düzenlemenize veya sunucuyu yeniden başlatmanıza gerek yok.
  • Birden fazla fikstürünüz olduğunda, Elgato Eve uygulamasını kullanarak onları odaya göre gruplandırmak veya çok sayıda karmaşık eylemden oluşan belirli sahneler oluşturmak için kullanabilirsiniz. Sahneler aşağıdakiler gibi birden fazla eylemden oluşabilir: ofis ışığını açmak,% 25'e kadar kısmak, kırmızı yapmak ve kahve makinesini etkinleştirmek.

Tercih ettiğiniz HomeKit uygulamasından yeni aksesuarınızı tekrar eklemeniz gerekecek.

Son olarak, Pi yeniden başlatıldığında HAP-NodeJS uygulamamızı çalıştırmak istiyoruz. Aşağıdakini ekleyin etc / rc.local dosyadan hemen önce Çıkış 0.

sudo düğümü /home/pi/HAP-NodeJS/Core.js < /dev/null &

Bunu daha önce başlattığım bazı komutlarla birleştirdiğimi görebilirsiniz..

Rc.local'ı ilk kez kullanıyorsanız, çalıştırılabilir olarak ayarlamanız gerekebilir:

sudo chmod 755 / etc/rc.local

Bazı nedenlerden dolayı tekrar hata ayıklama modunda çalıştırmanız gerekirse, çalışan Node uygulamasını aşağıdaki şekilde öldürebilirsiniz:

Killall düğümü

Son bir adım: Aksesuar dizinine gidin ve silin GarageDoorOpener_accessory.js. Bu yazarken bu adamcağız ve sunucunun bir süre sonra kırılmasına neden olur..

Siri ile Neleri Kontrol Edeceksiniz??

Artık temel bilgileri hazırladığınıza göre, kontrol edebileceklerinizin hiçbir sınırı yoktur - Javascript'te kodlayabilirseniz, kendi aksesuar dosyanızı yapabilirsiniz. Burada çok fazla potansiyel var, bence çok eğleneceksiniz. Bana yorumlarından ne geldiğini bildir!




Henüz no comments

Modern teknoloji hakkında basit ve uygun fiyatlı.
Modern teknoloji dünyasında rehberiniz. Her gün bizi çevreleyen teknolojileri ve araçları nasıl kullanacağınızı ve Internet'te ilginç şeyleri nasıl keşfedeceğinizi öğrenin.