Oglas

HomeKit je napokon izašao u divljinu, omogućavajući glasovnu kontrolu putem Siri za pregršt potrošačkih pametnih uređaja.

Nažalost, mislim na doslovnu pregršt - sve što ste već kupili vjerojatno nije kompatibilno. Međutim, protokol je već obrnuto dizajniran i emulator otvorenog koda za HomeKit API je dostupan: ili u običnim engleskim, sada možete kreirati "lažne" HomeKit uređaje, a Siri će ih kontrolirati kao i svaki drugi službeni HomeKit oprema.

Danas ćemo stvoriti Wi-Fi kontrolno svjetlo i upravljati njime Siri. Evo vam demonstracije.

Evo što će vam trebati:

  • Raspberry Pi (Koristio sam RPi2, postoji mala razlika u verzijama čvora za instaliranje s obzirom na nadograđenu ARM arhitekturu - vidi napomene kasnije).
  • MQTT broker instaliran na Raspberry Pi. Pogledajte odjeljak "Instalacija komaraca na vaš Pi" u mom 2. dio vodiča OpenHAB OpenHAB vodič za početnike 2. dio: ZWave, MQTT, pravila i grafikoniOpenHAB, softver otvorenog koda za automatizaciju kuća, daleko nadmašuje mogućnosti drugih sustava za automatizaciju kućnih automata na tržištu - ali nije lako postaviti to. U stvari, to može biti ravno frustrirajuće.
    instagram viewer
    Čitaj više
    . Ne treba ga instalirati posebno na Pi - čak možete koristiti MQTT poslužitelj temeljen na oblaku, ali s obzirom da nam je Pi za ovaj vodič svejedno, to je prikladno.
  • NodeMCU v2 (kompatibilan sa Arduino)
  • Neopixel LED-ovi (preporučujem 4 piksela za testiranje, a zatim možete dodati vanjsko napajanje i dodati onoliko koliko želite)

Instaliranje HomeKit mosta

Instalirat ćemo NodeJS aplikaciju pod nazivom Hap-NodeJS do Raspberry Pi: to će tvoriti most između HomeKit zahtjeva i Wi-Fi uređaja. Za sada ćemo ovaj most konfigurirati jednim dodatkom, ali možete dodati onoliko koliko želite.

Zapravo to instaliram na svoj postojeći kućni poslužitelj koji radi na OpenHAB-u - nadam se da ću ih spojiti na a kasnijeg datuma, ali za sada, znate da mogu postojati na istoj Raspberry Pi. Ako radite isto, samo unutra slučaj, napravite sigurnosnu kopiju vaše trenutne Pi SD kartice Jednostavno klonirajte svoju SD karticu za računarsko računalo Raspberry PiBez obzira imate li jednu SD karticu ili nekoliko, jedna će vam trebati mogućnost sigurnosne kopije kartica kako biste izbjegli probleme koji nastaju kada se Raspberry Pi ne uspije pokrenuti. Čitaj više . Ako sve pođe po zlu, možete se vratiti na to.

Započnite s potpunom nadogradnjom sa terminala ili an SSH sesija Postavljanje vašeg Raspberry Pi-a za upotrebu bez glave sa SSH-omRaspberry Pi može prihvatiti SSH naredbe kada su povezani s lokalnom mrežom (bilo putem Etherneta ili Wi-Fi-ja), omogućujući vam jednostavno postavljanje. Prednosti SSH-a nadilaze narušavanje dnevnog probira ... Čitaj više .

sudo apt-get update. sudo apt-get nadogradnju. 

Možda ćete trebati učiniti dva puta ako je prošlo neko vrijeme.

Sada instalirajte nekoliko osnovnih paketa koji će nam trebati:

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

