fonction-distance.ino
Particle.function transforme un simple handler en API distante : le cloud appelle piloter() avec une chaîne d'arguments, la LED obéit. C'est la brique de base pour piloter la carte depuis un bouton web, IFTTT ou Home Assistant.
Matériel requis
Un module Particle Boron (nRF52840, Wi-Fi + Bluetooth LE, variante cellulaire le cas échéant) avec antenne embarquée. Aucun (LED D7 embarquée) ; un compte Particle et un token API.
Câblage
Rien à câbler. Alimentation : USB, LiPo ou 3,6-5,5 V sur VIN.
Fonctionnement
Particle.function enregistre le handler ; à réception d'un POST /functions, la pile cloud exécute piloter(args) et renvoie son entier de retour au demandeur.
Exécution
Installer le CLI Particle (particle setup), particle flash --serial ou OTA (particle flash <nom> firmware.bin). L'application Device Cloud ou l'API REST complete le deploiement.
Variantes
Ajouter des commandes moteur/relais, ou valider un token partagé dans la chaîne d'arguments pour un mini contrôle d'accès.
fonction-distance.ino
// Particle.function : une commande appelee par le cloud ou curl.
// curl -X POST https://api.particle.io/v3/devices/<id>/functions \
// -d "name=piloter&args=led:on&access_token=<TOKEN>"
int piloter(String args) {
if (args == "led:on") { digitalWrite(D7, HIGH); return 1; }
if (args == "led:off") { digitalWrite(D7, LOW); return 0; }
if (args == "led:toggle") {
static bool etat = false;
etat = !etat;
digitalWrite(D7, etat);
return etat ? 1 : 0;
}
return -1; // commande inconnue
}
void setup() {
pinMode(D7, OUTPUT);
Particle.function("piloter", piloter);
Serial.begin(9600);
Serial.println("En attente de commandes cloud");
}
void loop() {
// Le handler est appele par la pile cloud quand une requete arrive.
// Attention : rester court (< 1 s) pour ne pas bloquer le lien.
}