Reklama

Sen každého nadšeného inteligentného domova je domom, s ktorým môžete hovoriť, ale realita je od toho vzdialená.

Napríklad služba Amazon Echo vám umožňuje používať ľubovoľný počet funkcií ovládaných hlasom, dialóg však musíte iniciovať otázkou - jednoducho nemôžete nechať iba oznámiť dôležitú správu.

vy môcť to však urobte so systémom Sonos a kúskom kúzla Raspberry Pi pre domácich majstrov. Dnes vám ukážem, ako nastaviť hlasové upozornenia vo vašom systéme Sonos, predstaviť niekoľko užitočných receptov IFTTT, integráciu OpenHAB a ďalšie, aby ste mohli využívať funkciu notifikácie.

Upozorňujeme, že pre OpenHAB je k dispozícii natívna väzba Sonos, ale je známe, že spôsobuje problémy s pamäťou kvôli chybnej knižnici uPnP. Navrhujem to teraz preskočiť a namiesto toho použiť metódu v tomto návode.

Raspberry Pi so systémom Raspian linux je ideálny pre tento tutoriál, ale mal by fungovať aj na akomkoľvek spustenom serveri založenom na Linuxe. V tomto prípade používam rovnaký Raspberry Pi, ktorý beží

instagram viewer
OpenHAB, systém domácej automatizácie s otvoreným zdrojovým kódom Začíname s domácou automatizáciou OpenHAB na Raspberry PiOpenHAB je zrelá platforma pre domácu automatizáciu s otvoreným zdrojovým kódom, ktorá funguje na rôznych hardvéroch a je protokol agnostický, čo znamená, že sa môže pripojiť k takmer akémukoľvek hardvéru domácej automatizácie na trhu dnes. Čítaj viac . Zvyšok tohto tutoriálu predpokladá, že ho spúšťate aj na Raspberry Pi a buď máte otvorené okno miestneho terminálu na pracovnej ploche, alebo prihlásený na diaľku pomocou SSH Nastavenie Raspberry Pi na použitie bez hlavy s SSHRaspberry Pi môže prijímať príkazy SSH, keď je pripojený k miestnej sieti (buď prostredníctvom siete Ethernet alebo Wi-Fi), čo vám umožňuje jednoduché nastavenie. Výhody SSH idú nad rámec narušenia denného skríningu ... Čítaj viac .

Budete potrebovať

  • Raspberry Pi 2 (staršie modely by mali fungovať, ale skontrolujte konkrétne zmeny v pokynoch)
  • Aspoň jeden Sonos reproduktor (iné zvukové systémy nie sú podporované, toto je výučba iba pre Sonos)
  • Bezplatný účet na VoiceRSS.org [Už nie je k dispozícii]. Potom sa zaregistrujte nájsť kľúč API, ktoré budeme musieť neskôr vygenerovať.

Nainštalovať uzol Najnovšie

Skontrolujte, ktorú verziu uzla máte zadaním:

uzol -v. 

Verzia 6 nie je podporovaná. Ak máte uzol 6, musíte ho najprv odstrániť. Potom podľa pokynov nižšie nainštalujte v5.5.

Ak nemáte v5 alebo ak sa nenájde chyba, nainštalujte uzol podľa týchto pokynov. Nasledujúci príkaz predpokladá Raspberry Pi 2; pre staršie modely použite armv6l namiesto 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 znova zadaním:

uzol -v

Mali by ste vidieť v5.12 (alebo čokoľvek, čo ste si stiahli naposledy).

Ďalej je potrebné nainštalovať niektoré moduly Node. Chceme tiež Správcu balíkov uzlov.

sudo apt-get install npm. inštalácia sudo npm -g npm. inštalácia sudo npm -g node-gyp. 

To sú predpoklady z cesty, teraz na zábavné veci.

Sonos HTTP API

Sonos HTTP API vytvára webový server v lokálnej sieti, ktorý nám umožňuje pingovať URL so správou oznámenou na a Sonos (a na diaľkové ovládanie, ak chcete). Tento tutoriál sa však zameriava iba na hlasové oznámenia aspekt).

git klon https://github.com/jishi/node-sonos-http-api.git Sonos. cd sonos. inštalácia npm - produkcia. npm štart. 

Ak vidíte správu o tom, že taký modul nebol nájdený, urobte iný Npm inštalácia a názov modulu, potom skúste npm štart znova. Ak sa vyskytnú chyby týkajúce sa „Vyžaduje kompilátor C ++ 11“, opraviť pomocou nasledujúcich príkazov:

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. 

Nakoniec by ste mali vidieť niečo také:

sonos-http-api pracovné

Server je teraz spustený a je prepojený so Sonosom. Formát tohto rozhrania API je jednoduchý:

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

