Reklāma

HomeKit beidzot ir nonācis dabā, ļaujot nedaudzām viedās mājas ierīcēm ar Siri kontrolēt balsi.

Diemžēl es domāju burtiski nedaudz - kaut kas, ko jūs jau esat iegādājies, iespējams, nav saderīgs. Tomēr protokols jau ir pārveidots, un ir pieejams HomeKit API atvērtā koda emulators: vai vienkāršā angļu valodā, tagad jūs varat izveidot “viltus” HomeKit ierīces, un Siri tos kontrolēs tāpat kā jebkuru citu oficiālo HomeKit piederums.

Šodien mēs izveidosim kontrolējamu Wi-Fi gaismu un kontrolēsim to ar Siri. Šeit ir demonstrācija.

Lūk, kas jums būs nepieciešams:

  • Aveņu Pi (Esmu izmantojis RPi2, ņemot vērā jaunināto ARM arhitektūru, mazās atšķirībās mezglu versijās ir jāinstalē - sk. Piezīmes vēlāk).
  • MQTT brokeris, kas uzstādīts uz Raspberry Pi. Skatiet sadaļu “Instalējiet moskītu uz sava Pi” manā sadaļā OpenHAB ceļveža 2. daļa OpenHAB rokasgrāmata iesācējiem, 2. daļa: ZWave, MQTT, noteikumi un diagrammasAtvērtā koda mājas automatizācijas programmatūra OpenHAB ievērojami pārsniedz citu tirgū esošo mājas automatizācijas sistēmu iespējas - taču to nav viegli iestatīt. Faktiski tas var būt pilnīgi nomākts.
    instagram viewer
    Lasīt vairāk
    . Tas nav īpaši jāinstalē Pi - jūs pat varat izmantot MQTT serveri, kura pamatā ir mākonis, taču, tā kā šai apmācībai mums jebkurā gadījumā ir nepieciešams Pi, tas ir ērti.
  • NodeMCU v2 (savietojams ar Arino)
  • Neopixel gaismas diodes (testēšanai es ieteiktu 4 pikseļus, tad varat pievienot ārēju barošanas avotu un pievienot tik daudz, cik vēlaties)

HomeKit tilta uzstādīšana

Mēs instalēsim NodeJS lietojumprogrammu ar nosaukumu HAP-mezglsJS uz Raspberry Pi: tas veidos tiltu starp HomeKit pieprasījumiem un Wi-Fi ierīcēm. Pagaidām mēs konfigurēsim šo tiltu ar vienu piederumu, taču jūs varat pievienot tik daudz, cik vēlaties.

Es to faktiski instalēju savā esošajā mājas serverī, kurā darbojas OpenHAB - es ceru savienot abus kopā pie vēlāk, bet pagaidām zināt, ka viņi var pastāvēt līdzās tajā pašā Raspberry Pi. Ja jūs darāt to pašu, vienkārši ieejiet lieta, izveidojiet pašreizējās Pi SD kartes klona dublējumu Viegli klonējiet savu SD karti, lai bez problēmām izveidotu aveņu Pi skaitļošanuNeatkarīgi no tā, vai jums ir viena SD karte vai vairākas, viena lieta, kas jums būs nepieciešama, ir spēja dublēt kartes, lai izvairītos no problēmām, kas rodas, kad jūsu Raspberry Pi neizdodas ielādēt. Lasīt vairāk . Ja viss noiet greizi, varat to atjaunot.

Sāciet ar pilnīgu jaunināšanu no termināļa vai SSH sesija Aveņu Pi iestatīšana lietošanai bez galvas ar SSHRaspberry Pi var pieņemt SSH komandas, kad tās ir savienotas ar vietējo tīklu (izmantojot Ethernet vai Wi-Fi), ļaujot jums to viegli iestatīt. SSH priekšrocības pārsniedz ikdienas skrīninga izjaukšanu ... Lasīt vairāk .

sudo apt-get atjauninājums. sudo apt-get jauninājums. 

Jums, iespējams, tas būs jādara divreiz, ja tas ir pagājis kādu laiku.

Tagad instalējiet dažus pamata pakotnes, kas mums būs nepieciešami:

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

Tālāk mēs instalēsim jaunāko NodeJS versiju. Jums varētu rasties kārdinājums to darīt apt-get, bet nevajag - šī versija tagad ir tiešām veca un nedarbosies. Tā vietā apmeklējiet nodejs.org, pārlūkojiet lejupielādēt / atbrīvot / jaunāko-v5.x.0 / direktorijā un pārbaudiet, kāda ir jaunākās versijas saite. Jūs meklējat linux-armv7l Raspberry Pi 2 vai linuxarmv6l oriģinālajiem RPi modeļiem. Pēc tam, pielāgojot vietrāžus URL un direktoriju nosaukumus, lejupielādējiet un instalējiet, izmantojot šīs komandas.

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. 

