socialgekon.com
  • Hoved
  • Investorer Og Finansiering
  • Inntekter Og Vekst
  • Trender
  • Økonomiprosesser
Mobil

Kontroller den bærbare datamaskinen din med en Android-telefon ved hjelp av Python, Twisted og Django

Introduksjon

Det er alltid gøy å sette Android eller Python programmeringsferdigheter på skjermen. For en stund tilbake skjønte jeg at det ville være kult å prøve å kontrollere min bærbare datamaskin via Android-mobilenheten min. Tenk på det: ekstern bærbar tilgang, inkludert å kunne spille av og sette musikk på pause, starte og stoppe programmering av jobber eller nedlastinger osv., Alt ved å sende meldinger fra telefonen. Ryddig, ikke sant?

Før du fortsetter å lese, må du huske på at dette er et kjæledyrprosjekt, som fortsatt er i en tidlig fase - men den grunnleggende plattformen er der. Ved å lime sammen noen vanlige verktøy, var jeg i stand til å sette opp Android-telefonen min for å kontrollere min bærbare datamaskin via en Python-tolk.

Forresten: prosjektet er åpen kildekode. Du kan sjekke ut klientkoden her og serverkoden her .



Ekstern bærbar tilgangsverktøybelte: Python, Twisted, Django og Amarok

Dette prosjektet involverer følgende teknologier, hvorav noen du kanskje er kjent med, og noen av dem er ganske spesifikke for oppgaven:

  • Python 2.7+
  • Vridd : et utmerket begivenhetsdrevet rammeverk spesielt laget for nettverkshackere.
  • Django : Jeg brukte v1.4, så du må justere plasseringen til noen filer hvis du vil kjøre en lavere versjon.
  • Amarok : en D-BUS (mer om dette nedenfor) håndterbar mediespiller. Dette kan legges ut for andre slike mediespillere ( Clementine , VLC , eller noe som støtter MPRIS ) hvis du kjenner meldingsstrukturene deres. Jeg valgte Amarok fordi den kommer med min KDE-distribusjon som standard. I tillegg er det raskt og enkelt å konfigurere.
  • En Android-telefon med Python for Android installert (mer om dette nedenfor). Prosessen er ganske grei - selv for Py3k !
  • Ekstern Amarok og Eksternt Amarok-nett .

På høyt nivå

På et høyt nivå anser vi Android-telefonen vår som klienten og den bærbare datamaskinen vår, serveren. Jeg vil gå gjennom denne fjerntilgangsarkitekturen grundig nedenfor, men den grunnleggende flyt av prosjektet er som følger:

  1. Brukeren skriver inn en kommando i Python-tolken.
  2. Kommandoen sendes til Django-forekomsten.
  3. Django sender deretter kommandoen videre til Twisted.
  4. Twisted og deretter analyserer kommandoen en ny kommando via D-Bus til Amarok.
  5. Amarok samhandler med selve den bærbare datamaskinen, og styrer avspilling / pausing av musikk.

Lær hvordan du styrer en bærbar datamaskin med Python, Twisted og Django ved hjelp av dette verktøybeltet.

Nå kan vi grave inn.

Python på Android

Så en god dag begynte jeg å se på Python-tolker som jeg kunne kjøre på Android-telefonen min (Droid 2, den gang). Like etter oppdaget jeg det utmerkede SL4A-pakke som brakte Python For Android liv. Det er en veldig fin pakke: du klikker på et par knapper og plutselig har du en nesten fullt funksjonelt Python-miljø på din mobile eller nettbrett som både kan kjøre din gode olje Python-kode og få tilgang til Android API (jeg sier nesten fordi noen ting sannsynligvis mangler og Android API ikke er 100% tilgjengelig, men for de fleste brukstilfeller er det tilstrekkelig).

Hvis du foretrekker det, kan du også bygge din egen Python-distribusjon for å kjøre på Android-enheten din, noe som har fordelen at du deretter kan kjøre hvilken som helst versjon av tolken du ønsker. Prosessen innebærer kryss-kompilering av Python som skal kjøres på VÆPNE (arkitekturen som brukes på Android-enheter og andre tabletter ). Det er ikke lett, men det er absolutt gjennomførbart. Hvis du er klar for utfordringen, sjekk her eller her .

