Oglas
HomeKit je končno v naravi, s pomočjo Siri-ja pa omogoča nadzor nad sistemom Siri za nekaj uporabnikov pametnih domačih naprav.
Na žalost mislim na dobesedno peščico - vse, kar ste že kupili, verjetno ni združljivo. Vendar je protokol že oblikovan obratno in na voljo je odprtokodni emulator za HomeKit API: ali v navadna angleščina, lahko zdaj ustvarite "ponarejene" naprave HomeKit in Siri jih bo nadzirala tako kot vse druge uradne HomeKit dodatna oprema.
Danes bomo ustvarili nadzorno luč Wi-Fi in jo nadzirali s Siri. Tu je predstavitev predstavitve.
Tukaj je tisto, kar boste potrebovali:
- Malina Pi (Uporabil sem RPi2; v različicah vozlišč je nameščena majhna razlika glede na nadgrajeno arhitekturo ARM - glejte opombe pozneje).
- MQTT posrednik, nameščen na Raspberry Pi. Glejte razdelek »Namestitev komarnika na vaš Pi« v mojem 2. navodila za OpenHAB OpenHAB Vodnik za začetnike 2. del: ZWave, MQTT, Pravila in grafikoniOpenHAB, odprtokodna programska oprema za domačo avtomatizacijo, daleč presega zmogljivosti drugih sistemov za domačo avtomatizacijo na trgu - vendar jih ni enostavno postaviti. V resnici je lahko naravnost frustrirajoče. Preberi več . Ni ga treba posebej nameščati na Pi - lahko celo uporabljate strežnik MQTT v oblaku, a ker za to vadbo vseeno potrebujemo Pi, je to priročno.
- NodeMCU v2 (združljiv z Arduino)
- LED diode neopiksela (za testiranje priporočam 4 slikovne pike, nato lahko dodate zunanje napajanje in dodate toliko, kot želite)
Namestitev HomeKit Bridge
Namestili bomo aplikacijo NodeJS, imenovano HAP-NodeJS do Raspberry Pi: to bo most med zahtevami HomeKit in napravami Wi-Fi. Zdaj bomo ta most konfigurirali z enim dodatkom, vendar lahko dodate toliko, kot želite.
To pravzaprav namestim na svoj obstoječi domači strežnik z operacijskim sistemom OpenHAB - upam, da bosta povezala oba na a kasnejši datum, vendar za zdaj vedite, da lahko na istem Raspberry Pi sobivajo. Če delaš isto, samo noter Ovitek, naredite klonsko varnostno kopijo trenutne Pi SD kartice Preprosto klonirajte svojo SD kartico za računalnike Raspberry Pi brez težavNe glede na to, ali imate eno SD kartico ali več, je ena stvar, ki jo potrebujete, varnostno kopiranje kartic, da se izognete težavam, ki se pojavijo, ko se Raspberry Pi ne zažene. Preberi več . Če gre vse narobe, se lahko vrnete na to.
Začnite s popolno nadgradnjo terminala ali an Seja SSH Nastavitev vašega Raspberry Pi za brezglavo uporabo s SSHRaspberry Pi lahko sprejme ukaze SSH, ko jih povežete z lokalnim omrežjem (bodisi prek Etherneta ali Wi-Fi-ja), kar vam omogoča enostavno nastavitev. Prednosti SSH presegajo vznemirjanje dnevnega presejanja ... Preberi več .
sudo apt-get update. nadgraditi sudo apt-get.
Morda boste morali to storiti dvakrat, če je že nekaj časa.
Zdaj namestite nekaj osnovnih paketov, ki jih bomo potrebovali:
sudo apt-namestite npm git-core libnss-mdns libavahi-compat-libdnssd-dev.
Nato bomo namestili najnovejšo različico NodeJS. Morda bi vas to zamikalo primeren-dobiti, vendar ne - ta različica je zdaj že stara in ne bo delovala. Namesto tega obiščite nodejs.org, poiščite stran prenos / izdaja / najnovejši-v5.x.0 / imenik in preverite, kakšna je povezava za najnovejšo različico. Iščete linux-armv7l za Raspberry Pi 2, ali linuxarmv6l za originalne modele RPi. Nato po potrebi prilagodite URL-je in imena imenikov, prenesite in namestite z naslednjimi ukazi.
wget https://nodejs.org/download/release/latest-v5.x.0/node-v5.5.0-linux-armv7l.tar.gz. tar -xvf vozlišče-v5.5.0-linux-armv7l.tar.gz. cd vozlišče-v5.5.0-linux-armv7l. sudo cp -R * / usr / local.
Potrdite s tipkanjem
različica vozlišča.
Videti bi morali v5.5 (ali kar koli najnovejšega, kar ste prenesli).
Nato imamo nameščene nekaj modulov vozlišča.
sudo npm namestite -g npm. sudo npm namestite -g vozlišče-gyp.
V tem prvem ukazu dejansko uporabljamo upravitelja paketov vozlišč (npm) za namestitev novejše različice. Pameten!
Zdaj za prenos emulatorja HomeKit pokličemo HAP-NodeJS:
git klon https://github.com/KhaosT/HAP-NodeJS.git. cd HAP-NodeJS. npm obnoviti. sudo npm namestite vztrajno vozlišče. sudo npm namestite srp.
Na tej točki sem izvedel to napako:#error Ta različica vozlišča / NAN / v8 zahteva prevajalnik C ++ 11“. Če se vam to zgodi, namestite novejši prevajalnik C ++ z ukazi:
sudo apt-get install gcc-4,8 g ++ - 4,8. sudo update-alternative --install / usr / bin / gccgcc / usr / bin / gcc-4.6 20. sudo update-alternative --install / usr / bin / gcc gcc /usr/bin/gcc-4.8 50. sudo update-alternative --install / usr / bin / g ++ g ++ /usr/bin/g++-4.6 20. sudo update-alternative --install / usr / bin / g ++ g ++ /usr/bin/g++-4.8 50.
Zdaj ne bi smeli imeti težav. Nadaljujte z izvajanjem teh ukazov, enega za drugim:
sudo npm namestite srp. sudo npm namestite mdns --unsafe-perm. sudo npm namestite napako. sudo npm namestite ed25519 --unsafe-perm. sudo npm namestite krivuljo25519 --unsafe-perm.
To bi moralo biti vse. Poskusite zagnati emulator z:
vozlišče Core.js.
Če se prikažejo napake, ki pravijo, da takšnega in takšnega modula ne najde, preprosto uporabite sudo npm namestite ukaz in znova pritrdite ime modula. Ob predpostavki, da je vse v redu, bi morali videti nekaj opozoril in vaš HomeKit most se bo zagnal. Tako izgleda uspeh:

Takoj vidite, da je že ustvaril nabor 6 ponarejenih naprav. Pozneje jih bomo uporabili kot izhodišče za lastno luč Wi-Fi, za zdaj pa jih bomo uporabili samo za testiranje. Več informacij o odpravljanju napak lahko vidite tudi, če strežnik zaženete z:
DEBUG = * vozlišče Core.js
Zdaj skočite na Appleovo napravo, ki lahko poganja Siri. Apple radovedno ne ponuja zalog HomeKit, razen registriranim razvijalcem, zato prenesite brezplačno Aplikacija Elgato Eve, aplikacija za upravljanje HomeKit, ki vam omogoča, da v omrežje HomeKit dodate (tudi druge naprave, ki niso Elgato).
Ko boste prvič zagnali aplikacijo, boste morali poimenovati svoj dom, pojdite naprej po tem. Nato izberite »Dodaj dodatno opremo«. Prezri sporočilo o tem, da si blizu!

Nato boste morali poiskati edinstveno "HomeKit Setup Code". Zanemarite to in pritisnite »Dodaj v [ime vašega doma]«.
Prav tako vam bo povedal, da naprava ni certificirana. V resnici ni. Vseeno pojdi naprej. Ko pridete na zaslon in zaprosite za dodatno kodo ...

