Hirdetés

Bármely intelligens otthoni rajongó álma olyan otthon, amellyel beszélhet, de a valóság messze van tőle.

Az Amazon Echo például lehetővé teszi tetszőleges számú hangvezérelt funkció használatát, de a párbeszédet Önnek egy kérdéssel kell kezdeményeznie - nemcsak azt kérheti, hogy ő fontos üzenetet jelenítsen meg.

te tud csináld ezt egy Sonos rendszerrel és egy kis DIY Raspberry Pi varázslattal. Ma megmutatom neked, hogyan állíthat be hangos értesítéseket a Sonos rendszerén, bemutatva néhány hasznos IFTTT receptet, OpenHAB-integrációt és még sok minden mást, hogy kihasználhassa az értesítési funkciót.

Vegye figyelembe, hogy az OpenHAB számára elérhető natív Sonos-kötés, de ismert, hogy memóriaproblémákat okoz a hibás uPnP könyvtár miatt. Azt javaslom, hogy hagyja ki ezt egyelőre, és inkább használja az ebben az oktatóanyagban szereplő módszert.

A Raspberry linuxos Raspberry Pi rendszert futtató ideális eszköz ehhez az oktatóanyaghoz, de működnie kell minden futtatott linux-alapú otthoni kiszolgálón is. Ebben az esetben ugyanazt a Raspberry Pi-t használom, amely fut

instagram viewer
OpenHAB, a nyílt forráskódú otthoni automatizálási rendszer Az OpenHAB otthoni automatizálás első lépései a Raspberry Pi készülékenAz OpenHAB egy érett, nyílt forrású otthoni automatizálási platform, amely különféle hardverekkel működik és van Agnostic Protocol, azaz csatlakozhat szinte bármilyen otthoni automatizálási hardverhez a piacon Ma. Olvass tovább . Az oktatóanyag további része feltételezi, hogy ezt egy Raspberry Pi-en is futtatja, vagy pedig van egy helyi terminál ablaka nyitva az asztalon, vagy távolról bejelentkezett az SSH használatával A Raspberry Pi üzembe helyezése fej nélküli használathoz az SSH használatávalA Raspberry Pi elfogadja az SSH parancsokat, ha helyi hálózathoz csatlakozik (akár Ethernet, akár Wi-Fi hálózaton keresztül), lehetővé téve ezzel a könnyű beállítást. Az SSH előnyei meghaladják a napi átvilágítást ... Olvass tovább .

Szükséged lesz

  • Raspberry Pi 2 (a régebbi modelleknek működniük kell, de ellenőrizze, hogy vannak-e változások az utasításokban)
  • Legalább egy Sonos hangszóró (más audió rendszerek nem támogatottak, ez egy oktatóprogram csak a Sonos számára)
  • Ingyenes számla a VoiceRSS.org webhelyen [már nem érhető el]. Regisztráljon, majd keresse meg az API-kulcsot, amelyre később szükségünk lesz a hangüzenetek generálására.

Telepítse a legújabb csomópontot

Ellenőrizze, hogy a Node melyik verziója van:

csomópont -v. 

Vegye figyelembe, hogy a 6. változat nem támogatott. Ha rendelkezik a 6-os csomóponttal, akkor először eltávolítja azt, majd kövesse az alábbi utasításokat a v5.5 telepítéséhez.

Ha még nem rendelkezik v5 verzióval, vagy ha nem talált hibát, akkor a Node telepítéséhez kövesse ezeket az utasításokat. A következő parancs feltételezi a Raspberry Pi 2-t; régebbi modellek esetén használja armv6l ahelyett 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. 

Erősítse meg újra a következő gépeléssel:

csomópont -v

És látnia kell a v5.12 verziót (vagy bármi mást is, amit letöltöttek).

Ezután van néhány Node modul, amelyet telepíteni kell. A Node csomagkezelőt is szeretnénk.

sudo apt-get install npm. sudo npm install -g npm. sudo npm install -g node-gyp. 

