reklama

HomeKit je konečně v divočině a umožňuje hlasové ovládání prostřednictvím Siri pro hrst spotřebičů chytré domácnosti.

Bohužel mám na mysli doslovnou hrstku - cokoli, co jste si již koupili, pravděpodobně není kompatibilní. Protokol však již byl vytvořen zpětně a je k dispozici emulátor s otevřeným zdrojovým kódem pro rozhraní HomeKit API: nebo v prostá angličtina, nyní můžete vytvářet „falešná“ zařízení HomeKit a Siri je bude ovládat stejně jako jakékoli jiné oficiální HomeKit doplněk.

Dnes vytvoříme ovládatelné světlo Wi-Fi a ovládáme jej pomocí Siri. Zde je ukázka.

To, co budete potřebovat:

  • Raspberry Pi (Použil jsem RPi2, vzhledem k upgradované architektuře ARM existuje malý rozdíl ve verzích uzlů - viz poznámky později).
  • Makléř MQTT nainstalovaný na Raspberry Pi. Viz část „Instalovat Mosquitto na váš Pi“ v mém Průvodce OpenHAB část 2 Příručka OpenHAB pro začátečníky Část 2: ZWave, MQTT, pravidla a mapováníOpenHAB, software pro domácí automatizaci s otevřeným zdrojovým kódem, výrazně převyšuje možnosti ostatních systémů domácí automatizace na trhu - nastavení však není snadné. Ve skutečnosti to může být naprosto frustrující. Přečtěte si více . Není nutné jej instalovat konkrétně na Pi - můžete dokonce použít cloudový MQTT server, ale protože přesto potřebujeme Pi pro tento tutoriál, je to pohodlné.
  • NodeMCU v2 (kompatibilní s Arduino)
  • LED diody Neopixel (pro testování bych doporučil 4 pixely, pak můžete přidat externí napájecí zdroj a přidat tolik, kolik chcete)

Instalace mostu HomeKit

Budeme instalovat aplikaci NodeJS s názvem HAP-NodeJS k Raspberry Pi: to vytvoří most mezi požadavky HomeKit a zařízeními Wi-Fi. Tento most prozatím nakonfigurujeme s jedním příslušenstvím, ale můžete přidat libovolný počet.

Vlastně to instaluji na můj existující domovský server, na kterém běží OpenHAB - doufám, že se oba spojí dohromady později, ale prozatím víme, že mohou existovat na stejném Raspberry Pi. Pokud děláte to samé, stačí pouzdro, vytvořte klonovou zálohu vaší aktuální Pi SD karty Snadno naklonujte SD kartu pro bezproblémový výpočet Raspberry PiAť už máte jednu SD kartu nebo více, jedna věc, kterou budete potřebovat, je schopnost zálohovat vaše karty, aby se předešlo problémům, které se vyskytnou, když se váš Raspberry Pi nepodaří zavést. Přečtěte si více . Pokud se vše pokazí, můžete to obnovit.

Začněte tím, že provedete úplnou aktualizaci z terminálu nebo SSH relace Nastavení Raspberry Pi pro bezhlavé použití s ​​SSHRaspberry Pi může přijímat SSH příkazy, když je připojen k místní síti (ethernet nebo Wi-Fi), což vám umožňuje snadné nastavení. Výhody SSH jdou nad rámec rozrušení každodenního screeningu ... Přečtěte si více .

aktualizace sudo apt-get. sudo apt-get upgrade. 

Možná to budete muset udělat dvakrát, pokud to bude nějakou dobu.

Nyní nainstalujte několik základních balíčků, které budeme potřebovat:

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

Dále nainstalujeme nejnovější verzi NodeJS. Možná byste byli v pokušení to udělat apt-get, ale ne - tato verze je nyní opravdu stará a nebude fungovat. Místo toho navštivte nodejs.org, přejděte na stáhnout / uvolnit / nejnovější-v5.x.0 / a zkontrolujte, jaký je odkaz na nejnovější verzi. Hledáš linux-armv7l pro Raspberry Pi 2 nebo linuxarmv6l pro originální modely RPi. Poté upravte adresy URL a názvy adresářů podle potřeby a stáhněte a nainstalujte pomocí následujících příkazů.

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 zadáním

verze uzlu. 

Měli byste vidět v5.5 (nebo cokoli, co jste si stáhli naposledy).

Dále máme nainstalovat některé moduly Node.

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

V tomto prvním příkazu skutečně používáme Správce balíků uzlů (npm) k instalaci jeho novější verze. Chytrý!

Nyní si stáhněte emulátor HomeKit s názvem HAP-NodeJS:

git klon https://github.com/KhaosT/HAP-NodeJS.git. cd HAP-NodeJS. npm přestavět. sudo npm install node-persist. sudo npm install srp. 

V tuto chvíli jsem spustil tuto chybu: “#error Tato verze uzlu / NAN / v8 vyžaduje kompilátor C ++ 11“. Pokud k tomu dojde, nainstalujte novější kompilátor C ++ s příkazy:

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. 

