Ligne 2 : |
Ligne 2 : |
| | | |
| {{traduction}} | | {{traduction}} |
| + | |
| + | == introduction == |
| + | Python Call ou "Comment faire des appels sur votre Core à partir de Python". |
| + | |
| + | Nous avons déjà abordé la lecture d'une entrée digitale sur le Core et la publication d'une variable sur le Cloud dans notre tutoriel [[Spark-Core-Bouton|Bouton & Compteur]]. |
| + | |
| + | Nous avons bien entendu complété nos tutoriels avec l'utilisation d'un contact reed/magnétique, lecture de température avec TMP36 ([[Spark.IO-Accueil|voir nos autres tutoriels Spark Core]] dans la page dédiée au Spark Core). |
| + | |
| + | === Utiliser un Spark Core avec Raspberry-Pi === |
| + | Ce qui nous tient à coeur depuis un petit moment, c'est de contacter et contrôler notre Spark Core par l'intermédiaire d'un Raspberry-Pi. |
| + | |
| + | [[Fichier:Spark-Python-Call-00.jpg]] |
| + | |
| + | De quoi faciliter la réalisation de projet Domotique par les Makers. |
| + | |
| + | Comme le langage de prédilection sur le Pi est Python, nous nous sommes mis en tête d'écrire une bibliothèque pour faciliter les accès à votre Core par l'intermédiaire de l'API du Spark Cloud. Voila, '''PyCall''' (Python Call) est né. |
| + | |
| + | == PyCall == |
| + | PyCall est le code Python que nous avons publié sur GitHub. |
| + | |
| + | PyCall, ce sont des exemples utilisant la classe Python '''SparkApi''' pour accéder à l'API de Spark Cloud et la classe '''SparkCore''' pour adresser directement un core. |
| + | |
| + | Voir notre dépôt GitHub: |
| + | |
| + | https://github.com/mchobby/SparkCoreTuto |
| + | |
| + | Nous avons bardé le répertoire d'exemple python exploitant les classes et démontrant qu'il est simple de prendre le contrôle de votre Spark Core depuis un Raspberry-Pi (ou n'importe quel OS capable d'exécuter du code Python). |
| + | |
| + | Nous avons également placé une copie des programmes "Arduino/Wiring" utilisés sur le Spark Core... puisque c'est a ces programmes que nos scripts Python vont s'adresser. |
| + | |
| + | Nous avons également un script python '''core-tinkering.py''' spécifique pour contrôler le Core avec son programme par défaut (Tinker, celui installé en usine) mais nous y reviendrons plus tard. |
| + | |
| + | === Les exemples Python === |
| + | Les scripts Python fonctionne avec des programmes Core correspondant (fichier '.ino'), fichier également publiés sur le dépôt GitHub. |
| + | * '''netled.py''' - fait des appels de fonction sur le core pour controler des LED sur le core via le programme netled.ino |
| + | * '''lecture-tmp36.py''' - fait des lectures de variable sur le core pour lire la valeur du senseur de température tmp36. Voir le programme lecture-tmp36.ino |
| + | * '''buttoncounter.py''' - fait des appels sur un core faisant fonctionner le programme buttoncounter.ino. |
| + | * '''magneticswitch.py''' - fait des appels sur un core faisant fonctionner le programme magneticswitch.ino |
| + | * '''core-info.py''' - Obtenir plus d'information sur un core. Les fonctions et les variables publiées. |
| + | * '''cores-list.py''' - Lister les Cores associé à votre compte Spark Cloud |
| + | * '''core-tinkering.py''' - Comment définir une classe SparkCoreTinker et utiliser ses méthodes pour faciliter les appel sur l'API publié par le Spark Core. Exemple basé sur Tinker de SPARK :-) Vous pouvez donc contrôler directement Tinker depuis Python :-) |
| + | |
| + | == SparkApi.ini == |
| + | Pour vous connecter sur l'API du Spark Cloud, vous avez besoin d'un access_token. Et pour vous connecter sur votre Core, vous aurez besoin de son Core ID. |
| + | |
| + | Plutôt que de hardcoder ces valeurs ([http://shop.mchobby.be celles de MCHobby]) dans les exemples et les programmes, j'ai opté pour un fichier de configuration (SparkApi.ini) dans lequel vous devrez placer les valeurs adéquates (les vôtres bien entendu). |
| + | |
| + | Ce fichier est lu à l'aide d'une simple classe Config créée dans ce but. |
| + | |
| + | Bien entendu, Je n'ai pas publié mon fichier SparkApi.ini. |
| + | Vous devez donc créer ce fichier SparkApi.ini à partir de sparkapi-sample.ini (disponibles dans les sources) et y encoder les paramètres de votre PROPRE compte Spark Cloud et le CORE_ID de votre propre Spark Core. |
| + | |
| + | |
| + | Voici une copie du fichier sparkapi-sample.ini |
| + | |
| + | <nowiki># Copiez le contenu de ce fichier dans sparkapi.ini et |
| + | # adaptez les valeur access_token et core0 en fonction de votre propre |
| + | # compte Spark Cloud :-) |
| + | [SPARK-API] |
| + | # votre access token lié à votre compte Spark Cloud voir notre tuto |
| + | # http://wiki.mchobby.be/index.php?title=Spark-Core-NetLED#Faire_une_requ.C3.AAte_sur_l.27API |
| + | # pour identifier votre core_id et access_token |
| + | access_token=123412341234 |
| + | [CORES] |
| + | # Liste de un ou plusieurs de vos spark cores ici |
| + | # Vos cores sont lié à votre compte Spark Cloud (et donc votre access_token). |
| + | # Voyez notre tuto pour identifier les core_id |
| + | # http://wiki.mchobby.be/index.php?title=Spark-Core-NetLED#Faire_une_requ.C3.AAte_sur_l.27API |
| + | core0=0123456789abcdef</nowiki> |
| + | |
| + | Une fois votre fichier sparkapi.ini créé, vous devez avoir une structure semblable à ceci. |
| + | |
| + | [[Fichier:Spark-Python-Call-10.jpg]] |
| + | |
| + | == Les éléments clés == |
| + | Bien qu'un peu plus de code soit nécessaire pour rendre vos scripts fonctionnel |
| + | |
| + | === Lecture de variable === |
| + | Pour lire la valeur d'une variable publiée par un Core, il suffit d'appeler |
| + | |
| + | value = core.value_of( 'counter' ) |
| + | |
| + | === Appel de fonction === |
| + | Et pour faire l'appel d'une fonction publiée sur le core, il suffit d'appeler |
| + | |
| + | <nowiki>result = core.call( 'reset' ) |
| + | result = core.call( 'ma_fonction', parametres_string )</nowiki> |
| + | |
| + | |
| + | == Exemples == |
| + | === buttoncounter.py === |
| + | En guise d'exemple, nous allons nous pencher sur le contrôle du progamme buttoncounter.ino (voyez notre tutoriel [[Spark-Core-Bouton|Bouton & Compteur]]). |
| + | |
| + | Le script buttoncounter.py permet d'accéder à la variable "counter" et la fonction "reset" publié le core (''buttoncounter.ino'') sur Spark Cloud. |
| + | |
| + | Le [https://github.com/mchobby/SparkCoreTuto/blob/master/PyCall/buttoncounter.py script dans le dépôt] est très abondamment (trop) documenté pour faciliter la prise en main. Je vais donc en proposer une version allégée pour se concentrer sur l'essentiel. |
| + | |
| + | <nowiki></nowiki> |
| + | |
| + | Ce qui produit le résultat suivant: |
| + | |
| + | [[Fichier:Spark-Python-Call-20.jpg]] |
| | | |
| {{Spark-Python-Call-TRAILER}} | | {{Spark-Python-Call-TRAILER}} |