Tutorial: Como desenvolver sua primeira aplicação Python no N900

Olá pessoal,

Há algumas semanas adquiri o recém lançado aparelho da Nokia Tablet N900 embarcado com sistema operacional Maemo 5. Para aqueles que não conhecem, este dispositivo pode ser considerado um tablet  e também um telefone (na verdade são ambos).  Ele foi um dos aparelhos mais comentados na mídia especialmente pelo seu poder de processamento  que chega aos 600 MHZ e 256 mb de RAM.  Sem contar o seu sistema operacional que é baseado na distribuição Debian e sua placa aceleradora gráfica 3D com suporte ao OpenGL. Mais informações sobre ele no site oficial.



Mas o motivo deste post não é somente falar sobre este aparelho. O que me atrai nele é o ambiente de desenvolvimento para construção de aplicativos, inclusive a comunidade de desenvolvedores que está por trás dela. Quem não conhece o maemo.org e quiser participar é muito bem vindo! Uma das coisas mais legais que eu vi é que você pode compartilhar seus aplicativos por meio de repositórios específicos que quaisquer usuários, habilitando-os,  poderão ter acesso à sua aplicação.

Além de ter uma forte cultura open-source por trás do Maemo, visto que todos os aplicativos são gratuitos, pelo menos nos repositórios, você ainda poderá explorar bem as funcionalidades do aparelho já que o mesmo fornece todo um SDK com suporte ao Qt, Python, Perl, C++, etc. Mas qual linguagem escolher para desenvolver ?

Eu escolhi Python por 2 fatores. Além do total suporte do Maemo para esta linguagem, visto que é uma distribuição GNU/Linux, ele possui muitos programas essenciais do sistema escritos em Python. O outro fator é o simples fato de Python ser uma linguagem fácil de aprender e simples de programar. Com qualquer editor de texto, você pode escrever algum código!  Para aqueles que não conhecem python, recomendo dar uma olhada no site oficial que tem muito material disponível!

A partir de agora começarei uma série de posts sobre dicas e informações de como começar a desenvolver no Maemo N900 por meio da linguagem Python. Este material pretende ser referência em língua portuguesa, visto que há muito material em inglês, e às vezes um desenvolvedor não entende como fazer, pois não detém o conhecimento da língua inglesa.

Espero que possa ajudar a desenvolvedores e entusiastas de programação que desejam a construir seus aplicativos na plataforma Maemo. Vale salientar que neste post é necessário que você tenha um aparelho N900  mãos. Irei demonstrar passo a passo como colocar uma primeira aplicação Hello World rodando no mesmo.  Em outro post irei demonstrar como instalar o emulador do aparelho para aqueles que não tem o N900 em mãos.

Estou executando todos os passos através do sistema operacional Mac OS 10.5, porém pode ser adaptado facilmente para o sistema operacional baseado no Linux (Ubuntu, Debian, Fedora, etc.)

Este artigo cobrirá os seguintes passos:
  • Instalação dos pacotes necessários para conectividade entre N900 e o Mac.
  • Algumas sugestões de editores de código em Python
  • Como construir seu Primeiro "Hello World" em PyGTK
  • Como transferir a aplicação para o N900
  • Como executar a aplicação
1 - Instalação dos pacotes no N900 e no Mac OS



O primeiro passo é ter seu N900 com acesso à internet (mediante GPRS ou Wi-FI). Você precisará instalar os seguintes aplicativos no N900.
OpenSSH é um aplicativo que permite enviar comandos remotamente no seu N900. Este aplicativo é extremamente importante para enviar os arquivos/comandos ao aparelho.
O rootsh é um aplicativo que permite você enviar comandos como root no X Terminal (pode-se usar sudo gainroot ou root). Você pode ver mais informações sobre acesso root aqui.

Para instalar os aplicativos, seguem os passos:
  1. Ative o repositório extras.
  2. Procure pelos aplicativos rootsh e OpenSSH no search no seu App Manager.
  3. A instalação irá requisitar uma nova senha de root para acesso SSH. Escolha uma.
  4. Aguarde até a instalação estar completa.

