Oglas

Sanje katerega koli ljubitelja pametnih domov so dom, s katerim se lahko pogovarjate, a od tega je resničnost daleč.

Na primer, Amazon Echo vam omogoča uporabo poljubnega števila glasovnih funkcij, vendar morate pogovor odpreti z vprašanjem - ne morete imeti samo sporočila pomembnega sporočila.

Ti lahko storite to s sistemom Sonos in malce naredijo čarodej naredi sam Raspberry Pi. Danes vam bom pokazal, kako nastaviti sistem glasovnih obvestil v vašem sistemu Sonos, predstavil bom nekaj uporabnih receptov IFTTT, integracije OpenHAB in še več za uporabo funkcije obveščanja.

Upoštevajte, da je na voljo domača vezava Sonosa za OpenHAB, vendar je znano, da povzroča težave s spominom zaradi napačne knjižnice uPnP. Za zdaj bi predlagal, da to preskočite in namesto tega uporabite metodo v tej vadnici.

Raspberry Pi, ki poganja Raspian linux, je idealen za to vadnico, vendar bi moral delovati tudi na katerem koli domačem strežniku, ki temelji na linuxu. V tem primeru uporabljam isti Raspberry Pi, ki se izvaja

OpenHAB, odprtokodni sistem za avtomatizacijo doma Uvod v OpenHAB domačo avtomatizacijo na Raspberry PiOpenHAB je zrela, odprtokodna platforma za avtomatizacijo doma, ki deluje na različni strojni opremi in je protokol agnostik, kar pomeni, da se lahko poveže s skoraj katero koli strojno opremo za avtomatizacijo doma na trgu danes. Preberi več . V preostalem delu te vadbe je predpostavljeno, da jo izvajate tudi na Raspberry Pi in imate odprto lokalno okensko okno na namizju, ali pa prijavljeni na daljavo s pomočjo SSH Nastavitev vašega Raspberry Pi za brezglavo uporabo s SSHRaspberry Pi lahko sprejme ukaze SSH, ko jih povežete z lokalnim omrežjem (bodisi prek Etherneta ali Wi-Fi-ja), kar vam omogoča enostavno nastavitev. Prednosti SSH presegajo vznemirjanje dnevnega presejanja ... Preberi več .

Potrebovali boste

  • Malina Pi 2 (starejši modeli bi morali delovati, vendar preverite, ali so v navodilih določene spremembe)
  • Vsaj en Sonos zvočnik (drugi avdio sistemi niso podprti; to je vadnica samo za Sonos)
  • Brezplačen račun na VoiceRSS.org [ni več na voljo]. Registrirajte se nato poiščite ključ API-ja, ki jih bomo pozneje potrebovali za ustvarjanje govornih sporočil.

Namestite vozlišče najnovejše

Preverite, katero različico vozlišča imate, tako da vtipkate:

vozlišče -v. 

Upoštevajte, da različica 6 ni podprta. Če imate vozlišče 6, ga boste najprej morali odstraniti, nato pa sledite spodnjim navodilom za namestitev v5.5.

Če nimate v5 ali če ne najdete napake, sledite tem navodilom za namestitev vozlišča. Naslednji ukaz predvideva Raspberry Pi 2; za starejše modele uporabite armv6l namesto armv7l.

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

Ponovno potrdite s tipkanjem:

vozlišče -v

Videti morate v5.12 (ali kar koli najnovejšega, ki ste ga prenesli).

Nato imamo nameščene nekaj modulov vozlišča. Želimo si tudi upravitelja paketov vozlišč.

sudo apt-get install npm. sudo npm namestite -g npm. sudo npm namestite -g vozlišče-gyp. 

To so prvi predpogoji, zdaj pa na zabavo.

Sonos HTTP API

The Sonos HTTP API ustvari spletni strežnik v lokalnem omrežju, ki nam omogoča, da pišemo URL s sporočilom, ki ga objavimo na Sonos (in če želite, da ga upravljate na daljavo, čeprav je ta vadnica osredotočena samo na glasovno obvestilo vidik).

git klon https://github.com/jishi/node-sonos-http-api.git sonos. cd sonos. npm install - proizvodnja. npm začetek. 

Če opazite, da sporočilo o takem in takem modulu ni mogoče najti, samo naredite drugo npm namestite in ime modula, nato poskusite npm začetek ponovno. Če imate napake, povezane z: "Zahteva prevajalnik C ++ 11", popravite z naslednjimi ukazi:

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. 

Sčasoma bi morali videti nekaj takega:

sonos-http-api deluje