Zatim ćemo instalirati najnoviju verziju NodeJS-a. Možda biste bili u iskušenju da to učinite apt-get, ali nemojte - ta verzija je sada stvarno stara i neće raditi. Umjesto toga, posjetite nodejs.org, idite na download / otpuštanje / najnovije-v5.x.0 / direktoriju i provjerite koja je veza za najnoviju verziju. To tražiš Linux-armv7l za Raspberry Pi 2, ili linuxarmv6l za originalne RPi modele. Zatim, prilagođavajući URL-ove i nazive direktorija, po potrebi preuzmite i instalirajte pomoću sljedećih naredbi.

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 čvor-v5.5.0-linux-armv7l. sudo cp -R * / usr / local. 

Potvrdite tipkanjem

verzija čvora. 

A trebali biste vidjeti v5.5 (ili što god najnovije bilo da ste preuzeli).

Zatim imamo nekoliko modula čvora za instaliranje.

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

U toj prvoj naredbi zapravo koristimo Node Package Manager (npm) za instaliranje novije verzije sebe. Pametan!

Sada, za preuzimanje HomeKit emulatora nazvao Hap-NodeJS:

git klon https://github.com/KhaosT/HAP-NodeJS.git. cd HAP-NodeJS. npm obnova. sudo npm instalirati čvor-uporni. sudo npm instalirati srp. 

U ovom trenutku, pokrenuo sam ovu pogrešku: "#error Ova inačica čvora / NAN / v8 zahtijeva C ++ 11 prevodilac“. Ako vam se to dogodi, instalirajte noviji C ++ prevodilac sa naredbama:

sudo apt-get install gcc-4,8 g ++ - 4,8. sudo update-alternative - instalirajte / 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. 

Sada ne biste trebali imati problema. Nastavite izvršavati ove naredbe, jednu po jednu:

sudo npm instalirati srp. sudo npm instalirati mdns --unsafe-perm. sudo npm instaliraj pogrešku. sudo npm instalirati ed25519 --unsafe-perm. sudo npm uvesti krivulju25519 --unsafe-perm. 

To bi trebalo biti sve. Pokušajte pokrenuti emulator sa:

čvor Core.js. 

Ako se pojave pogreške kako kaže da ne može pronaći takav i takav modul, samo upotrijebite sudo npm instalirati naredbu ponovo i zalijepite naziv onog modula koji nedostaje. Ako pretpostavimo da je sve u redu, trebali biste vidjeti nekoliko upozorenja i pokrenut će se vaš HomeKit most. Ovako izgleda uspjeh:

instaliran hap-nodejs

Možete odmah vidjeti da je već stvorio skup od 6 lažnih uređaja. Kasnije ćemo ih koristiti kao početnu točku za svoje Wi-Fi svjetlo, ali sada ćemo ih koristiti samo za testiranje. Također možete vidjeti više informacija o uklanjanju pogrešaka ako pokrenete poslužitelj sa:

DEBUG = * čvor Core.js

Pređite na Appleov uređaj koji može pokrenuti Siri. Apple znatiželjno ne nudi početnu aplikaciju HomeKit osim registriranim programerima, pa preuzmite besplatno Aplikacija Elgato Eve, aplikacija za upravljanje HomeKit koja vam omogućuje dodavanje (čak i ne-Elgato) uređaja u vašu HomeKit mrežu.

Kad prvi put pokrenete aplikaciju morat ćete imenovati svoj dom, nastavite dalje i prođite kroz nju. Zatim odaberite "Dodaj dodatnu opremu". Zanemarite poruku o tome da ste joj blizu!

elgato uoči 1

Reći će vam da sljedeći put potražite jedinstveni "HomeKit instalacijski kod". Zanemarite to i pritisnite "Dodaj u [ime svog doma]".

Također će reći da uređaj nema certifikat. Zapravo nije. Samo nastavite. Kad dođete na ekran tražite šifru dodatne opreme ...

elgato uoči 2

Odaberite unesite kôd ručno i utipkajte sljedeće:

031-45-154

Ovo se može pronaći / promijeniti u Light_accessory.js datoteku, ali o tome više kasnije. Dodajte ovaj pribor u zadanu sobu, nazovite ga Lažna svjetlosti nastavite hodati kroz dijaloške okvire za odabir ikone itd.

