Mainos

HomeKit on vihdoin luonnossa, mahdollistaen ääniohjauksen Sirin kautta kouralliselle älykkäälle kodinkoneelle.

Valitettavasti tarkoitan kirjaimellista kourallista - kaikki, mitä olet jo ostanut, ei todennäköisesti ole yhteensopivaa. Protokolla on kuitenkin jo muunnettu ja HomeKit-sovellusliittymän avoimen lähdekoodin emulaattori on käytettävissä: tai yksinkertainen englanti, voit nyt luoda ”vääriä” HomeKit -laitteita, ja Siri hallitsee niitä samalla tavalla kuin mitä tahansa muuta virallista HomeKit-laitetta lisävaruste.

Tänään aiomme luoda Wi-Fi-ohjattavan valon ja hallita sitä Sirin avulla. Tässä on demo.

Tässä on mitä tarvitset:

  • Vadelma Pi (Olen käyttänyt RPi2: ta, asennettavien Solmujen versioissa on pieni ero päivitetyn ARM-arkkitehtuurin vuoksi - katso huomautukset myöhemmin).
  • MQTT-välittäjä asennettu Raspberry Pi: lle. Katso omat osiot ”Asenna hyttyset Pi-laitteeseesi” OpenHAB-oppaan osa 2 OpenHAB-aloittelijan opas, osa 2: ZWave, MQTT, säännöt ja kaaviotOpenHAB, avoimen lähdekoodin kotiautomaatio-ohjelmisto, ylittää huomattavasti muiden markkinoilla olevien kotiautomaatiojärjestelmien mahdollisuudet - mutta käyttöönotto ei ole helppoa. Itse asiassa se voi olla suoraan turhauttavaa. Lue lisää . Sitä ei tarvitse asentaa erityisesti Pi: lle - voit käyttää jopa pilvipohjaista MQTT-palvelinta, mutta koska tarvitsemme Pi tätä opastusta varten, se on kätevä.
  • NodeMCU v2 (Arduino-yhteensopiva)
  • Neopixel-LEDit (suosittelen 4 pikseliä testausta varten, niin voit lisätä ulkoisen virtalähteen ja lisätä niin monta kuin haluat)

HomeKit-sillan asentaminen

Asennamme NodeJS-sovelluksen nimeltä HAP-NodeJS Raspberry Pi: lle: tämä muodostaa sillan HomeKit-pyyntöjen ja Wi-Fi-laitteiden välille. Konfiguroimme tämän sillan yhdellä lisävarusteella nyt, mutta voit lisätä niin monta kuin haluat.

Asennan tämän tosiasiallisesti nykyiselle kotipalvelimelleni, jossa on OpenHAB - toivon yhdistää nämä kaksi yhdessä myöhemmin, mutta tiedä nyt, että ne voivat esiintyä saman vadelmapiin kanssa. Jos teet saman, niin vain sisään Tällöin tee kloonivarmuuskopio nykyisestä Pi SD -kortistasi Klooni SD-kortti helposti häiriöttömälle vadelma Pi-tietojenkäsittelylleOnko sinulla yksi SD-kortti tai useita, yksi asia, jota tarvitset, on kyky varmuuskopioida kortit välttääksesi ongelmat, joita syntyy, kun Raspberry Pi -sovellus ei käynnisty. Lue lisää . Jos kaikki menee pieleen, voit palata siihen.

Aloita tekemällä täysi päivitys terminaalista tai SSH-istunto Vadelma Pi: n asentaminen päättömään käyttöön SSH: n avullaRaspberry Pi voi hyväksyä SSH-komennot, kun ne on kytketty lähiverkkoon (joko Ethernet- tai Wi-Fi-yhteyden kautta), jolloin voit helposti asettaa sen. SSH: n hyödyt ylittävät päivittäisen seulonnan järkyttämisen ... Lue lisää .

sudo apt-get -päivitys. sudo apt-get päivitys. 

Saatat joutua tekemään ne kahdesti, jos on kulunut jonkin aikaa.

Asenna nyt muutama tarvitsemme ydinpaketti:

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

Seuraavaksi aiomme asentaa NodeJS: n uusimman version. Saatat olla houkutus tehdä tämä apt-get, mutta älä - tuo versio on todella vanha nyt eikä toimi. Sen sijaan käy nodejs.org, selaa kohtaan download / release / uusimman v5.x.0 / hakemistoon ja tarkista, mikä on linkki uusimmalle versiolle. Olet etsimässä linux-armv7l Raspberry Pi 2: lle tai linuxarmv6l alkuperäisille RPi-malleille. Säädä sitten URL- ja hakemistonimet tarpeen mukaan, lataa ja asenna seuraavien komentojen avulla.

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

