Reklaam

Iga nutika kodu entusiasti unistus on kodu, millest saate rääkida, kuid tegelikkus on sellest kaugel.

Näiteks Amazon Echo võimaldab teil kasutada suvalist arvu hääljuhtimisega funktsioone, kuid dialoogi peab algatama teie ise - te ei saa lihtsalt lasta tal olulist sõnumit teada anda.

Sina saab tehke seda Sonose süsteemiga ja natuke DIY Raspberry Pi maagiaga. Täna näitan teile, kuidas seadistada oma Sonose süsteemis häälteateid, tutvustades paar kasulikku IFTTT-retsepti, OpenHAB-integratsiooni ja palju muud, et teavitusfunktsiooni kasutada.

Pange tähele, et OpenHAB-i jaoks on olemas loomulik Sonose sidumine, kuid teadaolevalt põhjustab see vigase uPnP-teegi tõttu mäluprobleeme. Ma soovitaksin selle praegu vahele jätta ja kasutada selle asemel selles õpetuses toodud meetodit.

Raspberry Pi, mis töötab Raspian linux, on selle õpetuse jaoks ideaalne, kuid see peaks töötama ka kõigi teie käitatava linux-põhise koduserveri puhul. Sel juhul kasutan sama Raspberry Pi, mis töötab OpenHAB, avatud lähtekoodiga koduautomaatikasüsteem

instagram viewer
Alustamine OpenHAB-i koduautomaatikast Raspberry Pi-lOpenHAB on küps, avatud lähtekoodiga koduautomaatika platvorm, mis töötab mitmesugusel riistvaral ja on Agnostic Protocol, mis tähendab, et see saab ühendada peaaegu kõigi turul pakutavate kodus kasutatavate automaatika riistvaraga täna. Loe rohkem . Ülejäänud selle õpetuse korral eeldatakse, et käitate seda ka vaarikapil ja teil on mõni töölaual avatud kohaliku terminali aken või sisse logitud eemalt, kasutades SSH-d Vaarikapi seadistamine peata kasutamiseks SSH-gaRaspberry Pi võib vastu võtta SSH-käske, kui nad on kohaliku võrguga ühendatud (kas Etherneti või Wi-Fi kaudu), võimaldades teil seda hõlpsasti seadistada. SSH eelised ületavad igapäevase sõeluuringu häirimise ... Loe rohkem .

Teil on vaja

  • Vaarika Pi 2 (vanemad mudelid peaksid töötama, kuid kontrollige juhendis konkreetseid muudatusi)
  • Vähemalt üks Sonose kõneleja (muid helisüsteeme ei toetata, see on õpetus ainult Sonosele)
  • Tasuta konto VoiceRSS.org-is [pole enam saadaval]. Registreeri siis leidke oma API-võti, mida vajame hiljem häälsõnumite genereerimiseks.

Install Node Latest

Kontrollige, milline sõlme versioon teil on, tippides:

sõlm -v. 

Pange tähele, et versiooni 6 ei toetata. Kui teil on sõlme 6, peate selle kõigepealt eemaldama ja järgima v5.5 installimiseks järgmisi juhiseid.

Kui teil pole v5-t või kui kuvatakse tõrge, mida ei leitud, järgige sõlme installimiseks neid juhiseid. Järgmine käsk eeldab Raspberry Pi 2; vanemate mudelite puhul kasutage armv6l selle asemel 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 / kohalik. 

Kinnitage uuesti, tippides:

sõlm -v

Ja peaksite nägema versiooni v5.12 (või mis iganes, viimane, mis te alla laadisite).

Järgmisena on meil installimiseks mõned sõlme moodulid. Soovime ka sõlmede paketihaldurit.

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

See on eeltingimus väljapääsemiseks, nüüd lõbusate asjade juurde.

Sonos HTTP API

Sonos HTTP API loob kohalikus võrgus veebiserveri, mis võimaldab meil pingida URL-i koos teatega, mida a-ga teatada Sonos (ja soovi korral seda eemalt juhtida, kuigi see õpetus keskendub ainult häälteatisele aspekt).

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

Kui näete teadet selliste moodulite kohta, mida ei leitud, tehke lihtsalt teine npm installimine ja mooduli nimi, siis proovige npm algus jälle. Kui teil ilmnevad vead seoses “Nõuab C ++ 11 kompilaatorit”, parandage järgmiste käskudega:

sudo apt-get install gcc-4.8 g ++ - 4.8. sudo update-alternatives - installige / usr / bin / gccgcc / usr / bin / gcc-4.6 20. sudo update-alternatives - installige / usr / bin / gcc gcc /usr/bin/gcc-4.8 50. sudo update-alternatives --installige / usr / bin / g ++ g ++ /usr/bin/g++-4.6 20. sudo update-alternatives --installige / usr / bin / g ++ g ++ /usr/bin/g++-4.8 50. 

