|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
  AutoIt (Programación) Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  Teleco - Emisora de A.M. Visual Basic Cosas de Windows Webs interesantes
Translate:
Búsqueda en este sitio:


.

Tutorial del Internet de las Cosas y Bluetooth con el ESP32
Juan Antonio Villalpando

Volver al índice del tutorial

____________________________

117.- Cliente de ThingSpeak.

- MQTT (Message Queue Telemetry Transport)

- MQTT Broker es un servidor en donde podemos enviar valores, para que otros clientes puedan leerlos.

- Enviar un valor se realiza mediante Publish. Subscribe consiste en subscribirse a un valor para obtener su dato cuando cambie.

- Los clientes envían periódicamente un paquete (PINGREQ) y esperan la respuesta del Broker (PINGRESP).

- Broker MQTT son: ThingSpeak, iot.eclipse, adafruit,... mosquito es un Broker MQTT que podemos instalar en nuestro sistema.

- En nuestros ejemplos el ESP8266 enviará valores al servidor ThingSpeak y esos valores se pueden consultar en la misma página de ThingSpeak mediantes gráficos.

- También el ESP8266 podrá recibir valores enviados desde una aplicación o página web.

- Este protocopo lo utiliza Facebook,

------------------------------------------------------------

- ThingSpeak.

- Características: con la versión gratuita, solo podemos actualizar cada 15 segundos. Podemos utilizar hasta 4 canales. No podemos subir distintos datos de un mismo canal en menos de 15 segundos. Podemos enviar hasta 3 millones de informaciones al año.

- Vamos a conectar nuestra tarjeta con un servidor web de Internet llamado ThingSpeak y le enviaremos datos para que cualquiera pueda consultarlo a través de Internet.

- Se podrá consultar los datos en un diagrama de barras, circular,... que se mostrará en la página web.

- Vamos a registrarnos y luego realizaremos tres códigos:

____________________________________________________________
- Registro en ThingSpeak.

- Nos damos de alta en ThingSpeak. Pulsamos en Sign Up.

- Nos enviará un correo, debemos pulsar sobre "Verify your email"
(Si no lo vemos en la bandeja de entrada, consultamos la carpeta de SPAM del correo)

- Volvemos a la web de ThingSpeak y establecemos un usuario y una contraseña.

- Creamos un nuevo Canal:

- En el Field1 escribimos: aleatorio, lo marcamos. Al final de la página, pulsamos el botón de "Save channel".

- Pulsamos en API Keys.

- Más adelante necesitaremos esas Keys. Dependiendo de la aplicación, también podríamos necesitar el Channel ID.

- Public View: para que lo pueda ver cualquiera que se conecte a nuestra web de ThingSpeak.

- Channel Settings: modificación del canal. Abajo de esta página hay un botón "Clear" para borrar los datos.

- Sharing: compartir, establecer los visualizadores públicos. (Share channel view with everyone)

- Aquí podemos curiosear canales públicos: https://thingspeak.com/channels/public

- Más información: https://community.thingspeak.com/documentation%20.../api/

___________________________________________
___________________________________________

- Delay.

- Con la versión gratuita de ThingSpeak, podemos subir valores con un intervalo de más de 15 segundos, ese intervalo lo podemos programar mediante:
delay(15000);

Esto lo que hace es parar el programa 15 segundos, una mejor opción para crear ese intervalo de subida y que el programa no pare, es utilizar este código:

periodo_15.ino

unsigned long tiempo_actual=0;
void setup() {
  Serial.begin(115200);
}

void loop() {
  if((millis()-tiempo_actual)>=15000){
      tiempo_actual=millis();
      Serial.println("Hola");
    }
}

- Ver ejemplo: http://www.arduinoblocks.com/web/project/3506#

___________________________________________
___________________________________________
___________________________________________

- Enviar un número aleatorio desde ESP8266 a la web de ThingSpeak.

juanantoniocuarto@gmail.com

Laarboleda2019

----------------------------

Author: juanantonio4

Channel ID: 746330

-----------------------------

Write API Key: SVRKZNDDNS9TVSIB

Read API Key: LKN1MV3BG2SJ2HJS

https://thingspeak.com/channels/746330


1.- Código sin librería de ThingSpeak.
NOTA: este código no funciona con el ESP32

- Este código creará números aleatorios desde el 0 al 90. Los enviará a ThingSpeak, por el puerto 80, esto es en websockets, este método requiere algo más de recursos que al enviarlo por el puerto 1883.

- Debemos poner la Write API Key

- Subimos el código. Según utilicemos el ESP8266 o el ESP32 cambiaremos la librería.


	  #include <ESP8266WiFi.h> // Para ESP8266
      #include <WiFi.h> // Para ESP32
		
ESP8266.ino

#include <ESP8266WiFi.h> // Para ESP8266
// #include <WiFi.h> // Para ESP32

const char* ssid = "Nombre_de_tu_red_WiFi";
const char* password = "Contraseña_WiFi"; 

const char* host = "api.thingspeak.com";
String apiKey = "ABCDEFÑÑÑÑÑÑÑ";

void setup() {
Serial.begin(115200);
    delay(10);

  // Conecta a la red wifi.
  Serial.println();
  Serial.print("Conectando con ");
  Serial.println(ssid);
 
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println(" Conectado con WiFi.");
}

