
Joseph Goodman
0
2395
764
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 upravljanih značajki, 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 sustav Sonos, uvodeći nekoliko korisnih recepata IFTTT, OpenHAB integracije 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 knjižnice. Za sada bih predložio da to preskočimo, i umjesto toga koristimo metodu u ovom vodiču.
Raspberry Pi koji radi Raspian linux idealan je za ovaj vodič, ali bi trebao raditi i na bilo kojem Linux poslužitelju koji se temelji. U ovom slučaju koristim isti Raspberry Pi koji pokreće OpenHAB, sustav otvorene kuće za automatizaciju s otvorenim kodom Uvod s OpenHAB kućnom automatizacijom na Raspberry Pi Početak s OpenHAB kućnom automatizacijom na Raspberry Pi OpenHAB je zrela platforma za kućnu automatizaciju otvorenog koda koji se izvodi na različitim hardverima i agno je protokol, što znači da se danas može povezati s gotovo svim hardverom kućne automatizacije na tržištu. , Ostatak ovog vodiča pretpostavlja da ovo pokrećete i na Raspberry Pi i imate otvoren radni prozor lokalnog terminala na radnoj površini ili ste prijavljeni na daljinu pomoću SSH-a Postavljanje vašeg Raspberry Pi-a za bezglavu upotrebu sa SSH-om Postavljanje vašeg Raspberry Pi za bezglavu upotrebu sa SSH-om Raspberry Pi može prihvaćati SSH naredbe kada su povezani s lokalnom mrežom (bilo putem Etherneta ili Wi-Fi-ja), što vam omogućava jednostavno postavljanje. Prednosti SSH-a nadilaze uznemirujući svakodnevni pregled… .
Trebat će vam
- Raspberry Pi 2 (stariji modeli trebaju raditi, ali provjerite postoje li posebne promjene u uputama)
- Barem 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 potom i pronađite svoj API ključ koji ć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 upute u nastavku da biste instalirali v5.5.
Ako nemate v5 ili ako primite 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 node-v5.12.0-linux-armv7l.tar.gz cd čvor -v5.12.0-linux-armv7l sudo cp -R * / usr / local
Ponovno potvrdite tipkanjem:
čvor -v
A trebali biste vidjeti v5.12 (ili sve najnovije što 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 izvan načina, sada na zabavne stvari.
Sonos HTTP API
Sonos HTTP API stvara web poslužitelj na lokalnoj mreži koji nam omogućava da pingamo URL s porukom koju objavljujemo na Sonosu (i da je daljinski upravljamo ako želite, mada se ovaj vodič fokusira samo na aspekt glasovnih obavijesti).
git klon https://github.com/jishi/node-sonos-http-api.git sonos cd sonos npm install --produkcija 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 pomoću naredbi:
sudo apt-get install gcc-4,8 g ++ - 4,8 sudo update-alternative --install / 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:
Poslužitelj se sada pokreće i povezuje se s Sonosom. Format ovog API-ja je jednostavan:
http: // [SERVER IP]: 5005 / [NAZIV SOBE] / [AKCIJA]
Ili kao konkretan primjer:
http://192.168.1.99:5005/kitchen/playlist/chillout
Akcija koja nas zanima je “reći” naredba, koristi se 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)
Ponovno 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 umetanjem 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
Uzmimo najprije jedan jednostavan primjer: otkrivanje pokreta. Ovo je uobičajeni slučaj za aktiviranje svjetala, no možda biste željeli i glasovnu obavijest ako je senzor kretanja u području s malo prometa ili možda kao naprijed upozorenje da netko ide uz vrtnu stazu.
pravilo "Otkriveno kretanje vrta" kad se promijeni stavka Garden_Motion, zatim var String message = "Imate posjetitelja" sendHttpGetRequest ("http: // localhost: 5005 / kitchen / say /" + message.encode ("UTF-8") + " / hr-gb ") 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 veza My.OpenHAB jer to stvara sigurnu vezu između vašeg internog OpenHAB poslužitelja i vanjske IFTTT usluge. Postavite to ako već niste - pogledajte članak 1 našeg vodiča za OpenHAB Uvod s OpenHAB kućnom automatizacijom na Raspberry Pi Početak s OpenHAB kućnom automatizacijom na Raspberry Pi OpenHAB je zrela platforma za kućnu automatizaciju otvorenog koda koja radi na raznovrsnom hardveru i agno je protokol, što znači da se može povezati s gotovo svim hardverom kućne automatizacije na tržištu danas. za cjelovite upute, inače pretpostavljam da ste ga već postavili pomoću upornosti za sve stavke.
Zatim u svojoj instalaciji OpenHAB stvorite novu stavku String koja će pohraniti dnevno vremensko izvješće. Prije nego što je to vidljivo na My.OpenHAB kanalu, trebat ćemo ga inicijalizirati s nekom zadanom varijablom. Ping sljedeći URL (promjena raspberrypi.local na vaš OpenHAB poslužitelj ili samo upotrijebite njegovu IP adresu i Todays_Weather onome što ste nazvali Gudački):
http: //raspberrypi.local: 8080 / CMD Todays_Weather = sunčano
Prijavite se na My.OpenHAB i provjerite stavke popis da biste osigurali da je varijabla sada izvezena.
Vratite se na IFTTT, kreirajte novi recept i koristite vremenski kanal kao okidač u željeno doba dana. Morate prvo postaviti svoju lokaciju ako je nikad prije niste koristili.
Kao radnju odaberite My.OpenHAB, a kao varijablu koju želite ažurirati odaberite Todays_Weather.
Za sada samo odaberite sljedeći pola sata za testiranje - recept možete ažurirati kasnije kada znate da djeluje.
Svakako, u vrijeme ispitivanja (u stvari, malo prije), današnja prognoza uspješno je 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 2016-02-27 10: 28: 01.697 [DEBUG] [o.o.i.m.i.MyOpenHABServiceImpl] - trgovina (Todays_Weather), država = 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.
Dalje, trebamo OpenHAB pravilo da ovu varijablu pošaljemo u Sonos “reći” URL. To bi trebalo učiniti:
pravilo "Najavite dnevnu vremensku prognozu" kada je Item Todays_Weather primio ažuriranje, a zatim pošaljiteHttpGetRequest ("http: // localhost: 5005 / kitchen / say /" + Todays_Weather.state.toString.encode ("UTF-8") + "/ en-gb ") kraj
Ovo je dovoljno jednostavno: kad god se ažurira varijabla Todays_Weather (što će biti, automatski, u 8 sati svakoga dana), ping URL. Koristimo kodiranje (“UTF-8”) String funkcija da bi rečenica s IFTTT-a bila prikladna 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 okruglica.
Spojite se na IFTTT bez OpenHAB-a, pomoću čvora If-This-Onda-Onda
Za kraj, pogledajmo kako se povezati s bilo kojim IFTTT receptom bez OpenHAB posrednika. Umjesto toga, instalirat ćemo drugi web poslužitelj i izložiti ga otvorenom internetu. To nije bez rizika: bilo koja vrsta otvorenog poslužitelja predstavlja sigurnosni rizik, ali to ublažavamo tako da ne pokrećemo čitav niz poslužitelja, već samo malu specifičnu uslugu koja prihvaća samo određene naredbe u sigurnom formatu JSON paketa podataka (dakle ne Mogući su napadi SQL ubrizgavanja ili provjere autentifikacije). Nakon što završimo, imat ćete javni URL na koji možete slati poruke s kanala IFTTT Maker.
Započnite s postavljanjem jedne od mnogih besplatnih dinamičkih DNS usluga. 5 najboljih dinamičkih DNS pružatelja usluga koje danas možete besplatno koristiti 5 najboljih pružatelja dinamičnih DNS-ova koje danas možete besplatno koristiti. Nakon što je DynDNS nestao, evo najboljih besplatnih dinamičkih DNS dobavljača, usluga i DDNS alternative zamijeniti ga. vani - preporučujem DuckDNS, posebno zato što daje jednostavan skup uputa za Raspberry Pi, omogućavajući mu 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 koristio.
Zatim pronađite prosljeđivanje priključaka vašeg usmjerivača Što je prosljeđivanje porta i kako mi može pomoći? [MakeUseOf objašnjava] Š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 luka i da zbog toga vaša sjajna nova aplikacija neće raditi? Xbox vam neće dopustiti da igrate igre, torrent će vam odbiti… stranicu s konfiguracijom; ovdje ć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 vašeg Raspberry Pi - ako niste, provjerite je li na konfiguracijskoj stranici usmjerivača rezervirana IP adresa dok ste tamo, jer to ne želite promijeniti sljedeći tjedan i da bi poslužitelj iznenada prestao s radom.
Sada instalirajte posljednji zalogak poslužiteljskog softvera.
https://github.com/sebauer/if-this-then-node.git cd if-this-then-node / npm instaliraj čvor server.js
Trebali biste vidjeti sljedeće.
To je u redu, to samo znači da trebamo 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:
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 if-this-then-čvor je pokrenuta 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 &
If-This-Onda-čvor funkcionira putem dodataka - isporučeno je nekoliko zadanih postavki, ali nas to ne zanima. Umjesto toga, preuzmite ovaj prilagođeni dodatak koji sam vam napisao sa sljedećim naredbama.
cd dodaci wget https://gist.githubusercontent.com/jamesabruce/4af8db24ba3452b94877/raw/d11c1cff3aa44dbb6a738eeb15202f3db461de75/sonos.js
Također ćete trebati 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 sam slučaju koristio posebnu “sayall” radnja koja šalje poruku 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 + '/ en-gb', funkcija (pogreška, odgovor, tijelo)
Dodajte još jedan parametar retka pod nazivom uređaj na zahtjev JSON u nastavku u kojem treba navesti naziv Sonos uređaja.
Da bih to testirao, koristim IFTTT “Čini” aplikacija za gumbe. Napravite novi recept, pregledajte kanale i odaberite Tvorac kanal.
Stvorite novi recept. Unesite URL koji ste prethodno konfigurirali od besplatnog pružatelja dinamičkih DNS (uključujući / Ifttn / na kraju URL-a. Ne zaboravite ove crte). Odaberi 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! Ponovite. Večera je spremna. Dovedite svoje guze gore sada „.
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, iako 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 se činiti alarmantnim. Ispod možete vidjeti da se neko sustavno pokušava utvrditi je li bilo koje od standardnih PHPMyAdmin sučelja dostupno. Koje nisu bile. Ne uzbuđujte se ako vidite nešto slično. To je internetski ekvivalent hladnog pozivanja slučajnih telefonskih brojeva da se vidi ima li tko tu.
Što ćete objaviti?
Sada bi 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!
Image Krediti: kava i žena od S_Photo preko Shutterstock