Sonos Konuşmacılarına Sesli Bildirimler Nasıl Gönderilir

  • Owen Little
  • 0
  • 2838
  • 334
reklâm

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ü özelliği kullanmanıza izin verir, ancak diyalog sizin tarafınızdan bir soru ile başlatılmalıdır - önemli bir mesajı açıklamanıza izin veremezsiniz.

Sen kutu Bunu bir Sonos sistemi ile ve biraz da DIY Ahududu Pi büyüsü ile yapın. Bugün size, Sonos sisteminizde sesli bildirimleri nasıl ayarlayacağınızı göstereceğim, birkaç yararlı IFTTT tarifleri, OpenHAB entegrasyonları ve daha pek çok şeyi, bildirim özelliğini kullanmak için tanıtacağım..

OpenHAB için yerel bir Sonos bağlamasının mevcut olduğunu unutmayın, ancak hatalı bir uPnP kitaplığı nedeniyle bellek sorunlarına neden olduğu bilinmektedir. Şimdilik bunu atlamayı ve bu kılavuzdaki yöntemi kullanmanızı öneririm..

Raspian linux çalıştıran bir Ahududu Pi, bu eğitim için idealdir, ancak çalıştırdığınız linux tabanlı bir ev sunucusunda da çalışması gerekir. Bu durumda, açık kaynaklı ev otomasyon sistemi OpenHAB çalıştıran aynı Ahududu Pi kullanıyorum Ahududu Pi Açık OpenHAB Ev Otomasyonu ile Başlarken Ahududu Pi açık OpenHAB Ev Otomasyonu ile Başlarken OpenHAB olgun, açık kaynaklı bir ev otomasyonu platformu Bu, çeşitli donanımlarda çalışır ve protokolden bağımsızdır; bu, bugün piyasadaki hemen hemen tüm ev otomasyon donanımlarına bağlanabileceği anlamına gelir. . Bu eğitimin geri kalanı, bunu Raspberry Pi'de de çalıştırdığınızı ve masaüstünde yerel bir terminal penceresinin açıldığını veya SSH kullanarak uzaktan oturum açtığınızı varsayar. SSH ile Ahududu Pi'nizi Ayarlama SSH ile Başsız Kullanım İçin Ahududu Pi Raspberry Pi, yerel bir ağa bağlandığında (Ethernet veya Wi-Fi ile) SSH komutlarını kabul edebilir ve kolayca ayarlamanızı sağlar. SSH'nin faydaları günlük gösterimi üzmenin ötesine geçiyor… .

İhtiyacın olacak

  • Raspberry Pi 2 (eski modeller çalışmalı, ancak talimatlardaki belirli değişiklikleri kontrol etmeli)
  • 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ılamaz]. Kayıt olun, sonra sesli mesajları oluşturmak için daha sonra ihtiyacımız olacak olan API anahtarınızı bulun..

Düğümü Yükle En Son

Yazarak Düğümün hangi sürümüne sahip olduğunuzu kontrol edin:

-v düğümü 

Sürüm 6'nın desteklenmediğini unutmayın. Eğer Düğüm 6'ya sahipseniz, önce onu kaldıracak, sonra v5.5'i kurmak için aşağıdaki talimatları izleyeceksiniz..

V5'iniz yoksa veya bulunamayan bir hata alırsanız, Düğümü yüklemek için bu talimatları izleyin. Aşağıdaki komut bir Ahududu Pi 2 olduğunu varsayar; eski modeller için kullanın armv6l yerine armv7l.

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:

-v düğümü

Ve v5.12'yi görmelisiniz (ya da en son ne indirdiyseniz).

Daha sonra, kurmamız gereken bazı Node modüllerimiz var. Ayrıca Düğüm Paket Yöneticisi'ni istiyoruz..

sudo apt-get yükleme npm sudo npm yükleme -g npm sudo npm yükleme -g düğüm-gyp 

Bu ön koşul değil, şimdi eğlenceli şeyler..

Sonos HTTP API