void loop() {
    delay(16000); // Debes poner un tiempo de más de 15 segundos.
    int aleatorio = random(0,90);

    Serial.print("Conectando con ");
    Serial.println(host);

    // Clase cliente
    WiFiClient client;

    if (!client.connect(host, 80)) {
        Serial.println("Fallo en la conexión.");
        return;
    }

    String postStr = apiKey;
       postStr += "&field1=";
       postStr += String(aleatorio);
       postStr += "\r\n\r\n";
   
     client.print("POST /update HTTP/1.1\n");
     client.print("Host: api.thingspeak.com\n");
     client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\n");
     client.print("Content-Type: application/x-www-form-urlencoded\n");
     client.print("Content-Length: ");
     client.print(postStr.length());
     client.print("\n\n");
     client.print(postStr);
	  client.print("Connection: close\n");
     client.stop();
}

- Consultamos la página de nuestro canal de ThingSpeak y obtendremos estos gráficos.

- Para añadir el elemento circular pulsamos en "Add Widgets".

- De una subida a otra debe pasar un tiempo de más de 15 segundos.

___________________________________________
___________________________________________
___________________________________________
___________________________________________
2.- Otro código sin librería de ThingSpeak.

- Debemos espaciar las subidas más de 15 segundos.

- Subimos el código. Según utilicemos el ESP8266 o el ESP32 cambiaremos la librería.


	  #include <ESP8266WiFi.h> // Para ESP8266
      #include <WiFi.h> // Para ESP32
ESP8266_2.ino

// Juan Antonio Villalpando.
// kio4.com
// Subir sin librería.

#include <ESP8266WiFi.h> // Para ESP8266
// #include <WiFi.h> // Para ESP32

const char* ssid = "Nombre_de_tu_red_WiFi";
const char* password = "Contraseña_WiFi";  

const char* host = "api.thingspeak.com";

void setup(){
    Serial.begin(115200);
    delay(10);

  // Conecta a la red wifi.
  Serial.println();
  Serial.print("Conectando con ");
  Serial.println(ssid);
 
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println(" Conectado con WiFi.");
}

void loop(){
    delay(16000); // Debe ser más de 15 segundos.
    int aleatorio = random(0,90);

    Serial.print("Conectando con ");
    Serial.println(host);

    // Clase cliente
    WiFiClient client;

    if (!client.connect(host,80)) {
        Serial.println("Fallo en la conexión.");
        return;
    }

    // Linea de petición
    String url = "/update?api_key=ABCDEFGÑÑÑÑÑ&field1=";
    url += aleatorio;

    // Esto es lo que se enviará al servidor.
    client.print(String("POST") + url + " HTTP/1.1\r\n" +
                 "Host: " + host + "\r\n" +
                 "Connection: close\r\n\r\n");
 
    Serial.println();
    Serial.println("Conexión cerrada.");
}

___________________________________________
___________________________________________
___________________________________________
___________________________________________
3.- Con librería.

- También se puede hacer instalando una librería de ThingSpeak en el IDE del Arduino.

- Librería: thingspeak-arduino.zip

- La copiamos en la carpeta ../Arduino/libraries

-----------------------------------------------------------

- Otra forma de instalar la librería: Vamos a Programa / Incluir Librería / Gestionar Librerías

- Escribimos: thingspeak y la instalamos.

___________________________
- Código con librería.

- Debemos espaciar las subidas más de 15 segundos.

- Se enviará el valor al field1.

ESP8266_lib.ino

// Juan Antonio Villalpando
// kio4.com
// Sube un número aleatorio mediante librería.

#include <ThingSpeak.h>
#include <ESP8266WiFi.h> // Para ESP8266
// #include <WiFi.h> // Para ESP32

const char* ssid = "Nombre_de_tu_red_WiFi";
const char* password = "Contraseña_WiFi";  

WiFiClient  client;

unsigned long Channel_ID = 703644;
const char * WriteAPIKey = "ABCDEFÑÑÑÑÑÑÑ";

void setup() {
  Serial.begin(115200);

  WiFi.mode(WIFI_STA);   
  ThingSpeak.begin(client);

   // Conecta a la red wifi.
  Serial.println();
  Serial.print("Conectando con ");
  Serial.println(ssid);
 
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println(" Conectado con WiFi.");
}

void loop() {
  delay(15000); // Deber ser 15 segundos o más.
  int aleatorio = random(0,90);

  // Enviamos aleatorio al field1.
  int x = ThingSpeak.writeField(Channel_ID, 1, aleatorio, WriteAPIKey);
  if(x == 200){
    Serial.println("Valor subido correctamente: " + String(aleatorio));
  }
  else{
    Serial.println("Este valor no ha subido: " + String(aleatorio));
  }
}

___________________________________________
___________________________________________
___________________________________________
___________________________________________
4.- Obtener valores.

- Obtener el último valor subido:

https://api.thingspeak.com/channels/703644/fields/field1/last

- Obtener un archivo json con los valores:

https://api.thingspeak.com/channels/703644/feeds.json

- Obtener los 6 últimos resultados.

https://api.thingspeak.com/channels/703644/feeds.json?results=6

- Obtener un archivo json con los valores del field1:

https://api.thingspeak.com/channels/703644/fields/1.json

- También podemos bajarnos un archivo con los datos obtenidos pulsando en...

- Más información:

https://community.thingspeak.com/documentation%20.../api/

https://community.thinger.io/t/esp8266-analog-read/37

- Librería: https://github.com/mathworks/thingspeak-arduino/releases/tag/1.3.3

- En ThingSpeak. Subida cada 15 segundos.

https://blog.arduinoblocks.com/2019/02/publicar-y-almacenar-datos-en-internet.html

- Listado de recursos MQTT:

https://github.com/hobbyquaker/awesome-mqtt

_______________________________

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información