Jak odesílat hlasová oznámení do reproduktorů Sonos

  • Lesley Fowler
  • 0
  • 4613
  • 1510
reklama

Sen každého nadšeného inteligentního domova je domovem, se kterým můžete mluvit, ale realita je daleko od toho.

Například Amazon Echo vám umožňuje používat libovolný počet funkcí ovládaných hlasem, ale dialog musíte zahájit s otázkou - nemůžete jen nechat oznámit důležitou zprávu.

Vy umět to však udělejte pomocí systému Sonos a trochu magie DIY Raspberry Pi. Dnes vám ukážu, jak nastavit hlasová oznámení ve vašem systému Sonos, představit několik užitečných receptů IFTTT, integrace OpenHAB a další, abyste mohli využívat funkci oznámení.

K dispozici je nativní vazba Sonos pro OpenHAB, ale je známo, že způsobuje problémy s pamětí kvůli chybné knihovně uPnP. Navrhuji to prozatím přeskočit a místo toho použít metodu v tomto tutoriálu.

Raspberry Pi, na kterém běží Raspian linux, je ideální pro tento tutoriál, ale měl by také fungovat na kterémkoli spuštěném domácím serveru založeném na Linuxu. V tomto případě používám stejný Raspberry Pi, který provozuje OpenHAB, open source systém domácí automatizace Začínáme s OpenHAB Home Automation na Raspberry Pi Začínáme s OpenHAB Home Automation na Raspberry Pi OpenHAB je vyspělá, open source platforma domácí automatizace který běží na nejrůznějším hardwaru a je protokolární, což znamená, že se může připojit k téměř jakémukoli hardwaru pro domácí automatizaci na současném trhu. . Zbytek tohoto tutoriálu předpokládá, že to také provozujete na Raspberry Pi, a buď máte otevřené místní terminálové okno na ploše, nebo jste přihlášeni vzdáleně pomocí SSH Nastavení Raspberry Pi pro použití bez hlavy s SSH Nastavení vašeho Raspberry Pi pro bezhlavé použití s ​​SSH Raspberry Pi může přijímat SSH příkazy, když je připojen k místní síti (buď prostřednictvím Ethernetu nebo Wi-Fi), což vám umožňuje snadné nastavení. Výhody SSH přesahují každodenní screening… .

Budeš potřebovat

  • Raspberry Pi 2 (starší modely by měly fungovat, ale zkontrolujte konkrétní změny v pokynech)
  • Alespoň jeden reproduktor Sonos (ostatní zvukové systémy nejsou podporovány, jedná se o tutoriál pouze pro Sonos)
  • Bezplatný účet na VoiceRSS.org [již není k dispozici]. Zaregistrujte se a poté najděte klíč API, který budeme později potřebovat ke generování hlasových zpráv.

Nainstalovat uzel nejnovější

Zkontrolujte, kterou verzi uzlu máte zadáním:

uzel -v 

Verze 6 není podporována. Pokud máte uzel 6, musíte jej nejprve odebrat a poté nainstalovat v5.5 podle pokynů níže.

Pokud nemáte verzi v5 nebo pokud jste nenašli chybu, nainstalujte uzel podle těchto pokynů. Následující příkaz předpokládá Raspberry Pi 2; u starších modelů použijte armv6l namísto armv7l.

wget https://nodejs.org/download/release/latest-v5.x/node-v5.12.0-linux-armv7l.tar.gz tar -xvf node-v5.12.0-linux-armv7l.tar.gz cd uzel -v5.12.0-linux-armv7l sudo cp -R * / usr / local 

Potvrďte znovu zadáním:

uzel -v

Měli byste vidět v5.12 (nebo cokoli, co bylo naposledy stažené).

Dále máme nainstalovat některé moduly Node. Chceme také správce balíčků uzlů.

sudo apt-get install npm sudo npm install -g npm sudo npm install -g node-gyp 

To jsou předpoklady z cesty, nyní na zábavné věci.

Sonos HTTP API

Sonos HTTP API vytváří webový server v lokální síti, což nám umožňuje pingovat URL se zprávou, kterou oznamujeme na Sonosu (a ovládat ji vzdáleně, pokud chcete, i když se tento tutoriál zaměřuje pouze na aspekt hlasového upozornění).

git clone https://github.com/jishi/node-sonos-http-api.git sonos cd sonos npm install --production npm start 

Pokud uvidíte zprávu o tom, že takový a takový modul nebyl nalezen, proveďte další Npm instalace a název modulu, potom zkuste npm start znovu. Pokud se vyskytnou chyby týkající se “vyžaduje kompilátor C ++ 11”, opravit pomocí následujících příkazů:

