Main Content

Cette page a été traduite par traduction automatique. Cliquez ici pour voir la dernière version en anglais.

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 Appareils > MQTT en haut de la page ThingSpeak , puis cliquez sur Ajouter un nouvel appareil.

b) Entrez un nom et une description pour votre appareil.

c) Sous Autoriser l'accès aux canaux, cliquez sur Select a Channel > Enter a channel ID below.

d) Entrez le numéro de canal CheerLights 1417 et cliquez sur Ajouter un canal.

e) Votre liste de  Canaux autorisés  comprend désormais CheerLights (1417). Cliquez sur  Ajouter un appareil .

f) La boîte de dialogue Nouvel appareil ajouté s'affiche. Cliquez sur Télécharger les informations d'identification > Texte brut . Cliquez sur  Terminé . 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 le cas.

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 MQTT broker 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 des 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, recherchez 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 broker puis vous abonner au champ 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, changez la couleur des CheerLights avec un Tweet tel que "@cheerlights My favorite CheerLights color is green".

Voir aussi

|

Exemples associés

En savoir plus