UPD 08/06/2019: Itu terjadi,
menjadi mungkin untuk meminta Alice sendiri untuk menyalakan lampu . Proyek ini ada di
github . Memeriksa di homebridge-nya, semuanya bekerja. Saya menganggap dukungan lebih lanjut terhadap keterampilan saya tidak tepat.
Saya sudah lama menginginkan, selain rumah pintar, asisten suara yang mengerti dan berbicara bahasa Rusia. Sebagai hasilnya, saya memutuskan untuk mengambil kesempatan dan mengambil kolom baru Yandex. Stasiun dengan Alice yang masih muda, tetapi sudah sangat dicintai. Kesan pertama sangat bagus, tetapi ketika saya mendengar banyak lelucon dan cukup banyak bicara, saya mulai mempelajari sisi praktis kolom itu. Terutama saya tertarik pada masalah interaksi Alice dengan rumah pintar.
Deskripsi masalahRumah saya didasarkan pada server
HomeBridge . Banyak artikel (
satu ,
dua ,
tiga ) telah ditulis tentang konfigurasinya dan digunakan pada hub dan sumber daya lainnya, oleh karena itu saya tidak akan membahas hal ini. Tidak mempelajari pertanyaan itu dengan seksama, saya yakin bahwa katalog keterampilan Alice sudah memiliki banyak solusi untuk berinteraksi dengan sistem kontrol rumah pintar. Ternyata pada saat penulisan, sebagian besar keterampilan pada topik "Rumah Pintar" memerlukan perangkat dengan tampilan untuk bekerja, yang tidak cocok untuk stasiun. Satu-satunya keterampilan yang tampaknya memenuhi persyaratan dan tahu cara bekerja tanpa layar adalah
Alfred . Keterampilan itu tidak cocok untuk saya karena terkait dengan layanan - IFTTT. Misalkan saya ingin membuat saklar virtual yang beroperasi dalam sistem rumah pintar dan memungkinkan Anda untuk mengikat skrip ke kondisi saat ini. Alfred menggunakan layanan WebHook untuk IFTTT yang dengannya Anda hanya dapat bertindak pada pelatuk yang dibuat di
applet IFTTT, tetapi tidak ada cara untuk mendapatkan status applet saat ini (Anda dapat menghidupkan atau mematikan sakelar, tetapi Anda tidak dapat mengetahui keadaan saklar sekarang).
Untuk mengatasi masalah di atas, layanan
Alice-HomeBridge dibuat, dirancang untuk menghubungkan asisten suara Yandex.Alice dan berbagai sistem kontrol rumah pintar. Selanjutnya, sebagai contoh pengaturan, kami akan mempertimbangkan konfigurasi HomeBridge, tetapi pendekatan ini juga berlaku untuk sistem lain seperti
Home Assistant ,
openHAB , dan lainnya.
Layanan ini memungkinkan pengguna,
setelah mendaftar di situs, untuk membuat sakelar virtual.

Anda dapat mengubah atau mencari tahu keadaan sakelar menggunakan permintaan layanan GET yang dibuat khusus.

Agar layanan dapat berinteraksi dengan asisten suara "Alice", keterampilan "Malas Jimmy" telah dibuat.

Beri tahu Alice: "Jalankan keterampilan malas Jimmy" dan dia akan menawarkan Anda untuk memberi tahu Anda tentang kode aktivasi, yang dapat Anda temukan di
akun pribadi Anda .

Setelah aktivasi, Anda dapat mengubah status sakelar menggunakan perintah Nyalakan atau Nyalakan. Misalnya, jika Anda mengatakan "Nyalakan Lampu", status sakelar "Cahaya" berubah menjadi positif. Jika Anda hanya mengatakan "Cahaya," maka status sakelar akan berubah ke kebalikannya.
Agar dialog terdengar lebih alami, ada peluang untuk membuat sakelar dengan nama yang lebih dimengerti, misalnya, "Dengan Utrechk", maka Anda dapat memberi tahu Alice "Beri tahu Jimmy Dengan Utrechk" dan status sakelar akan berubah.
Masih mengkonfigurasi HomeBridge. Sebagai contoh, kita akan menggunakan ekstensi
cmdswitch2 . Buat saklar untuk HomeKit yang disebut "Alice Button 1".
{ "platform": "cmdSwitch2", "name": "CMD Switch", "switches": [ { "name": "Alice Button 1", "on_cmd": "curl --silent \"http://alicehomebridge.org/alice/switches.php?switch=34&hb=ADB7BYBT728O&state=set&val=true\"", "off_cmd": "curl --silent \"http://alicehomebridge.org/alice/switches.php?switch=34&hb=ADB7BYBT728O&state=set&val=false\"", "state_cmd": "curl --silent \"http://alicehomebridge.org/alice/switches.php?switch=34&hb=ADB7BYBT728O&state=get\" | grep -oh \"true\"", "polling": true, "interval": 2 } ] }
Agar tidak membebani server dengan permintaan yang tidak perlu, setel parameter interval setidaknya 2 detik.
Semuanya sudah siap.

Sekarang, jika Anda berkata, “Alice memberi tahu Jimmy yang malas dengan kata pagi,” sakelar “Alice Button 1” akan berubah. Berikut ini adalah demonstrasi bagaimana semuanya bekerja bersama dengan skrip HomeKit yang disesuaikan:
Versi Lengkap dari File Konfigurasi HomeBridgePS Sebagian besar sistem manajemen rumah pintar, seperti HomeKit, mendukung skrip. Anda dapat membuat skrip yang ingin Anda gunakan dalam situasi tertentu, misalnya, ketika Anda bangun dan menetapkan panggilannya ke acara "Turn On the Utrechok Switch".
PS Layanan saya baru saja berkembang dan masih, secara halus, jauh dari ideal. Tetapi Alice juga menolak untuk menerima frasa tertentu dari waktu ke waktu. Misalnya, dia dengan sempurna menyampaikan frasa "Nyalakan lampu" untuk skill, tetapi dia tidak akan melewatkan frasa “Selamat pagi”. Saya harap Yandex tahu tentang masalah ini dan akan segera memperbaikinya. Menunggu komentar Anda.