Reklāma

Jebkura vieda mājas entuziasta sapnis ir mājas, ar kurām jūs varat sarunāties, taču realitāte ir tālu no tā.

Piemēram, Amazon Echo ļauj izmantot neierobežotu skaitu ar balsi vadāmu funkciju, taču dialogs jums ir jāuzsāk ar jautājumu - jūs varat ne tikai likt viņai paziņot svarīgu ziņojumu.

Jūs var to dariet, izmantojot Sonos sistēmu, un nedaudz DIY Raspberry Pi burvju. Šodien es jums parādīšu, kā iestatīt balss paziņojumus jūsu Sonos sistēmā, ieviešot pāris noderīgas IFTTT receptes, OpenHAB integrācijas un daudz ko citu, lai izmantotu paziņojumu funkciju.

Ņemiet vērā, ka OpenHAB ir pieejama vietējā Sonos saite, taču ir zināms, ka kļūdainas uPnP bibliotēkas dēļ tā rada atmiņas problēmas. Es ieteiktu to pagaidām izlaist un tā vietā izmantot metodi šajā apmācībā.

Raspberry Pi, kurā darbojas Raspian linux, ir ideāli piemērots šai apmācībai, taču tai vajadzētu darboties arī uz visiem Linux balstītajiem mājas serveriem, kurus izmantojat. Šajā gadījumā es izmantoju to pašu Raspberry Pi, kas darbojas

OpenHAB, atvērtā koda mājas automatizācijas sistēma Darba sākšana ar OpenHAB mājas automatizāciju vietnē Raspberry PiOpenHAB ir nobriedusi, atvērtā koda mājas automatizācijas platforma, kas darbojas ar dažādu aparatūru un ir protokols agnostisks, kas nozīmē, ka tas var izveidot savienojumu ar gandrīz jebkuru mājas automatizācijas aparatūru tirgū šodien. Lasīt vairāk . Atlikušajā šīs apmācības daļā tiek pieņemts, ka jūs to izmantojat arī Raspberry Pi un vai nu darbvirsmā ir atvērts vietējā termināla logs, vai arī pieteicies attālināti, izmantojot SSH Aveņu Pi iestatīšana lietošanai bez galvas ar SSHRaspberry Pi var pieņemt SSH komandas, kad tās ir savienotas ar vietējo tīklu (izmantojot Ethernet vai Wi-Fi), ļaujot jums to viegli iestatīt. SSH priekšrocības pārsniedz ikdienas skrīninga izjaukšanu ... Lasīt vairāk .

Jums būs nepieciešams

  • Aveņu Pi 2 (vecākiem modeļiem vajadzētu darboties, taču pārbaudiet, vai instrukcijās nav veiktas īpašas izmaiņas)
  • Vismaz viens Sonos runātājs (citas audio sistēmas netiek atbalstītas, šī ir apmācība tikai Sonos)
  • Bezmaksas konts vietnē VoiceRSS.org [vairs nav pieejams]. Pēc tam reģistrējieties atrodiet savu API atslēgu, kas mums vēlāk būs nepieciešams, lai ģenerētu balss ziņojumus.

Instalējiet mezglu Jaunākais

Pārbaudiet, kura mezgla versija jums ir, ierakstot:

mezgls -v. 

Ņemiet vērā, ka 6. versija netiek atbalstīta. Ja jums ir mezgls 6, vispirms tas jānoņem, pēc tam izpildiet tālāk sniegtos norādījumus, lai instalētu v5.5.

Ja jums nav v5 vai ja rodas kļūda, kas nav atrasta, izpildiet šos norādījumus, lai instalētu mezglu. Šī komanda pieņem Raspberry Pi 2; vecākiem modeļiem izmantojiet armv6l tā vietā 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 / local. 

Apstipriniet vēlreiz, ierakstot:

mezgls -v

Un jums vajadzētu redzēt v5.12 (vai kāds ir jaunākais, ko lejupielādējāt).

Tālāk mums ir jāinstalē daži Node moduļi. Mēs vēlamies arī mezglu paketes pārvaldnieku.

sudo apt-get instalēt npm. sudo npm instalēšana -g npm. sudo npm instalēt -g node-gyp. 

Tas ir priekšnoteikums, kas atrodas ārpus ceļa, tagad uz jautrajām lietām.

Sonos HTTP API