Strežnik zdaj deluje in se povezuje s Sonosom. Oblika tega API-ja je preprosta:

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

Ali kot poseben primer:

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

Dejanje, ki nas zanima, je ukaz "reci", ki se uporablja na naslednji način:

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

Na VoiceRSS.org boste zaslišali sporočilo o napaki o registraciji v ključ API. To bi morali že storiti, zato v ključ API vnesite naslednje in ga prilepite:

nano settings.json

{

"voicerss": "YOURAPIKEY" }

(Če želite shraniti datoteko, pritisnite CTRL-X, Y)

Znova zaženite strežnik in znova pokličite URL. Po nekaj sekundah boste slišali prijeten angleški glas (čeprav spremenite konec URL-ja v en-nas če bi raje). Če želite, da se strežnik API-ja Sonos HTTP znova zažene ob ponovnem zagonu Pi:

sudo nano /etc/rc.local

Pred vrstico dodajte vrstico izhod 0:

sudo vozlišče /home/pi/sonos/server.js  dev / null &

Zdaj lahko ustvarite glasovno sporočilo od koder koli v lokalnem omrežju s klicanjem URL-ja, tako da so na tej točki možnosti široko odprte. Če se kljub temu borite za ideje, preberite nekaj uporabnih obvestil, ki sem jih pripravila.

Obvestila OpenHAB o dogodkih

Najprej vzamemo preprost primer: zaznavanje gibanja. To je pogost primer uporabe pri vklopu luči, vendar boste morda želeli tudi glasovno obvestilo, če je oznaka a senzor gibanja na območju z majhnim prometom ali morda kot opozorilo za naprej, da nekdo prihaja na vrt pot.

pravilo "Zaznano gibanje vrta" ko se element Garden_Motion spremeni, potem var String message = "Imate obiskovalca" sendHttpGetRequest (" http://localhost: 5005 / kuhinja / recimo / "+ message.encode (" UTF-8 ") +" / en-gb ") konec.

Videti bi morali, kako lahko ta preprosta glasovna obvestila vključite v katero koli od svojih pravil, vendar poskusimo nekaj bolj zapletenega.

Dnevno poročilo o vremenu od IFTTT do OpenHAB za Sonos

V tem receptu bomo Sonos objavili dnevno vremensko poročilo ob vašem želenem času.

Potrebovali boste moje. Vezava OpenHAB je omogočena, saj s tem ustvarite varno povezavo med vašim notranjim strežnikom OpenHAB in zunanjo storitev IFTTT. Če to še niste storili, se lahko sklicujete 1. del našega vodiča za OpenHAB Uvod v OpenHAB domačo avtomatizacijo na Raspberry PiOpenHAB je zrela, odprtokodna platforma za avtomatizacijo doma, ki deluje na različni strojni opremi in je protokol agnostik, kar pomeni, da se lahko poveže s skoraj katero koli strojno opremo za avtomatizacijo doma na trgu danes. Preberi več za popolna navodila, drugače predvidevam, da ste ga že nastavili z vztrajnostjo, omogočeno za vse predmete.

Nato v namestitvi OpenHAB ustvarite nov niz String, ki bo shranjeval dnevno vremensko poročilo. Preden je to vidno v Mojem. Kanal OpenHAB, inicializirati ga bomo morali z neko privzeto spremenljivko. Ping naslednjega URL-ja (sprememba maline.local na strežnik OpenHAB ali pa preprosto uporabite IP-naslov in TodaysWeather k čemur ste poimenovali struno):

http://raspberrypi.local: 8080 / CMD? TodaysWeather = Sončno 

Prijavite se v Moj. OpenHAB [Odstranjen zlomljen URL] in preverite Predmeti seznam za zagotovitev, da je spremenljivka zdaj izvožena.

moje preverjanje izvoza predmeta openhab

Nazaj na IFTTT, ustvarite nov recept in uporabite Vremenski kanal kot sprožilec v vašem želenem času dneva. Najprej morate nastaviti svojo lokacijo, če je še nikoli niste uporabljali.

Izberite Moje. Kot dejanje odprite OpenHAB in kot spremenljivko za posodobitev izberite Todays_Weather.

vremensko poročilo za ifttt

Zaenkrat izberite le še pol ure za testiranje - recept lahko posodobite pozneje, ko veste, da deluje.

Seveda, ob testnem času (pravzaprav malo prej) sem današnjo napoved uspešno posodobil.

