Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Una vez realizadas las pruebas en el servidor, se puede comprobar que los datos que son
enviados manualmente desde una interfaz web llegan hasta este y son almacenados en
una base de datos, sin embargo, lo que buscaremos será enviar los datos que recibe el
Gateway LoRa de el modulo ubicado en campo, esto se realizara mediante el protocolo
HTTPS pues es el protocolo usado en el servidor.
En la última prueba realizada es el modulo quien tenía la función de ser un servidor
local por lo que mediante un código en HTML mostraba la interfaz al ingresar el IP en
el navegador, sin embargo, con la nueva conexión el módulo Gateway de LoRa será un
cliente del servidor realizado, por lo que se retirará el código HTML y se configurará el
código para establecer la conexión mediante HTTP.
Imagen 02: Inicialización y envío de datos mediante http (Fuente: Elaboración propia)
Ya que se está usando la librería “HTTPClient” lo primero será crear un objeto (en este
caso lo llamaremos http), lo siguiente será llamar al método “begin” para poder acceder
al servidor, en este caso ya se ha declarado la estructura de la URL al principio (es decir
la url del servidor) por lo que la línea de código será http.begin(url).
En la línea de código “http.addHeader("Content-Type", "application/x-www-form-
urlencoded")” define el formato con el que va a recibir los datos el servidor mientras
que con el método “post” enviaremos los datos, sin embargo debemos declarar antes
una variable, en este caso “postData” que estará integrado por 3 variables: El
dispositivo, la temperatura y la humedad. En la cadena de texto enviada en “postData”
debemos asignar que variable de nuestro modulo estará relacionada con la variable del
servidor (por ejemplo, el dato alojado en la variable “temperature” será enviado a la
variable “temperatura” declarada en el servidor.
Una vez armada la trama almacenada en la cadena “postData” enviaremos los datos
mediante el comando http.POST(poastData) al servidor y este enviara una respuesta a
nuestro modulo la cual capturaremos mediante el comando http.getString el cual será
almacenado en la cadena “respuesta” por lo que dependiendo de la trama podremos
extraer los datos mediante el comando indexOf. Finalmente terminamos la
comunicación con http.end y agregamos un “delay” para poder enviar los datos al
servidor cada 5 segundos.
Anexos:
Código Cliente:
#include "heltec.h"
#include <OneWire.h>
#include <Wire.h>
#include <SPI.h>
#include <DallasTemperature.h>
#define BAND 915E6 //Seleccionamos la banda en la que trabajaremos, ejm:
868E6,915E6
OneWire ourWire(2);
DallasTemperature sensors(&ourWire); //Se declara una variable u objeto para nuestro
sensor
void setup()
{
Heltec.begin(true /*DisplayEnable Enable*/, true /*Heltec.LoRa Disable*/, true
/*Serial Enable*/, true /*PABOOST Enable*/, BAND /*long BAND*/);
sensors.begin(); //Se inicia el sensor
void loop()
{
sensors.requestTemperatures(); //Se envía el comando para leer la temperatura
float temp= sensors.getTempCByIndex(0); //Se obtiene la temperatura en ºC
int sensorval = analogRead(12); //Se lee el dato del puerto del sensor de humedad
humidity = map(sensorval, wet, dry, 100, 0); //Tomando como referencia el valor
medido en seco y humedo obtenemos el porcentaje de humedad
Heltec.display->clear();
Heltec.display->setTextAlignment(TEXT_ALIGN_LEFT);
Heltec.display->setFont(ArialMT_Plain_10);
Heltec.display->drawString(0, 0, "T(°C): ");
Heltec.display->drawString(35, 0, String(temp));
Heltec.display->drawString(0, 10, "H(%): ");
Heltec.display->drawString(35, 10, String(humidity));
Heltec.display->display();
Serial.print("Humedad= ");
Serial.print(humidity);
Serial.println("%");
Serial.print("Temperatura= ");
Serial.print(temp);
Serial.println("°C");
if (recipient == localAddress) {
Serial.println("Solicitud recibida desde Host."); //Se comprueba si la solicitud
enviada por el Host esta dirigida a este dispositivo
sendMessage(message);// Se envia la cadena a la funcion sendMessage
Serial.println("Enviando: " + message); //Muestra el mensaje a enviar
}
}
}
Código Servidor:
#include <WiFi.h>
#include <WiFiClient.h>
#include <heltec.h>
#include <HTTPClient.h>
void setup()
{
Heltec.begin(true /*DisplayEnable Enable*/, true /*Heltec.LoRa Enable*/, true
/*Serial Enable*/, true /*PABOOST Enable*/, BAND /*long BAND*/);
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.println("Connecting");
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to WiFi network with IP Address: ");
Serial.println(WiFi.localIP());
}
http.end();
delay (5000); //Este delay sirve para controlar los tiempos xd