Ligne 1 : |
Ligne 1 : |
| {{Spark-Core-Hacking-NAV}} | | {{Spark-Core-Hacking-NAV}} |
− |
| |
− | {{traduction}}
| |
| | | |
| == Mesurer la température == | | == Mesurer la température == |
− | {{bloc-etroit|text=Jusqu'ici nous avons appris comment envoyer des commandes personnalisée à note Core et comment contrôler la matériel. | + | {{bloc-etroit|text=Jusqu'ici nous avons appris comment envoyer des commandes personnalisée à note Core et comment contrôler le matériel. |
| | | |
| Mais comment lire des données sur notre Core? | | Mais comment lire des données sur notre Core? |
Ligne 95 : |
Ligne 93 : |
| | | |
| Le {{pl|59|TMP36}} est un senseur de température très facile à trouver. | | Le {{pl|59|TMP36}} est un senseur de température très facile à trouver. |
− | Il s'agit d'un périphérique analogique (la tension en sortie du senseur dépend de la température). Ce senseur est également inclus dans le {{pl|519|Spark Core Maker Kit}}! | + | Il s'agit d'un périphérique analogique (la tension en sortie du senseur dépend de la température). Ce senseur est également inclus dans le {{pl|519|Particle Core Maker Kit}}! |
| | | |
| Vous pouvez [http://www.analog.com/en/mems-sensors/digital-temperature-sensors/tmp36/products/product.html télécharger la fiche technique] ici. | | Vous pouvez [http://www.analog.com/en/mems-sensors/digital-temperature-sensors/tmp36/products/product.html télécharger la fiche technique] ici. |
Ligne 110 : |
Ligne 108 : |
| | | |
| == Le code == | | == Le code == |
− | Voici le code proposé par Spark que nous avons traduit pour faciliter la compréhension. | + | Voici le code proposé par Particle que nous avons traduit pour faciliter la compréhension. |
| | | |
| Notez que ce montage utilise le deuxième schéma de raccordement (lecture sur la broche analogique A7 et filtrage). | | Notez que ce montage utilise le deuxième schéma de raccordement (lecture sur la broche analogique A7 et filtrage). |
Ligne 124 : |
Ligne 122 : |
| void setup() | | void setup() |
| { | | { |
− | // Enregistrer la variable sur Spark Cloud | + | // Enregistrer la variable sur Particle Cloud |
| Spark.variable("temperature", &temperature, DOUBLE); | | Spark.variable("temperature", &temperature, DOUBLE); |
| | | |
Ligne 157 : |
Ligne 155 : |
| GET /v1/devices/{DEVICE_ID}/temperature | | GET /v1/devices/{DEVICE_ID}/temperature |
| | | |
| + | === Appel d'API avec CURL === |
| Voici un exemple de requête Curl, Core_ID est 0123456789abcdef et un Access Token 123412341234. | | Voici un exemple de requête Curl, Core_ID est 0123456789abcdef et un Access Token 123412341234. |
| | | |
Ligne 167 : |
Ligne 166 : |
| Ce qui produit un résultat comparable à celui-ci: | | Ce qui produit un résultat comparable à celui-ci: |
| | | |
− | <nowiki>{
| + | <nowiki>{ |
| "cmd": "VarReturn", | | "cmd": "VarReturn", |
| "name": "temperature", | | "name": "temperature", |
Ligne 177 : |
Ligne 176 : |
| "deviceID": "0123456789abcdef" | | "deviceID": "0123456789abcdef" |
| } | | } |
− | } | + | }</nowiki> |
| + | |
| + | === Appel d'API avec navigateur === |
| + | Cette fois-ci, il sera facile d'utiliser votre navigateur favoris pour faire un appel d'API et obtenir le contenu d'une variable. |
| + | |
| + | Dans le cas présent, il s'agit d'une requête de type GET, ce que fait exactement votre navigateur internet lorsque vous visitez un site internet. |
| + | |
| + | Ouvrez donc votre navigateur favori et saisissez: |
| + | |
| + | <nowiki>https://api.spark.io/v1/devices/54fyyyyyyyyyyyyyyyyyyy67/temperature?access_token=1dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxf8</nowiki> |
| + | |
| + | Cet exemple ci utilise le Particle Core de MCHobby... raison pour laquelle le CORE ID et l'ACCESS TOKEN sont différents |
| + | |
| + | {{SPARKImage|Spark.IO-Core-TMP36-10.jpg|640px}} |
| + | |
| + | == Les petits curieux : Découvrir l'API de votre Core == |
| + | Soyons un peu plus curieux et désobéissons! En poursuivant nos investigations, '''nous avons découvert comment énumérer l'interface disponible sur un Core'''. |
| + | |
| + | Pour la petite histoire, avant d'opter pour l'utilisation d'un montage avec filtrage (cfr début de ce tutoriel), j'ai essayé de comprendre pourquoi mon Core prétendait qu'il faisait -20°C dans mon salon! |
| + | |
| + | J'ai donc modifié le programme pour publier toutes les variables du programme sur l'API Particle Cloud et c'est là qu'on apprend des choses intéressantes. |
| | | |
− | == Les petits curieux ==
| + | {{underline|Note:}} |
− | Soyons un peu plus curieux et désobéissant! Avant d'opter pour l'utilisation d'un montage avec filtrage, j'ai essayé de comprendre pourquoi mon Core prétendait qu'il faisait -20°C dans mon salon.
| |
| | | |
− | J'ai donc modifié le programme pour publier toutes les variables du programme sur l'API Spark Cloud
| + | Depuis la première rédaction de cet article, nous avons également traduit [[Spark.IO-CLI|le tutoriel sur "Particle CLI"]] (Interface en ligne de commande) où l'on apprend comment lister les Cores et leur interface. |
| | | |
| === Le code === | | === Le code === |
− | Le code ci-dessous déclare toutes les variables utilisées par le programme... variables que je publie sur l'API Spark Cloud. | + | Le code ci-dessous déclare toutes les variables utilisées par le programme... variables que je publie sur l'API Particle Cloud. |
| | | |
| <nowiki>// ----------------- | | <nowiki>// ----------------- |
Ligne 200 : |
Ligne 218 : |
| void setup() | | void setup() |
| { | | { |
− | // Enregistrer la variable sur Spark Cloud | + | // Enregistrer la variable sur Particle Cloud |
| Spark.variable("temperature", &temperature, DOUBLE); | | Spark.variable("temperature", &temperature, DOUBLE); |
| Spark.variable("voltage", &voltage, DOUBLE ); | | Spark.variable("voltage", &voltage, DOUBLE ); |
Ligne 232 : |
Ligne 250 : |
| Pour lire les différentes valeurs, nous pouvons utiliser les trois requêtes CURL suivantes: | | Pour lire les différentes valeurs, nous pouvons utiliser les trois requêtes CURL suivantes: |
| | | |
− | <nowiki>curl -G https://api.spark.io/v1/devices/54yyyyyyyyyyyyyyyyyyy67/temperature -d access_token=1dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxf8<nowiki> | + | <nowiki>curl -G https://api.spark.io/v1/devices/54yyyyyyyyyyyyyyyyyyy67/temperature -d access_token=1dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxf8</nowiki> |
| | | |
| Ce qui offre le résultat suivant: | | Ce qui offre le résultat suivant: |
Ligne 246 : |
Ligne 264 : |
| } | | } |
| }</nowiki> | | }</nowiki> |
| + | |
| + | Il est également possible de lire les autres variables avec les requêtes CURL suivantes: |
| + | |
| + | <nowiki>curl -G https://api.spark.io/v1/devices/54yyyyyyyyyyyyyyyyyyy67/voltage -d access_token=1dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxf8</nowiki> |
| + | |
| + | <nowiki>curl -G https://api.spark.io/v1/devices/54yyyyyyyyyyyyyyyyyyy67/reading -d access_token=1dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxf8</nowiki> |
| + | |
| + | === Désobéissons: énumérer l'API === |
| + | Vous vous doutez certainement que votre programme Spark publie les éléments de votre interface sur Particle Cloud. |
| + | |
| + | C'est en faisant preuve de curiosité que j'ai remarqué qu'il était possible de consulter l'interface disponible en faisant une {{underline|requête CURL sur le Core (sans préciser l'API)}}. |
| + | |
| + | <nowiki>curl -G https://api.spark.io/v1/devices/54yyyyyyyyyyyyyyyyyyy67 -d access_token=1dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxf8</nowiki> |
| + | |
| + | Ce qui produit un résultat contenant une énumération de l'interface disponible sur votre Core. |
| + | |
| + | <nowiki>{ |
| + | "id": "54yyyyyyyyyyyyyyyyyyy67", |
| + | "name": "mch-demo", |
| + | "connected": true, |
| + | "variables": { |
| + | "temperature": "double", |
| + | "voltage": "double", |
| + | "reading": "int32" |
| + | }, |
| + | "functions": [], |
| + | "cc3000_patch_version": "1.29" |
| + | </nowiki> |
| + | |
| + | Comme vous pouvez le contaster, nous obtenons beaucoup d'informations utiles: |
| + | * '''id''': Identification de votre Core. Superflux à la base mais peut grandement faciliter l'écriture de votre code. |
| + | * '''name''': Le nom que vous avez donné à votre Core. En utilisant une nomenclature adéquate, vous pourriez identifier |
| + | * '''connected''': permet de savoir si votre Core est actuellement connecté sur Particle Cloud. |
| + | * '''variables''': contient les entrées (et type) correspondant aux {{underline|variables}} d'API déclarées dans notre programme avec <code>Spark.variable()</code> |
| + | * '''functions''': contient les entrées correspondant aux {{underline|fonctions}} d'API déclarées dans votre programme avec <code>Spark.function()</code> |
| | | |
| {{Spark-Core-Hacking-TRAILER}} | | {{Spark-Core-Hacking-TRAILER}} |
| | | |
| <small>Source: [http://docs.spark.io/examples/#measuring-the-temperature docs.spark.io/examples/#measuring-the-temperature]</small> | | <small>Source: [http://docs.spark.io/examples/#measuring-the-temperature docs.spark.io/examples/#measuring-the-temperature]</small> |