İlan

HomeKit nihayet vahşi doğada çıktı ve bir avuç tüketici akıllı ev cihazı için Siri üzerinden ses kontrolü sağladı.

Ne yazık ki, gerçek bir avuç demek istiyorum - daha önce satın aldığınız herhangi bir şey muhtemelen uyumlu değil. Bununla birlikte, protokol zaten tersine mühendislikle yapılmıştır ve HomeKit API için açık kaynaklı bir emülatör mevcuttur: veya Basit İngilizce, artık "sahte" HomeKit cihazları oluşturabilirsiniz ve Siri bunları diğer resmi HomeKit gibi kontrol edecektir aksesuar.

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

İhtiyacınız olan şey:

  • Raspberry Pi (Bir RPi2 kullandım, yükseltilmiş ARM mimarisi göz önüne alındığında Düğüm sürümlerinde küçük bir fark var - daha sonra notlara bakın).
  • Raspberry Pi'ye bir MQTT aracısı kuruldu. Bkz. "Mosquitto'yu Pi'nize Yükleyin" OpenHAB Kılavuzu bölüm 2 OpenHAB Başlangıç ​​Kılavuzu Bölüm 2: ZWave, MQTT, Kurallar ve GrafikAçık kaynaklı ev otomasyon yazılımı OpenHAB, piyasadaki diğer ev otomasyon sistemlerinin yeteneklerini fazlasıyla aşıyor - ancak kurulumu kolay değil. Aslında, düpedüz sinir bozucu olabilir.
    instagram viewer
    Daha fazla oku
    . Özellikle Pi'ye yüklenmesi gerekmez - hatta bulut tabanlı bir MQTT sunucusu bile kullanabilirsiniz, ancak yine de bu eğitim için bir Pi'ye ihtiyacımız olduğundan, kullanışlıdır.
  • NodeMCU v2 (Arduino uyumlu)
  • Neopiksel LED'ler (Test için 4 piksel öneriyoruz, o zaman harici bir güç kaynağı ekleyebilir ve istediğiniz kadar ekleyebilirsiniz)

HomeKit Köprüsü'nü Kurma

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

Bunu aslında OpenHAB çalıştıran mevcut ev sunucuma yüklüyorum. Umarım ikisini bir daha sonraki bir tarih, ama şimdilik, aynı Raspberry Pi'de birlikte var olabileceklerini bilin. Eğer aynısını yapıyorsanız, sadece durum, mevcut Pi SD kartınızın klon yedeklemesini yapın Sorunsuz Ahududu Pi Hesaplama için SD Kartınızı Kolayca KlonlayınBir SD kartınız veya birkaç kartınız olsun, ihtiyacınız olacak tek şey, Raspberry Pi'niz önyükleme yapmadığında ortaya çıkan sorunları önlemek için kartlarınızı yedekleme yeteneğidir. Daha fazla oku . Her şey ters giderse, buna geri dönebilirsiniz.

Terminalden tam yükseltme yaparak veya bir SSH oturumu Raspberry Pi'nizi SSH ile Başsız Kullanım İçin AyarlamaRaspberry Pi, yerel bir ağa (Ethernet veya Wi-Fi ile) bağlandığında SSH komutlarını kabul ederek kolayca ayarlamanıza olanak tanır. SSH'nin faydaları günlük taramanın üzücü olmasının ötesine geçiyor ... Daha fazla oku .

sudo uygun-güncelleştirme. sudo uygun-yükseltme. 

Bir süredir bunları iki kez yapmanız gerekebilir.

Şimdi ihtiyacımız olacak birkaç temel paketi yükleyin:

sudo uygun-get install npm git-core libnss-mdns libavahi-compat-libdnssd-dev. 

