Oglas

San bilo kojeg ljubitelja pametnog doma je dom s kojim možete razgovarati, ali stvarnost je daleko od toga.

Na primjer, Amazon Echo omogućuje vam upotrebu bilo kojeg broja glasovno kontroliranih funkcija, ali dijalog morate pokrenuti pitanjem - ne možete jednostavno navesti njenu važnu poruku.

Vas limenka učinite to sa Sonos sustavom i malo DIY Raspberry Pi magije. Danas ću vam pokazati kako postaviti glasovne obavijesti na svoj Sonos sustav, uvodeći nekoliko korisnih IFTTT recepata, OpenHAB integracija i još mnogo toga za korištenje funkcije obavijesti.

Imajte na umu da postoji izvorni Sonos vezanje za OpenHAB, ali poznato je da uzrokuje probleme s memorijom zbog neispravne uPnP biblioteke. Za sada bih savjetovao da to preskočimo i umjesto toga koristimo metodu u ovom vodiču.

Raspberry Pi koji radi Raspian linux idealan je za ovaj udžbenik, ali trebao bi raditi i na bilo kojem Linux poslužitelju koji se temelji. U ovom slučaju koristim isti Raspberry Pi koji radi OpenHAB, sustav otvorene kuće za automatizaciju

Prvi koraci s OpenHAB kućnom automatizacijom na Raspberry PiOpenHAB je zrela platforma za kućnu automatizaciju otvorenog koda koja radi na različitim hardverima i jest protokol agnostički, što znači da se može povezati s gotovo svim hardverom kućne automatizacije na tržištu danas. Čitaj više . Ostatak ovog vodiča pretpostavlja da ga također pokrećete na Raspberry Pi i imate otvoren radni prozor na radnoj površini ili daljinsko se prijavljuje pomoću SSH-a Postavljanje vašeg Raspberry Pi-a za upotrebu bez glave sa SSH-omRaspberry Pi može prihvatiti SSH naredbe kada su povezani s lokalnom mrežom (bilo putem Etherneta ili Wi-Fi-ja), omogućujući vam jednostavno postavljanje. Prednosti SSH-a nadilaze narušavanje dnevnog probira ... Čitaj više .

Trebat će vam

  • Malina Pi 2 (stariji modeli trebaju raditi, ali provjerite postoje li posebne promjene u uputama)
  • Najmanje jedan Sonos zvučnik (ostali audio sustavi nisu podržani, ovo je tutorial samo za Sonos)
  • Besplatni račun na VoiceRSS.org [Više nije dostupno]. Registrirajte se tada pronađite svoj ključ API-ja, što će nam kasnije trebati za generiranje glasovnih poruka.

Instalirajte najnoviji čvor

Upisom verzije čvora imate provjerite:

čvor -v. 

Imajte na umu da verzija 6 nije podržana. Ako imate Čvor 6, prvo ćete ga ukloniti, a zatim slijedite dolje navedene upute za instalaciju v5.5.

Ako nemate v5 ili imate pogrešku koja nije pronađena, slijedite ove upute da biste instalirali Čvor. Sljedeća naredba pretpostavlja Raspberry Pi 2; za starije modele upotrijebite armv6l umjesto armv7l.

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

Ponovno potvrdite tipkanjem:

čvor -v

A trebali biste vidjeti v5.12 (ili što god najnovije bilo da ste preuzeli).

Zatim imamo nekoliko modula čvora za instaliranje. Također želimo Node Package Manager.

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

To su preduvjeti iz mode, sada na zabavne stvari.

Sonos HTTP API

Sonos HTTP API stvara internetski poslužitelj na lokalnoj mreži koji nam omogućuje ping URL s porukom koju objavljujemo na Sonos (i za daljinsku kontrolu ako želite, mada se ovaj vodič fokusira samo na glasovnu obavijest aspekt).

git klon https://github.com/jishi/node-sonos-http-api.git Sonos. cd sonos. npm install - proizvodnja. npm start. 

Ako vidite da poruka o takvom i takvom modulu nije pronađena, samo učinite drugu npm instalacija i naziv modula, a zatim pokušajte npm start opet. Ako imate pogreške u vezi sa "Zahtijeva C ++ 11 prevodilac", popravite sa sljedećim naredbama:

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

Na kraju biste trebali vidjeti nešto takvo:

sonos-http-api radi

Poslužitelj se sada pokreće i povezuje se s Sonosom. Format ovog API-ja je jednostavan:

http://[SERVER IP]: 5005 / [IME SOBE] / [AKCIJA]

