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 Photon (Wi-Fi 2,4 GHz, microcontrôleur STM32, blindage métallique) alimenté par USB ou VIN. Aucun (LED D7 embarquée) ; un compte Particle et un token API.
Câblage
Rien à câbler. Alimentation : USB ou 3,6-5,5 V sur VIN (3,3 V max sur les broches).
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
Avec le CLI Particle : particle flash --serial (mode DFU, double reset) ou flash OTA une fois la carte en ligne. Le mode Safe Mode (reset + WiFi) sert au dépannage.
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.
}