Reklaam

HomeKit on lõpuks vabas looduses, võimaldades Siri kaudu hääljuhtimist käputäiele nutikatele koduseadmetele.

Kahjuks pean silmas sõna otseses mõttes käputäit - miski, mille olete juba ostnud, pole tõenäoliselt ühilduv. Protokoll on juba pöördprojekteeritud ja saadaval on HomeKiti API avatud lähtekoodiga emulaator: või lihtsas inglise keeles, saate nüüd luua võltsitud HomeKiti seadmeid ja Siri kontrollib neid nagu iga teine ​​ametlik HomeKit tarvik.

Täna loome WiFi abil kontrollitava tule ja loome seda Siri abil. Siin on demo.

Vaja on järgmist.

  • Vaarika Pi (Olen kasutanud RPi2-d, uuendatud ARM-arhitektuuri arvestades on sõlmeversioonides väike erinevus - vt märkmeid hiljem).
  • Raspberry Pi-le paigaldatud MQTT-maakler. Vaadake minu jaotist “Mosquitto paigaldamine oma Pi-le” OpenHAB juhendi 2. osa OpenHABi algajate juhend, 2. osa: ZWave, MQTT, reeglid ja diagrammidAvatud lähtekoodiga kodutehnika automatiseerimistarkvara OpenHAB ületab kaugelt teiste turul olevate koduautomaatikasüsteemide võimalusi - kuid selle seadistamine pole lihtne. Tegelikult võib see olla täiesti pettumust valmistav.
    instagram viewer
    Loe rohkem
    . Seda ei pea spetsiaalselt Pi-le installima - võite kasutada isegi pilvepõhist MQTT-serverit, kuid kuna selle õpetuse jaoks on meil igal juhul vaja Pi, on see mugav.
  • NodeMCU v2 (ühildub Arduino)
  • Neopixeli LEDid (soovitaksin katsetamiseks 4 pikslit, siis saate lisada välise toiteallika ja lisada nii palju kui soovite)

HomeKiti silla installimine

Installime NodeJS-i rakenduse nimega HAP-sõlmeJS Raspberry Pi juurde: see loob silla HomeKiti taotluste ja Wi-Fi-seadmete vahel. Konfigureerime selle silla praegu ühe lisaseadmega, kuid võite lisada nii palju kui soovite.

Installin selle tegelikult oma olemasolevasse koduserverisse, kus töötab OpenHAB - loodan, et ühendan need kaks korraga hilisem kuupäev, kuid nüüd tea, et nad võivad eksisteerida samal Raspberry Pi-l. Kui teete sama, siis lihtsalt sisse juhtum, Tehke praegusest Pi SD-kaardist kloonivarukoopia SD-kaardi hõlpsalt kloonige probleemivaba vaarika Pi-arvuti jaoksÜkskõik, kas teil on üks SD-kaart või mitu, on vaja vaid oma kaartide varundamist, et vältida probleeme, mis tekivad siis, kui teie Raspberry Pi alglaadimine nurjub. Loe rohkem . Kui kõik läheb valesti, saate selle juurde taastada.

Alustage täieliku uuendamisega terminalist või SSH seanss Vaarikapi seadistamine peata kasutamiseks SSH-gaRaspberry Pi võib vastu võtta SSH-käske, kui nad on kohaliku võrguga ühendatud (kas Etherneti või Wi-Fi kaudu), võimaldades teil seda hõlpsasti seadistada. SSH eelised ületavad igapäevase sõeluuringu häirimise ... Loe rohkem .

sudo apt-get update. sudo apt-get upgrade. 

Võimalik, et peate neid tegema kaks korda, kui juba mõnda aega on möödas.

Installige nüüd mõned põhipaketid, mida me vajame:

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

Järgmisena hakkame installima NodeJS uusimat versiooni. Teil võib olla kiusatus seda teha apt-get, kuid ärge seda - see versioon on nüüd tõesti vana ja ei tööta. Selle asemel külastage nodejs.org, sirvige allalaadimine / vabastamine / uusim-v5.x.0 / ja kontrollige uusima versiooni linki. Sa otsid linux-armv7l vaarika Pi 2 jaoks või linuxarmv6l originaalsete RPi mudelite jaoks. Seejärel kohandades URL-e ja katalooginimesid vastavalt vajadusele, laadige alla ja installige järgmiste käskude abil.

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 / kohalik. 

