🛠 Se connecter au Wi-Fi et publier des événements cloud
Objectifs
Configurer le Wi-Fi du Photon (procédure Soft AP, et non Smart Config comme sur l'ancien Spark Core), vérifier l'état de connexion via la LED RGB, puis publier et recevoir des événements avec Particle.publish et Particle.subscribe — sans écrire une ligne de code réseau, le tout étant intégré au Device OS.
Matériel
- 1 Particle Photon (Wi-Fi 2,4 GHz uniquement : puce Broadcom BCM43362 802.11b/g/n, pas de 5 GHz)
- un smartphone ou un ordinateur pour la configuration Soft AP
- idéalement un second Photon pour tester les abonnements
Code complet
// photon-wifi-publish.ino — publication d'événements toutes les 10 s
unsigned long derniere = 0;
void setup {
Serial.begin(9600);
Particle.subscribe("door/opened", onDoor); // événement d'un autre appareil
}
void loop {
if (millis - derniere > 10000) {
derniere = millis;
bool ok = Particle.publish("salle/temperature", "21.5", PRIVATE);
Serial.print("publish ok=");
Serial.println(ok ? "1" : "0");
}
delay(50);
}
void onDoor(const char *event, const char *data) {
Serial.print("événement recu: ");
Serial.print(event);
Serial.print(" data=");
Serial.println(data);
}
Vérification attendue
Après configuration (appui long sur SETUP, puis connexion au réseau Soft AP du Photon et saisie du mot de passe Wi-Fi), la LED RGB respire en cyan : connecté au cloud. particle subscribe my/salle/temperature affiche les événements privés. Le flag PRIVATE est confirmé par le code d'exemple de la fiche.
Erreurs fréquentes
- Router 5 GHz : le BCM43362 ne voit que le 2,4 GHz, le Photon reste bloqué.
- Publier trop vite : le cloud limite le débit des événements, les publish échouent (valeur de retour false).
- Wi-Fi instable pendant une mise à jour OTA : des utilisateurs rapportent un blocage en magenta (pas de cloud) après un OTA raté.
- Oublier que l'ancien endpoint api.spark.io est fermé : tout doit passer par api.particle.io.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.inoArduinobouton-evenement.inoArduinofonction-distance.inoArduinocapteur-dht.inoArduinoruban-neopixel.inoArduinopwm-respiration.inoArduino