Iklan

Impian setiap penggemar rumah pintar adalah rumah yang bisa Anda ajak bicara, tetapi kenyataannya jauh dari itu.

Amazon Echo, misalnya, memungkinkan Anda untuk menggunakan sejumlah fitur yang dikontrol suara, tetapi dialog harus dimulai oleh Anda dengan pertanyaan - Anda tidak bisa hanya membuatnya mengumumkan pesan penting.

Kamu bisa lakukan ini dengan sistem Sonos, dan sedikit sihir Raspberry Pi DIY. Hari ini saya akan menunjukkan kepada Anda cara mengatur notifikasi suara pada sistem Sonos Anda, memperkenalkan beberapa resep IFTTT yang berguna, integrasi OpenHAB, dan banyak lagi, untuk memanfaatkan fitur notifikasi.

Perhatikan bahwa ada Sonos asli yang mengikat untuk OpenHAB tersedia, tetapi diketahui menyebabkan masalah memori karena pustaka uPnP yang salah. Saya menyarankan untuk melompati itu sekarang, dan menggunakan metode dalam tutorial ini sebagai gantinya.

Raspberry Pi yang menjalankan Raspian linux sangat ideal untuk tutorial ini, tetapi Raspberry Pi juga berfungsi pada server rumah berbasis linux yang Anda jalankan. Dalam hal ini, saya menggunakan Raspberry Pi yang sama yang berjalan

instagram viewer
OpenHAB, sistem otomatisasi rumah open source Memulai dengan OpenHAB Home Automation di Raspberry PiOpenHAB adalah platform otomatisasi rumah sumber terbuka yang matang yang berjalan pada berbagai perangkat keras dan sedang protokol agnostik, artinya dapat terhubung ke hampir semua perangkat keras otomasi rumah di pasaran hari ini. Baca lebih banyak . Sisa tutorial ini mengasumsikan Anda juga menjalankan ini pada Raspberry Pi, dan membuka jendela terminal lokal di desktop, atau login jarak jauh menggunakan 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 .

Kamu akan membutuhkan

  • Raspberry Pi 2 (model lama harus bekerja, tetapi periksa untuk perubahan spesifik dalam instruksi)
  • Setidaknya satu Pembicara sonos (sistem audio lain tidak didukung, ini adalah tutorial untuk Sonos saja)
  • Akun gratis di VoiceRSS.org [Tidak Lagi Tersedia]. Daftarkan kemudian temukan kunci API Anda, yang kita perlukan nanti untuk menghasilkan pesan suara.

Instal Node Terbaru

Periksa versi Node yang Anda miliki dengan mengetik:

simpul -v. 

Perhatikan bahwa versi 6 tidak didukung. Jika Anda memiliki Node 6, Anda harus menghapusnya terlebih dahulu, kemudian ikuti instruksi di bawah ini untuk menginstal v5.5.

Jika Anda tidak memiliki v5 atau jika Anda mendapatkan kesalahan yang tidak ditemukan, ikuti petunjuk ini untuk menginstal Node. Perintah berikut mengasumsikan Raspberry Pi 2; untuk model lama, gunakan armv6l dari pada armv7l.

wget https://nodejs.org/download/release/latest-v5.x/node-v5.12.0-linux-armv7l.tar.gz. tar -xvf node-v5.12.0-linux-armv7l.tar.gz. cd node-v5.12.0-linux-armv7l. sudo cp -R * / usr / local. 

Konfirmasikan kembali dengan mengetik:

simpul -v

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

Selanjutnya, kami memiliki beberapa modul Node untuk diinstal. Kami juga menginginkan Node Package Manager.

sudo apt-get install npm. sudo npm instal -g npm. sudo npm instal -g node-gyp. 

Itulah prasyarat, sekarang ke hal-hal yang menyenangkan.

Sonos HTTP API

Itu Sonos HTTP API membuat server web di jaringan lokal, yang memungkinkan kita untuk melakukan ping ke URL dengan pesan untuk diumumkan pada a Sonos (dan untuk mengontrolnya dari jarak jauh jika Anda mau, meskipun tutorial ini hanya berfokus pada pemberitahuan suara aspek).

git klon https://github.com/jishi/node-sonos-http-api.git sonos. cd sonos. npm instal --produksi. mulai npm. 

Jika Anda melihat pesan tentang modul ini-dan-itu tidak ditemukan, lakukan saja yang lain npm instal dan nama modul, lalu coba mulai npm lagi. Jika Anda mengalami kesalahan terkait “Membutuhkan kompiler C ++ 11”, perbaiki dengan perintah berikut:

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. 

Akhirnya Anda akan melihat sesuatu seperti ini:

sonos-http-api bekerja

Server sekarang berjalan, berinteraksi dengan Sonos. Format API ini mudah:

