Utilisez Particle Photon Client pour vous abonner aux mises à jour du canal
Cet exemple montre comment utiliser une carte Particle Photon pour s'abonner aux mises à jour du canal CheerLights. Le programme lit une couleur du canal et l'affiche à l'aide de la LED intégrée sur la carte Photon. Vous pouvez vous abonner au flux du canal ou directement au champ de couleur sur le canal CheerLights, comme indiqué dans cet exemple.
Installation
1) Créez un MQTT device pour le canal CheerLights.
a) Cliquez sur Devices > MQTT en haut de la page ThingSpeak, puis cliquez sur Add a new device.
b) Entrez un nom et une description pour votre appareil.
c) Sous Authorize channels to access, cliquez sur Select a Channel > Enter a channel ID below.
d) Entrez le numéro de canal CheerLights 1417 et cliquez sur Add Channel.

e) Votre liste de canaux autorisés inclut désormais CheerLights (1417). Cliquez sur Add Device.
f) La boîte de dialogue Nouvel appareil ajouté s'affiche. Cliquez sur Download Credentials > Plain Text. Cliquez sur Done. Utilisez les informations d'identification enregistrées dans la section Code ci-dessous.
2) Incluez la bibliothèque MQTT/MQTT.h dans votre IDE Particle.
3) À l'aide de l'IDE Web, créez une nouvelle application Photon.
4) Ajoutez la bibliothèque MQTT. L'ajout de la bibliothèque inclut la ligne #include <MQTT.h> en haut de votre code.
5) Collez le code affiché ici. Modifiez channelID, et username et password selon vos besoins.
Code
1) Commencez par déclarer les variables pour communiquer avec ThingSpeak™. Abonnez-vous au champ 1 de CheerLights, qui est le canal 1417. Le programme inclut la bibliothèque MQTT dans l'espace en haut de ces lignes.
// This #include statement is automatically added by the Particle IDE. #include <MQTT.h> const long channelID = 1417; String subscribeTopic = "channels/" + String( channelID ) + "/subscribe/fields/field1"; char clientId[] = "MQTT_CLIENDID_FROM_THINGSPEAK"; //clientID returned when adding this device on ThingSpeak char username[] = "MQTT_USERNAME_FROM_THINGSPEAK"; //username returned when adding this device on ThingSpeak char password[] = "MQTT_PASSWORD_FROM_THINGSPEAK"; //password returned when adding this device on ThingSpeak char server[] = "mqtt3.thingspeak.com"; MQTT client(server, 1883, callback); // Initialize the MQTT client
2) Les messages relayés depuis le courtier MQTT invoquent la fonction callback pour gérer le message.
void callback(char* topic, byte* payload, unsigned int length) {
char p[length + 1]; // Leave an extra space to null terminate the string.
memcpy(p, payload, length);
p[length] = NULL; // Terminate the string.
Particle.publish(p);
if (!strncmp(p, "red", 3)) {
RGB.color(255, 0, 0);
}
else if (!strncmp(p, "green", 5)) {
RGB.color(0, 255, 0);
}
else if (!strncmp(p, "blue", 4)) {
RGB.color(0, 0, 255);
}
else if(!strncmp(p, "yellow", 6)) {
RGB.color(255, 255, 0);
}
else if(!strncmp(p, "orange", 5)) {
RGB.color(255, 165, 0);
}
else if(!strncmp(p, "magenta", 5)) {
RGB.color(255, 0, 255);
}
else if(!strncmp(p, "cyan", 5)) {
RGB.color(0, 255, 255);
}
else if(!strncmp(p, "white", 5)) {
RGB.color(255, 255, 255);
}
else if(!strncmp(p, "oldlace", 5)) {
RGB.color(253, 245, 230);
}
else if(!strncmp(p, "purple", 5)) {
RGB.color(128, 0, 128);
}
else if(!strncmp(p, "pink", 5)) {
RGB.color(255, 192, 203);
}
else {
RGB.color(255, 255, 255);
}
}
3) Utilisez la fonction setup pour activer le contrôle LED et démarrer la connexion et l'abonnement MQTT.
void setup() {
// Set up the onboard LED.
RGB.control(true);
// Connect to the server.
subscribeMQTT();
}
4) Dans la fonction loop, vérifiez la présence d'une connexion, reconnectez-vous et abonnez-vous si la connexion est perdue. Spécifiez que l' appareil vérifie l'heure. Pour cet exemple, réglez l' appareil en mode veille entre 23h00 et 4h00
void loop() {
int timeHour = Time.hour();
if (client.isConnected()) {
client.loop();
} else {
subscribeMQTT();
}
if ((timeHour > 23) or (timeHour < 4)) {
Particle.publish("Sleep");
System.sleep(SLEEP_MODE_DEEP, 7200);
}
delay(1);
}
5) Utilisez la fonction subscribeMQTT pour établir la connexion avec le courtier, puis abonnez-vous au champ de canal.
void subscribeMQTT() {
if (!client.isConnected()) {
Particle.publish("Connecting");
client.connect(clientId, username, password, NULL, MQTT::QOS0, 0, NULL, true);
delay(2000);
if (client.isConnected()) {
client.subscribe(subscribeTopic);
Particle.publish("Subscribed");
} else {
Particle.publish("Not connected");
}
}
}
Testez votre code
Pour tester votre code, modifiez la couleur des CheerLights à l'aide du serveur Discord des CheerLights sur https://cheerlights.com/growing-the-community-new-cheerlights-discord-bot/.
Voir aussi
Subscribe to a Channel Feed | Subscribe to a Channel Field Feed