Når du har tolkoppsettet ditt, kan du gjøre i utgangspunktet hva du vil ved å kombinere Python med Android API, inkludert å styre den bærbare datamaskinen eksternt. For eksempel kan du:

  • Send og les SMS.
  • Samhandle med tredjeparts APIer på Internett via urllib og andre biblioteker.
  • Vis innfødte utseende og prompter, snurrende dialoger og lignende.
  • Bytt ringetone.
  • Spill av musikk eller videoer.
  • Samhandle med Bluetooth - spesielt denne baner vei for mange muligheter. For eksempel lekte jeg en gang med å bruke telefonen min som et opplåsingsapplikasjon for den bærbare datamaskinen min (f.eks. Låse opp den bærbare datamaskinen via Bluetooth når telefonen min var i nærheten).

Hvordan du bruker telefonen til å kontrollere den bærbare datamaskinen din

Arkitekturen

Vår prosjektsammensetning er som følger:

  • En applikasjon på klientsiden bygget på Twisted hvis du vil teste serverkoden (nedenfor) uten å måtte kjøre Django-applikasjonen i det hele tatt.

  • En Django-applikasjon på serversiden, som leser inn kommandoer fra Android-enheten og sender dem videre til Twisted. Som det ser ut, er Amarok den eneste bærbare applikasjonen som serveren kan samhandle med (dvs. for å kontrollere musikk), men det er et tilstrekkelig proof-of-concept, siden plattformen er lett utvidbar.

  • En serversiden Twisted 'forekomst' som kommuniserer med den bærbare datamaskinens mediaspiller via D-Bus, og sender kommandoer når de kommer inn fra Django (for øyeblikket støtter jeg 'neste', 'forrige', 'spill', 'pause', 'stopp' og 'demp'). Hvorfor ikke bare overføre kommandoene direkte fra Django til Amarok? Twisted's hendelsesdrevne, ikke-blokkerende attributter tar bort alt hardt arbeid med å tråde (mer nedenfor). Hvis du er interessert i å gifte deg med de to, se her .

Twisted er utmerket, begivenhetsdrevet og allsidig. Den fungerer ved hjelp av et tilbakeringingssystem, utsatte gjenstander og noen andre teknikker. Jeg vil absolutt anbefale at du prøver det: mengden arbeid du unngår ved å bruke Twisted er seriøst imponerende. For eksempel serverer den kjelekode for mange protokoller, inkludert IRC, HTTP, SSH, etc. uten å måtte håndtere mekanismer som ikke blokkerer (tråder, velg osv.).
  • Android-koden på klientsiden, lastet opp til enheten din med en tilpasset URL for å nå Django-applikasjonen. Det er verdt å nevne at denne spesielle koden kjører på Python 2.7+, inkludert Py3k.

Hva er D-Bus?

Jeg har nevnt D-Bus flere ganger, så det er sannsynligvis verdt å diskutere det nærmere. I det store og hele er D-Bus et meldingsbussystem for å kommunisere mellom applikasjoner (f.eks. På en bærbar datamaskin og Android-telefon) enkelt gjennom spesiallagde meldinger.

Den består hovedsakelig av to busser: systembussen for hele systemet; og øktbussen, for userland-ting. Typiske meldinger til systembussen vil være 'Hei, jeg har lagt til en ny skriver, gi beskjed til D-Bus-aktiverte applikasjoner om at en ny skriver er online', mens typisk interprosesskommunikasjon (IPC) blant applikasjoner vil gå til økten buss.

Vi bruker øktbussen til å kommunisere med Amarok. Det er veldig sannsynlig at de fleste moderne applikasjoner (i det minste under Linux-miljøer) støtter denne typen meldinger, og generelt er alle kommandoer / funksjoner som de kan behandle, godt dokumentert. Ettersom alle applikasjoner med D-Bus-støtte kan kontrolleres under denne arkitekturen, er mulighetene nesten uendelige.

Mer info finner du her .

Bak scenen:

Etter å ha satt opp all infrastruktur, kan du fyre av Android-applikasjon og det vil inngå en uendelig løkke for å lese innkommende meldinger, behandle dem med noen fornuftige kontroller, og hvis de er gyldige, sende dem til en forhåndsdefinert URL (dvs. URL-en til Django-appen din), som i sin tur vil behandle inngangen og handle deretter. Android-klienten markerer deretter meldingen som lest og sløyfen fortsetter til en melding med det nøyaktige innholdet 'exitclient' (smart, ikke sant?) Behandles, i hvilket tilfelle klienten vil avslutte.

På serveren plukker Django-applikasjonen en kommando som skal behandles og sjekker om den starter med en gyldig instruksjon. I så fall kobles den til Twisted-serveren (ved hjelp av Telnetlib å koble til via telnet ) og sender kommandoen med. Til slutt analyserer Twisted inngangen, forvandler den til noe som passer for Amarok, og lar Amarok gjøre magien! Til slutt svarer den bærbare datamaskinen din ved å spille sanger, pause, hoppe over osv.

Når det gjelder den 'forhåndsdefinerte URL': hvis du vil kontrollere datamaskinen din langtfra, må dette være en offentlig URL (tilgjengelig via Internett). Vær oppmerksom på at koden for tiden ikke implementerer noe sikkerhetslag (SSL, osv.) - slike forbedringer er for øyeblikket øvelser for leseren.

Hva annet kan jeg gjøre med dette?

Alt ser veldig enkelt ut så langt, ikke sant? Du kan spørre deg selv: 'Kan dette utvides til å støtte smidig funksjon [X]?' Svaret er: Ja (sannsynligvis)! Gitt at du vet hvordan du skal samhandle med datamaskinen din ved å bruke telefonen riktig, kan du supplere koden på serversiden for å gjøre hva du vil. Før du vet ordet av det, skyter du av lange prosesser på datamaskinen din eksternt. Eller hvis du takler elektronikken, kan du bygge et grensesnitt mellom datamaskinen og favorittapparatet ditt, og kontrollere at via SMS-instruksjoner (“Make me coffee!” kommer til å tenke).

Hva blir det neste

Jeg vil fortsette å leke med min Android-laptop-kontrollleke en stund, forbedre funksjonene, fikse feil osv. Men hvis du er interessert, vil jeg gjerne se deg hjelpe deg! Bare gaffel depotet og send eventuelle trekkforespørsler.

Hvis du har spørsmål, kan du skyte meg en e-post på [e-postbeskyttet] og jeg hjelper deg gjerne.

Hvordan fjerne følgere på Instagram, og hva skjer når du gjør det

Innlegg

Hvordan fjerne følgere på Instagram, og hva skjer når du gjør det
Topp eksempler på visualisering av data og designpaneler

Topp eksempler på visualisering av data og designpaneler

Ux Design

Populære Innlegg
Hvordan lage et budsjett som varer hele året
Hvordan lage et budsjett som varer hele året
iPhone 13-problemer og hvordan du fikser dem
iPhone 13-problemer og hvordan du fikser dem
Introduksjon til OpenGL: En veiledning i 3D-tekstgjengivelse
Introduksjon til OpenGL: En veiledning i 3D-tekstgjengivelse
Slik sletter du systemdata på iPhone
Slik sletter du systemdata på iPhone
Skogfotografering: Hvordan ta drømmende bilder i skogen
Skogfotografering: Hvordan ta drømmende bilder i skogen
 
Stop Trash: En guide til design av grensesnitt som varer lenge
Stop Trash: En guide til design av grensesnitt som varer lenge
Beste praksis for mobil e-handel for UX (med infografikk)
Beste praksis for mobil e-handel for UX (med infografikk)
En guide til å håndtere valutarisiko
En guide til å håndtere valutarisiko
Den ubestridelige viktigheten av en forretningsplan
Den ubestridelige viktigheten av en forretningsplan
Slik tar du profesjonelt utseende eventfotografering på iPhone
Slik tar du profesjonelt utseende eventfotografering på iPhone
Kategorier
LivsstilMobil DesignLagringBaksidenInvestorer Og FinansieringProduktfolk Og TeamDistribuerte LagMobiliOS-tipsInntekter Og Vekst

© 2023 | Alle Rettigheter Reservert

socialgekon.com