Ili kao konkretan primjer:

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

Radnja koja nas zanima je naredba "reći", koja se koristi na sljedeći način:

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

Čut ćete poruku o pogrešci da se morate registrirati na API ključ na VoiceRSS.org. Trebali ste to već učiniti, pa utipkajte sljedeće i zalijepite u API ključ kako treba:

nano postavke.json

{

"Voicerss": "YOURAPIKEY" }

(Pritisnite CTRL-X, Y da biste spremili datoteku)

Ponovo pokrenite poslužitelj i ponovno pingirajte URL. Nakon nekoliko sekundi trebali biste čuti ugodan engleski glas (iako promijenite kraj URL-a u hr-hr ako biste radije). Da bi se Sonos HTTP API poslužitelj pokrenuo ponovo kad se Pi ponovno pokrene:

sudo nano /etc/rc.local

Dodajte liniju prije izlaz 0:

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

Sada imate mogućnost stvaranja glasovnih poruka s bilo kojeg mjesta na lokalnoj mreži jednostavnim unošenjem URL-a, tako da su mogućnosti u ovom trenutku širom otvorene. Ako se borite za ideje, pročitajte nekoliko korisnih obavijesti koje sam postavio.

Obavijesti OpenHAB o događajima

Najprije uzmimo jednostavan primjer: otkrivanje pokreta. Ovo je uobičajeni slučaj za aktiviranje lampica, no možda biste željeli i glasovnu obavijest ako je riječ o a senzor kretanja u području s malo prometa, ili možda kao naprijed upozorenje da netko dolazi u vrt staza.

pravilo "Otkriveno je kretanje vrta" kada se stavka Garden_Motion promijenila, tada var String message = "Imate posjetitelja" sendHttpGetRequest (" http://localhost: 5005 / kuhinja / recimo / "+ message.encode (" UTF-8 ") +" / hr-HR ") kraj.

Trebali biste vidjeti kako te jednostavne glasovne obavijesti možete integrirati u bilo koja svoja pravila, ali pokušajmo nešto malo složenije.

Dnevno izvješće o vremenu s IFTTT na OpenHAB za Sonos

U ovom ćemo receptu Sonos objaviti dnevnu vremensku prognozu u preferirano vrijeme.

Trebat će vam Moje. Omogućeno je povezivanje OpenHAB-a, jer se time stvara sigurna veza između vašeg internog OpenHAB poslužitelja i vanjske IFTTT usluge. Postavite to ako već niste - možete se obratiti prvi dio našeg vodiča za OpenHAB Prvi koraci s OpenHAB kućnom automatizacijom na Raspberry PiOpenHAB je zrela platforma za kućnu automatizaciju otvorenog koda koja radi na različitim hardverima i jest protokol agnostički, što znači da se može povezati s gotovo svim hardverom kućne automatizacije na tržištu danas. Čitaj više za cjelovite upute, inače pretpostavljam da ste ga već postavili s omogućenom upornošću za sve stavke.

Zatim u svojoj instalaciji OpenHAB stvorite novu String stavku koja će pohraniti dnevno vremensko izvješće. Prije je to vidljivo u My. OpenHAB kanal, trebat ćemo ga inicijalizirati s nekom zadanom varijablom. Ping sljedeći URL (promjena raspberrypi.local na vaš OpenHAB poslužitelj ili samo upotrijebite IP adresu i Todays_Weather onome što ste nazvali Gudački):

http://raspberrypi.local: 8080 / CMD? Todays_Weather = sunčano 

Prijavite se na Moj. OpenHAB [Neispravan URL je uklonjen] i provjerite stavke popis da biste osigurali da je varijabla sada izvezena.

moja provjera za izvoz predmeta openhab

Natrag na IFTTT, stvorite novi recept i koristite Vremenski kanal kao okidač u željenom doba dana. Morat ćete prvo postaviti svoju lokaciju ako je nikada prije niste koristili.

Odaberite Moje. Kao radnju otvorite OpenHAB, a kao varijablu za ažuriranje odaberite Todays_Weather.

vremensko izvješće ifttt

Za sada samo odaberite sljedeći pola sata za testiranje - možete ažurirati recept kasnije kad znate da djeluje.

Svakako, u vrijeme ispitivanja (u stvari, malo prije), današnja je prognoza uspješno ažurirana.

