İlan

Herhangi bir akıllı ev meraklısının rüyası, konuşabileceğiniz bir evdir, ancak gerçek bundan çok uzaktır.

Örneğin Amazon Echo, herhangi bir sayıda ses kontrollü özellik kullanmanıza izin verir, ancak iletişim kutusu sizin tarafınızdan bir soru ile başlatılmalıdır - sadece önemli bir mesajı duyurmasını sağlayamazsınız.

Sen Yapabilmek Bunu bir Sonos sistemi ve biraz DIY Raspberry Pi büyüsü ile yapın. Bugün size Sonos sisteminizde sesli bildirimlerin nasıl ayarlanacağını göstereceğim, bildirim özelliğini kullanmak için birkaç yararlı IFTTT tarifi, OpenHAB entegrasyonu ve daha fazlasını sunacağız.

OpenHAB için yerel bir Sonos bağlaması bulunduğunu, ancak hatalı bir uPnP kütüphanesi nedeniyle bellek sorunlarına neden olduğu biliniyor. Şimdilik bunu atlamanızı ve bunun yerine bu eğiticide yöntemi kullanmanızı öneririm.

Raspian linux çalıştıran bir Raspberry Pi, bu eğitim için idealdir, ancak çalıştırdığınız linux tabanlı herhangi bir ev sunucusunda da çalışmalıdır. Bu durumda, aynı Raspberry Pi'yi kullanıyorum

instagram viewer
OpenHAB, açık kaynaklı ev otomasyon sistemi Raspberry Pi'de OpenHAB Ev Otomasyonuna BaşlarkenOpenHAB, çeşitli donanımlarda çalışan ve agnostik protokolü, yani piyasadaki neredeyse tüm ev otomasyon donanımlarına bağlanabilir bugün. Daha fazla oku . Bu öğreticinin geri kalanı, bunu bir Raspberry Pi'de çalıştırdığınızı ve masaüstünde açık bir yerel terminal penceresine sahip olduğunuzu varsayar veya SSH kullanarak uzaktan oturum açın 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 .

İhtiyacın olacak

  • Ahududu Pi 2 (eski modeller çalışmalıdır, ancak talimatlarda belirli değişiklikler olup olmadığını kontrol edin)
  • En az bir Sonos hoparlör (diğer ses sistemleri desteklenmez, bu yalnızca Sonos için bir öğreticidir)
  • VoiceRSS.org'da ücretsiz hesap [Artık Kullanılamıyor]. Kayıt ol o zaman API anahtarınızı bulunsesli mesajları oluşturmak için daha sonra ihtiyacımız olacak.

En Son Düğümü Kur

Hangi Düğüm sürümüne sahip olduğunuzu kontrol edin:

düğüm -v. 

Sürüm 6'nın desteklenmediğini unutmayın. Düğüm 6'nız varsa, önce onu kaldıracaksınız, ardından v5.5'i yüklemek için aşağıdaki talimatları izleyin.

V5'iniz yoksa veya bulunamadı hatası alırsanız, Düğüm'ü yüklemek için bu talimatları izleyin. Aşağıdaki komut Raspberry Pi 2'yi varsayar; eski modeller için armv6l onun yerine armv7l.

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

Yazarak tekrar onaylayın:

düğüm -v

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

Sonra, yüklenecek bazı Düğüm modüllerimiz var. Ayrıca Düğüm Paketi Yöneticisi'ni de istiyoruz.

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

Bu önkoşullar, şimdi eğlenceli şeyler üzerine.

Sonos HTTP API'sı

Sonos HTTP API'sı yerel ağda, bir URL’de Sonos (ve isterseniz uzaktan kontrol etmek için, ancak bu öğretici yalnızca sesli bildirime odaklanıyor Görünüş).

git klonu https://github.com/jishi/node-sonos-http-api.git SONOS. cd sonos. npm kurulum --üretim. npm başlangıç. 

