Mainos
Jokaisen älykkään kodin harrastajan unelma on koti, josta voi puhua, mutta todellisuus on kaukana siitä.
Esimerkiksi Amazon Echo sallii sinun käyttää mitä tahansa ääniohjattuja ominaisuuksia, mutta sinun on aloitettava valintaikkuna kysymyksellä - et voi vain antaa hänen ilmoittaa tärkeästä viestistä.
Sinä voida tee tämä Sonos-järjestelmän avulla ja vähän DIY Raspberry Pi -maagiaa. Tänään esittelen sinulle, kuinka voit määrittää ääni-ilmoitukset Sonos-järjestelmällesi ottamalla käyttöön muutama hyödyllinen IFTTT-resepti, OpenHAB-integraatio ja paljon muuta ilmoitusominaisuuden hyödyntämiseksi.
Huomaa, että OpenHAB: lle on saatavana natiivi Sonos-sidos, mutta sen tiedetään aiheuttavan virheellisiä uPnP-kirjastoja johtuvia muistiongelmia. Ehdotan ohittaa tämä toistaiseksi ja käyttää sen sijaan tässä opetusohjelmassa olevaa menetelmää.
Raspberry Pi, joka käyttää Raspian linux -sovellusta, on ihanteellinen tähän opetusohjelmaan, mutta sen pitäisi toimia myös kaikissa käyttämissäsi linux-pohjaisissa kotipalvelimissa. Käytän tässä tapauksessa samaa Raspberry Pi: tä, joka toimii
OpenHAB, avoimen lähdekoodin kotiautomaatiojärjestelmä Aloittaminen OpenHAB-kotiautomaatio-ohjelmalla Raspberry Pi: lläOpenHAB on kypsä, avoimen lähdekoodin kotiautomaatioalusta, joka toimii monella eri laitteistolla ja on Agnostic Protocol, mikä tarkoittaa, että se voi muodostaa yhteyden melkein mihin tahansa markkinoiden kotiautomaatiolaitteistoon tänään. Lue lisää . Tämän opetusohjelman lopussa oletetaan, että käytät tätä myös Raspberry Pi: llä ja sinulla on joko paikallinen pääteikkuna avoinna työpöydällä tai kirjautunut sisään etänä SSH: n avulla Vadelma Pi: n asentaminen päättömään käyttöön SSH: n avullaRaspberry Pi voi hyväksyä SSH-komennot, kun ne on kytketty lähiverkkoon (joko Ethernet- tai Wi-Fi-yhteyden kautta), jolloin voit helposti asettaa sen. SSH: n hyödyt ylittävät päivittäisen seulonnan järkyttämisen ... Lue lisää .Sinä tulet tarvitsemaan
- Vadelma Pi 2 (vanhempien mallien pitäisi toimia, mutta tarkista, onko ohjeissa erityisiä muutoksia)
- Ainakin yksi Sonos-kaiutin (muita äänijärjestelmiä ei tueta, tämä on vain Sonos-opetusohjelma)
- Ilmainen tili VoiceRSS.org-sivustossa [Ei enää saatavilla]. Rekisteröidy sitten etsi API-avaimesi, joita tarvitsemme myöhemmin ääniviestien luomiseksi.
Asenna Solmu viimeisin
Tarkista, mikä solmun versio sinulla on kirjoittamalla:
solmu -v.
Huomaa, että versiota 6 ei tueta. Jos sinulla on Solmu 6, sinun on ensin poistettava se ja asennettava sitten v5.5 noudattamalla alla olevia ohjeita.
Jos sinulla ei ole v5: tä tai jos virhe ei löytynyt, asenna solmu noudattamalla näitä ohjeita. Seuraava komento olettaa Raspberry Pi 2; vanhemmille malleille, käytä armv6l sijasta 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 / paikallinen.
Vahvista uudelleen kirjoittamalla:
solmu -v
Ja sinun pitäisi nähdä v5.12 (tai mikä tahansa viimeisin, jonka latasit).
Seuraavaksi meillä on asennettavia Node-moduuleja. Haluamme myös Solmupaketinhallinnan.
sudo apt-get install npm. sudo npm asenna -g npm. sudo npm install -g node-gyp.
Se on edellytys pois tieltä, nyt hauskoihin juttuihin.
Sonos HTTP API
Sonos HTTP API luo paikalliselle verkolle verkkopalvelimen, jonka avulla voimme pingittää URL-osoitteen viestillä, joka ilmoitetaan Sonos (ja hallita sitä etäyhteydellä, jos haluat), vaikka tämä opetusohjelma keskittyy vain ääniviesteihin näkökohta).
git klooni https://github.com/jishi/node-sonos-http-api.git Sonos. cd sonos. npm install --production. npm alku.
Jos näet viestiä sellaisista ja sellaisista moduuleista, joita ei löydy, tee vain toinen npm asenna ja moduulin nimi, kokeile sitten npm alku uudelleen. Jos sinulla on virheitä, jotka liittyvät "Vaatii C ++ 11 -kääntäjän", korjaa seuraavilla komennoilla:
sudo apt-get install gcc-4.8 g ++ - 4.8. sudo päivitysvaihtoehdot - asenna / usr / bin / gccgcc / usr / bin / gcc-4.6 20. sudo update-alternatives - asenna / usr / bin / gcc gcc /usr/bin/gcc-4.8 50. sudo update-alternatives - asenna / usr / bin / g ++ g ++ /usr/bin/g++-4.6 20. sudo update-alternatives - asenna / usr / bin / g ++ g ++ /usr/bin/g++-4.8 50.
Lopulta sinun pitäisi nähdä jotain tällaista:
Palvelin on nyt käynnissä, ja se on yhteydessä Sonosiin. Tämän sovellusliittymän muoto on helppo:
http://[SERVER IP]: 5005 / [Huoneen nimi] / [toiminta]
Tai erityisenä esimerkkinä:
http://192.168.1.99:5005/kitchen/playlist/chillout
Kiinnostunut toiminta on sano-komento, jota käytetään seuraavasti:
http://192.168.1.99:5005/kitchen/say/make%20use%20of%20is%20awesome/en-gb
Kuulet virheilmoituksen rekisteröimisestä API-avaimeen osoitteessa VoiceRSS.org. Sinun olisi jo pitänyt tehdä tämä, joten kirjoita seuraava ja liitä sovellusliittymäavaimeesi sopivaksi:
nano-asetukset.json
{
"Voicerss": "YOURAPIKEY" }
(Hit CTRL-X, Y, tiedoston tallentamiseksi)
Käynnistä palvelin uudelleen ja ping URL uudelleen. Muutaman sekunnin kuluttua sinun pitäisi kuulla ihastuttava englanninkielinen ääni (vaikka muutat URL-osoitteen lopun kohtaan en-us jos haluat). Sonosin HTTP API -palvelimen käynnistäminen uudelleen, kun Pi käynnistetään uudelleen:
sudo nano /etc/rc.local
Lisää rivi ennen poistu 0:
sudo node /home/pi/sonos/server.js dev / null &
Sinulla on nyt mahdollisuus luoda ääniviesti mistä tahansa paikallisen verkon kautta yksinkertaisesti pingittamalla URL-osoite, joten mahdollisuudet ovat tässä vaiheessa auki. Jos kamppailet kuitenkin ideoiden puolesta, lue muutamia hyödyllisiä ilmoituksia, jotka olen jo asettanut.
OpenHAB-ilmoitukset tapahtumista
Otetaan ensin yksinkertainen esimerkki: liiketunnistus. Tämä on yleinen käyttötapa valojen aktivoimiseksi, mutta haluat ehkä myös äänimerkinnän, jos se on liiketunnistin vähäliikenteisellä alueella tai ehkä eteenpäin varoituksena siitä, että joku tulee puutarhaan polku.
sääntö "puutarhaliike havaittu" kun Kohde Garden_Motion muuttui, sitten var String message = "Sinulla on kävijä" sendHttpGetRequest (" http://localhost: 5005 / keittiö / sanoa / "+ message.encode (" UTF-8 ") +" / fi-fi ") end.
Sinun pitäisi nähdä, kuinka voit integroida nämä yksinkertaiset äänimerkinnät mihin tahansa sääntöihisi, mutta kokeillaan jotain hieman monimutkaisempaa.
Päivittäinen sääraportti IFTTT: stä OpenHAB: lle Sonosille
Tässä reseptissä Sonos ilmoittaa päivittäisen säätiedotuksen haluamallasi hetkellä.
Tarvitset Minun. OpenHAB-sidonta käytössä, koska tämä luo turvallisen yhteyden sisäisen OpenHAB-palvelimen ja ulkoisen IFTTT-palvelun välille. Asenna tämä, jos et vielä ole - voit viitata osa 1 OpenHAB-oppaasta Aloittaminen OpenHAB-kotiautomaatio-ohjelmalla Raspberry Pi: lläOpenHAB on kypsä, avoimen lähdekoodin kotiautomaatioalusta, joka toimii monella eri laitteistolla ja on Agnostic Protocol, mikä tarkoittaa, että se voi muodostaa yhteyden melkein mihin tahansa markkinoiden kotiautomaatiolaitteistoon tänään. Lue lisää täydelliset ohjeet, muuten oletan, että olet jo asentanut sen, kun pysyvyys on käytössä kaikille tuotteille.
Luo seuraavaksi uusi merkkijono OpenHAB-asennukseen, joka tallentaa päivittäisen säätiedotuksen. Ennen kuin tämä on näkyvissä Omassa. OpenHAB-kanava, meidän on alustettava se jollain oletusmuuttujalla. Ping seuraava URL (muuta raspberrypi.local OpenHAB-palvelimellesi tai käytä vain sen IP-osoitetta ja Todays_Weather mihin nimit merkkijonon):
http://raspberrypi.local: 8080 / CMD? Todays_Weather = pilvistä
Kirjaudu sisään omaan. OpenHAB [Broken URL Poistettu] ja tarkista Tuotteet luettelo varmistaaksesi, että muuttuja on nyt viety.
Palaa IFTTT: hen, luo uusi resepti ja käytä Sääkanava laukaisijana haluamallasi vuorokaudenaikalla. Sinun on ensin asetettava sijaintisi, jos et ole koskaan käyttänyt sitä aiemmin.
Valitse Oma. OpenHAB-toiminto ja valitse päivitysmuuttujana Todays_Weather.
Valitse toistaiseksi vain seuraava puolen tunnin paikka testausta varten - voit päivittää reseptin myöhemmin, kun tiedät sen toimivan.
Tosiaankin, testiaikana (itse asiassa vähän ennen) sain tänään ennusteen päivityksen onnistuneesti.
2016-02-27 10: 28: 01.689 [DEBUG] [o.o.i.m.i. MyOpenHABServiceImpl] - Vastaanotettu komento Pilvistä tänään! Korkealla 7C ja alhaisella 1C. Toistaa. Sääolosuhteet ovat tänään pilvistä, korkein 7 ° C ja matala 1 °. tuotteelle Todays_Weather. 2016-02-27 10: 28: 01.697 [DEBUG] [o.o.i.m.i. MyOpenHABServiceImpl] - myymälä (Todays_Weather), tila = Enimmäkseen pilvistä tänään! Korkealla 7C ja alhaisella 1C. Toistaa. Sääolosuhteet ovat tänään pilvistä, korkein 7 ° C ja matala 1 °.
Seuraavaksi tarvitsemme OpenHAB-säännön tämän muuttujan lähettämiseksi Sonosin sano-URL-osoitteeseen. Seuraavien tulisi tehdä se:
sääntö "Ilmoita päivittäinen säätiedotus" kun Tuote Todays_Weather sai päivityksen. lähetä sittenHttpGetRequest (" http://localhost: 5005 / keittiö / sanoa / "+ Todays_Weather.state.toString.encode (" UTF-8 ") +" / fi-fi ") end.
Tämä on tarpeeksi yksinkertainen: aina, kun Todays_Weather-muuttuja päivitetään (mikä se tulee olemaan automaattisesti kello 8.00 päivittäin), ping URL. Käytämme koodata ( ”UTF-8”) Merkkijono-funktio, joka tekee lauseesta IFTTT: n sopivan käytettäväksi URL-osoitteessa. Testaa tämä järjestelmän osa manuaalisesti vain käyttämällä OpenHAB HTTP -sovellusliittymää uudelleen:
http://raspberrypi.local: 8080 / CMD? Todays_Weather = Pilvistä, mahdollisesti lihapullia.
Yhdistä IFTTT: hen ilman OpenHAB: ta käyttämällä If-This-Sit-Solmua
Katsotaan lopuksi, kuinka muodostetaan yhteys mistä tahansa IFTTT-resepistä ilman OpenHAB-välittäjää. Sen sijaan asennamme toisen verkkopalvelimen ja paljastamme sen avoimeen Internetiin. Tämä ei ole vaaraa: kaikenlainen avoin palvelin on tietoturvariski, mutta lieventämme tätä estämällä suorittamasta täydellistä palvelinpinoa, vain pientä tietty palvelu, joka hyväksyy vain tietyt komennot turvallisessa JSON-datapakettimuodossa (joten SQL-injektiota tai todennushyökkäyksiä ei tule mahdollista). Kun olemme valmiita, sinulla on julkinen URL-osoite, johon voit lähettää viestejä IFTTT Maker -kanavalta.
Aloita asettamalla yksi monista ilmaiset dynaamiset DNS-palvelut 5 parasta ilmaista dynaamista DNS-palveluntarjoajaaDDNS-palvelu voi auttaa sinua muodostamaan yhteyden kotitietokoneeseesi liikkeellä ollessa. Tässä ovat parhaat ilmaiset dynaamiset DNS-tarjoajat, jotka kannattaa harkita. Lue lisää siellä - suosittelen DuckDNS: ää, erityisesti koska se tarjoaa yksinkertaisen sarjan ohjeet Raspberry Pi: lle, jonka avulla se voi päivittää IP-osoitteesi automaattisesti. Seuraa näitä ja muista URL-osoite seuraaviin vaiheisiin. Reitittimessäsi voi olla myös sisäänrakennettu dynaaminen DNS-toiminto, joten tarkista ensin. Minun tapauksessani saan * .mynetgear.com URL ilmaiseksi, joten olen käyttänyt sitä.
Seuraavaksi löydät reitittimesi portin uudelleenohjaus Mikä on sataman huolinta ja miten se voi auttaa minua? [MakeUseOf selittää]Itketkö vähän sisälläsi, kun joku kertoo sinulle olevan satamansiirto-ongelma, ja siksi kiiltävä uusi sovelluksesi ei toimi? Xboxisi ei anna sinun pelata pelejä, torrent-latauksesi kieltäytyvät ... Lue lisää kokoonpanosivu; tässä kerromme sille, mitä tehdä saapuvien pyyntöjen kanssa. Lähetä edelleen kaikki HTTP-pyynnöt (portti 80) porttiin 1337 Raspberry Pi-palvelimella. Oletan, että sinulla on jo varattu IP-osoite Raspberry Pi -laitteellesi - jos et ole, tarkista reitittimen kokoonpano sivu varattuihin IP-osoitteisiin, kun olet siellä, koska et muuta sitä ensi viikolla ja palvelimen yhtäkkiä lopettavan työ.
Nyt asentaa viimeinen vähän palvelinohjelmistoa.
https://github.com/sebauer/if-this-then-node.git. cd jos-tämä-sitten-solmu / npm asenna. solmu server.js.
Sinun pitäisi nähdä seuraava.
Se on ok, se tarkoittaa vain, että meidän on päivitettävä tietomme. Avata config.js Nanossa ja muokkaa näitä tietoja muihin kuin oletusarvoihin, tallenna sitten. Kun suoritat palvelimen uudelleen, sinun pitäisi nähdä tämä:
Loistava. Testaa, että koneesi on tavoitettavissa ulkomaailmasta kirjoittamalla dynaaminen DNS-isäntänimi ja lisää /ifttn / URL-osoitteen loppuun. Jos kaikki toimii, viesti "IFTTN - jos-tämä-sitten-solmun versio 2.0.1 on käytössä ja käynnissä!" näkyy selaimessa. Jotta tämä skripti toimisi käynnistyksen yhteydessä, muokkaa /etc/rc.local arkistoi ja lisää:
sudo node /home/pi/if-this-then-node/server.js dev / null &
Jos-Tämä-Sitten-Node toimii laajennusten kautta - mukana on muutama oletusasetus, mutta meitä ei kiinnosta. Lataa sen sijaan tämä muokattu laajennus, jonka olen kirjoittanut sinulle seuraavilla komennoilla.
CD-liitännäiset. wget https://gist.githubusercontent.com/jamesabruce/4af8db24ba3452b94877/raw/d11c1cff3aa44dbb6a738eeb15202f3db461de75/sonos.js
Sinun on myös asennettava pyyntö moduuli.
npm asennuspyyntö.
Käynnistä sitten palvelin uudelleen. Laajennus on melko yksinkertainen, mutta hiukan erilainen kuin tähän mennessä käytetty URL-osoite. Tässä tapauksessa olen käyttänyt erityistä ”sayall” -toimintoa, joka lähettää viestin jokaiselle Sonos-laitteelle.
pyyntö(' http://localhost: 5005 / sayall / '+ params.message +' / en-gb ', toiminto (virhe, vastaus, runko)
Jos haluat mieluummin kohdistaa tiettyihin laitteisiin, korvaa tämä rivi seuraavalla:
pyyntö(' http://localhost: 5005 / '+ params.device +' / say / '+ params.message +' / en-gb ', toiminto (virhe, vastaus, runko)
Lisää toinen riviparametri nimeltään laite alla olevaan JSON-pyyntöön, jossa määritetään Sonos-laitteen nimi.
Tämän testaamiseksi käytän IFTTT ”Tee” -painiketta. Luo uusi resepti, selaa kanavia ja valitse Luoja kanava.
Luo uusi resepti. Kirjoita aiemmin ilmaisella dynaamisella DNS-palveluntarjoajalta määrittämäsi URL (mukaan lukien /ifttn/ URL-osoitteen lopussa. Älä unohda nuoleja). valita LÄHETTÄÄ pyyntö, application / json sisältö ja viestin runko seuraavasti, korvaa tarvittaessa kaikki muuttujat aiemmin määrittämilläsi muuttujilla:
{"action": "sonos", "user": "YOURUSER", "pw": "YOURPASSWORD", "message": "Saapuva viesti kaikille: Illallinen on valmis! Toistaa. Päivällinen on valmis. Ota aasisi yläkertaan nyt. "}
Nyt minulla on helposti saatavilla oleva painike, joka ilmoittaa viestin jokaisessa talon Sonos-laitteessa. Voit tietysti yhdistää tämän minkä tahansa IFTTT-kanavan kanssa, jonka haluat tehdä mukautetun viestin kyseisen kanavan muuttujien avulla. Sinun pitäisi jopa pystyä replikoimaan säätiedot ylhäältä käyttämättä OpenHAB: ta nyt, vaikkakin se vaati ylimääräistä vaivaa uuden palvelimen asentamiseksi.
Huomaa: hakkerit tarkistavat sinut automaattisesti. Näin tapahtuu koko ajan, mutta jos katselet lokit, se voi tuntua hälyttävältä. Alla näet jonkun yrittäneen järjestelmällisesti selvittää, oliko jokin tavanomaisista PHPMyAdmin-rajapinnoista käytettävissä. Mitä he eivät olleet. Älä huolestu, jos näet jotain vastaavaa. Se on Internet-vastaus kylmäsoittoihin satunnaisiin puhelinnumeroihin nähdäksesi onko täällä ketään.
Mitä ilmoitat?
Sinulla pitäisi nyt olla työkalut ja kyky taitaa uida koko talosi jatkuvasti ääni-ilmoituksina kaikesta mitä voisit ajatella. Kuka tarvitsee musiikkia? Ainoa rajoituksesi on 350 VoiceRSS.orgin päivittäistä pyyntöä - mutta se on noin yksi joka 4. minuutti, joten sinun pitäisi olla kunnossa.
Joten mitä teet tällä? Jaa ideasi tai IFTTT-resepti kommenteissasi!
Kuvapisteet:kahvia ja nainen kirjoittanut S_Photo Shutterstockin kautta
Jamesilla on teknisen älykunnan kandidaatin tutkinto ja hän on CompTIA A + ja Network + -sertifioitu. Hän on MakeUseOfin johtava kehittäjä ja viettää vapaa-aikansa pelaamalla VR-paintballia ja lautapelejä. Hän on rakennettu tietokoneita lapsuudestaan asti.