Alebo ako konkrétny príklad:

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

Akcia, o ktorú sa zaujímame, je príkaz „povedať“, ktorý sa používa takto:

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

Na VoiceRSS.org sa zobrazí chybová správa o nutnosti zaregistrovať sa do kľúča API. Mali ste to už urobiť, preto napíšte nasledujúce a vložte do svojho kľúča API ako appropirate:

nano settings.json

{

"Voicerss": "YOURAPIKEY" }

(Stlačením CTRL-X, Y uložte súbor)

Reštartujte server a znova odošlite príkaz ping na adresu URL. Po niekoľkých sekundách by ste mali počuť nádherný anglický hlas (koniec adresy URL však zmeníte na en-us ak by ste radšej). Postup spustenia servera Sonos HTTP API pri reštarte Pi:

sudo nano /etc/rc.local

Pridajte riadok pred výstup 0:

uzol sudo /home/pi/sonos/server.js  dev / null &

Teraz máte možnosť vytvárať hlasové správy odkiaľkoľvek v miestnej sieti jednoduchým pingovaním adresy URL, takže v tomto bode sú možnosti úplne otvorené. Ak však hľadáte nápady, prečítajte si niekoľko užitočných upozornení, ktoré som nastavil.

Oznámenia OpenHAB o udalostiach

Najprv urobme jednoduchý príklad: detekcia pohybu. Toto je bežný prípad na aktiváciu svetiel, ale pravdepodobne budete chcieť aj hlasové oznámenie, ak je snímač pohybu v oblasti so zníženou prevádzkou alebo snáď ako varovanie vpred, že niekto prichádza do záhrady path.

pravidlo „Zistený pohyb v záhrade“ keď sa položka Garden_Motion zmenila, potom var String message = "Máte návštevníka" sendHttpGetRequest (" http://localhost: 5005 / kuchyňa / povedzme / "+ message.encode (" UTF-8 ") +" / en-gb ") koniec.

Mali by ste vidieť, ako môžete tieto jednoduché hlasové upozornenia integrovať do ktoréhokoľvek z vašich pravidiel, ale vyskúšajte niečo trochu zložitejšie.

Denná správa o počasí od IFTTT po OpenHAB pre Sonos

V tomto recepte necháme spoločnosť Sonos oznámiť dennú správu o počasí vo vami preferovanom čase.

Budete potrebovať My. Je povolená väzba OpenHAB, pretože to vytvára bezpečné spojenie medzi interným serverom OpenHAB a externou službou IFTTT. Nastavte, ak ste tak ešte neurobili - môžete na ne odkazovať časť 1 nášho sprievodcu OpenHAB Začíname s domácou automatizáciou OpenHAB na Raspberry PiOpenHAB je zrelá platforma pre domácu automatizáciu s otvoreným zdrojovým kódom, ktorá funguje na rôznych hardvéroch a je protokol agnostický, čo znamená, že sa môže pripojiť k takmer akémukoľvek hardvéru domácej automatizácie na trhu dnes. Čítaj viac pre úplné pokyny, inak predpokladám, že už máte nastavené nastavenie s povolenou perzistenciou pre všetky položky.

Potom si v inštalácii OpenHAB vytvorte novú položku String, do ktorej sa uloží denná správa o počasí. Predtým, ako je to viditeľné v My. Kanál OpenHAB, musíme ho inicializovať pomocou predvolenej premennej. Vykonajte príkaz ping na nasledujúcu adresu URL (zmeniť raspberrypi.local na váš server OpenHAB alebo jednoducho použite jeho IP adresu a Todays_Weather podľa toho, čo ste nazvali String):

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

Prihláste sa do Moja. OpenHAB [Zlomená adresa URL odstránená] a skontrolujte predmety zoznam, aby ste sa uistili, že premenná bola teraz exportovaná.

moja kontrola exportu položky z otvoreného vlákna

Späť na IFTTT vytvorte nový recept a použite Meteorologický kanál ako spúšťač vo vami preferovanej dennej dobe. Ak ste ju nikdy predtým nepoužili, musíte najprv nastaviť svoju polohu.

Vyberte Moje. OpenHAB ako akciu a ako premennú, ktorú chcete aktualizovať, vyberte Todays_Weather.

ifttt správa o počasí

Zatiaľ si pre testovanie vyberte ďalšiu polhodinovú pozíciu - recept môžete aktualizovať neskôr, keď budete vedieť, že funguje.

V čase testovania (v skutočnosti, trochu predtým) som dostal dnešnú predpoveď úspešne aktualizovanú.

