Skelbimas

„HomeKit“ pagaliau yra laukiniai, įgalindami balso valdymą per „Siri“ kelioms vartotojams skirtiems išmaniesiems namų įrenginiams.

Deja, turiu omenyje pažodžiui saują - viskas, ką jau nusipirkote, tikriausiai nesuderinama. Tačiau protokolas jau buvo pakeistas ir galima naudoti „HomeKit“ API atvirojo kodo emuliatorių: arba paprasta anglų kalba, dabar galite sukurti „netikrus“ „HomeKit“ įrenginius, o „Siri“ valdys juos, kaip ir bet kurį kitą oficialų „HomeKit“. aksesuaras.

Šiandien mes sukursime kontroliuojamą „Wi-Fi“ lemputę ir valdysime ją naudodami „Siri“. Štai demonstracija.

Štai ko jums reikės:

  • Aviečių pi (Aš naudojau RPi2, atsižvelgiant į atnaujintą ARM architektūrą, mazgų versijų, kurias reikia įdiegti, skirtumas yra nedidelis - žr. Pastabas vėliau).
  • „MQTT“ brokeris įdiegtas „Raspberry Pi“. Žr. Skyrių „Įdiekite uodą ant savo Pi“ „OpenHAB“ vadovo 2 dalis „OpenHAB“ vadovas pradedantiesiems 2 dalis: „ZWave“, MQTT, taisyklės ir diagramos„OpenHAB“, atvirojo kodo namų automatikos programinė įranga, žymiai viršija kitų rinkoje esančių namų automatikos sistemų galimybes, tačiau ją nustatyti nėra lengva. Tiesą sakant, tai gali būti visiškai gąsdinanti.
    instagram viewer
    Skaityti daugiau
    . Jo nereikia įdiegti specialiai į „Pi“ - galite naudoti net debesies pagrindu sukurtą MQTT serverį, tačiau kadangi šiaip mums reikia „Pi“ šios mokymo programos, tai yra patogu.
  • „NodeMCU v2“ (suderinamas su „Arduino“)
  • „Neopixel“ šviesos diodai (išbandymui rekomenduočiau 4 pikselius, tada galėsite pridėti išorinį maitinimo šaltinį ir pridėti tiek, kiek jums patinka)

„HomeKit“ tilto įrengimas

Mes ketiname įdiegti „NodeJS“ programą, vadinamą HAP-mazgasJS „Raspberry Pi“: tai sudarys tiltą tarp „HomeKit“ užklausų ir „Wi-Fi“ įrenginių. Šiuo metu sukonfigūruosime šį tiltą su vienu priedu, tačiau galite pridėti tiek, kiek norite.

Aš tai faktiškai diegiu į savo esamą namų serverį, kuriame veikia „OpenHAB“ - tikiuosi, kad abu sujungsiu vėliau, bet kol kas žinokite, kad jie gali egzistuoti kartu su tuo pačiu Raspberry Pi. Jei darai tą patį, tiesiog įeik atvejis, pasidarykite esamos „Pi SD“ kortelės klono atsarginę kopiją Lengvai klijuokite SD kortelę, kad be vargo rastumėte aviečių Pi kompiuterįNesvarbu, ar turite vieną SD kortelę, ar kelias, jums reikės atsarginių kortelių atsarginių kopijų, kad būtų išvengta problemų, kylančių, kai jūsų „Raspberry Pi“ nepavyksta paleisti. Skaityti daugiau . Jei viskas klostysis ne taip, galite tai atkurti.

Pradėkite atlikdami pilną atnaujinimą iš terminalo arba SSH sesija „Raspberry Pi“ paruošimas naudoti be galvų su SSH„Raspberry Pi“ gali priimti SSH komandas, kai yra prijungtas prie vietinio tinklo (per „Ethernet“ arba „Wi-Fi“), kad galėtumėte lengvai jį nustatyti. SSH pranašumai neapsiriboja kasdieniu atranka ... Skaityti daugiau .

„sudo apt-get“ atnaujinimas. „sudo apt-get“ atnaujinimas. 

Gali reikėti tai padaryti du kartus, jei jau kurį laiką.

Dabar įdiekite keletą pagrindinių paketų, kurių mums reikės:

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

