Main Content

Questa pagina è stata tradotta con la traduzione automatica. Fai clic qui per vedere l'ultima versione in inglese.

Utilizza Particle Photon Client per iscriverti agli aggiornamenti del canale

Questo esempio mostra come utilizzare una scheda Particle Photon per iscriversi agli aggiornamenti del canale CheerLights. Il programma legge un colore dal canale e lo visualizza utilizzando il LED integrato sulla scheda Photon. Puoi iscriverti al feed del canale o direttamente al campo colore sul canale CheerLights come mostrato in questo esempio.

Impostazione

1) Crea un dispositivo MQTT per il canale CheerLights.

a) Fare clic su Dispositivi > MQTT nella parte superiore della pagina ThingSpeak , quindi fare clic su Aggiungi un nuovo dispositivo.

b) Inserisci un nome e una descrizione per il tuo dispositivo.

c) In Autorizza l'accesso ai canali, fare clic su Select a Channel > Enter a channel ID below.

d) Inserisci il numero del canale CheerLights 1417 e fai clic su Aggiungi canale.

e) L'elenco dei tuoi Canali autorizzati ora include CheerLights (1417). Fare clic su Aggiungi dispositivo.

f) Viene visualizzata la finestra di dialogo Nuovo dispositivo aggiunto. Fare clic su Scarica credenziali > Testo normale. Fare clic su Fine. Utilizza le credenziali salvate nella sezione Codice sottostante.

2) Includi la libreria MQTT/MQTT.h nel tuo IDE delle particelle.

3) Utilizzando l'IDE Web, crea una nuova app Photon.

4) Aggiungi la libreria MQTT. L'aggiunta della libreria include la riga #include <MQTT.h> nella parte superiore del codice.

5) Incolla il codice mostrato qui. Modificare channelID, e username e password come appropriato.

Codice

1) Inizia dichiarando le variabili per comunicare con ThingSpeak™. Iscriviti al campo 1 di CheerLights, che è il canale 1417. Il programma include la libreria MQTT nello spazio all'inizio di queste righe.

// 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) I messaggi inoltrati dal broker MQTT richiamano la funzione callback per gestire il messaggio.

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) Utilizzare la funzione setup per abilitare il controllo LED e avviare la connessione e l'abbonamento MQTT.

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

4) Nella funzione loop , controlla la connessione e riconnettiti e iscriviti se la connessione viene persa. Specificare che il dispositivo controlli l'ora. Per questo esempio, imposta il dispositivo in modalità sospensione tra le 23:00 e le 23:00. e le 4 del mattino

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) Utilizzare la funzione subscribeMQTT per stabilire la connessione con il broker e poi iscriversi al campo canale.

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

Metti alla prova il tuo codice

Per testare il tuo codice, cambia il colore di CheerLights con un Tweet come "@cheerlights My favorite CheerLights color is green".

Vedi anche

|

Esempi correlati

Ulteriori informazioni