2016-02-27 10: 28: 01,689 [DEBUG] [o.o.i.m.i. MyOpenHABServiceImpl] - Prijatý príkaz Dnes skoro zataženo! S vysokým 7C a nízkym 1C. Opakovať. Dnes budú podmienky skoro oblačno, s vysokou 7 ° C a nízkou 1 ° C. pre položku Todays_Weather. 2016-02-27 10: 28: 01,697 [DEBUG] [o.o.i.m.i. MyOpenHABServiceImpl] - obchod (Todays_Weather), štát = Dnes už skoro zataženo! S vysokým 7C a nízkym 1C. Opakovať. Dnes budú podmienky skoro oblačno, s vysokou 7 ° C a nízkou 1 ° C. 

Ďalej potrebujeme pravidlo OpenHAB, aby sme túto premennú odoslali na adresu URL „vysloviť“ Sonos. Mali by ste to urobiť:

pravidlo „Ohlásiť denné správy o počasí“ keď položka Todays_Weather prijala aktualizáciu. potom pošliteHttpGetRequest (" http://localhost: 5005 / kuchyňa / povedzme / "+ Todays_Weather.state.toString.encode (" UTF-8 ") +" / en-gb ") koniec.

Je to dosť jednoduché: vždy, keď sa aktualizuje premenná Todays_Weather (ktorá bude automaticky každý deň o 8.00 hod.), Ping na adresu URL. Používame kódovanie ( "UTF-8") Funkcia reťazca, vďaka ktorej je veta z IFTTT vhodná na použitie v adrese URL. Ak chcete manuálne otestovať túto časť systému, jednoducho znova použite rozhranie OpenHAB HTTP API:

http://raspberrypi.local: 8080 / CMD? Todays_Weather = Zamračené, s možnosťou mäsových guličiek. 

Pripojte sa k IFTTT bez OpenHAB pomocou uzla If-This-Then-Node

Nakoniec sa pozrime, ako sa pripojiť z ktoréhokoľvek receptu IFTTT bez sprostredkovateľa OpenHAB. Namiesto toho nainštalujeme iný webový server a vystavíme ho otvorenému internetu. Toto nie je bez rizika: akýkoľvek otvorený server predstavuje bezpečnostné riziko, ale zmierňujeme to tak, že nespustíme celý zásobník serverov, len malý špecifická služba, ktorá prijíma iba určité príkazy v bezpečnom formáte dátových paketov JSON (takže k útokom SQL injekcie alebo autentifikácii nedôjde) je to možné). Po dokončení budete mať verejnú webovú adresu, na ktorú môžete odosielať správy z kanála IFTTT Maker.

Začnite nastavením jedného z mnohých bezplatné dynamické služby DNS 5 najlepších bezplatných poskytovateľov dynamických DNSSlužba DDNS vám môže pomôcť pripojiť sa k domácemu počítaču na cestách. Tu sú najlepší bezplatní poskytovatelia dynamických DNS, ktorí by mali zvážiť. Čítaj viac tam - odporúčam DuckDNS, najmä preto, že dáva jednoduchý súbor návod na použitie Raspberry Pi, čo mu umožní automaticky aktualizovať adresu IP. Postupujte podľa týchto pokynov a zapamätajte si svoju adresu URL pre ďalšie kroky. Váš smerovač môže mať zabudovanú aj dynamickú funkciu DNS, preto ju najskôr skontrolujte. V mojom prípade môžem dostať * .mynetgear.com Adresa URL zadarmo, preto som ju použil.

Ďalej vyhľadajte smerovač presmerovanie portov Čo je to Port Forwarding a ako mi to môže pomôcť? [MakeUseOf vysvetľuje]Trochu plačete vo vnútri, keď vám niekto povie, že sa vyskytol problém s presmerovaním portov, a preto vaša nová lesklá aplikácia nebude fungovať? Váš Xbox vám nedovolí hrať hry, vaše sťahovanie torrentov odmietne ... Čítaj viac konfiguračná stránka; tu im povieme, čo robiť s prichádzajúcimi požiadavkami. Preposielajte všetky HTTP požiadavky (port 80) na port 1337 na vašom serveri Raspberry Pi. Predpokladám, že už máte pridelenú IP adresu pre Raspberry Pi - ak tak neurobíte, skontrolujte konfiguráciu smerovača na rezervované adresy IP, keď ste tam, pretože sa budúci týždeň nezmeníte a server sa náhle zastaví pracovať.

smerovanie konfigurácie smerovača

Teraz nainštalujte posledný bit serverového softvéru.

https://github.com/sebauer/if-this-then-node.git. cd if-this-then-node / Npm inštalácia. uzol server.js.

Mali by ste vidieť nasledujúce.

ak to potom chyba predvolených hodnôt uzla