Kitas, mes ketiname įdiegti naujausią „NodeJS“ versiją. Jums gali kilti pagunda tai padaryti apt-get, bet ne - ši versija dabar tikrai sena ir neveiks. Verčiau apsilankykite nodejs.org, naršykite iki atsisiųsti / išleisti / naujausią-v5.x.0 / katalogą ir patikrinkite, kokia yra naujausios versijos nuoroda. Jūs ieškote linux-armv7l Raspberry Pi 2 arba linuxarmv6l originaliems RPi modeliams. Tada, jei reikia, pakoregavę URL ir katalogų pavadinimus, atsisiųskite ir įdiekite naudodami šias 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 / vietinis. 

Patvirtinkite įvesdami

mazgo versija. 

Ir jūs turėtumėte pamatyti v5.5 (arba bet kurį naujausią variantą, kurį atsisiuntėte).

Toliau mes turime keletą „Node“ modulių, kuriuos reikia įdiegti.

sudo npm įdiegti -g npm. sudo Npm įdiegti -g mazgas-Gyp. 

Toje pirmoje komandoje mes faktiškai naudojame „Node Package Manager“ (npm) norėdami įdiegti naujesnę savo versiją. Protingas!

Dabar norėdami atsisiųsti „HomeKit“ emuliatorių, vadinamą HAP-mazgasJS:

git klonas https://github.com/KhaosT/HAP-NodeJS.git. cd HAP-NodeJS. npm atstatyti. sudo Npm įdiegti mazgas-išlieka. „sudo npm“ įdiegti srp. 

Šiuo metu man kilo ši klaida: „#error Šiai mazgo / NAN / v8 versijai reikalingas C ++ 11 kompiliatorius“. Jei taip atsitiks jums, įdiekite naujesnį C ++ kompiliatorių su komandomis:

sudo apt-get install gcc-4.8 g ++ - 4.8. „sudo“ atnaujinimo alternatyvos - įdiegti / usr / bin / gccgcc / usr / bin / gcc-4.6 20. sudo atnaujinimas - alternatyvos - įdiegti / usr / bin / gcc gcc /usr/bin/gcc-4.8 50. sudo atnaujinimas - alternatyvos - įdiegti / usr / bin / g ++ g ++ /usr/bin/g++-4.6 20. sudo atnaujinimas - alternatyvos - įdiegti / usr / bin / g ++ g ++ /usr/bin/g++-4.8 50. 

Dabar jums neturėtų kilti problemų. Tęskite šias komandas po vieną:

„sudo npm“ įdiegti srp. „sudo npm“ įdiegti „mdns --unsafe-perm“. sudo Npm įdiegti derinimo. „sudo npm“ įdiegti ed25519 - „nesaugus-perm“. „sudo npm“ įdiegimo kreivė25519 - nesaugi permė. 

Tai turėtų būti viskas. Pabandykite paleisti emuliatorių naudodami:

mazgas Core.js. 

Jei gaunate klaidų sakydami, kad tokio ir tokio modulio nerandate, tiesiog naudokite sudo Npm įdiegti dar kartą įveskite komandą ir pritvirtinkite modulio, kurio trūko, pavadinimą. Jei viskas gerai, turėtumėte pamatyti keletą įspėjimų, o jūsų „HomeKit“ tiltas veiks. Kaip atrodo sėkmė:

hap-nodejs įdiegtas

Iškart galite pastebėti, kad tai jau sukūrė netikrų įrenginių rinkinį. Vėliau jas naudosime kaip atspirties tašką „Wi-Fi“ lemputei, tačiau dabar jas naudosime tik dabar. Taip pat galite pamatyti daugiau derinimo informacijos, jei serverį paleisite naudodami:

DEBUG = * mazgas Core.js

Dabar pereikite prie „Apple“ įrenginio, galinčio paleisti „Siri“. „Apple“ įdomu, kad neteikia „HomeKit“ programos, išskyrus registruotus kūrėjus, todėl atsisiųskite nemokamai „Elgato Eve“ programa, „HomeKit“ valdymo programa, leidžianti pridėti (net ne „Elgato“) įrenginius prie „HomeKit“ tinklo.

Pirmą kartą paleidę programą turėsite pavadinti savo namus, eikite į priekį ir eikite per juos. Tada pasirinkite „Pridėti priedą“. Ignoruokite pranešimą apie tai, kad esate šalia!

elgato išvakarėse 1

Papasakosime, kad toliau ieškosite unikalaus „HomeKit“ sąrankos kodo. Nepaisykite to ir paspauskite „Pridėti prie [savo namų pavadinimas]“.

Taip pat bus pasakyta, kad įrenginys nėra sertifikuotas. Iš tikrųjų taip nėra. Vis tiek eik į priekį. Kai pateksite į ekraną prašydami priedo kodo ...

elgato išvakarėse 2

Pasirinkite kodą įvesti rankiniu būdu ir įveskite taip:

