Kami mengontrol perangkat Android



Ini adalah upaya ketiga untuk membuat rumah teman pintar dengan android, izinkan saya mengingatkan Anda bahwa upaya pertama untuk mengontrol perangkat android melalui HTTP menggunakan aplikasi Server Server. Aplikasi ini diizinkan menggunakan bahasa BeanShell untuk menanamkan kode Anda di halaman xhtml dan berinteraksi dengannya, menerima data atau mengelolanya. Untuk berintegrasi dengan server rumah pintar ( ioBroker ), driver ditulis, tetapi untuk konfigurasi pertamanya, perlu memuat skrip secara manual. Selanjutnya, melalui driver, skrip diperbarui, yang memungkinkan penambahan fungsi baru dan memperbaiki kesalahan, tetapi juga memberlakukan sejumlah pembatasan dalam upaya untuk menjauh dari metode yang ditetapkan dalam Paw Server untuk mengimplementasikan fungsi baru.

Upaya kedua adalah membangun aplikasi Anda berdasarkan sumber dari server Paw. Tujuan utamanya adalah menyederhanakan proses konfigurasi untuk pengguna, serta menambahkan fitur baru yang tidak dapat diimplementasikan di versi sebelumnya.

Dalam versi yang sama, diputuskan untuk sepenuhnya meninggalkan server Paw dan menulis ulang aplikasi dan driver untuk ioBroker. Tambahkan metode koneksi baru, selain HTTP yang ada, juga MQTT. Tambahkan lebih banyak pengaturan untuk memilih acara, baik dari sistem itu sendiri maupun dari sensor bawaan. Tentu saja, hal pertama aplikasi akan dioptimalkan untuk ioBroker, tetapi tanpa banyak kesulitan dapat diintegrasikan ke dalam sistem lain.

Google play

Aplikasi ini memungkinkan Anda untuk:

  1. Dapatkan status pengaturan sistem (kecerahan lampu latar, status layar, volume, baterai, dll.)
  2. Terima data dari panggilan masuk, pengenalan ucapan
  3. Terima data dari sensor bawaan.
  4. Dapatkan koordinat lokasi.
  5. Dapatkan daftar aplikasi yang terinstal dan luncurkan.
  6. Kelola pengaturan sistem (kecerahan cahaya latar, level volume, dll.)
  7. Lakukan panggilan.
  8. Buat pemberitahuan dan kotak dialog.
  9. Kirim teks ke sintesis pidato.
  10. Berinteraksi dengan Tasker.
  11. Kirim file ke perangkat (hanya HTTP).

Penampilan




Tampilan aplikasi tidak final dan dapat bervariasi. Saya ingin mengubah atau menambah banyak, tapi itu saja waktu.

Dengan navigasi melalui aplikasi, saya pikir, seharusnya tidak ada kesulitan. Pada peluncuran pertama, aplikasi secara singkat menginformasikan tentang perubahan saat ini di versi baru dan menyarankan menggunakan "asisten". Dengan masuk ke pengaturan aplikasi, Anda dapat mengubah parameter operasi dasar, pilih jenis koneksi, pilih peristiwa yang akan dikirim ke server, dan juga memungkinkan atau menolak akses ke beberapa data (buku telepon, pesan, daftar panggilan dan foto).

Di layar utama Anda dapat melihat "ubin", sementara ini adalah versi percobaan, tetapi seiring waktu saya berencana untuk memperluas kemampuan mereka. Dari "ubin" yang tersedia, saat ini, ada: tombol, redup, waktu, daftar, warna, informasi. Tugas utama ubin adalah untuk mengirim atau menerima data (perintah) dari server atau mengelola perangkat lain. Meskipun tidak ada gambaran keseluruhan tentang bagaimana semuanya harus bekerja, saya sekarang tidak akan menggambarkan semua nuansa.

Koneksi


Sekarang tentang koneksi dan perintah kontrol, aplikasi memiliki dua opsi koneksi melalui HTTP dan MQTT. Setiap metode memiliki kelebihan dan kekurangan, metode koneksi mana yang Anda pilih.

HTTP


Metode ini melibatkan koneksi melalui Wi-Fi ke jaringan lokal. Aplikasi "memunculkan" server webnya (alamat IP dan porta dapat dilihat di notifikasi saat menghubungkan) dan memberikan akses untuk mengelolanya. Ini dapat dilakukan baik secara langsung (melalui browser), atau dalam integrasi dengan server UD, melalui permintaan POST atau GET.





Respons dari permintaan akan dikembalikan dalam format JSON, nama perangkat, alamat ip, dan status perintah dikirim dalam badan respons. Beberapa permintaan memanggil "panggilan balik" tambahan, misalnya, saat mengirim teks ke sintesis ucapan, aplikasi akan mengirimkan permintaan ke server tentang awal berbicara teks dan penyelesaiannya. Dengan cara yang sama, aplikasi mentransmisikan data tentang peristiwa dan pembacaan sensor bawaan ke server. Oleh karena itu, untuk pekerjaan penuh, diperlukan bahwa server UD dapat memprosesnya.