Apstipriniet, ierakstot

mezgla versija. 

Un jums vajadzētu redzēt v5.5 (vai kāds ir jaunākais, ko lejupielādējāt).

Tālāk mums ir jāinstalē daži Node moduļi.

sudo npm instalēšana -g npm. sudo npm instalēt -g node-gyp. 

Pirmajā komandā mēs faktiski izmantojam Node Package Manager (npm), lai instalētu jaunāku versiju. Gudrs!

Tagad, lai lejupielādētu HomeKit emulatoru, sauc HAP-mezglsJS:

git klons https://github.com/KhaosT/HAP-NodeJS.git. cd HAP-NodeJS. npm atjaunot. sudo npm instalēt node-persist. sudo npm instalēt srp. 

Šajā brīdī man parādījās šī kļūda: “#error Šai mezgla / NAN / v8 versijai ir nepieciešams C ++ 11 kompilators“. Ja tas notiek ar jums, instalējiet jaunāku C ++ kompilatoru ar komandām:

sudo apt-get install gcc-4.8 g ++ - 4.8. sudo update-alternatīvas - instalēt / usr / bin / gccgcc / usr / bin / gcc-4.6 20. sudo update-alternatīvas --instalējiet / usr / bin / gcc gcc /usr/bin/gcc-4.8 50. sudo update-alternatīvas --instalēt / usr / bin / g ++ g ++ /usr/bin/g++-4.6 20. sudo update-alternatīvas --instalēt / usr / bin / g ++ g ++ /usr/bin/g++-4.8 50. 

Tagad jums nevajadzētu būt problēmai. Turpiniet izpildīt šīs komandas pa vienai:

sudo npm instalēt srp. sudo npm install mdns --unsafe-perm. sudo npm instalēt atkļūdošanu. sudo npm install ed25519 - nedrošs. sudo npm instalēšanas līkne25519 - nedroša. 

Tam vajadzētu būt visam. Mēģiniet palaist emulatoru ar:

mezgls Core.js. 

Ja rodas kļūdas, sakot, ka nevar atrast tādu un tādu moduli, izmantojiet tikai sudo npm instalēšana vēlreiz komandu un piestipriniet tā moduļa nosaukumu, kura trūkst. Pieņemot, ka viss ir kārtībā, jums vajadzētu redzēt dažus brīdinājumus, un jūsu HomeKit tilts darbosies. Izskatās veiksme:

hap-nodejs instalēts

Tūlīt varat redzēt, ka tas jau ir izveidojis 6 viltus ierīču komplektu. Mēs tos vēlāk izmantosim kā sākumpunktu mūsu pašu Wi-Fi apgaismojumam, bet mēs tos izmantosim tikai tagad. Plašāku atkļūdošanas informāciju var redzēt arī tad, ja serveri palaižat ar:

DEBUG = * mezgls Core.js

Tagad pārejiet uz Apple ierīci, kas var darbināt Siri. Apple ziņkārīgi piedāvā tikai HomeKit lietotni, izņemot reģistrētos izstrādātājus, tāpēc lejupielādējiet bez maksas Lietotne Elgato Eve, HomeKit pārvaldības lietotne, kas ļauj pievienot (pat ne Elgato) ierīces savam HomeKit tīklam.

Pirmoreiz palaižot lietotni, kurai būs jāpiešķir sava mājas nosaukums, dodieties tālāk un dodieties pa to. Pēc tam atlasiet “Pievienot piederumu”. Ignorējiet ziņu par atrašanos tai tuvu!

elgato priekšvakarā 1

Tālāk jums būs jāmeklē unikāls “HomeKit iestatīšanas kods”. Ignorējiet to un nospiediet “Pievienot vietnei [jūsu mājas nosaukums]”.

Tas arī jums pateiks, ka ierīce nav sertificēta. Patiešām, tā nav. Jebkurā gadījumā dodieties uz priekšu. Kad jūs nokļūstat ekrānā, lūdzot papildu kodu ...

elgato priekšvakarā 2

Izvēlieties kodu ievadīt manuāli un ierakstiet šo:

031-45-154

To var atrast / mainīt Light_accessory.js failu, bet vairāk par to vēlāk. Pievienojiet šo piederumu noklusējuma istabai, piezvaniet tai Viltus gaismaun staigājiet pa dialoglodziņiem, lai izvēlētos ikonu utt.