2016-02-27 10: 28: 01.689 [DEBUG] [o.o.i.m.i. MyOpenHABServiceImpl] - Prejeto ukaz Pretežno oblačno danes! Z visokim 7C in nizkim 1C. Ponovite. Pogoji bodo danes pretežno oblačno z visokim 7C in nizkim 1C. za element Todays_Weather. 2016-02-27 10: 28: 01.697 [DEBUG] [o.o.i.m.i. MyOpenHABServiceImpl] - trgovina (Todays_Weather), država = danes pretežno oblačno! Z visokim 7C in nizkim 1C. Ponovite. Pogoji bodo danes pretežno oblačno z visokim 7C in nizkim 1C. 

Za nadaljevanje potrebujemo pravilo OpenHAB, da to spremenljivko pošljemo na Sonos "recimo" URL. To bi morali storiti naslednji:

pravilo "Napoveduj dnevno vremensko poročilo" ko je postavka Todays_Weather prejela posodobitev. nato pošljiHttpGetRequest (" http://localhost: 5005 / kuhinja / recimo / "+ Todays_Weather.state.toString.encode (" UTF-8 ") +" / en-gb ") konec.

To je dovolj preprosto: vsakič, ko je spremenjena spremenljivka Todays_Weather (ki bo samodejno, vsak dan ob 8:00), ping URL. Uporabljamo kodirati ("UTF-8") Funkcija nizov, da stavek iz IFTTT postane primeren za uporabo v URL-ju. Če želite ročno preizkusiti ta del sistema, preprosto znova uporabite OpenHAB HTTP API:

http://raspberrypi.local: 8080 / CMD? Todays_Weather = oblačno, možnost mesnih kroglic. 

Povežite se s IFTTT brez OpenHAB-a z uporabo vozlišča If-This-затем-Nato

Na koncu si oglejmo, kako se povezati s katerim koli receptom IFTTT brez posrednika OpenHAB. Namesto tega bomo namestili drug spletni strežnik in ga izpostavili odprtemu internetu. To ni brez tveganja: kakršen koli odprt strežnik je varnostno tveganje, vendar to omilimo tako, da ne zaženemo celotnega strežnika, le majhen posebna storitev, ki sprejema le določene ukaze v varni obliki podatkovnega paketa JSON (torej nobenih napadov SQL ali vpijanja ali overjanja ne bo mogoče). Ko končamo, boste imeli javni URL, na katerega lahko pošiljate sporočila s kanala za ustvarjalce IFTTT.

Začnite z nastavitvijo enega od mnogih brezplačne dinamične storitve DNS 5 najboljših brezplačnih dinamičnih ponudnikov DNSStoritev DDNS vam lahko pomaga, da se povežete z domačim računalnikom, ko ste na poti. Tu so najboljši brezplačni ponudniki dinamičnih DNS, ki jih morate upoštevati. Preberi več tam priporočam DuckDNS, predvsem zato, ker ponuja preprost nabor navodila za Raspberry Pi, ki omogoča samodejno posodabljanje vašega naslova IP. Sledite tem in si za nadaljnje korake zapomnite svoj URL. Vaš usmerjevalnik ima lahko tudi vgrajeno dinamično funkcijo DNS, zato najprej preverite tam. V mojem primeru lahko dobim * .mynetgear.com URL brezplačno, zato sem to uporabil.

Nato poiščite usmerjevalnik posredovanje pristanišč Kaj je posredovanje pristanišč in kako mi lahko pomaga? [MakeUseOf pojasnjuje]Ali malo zajokate v notranjosti, ko vam nekdo reče, da obstaja težava s posredovanjem vrat in zato vaša bleščeča nova aplikacija ne bo delovala? Vaš Xbox ne bo dovolil igranja iger, nalaganje torrentov zavrne ... Preberi več stran za konfiguracijo; tu bomo povedali, kaj storiti pri dohodnih zahtevah. Vse zahteve HTTP (vrata 80) posredujte na vrata 1337 na vašem strežniku Raspberry Pi. Predvidevam, da imate že rezerviran IP naslov za vaš Raspberry Pi - če ga še niste, preverite konfiguracijo usmerjevalnika stran za rezervirane IP-je, ko ste tam, saj se naslednji teden ne spreminjate in strežnik nenadoma ustavi delujoč.

usmerjanje usmerjevalnika vrat

Zdaj namestite zadnji bit strežniške programske opreme.

https://github.com/sebauer/if-this-then-node.git. cd if-this-then-vozlišče / npm namestite. vozlišče server.js.

Morali bi videti naslednje.

če je to napaka privzetih vrednosti napake