Sonos HTTP API'si, yerel ağ üzerinde bir Web sunucusu oluşturur; bu, bir Sonos’a duyurmak için bir mesajla URL’ye ping yapmamıza izin verir (ve isterseniz bu bilgiyi uzaktan kontrol etmemize rağmen).

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

Böyle bir modül hakkında bir mesaj bulunamadıysa, başka bir tane daha yapın. npm kurulum ve modül adını, sonra deneyin npm başlangıç tekrar. İle ilgili hatalar yaşarsanız “bir C ++ 11 derleyici gerektirir”, aşağıdaki komutlarla düzeltin:

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 

Sonunda böyle bir şey görmelisin:

Sunucu şimdi çalışıyor, Sonos ile etkileşime giriyor. Bu API'nin formatı kolaydır:

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

Veya belirli bir örnek olarak:

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

İlgilendiğimiz eylem “söylemek” aşağıdaki gibi kullanılan komut:

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

VoiceRSS.org'da bir API anahtarına kaydolmanız gerektiğiyle ilgili bir hata mesajı duyarsınız. Bunu önceden yapmış olmalısınız, bu yüzden aşağıdakini yazın ve API anahtarınıza uygun şekilde yapıştırın:

nano settings.json
 "seslendiriciler": "YOURAPIKEY"

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

Sunucuyu yeniden başlatın ve URL'yi tekrar pingleyin. Birkaç saniye sonra hoş bir İngilizce ses duymalısınız (URL’nin sonunu en-us eğer istersen). Pi yeniden başlatıldığında Sonos HTTP API sunucusunun yeniden başlatılmasını sağlamak için:

sudo nano /etc/rc.local

Önce bir satır ekle Çıkış 0:

sudo node /home/pi/sonos/server.js < /dev/null &

Artık yerel ağın herhangi bir yerinden bir URL’ye ping göndererek sesli mesaj oluşturma olanağınız var, bu yüzden bu noktada olanaklar çok açık. Yine de fikirler için mücadele ediyorsanız, belirlediğim birkaç yararlı bildirimi okuyun..

OpenHAB Olaylarla İlgili Bildirimler

Önce basit bir örnek alalım: hareket algılama. Bu, ışıkları etkinleştirmek için yaygın bir kullanım durumudur, ancak trafik yoğunluğu düşük bir alanda bir hareket sensörü ise veya belki de birinin bahçe yoluna geldiğini ileriye dönük bir uyarı olarak sesli bir bildirim isteyebilirsiniz.

"Garden hareketi algılandı" kuralı, Item Garden_Motion sonra değişti, var var String message = "Ziyaretçiniz var" sendHttpGetRequest ("http: // localhost: 5005 / kitchen / say /" + message.encode ("UTF-8") + " / en-gb ") sonu 

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'ye, Sonos'a Günlük Hava Durumu Raporu

Bu tarifte Sonos'un tercih ettiğiniz zamanda günlük bir hava durumu raporu açıklamasını sağlayacağız..

My.OpenHAB ciltlemenin etkin olmasına ihtiyacınız olacak, çünkü bu dahili OpenHAB sunucunuz ve harici IFTTT servisi arasında güvenli bir bağlantı oluşturur. Bunu yapmadıysanız, OpenHAB rehberimizin 1. bölümünü inceleyebilirsiniz. Raspberry Pi'de OpenHAB Ev Otomasyonu ile Başlamak Raspberry Pi'de OpenHAB Ev Otomasyonu ile Başlamak OpenHAB, çalışan, açık kaynaklı bir ev otomasyonu platformudur. çeşitli donanımlarda ve protokol agnostik olduğu için, bugün piyasadaki neredeyse tüm ev otomasyon donanımlarına bağlanabilir. tüm talimatlar için, aksi takdirde tüm öğeler için ısrarla etkin durumdayken kurulum yaptığınızı farz edeceğim.