To je v poriadku, to znamená, že musíme iba aktualizovať svoje údaje. Sprístupniť config.js v Nano a upravte tieto údaje na čokoľvek iné, ako je predvolené, a potom uložte. Pri opätovnom spustení servera by ste mali vidieť toto:

ak to potom beží server uzlov

Skvelé. Otestujte, či je váš počítač prístupný z vonkajšieho sveta zadaním dynamického názvu hostiteľa DNS a pridaním /ifttn / na koniec adresy URL. Ak všetko funguje, správa "IFTTN - if-this-then-node Verzia 2.0.1 je v prevádzke!" sa zobrazí v prehliadači. Ak chcete znova spustiť tento skript pri spustení, upravte /etc/rc.local súbor a pridať:

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

If-tejto-then-Node funguje prostredníctvom doplnkov - dodáva sa niekoľko predvolených, ale nie je o nás záujem. Namiesto toho si stiahnite tento vlastný doplnok, ktorý som vám napísal, s nasledujúcimi príkazmi.

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

Budete tiež musieť nainštalovať žiadosť modul.

npm požiadavka na inštaláciu. 

Potom reštartujte server. Doplnok je pomerne jednoduchý, ale trochu sa líši od adresy URL, ktorú sme doteraz používali. V tomto prípade som použil špeciálnu akciu „sayall“, ktorá odošle správu každému zariadeniu Sonos.

Žiadosť ( ' http://localhost: 5005 / sayall / '+ params.message +' / en-gb ', funkcia (chyba, odozva, telo)

Ak chcete radšej zacieliť na konkrétne zariadenia, nahraďte tento riadok takto:

Žiadosť ( ' http://localhost: 5005 / '+ params.device +' / povedať / '+ params.message +' / en-gb ', funkcia (chyba, odozva, telo)

Pridajte ďalší riadkový parameter s názvom zariadenie na žiadosť JSON uvedenú nižšie, v ktorej sa uvedie názov zariadenia Sonos.

Na vyskúšanie používam aplikáciu tlačidla IFTTT „Do“. Vytvorte nový recept, prejdite na kanály a vyberte ikonu výrobca kanálov.

tlačidlo do

Vytvorte nový recept. Zadajte adresu URL, ktorú ste predtým nakonfigurovali od poskytovateľa dynamického DNS zadarmo (vrátane /ifttn/ na konci adresy URL. Nezabudnite na tieto lomky). vybrať POST požiadavku, application / json obsah a text správy nasledovne a podľa potreby všetky premenné nahradzujte tými, ktoré ste predtým nakonfigurovali:

{"action": "sonos", "user": "YOURUSER", "pw": "YOURPASSWORD", "message": "Prichádzajúca správa pre všetkých: Večera je pripravená! Opakovať. Večera je hotová. Dajte si zadky na poschodie hneď teraz. “}

Teraz mám ľahko prístupné tlačidlo, ktoré oznámi správu na každom zariadení Sonos v dome. Môžete to samozrejme spárovať s akýmkoľvek kanálom IFTTT, ktorý chcete vytvoriť vlastnú správu pomocou premenných z tohto kanála. Mali by ste byť dokonca schopní replikovať správu o počasí zhora bez toho, aby ste teraz používali OpenHAB, hoci to vyžadovalo ďalšie úsilie pri inštalácii iného servera.

Poznámka: hackeri vás automaticky prehľadajú. Stáva sa to stále, ale ak si prezeráte denníky, môže sa to zdať alarmujúce. Nižšie vidíte niekoho, koho sa systematicky snažili zistiť, či bolo nejaké zo štandardných rozhraní PHPMyAdmin prístupné. Čo neboli. Nedajte sa znepokojiť, ak vidíte niečo podobné. Je to internetový ekvivalent chladného volania náhodných telefónnych čísel, aby sme zistili, či tam niekto je.

pokusy o prienik na webový server

Čo oznámite?

Teraz by ste mali mať nástroje a kwowledge na neustále kúpanie celého domu hlasovými oznámeniami o všetkom, čo by vás mohlo napadnúť. Kto potrebuje hudbu? Váš jediný limit je 350 denných žiadostí od VoiceRSS.org - ale to je približne každé 4 minúty, takže by ste mali byť v poriadku.

Čo s tým urobíte? Podeľte sa o svoje nápady alebo recept IFTTT v komentároch!

Kredity obrázkov:káva a žena autor: S_Photo prostredníctvom Shutterstock

James má bakalárske štúdium v ​​oblasti umelej inteligencie a je držiteľom certifikátu CompTIA A + a Network +. Je popredným vývojárom MakeUseOf a trávi svoj voľný čas hraním VR paintballu a spoločenských hier. Staval počítače od malička.