Izberite ročno vnos kode in vnesite naslednje:
031-45-154
To je mogoče najti / spremeniti v Light_accessory.js datoteko, več o tem pa pozneje. Dodajte to dodatno opremo v privzeto sobo in jo pokličite Lažna svetloba, in pojdite skozi pogovorna okna, da izberete ikono itd.
Končno se vrnite na sejo SSH, kjer imate nameščen HAP-NodeJS. Morda ste že videli sporočilo z besedami "Ali smo vključeni?" - to je aplikacija Elgato za anketo o stanju svetlobe. Odprite Siri in ji recite "Vklopi lažno luč", nato jo poskusite znova izklopiti. Upajmo, da boste pri HAP-NodeJS videli nekaj odpravljalnih napak, ki bodo pokazala, da je prejel ukaze.
Smo že naprej? Ne. Vklop luči! Ugasnite luč!
Fantastično, korak je končan. Zdaj bomo potrebovali dejansko luč, preden se vrnemo, da ponovno konfiguriramo most.
Gradnja luči Wi-Fi
Strojna stran tega koraka je presenetljivo preprosta, če začnemo s samo štirimi Neopixels, saj jih lahko napajamo neposredno s plošče za razvojnike NodeMCU in njene USB povezave. Če imate daljši trak, ne skrbite - to smo opredelili v programski opremi, zato se ostali ne bodo vklopili.
Rdeči napajalni kabel priključite iz pramena Neopixel na pin VIN, modro ozemljite na GND, zeleni signalni kabel pa na pin z oznako D2 na NodeMCU. Bodite zelo previdni pri polarnosti: če zmešate tla in VIN, boste prek svoje plošče poslali več energije in jo uničili.
Če vaše okolje Arduino še ni nastavljeno za delo z ESP8266, pojdite naprej in sledite navodilom v mojem ESP8266: Arduino morilec Spoznajte Arduino morilca: ESP8266Kaj pa, če bi vam rekel, da obstaja arduino združljiva plošča razvijalcev, ki ima vgrajen Wi-Fi za manj kot 10 dolarjev? No, obstaja. Preberi več vodnik, nato se vrnite, ko potrdite, da deluje. Namestite te dodatne knjižnice:
- lmroy's PubSubClient
- Adafruitovi NeoPixels
Koda, ki jo uporabljamo, je sprememba Uporabnik Github-a Aditya Tannu - Odstranil sem nepotrebno funkcijo posodabljanja v zraku, dodal nekatere funkcije HSV, ki so manjkale, in olajšal ustvarjanje več luči s samo spremembo ene spremenljivke. Če kode ne vidite, vdelano spodaj, jo boste našli na naslovu ta Gist.
Naslednje vrstice posodobite z lastnimi informacijami o omrežju in edinstvenim imenom vsake naprave, ki jo ustvarite (gostitelj).
const char * ssid = "..."; const char * password = "..."; const char * host = "officelight"; IPAdress MQTTserver (192, 168, 1, 99);
IP naslov te napeljave dobimo samodejno prek DHCP - ni pomembno, ali se spremeni, saj se vsakič povežemo z istim strežnikom MQTT.
Za zdaj uporabljamo samo 4 neopiksele, vendar jih lahko pozneje povečate, če jih napajate iz zunanjega vira. Prenesite kodo in preizkusite - za pošiljanje ukazov uporabite svoj najljubši odjemalec MQTT (ime gostitelja prilagodite v naslednjih navodilih, če ste ga spremenili).
- Lahko pošljete naprej do korena pisarniške luči kanal, da ga vklopite. Temu kanalu pošljite katero koli drugo vrednost, da ga izklopite.
- Številko od 0-360 lahko pošljete pisarniškemu odtenku, da spremenite barvo. Uporabljamo Barvni prostor HSV, tako da sta 0 in 360 rdeča, 120 zelena in 240 modra.
- Pošljete odstotno vrednost za svetlost (0-100, ne vključujejte simbola%).
- Enako za nasičenost. Vrednost 100 bo popolnoma nasičena (tj. Trdna barva), nič pa čisto bela, ne glede na določen odtenek.
Ko potrdite, da svetilna naprava, ki jo poganja MQTT, deluje, nadaljujte.
Konfiguriranje novega dodatka HomeKit
Preklopite nazaj na Raspberry Pi in ukinite aplikacijo HAP-NodeJS, če še niste. Pomaknite se do /accessories imenik. Če želite to olajšati, lahko neposredno naložite kodo, ki je bila že seznanjena z vtičnico "officelight", tako da vtipkate naslednje:
wget https://gist.githubusercontent.com/jamesabruce/a6607fa9d93e41042fee/raw/12e4fd1d1c2624e7540ba5e17c3e79bc6bdec5fd/Officelight_accessory.js
V bistvu gre za dvojnik privzetega dodatka za svetlobo, pri čemer so bila spremenjena nekatera imena spremenljivk (spet prilagojena iz Adysanovega dela, poenostavljena za enostavnejšo uporabo). Tukaj je nekaj, kar morate vedeti za ustvarjanje lastnih dodatkov po meri na podlagi tega.
- Vsi dodatki morajo biti imenovani *_accessory.js
- Spremenite IP naslov v spremenljivki možnosti na vrhu na strežniku MQTT
- Če imate drugo ime vpenjala, iščite / zamenjajte vse primere »pisarniške luči"Z vašim edinstvenim imenom napeljave. V Nanu lahko iščete / zamenjate s pritiskom CTRL in \, vtipkajte izraz najti, izraz nadomestiti in nato zadeti A (kar pomeni vse primere). Skozi vsako od njih se natančno naučite, katere spremenljivke se posodabljajo.
- Ustvarite edinstveno šestnajstično uporabniško ime za dodatno opremo (light.username = "1B: 2B: 3C: 5D: 6E: FF";)
- Ne spreminjajte kode PIN. Sledi določeni obliki, in če ne veste, kaj počnete, ne bo mogel seznaniti. Ni problema, če bi bili enaki med lučmi.
- Ko dodate aplikaciji Elgato Eve, svojemu pritrditvi lahko dodate drugačno ime "Siri" in jih kadar koli uredite, da se ne boste zataknili pri svoji prvotni izbiri. Ni vam treba urejati konfiguracijskih datotek ali znova zagnati strežnika.
- Ko dobite več napeljav, lahko z aplikacijo Elgato Eve razvrstite skupine po sobi ali ustvarite določene prizore, sestavljene iz več zapletenih dejanj. Prizori so lahko sestavljeni iz več dejanj, kot so: prižgite pisarniško luč, zatemnite na 25%, obarvajte rdečo in vklopite aparat za kavo.
Znova morate dodati svojo novo dodatno opremo prek izbrane aplikacije HomeKit.
Končno želimo zagnati našo HAP-NodeJS aplikacijo, kadar se Pi ponovno zažene. V svoje dodajte naslednje itd / rc.local datoteko, tik pred izhod 0.
sudo vozlišče /home/pi/HAP-NodeJS/Core.js dev / null &
Vidite, da sem to združil z nekaterimi drugimi ukazi, ki sem jih že nastavil za zagon.

Če prvič uporabljate rc.local, ga boste morda morali nastaviti kot izvršljivo:
sudo chmod 755 /etc/rc.local
Če ga morate iz nekega razloga znova zagnati v načinu za odpravljanje napak, lahko delujočo aplikacijo Node ubijete z:
killall vozlišče
Zadnji korak: pomaknite se do imenika dodatkov in ga izbrišite GarageDoorOpener_accessory.js. V času pisanja je to hrošč in povzroči, da se strežnik čez nekaj časa zlomi.
Kaj boste nadzirali s Siri?
Zdaj, ko ste se spustili do osnov, resnično ni omejitev, kaj lahko nadzirate - če ga lahko kodirate v Javascript, lahko naredite svojo datoteko dodatne opreme. Tu je toliko potenciala, mislim, da se boste zelo zabavali. Sporočite mi v komentarjih, kaj si omislite!
James ima doktorat iz področja umetne inteligence in ima certifikat CompTIA A + in Network +. Je vodilni razvijalec MakeUseOf in svoj prosti čas preživlja z igranjem VR paintball in družabnih iger. Z računalniki gradi že od malih nog.