Böyle bir modülle ilgili bir mesaj bulamazsanız, başka bir modül yapın npm kurulum ve modül adını, ardından npm başlangıç tekrar. İle ilgili hatalarla karşılaşırsanız “Bir C ++ 11 derleyicisi gerektirir”, aşağıdaki komutlarla düzeltin:

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. 

Sonunda böyle bir şey görmelisin:

sonos-http-api çalışma

Sunucu şimdi çalışıyor ve Sonos ile arayüz oluşturuyor. Bu API'nın biçimi kolaydır:

http://[SERVER IP]: 5005 / [ODA ADI] / [EYLEM]

Veya belirli bir örnek olarak:

http://192.168.1.99:5005/kitchen/playlist/chillout

İlgilendiğimiz eylem aşağıdaki gibi kullanılan “say” komutudur:

http://192.168.1.99:5005/kitchen/say/make%20use%20of%20is%20awesome/en-gb

VoiceRSS.org'da bir API anahtarına kaydolmak zorunda kaldığınızda bir hata mesajı duyarsınız. Bunu zaten yapmış olmalısınız, bu nedenle aşağıdakileri yazın ve API anahtarınızı uygun olarak yapıştırın:

nano ayarları.json

{

"Voicerss": "YOURAPIKEY" }

(Dosyayı kaydetmek için CTRL-X, Y tuşlarına basın)

Sunucuyu yeniden başlatın ve URL'ye tekrar ping atın. Birkaç saniye sonra, hoş bir İngilizce ses duymalısınız (URL'nin sonunu en-us isterseniz). Pi yeniden başlatıldığında Sonos HTTP API sunucusunu yeniden başlatmak için:

sudo nano /etc/rc.local

Tarihinden önce bir satır ekleyin çıkış 0:

sudo düğümü /home/pi/sonos/server.js  dev / null &

Artık sadece bir URL'ye ping yaparak yerel ağın herhangi bir yerinden sesli mesaj oluşturma olanağına sahipsiniz, böylece olasılıklar bu noktada tamamen açık. Yine de fikirler için mücadele ediyorsanız, kurduğum birkaç yararlı bildirimi okuyun.

Olaylarla ilgili OpenHAB Bildirimleri

Önce basit bir örnek verelim: hareket algılama. Bu, ışıkları etkinleştirmek için yaygın bir kullanım durumudur, ancak ışıklıysa sesli bildirim de isteyebilirsiniz. Düşük trafikli bir alanda hareket sensörü veya belki birisinin bahçeye geldiğine dair ileri bir uyarı olarak yolu.

kuralı "Bahçe hareketi algılandı" Öğe Garden_Motion değiştiğinde var Dize message = "Bir ziyaretçiniz var" sendHttpGetRequest (" http://localhost: 5005 / mutfak / diyelim / "+ message.encode (" UTF-8 ") +" / tr-tr ") son.

Bu basit sesli bildirimleri kurallarınızdan herhangi birine nasıl entegre edebileceğinizi görmelisiniz, ancak biraz daha karmaşık bir şey deneyelim.

IFTTT'den OpenHAB'a Sonos'a Günlük Hava Durumu Raporu

Bu tarifte, Sonos'un tercih ettiğiniz saatte bir günlük hava durumu raporunu duyurmasını sağlayacağız.

Benim'e ihtiyacınız olacak. Dahili OpenHAB sunucunuz ile harici IFTTT hizmeti arasında güvenli bir bağlantı oluşturduğundan OpenHAB bağlaması etkinleştirildi. Henüz yapmadıysanız bunu ayarlayın - başvurabilirsiniz OpenHAB kılavuzumuzun 1. bölümü Raspberry Pi'de OpenHAB Ev Otomasyonuna BaşlarkenOpenHAB, çeşitli donanımlarda çalışan ve agnostik protokolü, yani piyasadaki neredeyse tüm ev otomasyon donanımlarına bağlanabilir bugün. Daha fazla oku talimatların tamamı için, aksi takdirde tüm öğeler için kalıcılık etkin olarak ayarlandığını varsayacağım.

