Hirdetés

A HomeKit végre vadonban van, lehetővé téve a hangvezérlést a Siri-n keresztül egy maroknyi intelligens otthoni eszköz számára.

Sajnos kifejezetten egy maroknyi kifejezésre gondolok - bármi, amit már vásárolt, valószínűleg nem kompatibilis. A protokollt azonban már átalakították, és a HomeKit API nyílt forráskódú emulátorával elérhető: vagy egyszerű angol nyelven, most már létrehozhat „hamis” HomeKit eszközöket, és a Siri ugyanúgy irányítja őket, mint bármely más hivatalos HomeKit tartozék.

Ma hozzunk létre egy Wi-Fi-vel vezérelhető fényt, amelyet a Siri-vel vezérelhetünk. Itt egy bemutató.

Itt van, amire szüksége van:

  • Raspberry Pi (RPi2-t használtam, kis eltérés van a telepített csomópont-verziókban, tekintettel a frissített ARM architektúrára - lásd később a megjegyzéseket).
  • MQTT bróker telepítve a Raspberry Pi-re. Lásd a „Szúnyog telepítése a Pi-re” című szakaszt OpenHAB Guide 2. rész OpenHAB kezdő útmutató, 2. rész: ZWave, MQTT, szabályok és diagramokAz OpenHAB, a nyílt forráskódú otthoni automatizálási szoftver messze meghaladja a piacon lévő más otthoni automatizálási rendszerek képességeit - de a telepítés nem könnyű. Valójában egyenesen frusztráló lehet. Olvass tovább . Nem kell kifejezetten a Pi-re telepítenie - akár felhő alapú MQTT-kiszolgálót is használhat, de mivel ehhez egyébként szükség van egy Pi-re ehhez az oktatóanyaghoz, ez kényelmes.
  • NodeMCU v2 (Arduino kompatibilis)
  • Neopixel LED-ek (4 pixelt javasolnék a teszteléshez, akkor hozzáadhat egy külső tápegységet, és hozzáadhat annyi, amennyit csak akar)

A HomeKit híd telepítése

Telepítünk egy úgynevezett NodeJS alkalmazást HAP-NodeJS a Raspberry Pi-hez: ez hidat képez a HomeKit kérések és a Wi-Fi eszközök között. Ezt a hídot most egy tartozékkal konfiguráljuk, de hozzáadhat annyi, amennyit csak akar.

Ezt ténylegesen telepítem az OpenHAB-t futtató meglévő otthoni szerveremre - remélem, hogy a kettőt egymással összekapcsolom későbbi időpontban, de most tudd, hogy együtt élhetnek ugyanazon a Málna Pi-n. Ha ugyanazt csinálod, csak be ügy, készítsen klón biztonsági másolatot a jelenlegi Pi SD-kártyáról Könnyen klónozhatja SD-kártyáját a problémamentes Raspberry Pi számítógépesítéshezFüggetlenül attól, hogy van egy vagy több SD-kártyája, egy dolog, amire szükséged lesz - a kártyák biztonsági mentésének képessége, hogy elkerüljék azokat a problémákat, amelyek akkor merülnek fel, ha a Raspberry Pi nem indul. Olvass tovább . Ha minden rosszul fordul elő, visszaállíthatja ezt.

Kezdje egy teljes frissítéssel a terminálról, vagy egy SSH munkamenet 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 .

sudo apt-get frissítés. sudo apt-get upgrade. 

Lehet, hogy kétszer kell megtennie ezeket, ha már egy ideje volt.

Telepítse most néhány alapcsomagot, amelyre szükségünk lesz:

sudo apt-get install npm git-core libnss-mdns libavahi-compat-libdnssd-dev. 

Ezután telepíteni fogjuk a NodeJS legújabb verzióját. Kísértés lehet erre apt-get, de ne - ez a verzió most nagyon régi és nem fog működni. Ehelyett látogasson el nodejs.org, keresse meg a download / release / legújabb v5.x.0 / könyvtárba, és ellenőrizze, hogy mi a legújabb verzió linkje. Amit keresel linux-armv7l a Raspberry Pi 2 esetében, vagy linuxarmv6l az eredeti RPi modellekhez. Ezután az URL-ek és a könyvtárnevek szükség szerinti beállításával töltse le és telepítse a következő parancsok segítségével.

