En el artículo anterior, hablamos sobre la configuración de la hoja para conectar Arduino con una hoja de cálculo.
En este artículo, aprenderemos cómo enviar datos desde el tablero Arduino D1 utilizando comunicación HTTPS.
1. Instalar la biblioteca del tablero Arduino D1
Para utilizar el tablero Arduino D1, primero debemos instalar la biblioteca del tablero.
En Arduino IDE, vaya a Archivo - Preferencias.

Ingrese la siguiente URL adicional del gestor de tarjetas.
http://arduino.esp8266.com/stable/package_esp8266com_index.json

Haga clic en Aceptar una vez que haya terminado.

Busque el tablero Arduino D1 en el gestor de placas a la izquierda y proceda a instalarlo.
Con esto, la instalación de la biblioteca del tablero está completa.

Después de seleccionar el tablero, vaya a Archivo - Ejemplos para verificar que el ejemplo ESP8266 aparezca correctamente.
Configure la placa como se muestra a continuación.

Si el ejemplo aparece correctamente, la instalación fue exitosa.

2. Compilar el código de Arduino
Ahora es hora de cargar el código en el Arduino.
Primero, llame al módulo y realice la configuración básica para conectarse al WiFi.
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
// int fan_pin = 8;
const char* ssid = "nombre del WiFi"; // nombre del WiFi
const char* password = "contraseña del WiFi"; // contraseña del WiFi
//----------------------------------------Host & puerto https (https es 443)
const char* host = "script.google.com";
const int httpsPort = 443;
//----------------------------------------
WiFiClientSecure client; // Crear objeto WiFiClientSecure
// ID del script de la hoja de cálculo de Google
String GAS_ID = "ID del script de Google Spreadsheet";En setup, configure la velocidad de comunicación serial y conecte al WiFi.
La velocidad de comunicación serial predeterminada de ESP8266 es 115,200.
Intente conectarse usando WiFi.begin(ssid, password) y verifique el estado de la conexión con WiFi.status().
Utilice client.setInsecure para permitir la conexión HTTPS.
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password); // Conectar al router WiFi
Serial.println("");
//----------------------------------------Esperando conexión
Serial.print("Conectando");
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(1000);
};
//----------------------------------------
Serial.println("");
Serial.print("Conexión WiFi exitosa : ");
Serial.println(ssid);
Serial.print("Dirección IP: ");
Serial.println(WiFi.localIP());
Serial.println();
//----------------------------------------
client.setInsecure();
}Ahora es el momento de escribir el código principal.
Actualmente no hay nada conectado al Arduino, así que solo he enviado dos variables definidas a la hoja de Google.
void loop() {
delay(1000);
int v1 = 2000;
int v2 = 3000;
if (!client.connect(host, httpsPort)) {
Serial.println("Fallo de conexión al host");
return;
};
String value1 = String(v1);
String value2 = String(v2);
String url = "/macros/s/" + GAS_ID + "/exec?value1=" + value1 + "&value2=" + value2;
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"User-Agent: BuildFailureDetectorESP8266\r\n" +
"Connection: close\r\n\r\n");
Serial.println("Solicitud enviada");
};Si miramos la hoja, podemos ver que se envían los valores correctamente.

Ahora hagamos una función para enviar los valores.
Nombramos la función como sendData, y la función acepta dos parámetros int.
Si observa la función a continuación, la parte esencial es la misma que antes, pero se ha agregado la parte de manejo de la respuesta.
void sendData(int data1, int data2) {
Serial.println("==========");
Serial.print("Conectando al host");
Serial.println(host);
//----------------------------------------Conectar al host de Google
if (!client.connect(host, httpsPort)) {
Serial.println("Fallo de conexión al host");
return;
}
//----------------------------------------
//----------------------------------------Procesamiento de datos y envío de datos
String value1 = String(data1);
String value2 = String(data2);
String url = "/macros/s/" + GAS_ID + "/exec?value1=" + value1 + "&value2=" + value2;
Serial.print("URL de la solicitud: ");
Serial.println(url);
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"User-Agent: BuildFailureDetectorESP8266\r\n" +
"Connection: close\r\n\r\n");
Serial.println("Solicitud enviada");
//----------------------------------------
//----------------------------------------Verificar si los datos fueron enviados exitosamente
while (client.connected()) {
String line = client.readStringUntil('\n');
if (line == "\r") {
Serial.println("Encabezado recibido");
break;
}
}
String line = client.readStringUntil('\n');
if (line.startsWith("{\"state\":\"success\"")) {
Serial.println("Datos enviados exitosamente");
} else {
Serial.println("Error al enviar datos");
Serial.println(line);
}
Serial.print("Respuesta : ");
Serial.println(line);
Serial.println("Cerrando conexión");
Serial.println("==========");
Serial.println();
//----------------------------------------
}Ponga esto dentro del bucle y verifique si funciona correctamente.
void loop() {
delay(1000);
int v1 = 2000;
int v2 = 3000;
sendData(v1, v2);
}3. Código completo
El código completo es el siguiente. Espero que sea útil, en el próximo artículo mediremos la temperatura y la humedad utilizando un sensor de temperatura y humedad.
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
// int fan_pin = 8;
const char* ssid = "nombre del WiFi"; // nombre del WiFi
const char* password = "contraseña del WiFi"; // contraseña del WiFi
//----------------------------------------Host & puerto https (https es 443)
const char* host = "script.google.com";
const int httpsPort = 443;
//----------------------------------------
WiFiClientSecure client; // Crear objeto WiFiClientSecure
// ID del script de la hoja de cálculo de Google
String GAS_ID = "ID del script de Google Spreadsheet";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password); // Conectar al router WiFi
Serial.println("");
//----------------------------------------Esperando conexión
Serial.print("Conectando");
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(1000);
};
//----------------------------------------
Serial.println("");
Serial.print("Conexión WiFi exitosa : ");
Serial.println(ssid);
Serial.print("Dirección IP: ");
Serial.println(WiFi.localIP());
Serial.println();
//----------------------------------------
client.setInsecure();
};
void loop() {
delay(1000);
int v1 = 2000;
int v2 = 3000;
sendData(v1, v2);
};
// Enviar datos a Google Spreadsheet
void sendData(int data1, int data2) {
Serial.println("==========");
Serial.print("Conectando al host");
Serial.println(host);
//----------------------------------------Conectar al host de Google
if (!client.connect(host, httpsPort)) {
Serial.println("Fallo de conexión al host");
return;
};
//----------------------------------------
//----------------------------------------Procesamiento de datos y envío de datos
String value1 = String(data1);
String value2 = String(data2);
String url = "/macros/s/" + GAS_ID + "/exec?value1=" + value1 + "&value2=" + value2;
Serial.print("URL de la solicitud: ");
Serial.println(url);
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"User-Agent: BuildFailureDetectorESP8266\r\n" +
"Connection: close\r\n\r\n");
Serial.println("Solicitud enviada");
//----------------------------------------
//----------------------------------------Verificar si los datos fueron enviados exitosamente
while (client.connected()) {
String line = client.readStringUntil('\n');
if (line == "\r") {
Serial.println("Encabezado recibido");
break;
};
};
String line = client.readStringUntil('\n');
if (line.startsWith("{\"state\":\"success\"")) {
Serial.println("Datos enviados exitosamente");
} else {
Serial.println("Error al enviar datos");
Serial.println(line);
};
Serial.print("Respuesta : ");
Serial.println(line);
Serial.println("Cerrando conexión");
Serial.println("==========");
Serial.println();
//----------------------------------------
}

댓글을 불러오는 중...