🛠 Variables cloud et intégration HTTP
Objectifs
Exposer des données du Photon au cloud avec Particle.variable : un entier en lecture seule (la valeur d'un capteur) et une String inscriptible depuis le cloud, puis les interroger et les modifier depuis un script HTTP — la base d'un hook d'intégration vers tout backend.
Matériel
- 1 Particle Photon avec capteur sur A0 (tuto photon-capteur-adc)
- token API (
particle token create) et l'ID de l'appareil - Python 3 avec la bibliothèque requests, ou curl
Code complet
// photon-variables-hook.ino — variables cloud
int sensor = 0;
String status = "idle"; // les String sont inscriptibles depuis le cloud
unsigned long derniere = 0;
void setup {
Particle.variable("sensor", sensor); // lecture: GET .../sensor
Particle.variable("status", status); // écriture: POST .../status
}
void loop {
if (millis - derniere > 2000) {
derniere = millis;
sensor = analogRead(A0); // 12 bits, 0..4095
}
}
Vérification attendue
Lecture : curl -H "Authorization: Bearer $TOKEN" 0 renvoie la valeur. Écriture : curl -H "Authorization: Bearer $TOKEN" -d value=mode_nuit https://api.particle.io/v1/devices/<ID>/status` modifie la String côté firmware. En Python, requests.get puis r.json fait le même travail.
Erreurs fréquentes
- Passer une variable locale : Particle.variable doit pointer sur une variable globale qui vit toute la durée du programme.
- Changer le type d'une variable entre deux firmwares sans re-claim : le cloud peut refuser le nouveau schéma.
- Poller trop agressivement depuis votre hook HTTP : ménagez l'API et le Wi-Fi, gardez un intervalle de plusieurs secondes.
- Oublier que l'endpoint est api.particle.io : l'ancien api.spark.io a été définitivement fermé.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.inoArduinobouton-evenement.inoArduinofonction-distance.inoArduinocapteur-dht.inoArduinoruban-neopixel.inoArduinopwm-respiration.inoArduino