Lõpuks peaksite nägema midagi sellist:

sonos-http-api töötab

Server töötab nüüd, on Sonosiga liidestatud. Selle API vorming on lihtne:

http://[SERVER IP]: 5005 / [RUUMI NIMI] / [TEGEVUS]

Või konkreetse näitena:

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

Meid huvitav tegevus on käsk „ütle”, mida kasutatakse järgmiselt:

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

VoiceRSS.org-is kuulete veateadet API-võtmele registreerimise kohta. Te oleksite seda juba pidanud tegema, nii et kirjutage välja järgmine tekst ja kleepige oma API-võtmesse sobivalt:

nano seaded.json

{

"voicerss": "YOURAPIKEY" }

(Faili salvestamiseks vajutage klahvikombinatsiooni CTRL-X, Y)

Taaskäivitage server ja pingutage URL uuesti. Mõne sekundi pärast peaksite kuulma vaimustavat ingliskeelset häält (ehkki muudate URL-i lõppu aadressiks en-us kui soovite). Kui soovite, et Sonos HTTP API server taaskäivituks, kui Pi taaskäivitatakse, toimige järgmiselt.

sudo nano /etc/rc.local

Lisage rida enne rida väljumine 0:

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

Nüüd on teil võimalus luua häälsõnumeid kõikidest kohtvõrgust, URL-i pingutades, nii et võimalused on sellel hetkel laiad. Kui aga soovite ideede nimel vaeva näha, lugege läbi mõned kasulikud teatised, mille olen valmis seadnud.

OpenHAB-i teated sündmuste kohta

Võtame kõigepealt lihtsa näite: liikumise tuvastamine. See on tulede aktiveerimiseks tavaline juhtum, kuid võib-olla soovite ka häälteavet, kui see on a liikumisandur vähese liiklusega piirkonnas või ehk edaspidise hoiatusena, et keegi tuleb aeda tee.

reegel "Aia liikumine tuvastatud" kui üksust Garden_Motion muudetud, siis var String message = "Teil on külastaja" sendHttpGetRequest (" http://localhost: 5005 / köök / ütle / "+ sõnum.encode (" UTF-8 ") +" / et-gb ") lõpp.

Peaksite nägema, kuidas saate neid lihtsaid häälteateid oma reeglitesse integreerida, kuid proovime proovida midagi pisut keerukamat.

Igapäevane ilmateade IFTTT-st OpenHAB-ile Sonosele

Selles retseptis anname Sonosile teada teie eelistatud ajal igapäevase ilmateate.

Te vajate Minu. OpenHAB-i köitmine on lubatud, kuna see loob turvalise ühenduse teie sisemise OpenHAB-serveri ja välise IFTTT-teenuse vahel. Seadistage see, kui te seda veel teinud pole - saate viidata meie OpenHAB juhendi 1. osa Alustamine OpenHAB-i koduautomaatikast Raspberry Pi-lOpenHAB on küps, avatud lähtekoodiga koduautomaatika platvorm, mis töötab mitmesugusel riistvaral ja on Agnostic Protocol, mis tähendab, et see saab ühendada peaaegu kõigi turul pakutavate kodus kasutatavate automaatika riistvaraga täna. Loe rohkem täielike juhiste saamiseks, muidu ma eeldan, et olete selle juba seadistanud koos püsivuse lubamisega kõigi üksuste jaoks.

Järgmisena looge OpenHAB-i installimisse uus stringiüksus, mis salvestab igapäevase ilmateate. Enne seda on see nähtav jaotises Minu. OpenHAB-kanal, peame selle lähtestama mõne vaikemuutujaga. Pingige järgmine URL (muutke vaarikaspi.lokaalne oma OpenHAB-serverisse või kasutage lihtsalt selle IP-aadressi ja Tänane_ ilm millele iganes sa seda stringi nimetasid):

http://raspberrypi.local: 8080 / CMD? Tänane_ ilm = päikesepaisteline 

Logi sisse Minu. OpenHAB [Broken URL Removed] ja kontrollige Esemed loend, et tagada muutuja eksportimine.

minu openhabi üksuse ekspordikontroll

Tagasi IFTTT-i juurde, looge uus retsept ja kasutage Ilmakanal päästikuna teie eelistatud kellaajal. Esmalt peate oma asukoha määrama, kui te pole seda kunagi varem kasutanud.

Valige Minu. Toiminguna OpenHAB ja valige värskendatavaks muutujaks Todays_Weather.

ifttt ilmateade

Praegu vali testimiseks vaid järgmine pooletunnine pesa - saate retsepti hiljem värskendada, kui teate, et see töötab.

