🛠 Exposer des Variables cloud avec Particle.variable
Objetivos
Mientras que Particle.function dispara una acción, Particle.variable expone un valor en vivo del firmware, leído bajo demanda por la nube: cada dispositivo se convierte en un pequeño servidor de telemetría. La lectura se realiza mediante CLI (particle get) o mediante una simple solicitud GET REST a api.particle.io/v1/devices/<id>/<nombre>?format=raw, lo que facilita la integración con Grafana, Node-RED o un simple script. Expondrá varios tipos (int, booleano, cadena), los leerá local y remotamente, y comprenderá el modelo «pull» (la nube lee la variable, no es el dispositivo quien la envía).
Material
- 1× Particle Boron conectada a la nube
- Particle CLI autenticado (
particle token createpara un token OAuth2) - Opcional: un segundo dispositivo Particle para suscribirse y comparar publish/variable
Código completo
// Boron — Variables cloud : telemetry exposee en lecture
SYSTEM_THREAD(ENABLED);
int rssi = 0;
bool radioActive = true;
String etat = "demarrage";
float temperature = 0.0f;
void setup {
Serial.begin(9600);
Particle.variable("rssi", rssi); // INT
Particle.variable("radioActive", radioActive); // BOOL
Particle.variable("etat", etat); // STRING
Particle.variable("temperature", temperature); // DOUBLE
}
void loop {
if (Cellular.ready) {
rssi = Cellular.RSSI;
etat = "connectee";
} else {
etat = "hors-ligne";
}
// temperature = lire_capteur; // votre logique ici
Serial.printf("rssi=%d etat=%s\n", rssi, etat.c_str);
delay(5000);
}
Lecturas: particle get <device> rssi y luego en REST:
curl "https://api.particle.io/v1/devices/<device_id>/rssi?format=raw" \
-H "Authorization: Bearer $TOKEN"
Verificación esperada
particle get devuelve el nombre, el tipo y el valor actual de cada variable, actualizado entre dos lecturas. La solicitud GET REST con format=raw devuelve el valor sin procesar, útil para scripts; sin este parámetro obtendrá JSON con name, result, coreInfo. Desconecte la antena o apague la tarjeta: la lectura falla (dispositivo fuera de línea), lo que confirma el modelo pull: el último valor no se sirve en diferido.
Errores frecuentes
- Modificar la referencia de la variable (reasignación de objeto en lugar de actualización del valor): según las versiones de Device OS, el enlace con la nube puede perderse; actualice el valor en su lugar.
- Esperar un historial: una Variable no es una base de datos, es un punto de lectura instantáneo; para el historial, publique hacia un servicio de integración.
- Tipos incompatibles: una variable declarada como INT leída con una expectativa de cadena rompe los clientes; documente los tipos.
- Olvidar el encabezado
Authorization: Beareren la API: error 401; el token se obtiene medianteparticle token createo el flujo OAuth2. - Confundir con
Particle.publish: publish = evento enviado con TTL corto; variable = estado extraído bajo demanda.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.inoArduinobouton-evenement.inoArduinofonction-distance.inoArduinocapteur-dht.inoArduinoruban-neopixel.inoArduinopwm-respiration.inoArduino