реклама

HomeKit най-накрая е сред природата, което позволява гласово управление чрез Siri за шепа потребителски умни устройства за дома.

За съжаление имам предвид буквална шепа - всичко, което вече сте купили, вероятно не е съвместимо. Протоколът обаче вече е проектиран обратно и е достъпна емулатор с отворен код за HomeKit API: или в обикновен английски, сега можете да създадете „фалшиви“ HomeKit устройства и Siri ще ги контролира, както всички други официални HomeKit аксесоар.

Днес ще създадем контролируема Wi-Fi светлина и ще я контролираме със Siri. Ето демонстрация

Ето какво ще ви трябва:

  • Raspberry Pi (Използвал съм RPi2, има малка разлика във версиите на Node за инсталиране предвид обновената ARM архитектура - вижте бележките по-късно).
  • MQTT брокер, инсталиран на Raspberry Pi. Вижте раздела „Инсталиране на комар на вашия Pi“ в моето Ръководство за OpenHAB, част 2 Ръководство за начинаещи на OpenHAB Част 2: ZWave, MQTT, правила и диаграмиOpenHAB, софтуерът за домашна автоматизация с отворен код, далеч надхвърля възможностите на други системи за домашна автоматизация на пазара - но не е лесно да се настрои. Всъщност това може да бъде направо разочароващо.
    instagram viewer
    Прочетете още
    . Не е необходимо да бъде инсталиран специално на Pi - дори можете да използвате MQTT сървър, базиран на облак, но тъй като така или иначе се нуждаем от Pi за този урок, това е удобно.
  • NodeMCU v2 (съвместим с Arduino)
  • Неопикселови светодиоди (препоръчвам 4 пиксела за тестване, след което можете да добавите външно захранване и да добавите колкото искате)

Инсталиране на HomeKit Bridge

Ще инсталираме приложение NodeJS, наречено НАР-NodeJS към Raspberry Pi: това ще образува мост между заявките на HomeKit и Wi-Fi устройствата. За сега ще конфигурираме този мост с един аксесоар, но можете да добавите колкото искате.

Всъщност инсталирам това на моя съществуващ домашен сървър, работещ OpenHAB - надявам се да свържа двете заедно в a по-късна дата, но засега знайте, че те могат да съществуват в същата Raspberry Pi. Ако правите същото, просто влезте случай, направете резервно копие на клонинг на текущата си Pi SD карта Лесно клонирайте вашата SD карта за безпроблемни изчисления на Raspberry PiНезависимо дали имате една SD карта или няколко, едно нещо, което ще ви е необходимо, е способността да архивирате вашите карти, за да избегнете проблемите, които възникват, когато Raspberry Pi не успее да се зареди. Прочетете още . Ако всичко се обърка, можете да се възстановите на това.

Започнете с пълното ъпгрейд от Terminal или an SSH сесия Настройка на вашия Raspberry Pi за употреба без глава с SSHRaspberry Pi може да приема SSH команди, когато е свързан към локална мрежа (или чрез Ethernet или Wi-Fi), което ви позволява лесно да го настроите. Предимствата на SSH надхвърлят разстройството на ежедневния скрининг ... Прочетете още .

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

Може да се наложи да ги направите два пъти, ако мина известно време.

Сега инсталирайте няколко основни пакета, от които ще се нуждаем:

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

След това ще инсталираме най-новата версия на NodeJS. Може да се изкушите да направите това ап-да, но не - тази версия вече е стара и няма да работи. Вместо това, посетете nodejs.org, прегледайте до изтегляне / освобождаване / последно v5.x.0 / директория и проверете каква е връзката за най-новата версия. Вие търсите Linux-armv7l за Raspberry Pi 2, или linuxarmv6l за оригиналните модели RPi. След това, коригирайки URL адресите и имената на директории, ако е необходимо, изтеглете и инсталирайте, като използвате следните команди.

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. 

Потвърдете, като напишете

версия на възел 

И трябва да видите v5.5 (или каквото и да е най-новото, което сте изтеглили).

След това имаме няколко модула на Node, които да инсталираме.

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

В тази първа команда всъщност използваме Node Package Manager (npm), за да инсталираме по-нова версия на себе си. Clever!

Сега, за да изтеглите емулатора HomeKit, наречен НАР-NodeJS:

git клон https://github.com/KhaosT/HAP-NodeJS.git. CD HAP-NodeJS. npm възстановяване. sudo npm инсталирайте node-persist. sudo npm инсталира srp. 

В този момент аз пуснах тази грешка: "#error Тази версия на възел / NAN / v8 изисква компилатор C ++ 11“. Ако това се случи с вас, инсталирайте по-нов C ++ компилатор с командите:

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