Já no seu Mac/Linux/Windows:
  • Um cliente SSH. Para o linux, existe já o OpenSSH (via comando ssh) assim como o Mac que já possui o cliente o qual pode ser acessado mediante comando 'ssh' no terminal. No Windows tem o Tera Term
  • Um cliente SCP/SFTP.  Tanto para o Mac como o Linux, pode ser utilizado o OpenSSH (mediante comando "scp").  Já o Windows você pode usar os programas WinSCP ou FileZilla. .
** Neste artigo não instalaremos o Scratchbox. Ele será comentado em outro post, quando falarei sobre instalação de emuladores.

2 - Acessando seu N900 pelo terminal.
Agora vamos acessar o terminal do N900 via root remotamente.  Para isso existem 2 opções: Você pode usar a própria rede sem fio o qual seu PC/Mac e o N900 estão conectados. Este é o método mais rápido ou você pode acessar via conexão USB. Este exige algumas configurações prévias. Este método é mais complicado exige um post especial à parte.

2.1 - Conexão sem fio

1 - Digite os comandos abaixo no terminal do N900 (Para abri-lo va no menu Principal -> Terminal)

$ root
$ ifconfig wlan0 | grep inet



 

Você verá wlan0 - que refere-se a wireless network interface (Wlan) e o inet addr: que é o IP alocado ao N900. Ver figura acima. Anote este IP pois você utilizará para acesso remoto na sua máquina.


2.2 - Conexão Remota no seu terminal.

 Agora vamos estabelecer a comunicação remota entre sua máquina e o N900. Para isso digite os seguintes comandos (Substitua o ip_do_n900 pelo ip obtido pelo passo acima).

$ ssh root@ip_do_n900
$ root@ip_do_n900's password: 
$ BusyBox v1.10.2 (Debian 3:1.10.2.legal-1osso26+0m5)
?:~# 
 

 Parabéns! Você já pode acessar seu N900 remotamente! Agora vamos ao seu primeiro programa python no N900!

3- Escrevendo código