Ardından, OpenHAB kurulumunuzda günlük hava durumu raporunu saklayacak yeni bir String öğesi yaratın. Bu, My.OpenHAB kanalında görünmeden önce, bazı varsayılan değişkenlerle başlatmamız gerekir. Aşağıdaki URL’yi pingleyin (değiştirin raspberrypi.local OpenHAB sunucunuza veya yalnızca IP adresini kullanın ve Todays_Weather Dize ne adını verdiyse):

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

My.OpenHAB’a giriş yapın ve Öğeler değişkenin artık dışa aktarıldığından emin olmak için liste.

IFTTT'ye geri döndüğünüzde, yeni bir tarif oluşturun ve Meteoroloji kanalını tercih ettiğiniz günün tetikleyicisi olarak kullanın. Daha önce hiç kullanmadıysanız, önce konumunuzu ayarlamanız gerekir..

İşlem olarak My.OpenHAB öğesini seçin ve güncellenecek değişken olarak Todays_Weather öğesini seçin.

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

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

2016-02-27 10: 28: 01.689 [DEBUG] [o.o.i.m.i.MyOpenHABServiceImpl] - Bugün Çok Bulutlu! 7C yüksek ve 1C düşük. Tekrar et. Koşullar Bugün Çok Bulutlu olacak, en yüksek 7C ve en düşük 1C. öğe için Todays_Weather 2016-02-27 10: 28: 01.697 [DEBUG] [o.o.i.m.i.MyOpenHABServiceImpl] - mağaza (Todays_Weather), durum = Bugün Çok Bulutlu! 7C yüksek ve 1C düşük. Tekrar et. Koşullar Bugün Çok Bulutlu olacak, 7C yüksek ve 1C düşük. 

Daha sonra, bu değişkeni Sonos'a göndermek için bir OpenHAB kuralına ihtiyacımız var. “söylemek” URL. Aşağıdakiler yapmalı:

Öğe Todays_Weather güncelleme aldığında "günlük hava durumu raporunu duyur" kuralı sonra gönder ") son 

