🛠 Commander une LED à distance avec Particle.function
Objectifs
Exposer une fonction du firmware au Particle Cloud avec Particle.function, puis l'appeler depuis Internet par une simple requête HTTP : le cloud appelle votre fonction C++ enregistrée, qui retourne un entier.
Matériel
- 1 Particle Photon connecté au cloud (tuto photon-wifi-publish)
- 1 LED externe (avec résistance) ou la LED embarquée D7
- un compte Particle et un token :
particle token createou le flux OAuth2POST https://api.particle.io/oauth/token
Code complet
// photon-fonction-distance.ino — fonction appelée depuis le cloud
void setup {
pinMode(D7, OUTPUT);
Particle.function("led", ledCmd); // enregistrement auprès du cloud
}
void loop { }
// Appelee par le cloud : POST /v1/devices/<id>/led?args=on
int ledCmd(String args) {
if (args == "on") { digitalWrite(D7, HIGH); return 1; }
if (args == "off") { digitalWrite(D7, LOW); return 0; }
return -1; // argument invalide
}
Vérification attendue
Depuis un terminal : curl -H "Authorization: Bearer $TOKEN" -d args=on 1 allume la LED D7 ; args=off l'éteint ; un argument inconnu renvoie -1. La liste de vos appareils (et l'ID 24 caractères en hexadécimal) s'obtient avec curl -H "Authorization: Bearer $TOKEN" https://api.particle.io/v1/devices`.
Erreurs fréquentes
- Nom de fonction trop long ou non alphanumérique : gardez un nom court comme « led ».
- Oublier le header Authorization Bearer : l'API répond en erreur d'authentification (TLS 1.2+ exigé).
- Attendre un String en retour : la fonction renvoie un int, visible côté API dans le champ de retour.
- Faire un traitement long dans la fonction : elle tourne dans le contexte système, restez bref et mettez le vrai travail en file d'attente.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.inoArduinobouton-evenement.inoArduinofonction-distance.inoArduinocapteur-dht.inoArduinoruban-neopixel.inoArduinopwm-respiration.inoArduino