To je v redu, to samo pomeni, da moramo posodobiti svoje podatke. Odpri config.js v Nano in uredite te podrobnosti na nič drugega kot privzeto, nato shranite. Ko znova zaženete strežnik, bi morali videti to:

če ta strežnik vozlišč teče

Super. Preverite, ali je vaš stroj dostopen iz zunanjega sveta, tako da vtipkate svoje dinamično ime gostitelja DNS in dodate /ifttn / do konca URL-ja. Če vse deluje, sporočilo "IFTTN - različica 2.0.1 če-potem-potem-vozlišče deluje in deluje!" se prikaže v vašem brskalniku. Ponovno uredite ta skript za zagon /etc/rc.local datoteko in dodajte:

sudo vozlišče /home/pi/if-this-then-node/server.js  dev / null &

Vozilo »Če to-potem-potem« deluje prek vtičnikov - priloženih je nekaj privzetih, vendar nas ne zanimajo. Namesto tega prenesite ta vtičnik po meri, ki sem ga napisal za vas z naslednjimi ukazi.

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

Prav tako boste morali namestiti prošnja modul.

npm zahteva za namestitev. 

Nato znova zaženite strežnik. Vtičnik je precej preprost, vendar nekoliko drugačen od URL-ja, ki smo ga uporabljali do zdaj. V tem primeru sem uporabil posebno dejanje "sayall", ki sporočilo pošlje vsaki napravi Sonos.

prošnja(' http://localhost: 5005 / sayall / '+ params.message +' / en-gb ', funkcija (napaka, odziv, telo)

Če raje ciljate na določene naprave, zamenjajte to vrstico z:

prošnja(' http://localhost: 5005 / '+ params.device +' / recimo / '+ params.message +' / en-gb ', funkcija (napaka, odziv, telo)

Dodajte drug imenovani parameter vrstice napravo na spodnjo zahtevo JSON, v kateri določite ime naprave Sonos.

Če želite to preizkusiti, uporabljam aplikacijsko tipko IFTTT "Naredi". Ustvarite nov recept, poiščite kanale in izberite Ustvarjalec kanal.

stori gumb

Ustvari nov recept. Vnesite URL, ki ste ga predhodno konfigurirali pri brezplačnem dinamičnem ponudniku DNS (vključno z /ifttn/ na koncu URL-ja. Ne pozabite teh poševnic). Izberite POST prošnja, aplikacija / json vsebino in besedilo sporočila, ki nadomešča vse spremenljivke po potrebi s tistimi, ki ste jih predhodno konfigurirali:

{"action": "sonos", "user": "YOURUSER", "pw": "YOURPASSWORD", "message": "Dohodno sporočilo za vse: Večerja je pripravljena! Ponovite. Večerja je pripravljena. Zdaj se vrnite na rit. "}

Zdaj imam lahko dostopen gumb, ki bo sporočilo objavil na vsaki napravi Sonos v hiši. Seveda lahko to združite s katerim koli kanalom IFTTT, ki mu želite ustvariti sporočilo po meri z uporabo spremenljivk iz tega kanala. Morda bi morali celo ponoviti vremensko poročilo od zgoraj, ne da bi zdaj uporabljali OpenHAB, čeprav so bili potrebni dodatni napori za namestitev drugega strežnika.

Opomba: hekerji vas bodo samodejno skenirali. To se dogaja ves čas, če pa si ogledate dnevnike, se lahko zdi skrb vzbujajoče. Spodaj lahko vidite, da je nekdo sistematično skušal preveriti, ali je kateri od standardnih vmesnikov PHPMyAdmin dostopen. Kateri niso bili Ne bodite prestrašeni, če vidite kaj podobnega. To je internetni ekvivalent hladnih klicev naključnih telefonskih številk, da vidimo, ali je kdo tam.

poskusi kramp spletnega strežnika

Kaj boste napovedali?

Zdaj bi morali imeti orodja in moči za neprestano kopanje celotne hiše v glasovnih obvestilih o vsem, kar si morda omislite. Kdo potrebuje glasbo? Vaša edina omejitev je 350 dnevnih prošenj VoiceRSS.org - vendar to traja približno vsake 4 minute, zato morate biti v redu.

Torej, kaj boš naredil s tem? V komentarjih delite svoje ideje ali recept IFTTT!

Slikovni krediti:kava in ženska avtor S_Photo prek Shutterstock

James ima doktorat iz področja umetne inteligence in ima certifikat CompTIA A + in Network +. Je vodilni razvijalec MakeUseOf in svoj prosti čas preživlja z igranjem VR paintball in družabnih iger. Z računalniki gradi že od malih nog.