031-45-154

Tai galima rasti / pakeisti „Light_accessory.js“ failą, bet daugiau apie tai vėliau. Pridėkite šį priedą prie numatytojo kambario, paskambinkite Netikra šviesair eikite per dialogus, norėdami pasirinkti piktogramą ir kt.

Galiausiai grįžkite į SSH seansą, kuriame veikia HAP-NodeJS. Galbūt jau matėte pranešimą, kuriame sakoma: „Mes jau?“ - tai yra „Elgato“ programos apklausa dėl šviesos būsenos. Atidarykite „Siri“ ir pasakykite jai „Įjunkite netikrą šviesą“, tada pabandykite dar kartą ją išjungti. Tikiuosi, pamatysite keletą „HAP-NodeJS“ derinimo pranešimų, kad parodytų, kad gavo komandas.

Ar mes? Ne. Įjunkite šviesą! Išjunkite šviesą!

Fantastiška, kad vienas žingsnis baigtas. Dabar mums reikės tikros šviesos, prieš grįžtant, kad vėl nustatytume tiltą.

„Wi-Fi Light“ kūrimas

Techninė šio veiksmo pusė yra stebėtinai paprasta, jei pradedame nuo keturių „Neopixels“, nes maitinimą galime suteikti tiesiogiai iš „NodeMCU dev“ plokštės ir jos USB jungties. Jei turite ilgesnę juostelę, nesijaudinkite - mes ją apibrėžėme programinėje įrangoje, taigi likusios dalys tiesiog neįsijungs.

Prijunkite raudoną maitinimo kabelį nuo „Neopixel“ stygos prie VIN kaiščio, mėlyną žemės paviršių - prie GND, o žalią signalo laidą - prie smeigtuko, pažymėto „NodeMCU“ D2. Būkite labai atsargūs dėl poliškumo: jei sumaišysite žemę ir VIN, per savo plokštę siųsite galios antplūdį ir sunaikinsite jį.

Jei jūsų „Arduino“ aplinka dar nenustatyta darbui su ESP8266, eikite į priekį ir vykdykite mano ESP8266: Arduino žudikas Susipažinkite su Arduino žudiku: ESP8266O kas, jei aš jums pasakyčiau, kad ten yra „Arduino“ suderinama „dev“ plokštė su įmontuotu „Wi-Fi“ už mažiau nei 10 USD? Na, yra. Skaityti daugiau tada grįžkite patvirtinę, kad veikia. Įdiekite šias papildomas bibliotekas:

  • „lmroy's PubSubClient“
  • „Adafruit's NeoPixels“

Kodas, kurį naudojame, yra modifikacija „Github“ vartotoja Aditya Tannu - Pašalinau nereikalingą atnaujinimo belaidžio ryšio funkciją, pridėjau kai kurių trūkstamų HSV funkcijų ir palengvinau daugiau šviesos sukuriant tik vieną kintamąjį. Jei nematote kodo, įdėto žemiau, jį rasite tai esmė.

Atnaujinkite šias eilutes naudodamiesi savo tinklo informacija ir kiekvienos sukuriamos įrangos (pagrindinio kompiuterio) unikaliu pavadinimu.

const char * ssid = "..."; const char * slaptažodis = "..."; const char * host = "oficiali šviesa"; „IPAddress MQTTserver“ (192, 168, 1, 99);

Šio įrenginio IP adresas automatiškai gaunamas per DHCP - nesvarbu, ar jis pasikeis, nes kiekvieną kartą jungiamės prie to paties MQTT serverio.

Šiuo metu mes naudojame tik 4 neopikselius, tačiau vėliau galite padidinti skaičių, jei juos maitinsite iš išorinio šaltinio. Įkelkite kodą ir išbandykime - komandoms siųsti naudokite savo mėgstamą MQTT klientą (pakeiskite pagrindinio kompiuterio pavadinimą šiose instrukcijose, jei jį pakeitėte).

  • Tu gali išsiųsti apie iki šaknies oficiali šviesa kanalą, kad jį įjungtumėte. Siųskite bet kurią kitą vertę į tą kanalą, kad jis būtų išjungtas.
  • Norėdami pakeisti spalvą, galite nusiųsti numerį nuo 0-360 į oficialų šviesą / atspalvį. Mes naudojame HSV spalvų erdvė, taigi 0 ir 360 yra raudoni, 120 yra žali, o 240 yra mėlyni.
  • Siunčiate procentinę ryškumo vertę (0–100, neįtraukite simbolio%).
  • Tas pats ir sodrumui. 100 vertė bus visiškai prisotinta (ty vientisos spalvos), o nulis bus grynai balta, nepriklausomai nuo nurodyto atspalvio.