Ardından, OpenHAB kurulumunuzda günlük hava durumu raporunu saklayacak yeni bir String öğesi oluşturun. Bundan önce My. OpenHAB kanalı, bazı varsayılan değişkenlerle başlatmamız gerekecek. Aşağıdaki URL'ye ping atın (değiştirin raspberrypi.local OpenHAB sunucunuza veya yalnızca IP adresini kullanın ve Todays_Weather Dize adını verdiğiniz her neyse):

http://raspberrypi.local: 8080 / CMD? Todays_Weather Güneşli = 

My'e giriş yapın. OpenHAB [Bozuk URL Kaldırıldı] ve Öğeler değişkenin artık dışa aktarıldığından emin olmak için liste.

openhab ürün ihracat kontrolüm

IFTTT'ye geri dönün, yeni bir tarif oluşturun ve Hava durumu kanalı günün tercih edilen saatinde tetikleyici olarak. Daha önce hiç kullanmadıysanız, önce konumunuzu ayarlamanız gerekir.

My'i seçin. Eylem olarak HHAB'ı açın ve güncellenecek değişken olarak Todays_Weather'ı seçin.

ifttt hava durumu raporu

Şimdilik, test etmek için bir sonraki yarım saat aralığını seçin - çalıştığını öğrendikten sonra tarifi daha sonra güncelleyebilirsiniz.

Elbette, test zamanında (aslında, biraz önce), bugünün tahminini başarıyla güncelledim.

2016-02-27 10: 28: 01.689 [HATA] [o.o.i.m.i. MyOpenHABServiceImpl] - Komut alındı ​​Bugün çok bulutlu! Yüksek 7C ve düşük 1C ile. Tekrar et. Koşullar Bugün Çok Bulutlu olacak, yüksek 7C ve düşük 1C. Todays_Weather öğesi için. 2016-02-27 10: 28: 01.697 [HATA] [o.o.i.m.i. MyOpenHABServiceImpl] - mağaza (Todays_Weather), durum = Bugün Çok Bulutlu! Yüksek 7C ve düşük 1C ile. Tekrar et. Koşullar Bugün Çok Bulutlu olacak, yüksek 7C ve düşük 1C. 

Şimdi, bu değişkeni Sonos “say” URL'sine göndermek için bir OpenHAB kuralına ihtiyacımız var. Aşağıdakiler bunu yapmalıdır:

kuralı "Günlük hava durumu raporunu duyur" Todays_Weather Öğe güncelleme aldığında. sonra sendHttpGetRequest (" http://localhost: 5005 / mutfak / diyelim / "+ Todays_Weather.state.toString.encode (" UTF-8 ") +" / tr-tr ") son.

