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:

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á!

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,…

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.

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.