Visbeidzot, pārejiet atpakaļ uz SSH sesiju, kurā darbojas HAP-NodeJS. Jūs, iespējams, jau esat redzējis ziņojumu, kurā teikts: “Vai mēs atrodamies?” - tā ir lietotnes Elgato aptauja par gaismas statusu. Atveriet Siri un sakiet viņai “Ieslēdziet viltus gaismu”, pēc tam mēģiniet to atkal izslēgt. Cerams, ka jūs redzēsit dažus atkļūdošanas ziņojumus no HAP-NodeJS, lai parādītu, ka tas ir saņēmis komandas.

Vai esam iesākti? Nē. Gaismas ieslēgšana! Gaismas izslēgšana!

Fantastiski, ka tas ir pirmais solis. Tagad mums būs nepieciešams faktiskais apgaismojums, pirms atgriezīsimies, lai atkal konfigurētu tiltu.

Wi-Fi apgaismojuma veidošana

Šīs darbības aparatūras puse ir pārsteidzoši vienkārša, ja mēs sākam tikai ar četriem Neopixels, jo mēs tos varam barot tieši no NodeMCU dev paneļa un tā USB savienojuma. Ja jums ir garāka sloksne, neuztraucieties - mēs to esam definējuši programmatūrā, tāpēc pārējie vienkārši neieslēgsies.

Savienojiet sarkano strāvas kabeli no Neopixel virknes ar VIN tapu, zilo zemējumu ar GND un zaļo signāla kabeli ar tapu, kas NodeMCU apzīmēta ar D2. Esiet ļoti uzmanīgs attiecībā uz polaritāti: ja sajaucat zemi un VIN, jūs caur savu dēli nosūtīsit enerģijas pieplūdumu un iznīcināsit to procesā.

Ja jūsu Arduino vide vēl nav iestatīta darbam ar ESP8266, dodieties uz priekšu un sekojiet norādījumiem manā ESP8266: Arduino slepkava Iepazīstieties ar Arduino slepkavu: ESP8266Ko darīt, ja es jums teiktu, ka tur ir ar Arduino saderīga dev plātne ar iebūvētu Wi-Fi mazāk par 10 ASV dolāriem? Nu, tur ir. Lasīt vairāk pēc tam, kad esat apstiprinājis, ka darbojas. Instalējiet šīs papildu bibliotēkas:

  • lmroy’s PubSubClient
  • Adafruit's NeoPixels

Kods, kuru mēs izmantojam, ir modifikācija Github lietotāja Aditya Tannu’s - Es esmu noņēmis nevajadzīgo bezvadu atjaunināšanas funkcionalitāti, pievienojis dažās trūkstošajās HSV funkcijās un atvieglojis vairāk gaismas radīšanu, mainot tikai vienu mainīgo. Ja zemāk iegulto kodu neredzat, jūs to atradīsit vietnē šī būtība.

Atjauniniet šīs līnijas ar savu tīkla informāciju un katra izveidotā armatūras (resursdatora) unikālo nosaukumu.

const char * ssid = "..."; const char * parole = "..."; const char * host = "officelight"; IPAddress MQTTserver (192, 168, 1, 99);

Šī armatūras IP adrese tiek automātiski iegūta, izmantojot DHCP - nav svarīgi, vai tā mainās, jo mēs katru reizi izveidojam savienojumu ar to pašu MQTT serveri.

Pagaidām mēs izmantojam tikai 4 Neopixels, bet jūs varat tos vēlāk palielināt, ja tos piegādājat no ārēja avota. Augšupielādējiet kodu un pārbaudīsim - komandu sūtīšanai izmantojiet savu iecienīto MQTT klientu (pielāgojiet resursdatora vārdu šajos norādījumos, ja esat to mainījis).

  • Jūs varat sūtīt ieslēgts līdz saknei oficiālais apgaismojums kanāls, lai to ieslēgtu. Nosūtiet kanālam jebkuru citu vērtību, lai to izslēgtu.
  • Lai mainītu krāsu, uz oficiālo gaismu / nokrāsu var nosūtīt numuru no 0-360. Mēs izmantojam HSV krāsu telpa, tātad 0 un 360 ir sarkani, 120 ir zaļi un 240 ir zili.
  • Jūs nosūtāt spilgtuma procentuālo vērtību (0–100, neietveriet simbolu%).
  • Tas pats piesātināšanai. Vērtība 100 būs pilnībā piesātināta (ti, vienkrāsaina), un nulle būs tīri balta, neatkarīgi no norādītās nokrāsas.

