Skelbimas

Bet kurio išmaniųjų namų entuziasto svajonė yra namai, su kuriais galite susikalbėti, tačiau tikrovė nuo to labai nutolusi.

Pavyzdžiui, „Amazon Echo“ leidžia naudoti bet kokį balsu valdomų funkcijų skaičių, tačiau jūs turite pradėti dialogą su klausimu - jūs negalite tiesiog reikalauti, kad ji praneštų svarbų pranešimą.

Tu gali padarykite tai naudodami „Sonos“ sistemą ir šiek tiek „pasidaryk pats“ aviečių „Pi“ magijos. Šiandien aš jums parodysiu, kaip nustatyti „Sonos“ sistemos balso pranešimus, pristatant keletą naudingų IFTTT receptų, „OpenHAB“ integracijų ir dar daugiau, kad būtų galima naudoti pranešimų funkciją.

Atminkite, kad galimas „Sonos“ įrišimas „OpenHAB“, tačiau žinoma, kad jis gali sukelti atminties problemų dėl klaidingos „uPnP“ bibliotekos. Aš siūlyčiau dabar to praleisti ir naudoti metodą, pateiktą šiame vadove.

„Raspberry Pi“, kuriame veikia „Raspian linux“, yra idealus šiam vadovui, tačiau jis turėtų veikti ir su bet kokiu jūsų naudojamu linux pagrindu veikiančiu namų serveriu. Šiuo atveju naudoju tą patį Raspberry Pi, kuris veikia

instagram viewer
„OpenHAB“, atviro kodo namų automatikos sistema Darbo su „OpenHAB Home Automation“ pradžia naudojant „Raspberry Pi“„OpenHAB“ yra brandi, atviro kodo namų automatikos platforma, veikianti įvairia aparatine įranga ir tokia Agnostic Protocol, ty jis gali prisijungti prie beveik bet kurios rinkoje esančios namų automatikos aparatūros šiandien. Skaityti daugiau . Likusiame vadove daroma prielaida, kad jūs taip pat vykdote jį naudodami „Raspberry Pi“ ir turite darbalaukyje atidarytą vietinio terminalo langą, arba prisijungęs nuotoliniu būdu, naudodamas SSH „Raspberry Pi“ paruošimas naudoti be galvų su SSH„Raspberry Pi“ gali priimti SSH komandas, kai yra prijungtas prie vietinio tinklo (per „Ethernet“ arba „Wi-Fi“), kad galėtumėte lengvai jį nustatyti. SSH pranašumai neapsiriboja kasdieniu atranka ... Skaityti daugiau .

Jums reikės

  • Aviečių pi 2 (senesni modeliai turėtų veikti, tačiau patikrinkite, ar nėra instrukcijų pakeitimų)
  • Mažiausiai vienas „Sonos“ pranešėjas (kitos garso sistemos nepalaikomos, tai tik „Sonos“ pamoka)
  • Nemokama sąskaita VoiceRSS.org [nebėra. Tada užregistruokite raskite savo API raktą, kurios mums prireiks vėliau, norint sugeneruoti balso pranešimus.

Įdiekite mazgą naujausią

Patikrinkite, kokią „Node“ versiją turite, įvesdami:

mazgas -v. 

Atminkite, kad 6 versija nepalaikoma. Jei turite 6 mazgą, pirmiausia jį pašalinsite, tada vykdykite toliau pateiktas instrukcijas, kad įdiegtumėte v5.5.

Jei neturite v5 arba radote klaidą nerandate, vykdykite šias instrukcijas, kad įdiegtumėte mazgą. Ši komanda prisiima Raspberry Pi 2; senesniems modeliams naudokite armv6l vietoj 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 / vietinis. 

Dar kartą patvirtinkite įvesdami:

mazgas -v

Ir jūs turėtumėte pamatyti v5.12 (arba bet kurį naujausią variantą, kurį atsisiuntėte).

Toliau mes turime keletą „Node“ modulių, kuriuos reikia įdiegti. Mes taip pat norime „Node Package Manager“.

sudo apt-get install npm. sudo npm įdiegti -g npm. sudo Npm įdiegti -g mazgas-Gyp. 

Tai yra būtina sąlyga, kad dabar, dabar, ant linksmų dalykų.

„Sonos“ HTTP API

„Sonos“ HTTP API vietiniame tinkle sukuria žiniatinklio serverį, kuris leidžia mums prisegti URL su pranešimu apie „Sonos“ (ir jei norite, valdyti jį nuotoliniu būdu, nors šiame vadove dėmesys sutelkiamas tik į balso pranešimą) aspektas).

