Iklan

HomeKit akhirnya keluar di alam liar, memungkinkan kontrol suara melalui Siri untuk beberapa perangkat rumah pintar konsumen.

Sedihnya, maksud saya beberapa literal - apa pun yang sudah Anda beli mungkin tidak kompatibel. Namun, protokol tersebut telah direkayasa balik dan emulator open source untuk HomeKit API tersedia: atau dalam Bahasa Inggris biasa, Anda sekarang dapat membuat perangkat HomeKit "palsu", dan Siri akan mengendalikannya sama seperti HomeKit resmi lainnya tambahan.

Hari ini, kami akan membuat lampu yang dapat dikendalikan Wi-Fi, dan mengendalikannya dengan Siri. Ini demo.

Inilah yang Anda butuhkan:

  • Raspberry Pi (Saya sudah menggunakan RPi2, ada sedikit perbedaan dalam versi Node untuk diinstal mengingat arsitektur ARM yang ditingkatkan - lihat catatan nanti).
  • Pialang MQTT diinstal pada Raspberry Pi. Lihat bagian "Instal Mosquitto di Pi Anda" di halaman saya Panduan OpenHAB bagian 2 Panduan Pemula OpenHAB Bagian 2: ZWave, MQTT, Rules and ChartingOpenHAB, perangkat lunak otomatisasi rumah open source, jauh melebihi kemampuan sistem otomasi rumah lainnya di pasaran - tetapi tidak mudah untuk diatur. Bahkan, itu bisa membuat frustasi.
    instagram viewer
    Baca lebih banyak
    . Itu tidak perlu diinstal secara khusus pada Pi - Anda bahkan dapat menggunakan server MQTT berbasis cloud, tetapi karena bagaimanapun kami membutuhkan Pi untuk tutorial ini, itu nyaman.
  • NodeMCU v2 (Arduino kompatibel)
  • LED Neopixel (Saya akan merekomendasikan 4 piksel untuk pengujian, maka Anda dapat menambahkan catu daya eksternal dan menambahkan sebanyak yang Anda suka)

Memasang Jembatan HomeKit

Kami akan menginstal aplikasi NodeJS yang disebut HAP-NodeJS ke Raspberry Pi: ini akan membentuk jembatan antara permintaan HomeKit dan perangkat Wi-Fi. Kami akan mengonfigurasi jembatan ini dengan satu aksesori untuk saat ini, tetapi Anda dapat menambahkan sebanyak yang Anda suka.

Saya benar-benar menginstal ini ke server rumah saya yang ada menjalankan OpenHAB - Saya berharap untuk menghubungkan keduanya bersama di a nanti, tetapi untuk sekarang, ketahuilah bahwa mereka dapat hidup berdampingan di Raspberry Pi yang sama. Jika Anda melakukan hal yang sama, cukup masuk kasus, membuat cadangan klon kartu Pi SD Anda saat ini Mudah Mengkloning Kartu SD Anda Untuk Komputasi Raspberry Pi yang Bebas MasalahBaik Anda memiliki satu kartu SD atau beberapa, satu hal yang Anda perlukan adalah kemampuan untuk membuat cadangan kartu Anda untuk menghindari masalah yang terjadi ketika Raspberry Pi Anda gagal untuk boot. Baca lebih banyak . Jika semuanya salah, Anda dapat memulihkannya.

Mulailah dengan melakukan upgrade penuh dari Terminal atau Sesi SSH Menyiapkan Raspberry Pi Anda Untuk Penggunaan Tanpa Kepala Dengan SSHRaspberry Pi dapat menerima perintah SSH saat terhubung ke jaringan lokal (baik dengan Ethernet atau Wi-Fi), memungkinkan Anda untuk dengan mudah mengaturnya. Manfaat SSH melampaui menjengkelkan penyaringan harian ... Baca lebih banyak .

sudo apt-get pembaruan. sudo apt-get upgrade. 

Anda mungkin perlu melakukan itu dua kali jika sudah lama.

Sekarang instal beberapa paket inti yang akan kita butuhkan:

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

