Esta biblioteca WiFiWebServer_RTL8720 es una biblioteca de servidor web simple pero completa para placas Realtek RTL8720DN, RTL8722DM y RTL8722CSM .
Las funciones son similares y compatibles con las de las bibliotecas ESP32 WebServer
y ESP8266WebServer
para hacer la vida mucho más fácil al portar bocetos desde ESP8266/ESP32.
Esta biblioteca WiFiWebServer_RTL8720 también proporciona HTTP de alto nivel y cliente WebSocket con funciones similares y compatibles con las de la biblioteca ArduinoHttpClient.
La biblioteca brinda apoyo para:
Se basa y modifica de:
La clase WiFiWebServer
que se encuentra en el encabezado WiFiWebServer_RTL8720.h
es un servidor web simple que sabe cómo manejar solicitudes HTTP como GET y POST y solo puede admitir un cliente a la vez.
Esta biblioteca WiFiWebServer_RTL8720 actualmente admite las siguientes placas:
Arduino IDE 1.8.19+
para Arduino.Arduino AmebaD core 3.1.4+
para Realtek RTL8720DN, RTL8722DM y RTL8722CSM.Functional-Vlpp library v1.0.2+
para usar la función lambda del servidor. Para instalar. controlar La mejor y más sencilla forma es utilizar Arduino Library Manager
. Busque WiFiWebServer_RTL8720 y luego seleccione/instale la última versión. También puede utilizar este enlace para obtener instrucciones más detalladas.
WiFiWebServer_RTL8720-main.zip
.WiFiWebServer_RTL8720-main
WiFiWebServer_RTL8720-main
al directorio de bibliotecas de Arduino, como ~/Arduino/libraries/
.Para evitar errores de compilación relacionados con PROGMEM, debe copiar el archivo Realtek AmebaD core pgmspace.h en el directorio Realtek AmebaD (~/.arduino15/packages/realtek/hardware/AmebaD/3.1.4/cores/ambd/avr/pgmspace. h).
Suponiendo que la versión principal de Realtek AmebaD es 3.1.4. Este archivo debe copiarse en el directorio:
~/.arduino15/packages/realtek/hardware/AmebaD/3.1.4/cores/ambd/avr/pgmspace.h
Siempre que instale una nueva versión, recuerde copiar este archivo en el directorio de la nueva versión. Por ejemplo, la nueva versión es x.yy.zz. Este archivo debe copiarse en el directorio:
~/.arduino15/packages/realtek/hardware/AmebaD/x.yy.zz/cores/ambd/avr/pgmspace.h
WiFiWebServer server ( 80 );
Crea el objeto de clase WiFiWebServer.
Parámetros:
número de puerto de host: int port
(el valor predeterminado es el puerto HTTP estándar 80)
Iniciando el servidor
void begin ();
Manejo de solicitudes entrantes de clientes
void handleClient ();
Deshabilitar el servidor
void close ();
void stop ();
Ambos métodos funcionan igual
Manejadores de solicitudes de clientes
void on ();
void addHandler ();
void onNotFound ();
void onFileUpload ();
Ejemplo:
server.on( " / " , handlerFunction);
server.onNotFound(handlerFunction); // called when handler is not assigned
server.onFileUpload(handlerFunction); // handle file uploads
Envío de respuestas al cliente
void send ();
void send_P ();
Parameters:
code
: código de respuesta HTTP, puede ser 200
o 404
, etc.
content_type
: tipo de contenido HTTP, como "text/plain"
o "image/png"
, etc.
content
- cuerpo del contenido real
Obtener información sobre los argumentos de la solicitud
const String & arg ();
const String & argName ();
int args ();
bool hasArg ();
Function usage:
arg
: obtiene el valor del argumento de la solicitud, usa arg("plain")
para obtener el cuerpo de la POST
argName
: obtiene el nombre del argumento de la solicitud
args
- obtiene el recuento de argumentos
hasArg
- comprueba si existe un argumento
Obtener información sobre los encabezados de solicitud
const String & header ();
const String & headerName ();
const String & hostHeader ();
int headers ();
bool hasHeader ();
Function usage:
header
: obtiene el valor del encabezado de la solicitud
headerName
: obtiene el nombre del encabezado de la solicitud
hostHeader
: obtiene el encabezado del host de solicitud si está disponible; en caso contrario, una cadena vacía
headers
: obtener el recuento de encabezados
hasHeader
- comprueba si existe el encabezado
Autenticación
bool authenticate ();
void requestAuthentication ();
Function usage:
authenticate
: autenticación del servidor, devuelve verdadero si el cliente está autenticado; de lo contrario, es falso
requestAuthentication
: envía una respuesta de error de autenticación al cliente
Example Usage:
if (!server.authenticate(username, password))
{
server. requestAuthentication ();
}
const String& uri (); // get the current uri
HTTPMethod method (); // get the current method
WiFiClient client (); // get the current client
HTTPUpload& upload (); // get the current upload
void setContentLength (); // set content length
void sendHeader (); // send HTTP header
void sendContent (); // send content
void sendContent_P ();
void collectHeaders (); // set the request headers to collect
void serveStatic ();
size_t streamFile ();
WiFiWebServer_RTL8720/examples/AdvancedWebServer/AdvancedWebServer.ino
Líneas 40 a 245 en 74723f4
WiFiWebServer_RTL8720/examples/AdvancedWebServer/defines.h
Líneas 11 a 42 en 74723f4
Los siguientes son resultados del terminal de depuración y capturas de pantalla cuando se ejecuta el ejemplo AdvancedWebServer en Rtlduino RTL8720DN
Starting AdvancedServer on Rtlduino RTL8720DN with RTL8720DN
WiFiWebServer_RTL8720 v1 .1.2
interface 0 is initialized
interface 1 is initialized
Initializing WIFI ...
WIFI initialized
Current Firmware Version = 1.0.0
Attempting to connect to SSID: HueNet1
RTL8721D[Driver]: set ssid [HueNet1]
RTL8721D[Driver]: rtw_set_wpa_ie[ 1160 ]: AuthKeyMgmt = 0x2
RTL8721D[Driver]: rtw_restruct_sec_ie[ 4225 ]: no pmksa cached
RTL8721D[Driver]: start auth to 68 : 7f : 74 : 94 :f4:a5
RTL8721D[Driver]: auth alg = 2
RTL8721D[Driver]:
OnAuthClient:algthm = 0 , seq = 2 , status = 0 , sae_msg_len = 11
RTL8721D[Driver]: auth success, start assoc
RTL8721D[Driver]: association success (res= 1 )
RTL8721D[Driver]: ClientSendEAPOL[1624]: no use cache pmksa
RTL8721D[Driver]: ClientSendEAPOL[1624]: no use cache pmksa
RTL8721D[Driver]: set pairwise key to hw: alg:4(WEP40- 1 WEP104- 5 TKIP- 2 AES- 4 )
RTL8721D[Driver]: set group key to hw: alg:2(WEP40- 1 WEP104- 5 TKIP- 2 AES- 4 ) keyid:1
Interface 0 IP address : 192.168.2.117
[INFO] Listen socket successfully
[INFO] Socket conntect successfully
HTTP server started @ 192.168.2.117
[INFO] Accept connection successfully
A client connected to this server :
[PORT]: 36912
[IP]:192.168.2.30
[INFO] Accept connection successfully
A client connected to this server :
[PORT]: 36914
[IP]:192.168.2.30
[WIFI] String Len = 0, extend to 2048
[INFO] Accept connection successfully
Los siguientes son resultados del terminal de depuración y capturas de pantalla cuando se ejecuta WebClient de ejemplo en Rtlduino RTL8720DN
Starting WebClientRepeating on Rtlduino RTL8720DN with RTL8720DN
WiFiWebServer_RTL8720 v1 .1.2
interface 0 is initialized
interface 1 is initialized
Initializing WIFI ...
WIFI initialized
Current Firmware Version = 1.0.0
Attempting to connect to SSID: HueNet1
RTL8721D[Driver]: set ssid [HueNet1]
RTL8721D[Driver]: rtw_set_wpa_ie[ 1160 ]: AuthKeyMgmt = 0x2
RTL8721D[Driver]: rtw_restruct_sec_ie[ 4225 ]: no pmksa cached
RTL8721D[Driver]: start auth to 68 : 7f : 74 : 94 :f4:a5
RTL8721D[Driver]: auth alg = 2
RTL8721D[Driver]:
OnAuthClient:algthm = 0 , seq = 2 , status = 0 , sae_msg_len = 11
RTL8721D[Driver]: auth success, start assoc
RTL8721D[Driver]: association success (res= 1 )
RTL8721D[Driver]: ClientSendEAPOL[1624]: no use cache pmksa
RTL8721D[Driver]: ClientSendEAPOL[1624]: no use cache pmksa
RTL8721D[Driver]: set pairwise key to hw: alg:4(WEP40- 1 WEP104- 5 TKIP- 2 AES- 4 )
RTL8721D[Driver]: set group key to hw: alg:2(WEP40- 1 WEP104- 5 TKIP- 2 AES- 4 ) keyid:1
Interface 0 IP address : 192.168.2.117You're connected to the network, IP = 192.168.2.117
SSID: HueNet1, Signal strength (RSSI):-26 dBm
[INFO]server_drv.cpp: start_client
[INFO] Create socket successfully
[INFO] Connect to Server successfully!
Connecting...
HTTP/1.1 200 OK
Date: Thu, 28 Apr 2022 02:46:07 GMT
Content-Type: text/plain
Content-Length: 2263
Connection: close
x-amz-id-2: 0v2VZitmKPb1GvH/Of2rACgGVIyluvsMCTX1kbkYKmtOMZMLlHXAT1n7wdAcMiFQ6LPQ1Qy2tSg=
x-amz-request-id: 72CSXT4AMDTCDJYE
Last-Modified: Wed, 23 Feb 2022 14:56:42 GMT
ETag: "667cf48afcc12c38c8c1637947a04224"
CF-Cache-Status: DYNAMIC
Report-To: { " endpoints " :[{ " url " : " https://a.nel.cloudflare.com/report/v3?s=vdeduIIMRyhO44T972z7Z0qfco3T5svA5zYhyMJqQE5hTNGvTxTg%2B8S8e90uedVsSDo5oj73gg%2BxEoPfXW1%2FUCfu6XkFt6oLuf9zjLCo%2BSe58OLsZhr25mZ3MxPD%2ByY%3D " }], " group " : " cf-nel " , " max_age " : 604800 }
NEL: { " success_fraction " : 0 , " report_to " : " cf-nel " , " max_age " : 604800 }
Server: cloudflare
CF-RAY: 702c77389848b671-YWG
alt-svc: h3= " :443 " ; ma= 86400 , h3- 29 = " :443 " ; ma= 86400
`:;;;,` .:;;:.
.;;;;;;;;;;;` :;;;;;;;;;;: TM
`;;;;;;;;;;;;;;;` :;;;;;;;;;;;;;;;
:;;;;;;;;;;;;;;;;;; `;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;; .;;;;;;;;;;;;;;;;;;;;
;;;;;;;;:` `;;;;;;;;; ,;;;;;;;;.` .;;;;;;;;
.;;;;;;, :;;;;;;; .;;;;;;; ;;;;;;;
;;;;;; ;;;;;;; ;;;;;;, ;;;;;;.
,;;;;; ;;;;;;.;;;;;;` ;;;;;;
;;;;;. ;;;;;;;;;;;` ``` ;;;;;`
;;;;; ;;;;;;;;;, ;;; .;;;;;
`;;;;: `;;;;;;;; ;;; ;;;;;
,;;;;` `,,,,,,,, ;;;;;;; .,,;;;,,, ;;;;;
:;;;;` .;;;;;;;; ;;;;;, :;;;;;;;; ;;;;;
:;;;;` .;;;;;;;; `;;;;;; :;;;;;;;; ;;;;;
.;;;;. ;;;;;;;. ;;; ;;;;;
;;;;; ;;;;;;;;; ;;; ;;;;;
;;;;; .;;;;;;;;;; ;;; ;;;;;,
;;;;;; `;;;;;;;;;;;; ;;;;;
`;;;;;, .;;;;;; ;;;;;;; ;;;;;;
;;;;;;: :;;;;;;. ;;;;;;; ;;;;;;
;;;;;;;` .;;;;;;;, ;;;;;;;; ;;;;;;;:
;;;;;;;;;:,:;;;;;;;;;: ;;;;;;;;;;:,;;;;;;;;;;
`;;;;;;;;;;;;;;;;;;;. ;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;; :;;;;;;;;;;;;;;;;:
,;;;;;;;;;;;;;, ;;;;;;;;;;;;;;
.;;;;;;;;;` ,;;;;;;;;:
;;; ;;;;;` ;;;;: .;; ;; ,;;;;;, ;;. `;, ;;;;
;;; ;;:;;; ;;;;;; .;; ;; ,;;;;;: ;;; `;, ;;;:;;
,;:; ;; ;; ;; ;; .;; ;; ,;, ;;;,`;, ;; ;;
;; ;: ;; ;; ;; ;; .;; ;; ,;, ;;;;`;, ;; ;;.
;: ;; ;;;;;: ;; ;; .;; ;; ,;, ;;`;;;, ;; ;;`
,;;;;; ;;`;; ;; ;; .;; ;; ,;, ;; ;;;, ;; ;;
;; ,;, ;; .;; ;;;;;: ;;;;;: ,;;;;;: ;; ;;, ;;;;;;
;; ;; ;; ;;` ;;;;. `;;;: ,;;;;;, ;; ;;, ;;;;
Los siguientes son resultados del terminal de depuración y capturas de pantalla cuando se ejecuta el ejemplo ScanNetworks en Rtlduino RTL8720DN
Starting ScanNetworks on Rtlduino RTL8720DN with RTL8720DN
WiFiWebServer_RTL8720 v1 .1.2
Current Firmware Version = 1.0.0
Attempting to connect to SSID: HueNet_5G
You ' re connected to the network, IP = 192.168.2.152
MAC address: 69:4E:06:60:C9:94
Scanning available networks...
Number of available networks:19
0) HueNet Signal: -26 dBm Encryption: WPA2_PSK
1) HueNet_5G Signal: -32 dBm Encryption: WPA2_PSK
2) HueNetTek Signal: -32 dBm Encryption: WPA2_PSK
3) HueNetTek_5G Signal: -33 dBm Encryption: WPA2_PSK
4) HueNet1 Signal: -36 dBm Encryption: WPA2_PSK
5) HueNet2 Signal: -58 dBm Encryption: WPA2_PSK
6) HueNet2_5G Signal: -60 dBm Encryption: WPA2_PSK
7) guest_24 Signal: -64 dBm Encryption: WPA2_PSK
8) bacau Signal: -65 dBm Encryption: WPA2_PSK
9) guest_5 Signal: -77 dBm Encryption: WPA2_PSK
10) pitesti Signal: -77 dBm Encryption: WPA2_PSK
Los siguientes son resultados del terminal de depuración y capturas de pantalla cuando se ejecuta el ejemplo MQTTClient_Auth en Rtlduino RTL8720DN
Starting MQTTClient_Auth on Rtlduino RTL8720DN with RTL8720DN
WiFiWebServer_RTL8720 v1 .1.2
Current Firmware Version = 1.0.0
Attempting to connect to SSID: HueNet_5G
Connected! IP address: 192.168.2.152
Attempting MQTT connection to broker.emqx.io...connected
Message Send : MQTT_Pub => Hello from MQTTClient_Auth on Rtlduino RTL8720DN with RTL8720DN
Message arrived [MQTT_Pub] Hello from MQTTClient_Auth on Rtlduino RTL8720DN with RTL8720DN
Message Send : MQTT_Pub => Hello from MQTTClient_Auth on Rtlduino RTL8720DN with RTL8720DN
Message arrived [MQTT_Pub] Hello from MQTTClient_Auth on Rtlduino RTL8720DN with RTL8720DN
Los siguientes son resultados del terminal de depuración y capturas de pantalla cuando se ejecuta el ejemplo MQTT_ThingStream en Rtlduino RTL8720DN
Start MQTT_ThingStream on Rtlduino RTL8720DN with RTL8720DN
WiFiWebServer_RTL8720 v1 .1.2
Current Firmware Version = 1.0.0
Attempting to connect to SSID: HueNet_5G
Connected! IP address: 192.168.2.152
***************************************
STM32_Pub
***************************************
Attempting MQTT connection to broker.emqx.io
...connected
Published connection message successfully!
Subscribed to: STM32_Sub
MQTT Message Send : STM32_Pub => Hello from MQTT_ThingStream on Rtlduino RTL8720DN with RTL8720DN
MQTT Message receive [STM32_Pub] Hello from MQTT_ThingStream on Rtlduino RTL8720DN with RTL8720DN
MQTT Message Send : STM32_Pub => Hello from MQTT_ThingStream on Rtlduino RTL8720DN with RTL8720DN
MQTT Message receive [STM32_Pub] Hello from MQTT_ThingStream on Rtlduino RTL8720DN with RTL8720DN
MQTT Message Send : STM32_Pub => Hello from MQTT_ThingStream on Rtlduino RTL8720DN with RTL8720DN
MQTT Message receive [STM32_Pub] Hello from MQTT_ThingStream on Rtlduino RTL8720DN with RTL8720DN
MQTT Message Send : STM32_Pub => Hello from MQTT_ThingStream on Rtlduino RTL8720DN with RTL8720DN
MQTT Message receive [STM32_Pub] Hello from MQTT_ThingStream on Rtlduino RTL8720DN with RTL8720DN
Los siguientes son resultados del terminal de depuración y capturas de pantalla cuando se ejecuta el ejemplo WiFiUdpNTPClient en Rtlduino RTL8720DN
Starting WiFiUdpNTPClient on Rtlduino RTL8720DN with RTL8720DN
WiFiWebServer_RTL8720 v1 .1.2
Current Firmware Version = 1.0.0
Attempting to connect to SSID: HueNet_5G
Connected! IP address: 192.168.2.152
SSID: HueNet1, Signal strength (RSSI):-39 dBm
Starting connection to server...
Listening on port 2390
packet received
Seconds since Jan 1 1900 = 3835239949
Unix time = 1626251149
The UTC time is 8:25:49
packet received
Seconds since Jan 1 1900 = 3835239960
Unix time = 1626251160
The UTC time is 8:26:00
packet received
Seconds since Jan 1 1900 = 3835239971
Unix time = 1626251171
The UTC time is 8:26:11
La depuración está habilitada de forma predeterminada en Serial. Nivel de depuración de 0 a 4. Para deshabilitarlo, cambie WIFI_LOGLEVEL a 0
// Use this to output debug msgs to Serial
# define DEBUG_WIFI_WEBSERVER_PORT Serial
// Debug Level from 0 to 4
# define _WIFI_LOGLEVEL_ 1
Si obtiene errores de compilación, la mayoría de las veces, es posible que necesite instalar una versión más reciente del núcleo de la placa, aplicando los parches de bibliotecas, los parches de paquetes o la última versión de esta biblioteca.
Esta biblioteca WiFiWebServer_RTL8720 actualmente admite las siguientes placas:
La biblioteca brinda apoyo para:
Enviar problemas a: WiFiWebServer_RTL8720 problemas
arduino.cc
a arduino.tips
en ejemplosallman
. Remodelar la biblioteca ️️ Iván Grojotkov | ️ Adrián McEwen |
Si quieres contribuir a este proyecto:
Copyright (c) 2021- Khoi Hoang