reklama

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

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 se systémem Sonos a trochou 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 tuto notifikační funkci využívat.

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 fungovat také 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ý běží OpenHAB, systém domácí automatizace s otevřeným zdrojovým kódem

instagram viewer
Začínáme s domácí automatizací OpenHAB na Raspberry PiOpenHAB je vyspělá platforma pro domácí automatizaci s otevřeným zdrojovým kódem, která běží na různých hardwarech a je protokol agnostický, což znamená, že se může připojit k téměř jakémukoli hardwaru domácí automatizace na trhu dnes. Přečtěte si více . Zbytek tohoto tutoriálu předpokládá, že také spustíte aplikaci Raspberry Pi a buď máte otevřené místní okno terminálu na ploše, nebo přihlášeni na dálku pomocí SSH Nastavení Raspberry Pi pro bezhlavé použití s ​​SSHRaspberry Pi může přijímat SSH příkazy, když je připojen k místní síti (ethernet nebo Wi-Fi), což vám umožňuje snadné nastavení. Výhody SSH jdou nad rámec rozrušení každodenního screeningu ... Přečtěte si více .

Budeš potřebovat

  • Raspberry Pi 2 (starší modely by měly fungovat, ale zkontrolujte konkrétní změny v pokynech)
  • Aspoň jeden Sonos reproduktor (ostatní zvukové systémy nejsou podporovány, jedná se o výukový program pouze pro Sonos)
  • Bezplatný účet na VoiceRSS.org [již není k dispozici]. Pak se zaregistrujte najděte svůj 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 v5 nebo pokud se vám nepodařilo najít chybu, nainstalujte Node 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 node-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 jste si stáhli naposledy).

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

sudo apt-get install npm. instalace sudo npm -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 ping URL se zprávou, kterou máme nahlásit Sonos (a chcete-li jej ovládat vzdáleně, pokud chcete, i když se tento tutoriál zaměřuje pouze na hlasové oznámení aspekt).

git klon 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. sudo update-alternatives --install / usr / bin / g ++ g ++ /usr/bin/g++-4.6 20. sudo update-alternatives --install / usr / bin / g ++ g ++ /usr/bin/g++-4.8 50. 

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

sonos-http-api pracuje

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

http://[SERVER IP]: 5005 / [MÍSTNOST ROOM] / [AKCE]

Nebo jako konkrétní příklad:

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

Akce, která nás zajímá, je příkaz „řekni“, 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 registrace do klíče API. Měli jste to již udělat, takže 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 pro aktivaci světel, ale možná budete chtít také hlasové oznámení, pokud je pohybový senzor v oblasti s nízkým provozem, nebo možná jako varování vpřed, že někdo přichází do zahrady cesta.