Selanjutnya, kita akan menginstal versi terbaru NodeJS. Anda mungkin tergoda untuk melakukan ini apt-get, tapi jangan - versi itu sudah sangat tua sekarang dan tidak akan berfungsi. Sebaliknya, kunjungi simpuljs.org, telusuri ke unduh / lepaskan / latest-v5.x.0 / direktori, dan periksa apa tautan untuk versi terbaru. Kamu sedang mencari linux-armv7l untuk Raspberry Pi 2, atau linuxarmv6l untuk model RPi asli. Kemudian, menyesuaikan URL dan nama direktori sesuai kebutuhan, unduh dan instal menggunakan perintah berikut.

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. 

Konfirmasikan dengan mengetik

versi simpul. 

Dan Anda akan melihat v5.5 (atau apa pun yang terbaru yang Anda unduh).

Selanjutnya, kami memiliki beberapa modul Node untuk diinstal.

sudo npm instal -g npm. sudo npm instal -g node-gyp. 

Dalam perintah pertama itu, kami sebenarnya menggunakan Node Package Manager (npm) untuk menginstal versi yang lebih baru dari dirinya sendiri. Pintar!

Sekarang, untuk mengunduh emulator HomeKit disebut HAP-NodeJS:

git klon https://github.com/KhaosT/HAP-NodeJS.git. cd HAP-NodeJS. npm membangun kembali. sudo npm install node-persist. sudo npm instal srp. 

Pada titik ini, saya menjalankan kesalahan ini: "#error Versi node / NAN / v8 ini membutuhkan kompiler C ++ 11“. Jika itu terjadi pada Anda, instal kompiler C ++ yang lebih baru dengan perintah:

sudo apt-get install gcc-4.8 g ++ - 4.8. sudo pembaruan-alternatif --instal / usr / bin / gccgcc / usr / bin / gcc-4.6 20. sudo pembaruan-alternatif --instal / usr / bin / gcc gcc /usr/bin/gcc-4.8 50. sudo pembaruan-alternatif --instal / usr / bin / g ++ g ++ /usr/bin/g++-4.6 20. sudo pembaruan-alternatif --install / usr / bin / g ++ g ++ /usr/bin/g++-4.8 50. 

Sekarang Anda seharusnya tidak memiliki masalah. Lanjutkan menjalankan perintah ini, satu per satu:

sudo npm instal srp. sudo npm instal mdns --unsafe-perm. sudo npm instal debug. sudo npm instal ed25519 --unsafe-perm. sudo npm instal curve25519 --unsafe-perm. 

Itu harus menjadi segalanya. Coba jalankan emulator dengan:

simpul Core.js. 

Jika Anda mendapatkan kesalahan dengan mengatakan itu tidak dapat menemukan modul ini dan itu, cukup gunakan sudo npm instal perintah lagi, dan tambahkan nama modul apa pun yang hilang. Dengan asumsi semua baik-baik saja, Anda akan melihat beberapa peringatan, dan jembatan HomeKit Anda akan berjalan. Seperti inilah keberhasilannya:

hap-nodejs diinstal

Anda dapat segera melihat bahwa itu telah membuat 6 perangkat palsu. Kami akan menggunakannya sebagai titik awal untuk lampu Wi-Fi kami sendiri nanti, tetapi kami hanya akan menggunakannya untuk saat ini untuk menguji. Anda juga dapat melihat lebih banyak informasi debug jika Anda memulai server dengan:

DEBUG = * simpul Core.js

Sekarang lompat ke perangkat Apple yang mampu menjalankan Siri. Apel ingin tahu tidak menyediakan aplikasi HomeKit saham kecuali untuk pengembang terdaftar, jadi unduh gratis Aplikasi Elgato Eve, aplikasi manajemen HomeKit yang memungkinkan Anda untuk menambahkan (bahkan non-Elgato) perangkat ke jaringan HomeKit Anda.

Pertama kali Anda meluncurkan aplikasi, Anda harus memberi nama rumah Anda, lanjutkan dan berjalanlah melalui itu. Kemudian pilih "Tambah Aksesori". Abaikan pesan tentang menjadi dekat dengan itu!

elgato eve 1

Ini akan memberitahu Anda untuk mencari "Kode Pengaturan HomeKit" yang unik berikutnya. Abaikan itu, dan tekan "Tambahkan ke [nama rumah Anda]".

Ini juga akan memberi tahu Anda bahwa perangkat ini tidak bersertifikat. Memang tidak. Tetap maju. Ketika Anda sampai ke layar meminta kode aksesori ...

elgato eve 2

Pilih untuk memasukkan kode secara manual, dan ketik yang berikut ini:

031-45-154

