fonction-distance.ino

Particle Photon · Fichier : fonction-distance.ino · Langage : Arduino · Usage : Exposer une commande actionnable à distance (Particle.function)

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.
}

← Retour à la fiche