Kontrol Laptop Anda dengan Ponsel Android menggunakan Python, Twisted, dan Django
Diterbitkan: 2022-03-11pengantar
Memamerkan keterampilan pemrograman Android atau Python Anda selalu menyenangkan. Beberapa waktu yang lalu, saya pikir akan keren untuk mencoba dan mengontrol laptop saya melalui perangkat seluler Android saya. Pikirkan tentang ini: akses laptop jarak jauh termasuk dapat memutar dan menjeda musik, memulai dan menghentikan pekerjaan pemrograman atau unduhan, dll., semua dengan mengirim pesan dari ponsel Anda. Rapi, ya?
Sebelum Anda melanjutkan membaca, harap diingat bahwa ini adalah proyek hewan peliharaan, masih dalam tahap awal—tetapi platform dasarnya sudah ada. Dengan merekatkan beberapa alat utama, saya dapat mengatur ponsel Android saya untuk mengontrol laptop saya melalui juru bahasa Python.
Omong-omong: proyek ini open source. Anda dapat melihat kode klien di sini, dan kode server di sini.
Sabuk Alat Akses Laptop Jarak Jauh: Python, Twisted, Django, dan Amarok
Proyek ini melibatkan teknologi berikut, beberapa di antaranya mungkin Anda kenal, beberapa di antaranya cukup spesifik untuk tugas yang ada:
- Python 2.7+
- Twisted: kerangka kerja berbasis peristiwa yang sangat baik yang dibuat khusus untuk peretas jaringan.
- Django: Saya menggunakan v1.4, jadi Anda harus menyesuaikan lokasi beberapa file jika Anda ingin menjalankan versi yang lebih rendah.
- Amarok: pemutar media yang dapat dikelola D-BUS (lebih lanjut tentang ini di bawah). Ini dapat diganti untuk pemutar media lainnya (Clementine, VLC, atau apa pun yang mendukung MPRIS) jika Anda mengetahui struktur pesannya. Saya memilih Amarok karena ia datang dengan distribusi KDE saya secara default. Plus, ini cepat dan mudah dikonfigurasi.
- Ponsel Android dengan Python untuk Android diinstal (lebih lanjut tentang ini di bawah). Prosesnya cukup mudah—bahkan untuk Py3k!
- Remote Amarok dan Web Amarok Jarak Jauh.
Pada Tingkat Tinggi
Pada tingkat tinggi, kami menganggap ponsel Android kami sebagai klien dan laptop kami, server. Saya akan membahas arsitektur akses jarak jauh ini secara mendalam di bawah ini, tetapi alur dasar proyek ini adalah sebagai berikut:
- Pengguna mengetikkan beberapa perintah ke dalam juru bahasa Python.
- Perintah dikirim ke instans Django.
- Django kemudian meneruskan perintah ke Twisted.
- Twisted kemudian mem-parsing perintah mengirimkan perintah baru melalui D-Bus ke Amarok.
- Amarok berinteraksi dengan laptop yang sebenarnya, mengontrol pemutaran/penjedaan musik.
Sekarang, mari kita gali.
Python di Android
Jadi suatu hari yang baik, saya mulai mencari penerjemah Python yang dapat saya jalankan di ponsel Android saya (Droid 2, saat itu). Segera setelah itu, saya menemukan paket SL4A luar biasa yang menghidupkan Python For Android. Ini adalah paket yang sangat bagus: Anda mengklik beberapa tombol dan tiba-tiba Anda memiliki lingkungan Python yang hampir berfungsi penuh di perangkat seluler atau tablet Anda yang dapat menjalankan kode Python lama Anda dan mengakses API Android (saya katakan hampir karena beberapa hal mungkin tidak ada dan API Android tidak 100% dapat diakses, tetapi untuk sebagian besar kasus penggunaan, itu sudah cukup).
Jika Anda mau, Anda juga dapat membangun distribusi Python Anda sendiri untuk dijalankan di perangkat Android Anda, yang memiliki keuntungan bahwa Anda kemudian dapat menjalankan versi penerjemah apa pun yang Anda inginkan. Prosesnya melibatkan kompilasi silang Python untuk dijalankan di ARM (arsitektur yang digunakan pada perangkat Android dan tablet lainnya). Ini tidak mudah, tapi pasti bisa dilakukan. Jika Anda siap menghadapi tantangan, periksa di sini atau di sini.
Setelah Anda menyiapkan juru bahasa, pada dasarnya Anda dapat melakukan apa pun yang Anda suka dengan menggabungkan Python dengan Android API, termasuk mengendalikan laptop Anda dari jarak jauh. Misalnya, Anda dapat:
- Mengirim dan membaca SMS.
- Berinteraksi dengan API pihak ketiga di Internet melalui urllib dan perpustakaan lainnya.
- Menampilkan tampilan dan nuansa asli, dialog berputar, dan sejenisnya.
- Ubah nada dering Anda.
- Putar musik atau video.
- Berinteraksi dengan Bluetooth—khususnya yang satu ini membuka jalan bagi banyak peluang. Misalnya, saya pernah bermain-main dengan menggunakan ponsel saya sebagai aplikasi loker-unlock untuk laptop saya (misalnya, membuka kunci laptop saya melalui Bluetooth ketika ponsel saya ada di dekat saya).
Cara Kerja Menggunakan Ponsel Anda untuk Mengontrol Laptop Anda
Arsitektur
Komposisi proyek kami adalah sebagai berikut:
Aplikasi sisi klien yang dibangun di Twisted jika Anda ingin menguji kode server (di bawah) tanpa harus menjalankan aplikasi Django sama sekali.
Aplikasi Django sisi server, yang membaca perintah dari perangkat Android dan meneruskannya ke Twisted. Seperti berdiri, Amarok adalah satu-satunya aplikasi laptop yang server dapat berinteraksi dengan (yaitu, untuk mengontrol musik), tapi itu bukti konsep yang cukup, karena platform mudah diperluas.
Sebuah 'contoh' Twisted sisi server yang berkomunikasi dengan pemutar media laptop melalui D-Bus, mengirimkan bersama perintah saat mereka datang dari Django (saat ini, saya mendukung 'berikutnya', 'sebelumnya', 'bermain', 'jeda', 'berhenti', dan 'bisu'). Mengapa tidak meneruskan perintah langsung dari Django ke Amarok? Atribut non-pemblokiran yang digerakkan oleh peristiwa Twisted menghilangkan semua kerja keras threading (lebih lanjut di bawah). Jika Anda tertarik untuk menikahi keduanya, lihat di sini.
- Kode Android sisi klien, diunggah ke perangkat Anda dengan URL yang disesuaikan untuk mencapai aplikasi Django Anda. Perlu disebutkan bahwa bagian kode khusus ini berjalan di Python 2.7+, termasuk Py3k.
Apa itu D-Bus?
Saya telah menyebutkan D-Bus beberapa kali, jadi mungkin ada baiknya membahasnya secara lebih rinci. Secara garis besar, D-Bus adalah sistem bus pesan untuk berkomunikasi antar aplikasi (misalnya, pada komputer laptop dan ponsel Android) dengan mudah melalui pesan yang dibuat khusus.
Ini terutama terdiri dari dua bus: bus sistem, untuk hal-hal di seluruh sistem; dan bus sesi, untuk hal-hal userland. Pesan umum ke bus sistem adalah "Hei, saya telah menambahkan printer baru, beri tahu aplikasi yang mengaktifkan D-Bus saya bahwa printer baru sedang online", sementara Inter-Process Communication (IPC) di antara aplikasi akan masuk ke sesi bis.
Kami menggunakan bus sesi untuk berkomunikasi dengan Amarok. Sangat mungkin bahwa sebagian besar aplikasi modern (setidaknya di lingkungan Linux) akan mendukung jenis pesan ini dan umumnya semua perintah/fungsi yang dapat mereka proses didokumentasikan dengan baik. Karena aplikasi apa pun dengan dukungan D-Bus dapat dikontrol di bawah arsitektur ini, kemungkinannya hampir tidak terbatas.
Info lebih lanjut dapat ditemukan di sini.
Di balik layar:
Setelah menyiapkan semua infrastruktur, Anda dapat menjalankan aplikasi Android dan itu akan masuk ke loop tak terbatas untuk membaca pesan masuk, memprosesnya dengan beberapa pemeriksaan kewarasan, dan, jika valid, mengirimkannya ke URL yang telah ditentukan (yaitu, URL dari aplikasi Django Anda), yang pada gilirannya akan memproses input dan bertindak sesuai dengan itu. Klien Android kemudian menandai pesan sebagai telah dibaca dan loop berlanjut hingga pesan dengan konten yang tepat "exitclient" (pintar, ya?) diproses, dalam hal ini klien akan keluar.
Di server, aplikasi Django mengambil perintah yang akan diproses dan memeriksa apakah itu dimulai dengan instruksi yang valid. Jika demikian, itu terhubung ke server Twisted (menggunakan Telnetlib untuk terhubung melalui telnet) dan mengirimkan perintah bersama. Akhirnya, Twisted mem-parsing input, mengubahnya menjadi sesuatu yang cocok untuk Amarok, dan membiarkan Amarok melakukan keajaibannya! Akhirnya, laptop Anda merespons dengan memutar lagu, menjeda, melewatkan, dll.
Apa Lagi Yang Dapat Saya Lakukan Dengan Ini?
Semuanya terlihat sangat sederhana sejauh ini, ya? Anda mungkin bertanya pada diri sendiri: “Bisakah ini diperluas untuk mendukung fitur bagus [X]?” Jawabannya adalah: Ya (mungkin)! Mengingat bahwa Anda tahu cara berinteraksi dengan komputer menggunakan ponsel dengan benar, Anda dapat menambahkan kode sisi server untuk melakukan apa pun yang Anda suka. Sebelum Anda menyadarinya, Anda akan melakukan proses yang panjang di komputer Anda dari jarak jauh. Atau, jika Anda dapat mengatasi elektronik, Anda dapat membangun antarmuka antara komputer dan peralatan favorit Anda , mengontrolnya melalui instruksi SMS (“Buat saya kopi!” muncul di benak).
Apa berikutnya
Saya akan terus bermain dengan mainan kontrol laptop Android saya untuk sementara waktu, meningkatkan fitur-fiturnya, memperbaiki bug, dll. Tetapi jika Anda tertarik, saya akan senang melihat Anda membantu! Cukup garpu repositori dan kirim permintaan tarik apa pun.
Jika Anda memiliki pertanyaan, silakan kirim email kepada saya di [email protected] dan saya akan dengan senang hati membantu.