Ini dapat ditemukan / diubah di Light_accessory.js file, tetapi lebih lanjut tentang itu nanti. Tambahkan aksesori ini ke kamar default Anda, sebut saja Cahaya Palsu, dan terus berjalan melalui dialog untuk memilih ikon dll.

Akhirnya, kembali ke sesi SSH di mana Anda menjalankan HAP-NodeJS. Anda mungkin sudah melihat pesan yang mengatakan "Apakah kita aktif?" - itulah polling aplikasi Elgato untuk status lampu. Buka Siri dan katakan padanya untuk "Nyalakan lampu palsu", lalu coba matikan lagi. Semoga, Anda akan melihat beberapa pesan debug dari HAP-NodeJS untuk menunjukkannya menerima perintah.

Apakah kita ada? Tidak. Nyalakan lampu! Matikan lampu!

Fantastis, itu langkah pertama selesai. Sekarang kita perlu lampu yang sebenarnya, sebelum kembali untuk mengkonfigurasi jembatan lagi.

Membangun Cahaya Wi-Fi

Sisi perangkat keras dari langkah ini secara mengejutkan sederhana jika kita mulai dengan hanya empat Neopixels, karena kita dapat memberi daya secara langsung dari papan dev NodeMCU dan koneksi USB-nya. Jika Anda memiliki strip yang lebih panjang, jangan khawatir - kami telah mendefinisikan ini dalam perangkat lunak, jadi sisanya tidak akan hidup.

Sambungkan kabel daya merah dari untai Neopixel ke pin VIN, ground biru ke GND, dan kabel sinyal hijau ke pin bertanda D2 pada NodeMCU. Berhati-hatilah dengan polaritas: jika Anda mencampur tanah dan VIN, Anda akan mengirim gelombang kekuatan melalui papan Anda, dan hancurkan dalam proses itu.

Jika lingkungan Arduino Anda belum diatur untuk berfungsi dengan ESP8266, silakan ikuti panduan di saya ESP8266: Pembunuh Arduino Temui Pembunuh Arduino: ESP8266Bagaimana jika saya memberi tahu Anda bahwa ada papan dev yang kompatibel dengan Arduino dengan Wi-Fi bawaan kurang dari $ 10? Ya ada. Baca lebih banyak panduan lalu kembali setelah Anda mengonfirmasi bahwa itu berfungsi. Instal pustaka tambahan ini:

  • PubSubClient lmroy
  • NeoPixels Adafruit

Kode yang kami gunakan adalah modifikasi dari Pengguna Github, Aditya Tannu - Saya telah menghapus fungsionalitas pembaruan udara yang tidak perlu, ditambahkan pada beberapa fungsi HSV yang hilang, dan membuatnya lebih mudah untuk membuat lebih banyak lampu dengan hanya mengubah satu variabel. Jika Anda tidak dapat melihat kode yang disematkan di bawah ini, Anda akan menemukannya di Intisari ini.

Perbarui baris berikut dengan informasi jaringan Anda sendiri, dan nama unik untuk setiap fixture yang Anda buat (host).

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

Alamat IP dari fixture ini secara otomatis diperoleh melalui DHCP - tidak masalah jika itu berubah, karena kami terhubung ke server MQTT yang sama setiap kali.

Untuk saat ini kami hanya menggunakan 4 Neopixel, tetapi Anda dapat menambah jumlahnya nanti jika Anda memberinya daya dari sumber eksternal. Unggah kode, dan mari kita uji - gunakan klien MQTT favorit Anda untuk mengirim perintah (sesuaikan nama host dalam instruksi berikut jika Anda telah mengubahnya).

  • Anda bisa mengirim di ke akar kantor saluran untuk menyalakannya. Kirim nilai lain ke saluran itu untuk mematikannya.
  • Anda dapat mengirim nomor dari 0-360 ke kantor / rona untuk mengubah warna. Kami menggunakan Ruang warna HSV, jadi 0 dan 360 berwarna merah, 120 berwarna hijau, dan 240 berwarna biru.
  • Anda mengirim nilai persentase untuk kecerahan (0-100, jangan sertakan simbol%).
  • Sama untuk saturasi. Nilai 100 akan sepenuhnya jenuh (yaitu, warna solid), dan nol akan menjadi putih murni, terlepas dari Hue yang ditentukan.

Setelah Anda mengonfirmasi bahwa perlengkapan pencahayaan Anda yang digerakkan MQTT berfungsi, lanjutkan.