Agora você deve começar a digitar seu código Python.  Você pode utilizar qualquer editor de texto. Isto é o mais legal de Python! A escolha do ambiente é sua! Abaixo deixo alguns exemplos de editores famosos:
  • gedit: Famoso editor para o GNOME
  • VIM and Emacs:Editores populares para terminais.
  • NetBeans + Python plugin: Netbeans, famosa IDE para aplicativos java também com suporte à Python
  • PyGTKEditor: Há até um pequeno editor de Python que roda nativamente no Maemo.
  • TextMate:  Meu favorito que utilizo no Mac OS. 
 Agora vamos ao código. Escreva o código abaixo em um arquivo de texto e salve como pyMaemo.py
    import gtk
    from gtk import Window, Button, Widget
    if __name__ == "__main__":
        window = Window(gtk.WINDOW_TOPLEVEL)
        window.connect("destroy", gtk.main_quit)
        button = Button("Hello World")
        button.connect_object("clicked", Widget.destroy, window)
        window.add(button)
        window.show_all()
        gtk.main()

    O que este código acima faz? Ele utiliza o framework de componentes gráficos disponível no Maemo chamado GTK. Com ele você pode construir aplicativos com suporte a janelas, botões, campos de texto, etc.  Ele já vem instalado nativamente no Maemo e muitos aplicativos no mesmo utilizam o  GTK para a construção de suas telas. O aplicativo acima apenas cria uma nova janela e coloca um botão no meio com o rótulo "Hello World" e adiciona o mesmo a ela. Posteriormente, o comando show_all() manda exibir a tela no N900. Para saber mais informações sobre o GTK você pode saber aqui.

    4- Transferindo sua aplicação

    Estamos quase lá. Agora vamos transferir sua aplicação para o telefone. Para isto vamos copiar os arquivos da sua aplicação (que neste caso é o pyMaemo.py) para o telefone por meio do cliente SFTP ou SCP. Abra outra instância do seu terminal (NO PC/MAC) e digite o seguinte comando:

    $ scp -pr minha_aplicacao/ root@ip_do_n900:/root/minha_aplicacao

    Substitua minha_aplicacao/  pelo caminho do diretório o qual contêm os arquivos da sua aplicação. Este comando copia os arquivos da sua aplicação para o diretório correspondente no seu telefone.


    5- Executando a aplicação

    Finalmente, execute a sua aplicação. Você pode digitar os comandos abaixo ou no seu terminal (mediante a conexão estabelecida com seu PC e o N900. Ver o passo 2.1.) ou no X Termina do seu N900.

    $ cd /root/my_application
    $ python py_maemo.py

     Finalmente, este comando python minha_aplicacao.py fará executar a sua aplicação no telefone. Você verá uma tela similar a essa!



    Parabéns! Sua primeira aplicação em Python foi executada com sucesso!

    Pronto pessoal, você tem uma aplicação simples em Python funcional no seu N900! Logicamente, há muito mais que pode ser feito e isto será coberto por mim em outros posts. Pode-se observar que é fácil você montar um ambiente de desenvolvimento em Python para  o N900 com poucos minutos e já ter uma aplicação rodando.  O  N900 é uma plataforma realmente poderosa para construir suas aplicações, especialmente com Python!

    Dica: Se você quiser tirar screenshots das telas do teu N900, você só precisa em qualquer tela pressionar os seguintes botões:


    Ctrl + Shift + P
     


    As imagens ficarão salvas na pasta:




    • ~/MyDocs/.images/Screenshots ou Nokia N900/Images/Screenshots


    Pessoal,  tem um vídeo também disponível com os passos comentados acima pelo wiki do PyMaemo. Quem quiser,  pode vê-lo pelo vídeo abaixo.








    Valeu pessoal e até a próxima! Dúvidas ou sugestões estou à disposição!

    Referências

     http://wiki.maemo.org/PyMaemo/QuickStartGuide 
    http://www.techiecorner.com/1611/how-to-print-screen-in-nokia-n900/

    4 comentários:

    Unknown disse...

    Muito bom o artigo! :D

    Ainda não vi o n900, mas gostei bastante de trabalhar com o n810. Para o desenvolvimento, eu usei o Pluthon que, apesar de ser relativamente bem mais complicado para instalar, trazia algumas facilidades durante o desenvolvimento e que ajudou bastante. Adorei essa opção mais prática. :)

    Abraço!

    Rodrigo Lira disse...

    Muito legal o post Marcel, realmente é igual a uma aplicação em PyGtk o que facilita muito o desenvolvimento para quem já conhece essa biblioteca.

    abraço

    Unknown disse...

    Acabei usando o Gtk nesse mesmo projeto. Lembro-me que eu não sabia nada a respeito, mas não foi complicado de aprender a usar. Na verdade foi mais fácil e mais útil usar o PyGtk do que utilizar a ferramenta que já vinha no Easy (http://easy.garage.maemo.org/) que fazia interface gráfica. Apesar de ser ultra simples, não dava controle de praticamente nada para o desenvolvedor, e eu tive que abandonar essa estratégia. Falando no Easy, ele permite que você faça aplicações que tire fotos, filme, entre outros de forma bem fácil. Não sei se ele é compatível com o n900, mas no n810 funcionou bem.

    Abraço!

    marcelcaraciolo disse...

    Olá pessoal,

    Tenho visto na comunidade o forte uso de PyGtk para o Maemo. Entretanto sinto que a Nokia vem investindo forte no Qt. Inclusive há já bindings para Python no maemo com Qt: PyQt e recentemente o PySide.
    Vale ficar de olho nessas 2 também.
    Pretendo escrever mais tutoriais explicativos e até falar destas ferramentas!

    top