http://[SERVER IP]: 5005 / [NAMA RUANG] / [AKSI]

Atau sebagai contoh spesifik:

http://192.168.1.99:5005/kitchen/playlist/chillout

Tindakan yang kami minati adalah perintah "katakan", yang digunakan sebagai berikut:

http://192.168.1.99:5005/kitchen/say/make%20use%20of%20is%20awesome/en-gb

Anda akan mendengar pesan kesalahan tentang harus mendaftar ke kunci API di VoiceRSS.org. Anda seharusnya sudah melakukan ini, jadi ketikkan yang berikut dan tempelkan kunci API Anda sebagai tepat:

pengaturan nano. json

{

"voicerss": "YOURAPIKEY" }

(Tekan CTRL-X, Y, untuk menyimpan file)

Mulai ulang server, dan ping kembali URL. Setelah beberapa detik, Anda akan mendengar suara bahasa Inggris yang menyenangkan (meskipun Anda mengubah akhir URL menjadi id-kita jika Anda lebih suka). Untuk membuat server Sonos HTTP API mulai lagi ketika Pi dimulai ulang:

sudo nano /etc/rc.local

Tambahkan baris sebelum keluar 0:

sudo node /home/pi/sonos/server.js  dev / null &

Anda sekarang memiliki kemampuan untuk membuat pesan suara dari mana saja di jaringan lokal hanya dengan melakukan ping URL, sehingga kemungkinan terbuka lebar pada titik ini. Jika Anda berjuang untuk ide, baca terus untuk beberapa notifikasi berguna yang saya siapkan.

Pemberitahuan OpenHAB tentang Acara

Mari kita ambil contoh sederhana dulu: deteksi gerakan. Ini adalah kasus penggunaan umum untuk mengaktifkan lampu, tetapi Anda mungkin ingin pemberitahuan suara juga jika itu adalah sensor gerak di daerah lalu lintas rendah, atau mungkin sebagai peringatan ke depan bahwa seseorang datang ke taman jalan.

aturan "Gerak kebun terdeteksi" ketika Item Garden_Motion diubah lalu var String message = "Anda punya pengunjung" sendHttpGetRequest (" http://localhost: 5005 / dapur / say / "+ message.encode (" UTF-8 ") +" / en-gb ") akhir.

Anda harus melihat bagaimana Anda dapat mengintegrasikan pemberitahuan suara sederhana ini ke dalam salah satu aturan Anda, tetapi mari kita coba sesuatu yang sedikit lebih rumit.

Laporan Cuaca Harian dari IFTTT ke OpenHAB ke Sonos

Dalam resep ini, Sonos akan mengumumkan laporan cuaca harian sesuai waktu yang Anda inginkan.

Anda akan membutuhkan My. Pengikatan OpenHAB diaktifkan, karena ini menciptakan koneksi yang aman antara server OpenHAB internal Anda dan layanan IFTTT eksternal. Setel itu jika Anda belum - Anda dapat merujuk bagian 1 dari panduan OpenHAB kami Memulai dengan OpenHAB Home Automation di Raspberry PiOpenHAB adalah platform otomatisasi rumah sumber terbuka yang matang yang berjalan pada berbagai perangkat keras dan sedang protokol agnostik, artinya dapat terhubung ke hampir semua perangkat keras otomasi rumah di pasaran hari ini. Baca lebih banyak untuk instruksi lengkap, jika tidak saya anggap Anda sudah menyiapkannya dengan ketekunan diaktifkan untuk semua item.

Selanjutnya, buat item String baru di instalasi OpenHAB Anda, yang akan menyimpan laporan cuaca harian. Sebelum ini terlihat di My. Saluran OpenHAB, kita perlu menginisialisasi dengan beberapa variabel default. Ping URL berikut (ubah raspberrypi.local ke server OpenHAB Anda, atau cukup gunakan alamat IP-nya, dan Cuaca hari ini untuk apa pun yang Anda beri nama String):

http://raspberrypi.local: 8080 / CMD? Todays_Weather = Cerah 

Masuk ke Saya. OpenHAB [URL Rusak Dihapus] dan periksa Item daftar untuk memastikan variabel sekarang telah diekspor.

cek ekspor item openhab saya

Kembali di IFTTT, buat resep baru, dan gunakan Saluran cuaca sebagai pemicu pada waktu pilihan Anda hari ini. Anda harus mengatur lokasi Anda terlebih dahulu jika Anda belum pernah menggunakannya sebelumnya.

Pilih Saya. OpenHAB sebagai tindakan, dan pilih Todays_Weather sebagai variabel untuk diperbarui.

laporan cuaca ifttt

Untuk saat ini, pilih saja slot setengah jam berikutnya untuk pengujian - Anda dapat memperbarui resep nanti setelah Anda tahu itu berfungsi.