Kinnitage sisestades

sõlme versioon. 

Ja peaksite nägema v5.5 (või mis iganes, viimane, mis te alla laadisite).

Järgmisena on meil installimiseks mõned sõlme moodulid.

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

Selles esimeses käsus kasutame tegelikult Node Package Manager (npm) enda uuema versiooni installimiseks. Nutikad!

Nüüd saate HomeKiti emulaatori allalaadimiseks helistada HAP-sõlmeJS:

git kloon https://github.com/KhaosT/HAP-NodeJS.git. cd HAP-NodeJS. npm uuesti üles ehitada. sudo npm install node-persist. sudo npm install srp. 

Sel hetkel juhtus mul see viga: “#error See sõlme / NAN / v8 versioon nõuab C ++ 11 kompilaatorit“. Kui see juhtub teiega, installige hilisem C ++ kompilaator käskudega:

sudo apt-get install gcc-4.8 g ++ - 4.8. sudo update-alternatives - installige / usr / bin / gccgcc / usr / bin / gcc-4.6 20. sudo update-alternatives - installige / usr / bin / gcc gcc /usr/bin/gcc-4.8 50. sudo update-alternatives --installige / usr / bin / g ++ g ++ /usr/bin/g++-4.6 20. sudo update-alternatives --installige / usr / bin / g ++ g ++ /usr/bin/g++-4.8 50. 

Nüüd ei tohiks teil probleeme olla. Jätkake ükshaaval nende käskude käitamist:

sudo npm install srp. sudo npm install mdns --unsafe-perm. sudo npm install silumine. sudo npm install ed25519 --unsafe-perm. sudo npm installikõver25519 - ohtlik-perm. 

See peaks olema kõik. Proovige emulaatorit käitada:

sõlm Core.js. 

Kui leiate vigu, öeldes, et sellist ja sellist moodulit ei leita, kasutage lihtsalt nuppu sudo npm installimine uuesti käsku ja kinnitage selle mooduli nimi, mis puudus. Eeldades, et kõik on hästi, peaksite nägema mõnda hoiatust ja teie HomeKiti sild töötab. Edu näeb välja selline:

hap-nodejs installitud

Näete kohe, et see on juba loonud 6 võltsseadme komplekti. Kasutame neid hiljem omaenda WiFi-tule lähtepunktina, kuid kasutame neid praegu ainult testimiseks. Lisateavet silumisteabe kohta saate vaadata ka siis, kui käivitate serveri:

DEBUG = * sõlm Core.js

Nüüd liikuge üle Apple'i seadmele, mis suudab Siri käitada. Apple pakub uudishimulikult ainult HomeKiti varurakendust, välja arvatud registreeritud arendajatele, nii et laadige alla tasuta Elgato Eve rakendus, HomeKiti haldusrakendus, mis võimaldab teil lisada (isegi mitte Elgato) seadmeid oma HomeKiti võrku.

Rakenduse esmakordsel käivitamisel peate nimetama oma kodu, siis minge edasi ja kõndige sellest läbi. Seejärel valige “Add Accessory”. Ignoreerige sõnumit selle lähedal olemise kohta!

elgato eelõhtul 1

Seejärel käsitatakse teil järgmiseks otsida ainulaadne „HomeKiti häälestuskood”. Ignoreerige seda ja klõpsake nuppu „Lisage [oma kodu nimi]”.

Samuti antakse teile teada, et seade pole sertifitseeritud. Tegelikult see pole nii. Minge edasi. Kui jõuate ekraanile lisakoodi küsima ...

elgato eelõhtul 2

Valige kood käsitsi sisestamiseks ja sisestage järgmine tekst:

031-45-154

Selle võib leida / muuta kataloogis Light_accessory.js faili, kuid sellest hiljem. Lisage see lisavarustus oma vaiketoale, helistage sellele Võltsvalgusja jätkake dialoogide sirvimist, et valida ikoon jne.