Sonos HTTP API vietējā tīklā izveido tīmekļa serveri, kas ļauj mums piespraust vietrādi URL ar ziņojumu, ko paziņot Sonos (un, ja vēlaties, lai to kontrolētu attālināti), lai gan šī apmācība koncentrējas tikai uz balss paziņojumu aspekts).

git klons https://github.com/jishi/node-sonos-http-api.git sonos. cd sonos. npm instalēt - ražošana. npm sākums. 

Ja redzat ziņojumu par tādu un tādu moduli nav atrasts, vienkārši dariet citu npm instalēt un moduļa nosaukumu, pēc tam mēģiniet npm sākums atkal. Ja rodas kļūdas saistībā ar “Nepieciešams C ++ 11 kompilators”, labojiet ar šādām komandām:

sudo apt-get install gcc-4.8 g ++ - 4.8. sudo update-alternatīvas - instalēt / usr / bin / gccgcc / usr / bin / gcc-4.6 20. sudo update-alternatīvas --instalējiet / usr / bin / gcc gcc /usr/bin/gcc-4.8 50. sudo update-alternatīvas --instalēt / usr / bin / g ++ g ++ /usr/bin/g++-4.6 20. sudo update-alternatīvas --instalēt / usr / bin / g ++ g ++ /usr/bin/g++-4.8 50. 

Galu galā jums vajadzētu redzēt kaut ko līdzīgu:

sonos-http-api darbojas

Tagad serveris darbojas, saskaroties ar Sonos. Šīs API formāts ir vienkāršs:

http://[SERVER IP]: 5005 / [ISTABAS NOSAUKUMS] / [ACTION]

Vai kā īpašu piemēru:

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

Darbība, kas mūs interesē, ir komanda “pateikt”, ko izmanto šādi:

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

Jūs dzirdēsit kļūdas ziņojumu par reģistrēšanos API atslēgā vietnē VoiceRSS.org. Jums to jau vajadzēja izdarīt, tāpēc ierakstiet šo un ielīmējiet savu API atslēgu kā atbilstošu:

nano iestatījumi.json

{

"voicerss": "YOURAPIKEY" }

(Lai saglabātu failu, nospiediet taustiņu kombināciju CTRL-X, Y)

Restartējiet serveri un vēlreiz piespraudiet vietrādi URL. Pēc dažām sekundēm jums vajadzētu dzirdēt apburošu balsi angļu valodā (lai gan URL galu maināt uz lv-mums ja jūs labprātāk). Lai Sonos HTTP API serveris atkal startētu, kad Pi tiek restartēts:

sudo nano /etc/rc.local

Pievienojiet rindu pirms izeja 0:

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

Tagad jums ir iespēja izveidot balss ziņojumu no jebkuras vietas lokālajā tīklā, vienkārši piesaistot URL, tāpēc iespējas šajā brīdī ir plaši atvērtas. Ja tomēr jūs tiecaties pēc idejām, izlasiet dažus noderīgus paziņojumus, kurus esmu izveidojis.

OpenHAB paziņojumi par pasākumiem

Vispirms ņemsim vienkāršu piemēru: kustības noteikšana. Šis ir biežs apgaismojuma aktivizēšanas gadījums, taču, iespējams, vēlēsities saņemt arī balss paziņojumu kustības sensors apgabalā ar mazu satiksmes intensitāti vai varbūt kā brīdinājumu uz priekšu, ka kāds nāk dārzā ceļš.

noteikums "Noteikta dārza kustība" kad vienums Garden_Motion mainīts, tad var virknes ziņojums = "Jums ir apmeklētājs" sendHttpGetRequest (" http://localhost: 5005 / virtuve / teiksim / "+ message.encode (" UTF-8 ") +" / en-gb ") beigas.

Jums vajadzētu redzēt, kā šos vienkāršos balss paziņojumus var integrēt savos noteikumos, taču izmēģināsim kaut ko nedaudz sarežģītāku.

Dienas laika ziņojums no IFTTT līdz OpenHAB Sonos

Šajā receptē Sonos paziņosim ikdienas laika ziņojumu jūsu vēlamajā laikā.