Teď byste neměli mít problém. Pokračujte ve spouštění těchto příkazů, jeden po druhém:

sudo npm install srp. sudo npm install mdns --unsafe-perm. lado instalace sudo npm. sudo npm install ed25519 --unsafe-perm. instalační křivka sudo npm25519 --unsafe-perm. 

To by mělo být všechno. Zkuste spustit emulátor pomocí:

uzel Core.js. 

Pokud se vám objeví chyby, že takový a takový modul nenajdete, použijte instalace sudo npm příkaz znovu a připojte jméno kteréhokoli modulu chyběl. Za předpokladu, že je vše v pořádku, měli byste vidět několik upozornění a váš most HomeKit bude spuštěn. Takto vypadá úspěch:

nainstalován hap-nodejs

Okamžitě uvidíte, že je již vytvořen soubor 6 falešných zařízení. Budeme je používat jako výchozí bod pro vlastní Wi-Fi světlo, ale nyní je použijeme pouze k testování. Další informace o ladění můžete také zobrazit, pokud server spustíte pomocí:

DEBUG = * uzel Core.js

Nyní přeskočte na zařízení Apple schopné spustit Siri. Apple zvědavě neposkytuje skladovou aplikaci HomeKit kromě registrovaných vývojářů, takže si stáhněte zdarma Aplikace Elgato Eve, aplikace pro správu HomeKit, která vám umožní přidat (i jiné než Elgato) zařízení do vaší sítě HomeKit.

Při prvním spuštění aplikace budete muset pojmenovat svůj domov, jít do toho a projít si to. Poté vyberte „Přidat příslušenství“. Ignorujte zprávu o blízkosti.

elgato předvečer 1

Dále vám řekne, abyste hledali jedinečný „instalační kód HomeKit“. Ignorujte to a stiskněte „Přidat do [název vašeho domova]“.

Také vám řekne, že zařízení není certifikováno. Opravdu to tak není. Pokračujte stejně. Když se dostanete na obrazovku s žádostí o doplňkový kód…

elgato předvečer 2

Zvolte ruční zadání kódu a zadejte následující:

031-45-154

Toto lze nalézt / změnit v Light_accessory.js soubor, ale o tom později. Přidejte toto příslušenství do výchozí místnosti, zavolejte Falešné světloa dále procházejte dialogy a vyberte ikonu atd.

Nakonec přejděte zpět do relace SSH, kde máte spuštěný HAP-NodeJS. Možná jste už viděli zprávu s nápisem „Jsme na tom?“ - to je dotazování aplikace Elgato pro stav světla. Otevřete Siri a řekněte jí: „Zapněte falešné světlo“, pak to zkuste znovu vypnout. Doufejme, že uvidíte nějaké ladicí zprávy od HAP-NodeJS, které ukazují, že přijaly příkazy.

Jsme na tom? Ne. Zapnutí světla! Zhasnutí světla!

Fantastický, to je krok jeden hotový. Nyní budeme potřebovat skutečné světlo, než se vrátíme, abychom znovu nakonfigurovali most.

Budování Wi-Fi světla

Hardwarová stránka tohoto kroku je překvapivě jednoduchá, pokud začneme pouhými čtyřmi neopixely, protože je můžeme napájet přímo z desky NodeMCU dev a jejího USB připojení. Pokud máte delší pásek, nebojte se - definovali jsme to v softwaru, takže zbytek se nezapne.

Připojte červený napájecí kabel z pramene Neopixelu ke kolíku VIN, modré uzemnění k GND a zelený signální kabel ke kolíku označenému D2 na NodeMCU. Při polaritě buďte velmi opatrní: pokud zamícháte zemi a VIN, pošlete do své sítě výboj energie a během procesu ji zničíte.

Pokud vaše prostředí Arduino ještě není nastaveno pro práci s ESP8266, pokračujte a postupujte podle pokynů v mém ESP8266: Arduino Killer Seznamte se s Arduino Killer: ESP8266Co kdybych ti řekl, že je tu deska pro Arduino kompatibilní s vestavěným Wi-Fi za méně než 10 $? No, je. Přečtěte si více průvodce se poté vraťte poté, co jste potvrdili, že to funguje. Nainstalujte tyto další knihovny:

  • lmroy's PubSubClient
  • Adafruit's NeoPixels

Kód, který používáme, je úpravou Uživatel Github Aditya Tannu's - Odstranil jsem zbytečnou funkci bezdrátové aktualizace, přidal jsem některé funkce HSV, které chyběly, a usnadnil jsem vytvořit více světel pouze změnou jedné proměnné. Pokud níže uvedený kód nevidíte, najdete jej na adrese tento Gist.

Aktualizujte následující řádky svými vlastními síťovými informacemi a jedinečným názvem pro každé vytvořené zařízení (hostitele).

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