Ez az előfeltétel az útból, most a szórakoztató dolgokra.

Sonos HTTP API

Az Sonos HTTP API létrehoz egy webszervert a helyi hálózaton, amely lehetővé teszi számunkra, hogy az URL-t ping-ra állítsuk be egy üzenettel, amelyet egy Sonos (és távolról vezérelheti, ha akarod, bár ez az útmutató csak a hangos értesítésre összpontosít vonatkozás).

git klón https://github.com/jishi/node-sonos-http-api.git Sonos. cd sonos. npm install --production. npm indulás. 

Ha üzenetet lát az ilyen és ilyen modulokról nem található, akkor csináljon egyet npm telepítés és a modul nevét, majd próbálja meg npm indulás újra. Ha hibákat tapasztal a „C ++ 11 fordítót igényel”, javítsa ki a következő parancsokkal:

sudo apt-get install gcc-4.8 g ++ - 4.8. sudo frissítés-alternatívák - telepítés / usr / bin / gccgcc / usr / bin / gcc-4.6 20. sudo frissítés-alternatívák --install / usr / bin / gcc gcc /usr/bin/gcc-4.8 50. sudo frissítés-alternatívák --install / usr / bin / g ++ g ++ /usr/bin/g++-4.6 20. sudo frissítés-alternatívák --install / usr / bin / g ++ g ++ /usr/bin/g++-4.8 50. 

Végül valami hasonlót kell látnia:

sonos-http-api működik

A kiszolgáló most fut, és kapcsolódik a Sonos-hoz. Ennek az API-nak a formátuma egyszerű:

http://[SERVER IP]: 5005 / [SZOBÁK NEVE] / [AKCIÓ]

Vagy konkrét példaként:

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

Az érdekli az „mondjuk” parancs, amelyet a következőképpen használunk:

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

Hibaüzenetet fog hallani arról, hogy regisztrálnia kell egy API-kulcsot a VoiceRSS.org webhelyen. Ezt már meg kellett volna tennie, ezért írja ki a következőket, és illessze be az API-kulcsba:

nano settings.json

{

"Voicerss": "YOURAPIKEY" }

(A fájl mentéséhez nyomja le a CTRL-X, Y billentyűt)

Indítsa újra a szervert, és ping ismét írja be az URL-t. Néhány másodperc múlva kellemes angol hangot kell hallania (bár az URL végét a következőre változtatja: en-us ha inkább). A Sonos HTTP API szerver újbóli elindításához, amikor a Pi újraindul:

sudo nano /etc/rc.local

Adjon hozzá egy sort a kijárat 0:

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

Mostantól lehetősége van hangüzenetek létrehozására a helyi hálózat bármely pontjáról, egyszerűen URL-cím pingolásával, tehát a lehetőségek ezen a ponton nyitottak. Ha azonban az ötletekért küzd, olvassa el néhány hasznos értesítést, amelyeket már felállítottam.

OpenHAB értesítések az eseményekről

Vegyünk egy egyszerű példát először: mozgásérzékelés. Ez a lámpák aktiválásának általános esete, de érdemes lehet egy hangos értesítést is, ha ez a mozgásérzékelő alacsony forgalmú területeken, vagy esetleg előrejelzés, hogy valaki jön a kertbe pálya.

"Kerti mozgás észlelve" szabály amikor a Kert_Motion tétel megváltozott, akkor var Karakterlánc üzenet = "Van látogatója" sendHttpGetRequest (" http://localhost: 5005 / konyha / mondjuk / "+ message.encode (" UTF-8 ") +" / hu-hu ") véget.

Látnia kell, hogyan integrálhatja ezeket az egyszerű hangüzeneteket bármelyik szabályába, de próbáljunk ki valami sokkal összetettebbet.

Napi időjárási jelentés az IFTTT-től az OpenHAB-ig a Sonos felé

Ebben a receptben a Sonos napi időjárási jelentést jelenít meg a kívánt időben.