Cukup yakin, pada saat ujian (pada kenyataannya, sedikit sebelum), saya mendapatkan ramalan hari ini berhasil diperbarui.

2016-02-27 10: 28: 01.689 [DEBUG] [o.o.i.m.i. MyOpenHABServiceImpl] - Menerima perintah Most Cloudy today! Dengan tinggi 7C dan rendah 1C. Ulang. Kondisi akan Sebagian Berawan hari ini, dengan tinggi 7C dan rendah 1C. untuk item Todays_Weather. 2016-02-27 10: 28: 01.697 [DEBUG] [o.o.i.m.i. MyOpenHABServiceImpl] - store (Todays_Weather), state = Kebanyakan Berawan hari ini! Dengan tinggi 7C dan rendah 1C. Ulang. Kondisi akan Sebagian Berawan hari ini, dengan tinggi 7C dan rendah 1C. 

Selanjutnya, kita memerlukan aturan OpenHAB untuk mengirim variabel ini ke URL “say” Sonos. Yang berikut harus melakukannya:

aturan "Umumkan laporan cuaca harian" ketika Item Todays_Weather menerima pembaruan. lalu kirimHttpGetRequest (" http://localhost: 5005 / dapur / katakan / "+ Todays_Weather.state.toString.encode (" UTF-8 ") +" / en-gb ") akhir.

Ini cukup sederhana: setiap kali variabel Todays_Weather diperbarui (yang akan, secara otomatis, pukul 8 pagi setiap hari), ping URL. Kita gunakan encode ("UTF-8") Fungsi string untuk membuat kalimat dari IFTTT cocok untuk digunakan dalam URL. Untuk menguji secara manual bagian sistem ini, cukup gunakan OpenHAB HTTP API lagi:

http://raspberrypi.local: 8080 / CMD? Todays_Weather = Berawan, dengan peluang bakso. 

Terhubung ke IFTTT Tanpa OpenHAB, Menggunakan If-This-Then-Node

Akhirnya, mari kita lihat bagaimana menghubungkan dari setiap resep IFTTT tanpa perantara OpenHAB. Sebagai gantinya, kami akan memasang server web lain, dan memaparkannya ke Internet yang terbuka. Ini bukan tanpa risiko: segala jenis server terbuka adalah risiko keamanan, tetapi kami mengurangi ini dengan tidak menjalankan tumpukan server lengkap, hanya sebagian kecil layanan khusus yang hanya menerima perintah tertentu dalam format paket data JSON yang aman (sehingga tidak ada serangan SQL injection atau otentikasi bisa jadi). Setelah selesai, Anda akan memiliki URL publik tempat Anda dapat mengirim pesan dari saluran IFTTT Maker.

Mulailah dengan mengatur salah satu dari banyak layanan DNS dinamis gratis 5 Penyedia DNS Dinamis Gratis TerbaikLayanan DDNS dapat membantu Anda terhubung ke PC di rumah saat bepergian. Berikut adalah penyedia DNS dinamis gratis terbaik yang perlu dipertimbangkan. Baca lebih banyak di luar sana - saya sarankan DuckDNS, khususnya karena memberikan seperangkat sederhana instruksi untuk Raspberry Pi, memungkinkannya untuk memperbarui alamat IP Anda secara otomatis. Ikuti bersama ini, dan ingat URL Anda untuk langkah selanjutnya. Router Anda mungkin juga memiliki fungsi DNS dinamis bawaan, jadi periksa dulu di sana. Dalam kasus saya, saya bisa mendapatkan * .mynetgear.com URL gratis, jadi saya sudah menggunakannya.

Selanjutnya, cari router Anda penerusan porta Apa Port Forwarding & Bagaimana Itu Bisa Membantu Saya? [MakeUseOf Menjelaskan]Apakah Anda menangis sedikit di dalam ketika seseorang memberi tahu Anda ada masalah port forwarding dan itulah mengapa aplikasi baru Anda yang mengkilap tidak akan berfungsi? Xbox Anda tidak akan membiarkan Anda bermain game, unduhan torrent Anda menolak ... Baca lebih banyak halaman konfigurasi; ini adalah tempat kami akan memberi tahu apa yang harus dilakukan dengan permintaan masuk. Teruskan semua permintaan HTTP (port 80) ke port 1337 di server Raspberry Pi Anda. Saya berasumsi Anda sudah mendapatkan alamat IP yang sudah disediakan untuk Raspberry Pi Anda - jika Anda belum, periksa konfigurasi router Anda halaman untuk IP yang dipesan saat Anda di sana, karena Anda tidak mengubahnya minggu depan dan server tiba-tiba berhenti kerja.

penerusan port konfigurasi router

Sekarang untuk menginstal bit terakhir perangkat lunak server.

https://github.com/sebauer/if-this-then-node.git. cd if-this-then-node / npm instal. node server.js.