sudo apt-get install gcc-4,8 g ++ - 4,8 sudo update-alternatives --install / usr / bin / gccgcc / usr / bin / gcc-4.6 20 sudo update-alternatives --install / usr / bin / gcc gcc / usr / bin / gcc-4.8 50 alternativ sudo update -install / usr / bin / g ++ g ++ /usr/bin/g++-4.6 20 alternativ sudo update -install / usr / bin / g ++ g ++ / usr / bin / g ++ - 4,8 50 

Nakonec byste měli vidět něco takového:

Server je nyní spuštěn a propojuje se Sonosem. Formát tohoto rozhraní API je snadný:

http: // [SERVER IP]: 5005 / [ROOM NAME] / [ACTION]

Nebo jako konkrétní příklad:

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

Akce, která nás zajímá, je “říci” příkaz, který se používá takto:

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

Na VoiceRSS.org se zobrazí chybová zpráva o nutnosti zaregistrovat se do klíče API. Měli jste to již udělat, proto zadejte následující text a vložte do svého API klíče jako appropirate:

nano settings.json
 "voicerss": "YOURAPIKEY"

(Stisknutím klávesy CTRL-X, Y uložte soubor)

Restartujte server a znovu proveďte ping URL. Po několika sekundách byste měli slyšet nádherný anglický hlas (i když změníte konec adresy URL na en-us pokud byste raději). Chcete-li, aby se server Sonos HTTP API znovu spustil po restartování Pi:

sudo nano /etc/rc.local

Přidejte řádek před exit 0:

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

Nyní máte možnost vytvořit hlasovou zprávu odkudkoli v místní síti pouhým pingováním adresy URL, takže v tomto bodě jsou možnosti široké. Pokud ale bojujete o nápady, přečtěte si několik užitečných oznámení, které jsem nastavil.

Oznámení OpenHAB o událostech

Vezměme si nejprve jednoduchý příklad: detekce pohybu. Toto je běžný případ použití pro aktivaci světel, ale možná budete chtít také hlasové upozornění, pokud se jedná o senzor pohybu v oblasti s nízkým provozem, nebo možná jako varování vpřed, že někdo přichází po zahradní cestě.

pravidlo "Zjistil se pohyb zahrady", když se změnila položka Garden_Motion, pak var String message = "Máte návštěvníka" sendHttpGetRequest ("http: // localhost: 5005 / kitchen / say /" + message.encode ("UTF-8") + " / en-gb ") konec 

Měli byste vidět, jak můžete integrovat tato jednoduchá hlasová oznámení do některého z vašich pravidel, ale zkuste něco trochu složitějšího.

Denní zpráva o počasí od IFTTT po OpenHAB pro Sonos

V tomto receptu necháme Sonos ohlásit denní hlášení o počasí ve Vámi preferovaném čase.

Budete potřebovat povolenou vazbu My.OpenHAB, protože to vytvoří bezpečné spojení mezi interním serverem OpenHAB a externí službou IFTTT. Nastavte, pokud jste tak již neučinili - můžete se podívat na část 1 našeho průvodce OpenHAB Začínáme s domácí automatizací OpenHAB na Raspberry Pi Začínáme s domácí automatizací OpenHAB na Raspberry Pi OpenHAB je vyspělá platforma pro domácí automatizaci, která běží na různých hardwarech a je protokolový agnostik, což znamená, že se může připojit k téměř jakémukoli hardwaru pro domácí automatizaci na současném trhu. pro úplné pokyny, jinak předpokládám, že jste ji již nastavili s vytrvalostí povolenou pro všechny položky.

Dále vytvořte v instalaci OpenHAB novou položku String, která bude ukládat denní zprávy o počasí. Než to bude vidět v kanálu My.OpenHAB, musíme jej inicializovat pomocí výchozí proměnné. Ping následující URL (změna raspberrypi.local na váš OpenHAB server nebo použijte jeho IP adresu a Dnešní počasí k čemukoli jste jmenovali String):

http: //raspberrypi.local: 8080 / CMD? Todays_Weather = Sunny 

Přihlaste se do My.OpenHAB a zkontrolujte Položky seznam, abyste zajistili, že proměnná byla nyní exportována.

Zpět na IFTTT, vytvořte nový recept a použijte meteorologický kanál jako spouště ve vaší preferované denní době. Pokud jste ji ještě nikdy nepoužívali, musíte nejprve nastavit svou polohu.

Jako akci vyberte My.OpenHAB a jako proměnnou, kterou chcete aktualizovat, vyberte Todays_Weather.