Szüksége lesz a Saját. Az OpenHAB kötés engedélyezve van, mivel ez biztonságos kapcsolatot hoz létre a belső OpenHAB szerver és a külső IFTTT szolgáltatás között. Állítsa be ezt, ha még nem tette meg - utalhat az OpenHAB útmutatónk 1. része Az OpenHAB otthoni automatizálás első lépései a Raspberry Pi készülékenAz OpenHAB egy érett, nyílt forrású otthoni automatizálási platform, amely különféle hardverekkel működik és van Agnostic Protocol, azaz csatlakozhat szinte bármilyen otthoni automatizálási hardverhez a piacon Ma. Olvass tovább a teljes utasításokért, különben azt fogom feltételezni, hogy már beállította, és minden elemnél engedélyezve van a kitartás.

Ezután hozzon létre egy új karakterlánc elemet az OpenHAB telepítésében, amely tárolja a napi időjárási jelentést. Mielőtt ez látható lesz a Saját. OpenHAB csatorna, inicializálnunk kell egy alapértelmezett változóval. Ping az alábbi URL-t (változás raspberrypi.local az OpenHAB szerverre, vagy csak használja annak IP-címét, és Todays_Weather bármi, amit nevezte a Húrnak):

http://raspberrypi.local: 8080 / CMD? Todays_Weather = Sunny 

Jelentkezzen be a Saját oldalra. OpenHAB [Törött URL eltávolítva], és ellenőrizze a példány listát annak biztosítására, hogy a változó most exportálásra került.

az openhab cikk export-ellenőrzése

Visszatérve az IFTTT-hez, készítsen új receptet, és használja a Időjárási csatorna mint ravaszt a kívánt napszakban. Először be kell állítania a tartózkodási helyét, ha még soha nem használta.

Válassza a Saját lehetőséget. Műveletként az OpenHAB, és válassza a Todays_Weather változót a frissítéshez.

ifttt időjárási jelentés

Egyelőre csak válassza ki a következő fél órás helyet a teszteléshez - később frissítheti a receptet, ha tudja, hogy működik.

Valóban, a teszt idején (valójában egy kicsit korábban) a mai előrejelzést sikeresen frissítették.

2016-02-27 10: 28: 01.689 [HÍVÁS] [o.o.i.m.i. MyOpenHABServiceImpl] - Leginkább felhős ma kapott parancsot! A 7C magas és az 1C alacsony hőmérsékleten. Ismétlés. A körülmények ma többnyire felhősek lesznek, a 7 ° C és az alacsony hőmérsékleti 7 ° C lehet. a Todays_Weather tételhez. 2016-02-27 10: 28: 01.697 [HIBA] [o.o.i.m.i. MyOpenHABServiceImpl] - áruház (Todays_Weather), state = Ma nagyrészt felhős! A 7C magas és az 1C alacsony hőmérsékleten. Ismétlés. A körülmények ma többnyire felhősek lesznek, a 7 ° C és az alacsony hőmérsékleti 7 ° C lehet. 

Következő lépésként szükségünk van egy OpenHAB szabályra, hogy ezt a változót elküldjük a Sonos „mondjuk” URL-hez. A következőknek kell ezt megtenni:

szabály "Napi időjárási jelentés bejelentése" amikor a cikk a mai napig érkezett frissítés. majd sendHttpGetRequest (" http://localhost: 5005 / konyha / mondjuk / "+ Todays_Weather.state.toString.encode (" UTF-8 ") +" / hu-hu ") véget.

Ez elég egyszerű: a Todays_Weather változó frissítésekor (amely automatikusan minden nap 8 órakor lesz), ping az URL-t. Használjuk kódolnak ( „UTF-8”) Karakterlánc-funkció, hogy az IFTTT mondatát URL-ben való felhasználásra alkalmassá tegye. A rendszer ezen részének manuális teszteléséhez csak használja újra az OpenHAB HTTP API-t:

http://raspberrypi.local: 8080 / CMD? Todays_Weather = Felhős, húsgombóc valószínűséggel. 

Csatlakozás az IFTTT-hez OpenHAB nélkül, az If-This-then-Node használatával

Végül nézzük meg, hogyan lehet csatlakozni bármilyen IFTTT recepthez az OpenHAB közvetítő nélkül. Ehelyett telepítünk egy másik webszervert, és teszünk rá a nyílt internetre. Ez nem feltétlenül kockázat nélkül: bármilyen nyílt szerver biztonsági kockázatot jelent, de enyhítjük ezt azzal, hogy nem teljes kiszolgálói köteget futtatunk, csak egy kicsi specifikus szolgáltatás, amely csak bizonyos parancsokat fogad el biztonságos JSON adatcsomag formátumban (így nem lesznek SQL-befecskendezés vagy hitelesítési támadások lehetséges). Miután készen állunk, rendelkezésére lesz egy nyilvános URL, amelyre üzeneteket küldhet az IFTTT Maker csatornájáról.

Először állítsa be a sok közül egyet ingyenes dinamikus DNS-szolgáltatások Az 5 legjobb ingyenes dinamikus DNS szolgáltatóA DDNS szolgáltatás segít utazás közben csatlakozni otthoni számítógépéhez. Itt találhatók a legjobb ingyenes dinamikus DNS-szolgáltatók. Olvass tovább odakint - a DuckDNS-t ajánlom, különösen azért, mert egyszerű sorozatot ad utasítások a Raspberry Pi számára, amely lehetővé teszi az IP-cím automatikus frissítését. Kövesse ezeket és emlékezzen az URL-jére a következő lépésekhez. Lehet, hogy az útválasztónál be van építve egy dinamikus DNS-funkció is, ezért először ellenőrizze. Az én esetemben kaphatom a * .mynetgear.com Ingyenes URL URL, tehát ezt már felhasználtam.

Ezután keresse meg útválasztóját kikötői továbbítás Mi a kikötőszállítás és hogyan segíthet nekem? [MakeUseOf magyarázat]Sír egy kicsit belülről, amikor valaki azt mondja, hogy van egy port-továbbítási probléma, és miért nem fog működni a fényes új alkalmazásod? Xboxod nem engedi, hogy játékot játsszon, a torrent letöltések megtagadják ... Olvass tovább konfigurációs oldal; itt fogjuk megmondani, mit kell tenni a bejövő kérésekhez. Az összes HTTP-kérést (80-as port) továbbítsa a Raspberry Pi szerver 1337-es portjára. Feltételezem, hogy már rendelkezik IP-címmel a Raspberry Pi készülékéhez - ha még nem tette meg, ellenőrizze az útválasztó konfigurációját oldal a fenntartott IP-k számára, amíg ott van, mivel nem változtatja meg a jövő héten, és hogy a szerver hirtelen leálljon dolgozó.

router config port továbbítás

Most telepítse az utolsó szerverszoftvert.

https://github.com/sebauer/if-this-then-node.git. CD, ha-ez-akkor-csomópont / npm telepítés. node server.js.

A következőt kell látnia.

ha ez akkor csomópont alapértelmezett értékek hiba

Ez rendben van, ez azt jelenti, hogy frissítenünk kell a részleteket. Nyit config.js a Nano alkalmazásban, és szerkessze ezeket a részleteket az alapértelmezett érték kivételével, majd mentse. Amikor újra futtatja a szervert, ezt látnia kell:

ha ez, akkor a csomópont-kiszolgáló fut

Nagy. Tesztelje, hogy a számítógépe hozzáférhető-e a külvilágtól, ha beírja a dinamikus DNS-gazdanevet, és fűzze hozzá /ifttn / az URL végére. Ha minden működik, akkor az üzenet “IFTTN - ha-ez-akkor-csomópont 2.0.1 verzió kész és fut!” jelenik meg a böngészőben. Ismét annak érdekében, hogy ez a szkript elinduljon, futtassa a /etc/rc.local fájl hozzáadása és hozzáadása:

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