Bu yeterince basittir: Todays_Weather değişkeni her güncellendiğinde (otomatik olarak her gün sabah 8'de) URL'ye ping işlemi uygular. Kullanırız kodlamak ( “UTF-8”) IFTTT'den cümleyi bir URL'de kullanıma uygun hale getirmek için dize işlevi. Sistemin bu bölümünü manuel olarak test etmek için, OpenHAB HTTP API'sını tekrar kullanmanız yeterlidir:

http://raspberrypi.local: 8080 / CMD? Todays_Weather = Köfte ihtimali olan bulutlu. 

If-This-Then-Node Düğümünü Kullanarak OpenHAB Olmadan IFTTT'ye Bağlanma

Son olarak, OpenHAB aracısı olmadan herhangi bir IFTTT tarifinden nasıl bağlanacağına bakalım. Bunun yerine, başka bir web sunucusu kuracağız ve bunu açık İnternet'e göstereceğiz. Bu risksiz değil: her türlü açık sunucu bir güvenlik riskidir, ancak tam bir sunucu yığını çalıştırarak bunu hafifletiyoruz, sadece küçük bir Belirli komutları yalnızca güvenli JSON veri paketi biçiminde kabul eden belirli bir hizmet (bu nedenle SQL enjeksiyonu veya kimlik doğrulama saldırıları yapılmaz mümkün). İşimiz bittiğinde, IFTTT Maker kanalından mesaj gönderebileceğiniz genel bir URL'niz olur.

Birçok tanesinden birini kurarak başlayın. ücretsiz dinamik DNS hizmetleri En İyi 5 Ücretsiz Dinamik DNS SağlayıcısıBir DDNS hizmeti, hareket halindeyken ev PC'nize bağlanmanıza yardımcı olabilir. İşte dikkate almanız gereken en iyi ücretsiz dinamik DNS sağlayıcıları. Daha fazla oku Orada - Ben basit bir dizi verir çünkü DuckDNS tavsiye Pi için talimatlarIP adresinizi otomatik olarak güncellemesini sağlar. Bunları takip edin ve sonraki adımlar için URL'nizi hatırlayın. Yönlendiricinizde yerleşik bir dinamik DNS işlevi de olabilir, bu yüzden önce orada kontrol edin. Benim durumumda, bir * .mynetgear.com URL'yi ücretsiz olarak kullandım, bu yüzden kullandım.

Ardından, yönlendiricinizin liman yönlendirme Liman Yönlendirme Nedir ve Bana Nasıl Yardımcı Olabilir? [Açıklamalar MakeUseOf]Birisi size bir liman yönlendirme sorunu olduğunu söylediğinde biraz içeride ağlıyor musunuz ve bu yüzden parlak yeni uygulamanız işe yaramıyor mu? Xbox'ınız oyun oynamanıza izin vermiyor, torrent indirmeleriniz reddediyor ... Daha fazla oku yapılandırma sayfası; Burası, gelen taleplerle ne yapacağımızı söyleyeceğimiz yerdir. Tüm HTTP isteklerini (bağlantı noktası 80) Raspberry Pi sunucunuzdaki bağlantı noktası 1337'ye yönlendirin. Raspberry Pi'niz için zaten ayrılmış bir IP adresiniz olduğunu varsayıyorum - eğer yapmadıysanız, yönlendiricinizin yapılandırmasını kontrol edin önümüzdeki hafta değişmeyeceği ve sunucunun aniden durması için oradayken ayrılmış IP'ler için sayfa Çalışma.

yönlendirici yapılandırma bağlantı noktası yönlendirme

Şimdi sunucu yazılımının son bitini yüklemek için.

https://github.com/sebauer/if-this-then-node.git. cd eğer-bu-sonra-düğüm / npm kurulum. düğüm server.js.

Aşağıdakileri görmelisiniz.

bu durumda düğüm varsayılan değerleri hatası

Sorun değil, bu sadece detaylarımızı güncellememiz gerektiği anlamına geliyor. Aç config.js ve bu ayrıntıları varsayılandan başka bir şeye düzenleyin, ardından kaydedin. Sunucuyu yeniden çalıştırdığınızda şunu görmelisiniz:

bu durumda düğüm sunucusu çalışıyorsa

Harika. Dinamik DNS ana bilgisayar adınızı yazarak makinenize dış dünyadan erişilebildiğini test edin ve /ifttn / URL'nin sonuna. Her şey işe yararsa, mesaj “IFTTN - if-this-then-node Sürüm 2.0.1 çalışıyor ve çalışıyor!” tarayıcınızda görüntülenecektir. Yine, bu komut dosyasının başlangıçta çalışmasını sağlamak için /etc/rc.local dosya ve ekleyin:

sudo düğümü /home/pi/if-this-then-node/server.js  dev / null &

Eğer-Bu-Sonra-Düğüm eklentiler aracılığıyla çalışır - sağlanan birkaç varsayılan sürüm vardır, ancak bizi ilgilendirmez. Bunun yerine, sizin için yazdığım bu özel eklentiyi aşağıdaki komutlarla indirin.

cd eklentileri. wget https://gist.githubusercontent.com/jamesabruce/4af8db24ba3452b94877/raw/d11c1cff3aa44dbb6a738eeb15202f3db461de75/sonos.js 

Ayrıca, istek modülü.

npm yükleme isteği. 

Ardından sunucuyu yeniden başlatın. Eklenti oldukça basit, ancak şu ana kadar kullandığımız URL'den biraz farklı. Bu durumda, mesajı her Sonos cihazına gönderen özel "sayall" işlemini kullandım.

istek(' http://localhost: 5005 / sayall / '+ params.message +' / en-gb ', işlev (hata, yanıt, gövde)

Belirli cihazları hedeflemeyi tercih ediyorsanız, bu satırı aşağıdakilerle değiştirin:

istek(' http://localhost: 5005 / '+ params.device +' / say / '+ params.message +' / en-gb ', işlev (hata, yanıt, gövde)

Adlı başka bir satır parametresi ekle cihaz Sonos cihaz adını belirtmek için aşağıdaki JSON isteğine başvurun.

Bunu test etmek için IFTTT “Do” düğmesi uygulamasını kullanıyorum. Yeni bir tarif oluşturun, kanallara göz atın ve Maker kanal.

do düğmesi

Yeni bir tarif oluşturun. Daha önce ücretsiz bir dinamik DNS sağlayıcısından yapılandırdığınız URL'yi girin (dahil /ifttn/ URL'nin sonunda. Bu eğik çizgileri unutmayın). seçmek İLETİ istek, uygulama / json içeriği ve iletinin gövdesini aşağıdaki gibi değiştirerek tüm değişkenleri daha önce yapılandırdığınız değişkenlerle değiştirin:

{"action": "sonos", "user": "YOURUSER", "pw": "YOURPASSWORD", "message": "Herkes için gelen mesaj: Akşam yemeği hazır! Tekrar et. Akşam yemeği hazır. Kıçlarınızı yukarı kaldırın. "}

Şimdi, mesajı evdeki her Sonos cihazında anlatacak kolayca erişilebilen bir düğmem var. Elbette bunu, o kanaldaki değişkenleri kullanarak özel bir mesaj oluşturmak istediğiniz herhangi bir IFTTT kanalıyla eşleştirebilirsiniz. Hava raporunu OpenHAB'ı kullanmadan yukarıdan da kopyalayabilmelisiniz, ancak başka bir sunucu yüklemek için ekstra çaba gerektirdi.

Not: Bilgisayar korsanları sizi otomatik olarak tarar. Bu her zaman olur, ancak günlükleri görüntülüyorsanız endişe verici görünebilir. Aşağıda, standart PHPMyAdmin arabirimlerinden herhangi birinin erişilebilir olup olmadığını sistematik olarak bulmaya çalışan birisini görebilirsiniz. Onlar değildi. Benzer bir şey görürseniz endişelenmeyin. Orada kimse olup olmadığını görmek için soğuk arama rastgele telefon numaralarının internet eşdeğeridir.

web sunucusu saldırı girişimleri

Ne Anlatacaksınız?

Şimdi, düşünebileceğiniz her şey hakkında sesli bildirimlerde tüm evinizi sürekli olarak yıkamak için araçlara ve kwowledge'a sahip olmalısınız. Kimin müziğe ihtiyacı var? Tek sınırınız VoiceRSS.org'dan günlük 350 taleptir - ancak bu yaklaşık 4 dakikada birdir, bu yüzden iyi olmalısınız.

Peki bununla ne yapacaksın? Yorumlarınızı fikirlerinizi veya IFTTT tarifi paylaşın!

Resim Kredileri:kahve ve kadın yorum yapan: S_Photo via Shutterstock

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.