[Springboot] [STM32] Springboot + STM32 + ESP8266 Use HTTP GET y POST para enviar solicitudes para cargar datos al proyecto Springboot y mostrar

Voy a Java, la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la la

 

       ¿Qué pasa con la carga de datos de STM32 + ESP8266? Creo que todo el mundo está familiarizado con STM32 + ESP8266, pero ¿cómo carga los datos de STM32 + ESP8266? Déjame llevarte a entenderlo.
  STM32 + ESP8266 carga datos. De hecho, usa el protocolo HTTP para enviar solicitudes GET o POST para acceder al servidor. ¿Te sorprenderá cómo STM32 + ESP8266 carga datos? Pero este es el hecho, el editor también está muy sorprendido.
  Se trata de la carga de datos de STM32 + ESP8266. ¿Qué piensas? ¡Dime en la sección de comentarios para discutirlo juntos!

✿✿ ヽ (° ▽ °) ¡ノ ✿ se acabó!

 

Oh, sigues ahí, se acabó, no queda nada atrás

¡De verdad! ¡Asintiendo con la cabeza! ¡¡De verdad !!

 


Cuando nos apresuramos a ir a la casa del editor, solo quedaba este artículo

 

 

Prefacio

Soy un programador JavaWeb Soy un programador JavaWeb Soy un programador JavaWeb 

Escribir STM32 es solo un pasatiempo, el negocio principal es desarrollar programas de fondo


Este artículo habla principalmente sobre las diferencias, ventajas y desventajas de usar GET y POST para enviar datos y usar Springboot como servidor para recibir y mostrar datos.

Espero ayudar a los desarrolladores y entusiastas con ideas similares a reducir el tiempo perdido para encontrar información.

Para obtener detalles sobre cómo escribir STM32 para controlar el controlador ESP8266 y el programa de envío, consulte el artículo que escribí antes.

[STM32] Stm32f103c8t6 + ESP8266-01s + DHT11 realiza la carga de datos de temperatura y humedad al servidor

 

Tabla de contenido

Pantalla de logros

Datos de temperatura recopilados a intervalos de 5 minutos

Datos de temperatura recopilados a intervalos de un minuto

Datos de humedad recopilados a intervalos de 5 minutos

Datos de humedad recopilados a intervalos de 1 minuto

Sobre Springboot

Método de envío de datos

         OBTENER método de acceso

GET se implementa en STM32

           Método de acceso POST + JSON

POST + JSON está implementado en STM32


 

Pantalla de logros

Datos de temperatura recopilados a intervalos de 5 minutos

Datos de temperatura recopilados a intervalos de un minuto

Datos de humedad recopilados a intervalos de 5 minutos

Datos de humedad recopilados a intervalos de 1 minuto

Todas las páginas anteriores se muestran en la parte frontal utilizando Echarts

 

Sobre Springboot

Este artículo menciona a Springboot con relativamente poco espacio, pero aún quiero decir que el servidor es muy importante. El Internet de las cosas es decir que los dispositivos pequeños cargan y descargan datos a través de Internet. La verdadera toma de decisiones es el servidor que envía instrucciones.

Algunas de las personas con las que me he puesto en contacto envían datos a servidores simulados, como los asistentes de depuración de red. Aunque pueden ver los datos recibidos, los datos no se almacenan y no se pueden utilizar.

Esta es la razón por la que construí el cliente, soy un desarrollador de JavaWeb y estoy muy familiarizado con el backend, que resulta ser una combinación de software y hardware.

ESP8266 se conecta al servidor Springboot para cargar datos a través de TCP

El servidor se desarrolla usando el proyecto Springboot, el front-end usa Echarts para mostrar la curva de datos y la base de datos usa mysql

Los datos se cargan cada 30 segundos y el servidor guardará 1 minuto de todo el día 1440 puntos de datos, 5 minutos de 288 puntos de datos, 15 minutos de 96 puntos de datos, 30 minutos de 48 puntos de datos, un total de cuatro granularidades