2016-02-27 10: 28: 01.689 [DEBUG] [o.o.i.m.i. MyOpenHABServiceImpl] - Primljena naredba Danas većinom oblačno! S visokom od 7C i niskom od 1C. Ponoviti. Uvjeti će danas biti pretežno oblačno, s visokom 7C i niskom od 1C. za stavku Todays_Weather. 27.02.2016 10: 28: 01.697 [DEBUG] [o.o.i.m.i. MyOpenHABServiceImpl] - trgovina (Todays_Weather), stanje = Danas pretežno oblačno! S visokom od 7C i niskom od 1C. Ponoviti. Uvjeti će danas biti pretežno oblačno, s visokom 7C i niskom od 1C. 

Dalje, potrebno nam je OpenHAB pravilo da ovu varijablu pošaljemo u Sonos URL „recimo“. To bi trebalo učiniti:

pravilo "Najavite dnevno izvješće o vremenu" kada je Item Todays_Weather primio ažuriranje. onda pošaljiteHttpGetRequest (" http://localhost: 5005 / kuhinja / recimo / "+ Todays_Weather.state.toString.encode (" UTF-8 ") +" / hr-HR ") kraj.

Ovo je dovoljno jednostavno: svaki put kad se ažurira varijabla Todays_Weather (što će biti, automatski, u 8 sati svakoga dana), ping URL. Koristimo kodiranje ( „UTF-8”), String funkcija da rečenicu s IFTTT-a učini prikladnom za upotrebu u URL-u. Da biste ručno testirali ovaj dio sustava, samo ponovo koristite OpenHAB HTTP API:

http://raspberrypi.local: 8080 / CMD? Todays_Weather = Oblačno, s mogućnošću mesnih loptica. 

Spojite se na IFTTT bez OpenHAB-a upotrebom čvora "Ovo-Zatim-Zatim"

Na kraju, pogledajmo kako se povezati s bilo kojim IFTTT receptom bez OpenHAB posrednika. Umjesto toga, instalirat ćemo drugi web poslužitelj i to izložiti otvorenom Internetu. To nije bez rizika: bilo kakav otvoreni poslužitelj je sigurnosni rizik, ali to ublažavamo tako da ne pokrenemo čitav niz poslužitelja, samo mali specifična usluga koja prihvaća samo određene naredbe u sigurnom formatu JSON paketa podataka (tako da neće biti napada SQL ubrizgavanja ili provjere autentifikacije moguće). Nakon što završimo, imat ćete javni URL na koji možete slati poruke s kanala IFTTT Maker.

Započnite postavljanjem jednog od mnogih besplatne dinamičke DNS usluge 5 najboljih besplatnih davatelja dinamičnih DNS-aDDNS usluga može vam pomoći povezivanju s kućnim računalom dok ste u pokretu. Evo najboljih besplatnih pružatelja dinamičkih DNS-ova koje treba uzeti u obzir. Čitaj više vani - preporučujem DuckDNS, posebno zato što pruža jednostavan skup upute za Raspberry Pi, što mu omogućava da automatski ažurira vašu IP adresu. Slijedite ove korake i zapamtite svoj URL za sljedeće korake. Vaš usmjerivač također može imati ugrađenu dinamičku DNS funkciju, pa prvo provjerite tamo. U mom slučaju mogu dobiti a * .mynetgear.com URL besplatno, pa sam ga iskoristio.

Zatim pronađite usmjerivač prosljeđivanje luka Što je prosljeđivanje porta i kako mi može pomoći? [MakeUseOf objašnjava]Plačete li malo unutra kad vam netko kaže da postoji problem s prosljeđivanjem porta i da zbog toga vaša sjajna nova aplikacija neće raditi? Xbox vam neće dopustiti igranje igara, torrent preuzimanja odbijaju ... Čitaj više stranica za konfiguraciju; ovo je mjesto na kojem ćemo reći što učiniti s dolaznim zahtjevima. Proslijedite sve HTTP zahtjeve (priključak 80) na port 1337 na vašem Raspberry Pi poslužitelju. Pretpostavljam da ste već rezervirali IP adresu za svoj Raspberry Pi - ako niste, provjerite konfiguraciju usmjerivača stranicu za rezervirane IP-ove dok ste tamo, jer ne želite da se mijenjaju sljedeći tjedan i da se poslužitelj iznenada zaustavi radi.

prosljeđivanje konfiguracije rutera

Sada instalirajte posljednji bit poslužiteljskog softvera.

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

Trebali biste vidjeti sljedeće.

ako je to onda pogreška zadanih vrijednosti čvora