wget https://nodejs.org/download/release/latest-v5.x.0/node-v5.5.0-linux-armv7l.tar.gz. tar -xvf node-v5.5.0-linux-armv7l.tar.gz. cd node-v5.5.0-linux-armv7l. sudo cp -R * / usr / local. 

Erősítse meg gépeléssel

csomópont verzió. 

És látnia kell a v5.5-et (vagy bármi mást is, amit letöltöttek).

Ezután van néhány Node modul, amelyet telepíteni kell.

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

Ebben az első parancsban a Node Package Manager (npm) használatával telepítjük önmagának egy újabb verziót. Okos!

Most, hogy töltse le a HomeKit emulátort, az úgynevezett HAP-NodeJS:

git klón https://github.com/KhaosT/HAP-NodeJS.git. cd HAP-NodeJS. npm újjáépítés. sudo npm install node-persist. sudo npm install srp. 

Ezen a ponton futtattam ezt a hibát: “#error A / NAN / v8 csomópontnak ez a verziója C ++ 11 fordítót igényel“. Ha ez történik veled, telepítsen egy újabb C ++ fordítót 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. 

Most neked ne legyen probléma. Folytassa az egyes parancsok futtatását:

sudo npm install srp. sudo npm install mdns --unsafe-perm. sudo npm install debug. sudo npm install ed25519 --unsafe-perm. sudo npm install görbe25519 - nem biztonságos. 

Ennek mindennek lennie. Próbálkozzon az emulátor futtatásával:

csomópont Core.js. 

Ha hibákat tapasztal, mondván, hogy nem talál ilyen és ilyen modult, akkor használja a sudo npm install parancsot újra, és rögzítse a hiányzó modul nevét. Ha feltételezzük, hogy minden rendben van, láthatunk néhány figyelmeztetést, és a HomeKit híd futni fog. Így néz ki a siker:

hap-nodejs telepítve

Azonnal láthatja, hogy már létrehozott egy 6 hamis eszköz sorozatát. A későbbiekben ezeket fogjuk használni a saját Wi-Fi világításunk kiindulási pontjaként, de ezeket csak most teszteljük. További hibakeresési információkat is láthat, ha a kiszolgálót a következővel indítja:

DEBUG = * Core.js csomópont

Most ugorj át egy Siri futtatására képes Apple-eszközre. Az Apple kíváncsi, hogy a regisztrált fejlesztők kivételével nem biztosít a készlet HomeKit alkalmazását, ezért töltse le ingyen Elgato Eve app, egy HomeKit felügyeleti alkalmazás, amely lehetővé teszi (akár nem Elgato) eszközök felvételét a HomeKit hálózatába.

Az alkalmazás első indításakor meg kell neveznie otthonát, menjen tovább, és járjon át rajta. Ezután válassza a „Kiegészítő hozzáadása” lehetőséget. Hagyja figyelmen kívül az üzenetet, hogy közel áll hozzá!

elgato előestéjén 1

Azt fogja mondani, hogy keressen egyedülálló „HomeKit beállítási kódot”. Ne hagyja ezt figyelmen kívül, és nyomja meg az „Hozzáadás a [házad neve]” -hez.

Arról is értesül, hogy az eszköz nincs tanúsítvánnyal. Valójában nem az. Egyébként menj tovább. Amikor eljut a képernyőre, és kiegészítő kódot kér,…

elgato előestéje 2

Válassza ki a kód manuális megadását, és írja be a következőt:

031-45-154

Ez megtalálható / megváltoztatható a Light_accessory.js fájl, de erről később bővebben. Adja hozzá ezt a kiegészítőt az alapértelmezett szobához, hívja Hamis fény, és folytassa a párbeszédablakokat az ikon kiválasztásához stb.