git klonas https://github.com/jishi/node-sonos-http-api.git sonos. CD sonos. npm įdiegti - gamyba. npm pradžia. 

Jei matote pranešimą apie tokį ir tokį modulį nerastas, tiesiog padarykite kitą npm įdiegti ir modulio pavadinimą, tada pabandykite npm pradžia vėl. Jei patiriate klaidų, susijusių su „Reikalingas C ++ 11 kompiliatorius“, pataisykite šiomis komandomis:

sudo apt-get install gcc-4.8 g ++ - 4.8. „sudo“ atnaujinimo alternatyvos - įdiegti / usr / bin / gccgcc / usr / bin / gcc-4.6 20. sudo atnaujinimas - alternatyvos - įdiegti / usr / bin / gcc gcc /usr/bin/gcc-4.8 50. sudo atnaujinimas - alternatyvos - įdiegti / usr / bin / g ++ g ++ /usr/bin/g++-4.6 20. sudo atnaujinimas - alternatyvos - įdiegti / usr / bin / g ++ g ++ /usr/bin/g++-4.8 50. 

Galų gale turėtumėte pamatyti kažką panašaus:

sonos-http-api veikia

Serveris dabar veikia, turi sąsają su „Sonos“. Šios API formatas yra lengvas:

http://[SERVER IP]: 5005 / [KAMBARIO PAVADINIMAS] / [VEIKLA]

Arba kaip konkretų pavyzdį:

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

Veiksmas, kuris mus domina, yra komanda „pasakyti“, naudojama taip:

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

Išgirsite klaidos pranešimą apie tai, kad turite prisiregistruoti prie API rakto VoiceRSS.org. Jūs jau turėjote tai padaryti, todėl įveskite toliau pateiktą informaciją ir įklijuokite į savo API raktą kaip tinkama:

nano nustatymai.json

{

"voicerss": "YOURAPIKEY" }

(Norėdami išsaugoti failą, paspauskite CTRL-X, Y)

Paleiskite serverį iš naujo ir vėl įklijuokite URL. Po kelių sekundžių turėtumėte išgirsti puikų anglišką balsą (nors URL pabaigą pakeisite į en-us jei norite). Norėdami priversti „Sonos HTTP API“ serverį iš naujo paleisti iš naujo paleidus „Pi“:

sudo nano /etc/rc.local

Pridėkite eilutę prieš išėjimas 0:

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

Dabar turite galimybę sukurti balso pranešimą iš bet kurio vietinio tinklo tiesiog įvesdami URL, taigi šiuo metu galimybės yra atviros. Jei vis dėlto kyla minčių dėl idėjų, perskaitykite kelis naudingus pranešimus, kuriuos jau parengiau.

„OpenHAB“ pranešimai apie renginius

Pirmiausia paimkime paprastą pavyzdį: judesio aptikimas. Tai yra įprastas šviesos įjungimo atvejis, tačiau galbūt norėsite pranešimo balsu, jei tai yra judesio jutiklis mažo eismo zonoje arba galbūt perspėjimas apie priekį, kad kažkas ateina į sodą kelias.

taisyklė „Aptiktas sodo judesys“ kai elementas „Garden_Motion“ pasikeitė, tada var eilutės pranešimas = "Jūs turite lankytoją" sendHttpGetRequest (" http://localhost: 5005 / virtuvė / sakyk / "+ message.encode (" UTF-8 ") +" / en-gb ") pabaiga.

Turėtumėte pamatyti, kaip galite integruoti šiuos paprastus balso pranešimus į bet kurią savo taisyklę, tačiau pabandykime išbandyti ką nors šiek tiek sudėtingesnio.

Dienos orų ataskaita iš IFTTT, „OpenHAB“, „Sonos“

Šiame recepte „Sonos“ paskelbs dienos orų ataskaitą jums tinkamiausiu metu.