To je u redu, to samo znači da moramo ažurirati svoje detalje. Otvoriti config.js u Nano i uredite te detalje na bilo što drugo osim zadanog, a zatim spremite. Kada ponovno pokrenete poslužitelj, trebali biste vidjeti ovo:

ako se taj poslužitelj čvora pokreće

Sjajno. Provjerite je li vaš uređaj dostupan iz vanjskog svijeta ako upišete svoje dinamično ime DNS-a i dodajte /ifttn / do kraja URL-a. Ako sve uspije, poruka "IFTTN - Verzija 2.0.1 ako-ovaj-onda-čvor radi i radi!" bit će prikazan u vašem pregledniku. Da biste ovu skriptu pokrenuli pri pokretanju, uredite /etc/rc.local datoteka i dodaj:

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

Ako-this-tada čvor funkcionira putem dodataka - nudi se nekoliko zadanih postavki, ali nas ne zanimaju. Umjesto toga, preuzmite ovaj prilagođeni dodatak koji sam napisao za vas sa sljedećim naredbama.

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

Također ćete morati instalirati zahtjev modul.

npm zahtjev za instalaciju. 

Zatim ponovno pokrenite poslužitelj. Dodatak je prilično jednostavan, ali malo drugačiji od URL-a koji smo koristili do sada. U ovom slučaju koristio sam posebnu "sayall" radnju koja poruku šalje na svaki Sonosov uređaj.

zahtjev(' http://localhost: 5005 / sayall / '+ params.message +' / hr-gb ', funkcija (pogreška, odgovor, tijelo)

Ako biste radije mogli ciljati određene uređaje, zamijenite tu liniju s:

zahtjev(' http://localhost: 5005 / '+ params.device +' / say / '+ params.message +' / hr-gb ', funkcija (pogreška, odgovor, tijelo)

Dodajte još jedan parametar retka pod nazivom uređaj na zahtjev JSON u nastavku u kojem treba odrediti naziv Sonos uređaja.

Da bih to isprobao, koristim aplikaciju IFTTT tipka "Uradi". Napravite novi recept, pregledajte kanale i odaberite Tvorac kanal.

učiniti gumb

Stvorite novi recept. Unesite URL koji ste prethodno konfigurirali od besplatnog pružatelja dinamičnih DNS (uključujući /ifttn/ na kraju URL-a. Ne zaboravite te crte). Izaberi POST zahtjev, Primjena / json sadržaj i tijelo poruke na sljedeći način, zamjenjujući sve varijable po potrebi s onima koje ste prethodno konfigurirali:

{"action": "sonos", "user": "YOURUSER", "pw": "YOURPASSWORD", "message": "Dolazna poruka za sve: Večera je spremna! Ponoviti. Večera je spremna. Odmah se ponesite guzicama. "}

Sada imam lako dostupan gumb koji će objaviti poruku na svim Sonos uređajima u kući. Možete to, naravno, upariti s bilo kojim IFTTT kanalom koji želite napraviti prilagođenu poruku koristeći varijable s tog kanala. Čak biste trebali biti u mogućnosti ponoviti vremensku prognozu odozgo bez da sada upotrebljavate OpenHAB, premda je za instaliranje drugog poslužitelja bilo potrebno dodatnih napora.

Napomena: hakeri će vas automatski skenirati. To se događa stalno, ali ako pregledavate zapisnike, može izgledati alarmantno. Ispod možete vidjeti da se neko sustavno pokušava utvrditi je li bilo koje od standardnih PHPMyAdmin sučelja dostupno. Koji nisu bili Ne budite uznemireni ako vidite nešto slično. Internet je ekvivalent hladnog pozivanja slučajnih telefonskih brojeva da biste vidjeli ima li koga tamo.

pokušaji hakiranja web poslužitelja

Što ćete objaviti?

Sada biste trebali imati alate i sposobnost da konstantno okupate cijelu kuću glasovnim obavijestima o svemu što biste se možda mogli sjetiti. Kome treba glazba? Jedino vam je ograničenje 350 dnevnih zahtjeva s VoiceRSS.org - ali to je otprilike jedan na svaka 4 minute, tako da biste trebali biti u redu.

Pa što ćete učiniti s ovim? Podijelite svoje ideje ili IFTTT recept u komentarima!

Slikovni krediti:kava i žena autor S_Photo preko Shutterstock

James je diplomirao iz umjetne inteligencije i certificiran je CompTIA A + i Network +. Vodeći je programer MakeUseOf-a, a svoje slobodno vrijeme provodi igrajući VR paintball i boardgames. Gradio je računala još od djeteta.