Main Content

Diese Seite wurde mithilfe maschineller Übersetzung übersetzt. Klicken Sie hier, um die neueste Version auf Englisch zu sehen.

Verwenden Sie den Particle Photon Client, um Kanalaktualisierungen zu abonnieren

Dieses Beispiel zeigt, wie Sie mit einem Particle Photon-Board Kanalaktualisierungen vom CheerLights-Kanal abonnieren. Das Programm liest eine Farbe aus dem Kanal und zeigt sie mithilfe der integrierten LED auf der Photon-Platine an. Sie können den Kanal-Feed oder direkt das Farbfeld auf dem CheerLights-Kanal abonnieren, wie in diesem Beispiel gezeigt.

Aufstellen

1) Erstellen Sie ein MQTT-Gerät für den CheerLights-Kanal.

a) Klicken Sie oben auf der ThingSpeak Seite auf „Geräte“ > „MQTT“ und dann auf „Neues Gerät hinzufügen“.

b) Geben Sie einen Namen und eine Beschreibung für Ihr Gerät ein.

c) Klicken Sie unter „Zugriff auf Kanäle autorisieren“ auf Select a Channel > Enter a channel ID below.

d) Geben Sie die CheerLights-Kanalnummer 1417 ein und klicken Sie auf „Kanal hinzufügen“.

e) Ihre Liste „Autorisierte Kanäle“ enthält jetzt CheerLights (1417). Klicken Sie auf „Gerät hinzufügen“.

f) Das Dialogfeld „Neues Gerät hinzugefügt“ wird angezeigt. Klicken Sie auf „Anmeldeinformationen herunterladen“ > „Nur-Text“. Klicken Sie auf „Fertig“. Verwenden Sie die gespeicherten Anmeldeinformationen im Abschnitt „Code“ unten.

2) Binden Sie die Bibliothek MQTT/MQTT.h in Ihre Particle-IDE ein.

3) Erstellen Sie mithilfe der Web-IDE eine neue Photon-App.

4) Fügen Sie die MQTT-Bibliothek hinzu. Durch das Hinzufügen der Bibliothek wird die Zeile #include <MQTT.h> oben in Ihrem Code hinzugefügt.

5) Fügen Sie den hier gezeigten Code ein. Ändern Sie channelID, und username sowie password entsprechend.

Code

1) Beginnen Sie mit der Deklaration der Variablen für die Kommunikation mit ThingSpeak™. Abonnieren Sie Feld 1 von CheerLights, Kanal 1417. Das Programm fügt die MQTT-Bibliothek in den Bereich oben in diesen Zeilen ein.

// 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) Vom MQTT-Broker weitergeleitete Nachrichten rufen die Funktion callback auf, um die Nachricht zu verarbeiten.

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) Verwenden Sie die Funktion setup , um die LED-Steuerung zu aktivieren und die MQTT-Verbindung und das Abonnement zu starten.

void setup() {
    // Set up the onboard LED.
    RGB.control(true);
   
    // Connect to the server.
    subscribeMQTT();
}

4) Überprüfen Sie in der Funktion loop , ob eine Verbindung besteht, stellen Sie die Verbindung wieder her und abonnieren Sie sie, wenn die Verbindung verloren geht. Legen Sie fest, dass das Gerät die Uhrzeit überprüft. Versetzen Sie das Gerät in diesem Beispiel zwischen 23:00 und 23:00 Uhr in den Schlafmodus. und 4 Uhr morgens

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) Verwenden Sie die Funktion subscribeMQTT , um die Verbindung mit dem Broker herzustellen und dann das Kanalfeld zu abonnieren.

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");
        }
    }
}

Testen Sie Ihren Code

Um Ihren Code zu testen, ändern Sie die Farbe von CheerLights mit einem Tweet wie „@cheerlights My favorite CheerLights color is green“.

Siehe auch

|

Verwandte Beispiele

Mehr über