Prozatím stačí vybrat další půlhodinový slot pro testování - recept můžete aktualizovat později, jakmile víte, že funguje.

Jistě, v době testování (ve skutečnosti, trochu dříve) jsem dostal dnešní předpověď úspěšně aktualizovanou.

2016-02-27 10: 28: 01.689 [DEBUG] [o.o.i.m.i.MyOpenHABServiceImpl] - Příkaz byl dnes oblačno! S vysokým 7C a nízkým 1C. Opakovat. Dnes budou podmínky skoro zataženo, s vysokou 7C a nízkou 1C. pro položku Todays_Weather 2016-02-27 10: 28: 01.697 [DEBUG] [o.o.i.m.i.MyOpenHABServiceImpl] - obchod (Todays_Weather), stát = Dnes zataženo! S vysokým 7C a nízkým 1C. Opakovat. Dnes budou podmínky skoro zataženo, s vysokou 7C a nízkou 1C. 

Dále potřebujeme pravidlo OpenHAB, abychom tuto proměnnou poslali do Sonosu “říci” URL. Měli byste to udělat:

pravidlo „Oznámit denní hlášení o počasí“, když položka Todays_Weather obdržela aktualizaci, pak sendHttpGetRequest ("http: // localhost: 5005 / kitchen / say /" + Todays_Weather.state.toString.encode ("UTF-8") + "/ en-gb ") konec 

Je to dost jednoduché: pokaždé, když se proměnná Todays_Weather aktualizuje (což bude automaticky každý den v 8 hodin), ping URL. Používáme zakódovat(“UTF-8”) Funkce String, díky které je věta z IFTTT vhodná pro použití v URL. Chcete-li tuto část systému otestovat ručně, stačí znovu použít rozhraní OpenHAB HTTP API:

http: //raspberrypi.local: 8080 / CMD? Todays_Weather = Zataženo, s možností masových kuliček. 

Připojte se k IFTTT bez OpenHAB pomocí If-This-Then-Node

Nakonec se podívejme, jak se připojit z jakéhokoli receptu IFTTT bez prostředníka OpenHAB. Namísto toho nainstalujeme jiný webový server a vystavíme jej otevřenému internetu. To není bez rizika: jakýkoli otevřený server představuje bezpečnostní riziko, ale to zmírňujeme tím, že nespouštíme kompletní serverový zásobník, jen malou specifickou službu, která přijímá pouze určité příkazy v bezpečném formátu datových paketů JSON (takže ne Bude možné provést SQL injekce nebo autentizační útoky). Po dokončení budete mít veřejnou adresu URL, na kterou můžete odesílat zprávy z kanálu IFTTT Maker.

Začněte nastavením jedné z mnoha bezplatných dynamických služeb DNS 5 Nejlepší dynamičtí poskytovatelé DNS, které můžete dnes zdarma používat Alternativy DDNS k jeho nahrazení. tam - doporučuji DuckDNS, zvláště proto, že dává jednoduchou sadu instrukcí pro Raspberry Pi, což mu umožňuje automaticky aktualizovat vaši IP adresu. Postupujte podle těchto pokynů a zapamatujte si adresu URL pro další kroky. Ve vašem routeru může být také integrována dynamická funkce DNS, proto ji nejprve zkontrolujte. V mém případě mohu získat * .mynetgear.com URL zdarma, takže jsem to použil.

Dále najděte port routeru pro přesměrování portů Co je to port forwarding a jak mi může pomoci? [MakeUseOf vysvětluje] Co je přesměrování portů a jak mi může pomoci? [MakeUseOf vysvětluje] Plačete trochu dovnitř, když vám někdo řekne, že existuje problém s přesměrováním portů, a proto vaše nová lesklá aplikace nebude fungovat? Váš Xbox vám nedovolí hrát hry, vaše stahování torrentů odmítá ... konfigurační stránku; tady jí řekneme, co dělat s příchozími požadavky. Předejte všechny požadavky HTTP (port 80) na port 1337 na vašem serveru Raspberry Pi. Předpokládám, že už máte přidělenou IP adresu pro Raspberry Pi - pokud tak neučiníte, zkontrolujte, zda jste na konfigurační stránce směrovače, zda jsou vyhrazené IP, když jste tam, protože se příští týden nezměníte a aby server náhle přestal fungovat.

Nyní nainstalujte poslední bit serverového softwaru.

https://github.com/sebauer/if-this-then-node.git cd if-this-then-node / npm install node server.js 

Měli byste vidět následující.