Végül ugorj vissza az SSH munkamenetre, ahol fut a HAP-NodeJS. Lehet, hogy már látott egy üzenetet, amelyben szól: „Mi vagyunk?” - ez az Elgato alkalmazás lekérdezése a fény állapotáról. Nyissa ki a Siri-t, és mondja meg neki, hogy kapcsolja be a hamis fényt, majd próbálja újra kikapcsolni. Remélhetőleg néhány hibakeresési üzenetet fog látni a HAP-NodeJS-től, jelezve, hogy megkapta a parancsokat.

Mi vagyunk? Nem. Bekapcsolja a lámpát! A fény kikapcsolása!

Fantasztikus, hogy az első lépés befejeződött. Most valódi fényre van szükségünk, mielőtt visszatérnénk a híd újbóli konfigurálásához.

Építsen egy Wi-Fi fényt

Ennek a lépésnek a hardver oldala meglepően egyszerű, ha mindössze négy Neopixellel kezdjük, mivel ezeket közvetlenül a NodeMCU dev kártyáról és az USB csatlakozóról tudjuk táplálni. Ha hosszabb szalaggal rendelkezik, ne aggódjon - ezt meghatároztuk a szoftverben, így a többi nem fog bekapcsolni.

Csatlakoztassa a piros tápkábelt egy Neopixel-szálból a VIN-tűhöz, a kék földet a GND-hez, és a zöld jelkábelt a NodeMCU D2 jelű csapjához. Légy nagyon óvatos a polaritással kapcsolatban: ha összekeveri a talajt és a VIN-t, akkor a fórumon keresztül áramterhelést küld és elpusztítja azt a folyamat során.

Ha az Arduino környezetben még nem áll rendelkezésre az ESP8266 működése, akkor menjen tovább, és kövesse a ESP8266: Arduino Killer Ismerje meg az Arduino gyilkosát: ESP8266Mi lenne, ha azt mondanám neked, hogy van egy Arduino-kompatibilis fejlesztődeszka beépített Wi-Fi-vel kevesebb, mint 10 dollárért? Nos, van. Olvass tovább akkor térjen vissza, miután megerősítette, hogy működik. Telepítse ezeket a további könyvtárakat:

  • Az lmroy PubSubClient
  • Adafruit NeoPixels

A kód, amelyet használunk, egy módosítása A Github felhasználó Aditya Tannu - Eltávolítottam a felesleges frissítés funkciót, hozzáadtam néhány hiányzó HSV funkcióhoz, és megkönnyítettem több fény létrehozását egyetlen változó megváltoztatásával. Ha nem látja az alább beágyazott kódot, akkor azt a következő helyen találja ez a lényeg.

Frissítse a következő sorokat a saját hálózati adataival, és minden létrehozott készülékhez egyedi nevet (gazdagép).

const char * ssid = "..."; const char * jelszó = "..."; const char * host = "officelight"; IP-cím MQTTserver (192, 168, 1, 99);

Ennek a lámpatestnek az IP-címét automatikusan megkapjuk a DHCP-n keresztül - nem számít, megváltozik-e, mivel minden alkalommal ugyanahhoz az MQTT szerverhez csatlakozunk.

Jelenleg csak 4 neopixelt használunk, de később növelheti a számot, ha külső forrásból táplálja őket. Töltse fel a kódot, és teszteljük - használja a kedvenc MQTT klienst parancsok küldéséhez (módosítsa a gazdagép nevét az alábbi utasításokban, ha megváltoztatta).

  • Tudsz küldeni tovább a gyökérig officelight csatorna a bekapcsoláshoz. Küldjön bármilyen más értéket arra a csatornára, hogy kikapcsolja.
  • A szín megváltoztatásához 0-360 számot küldhet az irodalomfénynek / árnyalatnak. Mi a HSV színtér, tehát a 0 és a 360 piros, 120 zöld és 240 kék.
  • Ön a fényerő százalékos értékét küldi (0–100, nem tartalmazza a% szimbólumot).
  • Ugyanaz a telítettségnél. A 100 érték teljesen telített (azaz egyszínű), a nulla pedig tiszta fehér, a megadott árnyalattól függetlenül.

Miután megerősítette, hogy az MQTT-vezérelt világítótest működik, folytassa.

Új HomeKit tartozék konfigurálása