Ardından, NodeJS'nin en son sürümünü yükleyeceğiz. Bunu yapmak için cazip olabilirsiniz apt-get, ancak yapma - bu sürüm artık çok eski ve çalışmaz. Bunun yerine ziyaret edin nodejs.org, indir / bırakma / son-v5.x.0 / dizinine gidin ve en son sürümün bağlantısının ne olduğunu kontrol edin. Arıyorsun linux-armv7l Raspberry 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.

wget https://nodejs.org/download/release/latest-v5.x.0/node-v5.5.0-linux-armv7l.tar.gz. 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 onaylayın

düğüm sürümü. 

Ve v5.5'i (ya da en son indirdiğiniz her neyse) görmelisiniz.

Sonra, yüklenecek bazı Düğüm modüllerimiz var.

sudo npm yükleme -g npm. sudo npm install -g düğüm-gyp. 

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

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

git klonu https://github.com/KhaosT/HAP-NodeJS.git. cd HAP-DüğümJS. npm yeniden oluşturma. sudo npm yükleme düğümü kalıcı. sudo npm yükleme srp. 

Bu noktada şu hatayı çalıştırdım: “#error Bu düğüm / NAN / v8 sürümü bir C ++ 11 derleyicisi gerektirir“. Bu gerçekleşirse, komutlarla daha yeni bir C ++ derleyicisi yükleyin:

sudo uygun-get install gcc-4.8 g ++ - 4.8. sudo güncelleme seçenekleri - install / usr / bin / gccgcc / usr / bin / gcc-4.6 20. sudo güncelleme alternatifleri --install / usr / bin / gcc gcc /usr/bin/gcc-4.8 50. sudo güncelleme alternatifleri --install / usr / bin / g ++ g ++ /usr/bin/g++-4.6 20. sudo güncelleme alternatifleri --install / usr / bin / g ++ g ++ /usr/bin/g++-4.8 50. 

Şimdi bir sorun yaşamamalısın. Bu komutları tek tek çalıştırmaya devam edin:

sudo npm yükleme srp. sudo npm install mdns - güvenli değil. sudo npm yükleme hata ayıklama. sudo npm install ed25519 - güvenli değil. sudo npm kurulum eğrisi 25519 - güvenli olmayan perm. 

Bu her şey olmalı. Öykünücüyü aşağıdakilerle çalıştırmayı deneyin:

düğüm Core.js 

Böyle ve bu modülü bulamadığını söyleyen hatalarla karşılaşırsanız, sudo npm yükleme komutunu tekrar girin ve eksik olan modülün adını yapıştırın. Her şeyin yolunda olduğunu varsayarsak, birkaç uyarı görmeniz gerekir; HomeKit köprünüz çalışır. Başarı şuna benzer:

hap-nodejs kuruldu

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

DEBUG = * düğüm Core.js

Şimdi Siri çalıştırabilecek bir Apple cihazına atlayın. Apple merakla kayıtlı geliştiriciler dışında bir stok HomeKit uygulaması sağlamaz, bu yüzden ücretsiz indirin Elgato Eve uygulamasıHomeKit ağınıza (Elgato olmayanlar bile) aygıt eklemenizi sağlayan bir HomeKit yönetim uygulaması.

Uygulamayı ilk kez başlattığınızda, evinizi adlandırmanız, devam etmeniz ve üzerinden geçmeniz gerekir. Ardından “Aksesuar Ekle” yi seçin. Ona yakın olma mesajını yok sayın!

elgato arifesinde 1

Bundan sonra size benzersiz bir “HomeKit Kurulum Kodu” aramanızı söyleyecektir. Bunu dikkate almayın ve “Evinizin adı] 'na ekleyin”.

Ayrıca, cihazın sertifikalı olmadığını da söyleyecektir. Gerçekten de öyle değil. Yine de devam et. Ekrana aksesuar kodu sorulduğunda…

elgato arifesi 2

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

031-45-154

Bu bulunabilir / değiştirilebilir Light_accessory.js dosya, ancak daha sonra. Bu aksesuarı varsayılan odanıza ekleyin, arayın Sahte Işıkve simge vb. seçmek için iletişim kutularında yürümeye devam edin.