To je v pořádku, to znamená, že musíme aktualizovat své údaje. Otevřít config.js v Nano a upravte tyto údaje na cokoli jiného než výchozí, poté uložte. Při opětovném spuštění serveru byste měli vidět toto:

Skvělý. Otestujte, zda je váš počítač přístupný z vnějšího světa zadáním dynamického názvu hostitele DNS a připojením /ifttn / na konec adresy URL. Pokud všechno funguje, zpráva “IFTTN - if-this-then-node Verze 2.0.1 je funkční!” se zobrazí v prohlížeči. Chcete-li znovu spustit tento skript při spuštění, upravte /etc/rc.local soubor a přidat:

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

If-This-Then-Node funguje přes pluginy - je zde několik standardních dodávaných, ale nejsou pro nás zajímavé. Místo toho si stáhněte tento vlastní plugin, který jsem vám napsal, s následujícími příkazy.

CD pluginy wget https://gist.githubusercontent.com/jamesabruce/4af8db24ba3452b94877/raw/d11c1cff3aa44dbb6a738eeb15202f3db461de75/sonos.js 

Budete také muset nainstalovat žádost modul.

Žádost o instalaci npm 

Poté restartujte server. Plugin je poměrně jednoduchý, ale trochu se liší od adresy URL, kterou jsme dosud používali. V tomto případě jsem použil speciální “řekni všechno” akce, která odešle zprávu do každého zařízení Sonos.

požadavek ('http: // localhost: 5005 / sayall /' + params.message + '/ en-gb', funkce (chyba, odpověď, tělo) 

Pokud chcete raději cílit na konkrétní zařízení, nahraďte tento řádek textem:

požadavek ('http: // localhost: 5005 /' + params.device + '/ say /' + params.message + '/ en-gb', funkce (chyba, odpověď, tělo) 

Přidejte další řádkový parametr s názvem přístroj k požadavku JSON níže, ve kterém zadejte název zařízení Sonos.

Pro vyzkoušení používám IFTTT “Dělat” tlačítko aplikace. Vytvořte nový recept, přejděte na kanály a vyberte Výrobce kanál.

Vytvořte nový recept. Zadejte adresu URL, kterou jste dříve nakonfigurovali od bezplatného poskytovatele dynamického DNS (včetně / ifttn / na konci adresy URL. Nezapomeňte na tyto lomítka). Vybrat POŠTA žádost, aplikace / json obsah a tělo zprávy následujícím způsobem, nahrazující všechny proměnné podle potřeby těmi, které jste dříve nakonfigurovali:

"action": "sonos", "user": "YOURUSER", "pw": "YOURPASSWORD", "message": "Příchozí zpráva pro všechny: Večeře je připravena! Opakujte. Večeře je připravena. Získejte nyní zadky nahoře . “  

Nyní mám snadno přístupné tlačítko, které oznamuje zprávu na každém zařízení Sonos v domě. Můžete to samozřejmě spárovat s jakýmkoli kanálem IFTTT, který chcete vytvořit vlastní zprávu pomocí proměnných z tohoto kanálu. Měli byste být dokonce schopni replikovat zprávu o počasí shora, aniž byste nyní museli používat OpenHAB, i když to vyžadovalo další úsilí při instalaci jiného serveru..

Poznámka: hackeři vás automaticky prohledají. Děje se to po celou dobu, ale pokud si prohlížíte protokoly, může to vypadat znepokojivě. Níže vidíte někoho, kdo se systematicky pokoušel zjistit, zda některá ze standardních rozhraní PHPMyAdmin byla přístupná. Což nebyli. Nebuďte vyplašeni, pokud uvidíte něco podobného. Je to internetový ekvivalent studeného volání náhodných telefonních čísel, abychom zjistili, jestli tam někdo je.

Co oznámíte?

Nyní byste měli mít nástroje a kwowledge k neustálému koupání celého domu hlasovými oznámeními o všem, na co si vzpomenete. Kdo potřebuje hudbu? Váš jediný limit je 350 denních požadavků od VoiceRSS.org - ale to je asi jedna každé 4 minuty, takže byste měli být v pořádku.

Co s tím uděláš? Podělte se o své nápady nebo recept IFTTT v komentářích!

Image Credits: coffee and woman od S_Photo prostřednictvím Shutterstock




Bisher hat noch niemand einen Kommentar zu diesem Artikel abgegeben.

O moderní technologii, jednoduché a cenově dostupné.
Váš průvodce ve světě moderních technologií. Naučte se, jak používat technologie a pomůcky, které nás každý den obklopují, a naučte se, jak objevovat na internetu zajímavé věci.