Se tuvo mucha consideración en el diseño de la base de datos. En primer lugar, se consideró más la cantidad de campos en la tabla, porque más de 100 campos en una tabla afectarían la eficiencia de la consulta, y debido a que soy una tabla horizontal, la más pequeña La granularidad del almacenamiento de datos es de 1 minuto. El valor es 1440 valores durante el día y hay 288 valores en cinco minutos. La conclusión final es reducir el uso de dominios para mejorar el rendimiento. Si los datos son demasiado largos , aumentar la cantidad de almacenamiento de datos, que puede cumplir tanto con el rendimiento de la base de datos como con todas las partículas. Por ejemplo, 1440 datos se dividirán en varios datos y se almacenarán en la base de datos. Por supuesto, la situación real es de un minuto almacenamiento. La lógica específica de cómo almacenar es un poco complicada. La lógica es muy fuerte y no es fácil de compartir. Puede seguir libremente el diseño de su propio programa

El diseño de fondo específico puede monitorear y alertar los datos de acuerdo con sus propias necesidades, es decir, puede jugar libremente.

 

 

Método de envío de datos

ESP8266 usa el protocolo HTTP para enviar solicitudes para acceder al servidor y cargar datos

No hablaré sobre el protocolo HTTP aquí. No sé mucho sobre el conocimiento conceptual, y es fácil encontrar ese conocimiento en Internet.

Aquí hablamos principalmente sobre cómo ESP3266 envía solicitudes GET y POST

 

OBTENER método de acceso

Hay muchas formas de OBTENER, aquí está el empalme de parámetros en la URL, como: IP: puerto / ruta / parámetro1 / parámetro 2

Por supuesto, también puede utilizar otro tipo como: IP: ¿Puerto / Ruta? Nombre de parámetro 1 = Parámetro 1 & Nombre de parámetro 2 = Parámetro 2

Todo es posible, se puede acceder al programa del servidor siempre que el método de acceso HTTP se empalme de acuerdo con el método utilizado.

 Escriba el método de acceso GET en el controlador de Springboot

Se recomienda utilizar cartero para familiarizarse con el acceso http

Seleccione el método GET y separe los parámetros con "/" después de utl

Envíe el código de estado 200 para indicar que puede acceder

Código de estado: 200 El servidor recibió una respuesta, 400 El parámetro era incorrecto y no se pudo acceder al 404

Impresión de fondo

Los datos se reciben en segundo plano, lo que indica que no hay ningún problema con el método de acceso.

Entonces, ¿cómo se usa el microcontrolador para acceder a esta dirección?

Esto usará la herramienta cartero

Haga clic en Código para ver el código de acceso http, estos son todos los parámetros detrás del navegador para acceder a una dirección

Solo necesitamos ingresar la dirección a visitar, y el resto de los parámetros los agrega el navegador por nosotros, aquí puede ver qué parámetros se necesitan detrás de la dirección de acceso

Además de las cookies, todo lo que queremos usar, más la dirección del Host

GET /STM32/stm32esp8266/weather/123/456 HTTP/1.1
Accept-Language: zh-CN,zh;q=0.9
Host:192.168.3.8

Convertir en plantilla es:

GET {项目路由地址} HTTP/1.1\r\n
Accept-Language: zh-CN,zh;q=0.9\r\n
Host:{服务器ip}\r\n
\r\n换行

Cabe señalar que el salto de línea es conveniente para la explicación. En ESP8266, es el carácter de transferencia "\ r \ n" para el salto de línea de una cadena completa, y se debe agregar un salto de línea al final.

 

Golpea la pizarra y dibuja los puntos clave

GET se implementa en STM32

Después de saber cómo se escribe la solicitud HTTP, es necesario ensamblar los parámetros en STM32 y enviarlo con ESP8266

La cadena enviada por STM32 a 8266 es la siguiente escritura: 8266 usa TCP para conectarse al servidor y enviar esta cadena para lograr un acceso GET.

"GET /STM32/stm32esp8266/weather/123/456 HTTP/1.1\r\nAccept-Language: zh-CN,zh;q=0.9\r\nHost:192.168.3.8\r\n\r\n"

 

Se acabó el método GET

 

 

El siguiente es el método de carga de datos que recomiendo en esta etapa.

