🛠 Exposer des Variables cloud avec Particle.variable
Objectifs
Alors que Particle.function déclenche une action, Particle.variable expose une valeur vivante du firmware, lue à la demande par le cloud : chaque device devient un petit serveur de télémétrie. La lecture se fait par CLI (particle get) ou par simple GET REST sur api.particle.io/v1/devices/<id>/<nom>?format=raw, ce qui facilite l'intégration avec Grafana, Node-RED ou un simple script. Vous allez exposer plusieurs types (int, booléen, chaîne), les lire en local et à distance, et comprendre le modèle « pull » (le cloud lit la variable, ce n'est pas le device qui pousse).
Matériel
- 1× Particle Boron connectée au cloud
- Particle CLI authentifié (
particle token createpour un token OAuth2) - Optionnel : un second device Particle pour vous abonner et comparer publish/variable
Code complet
// Boron — Variables cloud : telemetry exposee en lecture
SYSTEM_THREAD(ENABLED);
int rssi = 0;
bool radioActive = true;
String état = "démarrage";
float temperature = 0.0f;
void setup {
Serial.begin(9600);
Particle.variable("rssi", rssi); // INT
Particle.variable("radioActive", radioActive); // BOOL
Particle.variable("état", état); // STRING
Particle.variable("temperature", temperature); // DOUBLE
}
void loop {
if (Cellular.ready) {
rssi = Cellular.RSSI;
état = "connectee";
} else {
état = "hors-ligne";
}
// temperature = lire_capteur; // votre logique ici
Serial.printf("rssi=%d état=%s\n", rssi, etat.c_str);
delay(5000);
}
Lectures : particle get <device> rssi puis en REST :
curl "https://api.particle.io/v1/devices/<device_id>/rssi?format=raw" \
-H "Authorization: Bearer $TOKEN"
Vérification attendue
particle get renvoie le nom, le type et la valeur courante de chaque variable, mise à jour entre deux lectures. Le GET REST avec format=raw renvoie la valeur brute, pratique pour les scripts ; sans ce paramètre vous obtenez du JSON avec name, result, coreInfo. Coupez l'antenne ou éteignez la carte : la lecture échoue (device hors-ligne), ce qui confirme le modèle pull — la dernière valeur n'est pas servie en différé.
Erreurs fréquentes
- Modifier la référence de la variable (réassignation d'objet au lieu de mise à jour de la valeur) : selon les versions de Device OS, la liaison cloud peut être perdue ; mettez à jour la valeur en place.
- Attendre un historique : une Variable n'est pas une base de données, c'est un point de lecture instantané ; pour l'historique, publiez vers un service d'intégration.
- Types incompatibles : une variable déclarée INT lue avec une attente de chaîne casse les clients ; documentez les types.
- Oublier le header
Authorization: Bearersur l'API : erreur 401 ; le token s'obtient viaparticle token createou le flux OAuth2. - Confondre avec
Particle.publish: publish = événement poussé avec TTL court ; variable = état tiré à la demande.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.inoArduinobouton-evenement.inoArduinofonction-distance.inoArduinocapteur-dht.inoArduinoruban-neopixel.inoArduinopwm-respiration.inoArduino