Vahvista kirjoittamalla

solmuversio. 

Ja sinun pitäisi nähdä v5.5 (tai mikä tahansa viimeisin, jonka latasit).

Seuraavaksi meillä on asennettavia Node-moduuleja.

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

Tässä ensimmäisessä komennossa käytämme oikeastaan ​​Node Package Manager -sovellusta (npm) uuden version asentamiseksi itsestään. Clever!

Nyt, ladataksesi HomeKit-emulaattorin nimeltään HAP-NodeJS:

git klooni https://github.com/KhaosT/HAP-NodeJS.git. cd HAP-NodeJS. Npm uudelleen. sudo npm install node-persist. sudo npm install srp. 

Tässä vaiheessa suoritin tämän virheen: “#error Tämä solmun / NAN / v8-versio vaatii C ++ 11 -kääntäjän“. Jos näin tapahtuu, asenna uudempi C ++ -kääntäjä komennoilla:

sudo apt-get install gcc-4.8 g ++ - 4.8. sudo päivitysvaihtoehdot - asenna / usr / bin / gccgcc / usr / bin / gcc-4.6 20. sudo update-alternatives - asenna / usr / bin / gcc gcc /usr/bin/gcc-4.8 50. sudo update-alternatives - asenna / usr / bin / g ++ g ++ /usr/bin/g++-4.6 20. sudo update-alternatives - asenna / usr / bin / g ++ g ++ /usr/bin/g++-4.8 50. 

Nyt sinulla ei pitäisi olla ongelmia. Jatka näiden komentojen suorittamista yksi kerrallaan:

sudo npm install srp. sudo npm install mdns --unsafe-perm. sudo npm install debug. sudo npm install ed25519 - turvattomat. sudo npm install curve25519 - turvattomat. 

Sen pitäisi olla kaikkea. Kokeile suorittaa emulaattori:

solmu Core.js. 

Jos saat virheitä sanomalla, että se ei löydä sellaista ja sellaista moduulia, käytä vain sudo npm asenna komento uudelleen, ja kiinnitä puuttuvan moduulin nimi. Jos kaikki on hyvin, sinun pitäisi nähdä muutama varoitus, ja HomeKit-silta toimii. Näin menestys näyttää:

hap-nodejs asennettu

Voit heti nähdä, että se on jo luonut joukon 6 vääriä laitteita. Käytämme niitä myöhemmin oman Wi-Fi-valon lähtökohtana, mutta käytämme niitä vain nyt testaamaan. Voit nähdä lisää virheenkorjaustietoja myös, jos käynnistät palvelimen:

DEBUG = * solmu Core.js

Siirry nyt Apple-laitteelle, joka pystyy käyttämään Siri-ohjelmaa. Apple ei omituisesti tarjoa HomeKit-varastosovellusta paitsi rekisteröityneille kehittäjille, joten lataa ilmainen Elgato Eve -sovellus, HomeKit-hallintasovellus, jonka avulla voit lisätä (jopa muita kuin Elgato) laitteita HomeKit-verkkoosi.

Kun käynnistät sovelluksen ensimmäistä kertaa, sinun on nimettävä kotisi, siirry eteenpäin ja kävele sen läpi. Valitse sitten ”Lisää lisälaite”. Ohita viesti läheisyydestä!

elgato aattona 1

Se kehottaa sinua etsimään seuraavaksi yksilöllisen ”HomeKit-asennuskoodin”. Ohita se ja paina ”Lisää [kotisi nimi]”.

Se ilmoittaa myös, että laitetta ei ole sertifioitu. Itse asiassa se ei ole. Menkää joka tapauksessa. Kun pääset näytölle ja kysy lisäkoodia…

elgato aattona 2

Kirjoita koodi manuaalisesti ja kirjoita seuraava:

031-45-154

Tämä löytyy / muuttuu Light_accessory.js tiedosto, mutta lisää siitä myöhemmin. Lisää tämä lisälaite oletushuoneeseesi, soita sille Fake Light, ja jatka valintaikkunoiden läpi valitsemalla kuvake jne.