MQTT


Protokol MQTT cukup populer dan didukung oleh berbagai sistem DD, ini membuatnya mudah untuk mengintegrasikan aplikasi ke dalamnya. Saat memilih metode koneksi ini, Anda dapat menggunakan broker MQTT lokal dan eksternal.

Saat menghubungkan ke broker MQTT, cabang utama / PAW / dibuat , diikuti oleh nama perangkat (masing-masing perangkat harus memiliki sendiri), yang pada gilirannya dibagi menjadi dua cabang dari topik / info / dan / comm / , Anda dapat menebak dari nama yang Cabang info (informasi) menerbitkan semua informasi yang masuk dari perangkat, dan cabang comm (perintah) berisi topik untuk mengelolanya. Ini dilakukan untuk kejelasan, agar lebih memahami topik mana yang bertanggung jawab untuk apa.



Juga di cabang utama ada / all_devices / di cabang ini ada topik di mana semua perangkat berlangganan, yang memungkinkan Anda untuk mengelola semua perangkat sekaligus.

Untuk universalitas, dalam topik-topik nilai-nilai yang dapat benar (benar) atau salah (salah), mereka dapat mengambil nilai yang berbeda, yaitu, 1, aktif, otomatis, benar adalah nilai benar, dan 0, off, false, manual salah . Fitur lain dari aplikasi adalah untuk memeriksa eksekusi perintah, jika eksekusi berhasil, nilai kosong diterbitkan dalam topik yang sama. Dan jika nilai setelah publikasi belum hilang, ini menunjukkan bahwa kesalahan terjadi saat menjalankan perintah atau nilai tidak cocok dengan yang benar untuk topik ini. Misalnya, ketika mengubah level volume, jika nilainya tidak sesuai dengan angka atau melampaui maksimum, untuk jenis level volume tertentu, itu akan mengembalikan kesalahan.

Juga dalam versi ini, serangkaian perintah untuk pemberitahuan dan "dialog" diperluas, memungkinkan Anda untuk menampilkan informasi yang lebih rinci, serta berinteraksi dengan pengguna jika perangkat digunakan sebagai informan. Ketika membangunnya, sejumlah besar parameter diperlukan, oleh karena itu, perlu untuk mempublikasikan nilai dalam format JSON dalam topik yang sesuai.

Untuk topik notifikasi / comm / notification / create (di bawah ini adalah contoh nilai)

{ "noti":"Any text", "title":"Title 2", "info":"Any text", "vibrate":true, "sound":true, "light":true, "id":2 } 

Untuk topik "dialog" / comm / notification / alert . Respons dari "dialog" hadir dalam format JSON dan diterbitkan dalam topik / info / waspada / respons

 { "alert":"Turn the lights off?", "title":"Light", "negative":"No", "positive":"Yes", "neutral":"Neutral", "sound":true, "id":2 } 

Integrasi IoBroker




Menanamkan dalam aplikasi kemampuan untuk bekerja melalui protokol MQTT, saya hanya ingin menyederhanakan integrasi dengan sistem dan menghilangkan penulisan driver terpisah. Tetapi beberapa fungsi tidak dapat diimplementasikan melalui protokol MQTT, dan untuk alasan ini seorang pengemudi tidak dapat ditiadakan.

Struktur objek driver mirip dengan struktur MQTT, dan juga dibagi menjadi dua cabang / info / dan / comm / , ia memiliki perintah yang sama untuk mengelola dan reaksi yang sama untuk data yang salah. Saya tidak akan menjelaskan pengaturan driver dan operasi di sini, semua informasi saat ini akan diperbarui di GitHub .

Catatan


Sedangkan untuk mengelola pengaturan sistem (mengendalikan kecerahan cahaya latar, bangun dari tidur, dll.), Perangkat yang berbeda akan merespons secara berbeda, atau tidak, terhadap perintah. Karena berbagai perangkat, versi SDK, firmware, sulit untuk menetapkan satu model perilaku per perintah. Di sini Anda perlu memilih tindakan sesuai dengan perangkat Anda, misalnya, bagi sebagian besar perangkat untuk mematikan layar (mengirimnya ke mode tidur), itu cukup untuk mengubah batas waktu lampu latar, tetapi pada beberapa perangkat ini tidak akan berfungsi. Situasi yang sama dengan pengaturan sistem lainnya, untuk sebagian besar perangkat, perubahan akan segera terjadi, tetapi bagi yang lain perlu mengirim perangkat ke mode tidur dan kemudian membangunkannya agar perubahan tersebut berlaku. Masalah terkecil seperti ini muncul dengan SDK 19 (Android 4.4), tetapi itu tidak akurat.) Juga, jangan lupa bahwa ada dukungan untuk Tasker, dan jika Anda tidak memiliki fungsi, Anda dapat menambahkannya dan berinteraksi melalui aplikasi.

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


All Articles