Bu yeterince basittir: Todays_Weather değişkeni ne zaman güncellendiğinde (otomatik olarak, her gün saat 08: 00'de), URL'ye ping atmak yeterlidir. Kullanırız (kodlamak“UTF-8”) IFTTT'den gelen 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'sini tekrar kullanmanız yeterlidir:

http: //raspberrypi.local: 8080 / CMD? Todays_Weather = Bulutlu, köfte ihtimali ile. 

OpenHAB Olmadan IFTTT'ye, If-This-Then-Node Kullanarak Bağlanma

Son olarak, OpenHAB aracı olmadan herhangi bir IFTTT tarifinden nasıl bağlanılacağına bakalım. Bunun yerine, başka bir web sunucusu kuracağız ve bunu açık İnternet'e maruz bırakacağız. Bu risksiz değildir: her türlü açık sunucu bir güvenlik riskidir, ancak tam bir sunucu yığını çalıştırmayarak bunu hafifletiyoruz, yalnızca güvenli bir JSON veri paketi biçiminde yalnızca belirli komutları kabul eden küçük özel bir hizmet (yani hayır SQL enjeksiyon veya kimlik doğrulama saldırıları mümkün olacaktır). İşimiz bittiğinde, IFTTT Maker kanalından mesaj gönderebileceğiniz ortak bir URL’niz olacak.

Birçok ücretsiz dinamik DNS hizmetinden birini kurarak başlayın 5 Bugün Ücretsiz Kullanabileceğiniz En İyi Dinamik DNS Sağlayıcıları 5 Bugün Bugün Ücretsiz Kullanabileceğiniz En İyi 5 Dinamik DNS Sağlayıcıları DynDNS gittiğinde, burada en iyi ücretsiz dinamik DNS sağlayıcıları, servisleri ve Yerine DDNS alternatifleri. dışarı - DuckDNS'i özellikle tavsiye ediyorum, çünkü Raspberry Pi için basit bir talimat seti veriyor, IP adresinizi otomatik olarak güncellemesini sağlıyor. Bunları takip edin ve bir sonraki adımlar için URL’nizi hatırlayın. Yönlendiricinizde ayrıca yerleşik bir DNS işlevi de olabilir, bu nedenle önce orayı kontrol edin. Benim durumumda bir * .mynetgear.com URL’yi ücretsiz olarak kullandım..

Ardından, yönlendiricinizin port yönlendirme özelliğini bulun Port Yönlendirme Nedir ve Bana Nasıl Yardımcı Olabilir? [MakeUseOf Açıklar] Port Yönlendirme Nedir ve Bana Nasıl Yardımcı Olabilir? [MakeUseOf Explains] Birisi size bir liman yönlendirme sorunu olduğunu söylerken içeride biraz ağlıyor musunuz ve bu yüzden parlak yeni uygulamanızın işe yaramadığını mı düşünüyorsunuz? Xbox'ınız oyun oynamanıza izin vermiyor, torrent indirmeleriniz reddediyor… yapılandırma sayfası; Burası gelen isteklerle ne yapacağımızı söyleyeceğimiz yer. Tüm HTTP isteklerini (80 numaralı bağlantı noktası) Raspberry Pi sunucunuzdaki 1337 numaralı bağlantı noktasına iletin. Raspberry Pi'niz için önceden ayrılmış bir IP adresiniz olduğunu farz ediyorum - gelmediyse, gelecek hafta değiştirmek istemediğiniz için yönlendiricinizin yapılandırma sayfasını ayrılmış IP'ler için kontrol edin ve sunucunun aniden çalışmayı durdurması için.

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

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

Aşağıdakileri görmelisin.

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

Harika. Dinamik DNS ana bilgisayar adınızı yazarak makinenize dış dünyadan erişilebildiğini test edin ve ekleme / eklemeifttn / 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 betiğin başlangıçta çalışmasını sağlamak için, /etc/rc.local dosya ve ekle:

sudo node /home/pi/if-this-then-node/server.js < /dev/null &

If-This-Then-Node eklentileri ile çalışır - sağlanan birkaç varsayılan olanları 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 yüklemek gerekir 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, özel kullandım “sayall” Her Sonos cihazına mesaj gönderen işlem.

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ı şu şekilde değiştirin:

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

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

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

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 / İfttn / URL’nin sonunda. Bu eğik çizgileri unutma). seçmek POST istek, uygulama / json içeriği ve mesajın gövdesini aşağıdaki gibi, tüm değişkenleri daha önce yapılandırdığınızlarla değiştirerek 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. Şimdi kıçını kaldır. ."  

Şimdi, evdeki her Sonos cihazındaki mesajı açıklayacak şekilde kolayca erişilebilir bir tuşa sahibim. Elbette bunu, o kanaldaki değişkenleri kullanarak özel bir mesaj yapmak istediğiniz herhangi bir IFTTT kanalı ile eşleştirebilirsiniz. Artık OpenHAB kullanmadan hava durumu raporunu yukarıdan çoğaltabilmelisiniz, ancak başka bir sunucu kurmak için fazladan çaba harcadı.

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 arayüzlerinden herhangi birinin erişilebilir olup olmadığını sistematik olarak tespit etmeye çalışan birini görebilirsiniz. Onlar değildi. Benzer bir şey görürseniz endişelenmeyin. Kimsenin orada olup olmadığını görmek için soğuk arama rasgele telefon numaralarının internet eşdeğeri..

Ne Duyuracaksınız??

Artık tüm evinizi sürekli olarak yıkamak için muhtemelen aklınıza gelebilecek her şey hakkında sesli bildirimlerde bulunacak araçlara ve kvmalara sahip olmalısınız. Kim müzik ister? Tek limitiniz, VoiceRSS.org'dan günlük 350 istek - ancak bu yaklaşık her 4 dakikada bir, yani iyi olmalısınız.

Peki bununla ne yapacaksın? Fikirlerinizi veya IFTTT tarifini yorumlarda paylaşın!

Resim Kredisi: Shutterstock üzerinden S_Photo'dan kahve ve kadın




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.