Lopuksi siirry takaisin SSH-istuntoon, jossa HAP-NodeJS on käynnissä. Olet ehkä jo nähnyt viestin, jossa sanotaan “Olemmeko käynnissä?” - se on Elgato-sovelluksen kysely valon tilan suhteen. Avaa Siri ja sano hänelle “Ota fake light käyttöön” ja yritä sitten kytkeä se pois päältä uudelleen. Toivottavasti näet joitain HAP-NodeJS-virheenkorjausviestejä osoittamaan, että se on vastaanottanut komennot.

Olemmeko? Ei. Valon kytkeminen päälle! Valon sammuttaminen!

Fantastinen, se on ensimmäinen askel valmis. Nyt tarvitsemme todellista valoa, ennen kuin palaamme konfiguroimaan silta uudelleen.

Wi-Fi-valon rakentaminen

Tämän vaiheen laitteistopuoli on yllättävän yksinkertainen, jos aloitamme vain neljällä neopixelillä, koska voimme kytkeä ne suoraan NodeMCU dev -korttiin ja sen USB-liitäntään. Jos sinulla on pidempi nauha, älä huolestu - olemme määritelleet tämän ohjelmistossa, joten loput eivät vain käynnisty.

Kytke punainen virtajohto Neopixel-juosteesta VIN-nastaan, sininen maa GND: hen ja vihreä signaalikaapeli NodeMCU: n merkittyyn napaan D2. Ole erittäin varovainen napaisuudesta: jos sekoitat maan ja VIN-arvon, lähetät suuren määrän lisäkorttia paneelisi läpi ja tuhoat sen prosessissa.

Jos Arduino-ympäristöäsi ei ole vielä määritetty toimimaan ESP8266: n kanssa, mene eteenpäin ja seuraa minun ESP8266: Arduino Killer Tapaa Arduino Killer: ESP8266Entä jos kerroin sinulle, että siellä on Arduino-yhteensopiva dev-levy, jossa on sisäänrakennettu Wi-Fi, alle 10 dollaria? No, siellä on. Lue lisää palata takaisin, kun olet vahvistanut, että se toimii. Asenna nämä ylimääräiset kirjastot:

  • lmroyn PubSubClient
  • Adafruit's NeoPixels

Käytämämme koodi on muunnos Github-käyttäjän Aditya Tannu's - Olen poistanut tarpeettomat päivitystoiminnot, lisätty joihinkin puuttuviin HSV-toimintoihin, ja helpottanut uusien valojen luomista muuttamalla vain yhtä muuttujaa. Jos et näe upotettua koodia alla, löydät sen osoitteesta tämä ydin.

Päivitä seuraavat rivit omilla verkkotiedoillasi ja jokaisella luomasi kiinnittimellä (isäntä) yksilöivällä nimellä.

const char * ssid = "..."; const char * salasana = "..."; const char * host = "virallinen valo"; IP-osoite MQTT -palvelin (192, 168, 1, 99);

Tämän kiinnittimen IP-osoite saadaan automaattisesti DHCP: n kautta - sillä ei ole väliä, muuttuuko se, koska olemme yhteydessä jokaiseen samaan MQTT-palvelimeen.

Toistaiseksi käytämme vain 4 neopixeliä, mutta voit lisätä lukumäärää myöhemmin, jos syötät ne ulkoisesta lähteestä. Lataa koodi ja testataan - käytä MQTT-suosikkiasentajaasi komentojen lähettämiseen (säädä isäntänimeä seuraavissa ohjeissa, jos olet muuttanut sitä).

  • Voit lähettää päällä juureen officelight kanava kytkeäksesi sen päälle. Lähetä kanavalle jokin muu arvo sen kytkemiseksi pois päältä.
  • Voit vaihtaa väriä lähettämällä numeron 0-360 viralliselle valolle / värisävylle. Käytämme HSV-väriavaruus, joten 0 ja 360 ovat punaisia, 120 ovat vihreitä ja 240 ovat sinisiä.
  • Lähetät kirkkauden prosenttiarvon (0–100, älä sisällä% -merkkiä).
  • Sama kylläisyydelle. Arvo 100 on täysin kyllästetty (ts. Yksivärinen) ja nolla on puhdasta valkoista riippumatta määritetystä värisävystä.

Kun olet vahvistanut MQTT-ohjaamasi valaisimen toimivan, siirry eteenpäin.

Uuden HomeKit-lisälaitteen määrittäminen

