"Alice, nyalakan lampu." Kontrol suara dari rumah pintar berdasarkan openHAB. Tanpa pemrograman dan SMS


November 2017, nomor sebelas ditampilkan di kalender. Penjualan pada Aliexpress sedang berjalan lancar, tangannya menggaruk sesuatu untuk dibeli. Pilihannya jatuh pada " Lampu LED RGBW Mi-light AC86-265V Remote Control Smart Lighting ." Akibatnya, dua salinan daya maksimum, pada 9 watt, dan pengontrol hub MiLight WiFi iBox dibeli. Pengiriman dari Tiongkok tidak lama datang, dan 4 bulan kemudian, pada 13 Maret 2018, platform Yandex.Dialogs dibuka (platform yang memungkinkan pengembang pihak ketiga untuk menambah keterampilan pada asisten suara Alice). Selanjutnya, Alice akan belajar mengendalikan pencahayaan (dan tidak hanya) di apartemen Anda, dan kami akan membantunya dalam hal ini, secara bertahap dan tanpa satu baris kode.

  1. Pengaturan lampu pintar Xiaomi
  2. Instal openHAB
  3. Kontrol cahaya melalui openHAB
  4. Akses eksternal ke openHAB
  5. IFTTT
  6. Alice


1. Menyiapkan lampu pintar dari Xiaomi.


Hal pertama yang harus dilakukan adalah mengatur kontrol lampu, setidaknya menggunakan aplikasi dari Xiaomi. Jika tahap ini dilewati untuk Anda, jangan ragu untuk melanjutkan lebih jauh dengan menyiapkan server rumah pintar, atau bahkan lebih jauh, langsung ke integrasi Alice dan openHAB. Tapi, hal pertama yang pertama. Lampu itu sendiri tidak akan terhubung ke router rumah Anda, untuk ini Anda memerlukan hub iBox yang dapat mengontrol hingga empat kelompok sumber cahaya. Anda harus menghubungkannya ke jaringan, dan kemudian menghubungkan lampu ke sana.

  1. Kami memasok daya ke iBox dengan menghubungkannya melalui usb, misalnya, ke pengisi daya untuk telepon.
  2. Saat menghubungkan untuk pertama kalinya, Anda perlu mengatur ulang hub, jadi tekan RST .
  3. Selanjutnya, instal aplikasi dari Xiaomi untuk iOS atau Android di telepon. Pastikan ponsel terhubung ke jaringan Wi-Fi rumah.
  4. Buka aplikasi Mi-Light 3.0 , klik + . Di sini kami tertarik pada tab Tautan Cerdas .
  5. Masukkan nama dan kata sandi jaringan Wi-Fi rumah tempat ponsel terhubung dan direncanakan untuk menghubungkan iBox .
  6. Sekarang iBox Anda harus terhubung ke jaringan, dan indikator SYS dan LINK harus berkedip, perlahan dan cepat, masing-masing. Jika tidak, tekan RST lagi.
  7. Jika indikator berkedip, klik di aplikasi Start Configuration , proses pengaturan koneksi untuk hub akan dimulai.
  8. Setelah sekitar sepuluh detik, flashing akan berhenti, maka SYS akan mulai berkedip perlahan lagi, dan LINK akan tetap menyala. Aplikasi menampilkan Configured . Hub terhubung ke jaringan. Jika tidak ada dalam Daftar Perangkat , maka cukup klik Mencari perangkat .

Sudah, Anda dapat mengontrol warna dan kecerahan iBox itu sendiri, tetapi kita harus menghubungkan lampu. Untuk melakukan ini, ikat lampu ke salah satu dari empat zona yang tersedia untuk hub untuk kontrol.

  1. Kami membuka di aplikasi Mi-Light 3.0 dari daftar hub Mi-Light . Buka bagian Warna .
  2. Di bagian atas layar, pilih salah satu zona, biarkan Zone1 . Dan klik pada ikon pemasangan perangkat di sudut kanan atas. Layar LINK / UNLINK dengan instruksi muncul .
  3. Sekarang kita mengkonfigurasi lampu yang ingin kita ikat ke Zone1 , manajemen mereka di masa depan akan terjadi secara serempak. Untuk mengontrol kecerahan dan warna setiap lampu secara terpisah, mereka harus ditugaskan ke zona yang terpisah. Jadi, nyalakan lampu, dan dalam tiga detik pertama, klik di aplikasi Tautan . Jika lampu berkedip tiga kali, maka semuanya baik-baik saja, sinkronisasi berhasil. Anda dapat mengontrol lampu.