IP adresa tohoto zařízení je automaticky získána pomocí DHCP - nezáleží na tom, jestli se změní, protože se pokaždé připojujeme ke stejnému serveru MQTT.

Prozatím používáme pouze 4 neopixely, ale počet můžete později zvýšit, pokud je napájíte z externího zdroje. Nahrajte kód a vyzkoušejte - k odesílání příkazů použijte svého oblíbeného klienta MQTT (pokud jste změnili název hostitele v následujících pokynech).

  • Můžeš poslat na do kořene kancelářské světlo kanál zapněte. Chcete-li jej vypnout, odešlete do kanálu jakoukoli jinou hodnotu.
  • Chcete-li změnit barvu, můžete odeslat číslo od 0 do 360 do úředního světla / odstínu. Používáme HSV barevný prostor, takže 0 a 360 jsou červené, 120 je zelené a 240 je modré.
  • Zašlete procentuální hodnotu jasu (0-100, nezahrnujte symbol%).
  • Stejné pro nasycení. Hodnota 100 bude plně nasycená (tj. Plná barva) a nula bude čistě bílá, bez ohledu na specifikovaný odstín.

Jakmile potvrdíte, že vaše osvětlovací zařízení s ovládáním MQTT funguje, pokračujte dál.

Konfigurace nového příslušenství HomeKit

Přepněte se zpět na Raspberry Pi a ukončete aplikaci HAP-NodeJS, pokud jste tak již neučinili. Přejděte na stránku /accessories adresář. Chcete-li to usnadnit, můžete přímo stáhnout kód, který již byl spárován s přípravkem „officelight“, zadáním následujícího:

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

V podstatě se jedná o duplikát výchozího lehkého příslušenství, s některými názvy proměnných změněných (opět přizpůsobených Adysanově práci, zjednodušeno pro snadné použití). Na základě toho byste měli vědět, jak vytvořit vlastní příslušenství.

  • Veškeré příslušenství musí být pojmenováno *_accessory.js
  • Změňte IP adresu v proměnné voleb nahoře na váš MQTT server
  • Pokud máte jiný název zařízení, vyhledejte nebo nahraďte všechny výskyty „kancelářské světlo“S vaším jedinečným názvem příslušenství. Hledání / nahrazení v Nano můžete provést stisknutím CTRL a \, zadáním výrazu, který chcete vyhledat, termín, který chcete nahradit, a poté stiskem A (což znamená všechny případy). V každém z nich se dozvíte, které proměnné se aktualizují.
  • Vytvořte jedinečné hexadecimální uživatelské jméno pro příslušenství (light.username = “1B: 2B: 3C: 5D: 6E: FF”;)
  • Neměňte PIN kód. Sleduje specifický formát a pokud nevíte, co děláte, nebude možné jej spárovat. Mezi světly není žádný problém udržet je stejně.
  • Svému příslušenství můžete při přidávání do aplikace Elgato Eve přiřadit jiné jméno „Siri“ a můžete je kdykoli upravit, abyste nezůstali na svém původním výběru. Není třeba upravovat konfigurační soubory ani restartovat server.
  • Jakmile budete mít více příslušenství, můžete použít aplikaci Elgato Eve k jejich seskupení podle místnosti nebo k vytvoření konkrétních scén sestávajících z několika komplexních akcí. Scény se mohou skládat z několika akcí, jako například: zapněte osvětlení kanceláře, ztlumte jej na 25%, změňte barvu na červenou a aktivujte kávovar.

Budete muset přidat své nové příslušenství znovu pomocí své aplikace HomeKit.

Nakonec chceme spustit naši aplikaci HAP-NodeJS při každém restartu Pi. Přidejte do svého etc / rc.local soubor přímo před souborem exit 0.

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

Uvidíte, že jsem to kombinoval s některými dalšími příkazy, které jsem již nastavil, aby začaly zavádět.

uzel rclocal run při spuštění

Pokud používáte rc.local poprvé, možná budete muset nastavit jako spustitelný soubor:

sudo chmod 755 /etc/rc.local

Pokud ho z nějakého důvodu potřebujete znovu spustit v ladicím režimu, můžete zabít běžící aplikaci Node pomocí:

uzel killall

Jeden poslední krok: přejděte do adresáře příslušenství a odstraňte GarageDoorOpener_accessory.js. V době psaní je to buggy a způsobí, že se server po chvíli zlomí.

Co budete ovládat se Siri?

Teď, když máte základní základy, není ve skutečnosti žádné omezení na to, co můžete ovládat - pokud je můžete kódovat v Javascriptu, můžete si vytvořit svůj vlastní soubor příslušenství. Je tu tolik potenciálu, myslím, že se budete bavit. Dejte mi vědět v komentářích, s čím jste přišli!

James má bakalářský titul v oboru umělé inteligence a je držitelem certifikátu CompTIA A + a Network +. Je hlavním vývojářem MakeUseOf a tráví svůj volný čas hraním VR paintballu a deskových her. Staví počítače od dětství.