Jums būs nepieciešams mans. Iespējota OpenHAB iesiešana, jo tādējādi tiek izveidots drošs savienojums starp jūsu iekšējo OpenHAB serveri un ārējo IFTTT pakalpojumu. Iestatiet to, ja vēl neesat to izdarījis - varat atsaukties mūsu OpenHAB ceļveža 1. daļa Darba sākšana ar OpenHAB mājas automatizāciju vietnē Raspberry PiOpenHAB ir nobriedusi, atvērtā koda mājas automatizācijas platforma, kas darbojas ar dažādu aparatūru un ir protokols agnostisks, kas nozīmē, ka tas var izveidot savienojumu ar gandrīz jebkuru mājas automatizācijas aparatūru tirgū šodien. Lasīt vairāk lai iegūtu pilnīgas instrukcijas, pretējā gadījumā es pieņemšu, ka jūs jau esat to iestatījis ar pastāvīgu iespējotību visiem vienumiem.

Pēc tam OpenHAB instalācijā izveidojiet jaunu virknes vienumu, kurā tiks saglabāts ikdienas laika apstākļu ziņojums. Pirms tas ir redzams mapē Mans. OpenHAB kanāls, mums tas būs jāinicializē ar kādu noklusējuma mainīgo. Ielikt šo URL (mainīt raspberrypi.local uz savu OpenHAB serveri vai vienkārši izmantojiet tā IP adresi un Šodienas_laiks lai ko jūs nosauktu par stīgu):

http://raspberrypi.local: 8080 / CMD? Šodienas_laiks = saulains 

Piesakieties manā. OpenHAB [Broken URL Noņemts] un pārbaudiet Priekšmeti saraksts, lai nodrošinātu mainīgā lieluma eksportēšanu.

mana Openhab preces eksporta pārbaude

Atpakaļ pie IFTTT, izveidojiet jaunu recepti un izmantojiet Laika kanāls kā sprūdu vēlamajā dienas laikā. Vispirms jums jāiestata sava atrašanās vieta, ja jūs to nekad iepriekš neesat izmantojis.

Atlasiet Mani. Kā darbību atveriet OpenHAB un kā mainīgo izvēlieties mainīgo Todays_Weather.

ifttt laika ziņas

Pagaidām testēšanai izvēlieties tikai nākamo pusstundas vietu - recepti varat atjaunināt vēlāk, kad zināt, ka tā darbojas.

Protams, testa laikā (faktiski nedaudz pirms tam) es šodien veiksmīgi atjaunināju prognozi.

2016-02-27 10: 28: 01.689 [DEBUG] [o.o.i.m.i. MyOpenHABServiceImpl] - šodien saņemta komanda Galvenokārt mākoņains! Ar augstāko 7C un zemāko 1C. Atkārtojiet. Apstākļi šodien būs galvenokārt mākoņaini, ar paaugstinātu 7 ° C un zemāko 1 ° C. priekšmetam Todays_Weather. 2016-02-27 10: 28: 01.697 [DEBUG] [o.o.i.m.i. MyOpenHABServiceImpl] - veikals (Todays_Weather), štats = Šodien mākoņains! Ar augstāko 7C un zemāko 1C. Atkārtojiet. Apstākļi šodien būs galvenokārt mākoņaini, ar paaugstinātu 7 ° C un zemāko 1 ° C. 

Tālāk mums ir nepieciešama OpenHAB kārtula, lai nosūtītu šo mainīgo uz Sonos “sakiet” URL. To vajadzētu darīt šādi:

noteikums "Paziņot ikdienas laika ziņojumu" kad vienums “Todays_Weather” saņēma atjauninājumu. pēc tam sendHttpGetRequest (" http://localhost: 5005 / virtuve / teiksim / "+ Todays_Weather.state.toString.encode (" UTF-8 ") +" / en-gb ") beigas.

Tas ir pietiekami vienkārši: ikreiz, kad tiek atjaunināts mainīgais Todays_Weather (tas automātiski notiks katru dienu plkst. 8:00), piespraudiet URL. Mēs izmantojam kodēt (“UTF-8”) Stīgu funkcija, lai teikumu no IFTTT padarītu piemērotu izmantošanai URL. Lai manuāli pārbaudītu šo sistēmas daļu, vienkārši vēlreiz izmantojiet OpenHAB HTTP API:

http://raspberrypi.local: 8080 / CMD? Šodienas_neātris = Mākoņains, iespējamas kotletes. 