Jums reikės Mano. „OpenHAB“ įrišimas įjungtas, nes taip sukuriamas saugus ryšys tarp jūsų vidinio „OpenHAB“ serverio ir išorinės IFTTT paslaugos. Nustatykite tai, jei dar to nepadarėte, galite kreiptis 1 dalis mūsų „OpenHAB“ vadovo Darbo su „OpenHAB Home Automation“ pradžia naudojant „Raspberry Pi“„OpenHAB“ yra brandi, atviro kodo namų automatikos platforma, veikianti įvairia aparatine įranga ir tokia Agnostic Protocol, ty jis gali prisijungti prie beveik bet kurios rinkoje esančios namų automatikos aparatūros šiandien. Skaityti daugiau jei norite gauti išsamias instrukcijas, priešingu atveju aš manau, kad jūs jau nustatėte, kad visiems elementams būtų įgalinta atkaklumas.

Tada „OpenHAB“ diegime sukurkite naują elementą „String“, kuriame bus saugoma dienos orų ataskaita. Prieš tai matoma skiltyje Mano. „OpenHAB“ kanalą, mes turėsime jį inicijuoti su kokiu nors numatytuoju kintamuoju. Įveskite šį URL (pakeiskite raspberrypi.local į savo „OpenHAB“ serverį arba tiesiog naudokite jo IP adresą ir Šiandienos_vyras kam tu pavadinai stygą):

http://raspberrypi.local: 8080 / CMD? Šiandienos_vyras = saulėta 

Prisijunkite prie Mano. „OpenHAB“ [Pašalintas URL pašalintas] ir patikrinkite Daiktai sąrašą, kad būtų užtikrintas kintamojo eksportas.

mano „openhab“ prekės eksporto patikra

Atgal į IFTTT, sukurkite naują receptą ir naudokitės Orų kanalas kaip paleidiklį pasirinktu paros metu. Pirmiausia turėsite nustatyti savo buvimo vietą, jei niekada anksčiau to nenaudojote.

Pasirinkite Mano. Kaip veiksmą naudokite „OpenHAB“ ir pasirinkite kintamąjį „Todays_Weather“, kurį norite atnaujinti.

ifttt orų ataskaita

Kol kas tereikia pasirinkti kitą pusvalandžio laiko tarpsnį - receptą galėsite atnaujinti vėliau, kai sužinosite, kad jis veikia.

Be abejo, bandymo metu (iš tikrųjų šiek tiek anksčiau) gavau šios dienos prognozę sėkmingai atnaujintą.

2016-02-27 10: 28: 01.689 [DEBUG] [o.o.i.m.i. MyOpenHABServiceImpl] - Gauta komanda Šiandien daugiausia debesuota! Esant aukštai 7C ir žemai 1C. Pakartokite. Šiandien bus daugiausia debesuota su pragiedruliais, o 7 ° C ir žemiausia 1 °. elementui „Todays_Weather“. 2016-02-27 10: 28: 01.697 [DEBUG] [o.o.i.m.i. MyOpenHABServiceImpl] - parduotuvė (Todays_Weather), valstija = Šiandien daugiausia debesuota! Esant aukštai 7C ir žemai 1C. Pakartokite. Šiandien bus daugiausia debesuota su pragiedruliais, o 7 ° C ir žemiausia 1 °. 

Toliau mums reikia „OpenHAB“ taisyklės, kad galėtume nusiųsti šį kintamąjį į „Sonos“ pasakyti „URL“. Tai turėtų padaryti:

taisyklė „Skelbti dienos orų ataskaitą“ kai elementas „Todays_Weather“ gavo atnaujinimą. tada siųsti „HttpGetRequest“ („ http://localhost: 5005 / virtuvė / sakyk / "+ Todays_Weather.state.toString.encode (" UTF-8 "+" / en-gb ") pabaiga.

Tai pakankamai paprasta: kiekvieną kartą atnaujinus kintamąjį „Todays_Weather“ (jis bus automatiškai kiekvieną dieną 8:00 ryto), priklijuokite URL. Mes naudojame koduoti („UTF-8“) Styginė funkcija, kad IFTTT sakinys būtų tinkamas naudoti URL. Norėdami rankiniu būdu išbandyti šią sistemos dalį, tiesiog dar kartą naudokite „OpenHAB HTTP API“:

http://raspberrypi.local: 8080 / CMD? Šiandienos_vyras = Debesuota, tikėtina, kad bus kotletų. 

Prisijunkite prie IFTTT be „OpenHAB“, naudodami „Jei-tai-tada-tada“ mazgą

Galiausiai pažiūrėkime, kaip prisijungti iš bet kurio IFTTT recepto be „OpenHAB“ tarpininko. Vietoje to, mes įdiegsime kitą žiniatinklio serverį ir parodysime tai atvirame internete. Tai nėra be jokios rizikos: bet koks atvirojo serverio tipas kelia pavojų saugumui, tačiau mes jį sušvelniname neveikdami viso serverio kamino, o tik nedidelio specifinė paslauga, kuri priima tik tam tikras komandas saugiu JSON duomenų paketo formatu (taigi nebus jokių SQL įpurškimų ar autentifikavimo atakų galima). Baigę turėsite viešą URL, į kurį galėsite siųsti pranešimus iš „IFTTT Maker“ kanalo.

Pradėkite nustatydami vieną iš daugelio nemokamos dinaminės DNS paslaugos 5 geriausi nemokamų dinaminių DNS tiekėjaiDDNS paslauga gali padėti prisijungti prie namų kompiuterio keliaujant. Čia yra geriausi nemokamų dinaminių DNS paslaugų teikėjai, į kuriuos reikia atsižvelgti. Skaityti daugiau ten - aš rekomenduoju „DuckDNS“, būtent todėl, kad jame pateikiamas paprastas rinkinys instrukcijos Raspberry Pi, įgalindama automatiškai atnaujinti IP adresą. Vykdykite juos kartu su kitais ir atsiminkite savo URL atlikdami kitus veiksmus. Maršrutizatoriuje taip pat gali būti įmontuota dinaminė DNS funkcija, todėl pirmiausia patikrinkite. Mano atveju galiu gauti a * .mynetgear.com URL nemokamai, todėl aš juo pasinaudojau.

Tada raskite maršrutizatorių uosto ekspedijavimas Kas yra uosto ekspedijavimas ir kaip jis gali man padėti? [„MakeUseOf“ paaiškina]Ar jūs šiek tiek verkiate, kai kas nors jums sako, kad yra prievadų peradresavimo problema, todėl jūsų naujoji blizgi programa neveiks? „Xbox“ neleis jums žaisti žaidimų, jūsų torrentų atsisiuntimai atsisako ... Skaityti daugiau konfigūracijos puslapis; čia mes pasakysime, ką daryti su gaunamomis užklausomis. Persiųskite visas HTTP užklausas (80 prievadas) į „Raspberry Pi“ serverio 1337 prievadą. Aš manau, kad jūs jau turite rezervuotą „Raspberry Pi“ IP adresą - jei dar neturite, patikrinkite maršrutizatoriaus konfigūraciją rezervuotų IP puslapis, kai esate ten, nes kitą savaitę nekeisite jo ir serveris staiga sustos dirbantys.

maršrutizatoriaus konfigūracijos prievado peradresavimas

Dabar reikia įdiegti paskutinę serverio programinės įrangos dalį.

https://github.com/sebauer/if-this-then-node.git. CD, jei-tai-tada-mazgas / npm įdiegti. mazgas server.js.

Turėtumėte pamatyti šiuos dalykus.

jei tai mazgo numatytųjų verčių klaida

Viskas gerai, tai reiškia, kad turime atnaujinti savo informaciją. Atidaryti config.js „Nano“ ir redaguokite tą informaciją, išskyrus numatytąją, tada išsaugokite. Vėl paleidę serverį, turėtumėte pamatyti tai:

jei tai tada veikia mazgo serveris

Puiku. Patikrinkite, ar jūsų mašina pasiekiama iš išorinio pasaulio, įvesdami dinaminį DNS pagrindinio kompiuterio vardą ir pridėkite /ifttn / iki URL pabaigos. Jei viskas veikia, žinutė „IFTTN - jei 2.0.1 versija yra ir veikia, tai veikia ir veikia!“ bus rodomas jūsų naršyklėje. Vėlgi, norėdami paleisti šį scenarijų paleidžiant, redaguokite /etc/rc.local padėkite ir pridėkite:

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

Jei-tai-tada-mazgas veikia per papildinius - pateikiami keli numatytieji, bet jie mus nedomina. Vietoje to atsisiųskite šį pasirinktinį papildinį, kurį jums parašiau, naudodamas šias komandas.

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

Taip pat turėsite įdiegti prašymas modulis.

npm įdiegimo užklausa. 

Tada paleiskite serverį iš naujo. Papildinys yra gana paprastas, tačiau šiek tiek skiriasi nuo URL, kurį iki šiol naudojome. Šiuo atveju aš pasinaudojau specialiu „sayall“ veiksmu, kuris siunčia pranešimą į kiekvieną „Sonos“ įrenginį.

prašymas (' http://localhost: 5005 / sakinys / '+ params.message +' / en-gb ', funkcija (klaida, atsakymas, tekstas)

Jei verčiau galėtumėte taikyti pagal konkrečius įrenginius, pakeiskite šią eilutę:

prašymas (' http://localhost: 5005 / '+ params.device +' / say / '+ params.message +' / en-gb ', funkcija (klaida, atsakymas, tekstas)

Pridėkite dar vieną eilutės parametrą, vadinamą prietaisas į JSON užklausą, kurioje nurodomas „Sonos“ įrenginio pavadinimas.

Norėdami tai išbandyti, naudoju IFTTT mygtuko „Atlikti“ programą. Sukurkite naują receptą, naršykite kanalus ir pasirinkite Makeris kanalą.

padaryti mygtuką

Sukurkite naują receptą. Įveskite URL, kurį anksčiau sukonfigūravote iš nemokamo dinaminio DNS tiekėjo (įskaitant /ifttn/ URL pabaigoje. Nepamirškite tų brūkšnių). Pasirinkite POST prašyti, aplikacija / json turinys ir pranešimo dalis, pakeisdami visus kintamuosius anksčiau konfigūruotais:

{"veiksmas": "sonos", "vartotojas": "YOURUSER", "pw": "YOURPASSWORD", "message": "Gaunamas pranešimas visiems: Vakarienė paruošta! Pakartokite. Vakarienė paruošta. Nukreipkite savo asilą dabar į viršų. "}

Dabar turiu lengvai prieinamą mygtuką, kuris praneš apie kiekvieną namo „Sonos“ įrenginį. Jūs, žinoma, galite suporuoti tai su bet kokiu IFTTT kanalu, kurį norite sukurti pasirinktinį pranešimą, naudodami to kanalo kintamuosius. Net turėtumėte sugebėti atkartoti orų prognozę iš viršaus, nenaudodami OpenHAB dabar, nors tam reikėjo papildomų pastangų diegiant kitą serverį.

Pastaba: įsilaužėliai automatiškai nuskaitys jus. Taip nutinka visą laiką, bet jei žiūrite žurnalus, tai gali atrodyti nerimą kelianti. Žemiau galite pamatyti, kas sistemingai bandė išsiaiškinti, ar buvo prieinama kokia nors iš standartinių „PHPMyAdmin“ sąsajų. Kokio jie nebuvo. Nesijaudinkite, jei pamatysite ką nors panašaus. Tai yra šalto skambinimo atsitiktiniais telefono numeriais internete atitikmuo, kad būtų galima pamatyti, ar ten kas nors yra.

interneto serverio nulaužimo bandymai

Ką paskelbsite?

Dabar turėtumėte įrankius ir žinias, kad galėtumėte nuolat maudyti visą savo namą pranešimais apie viską, apie ką galėtumėte galvoti. Kam reikalinga muzika? Vienintelis jūsų apribojimas yra 350 „VoiceRSS.org“ kasdienių užklausų, bet tai yra maždaug kas 4 minutes, todėl jums turėtų būti viskas gerai.

Taigi, ką jūs su tuo darysite? Pasidalinkite savo idėjomis ar IFTTT receptu komentaruose!

Vaizdo kreditai:kavos ir moters pateikė „S_Photo“ per „Shutterstock“

Jamesas yra dirbtinio intelekto bakalauras ir yra CompTIA A + bei Network + sertifikuotas. Jis yra pagrindinis „MakeUseOf“ kūrėjas ir laisvalaikį praleidžia žaisdamas VR dažasvydį ir stalo žaidimus. Nuo mažens jis statė kompiuterius.