Kad esat pārliecinājies, ka jūsu MQTT vadītais apgaismes ķermeņi darbojas, pārejiet tālāk.

Jauna HomeKit piederuma konfigurēšana

Pārslēdzieties atpakaļ uz Raspberry Pi un pārtrauciet lietotni HAP-NodeJS, ja vēl neesat to izdarījis. Dodieties uz /accessories direktoriju. Lai to izdarītu, varat tieši lejupielādēt kodu, kas jau ir savienots pārī ar “officelight” armatūru, ierakstot šo:

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

Būtībā tas ir noklusējuma gaismas piederuma dublikāts, mainot dažus mainīgos nosaukumus (atkal pielāgots Adysan darbam, vienkāršots lietošanas ērtībai). Lūk, kas jums būtu jāzina, lai, pamatojoties uz to, izveidotu savus pielāgotos piederumus.

  • Visiem piederumiem jābūt nosauktiem *_accessory.js
  • Mainiet IP adresi opciju mainīgajā augšpusē uz savu MQTT serveri
  • Ja jums ir cits armatūras nosaukums, meklējiet / aizstājiet visus gadījumus “oficiālais apgaismojums”Ar jūsu unikālo armatūras vārdu. Nano var meklēt / aizstāt, nospiežot CTRL un \, ierakstot meklējamo vārdu, aizstājamo vārdu, pēc tam nospiediet A (kas nozīmē visus gadījumus). Izpētiet katru no šiem, lai precīzi uzzinātu, kuri mainīgie tiek atjaunināti.
  • Izveidojiet piederuma unikālu heksadecimālo lietotājvārdu (light.username = “1B: 2B: 3C: 5D: 6E: FF”;)
  • Nemainiet PIN kodu. Tas atbilst noteiktam formātam, un, ja vien jūs nezināt, ko darāt, to nevarēs savienot pārī. Nav problēmu ar to, lai tie būtu vienādi starp gaismām.
  • Pievienojot tos Elgato Eve lietotnei, jūs varat piešķirt savam armatūrai atšķirīgu “Siri vārdu” un jebkurā laikā tos rediģēt, lai netiktu aizkavēts ar savu sākotnējo izvēli. Nav nepieciešams rediģēt konfigurācijas failus vai restartēt serveri.
  • Kad esat saņēmis vairākus armatūras elementus, varat izmantot lietotni Elgato Eve, lai grupētu tos pa istabām vai izveidotu īpašus sižetus, kas sastāv no vairākām sarežģītām darbībām. Ainas var sastāvēt no vairākām darbībām, piemēram: ieslēdziet biroja apgaismojumu, aptumšojiet to līdz 25%, padariet to sarkanu un aktivizējiet kafijas automātu.

Jauns piederums jums būs jāpievieno, izmantojot jūsu izvēlēto lietotni HomeKit.

Visbeidzot, mēs vēlamies palaist mūsu lietotni HAP-NodeJS ikreiz, kad Pi tiek restartēts. Pievienojiet savam utt / rc.local fails tieši pirms izeja 0.

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

Var redzēt, ka esmu to kombinējis ar dažām citām komandām, kuras man jau ir iestatīts sākt no sāknēšanas.

rclocal run mezgls startējot

Ja šī ir pirmā reize, kad rc.local izmantojat, iespējams, tas būs jāiestata kā izpildāms:

sudo chmod 755 /etc/rc.local

Ja kāda iemesla dēļ jums tas atkal jāpalaiž atkļūdošanas režīmā, darbojošos mezglu Node varat nogalināt, izmantojot:

killall mezgls

Pēdējais solis: dodieties uz piederumu direktoriju un izdzēsiet GarageDoorOpener_accessory.js. Rakstīšanas laikā tas ir kļūdains, un pēc kāda laika serveris sabojāsies.

Ko jūs kontrolēsit ar Siri?

Tagad, kad esat saņēmis pamatus, kontrolējamajam nav nekādu ierobežojumu - ja jūs to varat kodēt Javascript, varat izveidot savu piederumu failu. Šeit ir tik daudz potenciāla, es domāju, ka jums būs daudz prieka. Komentāros dariet man zināmu, ar ko jūs nākt klajā!

Džeimsam ir mākslīgā intelekta bakalaura grāds, un viņš ir sertificēts CompTIA A + un Network +. Viņš ir galvenais MakeUseOf izstrādātājs un brīvo laiku pavada, spēlējot VR peintbolu un galda spēles. Kopš mazotnes viņš būvēja datorus.