Muidugi sain prooviajal (tegelikult natuke enne seda) tänase prognoosi edukalt värskendada.

2016-02-27 10: 28: 01.689 [SÕLMIGE] [o.o.i.m.i. MyOpenHABServiceImpl] - saanud käsu Täna on enamasti pilves! Kõrgusega 7C ja madalamal 1C. Korda. Tingimused on täna enamasti pilves, päeval 7 ° C ja madalaim 1 °. kirjele Tänane_ ilm. 2016-02-27 10: 28: 01.697 [SÕLMIGE] [o.o.i.m.i. MyOpenHABServiceImpl] - pood (Todays_Weather), riik = Täna on enamasti pilves! Kõrgusega 7C ja madalamal 1C. Korda. Tingimused on täna enamasti pilves, päeval 7 ° C ja madalaim 1 °. 

Järgmisena vajame OpenHAB-i reeglit, et saata see muutuja Sonose “ütle” URL-i. Seda peaks tegema järgmine:

reegel "Teata igapäevane ilmateade" kui üksus Todays_Weather sai värskenduse. seejärel saatkeHttpGetRequest (" http://localhost: 5005 / köök / ütle / "+ tänane_Weather.state.toString.encode (" UTF-8 ") +" / et-gb ") lõpp.

See on piisavalt lihtne: alati, kui muutujat Todays_Weather värskendatakse (see on automaatselt iga päev kell 8.00), pingutage URL. Me kasutame kodeerima („UTF-8”) Stringi funktsioon, et muuta IFTTT-st pärit lause URL-is kasutamiseks sobivaks. Selle süsteemi osa käsitsi testimiseks kasutage lihtsalt uuesti OpenHAB HTTP API:

http://raspberrypi.local: 8080 / CMD? Tänane päev / ilm = pilves, võimalus lihapallide tekkeks. 

Ühendage IFTTT-ga ilma OpenHAB-ita, kasutades seda-siis-siis-sõlme

Lõpuks vaatame, kuidas luua ühendus ükskõik millise IFTTT-i retsepti abil ilma OpenHAB-i vahendajata. Selle asemel installime teise veebiserveri ja paljastame selle avatud Interneti-le. See ei ole ilma riskita: igasugune avatud server on turvarisk, kuid leevendame seda sellega, et me ei käivita täielikku serveripakku, vaid väikest spetsiifiline teenus, mis aktsepteerib ainult teatud käske turvalises JSON-andmepaketi vormingus (seega ei toimu SQL-i süstimist ega autentimisrünnakuid) võimalik). Kui see on valmis, on teil avalik URL, kuhu saate IFTTT Maker kanalilt sõnumeid saata.

Alustuseks seadke üks paljudest tasuta dünaamilised DNS-teenused 5 parimat tasuta dünaamilise DNS-i pakkujatDDNS-teenus aitab teil liikudes koduarvutiga ühenduse luua. Siin on parimad tasuta dünaamilise DNS-i pakkujad, mida kaaluda. Loe rohkem seal - soovitan DuckDNS-i, eriti kuna see annab lihtsa komplekti juhised Raspberry Pi jaoks, mis võimaldab tal IP-aadressi automaatselt värskendada. Järgige neid juhiseid ja pidage järgmiste toimingute jaoks meeles oma URL-i. Teie ruuteril võib olla ka sisseehitatud dünaamiline DNS-funktsioon, nii et kontrollige seda kõigepealt. Minu puhul saan a * .mynetgear.com URL tasuta, seega olen seda kasutanud.

Järgmisena leidke oma ruuter sadama ekspedeerimine Mis on sadamate edastamine ja kuidas see mind aidata saab? [MakeUseOf selgitab]Kas nutad natuke sees, kui keegi ütleb sulle, et teil on pordi edastamise probleem ja sellepärast teie läikiv uus rakendus ei tööta? Teie Xbox ei lase teil mänge mängida, torrentide allalaadimine keeldub ... Loe rohkem konfiguratsioonileht; siin me ütleme talle, mida teha saabuvate taotlustega. Edastage kõik HTTP-taotlused (port 80) oma Raspberry Pi serveri porti 1337. Ma eeldan, et teil on juba oma Raspberry Pi jaoks reserveeritud IP-aadress - kui te seda veel ei tee, kontrollige ruuteri konfiguratsiooni reserveeritud IP-de jaoks, seal viibimise ajal, kuna te ei pea seda järgmisel nädalal muutma ja server peaks ootamatult seisma jääma töötavad.

ruuteri konfigureerimise pordi edastamine

Nüüd serveritarkvara viimase bitti installimiseks.

https://github.com/sebauer/if-this-then-node.git. cd if-this-then-node / npm installimine. sõlme server.js.