Сега не би трябвало да имате проблем. Продължете да изпълнявате тези команди една по една:

sudo npm инсталира srp. sudo npm инсталирайте mdns --unsafe-perm. sudo npm инсталирайте грешка. sudo npm инсталирайте ed25519 - безопасна перм. sudo npm инсталирайте curve25519 - unsafe-perm. 

Това трябва да е всичко. Опитайте да стартирате емулатора с:

възел Core.js. 

Ако получите грешки, казвайки, че не може да намери такъв и такъв модул, просто използвайте sudo npm инсталиране командвайте отново и прикрепете името на модула, който липсваше. Ако приемем, че всичко е наред, трябва да видите няколко предупреждения и вашият HomeKit мост ще работи. Ето как изглежда успехът:

инсталиран е hap-nodejs

Веднага виждате, че вече е създаден набор от 6 фалшиви устройства. Ще ги използваме като отправна точка за нашата собствена Wi-Fi светлина по-късно, но сега просто ще ги използваме за тестване. Можете също да видите повече информация за отстраняване на грешки, ако стартирате сървъра с:

DEBUG = * възел Core.js

Сега прескочете към Apple устройство, което може да работи Siri. Apple любопитно не предоставя налично приложение HomeKit, освен на регистрирани разработчици, така че изтеглете безплатно Приложението Elgato Eve, приложение за управление на HomeKit, което ви позволява да добавяте (дори не-Elgato) устройства към вашата HomeKit мрежа.

Първият път, когато стартирате приложението, ще трябва да посочите дома си, продължете напред и преминете през това. След това изберете „Добавяне на аксесоар“. Игнорирайте съобщението за това, че сте близо до него!

elgato eve 1

След това ще ви каже да потърсите уникален „HomeKit Setup Code“. Игнорирайте това и натиснете „Добавяне към [името на вашия дом]“.

Освен това ще Ви каже, че устройството не е сертифицирано. Всъщност не е така. Продължавайте все пак. Когато стигнете до екрана с искане за допълнителен код ...

elgato Eve 2

Изберете да въведете кода ръчно и въведете следното:

031-45-154

Това може да се намери / промени в Light_accessory.js файл, но повече за това по-късно. Добавете този аксесоар към вашата стая по подразбиране, обадете му се Фалшива светлинаи продължете да се разхождате през диалоговите прозорци, за да изберете икона и т.н.

И накрая, върнете се назад към SSH сесията, където имате HAP-NodeJS. Вероятно вече сте виждали съобщение, казващо: „Ние сме включени?“ - това е приложението Elgato за солидно състояние. Отворете Сири и й кажете „Включете фалшива светлина“, след което опитайте да я изключите отново. Надяваме се, че ще видите някои съобщения за отстраняване на грешки от HAP-NodeJS, за да покажете, че е получил командите.

Ние сме на? Не. Включване на светлината! Изключване на светлината!

Фантастично, това е стъпка първа. Сега ще ни трябва актуална светлина, преди да се върнем, за да конфигурираме отново моста.

Изграждане на Wi-Fi светлина

Хардуерната страна на тази стъпка е изненадващо проста, ако започнем само с четири Neopixels, тъй като можем да захранваме тези директно от Dev Board NodeMCU и неговата USB връзка. Ако имате по-дълга лента, не се притеснявайте - това сме дефинирали в софтуера, така че останалите просто няма да се включат.

Свържете червения захранващ кабел от Neopixel кичур към VIN пин, синята земя към GND, а зеленият сигнален кабел към щифта, обозначен с D2 на NodeMCU. Бъдете много внимателни относно полярността: ако смесите земята и VIN, ще изпратите прилив на енергия през вашата дъска и ще я унищожите в процеса.

Ако вашата Arduino среда все още не е настроена да работи с ESP8266, продължете и следвайте ръководството в моето ESP8266: Arduino Killer Запознайте се с Arduino Killer: ESP8266Ами ако ви кажа, че има съвместим с Arduino плат за разработка с вграден Wi-Fi за по-малко от 10 долара? Е, има. Прочетете още след това се върнете, след като потвърдите, че работи. Инсталирайте тези допълнителни библиотеки:

  • lmroy's PubSubClient
  • NeoPixels на Adafruit

Кодът, който използваме, е модификация на Потребителят на Github Aditya Tannu - Премахнах ненужната функционалност за актуализиране на въздуха, добавих в някои функции на HSV, които липсваха, и улесних създаването на повече светлини, като променя само една променлива. Ако не можете да видите кода, вграден по-долу, ще го намерите тази същност.

Актуализирайте следващите редове с вашата собствена информация за мрежата и уникално име за всяко създадено от вас устройство (хост).

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