Izveidojiet savienojumu ar IFTTT bez OpenHAB, izmantojot mezglu If-It-tad-tad

Noslēgumā apskatīsim, kā izveidot savienojumu no jebkuras IFTTT receptes bez OpenHAB starpnieka. Tā vietā mēs instalēsim citu tīmekļa serveri un atklāsim to atvērtam internetam. Tas nav bez riska: jebkura veida atvērts serveris ir drošības risks, taču mēs to mazinām, nedarbinot pilnu servera kaudzīti, tikai nelielu īpašs pakalpojums, kas pieņem noteiktas komandas tikai drošā JSON datu pakešu formātā (tātad netiks veikti SQL ievadīšanas vai autentifikācijas uzbrukumi iespējams). Kad tas būs izdarīts, jums būs publisks URL, uz kuru varēsit sūtīt ziņojumus no IFTTT Maker kanāla.

Sākumā iestatiet vienu no daudzajiem bezmaksas dinamiski DNS pakalpojumi 5 labākie bezmaksas dinamiskās DNS pakalpojumu sniedzējiDDNS pakalpojums var palīdzēt jums izveidot savienojumu ar mājas datoru, atrodoties ceļā. Šeit ir labākie bezmaksas dinamisko DNS pakalpojumu sniedzēji, kas jāņem vērā. Lasīt vairāk kas tur - es iesaku DuckDNS, jo īpaši tāpēc, ka tas sniedz vienkāršu instrukcijas Raspberry Pi, ļaujot tai automātiski atjaunināt jūsu IP adresi. Izpildiet tos kopā un atcerieties savu URL nākamajām darbībām. Iespējams, ka jūsu maršrutētājā ir iebūvēta dinamiskā DNS funkcija, tāpēc vispirms pārbaudiet to. Manā gadījumā es varu iegūt a * .mynetgear.com URL bez maksas, tāpēc es to esmu izmantojis.

Pēc tam atrodiet maršrutētāju ostas pāradresācija Kas ir ostas pāradresācija un kā tas man var palīdzēt? [MakeUseOf skaidrojumi]Vai jūs mazliet raudājat iekšā, kad kāds saka, ka pastāv ostas pāradresācijas problēma, un kāpēc jūsu spīdīgā jaunā lietotne nedarbosies? Jūsu Xbox neļaus jums spēlēt spēles, jūsu torrent lejupielādes tiek atteiktas ... Lasīt vairāk konfigurācijas lapa; šajā vietā mēs pateiksim, ko darīt ar ienākošajiem pieprasījumiem. Pārsūtiet visus HTTP pieprasījumus (80. ports) uz portu 1337 uz jūsu Raspberry Pi servera. Es pieņemu, ka jums jau ir rezervēta IP adrese jūsu Raspberry Pi - ja neesat to izdarījis, pārbaudiet maršrutētāja konfigurāciju rezervēto IP lapu, kamēr atrodaties tur, jo nākamnedēļ tas nemainās un serverim pēkšņi jāpārtrauc darbība strādā.

maršrutētāja konfigurēšanas porta pāradresācija

Tagad, lai instalētu pēdējo servera programmatūras bitu.

https://github.com/sebauer/if-this-then-node.git. CD, ja-tas-tad-mezgls / npm instalēt. mezgls server.js.

Jums vajadzētu redzēt sekojošo.

ja šī mezgla noklusējuma vērtību kļūda

Tas ir labi, tas nozīmē tikai to, ka mums ir jāatjaunina mūsu informācija. Atvērt config.js Nano un rediģējiet šo informāciju uz neko citu kā noklusējuma vērtību, pēc tam saglabājiet. Atkal palaižot serveri, jums vajadzētu redzēt šo:

ja tas, tad darbojas mezglu serveris

Lieliski. Pārbaudiet, vai mašīna ir pieejama no ārpasaules, ierakstot dinamisko DNS resursdatora vārdu un pievienojiet /ifttn / līdz URL beigām. Ja viss darbojas, ziņa “IFTTN - ja ir, tad mezgla versija 2.0.1 ir izveidota un darbojas!” tiks parādīts jūsu pārlūkprogrammā. Vēlreiz, lai šis skripts darbotos iesākumā, rediģējiet /etc/rc.local failu un pievienot:

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