Kai patvirtinsite, kad jūsų MQTT valdomas apšvietimo įrenginys veikia, judėkite toliau.

Naujo „HomeKit“ priedo konfigūravimas

Grįžkite į „Raspberry Pi“ ir uždarykite programą „HAP-NodeJS“, jei to dar nepadarėte. Eikite į /accessories katalogą. Kad tai būtų lengva, galite tiesiogiai atsisiųsti kodą, jau suporuotą į „officelight“ armatūrą, įvesdami šiuos duomenis:

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

Iš esmės tai yra numatytojo lengvojo priedo kopija, pakeitus kai kuriuos kintamųjų pavadinimus (vėlgi, pritaikytas „Adysan“ darbui, supaprastintas, kad būtų patogiau naudoti). Štai ką turėtumėte žinoti, kad pagal tai sukurtumėte savo pasirinktinius priedus.

  • Visi priedai turi būti pavadinti *_accessory.js
  • Pakeiskite IP adresą parinkčių kintamajame viršuje į savo MQTT serverį
  • Jei turite kitą armatūros pavadinimą, ieškokite / pakeiskite visus „oficiali šviesa“Su jūsų unikaliu armatūros pavadinimu. „Nano“ galite atlikti paiešką / pakeisti spausdami CTRL ir \, įvesdami terminą rasti, terminą pakeisti, tada paspauskite A (reiškia visas instancijas). Peržiūrėkite kiekvieną iš jų ir tiksliai sužinokite, kurie kintamieji yra atnaujinami.
  • Sukurkite unikalų šešioliktainį vartotojo vardą vartotojo priedams („light.username“ = „1B: 2B: 3C: 5D: 6E: FF“;)
  • Nekeiskite PIN kodo. Jis atitinka tam tikrą formatą ir, jei jūs nežinote, ką darote, jis negalės susieti. Nebėra problemų išlaikyti juos vienodus tarp žibintų.
  • Pridėdami juos prie „Elgato Eve“ programos, savo šviestuvui galite suteikti kitokį „Siri vardą“ ir bet kada jį redaguoti, kad neužstruktumėte dėl savo pasirinkimo. Nereikia taisyti konfigūracijos failų ar iš naujo paleisti serverio.
  • Kai turėsite keletą įrengimų, galėsite naudoti „Elgato Eve“ programą, kad sugrupuotumėte juos pagal kambarį arba sukurtumėte specifines scenas, susidedančias iš kelių sudėtingų veiksmų. Scenos gali būti sudarytos iš kelių veiksmų, tokių kaip: įjunkite biuro lemputę, pritemdykite ją iki 25%, padarykite raudoną ir suaktyvinkite kavos aparatą.

Vėl turėsite pridėti naują priedą naudodami pasirinktą „HomeKit“ programą.

Galiausiai norime paleisti savo „HAP-NodeJS“ programą kaskart paleidus „Pi“. Pridėkite šiuos dalykus prie savo tt / rc.local byla, prieš pat išėjimas 0.

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

Galite pastebėti, kad derinu tai su kai kuriomis kitomis komandomis, kurias jau nustatiau, kad paleisčiau.

„rclocal run“ mazgas paleidžiant

Jei tai yra pirmas kartas, kai naudojate rc.local, gali reikėti jį nustatyti kaip vykdomąjį:

sudo chmod 755 /etc/rc.local

Jei dėl kokių nors priežasčių vėl reikia paleisti derinimo režimu, veikiančią mazgo programą galite nužudyti naudodami:

killall mazgas

Paskutinis žingsnis: eikite į priedų katalogą ir ištrinkite „GarageDoorOpener_accessory.js“. Rašymo metu tai yra klaidinga ir po kurio laiko serveris suges.

Ką kontroliuosite naudodamiesi „Siri“?

Dabar, kai turite pagrindus, valdyti tikrai nėra jokių apribojimų - jei galite jį koduoti „Javascript“, galite sukurti savo priedų failą. Čia yra tiek daug potencialo, manau, kad jums bus smagu. Praneškite man komentaruose, ką sugalvojai!

Jamesas yra dirbtinio intelekto bakalauras ir yra CompTIA A + bei Network + sertifikuotas. Jis yra pagrindinis „MakeUseOf“ kūrėjas ir laisvalaikį praleidžia žaisdamas VR dažasvydį ir stalo žaidimus. Nuo mažens jis statė kompiuterius.