Jak si vyrobit DIY Siri-kontrolované Wi-Fi světlo

  • Owen Little
  • 0
  • 4862
  • 105
reklama

HomeKit je konečně v divočině a umožňuje hlasové ovládání prostřednictvím Siri pro hrst spotřebičských inteligentních domácích zařízení.

Bohužel mám na mysli doslovnou hrstku - všechno, 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čtině můžete nyní vytvářet “falešný” Zařízení HomeKit a Siri je budou ovládat stejně jako jakékoli jiné oficiální příslušenství HomeKit.

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, existuje malý rozdíl ve verzi Node pro instalaci vzhledem k upgradované architektuře ARM - viz poznámky později).
  • Makléř MQTT nainstalovaný na Raspberry Pi. Viz část “Nainstalujte Mosquitto na svůj Pi” v mém průvodci OpenHAB, část 2 Příručka pro začátečníky OpenHAB, část 2: ZWave, MQTT, pravidla a mapování Příručka 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 jiných systémů domácí automatizace. na trhu - ale není snadné se připravit. Ve skutečnosti to může být naprosto frustrující. . Není nutné jej instalovat speciálně 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

Chystáme nainstalovat aplikaci NodeJS s názvem HAP-NodeJS do Raspberry Pi: toto vytvoří most mezi požadavky HomeKit a zařízeními Wi-Fi. Tento most zatí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 tyto dva propojíme později, ale prozatím víme, že mohou existovat společně na stejném Raspberry Pi. Pokud děláte totéž, jen pro případ, vytvořte zálohu klonování vaší aktuální Pi SD karty Snadné klonování SD karty pro bezproblémový Raspberry Pi Computing Snadné klonování SD karty pro bezproblémový výpočet Raspberry Pi Ať už máte SD karta nebo několik, 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 Raspberry Pi nepodaří zavést. . Pokud se vše pokazí, můžete to obnovit.

Začněte úplným upgradem z terminálu nebo relace SSH Nastavení Raspberry Pi pro použití bez hlavy s SSH Nastavení Raspberry Pi pro použití bez hlavy s SSH Raspberry Pi může přijímat SSH příkazy, když je připojen k místní síti (buď pomocí Ethernetu) nebo Wi-Fi), což vám umožní snadné nastavení. Výhody SSH přesahují každodenní screening… .

sudo apt-get update sudo apt-get upgrade 

Možná to budete muset udělat dvakrát, pokud je to už 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 - ta 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 bylo naposledy stažené).

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

instalace sudo npm -g npm instalace sudo npm -g node-gyp 

V tomto prvním příkazu vlastně pomocí Správce balíků uzlů (npm) instalujeme jeho novější verzi. Chytrý!

Nyní si můžete stáhnout emulátor HomeKit s názvem HAP-NodeJS:

git clone https://github.com/KhaosT/HAP-NodeJS.git cd HAP-NodeJS npm přestavět sudo npm nainstalovat uzel-přetrvávat sudo npm nainstalovat 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 alternativ sudo update -install / usr / bin / g ++ g ++ /usr/bin/g++-4.6 20 alternativ sudo update -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 sudo npm install debug sudo npm install ed25519 --unsafe-perm sudo npm instalační křivka25519 --unsafe-perm 

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

uzel Core.js 

Pokud se vám zobrazí chyby, že takový a takový modul nemůže najít, 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:

Okamžitě uvidíte, že se již vytvořila sada 6 falešných zařízení. Budeme je používat jako výchozí bod pro naše vlastní Wi-Fi světlo později, ale my je nyní 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 bezplatnou aplikaci Elgato Eve, aplikaci pro správu HomeKit, která vám umožní přidat (i neelgato) 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 se po něm. Poté vyberte “Přidat příslušenství”. Ignorujte zprávu o blízkosti!

To vám řekne, abyste hledali jedinečný “Instalační kód HomeKit” další. Ignorujte to a trefte “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…

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 více o tom později. Přidejte toto příslušenství do výchozí místnosti, zavolejte Falešné světlo, a pokračujte v dialogu 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, která říká “Jsme na tom?” - to je dotazování aplikace Elgato pro stav světla. Otevři Siri a řekni jí to “Zapněte falešné světlo”, pak to zkuste znovu vypnout. Doufejme, že uvidíte nějaké ladicí zprávy z 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 na palubu nárůst 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: ESP8266 Seznamte se s Arduino Killer: ESP8266 Co kdybych vám řekl, že existuje Arduino kompatibilní dev deska s vestavěným Wi-Fi za méně než 10 $? No, je. 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 modifikací uživatele 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 vytváření dalších světel pouze změnou jednoduchá proměnná. Pokud nevidíte níže uvedený kód, najdete ho v tomto Gistu.

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žívejte svého oblíbeného klienta MQTT (pokud jste změnili název hostitele v následujících pokynech).

  • Můžeš poslat na na kořen kancelářské světlo kanál zapněte. Chcete-li kanál vypnout, odešlete do kanálu další hodnotu.
  • Chcete-li změnit barvu, můžete odeslat číslo od 0 do 360 do úředního světla / odstínu. Používáme barevný prostor HSV, takže 0 a 360 jsou červené, 120 je zelené a 240 je modré.
  • Odesíláte 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 zpět na Raspberry Pi a ukončete aplikaci HAP-NodeJS, pokud jste tak již neučinili. Přejděte na stránku /Příslušenství adresář. Chcete-li to usnadnit, můžete si přímo stáhnout kód, který již byl spárován s “kancelářské světlo” příslušenství 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šených pro snadné použití). Zde byste měli vědět, jak na základě toho 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 / nahraďte všechny instance “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 termínu, který chcete najít, termín, který chcete nahradit, a poté stiskem klávesy 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. Není problém udržovat je mezi světly stejnými.
  • Svému příslušenství můžete dát jiný “Siri jméno” když je přidáváte do aplikace Elgato Eve, a kdykoli je upravovat, abyste nebyli upoutáni svou počáteční volbou. Není třeba upravovat konfigurační soubory ani restartovat server.
  • Jakmile máte 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 více komplexních akcí. Scény se mohou skládat z několika akcí, jako například: rozsvítí se kancelářské světlo, ztlumí se na 25%, změní se na červenou a aktivuje 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 následující do svého etc / rc.local soubor přímo před souborem exit 0.

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

Můžete vidět, že jsem to kombinoval s některými dalšími příkazy, které jsem již nastavil, aby začaly zavádě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 Sirim?

Teď, když máte základy dolů, 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!




Bisher hat noch niemand einen Kommentar zu diesem Artikel abgegeben.

O moderní technologii, jednoduché a cenově dostupné.
Váš průvodce ve světě moderních technologií. Naučte se, jak používat technologie a pomůcky, které nás každý den obklopují, a naučte se, jak objevovat na internetu zajímavé věci.