Na kraju, vratite se na SSH sesiju u kojoj imate pokrenut HAP-NodeJS. Možda ste već vidjeli poruku koja govori „Jesmo li uključeni?“ - to je aplikacija Elgato za ispitivanje statusa svjetla. Otvorite Siri i recite joj da "uključi lažno svjetlo", a zatim je pokušajte ponovo isključiti. Nadamo se da ćete vidjeti neke poruke za uklanjanje pogrešaka s HAP-NodeJS da pokažu da je primio naredbe.

Jesmo li na? Ne. Uključivanje svjetla! Ugasi svjetlo!

Fantastično, to je korak prvi. Sada će nam trebati stvarno svjetlo prije nego što se vratimo da ponovo konfiguriramo most.

Izgradnja Wi-Fi svjetla

Hardverska strana ovog koraka iznenađujuće je jednostavna ako započnemo sa samo četiri neopiksela, jer ih možemo napajati izravno s NodeMCU ploče za razvoj i njegove USB veze. Ako imate dulju traku, ne brinite - to smo definirali u softveru, a ostalo se jednostavno neće uključiti.

Crveni kabl za napajanje iz žice Neopixel povežite na VIN pin, plavi uzemljenje na GND, a zeleni signalni kabel na pin označen s D2 na NodeMCU. Budite vrlo oprezni u pogledu polariteta: ako pomiješate zemlju i VIN, poslat ćete porast snage kroz svoju ploču i uništiti je u toku postupka.

Ako vaše Arduino okruženje još nije postavljeno za rad s ESP8266, idite naprijed i slijedite vodič u mom ESP8266: Ubojica Arduino Upoznajte Arduino ubojicu: ESP8266Što ako vam kažem da postoji Arduino kompatibilna ploča s ugrađenim Wi-Fi-jem za manje od 10 dolara? Pa, postoji. Čitaj više vodiča, a zatim se vratite nakon što potvrdite da djeluje. Instalirajte ove dodatne biblioteke:

  • lmroy's PubSubClient
  • Adafruit-ovi NeoPixels

Kôd koji koristimo je modifikacija Korisnik Github-a Aditya Tannu - Uklonila sam nepotrebnu funkcionalnost ažuriranja putem zraka, dodala neke funkcije HSV-a koje su nedostajale i olakšala sam stvaranje više svjetla promjenom jedne varijable. Ako ne možete vidjeti kôd ugrađen u nastavku, naći ćete ga na ovaj Gist.

Ažurirajte sljedeće redove s vlastitim mrežnim podacima i jedinstvenim nazivom svakog učvršćenja koje stvorite (host).

const char * ssid = "..."; const char * password = "..."; const char * host = "uredsko svjetlo"; IPAdress MQTTserver (192, 168, 1, 99);

IP adresa ovog učvršćenja automatski se dobiva putem DHCP-a, nije važno mijenja li se budući da se svaki put povezujemo na isti MQTT poslužitelj.

Za sada koristimo samo 4 neopiksela, ali kasnije ih možete povećati ako ih napajate iz vanjskog izvora. Prenesite kôd i testirajmo - za slanje naredbi koristite svoj omiljeni MQTT klijent (prilagodite ime glavnog računala u sljedećim uputama ako ste ga promijenili).

  • Možeš poslati na do korijena officelight kanal da ga uključite. Pošaljite bilo koju drugu vrijednost na tom kanalu da biste ga isključili.
  • Možete poslati broj od 0-360 kancelarijskom svjetlu / nijansi da promijenite boju. Mi koristimo HSV prostor u boji, pa su 0 i 360 crveni, 120 zeleni, a 240 plavi.
  • Šaljete postotak vrijednosti za svjetlinu (0-100, ne uključuje simbol%).
  • Isto za zasićenje. Vrijednost 100 bit će potpuno zasićena (tj. Čvrste boje), a nula će biti čisto bijela, bez obzira na specificiranu nijansu.

