Reklama
HomeKit je konečne vo voľnej prírode a umožňuje hlasové ovládanie prostredníctvom Siri pre niekoľko inteligentných domácich spotrebičov.
Bohužiaľ mám na mysli doslovnú hrsť - všetko, čo ste si už kúpili, pravdepodobne nie je kompatibilné. Protokol však už bol prepracovaný a je k dispozícii emulátor s otvoreným zdrojom pre rozhranie API HomeKit: alebo v prostá angličtina, teraz môžete vytvárať „falošné“ zariadenia HomeKit a Siri ich bude ovládať rovnako ako akékoľvek iné oficiálne systémy HomeKit. doplnkom.
Dnes vytvoríme ovládateľné svetlo Wi-Fi a ovládame ho pomocou Siri. Tu je ukážka.
Tu budete potrebovať:
- Malinový koláč (Použil som RPi2, vzhľadom na inovovanú architektúru ARM existuje malý rozdiel vo verziách uzlov na inštaláciu - pozri poznámky neskôr).
- Na Raspberry Pi bol nainštalovaný sprostredkovateľ MQTT. Pozri časť „Inštalácia Mosquitto na váš Pi“ v mojom Sprievodca OpenHAB časť 2 Príručka pre začiatočníkov OpenHAB, časť 2: ZWave, MQTT, pravidlá a mapovanieOpenHAB, softvér pre domácu automatizáciu s otvoreným zdrojom, ďaleko prevyšuje možnosti ostatných systémov domácej automatizácie na trhu - nastavenie však nie je ľahké. V skutočnosti to môže byť úplne frustrujúce. Čítaj viac . Nemusí byť inštalovaný špeciálne na serveri Pi - môžete dokonca použiť server MQTT využívajúci cloud, ale keďže napriek tomu potrebujeme program Pi pre tento tutoriál, je to pohodlné.
- NodeMCU v2 (kompatibilný s Arduino)
- Neopixelové LED diódy (na testovanie odporúčam 4 pixely, potom môžete pridať externý zdroj napájania a pridať ľubovoľný počet bodov)
Inštalácia mosta HomeKit
Budeme inštalovať aplikáciu NodeJS s názvom HAP-NodeJS k Raspberry Pi: vytvorí most medzi požiadavkami HomeKit a zariadeniami Wi-Fi. Tento most zatiaľ nakonfigurujeme s jedným príslušenstvom, ale môžete pridať ľubovoľný počet.
Ja to vlastne inštalujem na môj existujúci domáci server so systémom OpenHAB - dúfam, že tieto dva dokopy spojím naraz neskôr, ale zatiaľ vieme, že môžu existovať na rovnakom Raspberry Pi. Ak robíte to isté, stačí prípad, vytvorte si klonovanú zálohu vašej aktuálnej karty Pi SD Ľahko naklonujte svoju SD kartu pre bezproblémový výpočet Raspberry PiČi už máte jednu kartu SD alebo viac, jedna vec, ktorú budete potrebovať, je schopnosť zálohovať karty, aby ste predišli problémom, ktoré sa vyskytnú, keď sa váš Raspberry Pi nepodarí naštartovať. Čítaj viac . Ak sa všetko pokazí, môžete to obnoviť.
Začnite úplnou aktualizáciou z terminálu alebo systému Windows Relácia SSH Nastavenie Raspberry Pi na použitie bez hlavy s SSHRaspberry Pi môže prijímať príkazy SSH, keď je pripojený k miestnej sieti (buď prostredníctvom siete Ethernet alebo Wi-Fi), čo vám umožňuje jednoduché nastavenie. Výhody SSH idú nad rámec narušenia denného skríningu ... Čítaj viac .
aktualizácia sudo apt-get. sudo apt-get upgrade.
Možno to budete musieť urobiť dvakrát, ak je to už nejaký čas.
Teraz nainštalujte niekoľko základných balíkov, ktoré budeme potrebovať:
sudo apt-get install npm git-core libnss-mdns libavahi-kompatibil-libdnssd-dev.
Ďalej nainštalujeme najnovšiu verziu NodeJS. Možno budete v pokušení to urobiť apt-get, ale nie - táto verzia je teraz naozaj stará a nebude fungovať. Namiesto toho navštívte nodejs.org, prejdite na download / release / najnovšie v5.x.0 / a skontrolujte, aký je odkaz na najnovšiu verziu. Hľadáte linux-armv7l pre Raspberry Pi 2 alebo linuxarmv6l pre originálne modely RPi. Potom podľa potreby upravte adresy URL a názvy adresárov a stiahnite a nainštalujte pomocou nasledujúcich príkazov.
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.
Potvrďte zadaním
verzia uzla.
Mali by ste vidieť v5.5 (alebo čokoľvek, čo ste si stiahli naposledy).
Ďalej je potrebné nainštalovať niektoré moduly Node.
inštalácia sudo npm -g npm. inštalácia sudo npm -g node-gyp.
Pri prvom príkaze používame na inštaláciu novšej verzie nástroja Node Package Manager (npm). Clever!
Teraz si stiahnite emulátor HomeKit s názvom HAP-NodeJS:
git klon https://github.com/KhaosT/HAP-NodeJS.git. cd HAP-NodeJS. npm prestavať. sudo npm install node-persist. sudo npm install srp.
V tomto okamihu som narazil na túto chybu: „#error Táto verzia uzla / NAN / v8 vyžaduje kompilátor C ++ 11“. Ak sa vám to stane, nainštalujte novší kompilátor C ++ s príkazmi:
sudo apt-get install gcc-4,8 g ++ - 4.8. sudo update-alternatives --install / usr / bin / gccgcc / usr / bin / gcc-4.6 20. sudo update-alternatives --install / usr / bin / gcc gcc /usr/bin/gcc-4.8 50. sudo update-alternatives --install / usr / bin / g ++ g ++ /usr/bin/g++-4.6 20. sudo update-alternatives --install / usr / bin / g ++ g ++ /usr/bin/g++-4.8 50.
Teraz by ste nemali mať problém. Pokračujte v spúšťaní týchto príkazov jeden po druhom:
sudo npm install srp. sudo npm install mdns --unsafe-perm. lado npm inštalácia ladenia. sudo npm nainštalujte ed25519 --unsafe-perm. inštalačná krivka sudo npm25519 --unsafe-perm.
To by malo byť všetko. Skúste spustiť emulátor pomocou:
uzol Core.js.
Ak sa vyskytne chyba, že takýto modul nenájdete, jednoducho použite inštalácia sudo npm príkaz a znova pripojte názov každého modulu, ktorý chýbal. Za predpokladu, že je všetko v poriadku, mali by ste vidieť niekoľko upozornení a váš most HomeKit bude v prevádzke. Takto vyzerá úspech:
Okamžite uvidíte, že už bola vytvorená sada 6 falošných zariadení. Tieto použijeme ako východiskový bod pre naše vlastné Wi-Fi svetlo neskôr, ale my ich teraz použijeme len na testovanie. Viac informácií o ladení nájdete aj v prípade, že server spustíte pomocou:
DEBUG = * uzol Core.js
Teraz preskočte na zariadenie Apple schopné spustiť Siri. Apple kupodivu neposkytuje skladovú aplikáciu HomeKit s výnimkou registrovaných vývojárov, takže si stiahnite bezplatne Aplikácia Elgato Eve, aplikácia na správu HomeKit, ktorá vám umožňuje pridať (aj iné ako Elgato) zariadenia do vašej siete HomeKit.
Pri prvom spustení aplikácie budete musieť pomenovať svoj domov, ísť do toho a prejsť sa po ňom. Potom vyberte „Pridať príslušenstvo“. Ignorujte správu o blízkosti.
Ďalej sa dozviete, ako hľadať jedinečný „inštalačný kód HomeKit“. Ignorujte to a stlačte „Pridať do [názov vášho domova]“.
Tiež sa dozviete, že zariadenie nie je certifikované. V skutočnosti to tak nie je. Aj tak pokračujte. Keď sa dostanete na obrazovku so žiadosťou o doplnkový kód ...
Vyberte, či chcete kód zadať ručne, a zadajte nasledujúci text:
031-45-154
Toto je možné nájsť / zmeniť v Light_accessory.js súbor, ale o tom viac neskôr. Pridajte toto príslušenstvo do svojej predvolenej miestnosti a zavolajte mu Falošné svetloa pokračujte v dialógoch, aby ste si vybrali ikonu atď.
Nakoniec preskočte späť na reláciu SSH, kde máte spustený HAP-NodeJS. Možno ste už videli správu s názvom „Sme na tom?“ - to je prieskum verejnej mienky aplikácie Elgato. Otvorte Siri a povedzte jej, aby zapínala falošné svetlo, a potom to skúste znova vypnúť. Dúfajme, že uvidíte nejaké ladiace správy od HAP-NodeJS, ktoré ukazujú, že dostali príkazy.
Sme na tom? Nie. Zapnutie svetla! Vypnutie svetla!
Fantastický, to je prvý krok. Predtým, ako sa vrátime na konfiguráciu mosta, budeme potrebovať skutočné svetlo.
Budovanie Wi-Fi svetla
Hardvérová stránka tohto kroku je prekvapivo jednoduchá, ak začíname so štyrmi Neopixelmi, pretože ich môžeme napájať priamo z dosky NodeMCU dev a jej pripojenia USB. Ak máte dlhší prúžok, nebojte sa - definovali sme to v softvéri, takže ostatné sa jednoducho nezapnú.
Pripojte červený napájací kábel z prameňa Neopixel na kolík VIN, modrý uzemnenie k GND a zelený signálny kábel do kolíka označeného D2 na NodeMCU. Dávajte pozor na polaritu: ak zmiešate zem a VIN, pošlete doska nápor energie a zničíte ju.
Ak vaše prostredie Arduino ešte nie je nastavené na spoluprácu s ESP8266, pokračujte a postupujte podľa pokynov v mojom ESP8266: Arduino Killer Zoznámte sa s Arduino Killer: ESP8266Čo keby som vám povedal, že existuje doska na vývojárov kompatibilná s Arduino so vstavanou sieťou Wi-Fi za menej ako 10 dolárov? No, existuje. Čítaj viac Sprievodca sa potom vráti po potvrdení, že funguje. Nainštalujte tieto ďalšie knižnice:
- lmroy's PubSubClient
- Adafruitove NeoPixely
Kód, ktorý používame, je modifikáciou Používateľ Github Aditya Tannu's - Odstránil som nepotrebnú funkciu bezdrôtovej aktualizácie, pridal som niektoré funkcie HSV, ktoré chýbali, a uľahčil som vytváranie ďalších svetiel iba zmenou jednej premennej. Ak nevidíte kód vložený nižšie, nájdete ho na adrese tento Gist.
Aktualizujte nasledujúce riadky svojimi vlastnými sieťovými informáciami a jedinečným názvom pre každé zariadenie, ktoré vytvoríte (hostiteľ).
const char * ssid = "..."; const char * password = "..."; const char * host = "officelight"; IPAddress MQTserver (192, 168, 1, 99);
IP adresa tohto zariadenia sa získa automaticky prostredníctvom DHCP - nezáleží na tom, či sa zmení, pretože sa vždy pripájame k rovnakému serveru MQTT.
Momentálne používame iba 4 neopixely, ich počet však môžete neskôr zvýšiť, ak ich napájate z externého zdroja. Nahrajte kód a vyskúšajte - na odosielanie príkazov používajte svojho obľúbeného klienta MQTT (ak ste zmenili názov hostiteľa, postupujte podľa nasledujúcich pokynov).
- Môžeš poslať na do koreňa officelight kanál ho zapnite. Ak chcete kanál vypnúť, odošlite do neho inú hodnotu.
- Môžete poslať číslo od 0 do 360 na úradné svetlo / odtieň, aby ste zmenili farbu. Používame Farebný priestor HSV, takže 0 a 360 sú červené, 120 je zelené a 240 je modré.
- Odošlete percentuálnu hodnotu jasu (0 - 100, nezahŕňa symbol%).
- To isté platí pre nasýtenie. Hodnota 100 bude úplne nasýtená (tj plná farba) a nula bude čisto biela, bez ohľadu na špecifikovaný odtieň.
Po potvrdení funkčnosti svietidla s ovládaním MQTT choďte ďalej.
Konfigurácia nového doplnku HomeKit
Prepnite späť na Raspberry Pi a ukončite aplikáciu HAP-NodeJS, ak ste tak ešte neurobili. Prejdite na stránku /accessories adresár. Aby ste to uľahčili, môžete si priamo stiahnuť kód, ktorý už bol spárovaný so svietidlom „officelight“, zadaním nasledujúceho príkazu:
wget https://gist.githubusercontent.com/jamesabruce/a6607fa9d93e41042fee/raw/12e4fd1d1c2624e7540ba5e17c3e79bc6bdec5fd/Officelight_accessory.js
V podstate ide o duplikát predvoleného svetelného príslušenstva, pričom niektoré názvy premenných sa zmenili (opäť upravené podľa práce Adysana, zjednodušené pre jednoduché použitie). Tu by ste mali vedieť, ako na základe toho vytvoriť svoje vlastné príslušenstvo.
- Všetky doplnky musia byť pomenované *_accessory.js
- Zmeňte adresu IP v premennej možností v hornej časti na server MQTT
- Ak máte iný názov príslušenstva, vyhľadajte alebo nahradiť všetky výskyty „officelight“S vaším jedinečným názvom zariadenia. Vyhľadávať / nahrádzať v Nano môžete stlačením CTRL a \, zadaním výrazu, ktorý sa má nájsť, výrazom, ktorý sa má nahradiť, a potom stlačte kláves (čo znamená všetky prípady). V jednotlivých krokoch sa dozviete, ktoré premenné sa aktualizujú.
- Vytvorte jedinečné hexadecimálne používateľské meno pre príslušenstvo (light.username = “1B: 2B: 3C: 5D: 6E: FF”;)
- Nemeňte PIN kód. Sleduje konkrétny formát a ak neviete, čo robíte, nebude sa dať spárovať. Medzi svetlami nie je problém udržiavať ich rovnaké.
- Pri ich pridávaní do aplikácie Elgato Eve môžete svojmu zariadeniu prideliť iné „Siri meno“ a kedykoľvek ich môžete upraviť, aby ste nezostali pri svojom pôvodnom výbere. Nie je potrebné upravovať konfiguračné súbory ani reštartovať server.
- Keď budete mať viac svietidiel, môžete ich pomocou aplikácie Elgato Eve zoskupiť podľa miestnosti alebo vytvoriť konkrétne scény pozostávajúce z viacerých zložitých akcií. Scény môžu pozostávať z viacerých akcií, napríklad: zapnite kancelárske svetlo, stlmte ho na 25%, zafarbite ho do červena a aktivujte kávovar.
Svoje nové príslušenstvo budete musieť znova pridať pomocou vybranej aplikácie HomeKit.
Nakoniec chceme spustiť našu aplikáciu HAP-NodeJS vždy, keď sa reštartuje program Pi. Pridajte do svojho etc / rc.local priamo pred súborom výstup 0.
uzol sudo /home/pi/HAP-NodeJS/Core.js dev / null &
Uvidíte, že som to skombinoval s niektorými ďalšími príkazmi, ktoré som už nastavil na spustenie systému.
Ak používate rc.local prvýkrát, možno budete musieť nastaviť spustiteľný súbor:
sudo chmod 755 /etc/rc.local
Ak ju z nejakého dôvodu potrebujete znova spustiť v režime ladenia, môžete spustenú aplikáciu uzla zabiť pomocou:
uzol killall
Jeden posledný krok: prejdite do adresára príslušenstva a vymažte GarageDoorOpener_accessory.js. V čase písania je to buggy a server sa po chvíli rozbije.
Čo budete ovládať pomocou Siri?
Teraz, keď máte základné základy, nie je v skutočnosti nijaký limit na to, čo môžete ovládať - ak ich môžete kódovať v jazyku Javascript, môžete si vytvoriť vlastný doplnkový súbor. Je tu toľko potenciálu, myslím, že sa budete baviť. Dajte mi vedieť v komentároch, s čím prídete!
James má bakalárske štúdium v oblasti umelej inteligencie a je držiteľom certifikátu CompTIA A + a Network +. Je popredným vývojárom MakeUseOf a trávi svoj voľný čas hraním VR paintballu a spoločenských hier. Staval počítače od malička.