Váltson vissza a Raspberry Pi-re és fejezze be a HAP-NodeJS alkalmazást, ha még nem tette meg. Keresse meg a /accessories Könyvtár. Ennek megkönnyítése érdekében a következő gépeléssel közvetlenül letöltheti azt a kódot, amely már párosítva volt az „officelight” lámpatesttel:

wget https://gist.githubusercontent.com/jamesabruce/a6607fa9d93e41042fee/raw/12e4fd1d1c2624e7540ba5e17c3e79bc6bdec5fd/Officelight_accessory.js

Alapvetően ez az alapértelmezett könnyű kiegészítő másolata, néhány változó nevével megváltoztatva (ismét az Adysan művéből átalakítva, egyszerűsítve a könnyű használat érdekében). Íme, amit tudnia kell, ha ennek alapján elkészíti saját egyedi kiegészítőit.

  • Az összes tartozékot meg kell nevezni *_accessory.js
  • Változtassa meg az IP-címet a felső opcióváltozóban az MQTT-kiszolgálóra
  • Ha más rögzítőnévvel rendelkezik, keresse meg / cserélje ki a „officelight”Az Ön egyedi szerelvénynevével. A Nano-ban kereshet / cserélhet a gomb megnyomásával CTRL és \, beírja a keresett kifejezést, a helyettesítendő kifejezést, majd nyomja meg A (az összes példányt jelenti). Lépjen ezen keresztül, hogy pontosan megtanulja, mely változók kerülnek frissítésre.
  • Hozzon létre egy egyedi hexadecimális felhasználónevet a tartozékhoz (light.username = “1B: 2B: 3C: 5D: 6E: FF”;)
  • Ne változtassa meg a PIN-kódot. Ez egy meghatározott formátumot követ, és ha nem tudja, mit csinál, akkor nem lesz képes párosítani. Nem probléma az, hogy ugyanazt a fények között ugyanaz maradjon.
  • Megadhat egy másik “Siri-nevet”, amikor hozzáadja őket az Elgato Eve alkalmazáshoz, és bármikor szerkesztheti azokat, hogy ne ragadjon meg a kezdeti választáson. Nincs szükség a konfigurációs fájlok szerkesztésére vagy a szerver újraindítására.
  • Miután több rögzítést kapott, az Elgato Eve alkalmazás használatával csoportosíthatja őket szobánként, vagy létrehozhat konkrét jeleneteket, amelyek több összetett műveletből állnak. A jelenetek többféle műveletből állhatnak, például: kapcsolja be az irodai lámpát, 25% -ra tompítsa, pirossá tegye, és aktiválja a kávéfőzőt.

Új kiegészítőt kell hozzáadnia a választott HomeKit alkalmazáson keresztül.

Végül azt szeretnénk futtatni a HAP-NodeJS alkalmazást, amikor a Pi újraindul. Adja hozzá a következőt a etc / rc.local fájl, közvetlenül a kijárat 0.

sudo node /home/pi/HAP-NodeJS/Core.js  dev / null &

Láthatja, hogy egyesítettem ezt néhány más paranccsal, amelyeket már indítottam a rendszerindításkor.

rclocal futási csomópont indításkor

Ha ez az első alkalom, amikor az rc.local fájlt használja, akkor lehet, hogy végrehajthatóként kell beállítania:

sudo chmod 755 /etc/rc.local

Ha valamilyen okból meg kell újból futtatnia a hibakeresési módot, megölheti a futó Node alkalmazást a következőkkel:

killall csomópont

Az utolsó lépés: keresse meg a kiegészítő könyvtárat, és törölje a GarageDoorOpener_accessory.js. Az írás idején ez hibás, és a szerver egy idő után megszakad.

Mit fogsz irányítani a Siri-vel?

Most, hogy megszerezte az alapokat, valójában nincs korlátozása annak, amit ellenőrizhet - ha kódolhatja Javascript-ben, elkészítheti saját kiegészítő fájlt. Olyan sok potenciál van itt, azt hiszem, nagyon szórakoztató lesz. Hadd tudassa velem a hozzászólásokban, hogy mi jön fel!

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.