Vaihda takaisin Raspberry Pi -sovellukseen ja lopeta HAP-NodeJS-sovellus, jos et vielä ole sitä tehnyt. Siirry kohtaan /accessories hakemistoon. Tämän helpottamiseksi voit ladata suoraan koodin, joka on jo liitetty pariin "officelight" -valaisimeen, kirjoittamalla seuraava:

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

Pohjimmiltaan tämä on kaksoiskappale oletusarvoisesta kevyestä lisävarusteesta, ja joidenkin muuttujien nimet on muutettu (jälleen Adysanin teoksesta mukautettu, yksinkertaistettu käytön helpottamiseksi). Tässä on mitä sinun pitäisi tietää, kun luot omia räätälöityjä lisävarusteita tämän perusteella.

  • Kaikkien lisävarusteiden on oltava *_accessory.js
  • Vaihda yläosassa olevan muuttujan IP-osoite MQTT-palvelimeesi
  • Jos sinulla on toinen kiinnittimen nimi, etsi / korvaa kaikki "officelight”Yksilöivällä kiinnittimen nimelläsi. Voit tehdä haun / korvata Nanossa painamalla CTRL ja \, kirjoittamalla termi löytää, korvattava termi ja napsauta sitten (tarkoittaen kaikkia tapauksia). Selaa jokaisen läpi saadaksesi selville, mitä muuttujia päivitetään.
  • Luo lisälaitteelle yksilöivä heksadesimaalinen käyttäjänimi (light.username = “1B: 2B: 3C: 5D: 6E: FF”;)
  • Älä muuta PIN-koodia. Se noudattaa tiettyä muotoa, ja ellet tiedä mitä teet, se ei pysty pariksi. Niiden pitäminen samanlaisina valojen välillä ei ole ongelma.
  • Voit antaa kiinnittimellesi toisen ”Siri-nimen”, kun lisäät ne Elgato Eve -sovellukseen, ja muokata niitä milloin tahansa, jotta et ole kiinni alkuperäisestä valinnastasi. Konfiguraatiotiedostoja ei tarvitse muokata tai palvelinta käynnistää uudelleen.
  • Kun sinulla on useita kiinnikkeitä, voit Elgato Eve -sovelluksen avulla ryhmitellä ne huoneittain tai luoda erityisiä kohtauksia, jotka koostuvat useista monimutkaisista toimista. Kohtaukset voivat koostua monista toimista, kuten: kytke toimistovalo päälle, himmennä se 25%: iin, tee punaiseksi ja aktivoi kahvinkeitin.

Sinun on lisättävä uusi lisälaite valitsemasi HomeKit -sovelluksen kautta uudelleen.

Viimeinkin haluamme suorittaa HAP-NodeJS-sovelluksemme aina, kun Pi käynnistetään uudelleen. Lisää seuraava omaan etc / rc.local tiedosto, juuri ennen poistu 0.

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

Voit nähdä, että olen yhdistänyt tämän joihinkin muihin komentoihin, jotka olen jo asettanut käynnistymään käynnistyksen yhteydessä.

rclocal run node käynnistyksen yhteydessä

Jos tämä on ensimmäinen kerta, kun käytät rc.local, sinun on ehkä asetettava se suoritettavaksi:

sudo chmod 755 / etc/rc.local

Jos joudut jostain syystä suorittamaan sen uudelleen virheenkorjaustilassa, voit tappaa käynnissä olevan Solmu-sovelluksen:

killall-solmu

Viimeinen vaihe: selaa lisävarustehakemistoon ja poista GarageDoorOpener_accessory.js. Kirjoittamishetkellä tämä on viallinen, ja aiheuttaa palvelimen rikkoutumisen jonkin ajan kuluttua.

Mitä hallitset Sirillä?

Nyt kun olet saanut perustiedot alas, hallittavallesi ei todellakaan ole mitään rajoituksia - jos voit koodata sen Javascriptissa, voit luoda oman lisätiedoston. Täällä on niin paljon potentiaalia, luulen, että pidät hauskaa. Kerro minulle kommentteissa, mitä keksit!

Jamesilla on teknisen älykunnan kandidaatin tutkinto ja hän on CompTIA A + ja Network + -sertifioitu. Hän on MakeUseOfin johtava kehittäjä ja viettää vapaa-aikansa pelaamalla VR-paintballia ja lautapelejä. Hän on rakennettu tietokoneita lapsuudestaan ​​asti.