pravidlo „Zjisten pohyb zahrady“ při změně položky Garden_Motion pak var String message = "Máte návštěvníka" sendHttpGetRequest (" http://localhost: 5005 / kuchyně / řekni / "+ zpráva.kód (" 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 vám Sonos oznámí denní hlášení o počasí ve Vámi preferovaném čase.

Budete potřebovat My. Vazba OpenHAB povolena, protože to vytváří bezpečné spojení mezi interním serverem OpenHAB a externí službou IFTTT. Nastavte, pokud jste tak již neučinili - můžete na ně odkazovat část 1 našeho průvodce OpenHAB Začínáme s domácí automatizací OpenHAB na Raspberry PiOpenHAB je vyspělá platforma pro domácí automatizaci s otevřeným zdrojovým kódem, která běží na různých hardwarech a je protokol agnostický, což znamená, že se může připojit k téměř jakémukoli hardwaru domácí automatizace na trhu dnes. Přečtěte si více 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í. Předtím je to vidět v My. U kanálu OpenHAB ho budeme muset inicializovat pomocí výchozí proměnné. Ping následující URL (změna raspberrypi.local na váš server OpenHAB 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 k My. OpenHAB [Broken URL Removed] a zkontrolujte Položky seznam, abyste zajistili, že proměnná byla nyní exportována.

kontrola exportu mé otevřené položky

Zpět na IFTTT, vytvořte nový recept a použijte Meteorologický kanál jako spouště ve vámi preferovanou denní dobu. Pokud jste ji ještě nikdy nepoužívali, musíte nejprve nastavit svou polohu.

Vyberte Moje. OpenHAB jako akci a jako proměnnou, kterou chcete aktualizovat, vyberte Todays_Weather.

ifttt zprávy o počasí

Prozatím stačí vybrat další půlhodinový slot pro testování - recept můžete aktualizovat později, jakmile zjistí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řijatý příkaz Dnes skoro 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. 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 skoro 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 k odeslání této proměnné na Sonos „say“ URL. Měli byste to udělat:

pravidlo „Ohlásit denní předpověď počasí“ kdy položka Todays_Weather obdržela aktualizaci. pak sendHttpGetRequest (" http://localhost: 5005 / kuchyně / řekni / "+ dnešní_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 enkó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 nespustíme kompletní serverový zásobník, jen malý konkrétní služba, která přijímá pouze určité příkazy v bezpečném formátu datových paketů JSON (takže nebudou provedeny žádné SQL injekce nebo autentizační útoky) možný). 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 jednoho z mnoha zdarma dynamické služby DNS 5 nejlepších dynamických poskytovatelů DNS zdarmaSlužba DDNS vám může pomoci připojit se k domácímu počítači na cestách. Zde jsou nejlepší bezplatní poskytovatelé dynamických DNS, které je třeba zvážit. Přečtěte si více tam - doporučuji DuckDNS, konkrétně proto, že dává jednoduchou sadu návod pro Raspberry Pi, což mu umožní 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é zabudována dynamická funkce DNS, proto ji nejprve zkontrolujte. V mém případě mohu získat * .mynetgear.com URL zdarma, takže jsem ji použil.

Dále najděte směrovač předávání portů Co je předávání portů a jak mi může pomoci? [MakeUseOf vysvětluje]Trochu pláčete uvnitř, 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ítne ... Přečtěte si více konfigurační stránka; 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 nemáte, zkontrolujte konfiguraci routeru stránku pro vyhrazené adresy IP, když jste tam, protože se příští týden nebudete měnit a server se náhle zastaví pracovní.

router předávání portů

Nyní nainstalujte poslední bit serverového softwaru.

https://github.com/sebauer/if-this-then-node.git. cd if-this-then-node / Npm instalace. uzel server.js.

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

pokud to pak chyba výchozí hodnoty uzlu

To je v pořádku, to znamená, že musíme aktualizovat naše ú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:

pokud to pak běží server uzlů

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 v provozu!" 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 prostřednictvím pluginů - je zde několik výchozích, ale není o nás zájem. Místo toho si stáhněte tento vlastní plugin, který jsem pro vás napsal, s následujícími příkazy.

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

Musíte také 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í akci „sayall“, která odešle zprávu všem zařízením Sonos.

žádost(' 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:

žádost(' http://localhost: 5005 / '+ params.device +' / řekněme / '+ 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 aplikaci tlačítka IFTTT „Do“. Vytvořte nový recept, vyhledejte kanály a vyberte Výrobce kanál.

tlačítko do

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! Opakovat. Večeře je připravena. Pořiď si teď zadky nahoru. “}

Nyní mám snadno dostupné 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. Nenechte se vyděsit, 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.

pokusy o hackování webového serveru

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 žádostí denně 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!

Obrazové kredity:káva a žena od S_Photo přes Shutterstock

James má bakalářský titul v oboru umělé inteligence a je držitelem certifikátu CompTIA A + a Network +. Je hlavním vývojářem MakeUseOf a tráví svůj volný čas hraním VR paintballu a deskových her. Staví počítače od dětství.