Ha-E-then-csomópont Beépülő modulokon keresztül működik - van néhány alapértelmezett, de nem érdekel minket. Ehelyett töltse le az egyéni bővítményt, amelyet neked írtam a következő parancsokkal.

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

Telepítenie kell a kérés modult.

npm telepítési igény. 

Ezután indítsa újra a szervert. A bővítmény meglehetősen egyszerű, de kissé különbözik az eddig használt URL-től. Ebben az esetben a „sayall” speciális műveletet használtam, amely minden Sonos készülékhez elküldi az üzenetet.

kérés(' http://localhost: 5005 / mondj / '+ params.message +' / en-gb ', funkció (hiba, válasz, test)

Ha inkább bizonyos eszközöket célozhat meg, cserélje ki ezt a sort a következőre:

kérés(' http://localhost: 5005 / '+ params.device +' / say / '+ params.message +' / en-gb ', funkció (hiba, válasz, test)

Adjon hozzá egy újabb vonali paramétert eszköz az alábbi JSON-kérelemhez, amelyben meg kell adni a Sonos eszköz nevét.

Ennek kipróbálására az IFTTT „Do” gomb alkalmazást használom. Készítsen új receptet, keresse meg a csatornákat, és válassza a Készítő csatorna.

do gombra

Hozzon létre egy új receptet. Írja be az ingyenes dinamikus DNS-szolgáltatótól korábban konfigurált URL-t (beleértve a /ifttn/ az URL végén. Ne felejtsd el ezeket a perjelöket). választ POST kérés, application / json az üzenet tartalma és szövege az alábbiak szerint, szükség szerint helyettesítve az összes változót a korábban konfigurált változókkal:

{"action": "sonos", "user": "YOURUSER", "pw": "YOURPASSWORD", "message": "Bejövő üzenet mindenkinek: A vacsora kész! Ismétlés. Kész a vacsora. Vigye a szamárát emeletre. "}

Most már van egy könnyen elérhető gombom, amely a ház minden Sonos eszközén megjeleníti az üzenetet. Természetesen párosíthatja ezt bármilyen IFTTT csatornával, amelyhez egyéni üzenetet szeretne készíteni az adott csatorna változóinak felhasználásával. Még felül is megismételheti az időjárási jelentést az OpenHAB használata nélkül, bár ehhez külön erőfeszítéseket igényelt egy másik szerver telepítése.

Megjegyzés: a hackerek automatikusan átkutatják Önt. Ez állandóan megtörténik, de ha naplókat néz, riasztónak tűnhet. Az alábbiakban láthatja, hogy valaki szisztematikusan megkísérelte megbizonyosodni arról, hogy a PHPMyAdmin szabványos interfészei elérhetőek-e. Amelyek nem voltak. Ne aggódjon, ha hasonlót lát. Ez a véletlenszerűen hívott, véletlenszerű telefonszámok internetes egyenértékű értéke, hogy megnézhesse, van-e ott valaki.

webkiszolgáló feltörési kísérletei

Mit fogsz hirdetni?

Az eszközöknek és a tudásuknak rendelkeznie kell az egész ház folyamatos fürdésével, hangos értesítésekkel mindazról, amire gondolhat. Kinek van szüksége zenére? Az egyetlen korlátozásod a VoiceRSS.org napi 350 igénylése - de ez kb. Négy percenként, tehát rendben kell lennie.

Szóval mit fogsz csinálni ezzel? Ossza meg ötleteit vagy az IFTTT receptjét a megjegyzésekben!

Kép kreditek:kávé és a nő S_Photo készítette Shutterstockon keresztül

James rendelkezik mesterséges intelligencia BSc-vel, CompTIA A + és Network + tanúsítvánnyal rendelkezik. A MakeUseOf vezető fejlesztője, és szabadidejét VR paintballon és társasjátékokon játszik. Gyerekkora óta épít PC-ket.