Son olarak, HAP-NodeJS'nin çalıştığı SSH oturumuna geri dönün. “Var mıyız?” Yazılı bir mesaj görmüş olabilirsiniz. - Işık durumu için Elgato uygulaması yoklaması. Siri'yi açın ve ona “Sahte ışığı aç” deyin, sonra tekrar kapatmayı deneyin. Umarım, komutları aldığını göstermek için HAP-NodeJS'den bazı hata ayıklama mesajları görürsünüz.

Açık mıyız? Hayır. Işığı yakma! Işığı kapatma!

Harika, bu birinci adım bitti. Şimdi köprüyü yeniden yapılandırmak için geri gelmeden önce gerçek bir ışığa ihtiyacımız olacak.

Wi-Fi Işığı Oluşturma

Sadece dört Neopiksel ile başlarsak, bu adımın donanım tarafı şaşırtıcı derecede basittir, çünkü bunları doğrudan NodeMCU geliştirme kartından ve USB bağlantısından besleyebiliriz. Daha uzun bir şeridiniz varsa endişelenmeyin - bunu yazılımda tanımladık, geri kalanlar açılmayacak.

Bir Neopixel telinden kırmızı güç kablosunu VIN pinine, mavi topraktan GND'ye ve yeşil sinyal kablosunu NodeMCU'da D2 işaretli pime bağlayın. Kutupluluk konusunda çok dikkatli olun: zemini ve VIN'i karıştırırsanız, tahtanızdan bir güç dalgalanması gönderir ve süreçte imha edersiniz.

Arduino ortamınız henüz ESP8266 ile çalışacak şekilde ayarlanmamışsa, devam edin ve ESP8266: Arduino Katili Arduino Katili ile tanışın: ESP8266Size, 10 dolardan daha düşük bir fiyata yerleşik Wi-Fi'ye sahip Arduino uyumlu bir geliştirme kartı olduğunu söylersem ne olur? Peki, var. Daha fazla oku ardından çalıştığını onayladıktan sonra tekrar gelin. Bu ek kitaplıkları yükleyin:

  • lmroy’un PubSubClient
  • Adafruit’un NeoPikselleri

Kullandığımız kod, Github kullanıcısı Aditya Tannu’ - Gereksiz havadan güncelleme işlevini kaldırdım, eksik olan bazı HSV işlevlerine ekledim ve yalnızca tek bir değişkeni değiştirerek daha fazla ışık oluşturmayı kolaylaştırdım. Kodu aşağıda gömülü olarak göremiyorsanız, kodu şu adreste bulabilirsiniz: bu öz.

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

const char * ssid = "..."; const char * şifre = "..."; const char * host = "officelight"; IPAdresi MQTTserver (192, 168, 1, 99);

Bu armatürün IP adresi DHCP aracılığıyla otomatik olarak alınır - her seferinde aynı MQTT sunucusuna bağlandığımız için değişip değişmediği önemli değildir.

Şimdilik yalnızca 4 Neopiksel kullanıyoruz, ancak harici bir kaynaktan güç sağladıysanız bu sayıyı daha sonra artırabilirsiniz. Kodu yükleyin ve test edelim - komut göndermek için favori MQTT istemcinizi kullanın (değiştirdiyseniz, aşağıdaki talimatlarda ana bilgisayar adını ayarlayın).

  • Gönderebilirsin üzerinde köküne officelight kanalını açın. Kapatmak için o kanala başka bir değer gönderin.
  • Rengi değiştirmek için 0-360'tan officelight / hue'ya bir numara gönderebilirsiniz. Kullanıyoruz HSV renk alanı, 0 ve 360 ​​kırmızı, 120 yeşil ve 240 mavi.
  • Parlaklık için yüzde değeri gönderirsiniz (0-100,% sembolünü içermez).
  • Doygunluk için aynı. 100 değeri tamamen doyurulur (yani düz bir renk) ve sıfır, belirtilen Hue'dan bağımsız olarak saf beyaz olacaktır.

