fonction-distance.ino

Particle Photon · Archivo : fonction-distance.ino · Lenguaje : Arduino · Uso : Exposer une commande actionnable à distance (Particle.function)

Particle.function convierte un handler sencillo en una API remota: la nube llama a piloter() con una cadena de argumentos y el LED obedece. Es el ladrillo base para controlar la placa desde un botón web, IFTTT o Home Assistant.

Hardware

Un módulo Particle Photon (Wi-Fi 2,4 GHz, microcontrolador STM32, blindaje metálico) alimentado por USB o VIN. Ninguno (LED D7 integrada); una cuenta Particle y un token API.

Cableado

Nada que cablear. Alimentación: USB o 3,6-5,5 V en VIN (3,3 V máx. en los pines).

Funcionamiento

Particle.function registra el handler; al recibir un POST /functions, la pila de nube ejecuta piloter(args) y devuelve su entero de retorno al solicitante.

Ejecución

Con el CLI de Particle: particle flash --serial (modo DFU, doble reset) o flash OTA cuando la placa esté en línea. El Safe Mode (reset + WiFi) sirve para depurar.

Variantes

Añadir órdenes de motor/relé, o validar un token compartido en la cadena de argumentos para un mini control de acceso.

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

← Volver a la ficha