Flasher votre Spark Core via Internet avec un script Python

C'est en effectuant la traduction du tutoriel Spark sur l'API Spark Cloud que j'ai commencé à écrire une petite bibliothèque Python permettant de faire des appels d'API sur Spark Cloud et Spark Core.

C'est ainsi que le projet PyCall est né sur notre dépôt GitHub
https://github.com/mchobby/SparkCoreTuto

Agir sur le Core
Un précédent article faisait déjà état d'appels de fonction sur votre Core et lecture de variables de votre Spark Core depuis un Script Python.
Cet article a donné naissance à un tutoriel plus complet...

Python Call : Controler un Core avec des appels d'API en Python. Comment contrôler un Core avec Raspberry-Pi.

De quoi faciliter la réalisation de projet Domotique par les Makers, voici une idée à base de Raspberry-Pi B+ et un 5 pouce tactile (en HDMI). 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é.

Attention: PyCall n'est pas une interface graphique. PyCall est une bibliothèque Python permettant de dialoguer avec votre Core et Spark Cloud.
 
Flasher votre Core à partir d'un Script Python
Ce n'est pas tout, si l'on s'intéresse d'un peu plus près à l'API de Spark Cloud (cfr notre traduction), cette dernière nous apprends qu'il existe une API pour flasher notre Core à partir d'un code source (fichier ino).

Flasher notre Core par Internet depuis Spark Build c'est bien... mais faire appel au compilateur sur les serveurs Spark et flasher notre Core via Internet en utilisant un script Python... ce serait vraiment génial!

Si l'API le permet, pourquoi ne pas essayer de faire cet appel depuis un code Python? Ce serait cool n'est ce pas?

Et bien, figurez-vous que cela fonctionne!

#!/usr/bin/env python
# -*- coding: utf8 -*-
#
"""core-flash.py

 voir source et détails sur github
 https://github.com/mchobby/SparkCoreTuto

"""  
from sparkapi import SparkApi
from sparkapi import FLASH_STATUS_TEXT
from sparkapi import Config 

# Ouvre le fichier sparkapi.ini pour éviter de Hard Coder des données
# sensible comme l'access_token dans les programmes d'exemple publié sur
# le Net.
# 
config = Config()

def main():
 api = SparkApi( access_token = config.access_token, debug = False )
 # ou utiliser directement votre access_token
 #api = SparkApi( access_token = '123412341234', debug = False )
  
 # Créer un objet Core à partir du core_id 
 core = api.get_core( config.cores['core0'] ) 
 # ou utiliser directement votre core_id
 #core = api.get_core( '0123456789abcdef' )
 
 print( '-- Flash le programme lecture-tmp36.ino sur le Core --' )
 
 result = core.flash( '../lecture-tmp36/lecture-tmp36.ino' )
 
 print( 'FLASH : %s ' % 'ok' if result[0] == True else 'FAILED!' )
 print( 'STATUS: %s ' % (FLASH_STATUS_TEXT[ result[1] ]) ) 
 # Si le flash echoue --> afficher les info complémentaires
 if result[0] == False:
  print( result[2] ) 
  
 return 0

if __name__ == '__main__':
 main()

Simple non?
Admirez le résultat.
Résultat du script Python core-flash.py