Utilice Particle Photon Client para suscribirse a las actualizaciones del canal
Este ejemplo muestra cómo utilizar un tablero de Particle Photon para suscribirse a las actualizaciones del canal CheerLights. El programa lee un color del canal y lo muestra usando el LED incorporado en la placa Photon. Puede suscribirse al feed del canal o directamente al campo de color en el canal CheerLights como se muestra en este ejemplo.
Configuración
1) Cree un dispositivo MQTT para el canal CheerLights.
a) Haga clic en Dispositivos > MQTT en la parte superior de la página de ThingSpeak, luego haga clic en Agregar un nuevo dispositivo.
b) Ingrese un nombre y una descripción para su dispositivo.
c) En Autorizar acceso a canales, haga clic en Select a Channel
> Enter a channel ID below
.
d) Ingrese el número del canal CheerLights 1417
y haga clic en Agregar canal.
e) Su lista de Canales autorizados ahora incluye CheerLights (1417)
. Haga clic en Agregar dispositivo.
f) Aparece el cuadro de diálogo Nuevo dispositivo agregado. Haga clic en Descargar credenciales > Texto sin formato. Haga clic en Listo. Utilice las credenciales guardadas en la sección Código a continuación.
2) Incluya la biblioteca MQTT/MQTT.h
en su IDE de Particle.
3) Usando Web IDE, cree una nueva aplicación Photon.
4) Agregue la biblioteca MQTT. Agregar la biblioteca incluye la línea #include <MQTT.h>
en la parte superior de su código.
5) Pegue el código que se muestra aquí. Modifique channelID,
y username
y password
según corresponda.
Código
1) Comience declarando las variables para comunicarse con ThingSpeak™. Suscríbete al campo 1 de CheerLights, que es el canal 1417. El programa incluye la biblioteca MQTT en el espacio superior de estas líneas.
// 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) Los mensajes transmitidos desde el corredor MQTT invocan la función callback
para manejar el mensaje.
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) Utilice la función setup
para habilitar el control de LED e iniciar la conexión y suscripción MQTT.
void setup() { // Set up the onboard LED. RGB.control(true); // Connect to the server. subscribeMQTT(); }
4) En la función loop
, verifique si hay una conexión y vuelva a conectarse y suscríbase si se pierde la conexión. Especifique que el dispositivo compruebe la hora. Para este ejemplo, configure el dispositivo en modo de suspensión entre las 11 p.m. y las 4 a.m.
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) Utilice la función subscribeMQTT
para establecer la conexión con el corredor y luego suscríbase al campo del 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"); } } }
Pruebe su código
Para probar su código, cambie el color de CheerLights con un Tweet como "@cheerlights My favorite CheerLights color is green
".
Consulte también
Subscribe to a Channel Feed | Subscribe to a Channel Field Feed