Lõpuks liikuge tagasi SSH-seansi juurde, kus töötab HAP-NodeJS. Võib-olla olete juba näinud sõnumit, kus öeldakse: "Kas me oleme?" - see on rakenduse Elgato küsitlus valguse oleku kohta. Avage Siri ja öelge tal "Lülita võltsvalgus sisse", seejärel proovige see uuesti välja lülitada. Loodetavasti näete mõnda HAP-NodeJS silumisteadet, et näidata, et ta sai käsud.

Kas me oleme kohal? Ei. Lülitage tuli sisse! Valguse väljalülitamine!

Fantastiline, see on esimene samm valmis. Nüüd vajame enne silla uuesti konfigureerimiseks naasmist tegelikku valgust.

WiFi-valgustuse ehitamine

Selle sammu riistvarakülg on üllatavalt lihtne, kui alustame kõigest nelja Neopixeliga, kuna saame neid toita otse NodeMCU dev-plaadilt ja selle USB-ühendusest. Kui teil on pikem riba, siis ärge muretsege - oleme selle tarkvara määratlenud, nii et ülejäänud lihtsalt ei lülitu sisse.

Ühendage punane toitekaabel Neopixeli ahelast VIN-i tihvtiga, sinine maandus GND-ga ja roheline signaalikaabel NodeMCU tähisega D2. Olge polaarsuse suhtes väga ettevaatlik: kui segate maapinna ja VIN-i kokku, saadate oma tahvli kaudu vooluhulga ja hävitate selle protsessi käigus.

Kui teie Arduino keskkonda pole veel seadmega ESP8266 töötamiseks seadistatud, minge edasi ja järgige juhiseid minu ESP8266: Arduino Killer Tutvuge Arduino tapjaga: ESP8266Mis siis, kui ma ütleksin teile, et seal on sisseehitatud WiFi-ga Arduino-ühilduv arendusplaat vähem kui 10 dollari eest? Noh, on olemas. Loe rohkem siis tule tagasi pärast seda, kui oled kinnitanud, et töötab. Installige järgmised täiendavad teegid:

  • lmroy's PubSubClient
  • Adafruit's NeoPixels

Kood, mida kasutame, on modifikatsioon Githubi kasutaja Aditya Tannu’s - Eemaldasin tarbetu raadioside värskenduse funktsiooni, lisasin mõned puuduvad HSV-funktsioonid ja lihtsustasin rohkem tulede loomist, muutes ainult ühte muutujat. Kui te ei näe allpool manustatud koodi, leiate selle aadressilt see olemus.

Uuendage järgmisi ridu oma võrguteabe ja iga teie loodud armatuuri (host) kordumatu nimega.

const char * ssid = "..."; const char * parool = "..."; const char * host = "officelight"; IP-aadress MQTTserver (192, 168, 1, 99);

Selle võistluskalendri IP-aadress saadakse automaatselt DHCP kaudu - pole vahet, kas see muutub, kuna ühendume iga kord sama MQTT-serveriga.

Praegu kasutame ainult 4 neopikseli, kuid kui te toitetate neid välisest allikast, saate seda hiljem suurendada. Laadige kood üles ja lähme testima - käskude saatmiseks kasutage oma MQTT-i lemmiklienti (kohandage hostinime järgmistes juhistes, kui olete seda muutnud).

  • Sa saad saata peal juure ametlik valgus kanal selle sisselülitamiseks. Selle väljalülitamiseks saatke kanalile mõni muu väärtus.
  • Värvuse muutmiseks võite saata numbri vahemikus 0-360 kohtvalgusti / tooni. Me kasutame HSV värviruum, nii et 0 ja 360 on punased, 120 on rohelised ja 240 on sinised.
  • Saadate heleduse protsentuaalse väärtuse (0–100, ärge lisage sümbolit%).
  • Sama küllastuse korral. Väärtus 100 on täielikult küllastunud (st ühtlane värv) ja null on puhas valge, sõltumata täpsustatud toonist.