Pada dasarnya, pada tahap ini Anda sudah memiliki remote control untuk remote control lampu. Selain itu, Anda dapat menulis sistem kontrol pencahayaan Anda sendiri, karena protokol untuk berkomunikasi dengan hub telah lama dikenal (dulu pernah tersedia di limitlessled.com/dev ). Ada pustaka siap pakai di php , javascript , python . Tetapi manajemen hanya mungkin dari jaringan lokal, yang jelas tidak cukup untuk Alice. Mari kita coba selesaikan masalah ini.


2. Instal openHAB


Secara singkat, apa itu openHab . Ini adalah server manajemen rumah pintar open source. Dikembangkan oleh komunitas, mendukung pengelolaan sejumlah besar perangkat. Ada klien seluler, ada kemungkinan mengelola Alexa dari Amazon dan asisten dari Google. Ditulis dalam java, berdasarkan pada kerangka Eclipse SmartHome . Jadi itu bisa dipasang bahkan di kulkas, yang utama adalah bahwa mesin virtual Java berjalan di kulkas ini. Petunjuk instalasi adalah untuk Linux , Windows , Mac OS , Raspberry Pi , untuk berbagai penyimpanan jaringan Synology dan QNAP . Buka opsi pertama dengan cepat.

  1. Tambahkan kunci repositori:

    wget -qO - 'https://bintray.com/user/downloadSubjectPublicKey?username=openhab' | sudo apt-key add - sudo apt-get install apt-transport-https 
  2. Tambahkan repositori itu sendiri:

     echo 'deb https://dl.bintray.com/openhab/apt-repo2 stable main' | sudo tee /etc/apt/sources.list.d/openhab2.list 
  3. Kami memperbarui dan menginstal server bersama dengan add-on:

     sudo apt-get update sudo apt-get install openhab2 sudo apt-get install openhab2-addons sudo apt-get install openhab2-addons-legacy 
  4. Kami mengatur mulai otomatis layanan setelah mem-boot ulang perangkat dan memulainya:

     sudo systemctl start openhab2.service sudo systemctl status openhab2.service sudo systemctl daemon-reload sudo systemctl enable openhab2.service 
  5. Sekarang kita menunggu di wilayah 15-20 menit (ini tidak berlebihan, ini adalah kenyataan pahit dengan lelucon tentang kecepatan Jawa), sementara itu http://openhab-device:8080 antarmuka web muncul di alamat http://openhab-device:8080 .
  6. Pada halaman ini kami tertarik dengan item Paper UI . Dengan jenis antarmuka inilah kita akan bekerja di masa depan.




3. Kontrol lampu melalui openHAB


Jadi, kami memiliki server rumah pintar yang berfungsi dan lampu dari Xiaomi dengan kemungkinan kendali jarak jauh. Perlu untuk menghubungkan mereka. openHAB mendukung binder (instruksi untuk mengendalikan elektronik yang terhubung) untuk banyak perangkat, termasuk lampu ini.

  1. Buka Add-on β†’ Binding .
  2. Instal Milight Binding .
  3. Untuk menambahkan perangkat kami, klik + di bagian Konfigurasi β†’ Hal .
  4. Kami memilih Milight Binding , pencarian otomatis untuk perangkat dimulai.
  5. Saya tidak menemukan apa pun secara otomatis, jadi saya secara manual menambahkan " Menambahkan secara manual ".
  6. Kami memilih hub iBox / iBox2 untuk ditambahkan.
  7. Pada halaman yang terbuka, Anda perlu mengisi bidang IP dan Bridge ID (alamat mac perangkat yang terhubung), Anda dapat menemukannya, misalnya, di panel kontrol router (hub saya terdaftar di jaringan dengan nama modul HF-LPB100 yang digunakan di dalamnya). Tambah.
  8. Hebat, iBox / iBox2 sekarang muncul di daftar perangkat dengan tulisan " Online ".
  9. Klik pada + lagi dan pilih Milight Binding , kali ini untuk menambahkan lampu secara langsung.
  10. Sekarang Anda tidak perlu menambahkan apa pun dengan tangan, cukup pilih sekelompok lampu dari daftar (dalam kasus saya, ini adalah item Rgbww Warna (Zona 1) ).
  11. Item yang dipilih akan muncul dalam daftar hal dengan tulisan " Online ".

  12. Perangkat dikonfigurasikan, sekarang Anda perlu menambahkan kontrol ke sana. Untuk melakukan ini, klik pada item yang baru ditambahkan.
  13. Daftar parameter lampu yang dapat kita kontrol dari jarak jauh terbuka. Klik pada lingkaran biru Brightness .
  14. Selanjutnya, pilih kontrol yang ingin kita kaitkan dengan parameter perangkat, karena kami belum memilikinya, klik Buat item baru .
  15. Tetapkan nama yang berubah-ubah, misalnya Light_Switcher , dan ubah jenisnya dari Dimmer ke Switch , karena Saya tidak harus menyesuaikan kecerahan lampu, saya hanya ingin menyalakan dan mematikannya. Kami cukup mengubah kategori menjadi Cahaya sehingga kontrol ditampilkan dengan ikon di bagian Kontrol . Klik Tautan .
  16. Buka bagian Kontrol dan nikmati pengoperasian sakelar Kecerahan pada perangkat.



