Header Ads

Spark Core et Android - faciliter les développements Python sous Android

Bonjour à tous... il arrive parfois que la vie vous réserve d'agréables surprise et je dois avouer que pour le moment nous connaissons une période vraiment exceptionnelle.

Nous allons mettre ensemble plein de petites choses pour permettre la mise en oeuvre du développement d'un projet commandé via le Net depuis un SmartPhone Android.

Nous n'allons par aborder Spark Core, ni Python, QPython en détails. Voyez notre Wiki pour la doc Spark Core et la fin de cet article QPython

Nous allons juste nous concentrer sur les outils pouvant nous permettre d'aller loin rapidement et avec peu d'efforts!

Spark Core
Ceux qui ont suivit nos récents travaux et traduction sur le Wiki aurons découvert le Spark Core. C'est un microcontrôleur qui se programme comme Arduino et dispose nativement déjà d'une connectivité sur le Net via un module Wifi Intégré à la plateforme.
Découvrez le Spark Core chez MCHobby

Il est donc très facile de lire des senseurs ou  d'agir sur son environnement comme avec un Arduino (sauf qu'il est en 3.3V).
Le comble, c'est qu'il est accessible de n'importe ou dans le monde via une connexion Internet. Les échanges sont sécurisés (https pour autant que nous sachions), d'une facilité et efficacité à peine croyable!.

A titre d'exemple, voici une requête qui permet de lire la température sur le Spark Core de MCHobby. PS: nous avons masqué nos informations d'authentifications avec des xxx et yyyy

https://api.spark.io/v1/devices/54fyyyyyyyyyyyyyyyyyyy67/temperature?access_token=1dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxf8

Ce qui permet d'obtenir le résultat espéré.
Lecture d'une variable dans le Spark Core - voyez nos tutoriels Spark Core

Maintenant que nous savons comment obtenir facilement de l'information, ce serait bien de le faire depuis notre SmartPhone Android.

Une idée de projet
En idée de projet, il serait sympa d'avoir un Spark Core pour surveiller sa maison (température, lumière, ...). Et pourquoi pas ouvrir la porte et commander le système d'alarme à distance.

Et pour contrôler notre jouet, ce serait "top" d'utiliser.... notre SmartPhone. De nos jours, ils sont tous (ou presque) connectés au Net.

