Différences entre versions de « Spark-Core-NetLED »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
Ligne 105 : Ligne 105 :
  
 
== Mieux comprendre l'API ==
 
== Mieux comprendre l'API ==
To better understand the concept of making API calls to your Core over the cloud checkout the [[Spark-Cloud-API|Cloud API]] reference.
+
Pour mieux comprendre le concept des appels API sur votre Core via le Cloud, vous devriez lire notre référence sur [[Spark-Cloud-API|Cloud API]].
  
 
{{Spark-Core-Hacking-TRAILER}}
 
{{Spark-Core-Hacking-TRAILER}}

Version du 29 novembre 2014 à 21:16


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

Contrôler des LEDs par Internet

Maintenant que nous savons comment faire clignoter une LED, nous allons voir comment la contrôler via Internet? C'est maintenant que nous allons avoir du fun.

Montage

Cette fois, nous allons brancher deux LEDs.

Spark.IO-Core-NetLED-00.jpg
Crédit: Particle.IO www.particle.io

Comme la fois précédente, nous allons utiliser des résistances de 1K Ohms pour limiter le courant dans les LEDs.

Le Programme

L'algorithme

Voici comment fonctionne le programme

  • Activer les broches sur lesquelles sont banchées les LEDs en tant que sortie (output en anglais)
  • Créer et répertorier (register) une fonction Spark (elle sera appelée automatiquement lorsque vous ferez un appel via l'API)
  • Traiter la commande entrante (parse) pour prendre les actions appropriées.

Le code

Voici le code proposé par Spark... avec traduction des commentaires pour faciliter la compréhension

// -----------------------------------
// Controler des LEDs via Internet
// -----------------------------------

// Donner un nom aux broches
int led1 = D0;
int led2 = D1;

// Cette fonction est appelée une seule fois lors d'un reset
void setup()
{
   // Enregistrez votre fonction Spark ici
   // Le point de contact de l'API est "led" et la 
   // fonction appelée est "ledControl"
   Spark.function("led", ledControl);

   // Configureer les broches en Sortie (output)
   pinMode(led1, OUTPUT);
   pinMode(led2, OUTPUT);

   // Initialiser les deux LEDs pour qu'elles soient éteintes
   digitalWrite(led1, LOW);
   digitalWrite(led2, LOW);
}


// Cette boucle est exécutées continuellement
void loop()
{
   // Rien à exécuter
}


// Cette fonction est appelée lorsqu'il y a un appel correspondant sur l'API
// Le format de la chaine de commande est l<numero de led>,<état>
// Par exemple: l1,HIGH ou l1,LOW  pour allumer ou éteindre la LED1
//              l2,HIGH or l2,LOW  pour allumer ou éteindre la LED2
//
int ledControl(String command)
{
   int state = 0;
   // Trouver le numéro de broche dans la commande ET convertir 
   // la valeur du caractere ASCII en valeur entière (en integer)
   int pinNumber = (command.charAt(1) - '0') - 1;

   // Vérifier que la valeur de la broche est bien dans
   // les limites acceptables SINON on quitte de la fonction ledControl
   if (pinNumber < 0 || pinNumber > 1) return -1;

   // Trouver l'état de la Led dans la commande
   // SI l'état n'est pas identifié ALORS on quitte la fonction ledControl
   if(command.substring(3,7) == "HIGH") state = 1;
   else if(command.substring(3,6) == "LOW") state = 0;
   else return -1;

   // Modifier l'état de la broche 
   digitalWrite(pinNumber, state);
   return 1;
}

Faire une requête sur l'API

Notez que le point de contact de l'API (endpoint) est est "led", et non "ledControl".

C'est parce que le point de contact (endpoint) est défini en premier paramètre de l'appel Spark.function(). Ce premier paramètre est une chaîne de caractère.

Le second paramètre de l'appel Spark.function() est une fonction. Cette est automatiquement exécutée lorsque le point de contact est appelé sur l'API.

L'appel à l'API doit avoir la structure suivante.

POST /v1/devices/{DEVICE_ID}/led

EXEMPLE D'APPEL DANS UN TERMINAL
avec le Core ID 0123456789abcdef
et votre access token est 123412341234

curl https://api.spark.io/v1/devices/0123456789abcdef/led \
  -d access_token=123412341234 \
  -d params=l1,HIGH

Mieux comprendre l'API

Pour mieux comprendre le concept des appels API sur votre Core via le Cloud, vous devriez lire notre référence sur Cloud API.


Source: Particle Core Examples créé par Particle.IO.

Traduction (et augmentation de contenu) réalisée par Meurisse D pour MCHobby.be - Translated (and enhanced) by Meurisse D. for MCHobby.be

Traduit avec l'autorisation de Particle.IO - Translated with the permission from Particle.IO - Particle.IO

Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : «  Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.

L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.