4. Akses eksternal ke openHAB


Demi alasan keamanan, setelah manipulasi yang dijelaskan di atas, manajemen server rumah pintar hanya dimungkinkan dari jaringan lokal. Ini jelas tidak cukup untuk tugas kita. Ada beberapa opsi konfigurasi : konfigurasikan VPN untuk mengakses dari Internet ke jaringan lokal, konfigurasikan proxy terbalik, atau sambungkan server Anda ke layanan Cloud myopenHAB di myopenHAB.org. Karena di Rusia jumlah karyawan Roskomnadzor berbanding lurus dengan jumlah pengguna VPN dan server proxy, kami akan menggunakan opsi yang terakhir.
Jangan melipatgandakan hal-hal yang tidak perlu

  1. Kami mendaftar di situs web myopenHAB , masuk dan pergi ke https://myopenhab.org/account . Pada halaman ini kami tertarik pada dua bidang: openHAB UUID dan openHAB Secret . Mereka memungkinkan Anda untuk mengatur koneksi server. Mari kita cari tahu di mana mendapatkannya.
  2. Kami pergi ke panel kontrol OpenHAB PaperUI .
  3. Buka bagian Konfigurasi β†’ Pengaya β†’ Lain-lain .
  4. Instal openHAB Cloud Connector .
  5. Dalam Konfigurasi β†’ Layanan , modul OpenHAB Cloud dengan mode " Pemberitahuan & Akses Jarak Jauh " akan muncul.
  6. Dalam Konfigurasi β†’ Sistem β†’ Manajemen Add-on, sakelar " Acceess Remote Repository " harus diaktifkan.
  7. Setelah menginstal addon, data yang kami cari akan ada di file / var / lib / openhab2 / uuid dan / var / lib / openhab2 / openhabcloud / secret ( userdata / uuid dan userdata / openhabcloud / secret , jika Anda tidak menginstalnya dari paket). Kami memasukkan mereka dalam pengaturan akun di myopenHAB dan klik Perbarui . Jika semuanya dikonfigurasi dengan benar, maka kata " Online " akan muncul di sebelah kiri alamat email Anda. Ini menunjukkan bahwa akses ke rumah pintar Anda dari Internet terbuka, tetapi Alice tidak akan dapat langsung menggunakannya. Pertama, Anda perlu membuat perangkat yang sebelumnya dikonfigurasi dapat diakses dari luar.
  8. Buka Konfigurasi β†’ Layanan β†’ openHAB Cloud β†’ Konfigurasi .
  9. Di Item untuk membuka daftar aplikasi seperti IFTTT, aktifkan kotak centang untuk kontrol kecerahan dan klik Simpan .
  10. Setelah beberapa saat, kami memverifikasi bahwa item yang dipilih terdaftar di halaman myopenhab.org/items dengan status " ON ".



Kontrol lampu sekarang dimungkinkan dari Internet, melalui API OpenHAB Cloud, yang mendukung otorisasi OAuth2. Namun, sayangnya, pelanggan sudah ditentukan sebelumnya, ini adalah Alexa, Google Assistant dan layanan IFTTT. Alice belum ada dalam daftar ini. Tapi ini bukan masalah!


5. IFTTT


Jika demikian maka.

Layanan yang memungkinkan Anda membangun serangkaian tindakan dari beberapa layanan. Tanggapi secara kondisional dengan tindakan di satu layanan jika pemicu untuk suatu acara di layanan lain telah berfungsi. IFTTT mendukung sejumlah besar layanan, termasuk myopenHAB yang menarik minat kami. Tetapi tidak mendukung Alice. Secara umum, siapa pun dapat membuat modul untuk layanan mereka di sana, pertama-tama, Anda perlu menghubungi departemen penjualan dan mencari tahu ukuran pembayaran tahunan Anda yang mendukung IFTTT. Tujuan kami adalah menggunakan layanan ini secara gratis agar dapat mengarahkan permintaan dari Alice ke openHAB.

  1. Kami mendaftar di situs web ifttt.com dan pergi ke Applet β†’ Applet Baru .
  2. Setelah mengklik + ini , Anda harus memilih layanan yang akan menjadi pemicu acara tersebut. Karena Layanan Alice tidak ada dalam daftar, kita perlu memilih sesuatu yang dapat menerima perintah darinya. Ini adalah layanan Webhooks . Klik Hubungkan .
  3. Selanjutnya, pilih pemicu " terima permintaan web " dari daftar dengan satu item.
  4. Tentukan nama acara, misalnya light_on , dan klik Buat .
  5. Sekarang kita perlu memilih jawabannya, klik pada + itu . OpenHAB pilihan kami, pasang.
  6. Di jendela yang terbuka, otorisasi OAuth2 yang disebutkan sebelumnya, klik Izinkan .
  7. Satu-satunya respons perintah kirim tersedia.
  8. Dari daftar drop-down, pilih kontrol lampu (misalnya, Light_Switcher), dan sebagai perintah untuk menyalakan lampu, tentukan kata " ON ". Kami menciptakan.