Pour le SmartPhone, nous optons simplement pour Android (question d'ouverture)

QPython - Développement Python sous Android
L'environnement de prédilection pour Android est Java.
Par contre, je ne suis pas vraiment décidé à investir tellement d'énergie dans les développements Java.
Comme Python est nettement plus populaire et facile à mettre en oeuvre que Java (vive le Raspberry Pi), j'ai cherché une option... que j'ai trouvé sous la forme de QPyhton.
QPython pour Android
QPyhton n'est pas seulement un environnement d'exécution capable de supporter des interfaces graphique sous Android. QPython c'est également un environnement de développement (il y a un éditeur de code et un interpréteur!).
QPython pour Android
QPython pour Android

Ceci étant, coder un programme en Python sur un petit SmartPhone, ce n'est pas forcement ce qu'il y a de plus commode.
Pour en savoir plus sur QPython, je vous propose de consulter les liens en fin d'article.  

FTP Serveur de QPython
Comme déjà abordé ci-dessus, développer un programme Python sur un Smart-Phone risque de ne pas être très pratique et agréable.

Heureusement, QPyhton à eu l'incroyable bonne idée d'intégrer un Serveur FTP que vous pouvez activer. Ce serveur est actif sur la connexion WiFi de votre SmartPhone.

Grâce à ce serveur FTP, vous pouvez facilement déposer vos fichiers Python
depuis votre PC sur votre SmartPhone.
Une fois votre serveur FTP démarré, vous allez obtenir une adresse IP (affichée sur l'écran de votre SmartPhone).
Pour la connexion, nous allons utiliser les paramètres par défaut:
  • Port FTP: 2121
  • Login: qpyplus
  • Mot de passe: qpyplus
Le répertoire principal du serveur FTP est localisé dans le répertoire de stockage des fichiers/scripts python de QPython.
Utiliser FileZilla pour déposer nos scripts Python
directement sur notre Android
Encore une fois, une avancée intéressante mais un peu barbare le transfert de fichier/script python à chaque fois que vous voulez tester une modification.

Linuxiens: un système de fichier de fichier ftp
C'est là où j'adore Linux! Il est possible de monter un système de fichier sur une connexion FTP. De la sorte, les fichiers FTP de votre Android sont vus et accessibles comme n'importe quel autre fichier de notre machine Linux. 

Il est donc possible d'éditer le code Python sur notre SmartPhone Android directement depuis notre éditeur de code favoris sur notre PC.
Seul le temps de transfert FTP se fera ressentir au moment de la sauvegarde ;-)

CurlFtpFS
Nous allons utiliser notre l'utilitaire CurlFtpFs pour monter notre "système de fichier over ftp".

Comme nous sommes accro à Linux Mint (dérivé d'Ubuntu), nous allons donc aborder la configuration sous cette approche. Il est certainement possible d'améliorer la configuration.

Installer CurlFtpFs
sudo apt-get install curlftpfs

Monter le système de fichier FTP vers notre android
sudo curlftpfs ftp://192.168.1.9:2121 /mnt -o user=qpyplus:qpyplus

Notez:
  • le sudo pour pouvoir utiliser librement le répertoire /mnt comme point de montage.
  • 192.168.1.9 : l'adresse IP de notre téléphone sur le réseau local (en WiFi, mentionné dans le serveur ftp de QPython)
  • 2121 : Le port FTP ouvert par le serveur ftp de QPython.
  • /mnt : le répertoire de montage (cette option n'est pas optimal mais c'est un début)
  • user=qpyplus:qpyplus  représente le login et mot de passe ftp de QPython.
Sans retour de message d'erreur, notre connexion FTP est établie et le système de fichier est mis à disposition dans le répertoire /mnt de notre Linux Mint.

démarrer un terminal en sudo 
Pour pouvoir accéder librement à /mnt, il faudra être super utilisateur.
Nous allons donc démarrer un terminal en super utilisateur PUIS nous rendre dedans pour accéder librement à nos fichiers tels qu'ils sont stockés sur notre Android

sudo mate-terminal

Utiliser notre système de fichier
voila, depuis notre terminal en mode super-utilisateur, nous pouvons librement coder nos scripts python depuis notre système d'exploitation favori!
Manipuler les fichiers de mon Android
via curlfstfp (système de fichier over FTP)
Ressources QPython
Voici les données en vrac... mais déjà de quoi se faire une idée de ce qui est possible.

http://qpython.com/
http://wiki.qpython.org/

http://qpython.org/

http://qpypi.qpython.org/guide/
 * Install wih QPypi
 * Instal with official pypi

http://onetimeblog.logdown.com/posts/2014/01/22/qpython-how-to-start
 * QPyhton - How to Start

http://onetimeblog.logdown.com/posts/2014/01/23/first-program-in-qpython
 * QPyhton - Hello World (with detailed information and reading)

http://onetimeblog.logdown.com/posts/2014/02/04/file-selection-dialog-in-qpython
 * File Chooser in QPython
 
QPython - support on stackoverflow.com

http://stackoverflow.com/questions/tagged/qpython
Search with [qpython] keyword

Information sur les packages

http://qpypi.qpython.org/search/

== androidhelper ==
To simplify Python-for-Android SL4A development in IDEs with a 'hepler' class derived from the default Android class containing SL4A facade functions & API documentation

== kivy ==
Innovative User Interfaces Made Easy.

Kivy is a Python framework for the development of multi-touch enabled media rich applications. The aim is to allow for quick and easy interaction design and rapid prototyping whilst making your code reusable and deployable.

Kivy is written in Python and Cython, based on OpenGL ES 2, supports various input devices and has an extensive widget library. With the same codebase, you can target Windows, OSX, Linux, Android and iOS. All our widgets are built with multitouch support.

Kivy is MIT licensed, actively developed by a great community and is supported by many projects managed by the Kivy organisation.

== multiprocessing ==
This is a back port of the multiprocessing package introduced via PEP-371 and Python 2.6. This is essentially for meta-fork of the original pyprocessing project found at: http://pyprocessing.berlios.de/

== numpy ==
numPy is the fundamental package needed for scientific computing with Python

== plyer ==
Plyer is a platform-independent api to use features commonly found on various platforms, notably mobile ones, in Python.
Accelerometer     X     X     X           X     X
Camera (taking picture)     X     X                      
GPS     X     X                      
Notifications     X     X           X     X     X
Text to speech     X     X     X     X     X     X
Email (open mail client)           X     X     X     X     X
Vibrator           X                      
Sms (send messages)     X     X                      
Compass     X     X     X                
Unique ID (IMEI or SN)     X     X     X     X     X     X
Gyroscope     X     X     X                
Battery     X     X

== sqlite3 ==
This is the pre-comiled sqlite3 library for QPython