MQTT ile çalışan aydınlatma armatürünüzün çalıştığını onayladıktan sonra devam edin.

Yeni HomeKit 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 gidin: /accessories dizin. Bunu kolaylaştırmak için, aşağıdakileri yazarak “officelight” fikstürüyle önceden eşleştirilen kodu doğrudan indirebilirsiniz:

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

Temel olarak, bu, bazı değişken adları değiştirilen varsayılan ışık aksesuarının bir kopyasıdır (yine Adysan'ın çalışmasından uyarlanmıştır, kullanım kolaylığı için basitleştirilmiştir). Buna dayanarak kendi özel aksesuarlarınızı oluşturmak için bilmeniz gerekenler şunlardır.

  • Tüm aksesuarlar *_accessory.js
  • Üstteki seçenekler değişkenindeki IP adresini MQTT sunucunuzla değiştirin
  • Farklı bir fikstür adınız varsa, tüm “officelight”İle benzersiz fikstür adınızı girin. Nano'da tuşuna basarak arama yapabilir / değiştirebilirsiniz CTRL ve \, bulmak için terimi yazın, değiştirilecek terimi yazın, sonra bir (tüm örneklerin anlamı). Hangi değişkenlerin güncellendiğini tam olarak öğrenmek için bu adımların her birine göz atın.
  • Aksesuar için benzersiz bir onaltılık kullanıcı adı oluşturun (light.username = “1B: 2B: 3C: 5D: 6E: FF”;)
  • PIN kodunu değiştirmeyin. Belirli bir biçimi izler ve ne yaptığınızı bilmiyorsanız eşleşemez. Işıklar arasında aynı kalmaları konusunda bir sorun yok.
  • Elgato Eve uygulamasına eklerken fikstürünüze farklı bir "Siri adı" verebilir ve ilk tercihinize bağlı kalmamak için bunları istediğiniz zaman düzenleyebilirsiniz. Yapılandırma dosyalarını düzenlemenize veya sunucuyu yeniden başlatmanıza gerek yoktur.
  • Birden fazla fikstürünüz olduğunda, bunları odaya göre gruplamak veya birden çok karmaşık eylemden oluşan belirli sahneler oluşturmak için Elgato Eve uygulamasını kullanabilirsiniz. Sahneler aşağıdakiler gibi birden fazla eylemden oluşabilir: ofis ışığını açın,% 25'e kadar kısın, kırmızı yapın ve kahve makinesini etkinleştirin.

Yeni aksesuarınızı seçtiğiniz HomeKit uygulamanız üzerinden tekrar eklemeniz gerekir.

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

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

Bunu, önyüklemeye başlamak için önceden ayarladığım diğer komutlarla birleştirdiğimi görebilirsiniz.

başlangıçta rclocal çalıştırma düğümü

Rc.local'ı ilk kez kullanıyorsanız, yürütülebilir olarak ayarlamanız gerekebilir:

sudo chmod 755 /etc/rc.local

Herhangi bir nedenle tekrar hata ayıklama modunda çalıştırmanız gerekiyorsa, çalışan Düğüm uygulamasını aşağıdakilerle öldürebilirsiniz:

Killall düğümü

Son bir adım: aksesuarlar dizinine gidin ve GarageDoorOpener_accessory.js. Yazma sırasında bu adamcağız ve sunucunun bir süre sonra kırılmasına neden olacaktır.

Siri ile Neleri Kontrol Edeceksiniz?

Artık temel özellikleri öğrendiğinize göre, neleri kontrol edebileceğinizin gerçekten bir sınırı yok - Javascript'te kodlayabilirseniz, kendi aksesuar dosyanızı oluşturabilirsiniz. Burada çok fazla potansiyel var, bence çok eğleneceksin. Ne bulduğunuzu yorumlarda bana bildirin!

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.