Te peaksite nägema järgmist.

kui see siis sõlme vaikeväärtuste viga

See on ok, see tähendab lihtsalt, et peame oma üksikasju värskendama. Avama config.js Nanos ja redigeerige neid üksikasju muuks kui vaikevalikuks, siis salvestage. Kui serverit uuesti käivitate, peaksite seda nägema:

kui see siis sõlmeserver töötab

Suurepärane. Testige, kas teie masin on välismaailmast juurdepääsetav, sisestades dünaamilise DNS-i hostinime ja lisage /ifttn / URL-i lõppu. Kui kõik töötab, siis teade “IFTTN - kui-siis-siis-sõlme versioon 2.0.1 töötab ja töötab!” kuvatakse teie brauseris. Selle skripti käivitamiseks käivitamiseks muutke uuesti /etc/rc.local fail ja lisa:

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

Kui-see-siis-sõlm töötab pistikprogrammide kaudu - mõned vaikimisi pakutavad on olemas, kuid meid see ei huvita. Selle asemel laadige alla see kohandatud pistikprogramm, mille olen teile kirjutanud järgmiste käskudega.

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

Samuti peate installima taotlus moodul.

npm installimise taotlus. 

Seejärel taaskäivitage server. Pistikprogramm on üsna lihtne, kuid pisut erinev URL-ist, mida seni oleme kasutanud. Sel juhul olen kasutanud spetsiaalset toimingut „ütleme kõigile”, mis saadab sõnumi igasse Sonose seadmesse.

taotlus (' http://localhost: 5005 / ütlus / '+ params.message +' / en-gb ', funktsioon (viga, vastus, keha)

Kui soovite pigem sihtida konkreetseid seadmeid, asendage see rida järgmisega:

taotlus (' http://localhost: 5005 / '+ params.sevice +' / say / '+ params.message +' / en-gb ', funktsioon (viga, vastus, keha)

Lisage teine ​​reaparameeter nimega seade allpool asuvale JSON-i päringule, milles saate määrata Sonose seadme nime.

Selle proovimiseks kasutan IFTTT nupu „Tee” nuppu. Looge uus retsept, sirvige kanaleid ja valige Tegija kanal.

tee nuppu

Looge uus retsept. Sisestage tasuta dünaamilise DNS-i pakkuja poolt varem konfigureeritud URL (sh /ifttn/ URL-i lõpus. Ärge unustage neid kaldkriipsusid). Valige POST taotle, rakendus / json sõnumi sisu ja sisu järgmiselt, asendades vajaduse korral kõik muutujad varem konfigureeritutega:

{"action": "sonos", "user": "YOURUSER", "pw": "YOURPASSWORD", "message": "Sissetulevad sõnumid kõigile: Õhtusöök on valmis! Korda. Õhtusöök on valmis. Hankige oma eeslid kohe ülakorrusele. "}

Nüüd on mul hõlpsasti ligipääsetav nupp, mis annab teate maja kõigis Sonose seadmetes. Muidugi saate selle siduda mis tahes IFTTT-kanaliga, mille abil soovite selle kanali muutujate abil kohandatud sõnumi luua. Peaksite isegi saama ilmateadet ülevalt korrata ilma OpenHAB-i kasutamata, ehkki teise serveri installimine nõudis siiski täiendavaid jõupingutusi.

Märkus: häkkerid skannivad teid automaatselt. Seda juhtub kogu aeg, kuid kui vaatate logisid, võib see tunduda murettekitav. Allpool näete kedagi, kes üritas süstemaatiliselt kindlaks teha, kas mõnele PHPMyAdmini standardliidesele oli juurdepääs. Mida nad polnud. Ärge muretsege, kui näete midagi sarnast. See on Interneti-ekvivalent külmadeta juhuslikele telefoninumbritele helistamiseks, et näha, kas keegi on kohal.

veebiserveri häkkimiskatsed

Mida te kuulutate?

Nüüd peaksid teil olema tööriistad ja teadmised, et kogu oma maja pidevalt häälteatega peesitada kõigest, mida võiksite mõelda. Kes vajab muusikat? Teie ainus limiit on VoiceRSS.org-i igapäevane 350 päringut - kuid see on umbes üks iga 4 minuti järel, nii et teil peaks olema kõik korras.

Mida sa sellega ette võtad? Jagage kommentaarides oma ideid või IFTTT retsepti!

Pildikrediidid:kohv ja naine autor S_Photo Shutterstocki kaudu

Jamesil on tehisintellekti BSc ning ta on CompTIA A + ja Network + sertifikaadiga. Ta on MakeUseOfi juhtiv arendaja ja veedab oma vaba aega VR-i paintballi ja lauamänge mängides. Ta on lapsest peale arvutit ehitanud.