Python, Twisted ve Django kullanarak Dizüstü Bilgisayarınızı Android Telefonla Kontrol Edin
Yayınlanan: 2022-03-11Tanıtım
Android veya Python programlama becerilerinizi sergilemek her zaman eğlencelidir. Bir süre önce, dizüstü bilgisayarımı Android mobil cihazım aracılığıyla kontrol etmeyi denemenin harika olacağını düşündüm. Bir düşünün: Telefonunuzdan mesaj göndererek müzik çalma ve duraklatma, programlama işlerini veya indirmeleri başlatma ve durdurma vb. dahil olmak üzere uzaktan dizüstü bilgisayar erişimi. Temiz, ha?
Okumaya devam etmeden önce, lütfen bunun bir evcil hayvan projesi olduğunu, hala erken aşamalarında olduğunu unutmayın - ancak temel platform orada. Bazı temel araçları birbirine yapıştırarak, Android telefonumu bir Python yorumlayıcısı aracılığıyla dizüstü bilgisayarımı kontrol edecek şekilde ayarlayabildim.
Bu arada: proje açık kaynaktır. İstemci kodunu buradan, sunucu kodunu ise buradan inceleyebilirsiniz.
Uzaktan Dizüstü Bilgisayar Erişimi Alet Kemeri: Python, Twisted, Django ve Amarok
Bu proje, bazıları aşina olabileceğiniz, bazıları ise mevcut göreve oldukça özel olan aşağıdaki teknolojileri içermektedir:
- Python 2.7+
- Twisted: özellikle ağ korsanları için hazırlanmış mükemmel bir olay odaklı çerçeve.
- Django: Ben v1.4 kullandım, bu yüzden daha düşük bir sürüm çalıştırmak istiyorsanız bazı dosyaların konumunu ayarlamanız gerekecek.
- Amarok: bir D-BUS (aşağıda daha fazlası var) yönetilebilir medya oynatıcı. Bu, mesajlaşma yapılarını biliyorsanız, bu tür diğer medya oynatıcılar (Clementine, VLC veya MPRIS'i destekleyen herhangi bir şey) için dağıtılabilir. Amarok'u seçtim çünkü varsayılan olarak KDE dağıtımımla geliyor. Ayrıca, hızlıdır ve kolayca yapılandırılabilir.
- Android için Python yüklü bir Android telefon (bununla ilgili daha fazla bilgi aşağıda). Süreç oldukça basittir - Py3k için bile!
- Uzak Amarok ve Uzak Amarok Web.
Yüksek düzeyde
Yüksek düzeyde, Android telefonumuzu istemci ve dizüstü bilgisayarımız sunucu olarak görüyoruz. Bu uzaktan erişim mimarisini aşağıda derinlemesine inceleyeceğim, ancak projenin temel akışı şu şekilde:
- Kullanıcı Python yorumlayıcısına bazı komutlar yazar.
- Komut, Django örneğine gönderilir.
- Django daha sonra komutu Twisted'a iletir.
- Twisted daha sonra komutu ayrıştırır ve D-Bus üzerinden Amarok'a yeni bir komut gönderir.
- Amarok, gerçek dizüstü bilgisayarla etkileşime girerek müziğin çalınmasını/duraklatılmasını kontrol eder.
Şimdi, içeri girelim.
Android'de Python
İyi bir gün, Android telefonumda çalıştırabileceğim Python yorumlayıcılarına bakmaya başladım (o zamanlar Droid 2). Kısa süre sonra, Python For Android'i hayata geçiren mükemmel SL4A paketini keşfettim. Bu gerçekten şık bir paket: Birkaç düğmeyi tıklarsınız ve aniden cep telefonunuzda veya tablet bilgisayarınızda hem eski Python kodunuzu çalıştırabilen hem de Android API'sine erişebilen neredeyse tamamen işlevsel bir Python ortamına sahip olursunuz ( neredeyse diyorum çünkü bazı şeyler muhtemelen eksiktir ve Android API'sine %100 erişilebilir değildir, ancak çoğu kullanım durumu için yeterlidir).
İsterseniz, Android cihazınızda çalıştırmak için kendi Python dağıtımınızı da oluşturabilirsiniz; bu, istediğiniz yorumlayıcının herhangi bir sürümünü çalıştırabilme avantajına sahiptir. Süreç, Python'un ARM (Android cihazlarda ve diğer tabletlerde kullanılan mimari) üzerinde çalıştırılması için çapraz derlemeyi içerir. Kolay değil, ama kesinlikle yapılabilir. Meydan okumaya hazırsanız, burayı veya burayı kontrol edin.
Tercüman kurulumunuzu yaptıktan sonra, dizüstü bilgisayarınızı uzaktan kontrol etmek de dahil olmak üzere Python'u Android API ile birleştirerek temelde istediğinizi yapabilirsiniz. Örneğin, şunları yapabilirsiniz:
- SMS gönder ve oku.
- urllib ve diğer kitaplıklar aracılığıyla İnternet'teki üçüncü taraf API'leriyle etkileşim kurun.
- Yerel görünüm ve his istemlerini, dönen diyalogları ve benzerlerini görüntüleyin.
- Zil sesini değiştir.
- Müzik veya video oynatın.
- Bluetooth ile etkileşim kurun—özellikle bu, birçok fırsatın önünü açıyor. Örneğin, bir keresinde telefonumu dizüstü bilgisayarım için bir kilit açma uygulaması olarak kullanmakla uğraştım (örneğin, telefonum yakındayken dizüstü bilgisayarımı Bluetooth ile aç).
Dizüstü Bilgisayarınızı Kontrol Etmek İçin Telefonunuzu Kullanma Nasıl Çalışır?
Mimarlık
Proje kompozisyonumuz aşağıdaki gibidir:
Django uygulamasını hiç çalıştırmadan sunucu kodunu (aşağıda) test etmek istiyorsanız, Twisted üzerine kurulu bir istemci tarafı uygulaması.
Android cihazından gelen komutları okuyan ve onları Twisted'a ileten sunucu taraflı bir Django uygulaması. Mevcut haliyle, Amarok, sunucunun etkileşime girebildiği (yani müziği kontrol etmek için) tek dizüstü bilgisayar uygulamasıdır, ancak platform kolayca genişletilebildiği için bu yeterli bir kavram kanıtıdır.
D-Bus aracılığıyla dizüstü bilgisayarın medya oynatıcısıyla iletişim kuran, Django'dan gelen komutları gönderen sunucu taraflı bir Twisted 'örneği' (şu anda 'sonraki', 'önceki', 'oynat', 'duraklat'ı destekliyorum, 'dur' ve 'sessiz'). Neden komutları doğrudan Django'dan Amarok'a iletmiyorsunuz? Twisted'in olaya dayalı, engelleyici olmayan özellikleri, iş parçacığı oluşturmanın tüm zor işini ortadan kaldırır (daha fazlası aşağıda). İkisiyle evlenmekle ilgileniyorsanız, buraya bakın.
- Django uygulamanıza ulaşmak için özelleştirilmiş bir URL ile cihazınıza yüklenen istemci tarafı Android kodu. Bu özel kod parçasının Py3k dahil Python 2.7+ üzerinde çalıştığını belirtmekte fayda var.
D-Bus nedir?
D-Bus'tan birkaç kez bahsettim, bu yüzden muhtemelen daha ayrıntılı olarak tartışmaya değer. Genel olarak konuşursak, D-Bus, uygulamalar arasında (örneğin bir dizüstü bilgisayar ve Android telefonda) özel hazırlanmış mesajlar aracılığıyla kolayca iletişim kurmak için bir mesajlaşma veri yolu sistemidir.
Esas olarak iki veri yolundan oluşur: sistem genelindeki şeyler için sistem veriyolu; ve kullanıcı alanı şeyler için oturum veri yolu. Sistem veriyoluna tipik mesajlar “Hey, yeni bir yazıcı ekledim, D-Bus özellikli uygulamalarıma yeni bir yazıcının çevrimiçi olduğunu bildir” şeklinde olurken, uygulamalar arasındaki tipik Prosesler Arası İletişim (IPC) oturuma gider. otobüs.
Amarok ile iletişim kurmak için oturum veri yolunu kullanıyoruz. Çoğu modern uygulamanın (en azından Linux ortamları altında) bu tür mesajlaşmayı desteklemesi çok muhtemeldir ve genellikle işleyebilecekleri tüm komutlar/işlevler iyi belgelenmiştir. D-Bus destekli herhangi bir uygulama bu mimari altında kontrol edilebildiğinden, olasılıklar neredeyse sonsuzdur.
Daha fazla bilgi burada bulunabilir.
Kamera ARKASI:
Tüm altyapıyı kurduktan sonra, Android uygulamasını kapatabilirsiniz ve gelen mesajları okumak, bunları bazı sağlık kontrolleriyle işlemek ve geçerliyse önceden tanımlanmış bir URL'ye (yani URL'ye) göndermek için sonsuz bir döngüye girecektir. Django uygulamanız), bu da girdiyi işleyecek ve buna göre hareket edecektir. Android istemcisi daha sonra mesajı okundu olarak işaretler ve döngü, tam içeriği "exitclient" (akıllı, ha?) olan bir mesaj işlenene kadar devam eder, bu durumda istemci çıkacaktır.
Sunucuda, Django uygulaması işlenecek bir komutu alır ve geçerli bir talimatla başlayıp başlamadığını kontrol eder. Eğer öyleyse, Twisted sunucusuna bağlanır (telnet aracılığıyla bağlanmak için Telnetlib'i kullanarak) ve komutu birlikte gönderir. Son olarak, Twisted girdiyi ayrıştırır, onu Amarok'a uygun bir şeye dönüştürür ve Amarok'un sihrini yapmasına izin verir! Son olarak, dizüstü bilgisayarınız şarkı çalarak, duraklatarak, atlayarak vb. yanıt verir.
Bununla Başka Ne Yapabilirim?
Buraya kadar her şey çok basit görünüyor, değil mi? Kendinize şunu soruyor olabilirsiniz: "Bu, şık [X] özelliğini destekleyecek şekilde genişletilebilir mi?" Cevap: Evet (muhtemelen)! Telefonunuzu doğru şekilde kullanarak bilgisayarınızla nasıl etkileşim kuracağınızı bildiğinize göre, istediğinizi yapmak için sunucu tarafı kodunu tamamlayabilirsiniz. Siz farkına bile varmadan, bilgisayarınızdaki uzun süreçleri uzaktan çekiyor olacaksınız. Veya elektronikle başa çıkabiliyorsanız, bilgisayarınızla en sevdiğiniz cihaz arasında bir arayüz kurarak bunu SMS talimatlarıyla kontrol edebilirsiniz (“Aklıma kahve yap!” geliyor).
Sıradaki ne
Android dizüstü bilgisayar kontrollü oyuncağımla bir süre daha oynamaya, özelliklerini geliştirmeye, hataları düzeltmeye vb. devam edeceğim. Ama ilgileniyorsanız, yardımınızı görmek isterim! Depoyu çatallayın ve herhangi bir çekme isteği gönderin.
Herhangi bir sorunuz varsa, lütfen bana [email protected] adresinden bir e-posta gönderin, size yardımcı olmaktan memnuniyet duyarım.