IP адресът на това приспособление се получава автоматично чрез DHCP - няма значение дали се променя, тъй като всеки път се свързваме към един и същ MQTT сървър.

Засега използваме само 4 неопиксела, но можете да увеличите броя по-късно, ако ги захранвате от външен източник. Качете кода и нека да тестваме - използвайте вашия любим MQTT клиент за изпращане на команди (коригирайте името на хоста в следните инструкции, ако сте го променили).

  • Можете да изпратите На до корена officelight канал, за да го включите. Изпратете всяка друга стойност на този канал, за да го изключите.
  • Можете да изпратите номер от 0-360 до светлината на офиса / нюанса, за да промените цвета. Ние използваме HSV цветово пространство, така че 0 и 360 са червени, 120 са зелени, а 240 са сини.
  • Изпращате процентна стойност за яркостта (0-100, не включвайте символа%).
  • Същото за насищане. Стойност 100 ще бъде напълно наситен (т.е. плътен цвят), а нулата ще бъде чисто бяла, независимо от посочения оттенък.

След като потвърдите, че задвижваното от MQTT осветително тяло работи, продължете напред.

Конфигуриране на нов аксесоар HomeKit

Върнете се към Raspberry Pi и прекратете приложението HAP-NodeJS, ако още не сте го направили. Навигирайте до /accessories директория. За да улесните това, можете директно да изтеглите код, който вече е сдвоен към приспособлението „officelight“, като въведете следното:

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

По същество това е дубликат на аксесоара за осветление по подразбиране, с променени имена на променливи (отново адаптирани от работата на Adysan, опростени за лесна употреба). Ето какво трябва да знаете за създаването на собствени персонализирани аксесоари въз основа на това.

  • Всички аксесоари трябва да бъдат назовани *_accessory.js
  • Променете IP адреса в променливата с опции в горната част на вашия MQTT сървър
  • Ако имате различно име на приспособление, потърсете / заменете всички екземпляри от „officelight”С вашето уникално име на фиксатора. Можете да извършите търсене / замяна в Nano, като натиснете CTRL и \, въведете термина, за да намерите, термина, който да замените, след което натиснете А (което означава всички случаи). Прегледайте всяко от тях, за да научите точно кои променливи се актуализират.
  • Създайте уникално шестнадесетично потребителско име за аксесоара (light.username = „1B: 2B: 3C: 5D: 6E: FF“;)
  • Не променяйте ПИН кода. Той следва определен формат и ако не знаете какво правите, той няма да може да се сдвоява. Няма проблем да ги поддържате еднакви между светлините.
  • Можете да дадете на вашето приспособление различно „Сири име“, когато ги добавяте към приложението Elgato Eve и да ги редактирате по всяко време, така че да не сте останали с първоначалния си избор. Не е необходимо да редактирате конфигурационните файлове или да рестартирате сървъра.
  • След като получите множество тела, можете да използвате приложението Elgato Eve, за да ги групирате по стаи или да създадете конкретни сцени, състоящи се от множество сложни действия. Сцените могат да се състоят от множество действия, като например: включете светлината в офиса, намалете я до 25%, направете я червена и активирайте кафемашината.

Ще трябва отново да добавите новия си аксесоар чрез приложението HomeKit по избор.

И накрая, ние искаме да стартираме нашето HAP-NodeJS приложение, когато Pi се рестартира. Добавете следното към вашето и т.н. / rc.local файл, точно преди изход 0.

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

Можете да видите, че съм комбинирал това с някои други команди, които вече съм настроил да започна при зареждане.

rclocal run възел при стартиране

Ако за първи път използвате rc.local, може да се наложи да го зададете като изпълним:

sudo chmod 755 /etc/rc.local

Ако по някаква причина трябва да го стартирате отново в режим на отстраняване на грешки, можете да убиете работещото приложение Node с:

killall възел

Последна стъпка: отворете директорията с аксесоари и изтрийте GarageDoorOpener_accessory.js. По време на писането това е бъги и ще доведе до счупване на сървъра след известно време.

Какво ще контролирате със Siri?

Сега, когато сте намалили основите, всъщност няма ограничение за това, което можете да контролирате - ако можете да го кодирате в Javascript, можете да направите свой собствен аксесоар файл. Тук има толкова много потенциал, мисля, че ще се забавлявате много Кажете ми в коментарите какво измисляте!

Джеймс има бакалавърска степен по изкуствен интелект и е сертифициран като CompTIA A + и Network +. Той е водещ разработчик на MakeUseOf и прекарва свободното си време, играейки VR пейнтбол и настолни игри. Той изгражда компютри още от дете.