Kui olete kinnitanud, et teie MQTT-juhitav valgustusseade töötab, liikuge edasi.

Uue HomeKiti lisaseadme konfigureerimine

Lülitage tagasi Vaarika Pi juurde ja lõpetage rakendus HAP-NodeJS, kui te seda veel teinud pole. Liikuge lehele /accessories kataloog. Lihtsamaks muutmiseks saate otse alla laadida kood, mis on juba ühendatud „officelight” võistluskalendriga, sisestades järgmised andmed:

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

Põhimõtteliselt on see vaikimisi kasutatava lisavarustuse duplikaat koos muudetud muutujate nimedega (uuesti kohandatud Adysani töödest, kasutamise lihtsustamiseks). Selle põhjal peaksite teadma oma kohandatud lisaseadmete loomiseks.

  • Kõigil tarvikutel peab olema nimi *_accessory.js
  • Muutke ülaosas olevas muutuja IP-aadress oma MQTT-serveriks
  • Kui teil on erinev kinnitusnimi, otsige / asendage kõik „ametlik valgus”Teie ainulaadse võistluskalendri nimega. Nanos saate otsida / asendada, vajutades CTRL ja \, tippides termini otsimiseks termini asendamiseks ja siis vajutades A (tähendab kõiki juhtumeid). Kõigist neist saate läbi täpselt teada saada, milliseid muutujaid värskendatakse.
  • Lisaseadme jaoks unikaalse kuueteistkümnenda kasutajanime loomine (light.username = “1B: 2B: 3C: 5D: 6E: FF”;)
  • Ärge muutke PIN-koodi. See järgib kindlat vormingut ja kui te ei tea, mida teete, ei saa seda siduda. Nende hoidmine tulede vahel sama pole.
  • Kui lisate rakendusele Elgato Eve rakenduse, saate oma võistluskalendrile anda erineva nime „Siri nimi” ja muutke neid igal ajal, et te ei jääks oma algse valiku poole. Konfiguratsioonifaile pole vaja redigeerida ega serverit taaskäivitada.
  • Kui teil on mitu võistluskalendrit, saate rakenduse Elgato Eve abil neid rühmade kaupa grupeerida või luua mitmest keerulisest toimingust koosnevaid spetsiifilisi stseene. Stseenid võivad koosneda mitmest toimingust, näiteks: lülitage kontorivalgus sisse, tuhmutage see 25% -ni, muutke see punaseks ja aktiveerige kohvimasin.

Peate uue lisaseadme lisama valitud HomeKiti rakenduse kaudu.

Lõpuks tahame käivitada meie rakenduse HAP-NodeJS alati, kui Pi taaskäivitatakse. Lisage oma lehele järgmine tekst jne / rc.local fail, otse enne väljumine 0.

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

Näete, et olen seda kombineerinud mõne muu käsklusega, mille olen juba alglaadimiseks seadnud.

rclocal run sõlm käivitamisel

Kui kasutate rc.local seda esimest korda, peate võib-olla määrama selle käivitatavaks:

sudo chmod 755 /etc/rc.local

Kui peate seda mingil põhjusel uuesti silumisrežiimis käivitama, saate töötava sõlmerakenduse tappa järgmistel viisidel:

killall sõlm

Viimane samm: liikuge tarvikute kataloogi ja kustutage kataloog GarageDoorOpener_accessory.js. Selle kirjutamise ajal on see viga ja põhjustab mõne aja pärast serveri purunemise.

Mida saate Siri abil kontrollida?

Nüüd, kui põhitõed on lahti lastud, pole teie kontrollimisel tegelikult mingeid piiranguid - kui saate selle JavaScriptis kodeerida, saate oma lisaseadme faili teha. Siin on nii palju potentsiaali, ma arvan, et teil on lõbus. Andke kommentaarides teada, millega te välja tulete!

Jamesil on tehisintellekti BSc ning ta on CompTIA A + ja Network + sertifikaadiga. Ta on MakeUseOfi juhtiv arendaja ja veedab oma vaba aega VR-i paintballi ja lauamänge mängides. Ta on lapsest peale arvutit ehitanud.