Anda harus melihat yang berikut ini.

jika ini maka simpul nilai default kesalahan

Tidak apa-apa, itu artinya kami perlu memperbarui detail kami. Buka config.js di Nano dan edit detail itu ke hal lain selain default, lalu simpan. Ketika Anda menjalankan server lagi, Anda akan melihat ini:

jika ini maka server simpul berjalan

Bagus. Uji mesin Anda dapat diakses dari dunia luar dengan mengetikkan nama host DNS dinamis Anda, dan menambahkan /ifttn / ke akhir URL. Jika semuanya berfungsi, pesannya "IFTTN - if-this-then-node Version 2.0.1 sudah beroperasi!" akan ditampilkan di browser Anda. Sekali lagi, untuk membuat skrip ini berjalan saat start-up, edit /etc/rc.local file dan tambahkan:

sudo node /home/pi/if-this-then-node/server.js  dev / null &

Jika-Ini-Lalu-Node berfungsi melalui plugin - ada beberapa yang default disediakan, tetapi tidak ada yang menarik bagi kami. Alih-alih, unduh plugin khusus ini yang saya tulis untuk Anda dengan perintah berikut.

plugin cd. wget https://gist.githubusercontent.com/jamesabruce/4af8db24ba3452b94877/raw/d11c1cff3aa44dbb6a738eeb15202f3db461de75/sonos.js 

Anda juga harus menginstal permintaan modul.

npm permintaan instal. 

Kemudian restart server. Plugin ini cukup sederhana, tetapi sedikit berbeda dengan URL yang kami gunakan sejauh ini. Dalam hal ini, saya telah menggunakan tindakan "sayall" khusus, yang mengirim pesan ke setiap perangkat Sonos.

permintaan(' http://localhost: 5005 / sayall / '+ params.message +' / en-gb ', fungsi (kesalahan, respons, tubuh)

Jika Anda lebih suka dapat menargetkan perangkat tertentu, ganti baris itu dengan:

permintaan(' http://localhost: 5005 / '+ params.device +' / say / '+ params.message +' / en-gb ', fungsi (kesalahan, respons, tubuh)

Tambahkan parameter baris lain yang disebut alat untuk permintaan JSON di bawah ini untuk menentukan nama perangkat Sonos.

Untuk menguji ini, saya menggunakan aplikasi tombol “Do” IFTTT. Buat resep baru, telusuri saluran, dan pilih Pembuat saluran.

lakukan tombol

Buat resep baru. Masukkan URL yang Anda konfigurasikan sebelumnya dari penyedia DNS dinamis gratis (termasuk /ifttn/ di akhir URL. Jangan lupakan tebasan itu). Pilih POS permintaan, aplikasi / json konten, dan isi pesan sebagai berikut, menggantikan semua variabel sesuai kebutuhan dengan yang sebelumnya Anda konfigurasi:

{"action": "sonos", "user": "YOURUSER", "pw": "YOURPASSWORD", "message": "Pesan masuk untuk semua orang: Makan malam sudah siap! Ulang. Makan malam sudah siap. Tingkatkan pantatmu sekarang. "}

Sekarang saya memiliki tombol yang siap diakses yang akan mengumumkan pesan di setiap perangkat Sonos di rumah. Tentu saja Anda dapat memasangkan ini dengan saluran IFTTT apa pun yang ingin Anda buat pesan khusus menggunakan variabel dari saluran itu. Anda bahkan harus dapat mereplikasi laporan cuaca dari atas tanpa menggunakan OpenHAB sekarang, meskipun memang butuh upaya ekstra untuk menginstal server lain.

Catatan: peretas akan secara otomatis memindai Anda. Ini terjadi setiap saat, tetapi jika Anda melihat log, itu bisa mengkhawatirkan. Di bawah ini Anda dapat melihat seseorang secara sistematis mencoba memastikan apakah ada antarmuka standar PHPMyAdmin yang dapat diakses. Yang tidak mereka lakukan. Jangan khawatir jika Anda melihat sesuatu yang serupa. Ini setara dengan internet untuk nomor telepon acak panggilan dingin untuk melihat apakah ada orang di sana.

upaya hack server web

Apa yang Akan Anda Umumkan?

Anda sekarang harus memiliki alat dan pengetahuan untuk terus-menerus memandikan seluruh rumah Anda dalam pemberitahuan suara tentang segala hal yang mungkin Anda pikirkan. Siapa yang butuh musik? Batas Anda hanya 350 permintaan harian dari VoiceRSS.org - tetapi itu sekitar satu setiap 4 menit, jadi Anda seharusnya baik-baik saja.

Jadi apa yang akan kamu lakukan dengan ini? Bagikan ide atau resep IFTTT Anda di komentar!

Kredit Gambar:kopi dan wanita oleh S_Photo via Shutterstock

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.