Método de acceso POST + JSON

Porque el método GET requiere un empalme ilimitado de parámetros en la URL

Como resultado, después de agregar nuevos datos de sensor, no solo el microcontrolador tiene que volver a grabar el nuevo código,

Incluso el proyecto Springboot que recibe datos en el servidor debe agregar nuevos parámetros al método de recepción, que requiere mucho tiempo y trabajo de mantenimiento.

Por ejemplo, este es el caso. Cada vez que se agrega un parámetro, se debe modificar el código del servidor. No es fácil de mantener y solucionar.

POST + JSON es un método en el que los datos se ensamblan de acuerdo con los pares clave-valor JSON y luego se envían al servidor en su conjunto. El servidor atraviesa de acuerdo con el valor de la clave JSON y ejecuta el método correspondiente del parámetro.

De esta manera, incluso si agrega sensores para aumentar los parámetros de envío, solo necesita agregarlos en JSON y no es necesario modificar el código del servidor.

 Escriba el método de acceso POST en el controlador de Springboot

El servidor recibe un parámetro de par clave-valor en formato JSON y usa un bucle for para recorrer los parámetros y luego los pasa al método para procesar la lógica empresarial.

Conozco el método de recepción del servidor, ¿cómo envía el microcontrolador JSON? ( Esta pregunta es, obviamente, soy tan estúpido, ¿cómo puedo preguntar y responder yo mismo )

También simule primero un envío POST + JSON en la herramienta cartero

Utilice cartero para enviar JSON

Aquí están los parámetros para agregar y restar cadenas JSON a voluntad, sin necesidad de considerar uno a uno como el método GET

Debido a que los datos se escriben en JSON de manera uniforme, no es necesario recibir los parámetros de la MCU y el servidor uno a uno como el método GET.

También use la herramienta Cide del cartero para ver el código de acceso HTTP

Haz un pequeño cambio

POST /STM32/stm32esp8266/weathermirror? HTTP/1.1
Host: 192.168.8.108:8085
Content-Type: application/json;charset=utf-8
Content-Type: text/plain
Content-Length:38
cache-control: no-cache
{"temperature":"123","humidity":"456"}

Plantilla de modo POST + JSON

POST {项目路由地址}? HTTP/1.1\r\n
Host: {服务器ip}:{项目部署端口}\r\n
Content-Type: application/json;charset=utf-8\r\n
Content-Type: text/plain\r\n
Content-Length:{下面JSON长度包括大括号}\r\n
cache-control: no-cache\r\n
{JSON}

 

Golpea la pizarra y dibuja los puntos clave

POST + JSON está implementado en STM32

Igual que el método get, también se escribe como una cadena para que 8266 envíe

POST {项目路由地址}? HTTP/1.1\r\nHost: {服务器ip}:{项目部署端口}\r\nContent-Type: application/json;charset=utf-8\r\nContent-Type: text/plain\r\nContent-Length:{下面JSON长度包括大括号}\r\ncache-control: no-cache\r\n{JSON}

Hay algunos puntos a tener en cuenta

1. Los valores CLAVE y VALOR en la cadena JSON deben estar entre comillas dobles; de lo contrario, el envío fallará y se informará un error en segundo plano. 

如: {\ "10001 \": \ "% d \", \ "10002 \": \ "% d \", \ "10003 \": \ "% d \"}

2. El parámetro content-Length: XX debe agregarse cuando se usa JSON, lo que significa la longitud de la cadena JSON que se enviará, y esta longitud incluye las llaves de JSON

 

Hasta ahora, el método de usar STM32 + ESP8266 para enviar datos usando el protocolo HTTP ha finalizado.

 

Realmente termina con flores ✿✿ ヽ (° ▽ °) ノ ✿

 

 

Finalmente, comparta mi tiempo de desarrollo.

Muéstrame el código de STM32

 

Esta es la primera vez que el proyecto recibe con éxito una solicitud POST enviada por 8266

 

 

 

 

 

 

 

 

 

Supongo que te gusta

Origin blog.csdn.net/qq_41873771/article/details/114012598
Recomendado
Clasificación