Cette semaine, nous publions une nouvelle version de toutes nos librairies et du VirtualHub. Parmi les nouveautés, les librairies Android, C++, C#, Delphi, Java, Javascript, Objective-C, PHP, Python et VB.Net sont désormais aussi disponibles sur GitHub. De même, la librairie Python est téléchargeable très facilement via PyPI (Python Package Index). Pour illustrer ces nouveautés, nous allons mettre à jour notre programme d'exemple "PiCooker" afin qu'il utilise la librairie disponible sur PyPI, et en profiter pour l'améliorer un peu.
Avant de passer aux nouvelles façons d'installer les libraires de programmation, voici la liste des améliorations du VirtualHub et des différentes librairies.
VirtualHub:
- Améliore l'interface de configuration du Callback HTTP
- Améliore le traitement des timeout des connections HTTP
- Améliore l'interface pour les navigateurs mobiles et les interfaces tactiles
- Améliore le traitement des déconnexions durant une requête
- Fixe la condition de course qui pouvait tronquer des requêtes (en particulier sous Windows)
- Fixe les crash occasionnels lors de la déconnexion d'un module black-listé sous Mac OS X
- Fixe les crash (segmentation fault) après un Ctrl-C sur les machines Linux avec un processeur ARM
- Fixe les crash occasionnels à la déconnexion d'un module.
Programming libraries:
- Fixe les crash occasionnels lors de la déconnexion d'un module black-listé sous Mac OS X
- Fixe les crash (segmentation fault) pendant l'appel à FreeAPI() sur les machines Linux avec un processeur ARM
- Améliore le traitement des déconnexions durant une requête
- Ajoute les scripts de build ANT pour la librairie Android
- Utilise applicationContext au lieux de ActivityContext pour les BroadCastReceivers sous Android
- Fixe la méthode module() pour la librairie Java et Android
- Fixe quelques bugs mineurs
GitHub
A la demande de plusieurs clients, nous avons décidé de publier désormais simultanément nos librairies sur GitHub et sur notre site web. Les sources de la librairie, les exemples, la documentation et les Makefile sont inclus, mais contrairement aux archives disponibles sur notre site web la version Github ne contient pas les binaires compilés des exemples.
Si vous utilisez Git, cela vous permet d'intégrer plus facilement les librairies Yoctopuce dans vos projets. Plus besoin de déziper l'archive et d'ajouter manuellement les fichiers dans votre repository Git. Lors de la prochaine mise à jour, il vous suffira de mettre à jour votre repository local et de recompiler votre projet pour mettre à jour votre application. Il sera aussi plus facile de nous proposer un fix ou une amélioration pour notre librairie.
Comme toutes nos librairies utilisent une licence permettant une utilisation très large (utilisation, modification, copie, intégration) avec comme seule condition que ce soit pour les utiliser avec nos produits, vous pouvez créer votre propre branche Git et customiser votre libraire comme bon vous semble.
Les librairies sont disponibles dès maintenant sur notre compte GitHub http://github.com/yoctopuce.
PyPI
Nous avons aussi décidé de publier notre librairie Python sur PyPI (the Python Package Index) afin de simplifier la vie des développeurs Python. Tout comme pour Github, la librairie contient les sources, les exemples et la documentation.
Il y a cependant une petite différence d'utilisation avec la librairie PyPI : vous devez préfixer les includes avec yoctopuce. Par exemple, pour utiliser un capteur de température et un relais, il faut inclure la librairie comme ceci:
from yoctopuce.yocto_api import *
from yoctopuce.yocto_temperature import *
from yoctopuce.yocto_relay import *
Raspberry Pi, PyPI et Yoctopuce
Pour illustrer l'utilisation de la librairie PyPI, nous allons reprendre l'exemple du PiCooker que nous avions utilisé dans ce post. On va profiter de l'occasion pour améliorer ce programme afin qu'il puisse utiliser tous les capteurs de température connectés au Raspberry PI (au lieu d'un seul jusqu'à présent).
Avant de commencer à installer la librairie, vérifiez bien que votre Raspberry PI est à jour en exécutant "sudo raspi-config" et en sélectionnant "update". Malheureusement le bug USB du Raspberry PI n'a toujours pas été complètement fixé, il faut donc s'assurer que votre fichier /boot/cmdline.txt contienne bien l'option dwc_otg.speed=1 et redémarrer. Une fois ces deux opérations faites, on peut commencer à installer la librairie Python. Édit: L'option "dwc_otg.speed" n'est plus nécessaire pour les Raspberry Pi B+ et suivants.
Si vous n'avez jamais installé de libraire depuis PyPI, il faut installer l'utilitaire pip qui permet de télécharger et installer un package PyPI. Si vous avez déjà utilisé pip sur votre Raspberry PI, vous pouvez sauter cette étape, décrite au paragraphe qui suit.
Pour installer pip, vous aurez besoin du package setuptools, qui s'installe avec la commande sudo apt-get install python-setuptools. Ensuite, pour installer pip lui-même, il existe plusieurs méthodes qui sont documentés sur cette page. Sur le Raspberry, le moyen le plus simple est d'utiliser le script get-pip qui est disponible sur GitHub.
curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py sudo python get-pip.py
Lorsque pip est installé, il suffit exécuter la commande pip install pour installer un package PyPI. Pour installer la librairie Yoctopuce il faut donc d'exécuter:
pip install yoctopuce
Simple Non? pip va automatiquement télécharger et installer la librairie la plus récente sur votre machine dans le bon répertoire. Pour vérifier que l'installation s'est bien passée, vous pouvez lancer un interpréteur Python et exécuter les lignes suivantes:
Python 2.7.3 (default, Jan 13 2013, 11:20:46)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from yoctopuce.yocto_api import *
>>> print(YAPI.GetAPIVersion())
1.01.11167 (1.01.11167)
>>>
Lors de la prochaine version de la librairie, il vous suffira d'ajouter l'option -U pour mettre à jour votre installation.
pip install -U yoctopuce
Le PiCooker V1.2
Si on lance le script original du PiCooker, Python va s'arrêter avec l'erreur suivante :ImportError: No module named yocto_api.
Comme nous l'avons dit plus haut, si l'on veut utiliser la librairie PyPI, il faut préfixer l'include avec yoctopuce il faut donc remplacer
from yocto_api import *
from yocto_temperature import *
par
from yoctopuce.yocto_api import *
from yoctopuce.yocto_temperature import *
Nous avons profité de l'occasion pour améliorer le PiCooker, notre petit exemple de surveillance de cuisson par un Raspberry Pi. Vous pouvez télécharger la nouvelle version sur GitHub. Nous avons ajouté la possibilité d'utiliser plusieurs capteurs de température, connectés au même Rasberry Pi. Pour mémoire, la ligne de commande pour le lancer le PiCooker ressemble à celà:
./picooker.py --smtp_host=smtp.gmail.com --smtp_port=465 --smtp_user=myemail@gmail.com --smtp_pass=mypassword
Bien sûr, il faut adapter ces paramètres selon votre fournisseur e-mail et internet. Selon les cas, le bon port SMTP peut être 25, 465 ou 587. En cas de doute, essayez les à tour de rôle jusqu'à trouver celui qui fonctionne. Pour vous faciliter la tâche, au démarrage, cette nouvelle version du programme va envoyer un email de test pour s'assurer que les paramètres SMTP sont corrects.