Untuk memeriksanya, kita perlu memanggil pemicu pada layanan Webhooks. Bagaimana cara melakukannya? Kirim permintaan POST.

  1. Kami mencari layanan Webhooks di situs web IFTTT dan pergi ke dokumentasi yang terkait dengannya.
  2. Pada halaman yang terbuka, ada perintah yang perlu kita jalankan, mengganti {event} dengan light_on .
  3. Setelah mengklik Test It , lampu Anda harus menyala.

Tetap membuat resep serupa untuk acara light_off, yang akan mengirim perintah OFF ke kontrol lampu. Dan kemudian ajarkan Alice untuk memanggil pemicu ini atas permintaan kami.




6. Alice


Dalam pesanan saya, dalam keinginan saya, Alice akan menyalakan lampu jika Anda menggunakan platform Yandex.Dialogs . Platform dibuka pada bulan Maret tahun ini dan memungkinkan siapa saja untuk menambah keterampilan ke Alice dengan menulis kode yang sesuai. Saat ini, sejumlah besar keterampilan sudah disajikan dalam katalog . Pengembangan keterampilan adalah topik untuk artikel terpisah tentang HabrΓ©, dan di sini kita memiliki " tanpa satu baris kode ." Jadi kami akan menggunakan perkembangan yang tersedia.

  1. Kami memasang versi beta aplikasi pencarian Yandex , hanya saja saat ini memiliki dukungan untuk keterampilan pengguna .
  2. Kita bilang Alice " nyalakan mantra sihir ." Ini adalah kemampuan mantra sihir / mantra sihir yang akan memungkinkan kita untuk melakukan permintaan POST ke server IFTTT .
  3. Klik Tambah dan tentukan alamat untuk menyalakan lampu formulir:

     https://maker.ifttt.com/trigger/light_on/with/key/{user_id} 
  4. Langkah selanjutnya adalah ucapan frasa atau kata yang akan ditanggapi Alice dengan menyelesaikan permintaan di alamat yang ditentukan (Alice saya menjawab "nyalakan lampu").

Jika sekarang Anda mengklik tombol yang sesuai atau menyuarakan proposal, permintaan dari server Yandex akan pergi ke server keterampilan, dari sana ke IFTTT, lalu ke myopenHAB, yang akan mentransfer data ke instance lokal Anda dengan akses langsung ke hub lampu dan lampu akan menyala. Kami akan segera menambahkan perintah serupa untuk mematikan pencahayaan.


Anda perlu memahami bahwa hanya menyalakan Alice dan mengatakan " nyalakan lampu " tidak cukup. Yandex tidak tahu apa-apa tentang tim kami untuk rumah pintar, data tentang mereka disimpan dalam database keterampilan " mantra sihir ". Karena itu, pertama-tama Anda perlu memanggil skill dengan mengatakan " nyalakan mantra sihir ", dan hanya kemudian nyalakan dan matikan suaranya.

PS


Pendekatan dengan integrasi Alice dan openHAB melalui IFTTT tidak membatasi imajinasi Anda. Anda dapat menggunakan kemampuan " mantra sihir " untuk mengontrol segala hal dalam suara rumah pintar Anda. Misalnya, openHAB memiliki binder untuk Samsung SmartTV, yang memungkinkan Anda untuk mengontrol suara dan saluran TV. Interaksi Alice dan Webhooks adalah implementasi antarmuka suara untuk semua layanan IFTTT, " mantra sihir " memungkinkan Anda untuk mengeksekusi perintah dari salah satu dari mereka. Atau Anda tidak dapat menggunakan Alice sama sekali, dan menulis frontend Anda, misalnya, aplikasi seluler yang akan mengeksekusi permintaan IFTTT melalui semua Webhooks yang sama. Ya, dan IFTTT tidak perlu digunakan, dengan analogi, Anda dapat mengonfigurasi " mantra sihir " untuk memenuhi permintaan ke server Anda.

Source: https://habr.com/ru/post/id412261/


All Articles