Mengkonfigurasi Aksesori HomeKit Baru

Beralih kembali ke Raspberry Pi dan hentikan aplikasi HAP-NodeJS jika Anda belum melakukannya. Arahkan ke menu /accessories direktori. Untuk mempermudah ini, Anda dapat langsung mengunduh kode yang sudah dipasangkan dengan fixture “officelight” dengan mengetik berikut ini:

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

Pada dasarnya, ini adalah duplikat aksesori lampu default, dengan beberapa nama variabel diubah (sekali lagi, diadaptasi dari karya Adysan, disederhanakan untuk kemudahan penggunaan). Inilah yang harus Anda ketahui untuk membuat aksesori khusus Anda sendiri berdasarkan ini.

  • Semua aksesori harus diberi nama *_accessory.js
  • Ubah alamat IP dalam variabel opsi di atas ke server MQTT Anda
  • Jika Anda memiliki nama fixture yang berbeda, cari / ganti semua instance dari "kantor”Dengan nama perlengkapan unik Anda. Anda dapat melakukan pencarian / ganti di Nano dengan menekan CTRL dan \, ketikkan istilah untuk menemukan, istilah untuk mengganti, lalu tekan SEBUAH (artinya semua contoh). Langkah melalui masing-masing untuk mempelajari secara tepat variabel mana yang sedang diperbarui.
  • Buat nama pengguna heksadesimal unik untuk aksesori (light.username = “1B: 2B: 3C: 5D: 6E: FF”;)
  • Jangan mengubah kode PIN. Itu mengikuti format tertentu, dan kecuali Anda tahu apa yang Anda lakukan, itu tidak akan bisa berpasangan. Tidak ada masalah dengan menjaganya tetap sama di antara lampu.
  • Anda dapat memberi fixture Anda "nama Siri" yang berbeda saat menambahkannya ke aplikasi Elgato Eve, dan mengeditnya kapan saja sehingga Anda tidak terjebak dengan pilihan awal Anda. Tidak perlu mengedit file konfigurasi atau memulai ulang server.
  • Setelah mendapatkan beberapa perlengkapan, Anda dapat menggunakan aplikasi Elgato Eve untuk mengelompokkannya berdasarkan ruang, atau untuk membuat adegan spesifik yang terdiri dari beberapa tindakan kompleks. Adegan dapat terdiri dari beberapa tindakan, seperti: menyalakan lampu kantor, meredupkannya hingga 25%, membuatnya merah, dan mengaktifkan mesin kopi.

Anda harus menambahkan aksesori baru melalui aplikasi pilihan HomeKit lagi.

Akhirnya, kami ingin menjalankan aplikasi HAP-NodeJS kami setiap kali Pi dihidupkan ulang. Tambahkan berikut ini ke etc / rc.local file, tepat sebelum keluar 0.

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

Anda dapat melihat saya telah menggabungkan ini dengan beberapa perintah lain yang telah saya atur untuk memulai saat boot.

rclocal run node saat startup

Jika ini adalah pertama kalinya Anda menggunakan rc.local, Anda mungkin perlu mengaturnya sebagai executable:

sudo chmod 755 /etc/rc.local

Jika karena alasan tertentu Anda perlu menjalankannya dalam mode debug lagi, Anda dapat mematikan aplikasi Node yang sedang berjalan dengan:

semua node

Satu langkah terakhir: navigasikan ke direktori aksesori, dan hapus GarageDoorOpener_accessory.js. Pada saat penulisan ini buggy, dan akan menyebabkan server rusak setelah beberapa saat.

Apa yang Akan Anda Kontrol Dengan Siri?

Sekarang setelah Anda menguasai dasar-dasarnya, benar-benar tidak ada batasan untuk apa yang dapat Anda kontrol - jika Anda bisa mengkodekannya dalam Javascript, Anda dapat membuat file aksesori Anda sendiri. Ada begitu banyak potensi di sini, saya pikir Anda akan bersenang-senang. Beri tahu saya di komentar apa yang Anda buat!

James memiliki gelar BSc dalam Artificial Intelligence, dan bersertifikat CompTIA A + dan Network +. Dia adalah pengembang utama MakeUseOf, dan menghabiskan waktu luangnya bermain VR paintball dan boardgames. Dia telah membangun PC sejak dia masih kecil.