Nakon što potvrdite da vaš rasvjetni uređaj pokrenut MQTT radi, nastavite dalje.

Konfiguriranje novog HomeKit dodatka

Vratite se na Raspberry Pi i zatvorite aplikaciju HAP-NodeJS ako već niste. Dođite do odjeljka /accessories imenik. Da biste to učinili, možete izravno preuzeti kôd koji je već uparen sa učvršćenjem "officelight" tako da upišete sljedeće:

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

U osnovi, ovo je duplikat zadanog pribora za svjetlo, pri čemu su promijenjena neka imena varijabli (opet prilagođena Adysanovom radu, pojednostavljena radi lakše uporabe). Evo što biste trebali znati za stvaranje vlastitog prilagođenog pribora na temelju toga.

  • Sav pribor mora biti imenovan *_accessory.js
  • Promijenite IP adresu u varijabli opcija na vrhu na vašem MQTT poslužitelju
  • Ako imate neko drugo ime učvršćenja, pretražite / zamijenite sve instance "officelight"S vašim jedinstvenim nazivom učvršćenja. Možete pretražiti / zamijeniti u Nanou pritiskom na CTRL i \, upišite izraz pronaći, termin zamijeniti, a zatim pritisnite (što znači sve instance). Kroz svaki od njih naučite precizno koje se varijable ažuriraju.
  • Napravite jedinstveno šesterokutno korisničko ime za dodatak (light.username = "1B: 2B: 3C: 5D: 6E: FF";)
  • Ne mijenjajte PIN kôd. Slijedi određeni format, a ako ne znate što radite, neće moći uparivati. Nema problema s održavanjem istih između svjetala.
  • Možete dodati svom učvršćenju drugačije "Siri ime" kada ih dodajete u Elgato Eve aplikaciju i urediti ih u bilo kojem trenutku tako da niste zaglavljeni u svom početnom izboru. Ne treba uređivati ​​konfiguracijske datoteke ili ponovno pokretati poslužitelj.
  • Kad dobijete više učvršćenja, pomoću Elgato Eve aplikacije možete ih grupirati po sobi ili stvoriti određene scene koje se sastoje od više složenih radnji. Scene se mogu sastojati od više radnji, poput: upalite uredsko svjetlo, prigušite ga na 25%, učinite crvenim i aktivirajte aparat za kavu.

Trebat ćete ponovo dodati svoj novi dodatak putem aplikacije HomeKit po izboru.

Konačno, želimo pokrenuti našu HAP-NodeJS aplikaciju svaki put kada se Pi ponovno pokrene. Dodajte sljedeće na svoj etc / rc.local datoteku, neposredno prije izlaz 0.

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

Možete vidjeti da sam to kombinirao s nekim drugim naredbama koje sam već postavio za pokretanje.

rclocal čvor pokretanja pri pokretanju

Ako prvi put upotrebljavate rc.local, možda ćete trebati postaviti ga kao izvršnog:

sudo chmod 755 /etc/rc.local

Ako vam je iz nekog razloga potrebno ponovno pokrenuti u programu za uklanjanje pogrešaka, možete ubiti pokrenutu aplikaciju Node pomoću:

killall čvor

Posljednji korak: pomaknite se do imenika dodataka i izbrišite GarageDoorOpener_accessory.js. U vrijeme pisanja stranica je to buggy, te će uzrokovati da se server nakon nekog vremena pokvari.

Što ćete kontrolirati sa Siri?

Sada kada ste oborili osnove, ne možete ograničiti ono što možete kontrolirati - ako ga možete kodirati u Javascriptu, možete napraviti vlastitu datoteku dodatne opreme. Ovdje ima toliko potencijala, mislim da ćete se jako dobro zabaviti. Javite mi u komentarima što sve smislite!

James je diplomirao iz umjetne inteligencije i certificiran je CompTIA A + i Network +. Vodeći je programer MakeUseOf-a, a svoje slobodno vrijeme provodi igrajući VR paintball i boardgames. Gradio je računala još od djeteta.