Ja-tas-tad-mezgls darbojas caur spraudņiem - tiek piegādāti daži noklusējuma iestatījumi, taču tie mūs neinteresē. Tā vietā lejupielādējiet šo pielāgoto spraudni, kuru es jums uzrakstīju, izmantojot šīs komandas.

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

Jums būs jāinstalē arī pieprasīt modulis.

npm instalēšanas pieprasījums. 

Pēc tam restartējiet serveri. Spraudnis ir diezgan vienkāršs, taču nedaudz atšķirīgs no URL, kuru mēs līdz šim izmantojām. Šajā gadījumā es esmu izmantojis īpašo darbību “sayall”, kas nosūta ziņojumu uz katru Sonos ierīci.

pieprasīt (' http://localhost: 5005 / sayall / '+ params.message +' / en-gb ', funkcija (kļūda, atbilde, pamatteksts)

Ja jūs drīzāk varētu atlasīt noteiktas ierīces, aizstājiet šo līniju ar:

pieprasīt (' http://localhost: 5005 / '+ params.device +' / say / '+ params.message +' / en-gb ', funkcija (kļūda, atbilde, pamatteksts)

Pievienojiet vēl vienu līnijas parametru, ko sauc ierīce uz JSON pieprasījumu, kurā norādīts Sonos ierīces nosaukums.

Lai to pārbaudītu, es izmantoju IFTTT pogas “Do” pogu. Izveidojiet jaunu recepti, pārlūkojiet kanālus un atlasiet Makernieks kanāls.

darīt pogu

Izveidojiet jaunu recepti. Ievadiet URL, kuru iepriekš konfigurējāt no bezmaksas dinamiskā DNS pakalpojumu sniedzēja (ieskaitot /ifttn/ URL beigās. Neaizmirstiet šīs slīpsvītras). Izvēlieties POST pieprasīt, pieteikums / json saturu un ziņojuma pamattekstu, šādi aizstājot visus mainīgos pēc vajadzības ar iepriekš konfigurētajiem:

{"darbība": "sonos", "lietotājs": "YOURUSER", "pw": "YOURPASSWORD", "message": "Ienākošais ziņojums visiem: Vakariņas ir gatavas! Atkārtojiet. Pusdienas ir gatavas. Nogrieziet ēzeļus tūlīt augšstāvā. "}

Tagad man ir viegli pieejama poga, kas paziņos ziņojumu katrā mājas Sonos ierīcē. Jūs, protams, varat to savienot pārī ar jebkuru IFTTT kanālu, kuru vēlaties izveidot pielāgotu ziņojumu, izmantojot šī kanāla mainīgos. Jums pat vajadzētu spēt replicēt laika apstākļu ziņojumu no augšas, neizmantojot OpenHAB tagad, lai gan tas prasīja papildu pūles, lai instalētu citu serveri.

Piezīme: hakeri automātiski skenēs jūs. Tas notiek visu laiku, bet, ja skatāties žurnālus, tas var šķist satraucoši. Zemāk varat redzēt, kā kāds sistemātiski mēģina noskaidrot, vai ir pieejama kāda no PHPMyAdmin standarta saskarnēm. Kas viņi nebija. Neuztraucieties, ja redzat kaut ko līdzīgu. Tas ir interneta ekvivalents aukstiem zvana gadījuma tālruņu numuriem, lai redzētu, vai kāds tur atrodas.

tīmekļa servera uzlaušanas mēģinājumi

Ko jūs paziņosit?

Jums tagad vajadzētu būt instrumentiem un zināšanām, lai nepārtraukti peldētu visu māju ar balss paziņojumiem par visu, ko jūs varētu iedomāties. Kam vajadzīga mūzika? Jūsu vienīgais ierobežojums ir 350 VoiceRSS.org ikdienas pieprasījumi, taču tas ir apmēram viens ik pēc 4 minūtēm, tāpēc jums vajadzētu būt kārtībā.

Ko jūs ar to darīsit? Dalieties savās idejās vai IFTTT receptē komentāros!

Attēlu kredīti:kafija un sieviete Autors: S_Photo, izmantojot Shutterstock

Džeimsam ir mākslīgā intelekta bakalaura grāds, un viņš ir sertificēts CompTIA A + un Network +. Viņš ir galvenais MakeUseOf izstrādātājs un brīvo laiku pavada, spēlējot VR peintbolu un galda spēles. Kopš mazotnes viņš būvēja datorus.